<?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>19991</bug_id>
          
          <creation_ts>2008-07-10 16:15:54 -0700</creation_ts>
          <short_desc>WebKit needs cross-platform filter system</short_desc>
          <delta_ts>2009-06-13 13:13:49 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>SVGHitList</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>19835</dependson>
          <blocked>6022</blocked>
    
    <blocked>5526</blocked>
    
    <blocked>6033</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>dino</cc>
    
    <cc>emacemac7</cc>
    
    <cc>eric</cc>
    
    <cc>jeffschiller</cc>
    
    <cc>krit</cc>
    
    <cc>lars.sonchocky-helldorf</cc>
    
    <cc>mike</cc>
    
    <cc>oliver</cc>
    
    <cc>possessedpenguinbob</cc>
    
    <cc>webkit</cc>
    
    <cc>webmaster</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>85701</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-07-10 16:15:54 -0700</bug_when>
    <thetext>Master bug for implementing cross platform filter support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86312</commentid>
    <comment_count>1</comment_count>
      <attachid>22357</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-07-18 06:23:00 -0700</bug_when>
    <thetext>Created attachment 22357
Initial working patch

Inital working patch. I got a slightly hacked FEFlood working with this code. I removed the hack that would display it however because it broke everything else :-D. This isn&apos;t ready for prime-time but I thought I should put something up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87890</commentid>
    <comment_count>2</comment_count>
      <attachid>22660</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-08-05 14:48:41 -0700</bug_when>
    <thetext>Created attachment 22660
Patch

Here is some work that I have done. Any suggestions/comments would be much appreciated. 

Subregions and filter bounding boxes work more nicely now. Many of the changes are really simple change propagations that were needed to allow FEFlood and FEImage to work without specific hacks for those two. Once I get this off my tree I&apos;ll go back and do a quick clean up patch that removes some now obsolete code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87895</commentid>
    <comment_count>3</comment_count>
      <attachid>22660</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-08-05 15:25:50 -0700</bug_when>
    <thetext>Comment on attachment 22660
Patch

FilterBuilder::getEffectById
  id == 0 should be id.isEmpty()
  Should m_lastEffect be guaranteed to be non-null?  (eg. shouldn&apos;t it initially be a wrapper around with the original input?)

I&apos;m also not sure about the changes to WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp -- i would appreciate it if you could get eric to have a look.

Other than those issues it looks good -- i&apos;ll have to spend real time reviewing to to give a more thorough review though, but i&apos;ll leave that until after these above issues are dealt with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88696</commentid>
    <comment_count>4</comment_count>
      <attachid>22846</attachid>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-08-17 21:51:02 -0700</bug_when>
    <thetext>Created attachment 22846
Updated Patch

Here is an updated patch that should take care of all issues pointed out in the previous comment. This should fix all bounding box related issues as LayoutTests/svg/batik/filters/filterRegions.svg now renders correctly :-). So at least obvious bbox errors shouldn&apos;t be a problem.

Any comments would be appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88704</commentid>
    <comment_count>5</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-08-18 03:27:11 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=22846) [edit]
&gt; Updated Patch
&gt; 
&gt; Here is an updated patch that should take care of all issues pointed out in the
&gt; previous comment. This should fix all bounding box related issues as
&gt; LayoutTests/svg/batik/filters/filterRegions.svg now renders correctly :-). So
&gt; at least obvious bbox errors shouldn&apos;t be a problem.
&gt; 
&gt; Any comments would be appreciated.

Excellent, that you took care of filterRegions.svg, it really tests all subregion cases possibe.
Didn&apos;t actually review the patch, just waned to confess that I&apos;m happy about your progresss :-)

Greetings,
Niko
&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88796</commentid>
    <comment_count>6</comment_count>
      <attachid>22846</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2008-08-18 23:56:07 -0700</bug_when>
    <thetext>Comment on attachment 22846
Updated Patch

getFilterById is returning a bogus pointer, as ownership is not taken, so the passrefptr will delete the object.

Various implementations of apply(ImageBuffer*) name the parameter, but don&apos;t use it, which will result in a compile error on windows at least.

I want eric to look at the SVGResourceFilter stuff as it doesn&apos;t look correct to me as it currently stands, but i don&apos;t know what should be happening so can&apos;t make any suggestion as to what you should do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88797</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-08-19 00:44:24 -0700</bug_when>
    <thetext>OK, the first two issues Oliver had were quickly resolved but there is still the third.

Eric could you take a look at my bounding box related changes and give me feed back. The functions in question are in SVGResourceFilter (filterBBoxForItemBBox) and FilterEffect (primitiveBBoxForFilterBBox).

Thanks much!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89965</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Mathews">possessedpenguinbob</who>
    <bug_when>2008-09-02 19:30:04 -0700</bug_when>
    <thetext>Sorry for the disappearance. I had to move to a new apartment and get through my first week of classes for the fall semester but I am now back.

I had a long chat with Eric about the bounding box code two weeks ago now. The main thing that came out of it was that Eric wanted to move the calculation logic out of the separate functions that exist and place it where the raw attribute values are brought in, at least for now. The two functions in question are SVGResourceFilter::filterBBoxForItemBBox, which takes the element bbox and returns the filter bbox/rect for that element, and FilterEffect::primitiveBBoxForFilterBBox which takes a bunch of args and sets the subregion bbox/rect for that particular effect.

I have started to move the logic within these two functions out and placing it closer where the raw attribute values are coming in. I moved FilterEffect::primitiveBBoxForFilterBBox into SVGFilterPrimitiveStandardAttributes::setStandardAttributes and am now trying to get the necessary information (read: the element bbox) into SVGResourceFilter so I can calculate the filter rect there.

Apologies if that didn&apos;t make much sense, I&apos;m exhausted atm, but I&apos;d be happy to entertain questions or comments. :-D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120984</commentid>
    <comment_count>9</comment_count>
      <attachid>30261</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-12 23:22:49 -0700</bug_when>
    <thetext>Created attachment 30261
prepare SVG FilterEffect

FilterEffects need an own ImageBuffer to make it possible to reuse the result. SVGResourceFilter calculates the filterRect and the primitiveRect and draws the referenced object into a ImageBuffer. We need this ImageBuffer to get the SourceGraphic and SourceAlpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120987</commentid>
    <comment_count>10</comment_count>
      <attachid>30261</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-12 23:37:09 -0700</bug_when>
    <thetext>Comment on attachment 30261
prepare SVG FilterEffect

There seems to be no need to copy/paste so much code.  All these effects share a base class.

I would think the first thing you&apos;d want to do would be to get SVG_FILTERS turned back on in mainline (by ripping otu the broken code, or spliting the SVG_FILTERS ifdef into pieces).  But maybe we need more cleanup before we can do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121004</commentid>
    <comment_count>11</comment_count>
      <attachid>30267</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-13 02:06:15 -0700</bug_when>
    <thetext>Created attachment 30267
mainline SVG patch

This is a mainline patch to get filters basically working and takes the ideas of &quot;Updated patch&quot;. I uploaded this patch to show the main concept and to discuss further steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121696</commentid>
    <comment_count>12</comment_count>
      <attachid>30424</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-17 11:43:11 -0700</bug_when>
    <thetext>Created attachment 30424
initial SVG Filter patch

This patch brings up the filter system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122082</commentid>
    <comment_count>13</comment_count>
      <attachid>30424</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-19 23:33:32 -0700</bug_when>
    <thetext>Comment on attachment 30424
initial SVG Filter patch

&gt; +
&gt; +    class StringImpl;
&gt; +
&gt; +    class FilterBuilder : RefCounted&lt;FilterBuilder&gt; {
should be public RefCounted&lt;FilterBuilder&gt;

&gt;          HashMap&lt;StringImpl*, RefPtr&lt;FilterEffect&gt; &gt; m_namedEffects;

I *think* (though maciej would know for sure) that this should in reality be RefPtr&lt;StringImpl&gt; (i realise this isn&apos;t new code but i think it&apos;s wrong)

&gt;  void SVGFEImageElement::notifyFinished(CachedResource* finishedObj)
&gt;  {
&gt; -    if (finishedObj == m_cachedImage &amp;&amp; m_filterEffect)
&gt; -        m_filterEffect-&gt;setCachedImage(m_cachedImage.get());
&gt; +    //if (finishedObj == m_cachedImage)
&gt; +    //    m_filterEffect-&gt;setCachedImage(m_cachedImage.get());
&gt;  }

Commented code == bad

I&apos;d like tests to cover heavily nested filters as well (heavy nesting == &gt;1000 nestings or something)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122198</commentid>
    <comment_count>14</comment_count>
      <attachid>30513</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-20 13:02:31 -0700</bug_when>
    <thetext>Created attachment 30513
initial SVG Filter patch

updated version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122669</commentid>
    <comment_count>15</comment_count>
      <attachid>30513</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 08:09:18 -0700</bug_when>
    <thetext>Comment on attachment 30513
initial SVG Filter patch

 48 FloatRect SVGResourceFilter::filterBBoxForItemBBox(const FloatRect&amp; itemBBox) const

really takes an objectBoundingBox in spec terms.  We really should make it impossible to pass it something that isn&apos;t an objectBoundingBox, but that&apos;s for a later patch.

Seems:
m_filterBuilder-&gt;lastFilter()
belongs in a local here:
128         if (m_filterBuilder-&gt;lastFilter()-&gt;resultImage())
 129             context-&gt;drawImage(m_filterBuilder-&gt;lastFilter()-&gt;resultImage()-&gt;image(), 
 130                             m_filterBuilder-&gt;lastFilter()-&gt;subRegion());

Don&apos;t we already have a conversion function for this?
     Color color = Color(floodColor().red() / 255.0f,
 83                         floodColor().green() / 255.0f,
 84                         floodColor().blue() / 255.0f,
 85                         floodColor().alpha() / 255.0 * floodOpacity());

If you transform the rect, you don&apos;t need to save/restore (which is expensive):
 80     filterContext-&gt;save();
 81     filterContext-&gt;translate(-subRegion().x(), -subRegion().y());
 82     Color color = Color(floodColor().red() / 255.0f,
 83                         floodColor().green() / 255.0f,
 84                         floodColor().blue() / 255.0f,
 85                         floodColor().alpha() / 255.0 * floodOpacity());
 86     filterContext-&gt;fillRect(subRegion(), color);
 87     filterContext-&gt;restore();

This would have been easier to review if the:
 virtual void apply();
60          virtual void dump();
 60         void apply(SVGResourceFilter*);
 61         void dump();
changes could have been done in a first-pass.

In general this looks great!  So glad you&apos;re taking this up.  I think we should see this one more round before landing though.  r- for the nits above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122716</commentid>
    <comment_count>16</comment_count>
      <attachid>30588</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-22 12:19:21 -0700</bug_when>
    <thetext>Created attachment 30588
repare filter primitives for new svg filter system

This is a part of the previous patch and prepares filter primitves to the new filter system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122758</commentid>
    <comment_count>17</comment_count>
      <attachid>30588</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-22 18:31:58 -0700</bug_when>
    <thetext>Comment on attachment 30588
repare filter primitives for new svg filter system

You should mention that filters are turned off, thus no additional tests when landing.  Otherwise this looks fantastic!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122812</commentid>
    <comment_count>18</comment_count>
      <attachid>30608</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-23 00:46:56 -0700</bug_when>
    <thetext>Created attachment 30608
add new source input and filterBuilder

Adds missing files of the last patch. Mainly the source input and the FilterBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122818</commentid>
    <comment_count>19</comment_count>
      <attachid>30608</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-23 00:58:10 -0700</bug_when>
    <thetext>Comment on attachment 30608
add new source input and filterBuilder

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122819</commentid>
    <comment_count>20</comment_count>
      <attachid>30608</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-05-23 01:01:03 -0700</bug_when>
    <thetext>Comment on attachment 30608
add new source input and filterBuilder

There are tabs in this file:
 42             m_lastEffect = effect.get();
 43 
 44             if(!id.isEmpty())
 45                 m_namedEffects.set(id.impl(), effect.get()); 


This seems wrong, memory management wise:
 45                 m_namedEffects.set(id.impl(), effect.get()); 


You shouldn&apos;t be calling effect.get() the second time I dont&apos; think.  Or you shouldn&apos;t be passing it in as a PassRefPtr.  You&apos;re never taking ownership?  or at least the code doesn&apos;t look like it.

Otherwise looks fine.  r- for the memory issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122830</commentid>
    <comment_count>21</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-23 02:59:01 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=30608) [review]
&gt; add new source input and filterBuilder

Nice work Dirk! Looking forward to the next patches :-) A pity that I was too slow to review it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122858</commentid>
    <comment_count>22</comment_count>
      <attachid>30620</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-23 08:28:50 -0700</bug_when>
    <thetext>Created attachment 30620
add new source input and filterBuilder

updated version of the last patch. I hope this is the right use of RefPtr. I tested it and didn&apos;t see any problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122863</commentid>
    <comment_count>23</comment_count>
      <attachid>30620</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-23 09:17:33 -0700</bug_when>
    <thetext>Comment on attachment 30620
add new source input and filterBuilder

Hi Dirk,

nice job, I have some comments though:

&gt; Index: WebCore/platform/graphics/filters/SourceAlpha.cpp
...
&gt; +PassRefPtr&lt;SourceAlpha&gt; SourceAlpha::create()
&gt; +{
&gt; +    return adoptRef(new SourceAlpha());
&gt; +}
I&apos;d prefer &quot;new SourceAlpha&quot; (without braces) here, not in the style guide but I think it&apos;s general practice.

&gt; Index: WebCore/platform/graphics/filters/SourceGraphic.cpp
...
&gt; +PassRefPtr&lt;SourceGraphic&gt; SourceGraphic::create()
&gt; +{
&gt; +    return adoptRef(new SourceGraphic());
&gt; +}
Ditto.

&gt; Index: WebCore/svg/FilterBuilder.cpp
...
&gt; + *  Copyright (C) Dirk Schulze &lt;krit@webkit.org&gt;
Year is missing?

&gt; +FilterBuilder::FilterBuilder() {
&gt; +    m_sourceAlpha = SourceAlpha::create();
&gt; +    m_sourceGraphic = SourceGraphic::create();
&gt; +}
Hm, I wonder wheter lazy creation of these objects would make sense? I think this could save some time.

&gt; +void FilterBuilder::add(const String&amp; id, RefPtr&lt;FilterEffect&gt; effect)
&gt; +{
&gt; +            m_lastEffect = effect.get();
&gt; +
&gt; +            if(!id.isEmpty())
&gt; +                m_namedEffects.set(id.impl(), m_lastEffect); 
&gt; +}
Wrong indention and if(!id) -&gt; if (!id).

&gt; +FilterEffect* FilterBuilder::getEffectById(const String&amp; id) const
&gt; +{   
&gt; +    if(id.isEmpty() &amp;&amp; m_lastEffect)
&gt; +        return m_lastEffect.get();
&gt; +
&gt; +    // If id isn&apos;t declared and lastEffect is still null then FilterBuilder will return
&gt; +    // a SourceGraphic object as per the Spec.
&gt; +    if(id.isEmpty() &amp;&amp; !m_lastEffect)
&gt; +        return m_sourceGraphic.get();
&gt; +
&gt; +    if (id == String(&quot;SourceGraphic&quot;))
&gt; +        return m_sourceGraphic.get();
&gt; +    if (id == String(&quot;SourceAlpha&quot;))
&gt; +        return m_sourceAlpha.get();
&gt; +    // FIXME: needs to be implemented
&gt; +    if (id == String(&quot;BackgroundGraphic&quot;))
&gt; +        return m_sourceGraphic.get();
&gt; +    if (id == String(&quot;BackgroundAlpha&quot;))
&gt; +        return m_sourceGraphic.get();
&gt; +    if (id == String(&quot;FillPaint&quot;))
&gt; +        return m_sourceGraphic.get();
&gt; +    if (id == String(&quot;StrokePaint&quot;))
&gt; +        return m_sourceGraphic.get();
&gt; +
&gt; +    return m_namedEffects.get(id.impl()).get();
&gt; +}
Indention is wrong here, if( -&gt; if ( has to be changed.
That function doesn&apos;t look particulary fast to me. I&apos;d suggest to delegate the work:

I&apos;d suggest to add a new function to all FilterEffects: (example for SourceGraphic)
&lt;code&gt;
static const AtomicString&amp; SourceGraphic::filterName()
{
    DEFINE_STATIC_LOCAL(const AtomicString, s_filterName, (&quot;SourceGraphic&quot;));
    return s_filterName;
}
&lt;/code&gt;

Then the getEffectById function could be written much nicer:

&lt;code&gt;
typedef HashMap&lt;AtomicStringImpl*, FilterEffect*&gt; FilterEffectMap;

FilterEffect* FilterBuilder::getEffectById(const AtomicString&amp; id)
{
    DEFINE_STATIC_LOCAL(FilterEffectMap, s_filterEffects, ());

    if (s_filterEffects.isEmpty()) {
        s_filterEffects.set(SourceGraphic::filterName(), m_sourceGraphic.get());
        s_filterEffects.set(SourceAlpha::filterName(), m_sourceAlpha.get());
        ...
    }

    // If id isn&apos;t declared...
    if (id.isEmpty())
        return m_lastEffect ? m_lastEffect.get() : m_sourceGraphic.get();

    return s_filterEffects.get(id.impl());
}
&lt;/code&gt;

If we&apos;d go for lazy creation of the FilterEffect objects (m_sourceGraphic, etc..) the HashMap could point to functions creating the FilterEffect, ie:
s_filterEffects.set(SourceAlpha::filterName(), &amp;FilterBuilder::createSourceAlpha())

FilterEffect* FilterBuilder::createSourceAlpha()
{
    if (m_sourceAlpha)
        return m_sourceAlpha.get();
    m_sourceAlpha = SourceAlpha::create()
    return m_sourceAlpha.get();
}
...

What do you think of this approach?

r- because of the ineffiency of the getEffectById function. It can easily be fixed though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122870</commentid>
    <comment_count>24</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-23 10:32:13 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 30620 [review])
Hi Nikolas,

Thanks for your review. I&apos;m realy happy to hear of you again :-)

About your comments. It sounds to me like breaking a fly on the wheel.  Do you realy think we should add this to every effect? It makes the code a bit harder to read. I agree with you that we shouldn&apos;t call if (id ==...), if possible but IIRC the code style of webkit doesn&apos;t allow &quot;else if&quot;.
My goal was to make the new filter system not only workable but also more understandable for someone who is new to webkit. And I think I should admit that your style makes the code a bit more mystery to me ;-)

I&apos;ll change the code if you think it&apos;s the best way. But the drawing/rendering is still much slower than the if&apos;s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122872</commentid>
    <comment_count>25</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-23 10:54:38 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 30620 [review] [review])
&gt; Hi Nikolas,
&gt; 
&gt; Thanks for your review. I&apos;m realy happy to hear of you again :-)
You&apos;re welcome :-)

&gt; 
&gt; About your comments. It sounds to me like breaking a fly on the wheel.  Do you
&gt; realy think we should add this to every effect? It makes the code a bit harder
&gt; to read. I agree with you that we shouldn&apos;t call if (id ==...), if possible but
&gt; IIRC the code style of webkit doesn&apos;t allow &quot;else if&quot;.
The point is not the if / else if coding style. The point is speed, the hash map lookup is faster then these constructions!
If you want to avoid adding filterName() everywhere, you could at least define all the names in FilterBuilder&apos;s getEffectById() function.

&gt; My goal was to make the new filter system not only workable but also more
&gt; understandable for someone who is new to webkit. And I think I should admit
&gt; that your style makes the code a bit more mystery to me ;-)
Heh, it&apos;s not my style it&apos;s WebKit-fast-string-handling-style :-)

&gt; 
&gt; I&apos;ll change the code if you think it&apos;s the best way. But the drawing/rendering
&gt; is still much slower than the if&apos;s.
Of course, but getEffectById() may be called repeatedly. You don&apos;t want hundreds of useless if comparisions every time, but a central hash map lookup :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122881</commentid>
    <comment_count>26</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-23 13:05:01 -0700</bug_when>
    <thetext>&gt; &gt; I&apos;ll change the code if you think it&apos;s the best way. But the drawing/rendering
&gt; &gt; is still much slower than the if&apos;s.
&gt; Of course, but getEffectById() may be called repeatedly. You don&apos;t want
&gt; hundreds of useless if comparisions every time, but a central hash map lookup
&gt; :-)
&gt; 

I disagree, handling SourceAlpha, etc effectively requires a new instance of the filter at each node in the tree, also getEffectById() should not be being called in any hot code as the filter graph should be construted once (on first use) and only updated in future if the filter graph is actually changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122972</commentid>
    <comment_count>27</comment_count>
      <attachid>30632</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-24 12:30:51 -0700</bug_when>
    <thetext>Created attachment 30632
add new source input and filterBuilder

I talked with Nikolas on IRC. I hope I address all of the problems Eric and Nikolas mentioned.
FilterBuilder has two hashmaps. One for the standard inputs and one for the custom filter effects with a name. This avoids creating new strings on every call of getFilterEffect().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122980</commentid>
    <comment_count>28</comment_count>
      <attachid>30632</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-24 14:56:53 -0700</bug_when>
    <thetext>Comment on attachment 30632
add new source input and filterBuilder

Clearing review flag, as Dirk is going to upload a revised version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122982</commentid>
    <comment_count>29</comment_count>
      <attachid>30636</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-24 15:38:32 -0700</bug_when>
    <thetext>Created attachment 30636
add new source input and filterBuilder

revised version :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122983</commentid>
    <comment_count>30</comment_count>
      <attachid>30636</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-24 15:40:06 -0700</bug_when>
    <thetext>Comment on attachment 30636
add new source input and filterBuilder

Looks great. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122989</commentid>
    <comment_count>31</comment_count>
      <attachid>30636</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-24 15:53:48 -0700</bug_when>
    <thetext>Comment on attachment 30636
add new source input and filterBuilder

landed part2 in r44118. clearing r+ flag of nikolas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122991</commentid>
    <comment_count>32</comment_count>
      <attachid>30636</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-05-24 16:09:10 -0700</bug_when>
    <thetext>Comment on attachment 30636
add new source input and filterBuilder

&gt; +    class SourceAlpha : public FilterEffect {
&gt; +    public:        
&gt; +        static PassRefPtr&lt;SourceAlpha&gt; create();
&gt; +
&gt; +        static const AtomicString&amp; effectName();
&gt; +
&gt; +        void apply(SVGResourceFilter*);

It is a layering violation for a platform/ level class to know about SVG.  Can we fix this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122992</commentid>
    <comment_count>33</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-24 16:22:54 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (From update of attachment 30636 [review])
&gt; &gt; +    class SourceAlpha : public FilterEffect {
&gt; &gt; +    public:        
&gt; &gt; +        static PassRefPtr&lt;SourceAlpha&gt; create();
&gt; &gt; +
&gt; &gt; +        static const AtomicString&amp; effectName();
&gt; &gt; +
&gt; &gt; +        void apply(SVGResourceFilter*);
&gt; 
&gt; It is a layering violation for a platform/ level class to know about SVG.  Can
&gt; we fix this? 
&gt; 

Oops neither me nor Eric noticed :-)
Will talk to Dirk about a fix tomorrow. This doesn&apos;t need a revert IMHO, as SVG Filters are turned off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122993</commentid>
    <comment_count>34</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-24 16:26:09 -0700</bug_when>
    <thetext>Now that you talk about it, I&apos;m wondering why we&apos;re adding stuff to platform/graphics/filters anyway. As this is cross-platform, we could move all of this into svg/graphics/filters. This would also avoid the layering violation Sam describes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123030</commentid>
    <comment_count>35</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-25 05:19:34 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Now that you talk about it, I&apos;m wondering why we&apos;re adding stuff to
&gt; platform/graphics/filters anyway. As this is cross-platform, we could move all
&gt; of this into svg/graphics/filters. This would also avoid the layering violation
&gt; Sam describes.
&gt; 

I talked to olliej some time ago and we might use filters in other parts of webkit as well. My plan was to make filters for SVG worable first and work on a svg independent filter system later as a second goal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123058</commentid>
    <comment_count>36</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-25 10:59:04 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; Now that you talk about it, I&apos;m wondering why we&apos;re adding stuff to
&gt; &gt; platform/graphics/filters anyway. As this is cross-platform, we could move all
&gt; &gt; of this into svg/graphics/filters. This would also avoid the layering violation
&gt; &gt; Sam describes.
&gt; &gt; 
&gt; 
&gt; I talked to olliej some time ago and we might use filters in other parts of
&gt; webkit as well. My plan was to make filters for SVG worable first and work on a
&gt; svg independent filter system later as a second goal.

Sounds reasonable. That doesn&apos;t fix the layering violation though. If that&apos;s your intention to make SVG independant filters, then we need a different class holding the FilterBuilder than SVGResourceFilter. SVGResourceFilter could reference this new class living in platform/graphics/filter.

Whatever we do, that layering violation has to be resolved soon. If you&apos;d like, we can discuss on IRC tonite.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123066</commentid>
    <comment_count>37</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-25 12:03:05 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (In reply to comment #35)
&gt; &gt; (In reply to comment #34)
&gt; &gt; &gt; Now that you talk about it, I&apos;m wondering why we&apos;re adding stuff to
&gt; &gt; &gt; platform/graphics/filters anyway. As this is cross-platform, we could move all
&gt; &gt; &gt; of this into svg/graphics/filters. This would also avoid the layering violation
&gt; &gt; &gt; Sam describes.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I talked to olliej some time ago and we might use filters in other parts of
&gt; &gt; webkit as well. My plan was to make filters for SVG worable first and work on a
&gt; &gt; svg independent filter system later as a second goal.
&gt; 
&gt; Sounds reasonable. That doesn&apos;t fix the layering violation though. If that&apos;s
&gt; your intention to make SVG independant filters, then we need a different class
&gt; holding the FilterBuilder than SVGResourceFilter. SVGResourceFilter could
&gt; reference this new class living in platform/graphics/filter.
&gt; 
&gt; Whatever we do, that layering violation has to be resolved soon. If you&apos;d like,
&gt; we can discuss on IRC tonite.
&gt; 
FilterBuilder can still be hold by SVGResourceFilter. It&apos;s just FilterEffect::apply(..) that needs another input (another reference). I think thats why Alex inclueded Filter.cpp and Filter.h. SVGResourceFilter can create a new Filter object, give all neccessary values to it and FilterEffect::apply() calls Filter instead of SVGResourceFilter. And, if you want, Filter can also hold the FilterBuilder as well. We just need to move Filter.* form svg/ to platform/graphics/filter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123308</commentid>
    <comment_count>38</comment_count>
      <attachid>30588</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-05-27 11:24:44 -0700</bug_when>
    <thetext>Comment on attachment 30588
repare filter primitives for new svg filter system

Clearing r+ to remove from the commit queue.

It appears that this was committed as http://trac.webkit.org/changeset/44083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123487</commentid>
    <comment_count>39</comment_count>
      <attachid>30757</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-28 15:30:17 -0700</bug_when>
    <thetext>Created attachment 30757
svg independen filters

Make filters in platform/graphics/filters independent from svg. This enables webkit to use filters some where else then SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123489</commentid>
    <comment_count>40</comment_count>
      <attachid>30757</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-28 15:35:16 -0700</bug_when>
    <thetext>Comment on attachment 30757
svg independen filters

r=me. As discussed on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123490</commentid>
    <comment_count>41</comment_count>
      <attachid>30513</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-28 15:36:43 -0700</bug_when>
    <thetext>Comment on attachment 30513
initial SVG Filter patch

clear flag. We do the change in smaller steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123491</commentid>
    <comment_count>42</comment_count>
      <attachid>30757</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-28 15:37:30 -0700</bug_when>
    <thetext>Comment on attachment 30757
svg independen filters

clear flag. landed in r44253.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123556</commentid>
    <comment_count>43</comment_count>
      <attachid>30777</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-29 09:37:56 -0700</bug_when>
    <thetext>Created attachment 30777
feFloos need input effect

This patch fixes feFlood. feFlood need an input effect. It helps creating test cases for subRegions, without implementing more filter effects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123723</commentid>
    <comment_count>44</comment_count>
      <attachid>30811</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 00:13:59 -0700</bug_when>
    <thetext>Created attachment 30811
independent filter system

make the filter system independent of SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123735</commentid>
    <comment_count>45</comment_count>
      <attachid>30777</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-31 07:42:24 -0700</bug_when>
    <thetext>Comment on attachment 30777
feFloos need input effect

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 44264)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,21 @@
&gt; +2009-05-29  Dirk Schulze  &lt;krit@webkit.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        SVG filter feFlood needs an input effect. This change
&gt; +        helps creating test cases, once filters are activated.

Hi Dirk, r=me.
Though the ChangeLog is unclear, how about &quot;Adding &apos;in1&apos; attribute support for &lt;feFlood&gt;, as specified in SVG 1.1&quot;. ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123736</commentid>
    <comment_count>46</comment_count>
      <attachid>30811</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-31 07:50:47 -0700</bug_when>
    <thetext>Comment on attachment 30811
independent filter system


&gt; Index: WebCore/platform/graphics/filters/Filter.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/filters/Filter.h	(revision 0)
&gt; +++ WebCore/platform/graphics/filters/Filter.h	(revision 0)
&gt; @@ -0,0 +1,56 @@
&gt; +/*
&gt; + *  Copyright (C) 2009 Dirk Schulze &lt;krit@webkit.org&gt;
&gt; + *
&gt; + *   This library is free software; you can redistribute it and/or
&gt; + *  modify it under the terms of the GNU Library General Public
&gt; + *  License as published by the Free Software Foundation; either
&gt; + *  version 2 of the License, or (at your option) any later version.
&gt; + *
&gt; + *  This library is distributed in the hope that it will be useful,
&gt; + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
&gt; + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
&gt; + *  Library General Public License for more details.
&gt; + *
&gt; + *  You should have received a copy of the GNU Library General Public License
&gt; + *  aint with this library; see the file COPYING.LIB.  If not, write to
&gt; + *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; + *  Boston, MA 02110-1301, USA.
&gt; + */
&gt; +
&gt; +#ifndef Filter_h
&gt; +#define Filter_h
&gt; +
&gt; +#if ENABLE(FILTERS)
&gt; +#include &quot;FilterEffect.h&quot;
&gt; +#include &quot;Image.h&quot;
&gt; +#include &quot;PlatformString.h&quot;
&gt; +#include &quot;StringHash.h&quot;
String includes don&apos;t seem to be needed here at all. Same for &quot;FilterEffect.h&quot;, can use a class forward for that (you&apos;re even doing that, so the include is unnecessary).

&gt; +
&gt; +#include &lt;wtf/PassOwnPtr.h&gt;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;
I don&apos;t see any RefPtr/PassRefPtr usage here?

&gt; +
&gt; +namespace WebCore {
&gt; +
&gt; +    class AtomicString;
AtomicString is superflous.

&gt; +    class FilterEffect;
&gt; +
&gt; +    class Filter : public RefCounted&lt;Filter&gt; {
&gt; +    public:
&gt; +
&gt; +        void setSourceImage(PassOwnPtr&lt;Image&gt; image) { m_image = image; }
&gt; +        Image* sourceImage() { return m_image.get(); }
&gt; +
&gt; +        virtual void filterEffectSubRegion(FilterEffect*) = 0;
Isn&apos;t this function supposed to return anything?
If not, it should be renamed to sth. like &quot;calculateEffectSubRegion&quot;.

&gt; +
&gt; +    private:
&gt; +
&gt; +        OwnPtr&lt;Image&gt; m_image;
You can omit that newline here, after &quot;private:&quot;.


&gt; Index: WebCore/platform/graphics/filters/FilterEffect.h
&gt; ===================================================================
&gt; --- WebCore/platform/graphics/filters/FilterEffect.h	(revision 44295)
&gt; +++ WebCore/platform/graphics/filters/FilterEffect.h	(working copy)
&gt; @@ -22,9 +22,9 @@
&gt;  #define FilterEffect_h
&gt;  
&gt;  #if ENABLE(FILTERS)
&gt; +#include &quot;Filter.h&quot;
&gt;  #include &quot;FloatRect.h&quot;
&gt;  #include &quot;ImageBuffer.h&quot;
&gt; -#include &quot;SVGResourceFilter.h&quot;
&gt;  #include &quot;TextStream.h&quot;
&gt;  
&gt;  #include &lt;wtf/PassRefPtr.h&gt;
&gt; @@ -33,6 +33,8 @@
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; +    class Filter;
&gt; +
&gt;      class FilterEffect : public RefCounted&lt;FilterEffect&gt; {
&gt;      public:
&gt;          virtual ~FilterEffect();
&gt; @@ -56,7 +58,7 @@ namespace WebCore {
&gt;          ImageBuffer* resultImage() { return m_effectBuffer.get(); }
&gt;          void setEffectBuffer(ImageBuffer* effectBuffer) { m_effectBuffer.set(effectBuffer); }
&gt;  
&gt; -        virtual void apply(SVGResourceFilter*) = 0;
&gt; +        virtual void apply(Filter*) = 0;
&gt;          virtual void dump() = 0;
&gt;  
&gt;          virtual TextStream&amp; externalRepresentation(TextStream&amp;) const;
Either use a class forward for &quot;Filter&quot; or an include, not both.


&gt; Index: WebCore/svg/graphics/filters/SVGFilter.h
....

&gt; +        void filterEffectSubRegion(FilterEffect*);
Same comment as above, needs a clarification.

&gt; +
&gt; +    private:
&gt; +        SVGFilter(const FloatRect&amp; itemBox, const FloatRect&amp; filterRect, bool itemBBoxMode, bool filterBBoxMode);
&gt; +
&gt; +        FloatRect m_itemBox;
&gt; +        FloatRect m_filterRect;
&gt; +        bool m_effectBBoxMode;
&gt; +        bool m_filterBBoxMode;
&gt; +    };
Okay the constructor doesn&apos;t look that nice. We can leave it as is for now, but it might be nicer to use an enum with flags
and pass that as constructor argument instead of two bools (thinkin of &quot;EffectBoundingBox | FilterBoundingBox&quot;..).

Nontheless, r=me. You can fix above things before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123744</commentid>
    <comment_count>47</comment_count>
      <attachid>30811</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 11:10:41 -0700</bug_when>
    <thetext>Comment on attachment 30811
independent filter system

Added the changes of Nikolas. 

landed in r44296. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123745</commentid>
    <comment_count>48</comment_count>
      <attachid>30777</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 11:33:06 -0700</bug_when>
    <thetext>Comment on attachment 30777
feFloos need input effect

landed in r44297. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123759</commentid>
    <comment_count>49</comment_count>
      <attachid>30820</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 15:25:02 -0700</bug_when>
    <thetext>Created attachment 30820
SVG filter system without subRegions

Use the new filter system in SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123761</commentid>
    <comment_count>50</comment_count>
      <attachid>30820</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-05-31 15:58:25 -0700</bug_when>
    <thetext>Comment on attachment 30820
SVG filter system without subRegions

Looks good, r=me. Please fix style issue &quot;static_cast&lt;..&gt; (&quot; -&gt; &quot;static_cast&lt;...&gt;(&quot; before landing.
As discussed on IRC, a follow-up patch will also clean up SVGFilterEffect, which contains unncessary things like &quot;String m_result&quot; etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123763</commentid>
    <comment_count>51</comment_count>
      <attachid>30820</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 16:30:47 -0700</bug_when>
    <thetext>Comment on attachment 30820
SVG filter system without subRegions

landed in r44299. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123765</commentid>
    <comment_count>52</comment_count>
      <attachid>30822</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 16:59:27 -0700</bug_when>
    <thetext>Created attachment 30822
Rename FilterBuilder to SVGFilterBuilder

FilterBuilder is SVG specific. Move it to svg/graphics/filters and rename it to SVGFilterBuilder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123783</commentid>
    <comment_count>53</comment_count>
      <attachid>30822</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-05-31 22:37:24 -0700</bug_when>
    <thetext>Comment on attachment 30822
Rename FilterBuilder to SVGFilterBuilder

Reviewed by Nikolas.

landed in r44309. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123821</commentid>
    <comment_count>54</comment_count>
      <attachid>30830</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-01 04:12:07 -0700</bug_when>
    <thetext>Created attachment 30830
remove old SVG filter code

Remove last pieces of the old SVG filte system. They are not usable with our current filter system. The new filter effects will replace the functionality step by step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123825</commentid>
    <comment_count>55</comment_count>
      <attachid>30830</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-06-01 04:44:53 -0700</bug_when>
    <thetext>Comment on attachment 30830
remove old SVG filter code

Yay! r=me. If we ever need a special CoreImage/Filter layer again, we still have these files in the history, so it&apos;s fine to remove all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123879</commentid>
    <comment_count>56</comment_count>
      <attachid>30830</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-01 14:40:44 -0700</bug_when>
    <thetext>Comment on attachment 30830
remove old SVG filter code

landed in r44332. Clearing review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123880</commentid>
    <comment_count>57</comment_count>
      <attachid>30842</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-01 14:45:01 -0700</bug_when>
    <thetext>Created attachment 30842
subRegion Code + feFlood

added subregions and the first filter effect: feFlood</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123881</commentid>
    <comment_count>58</comment_count>
      <attachid>30842</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-06-01 14:50:09 -0700</bug_when>
    <thetext>Comment on attachment 30842
subRegion Code + feFlood

Hi Dirk,

looks fine.

&gt; +        subRegionBBox = FloatRect(subRegionBBox.x() * useBBox.width() + useBBox.x(),
&gt; +                               subRegionBBox.y() * useBBox.height() + useBBox.y(),
&gt; +                               subRegionBBox.width() * useBBox.width(),
&gt; +                               subRegionBBox.height() * useBBox.height());
Please line up the &quot;subRegion&quot; lines.


Okay, that really needs to be fixed. I&apos;m going to check why this is neede before.

&gt; -    if (m_builtinEffects.contains(idImpl))
&gt; +    if (!idIsEmpty &amp;&amp; m_builtinEffects.contains(idImpl))
&gt;          return m_builtinEffects.get(idImpl).get();

Almost r+, let&apos;s just investigate in this issue before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123882</commentid>
    <comment_count>59</comment_count>
      <attachid>30842</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-01 14:54:56 -0700</bug_when>
    <thetext>Comment on attachment 30842
subRegion Code + feFlood

I think it&apos;s definitely time to move to a new bug.  Normally we try to do one patch per bug. ;)

Why explicit constructor call?
 78     Color color = Color(colorWithOverrideAlpha(floodColor().rgb(), floodOpacity()));


It seems like buffer creation of the proper size is a common thing that filters will want to share code for.

Why are you translating before filling?  Why not just fill FloatRect(FloatSize(), subRegion.size()) instead?

You should explain the
 68     if (!idIsEmpty &amp;&amp; m_builtinEffects.contains(idImpl))

change in your ChangeLog.

I assume this is covered by existing tests (which aren&apos;t currently being run).  When can we turn on filters again? ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124094</commentid>
    <comment_count>60</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-02 18:48:14 -0700</bug_when>
    <thetext>How does this relate to bug 19835?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125177</commentid>
    <comment_count>61</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-10 11:46:27 -0700</bug_when>
    <thetext>(In reply to comment #60)
&gt; How does this relate to bug 19835?
&gt; 

We can maybe close 19835.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125181</commentid>
    <comment_count>62</comment_count>
      <attachid>31136</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-10 11:54:14 -0700</bug_when>
    <thetext>Created attachment 31136
subRegion Code

New subRegion code. The test filterRegion of Batik is not good enough to test subRegions too. Thats why the subRegion patch #30842 was wrong. I added 28 tests for filterRegions and subRegions to this bug (splitted into two main tests). This tests are just additions to Batiks filterRegions test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125275</commentid>
    <comment_count>63</comment_count>
      <attachid>31152</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-11 00:04:17 -0700</bug_when>
    <thetext>Created attachment 31152
subRegion Code

The same subRegion code and tests as above. Clipping of the sourceInput was added, to avoid big ImageBuffers for SourceGraphic, SourceAlpha, ... . The ImageBuffer still can get to big for CI if filterRegion _and_ the boundingBox of the referenced object is very big. We may need a workaround for this case to enable filtery by default.

This is the last patch I want to add to this bug report. I think this should get into this report because it is necessary to get filters for SVG working. Every following bug/addition will go into a new report and we can close this one as well as #19835.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125290</commentid>
    <comment_count>64</comment_count>
      <attachid>31157</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-11 03:17:29 -0700</bug_when>
    <thetext>Created attachment 31157
subRegion Code

I read a part of the spec over. Every filter needs to be clipped to the filter region at any time, not just at drawing time. This can make the ImageBuffers used by filter effect smaller.  Just a minimal change to the patch above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125459</commentid>
    <comment_count>65</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 02:37:15 -0700</bug_when>
    <thetext>It&apos;s really getting time to retire this bug.  Please use new bugs for future patches.  You should feel free to relate them back to this bug if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125460</commentid>
    <comment_count>66</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 02:37:58 -0700</bug_when>
    <thetext>(In reply to comment #64)
&gt; Created an attachment (id=31157) [review]
&gt; subRegion Code
&gt; 
&gt; I read a part of the spec over. Every filter needs to be clipped to the filter
&gt; region at any time, not just at drawing time. This can make the ImageBuffers
&gt; used by filter effect smaller.  Just a minimal change to the patch above.

Does your test cover this?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125461</commentid>
    <comment_count>67</comment_count>
      <attachid>31157</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 02:46:21 -0700</bug_when>
    <thetext>Comment on attachment 31157
subRegion Code

 7         &lt;!-- Hier mit flood? --&gt;
 :)  Most of the team doesn&apos;t speak german.

No argument name needed:
 60         FloatRect calculateUniteEffectRect(Filter* filter);

It&apos;s sad that more of the calculateUniteEffectRect code can&apos;t be shared.  It seems like there are two variants of that code.  I wonder if we should put it in a base class instead of copying it to every subclass?  Subclasses could implement some other method which returns a bool to control which of the two common implementations to use?

This if is not needed:
 62     if (m_mergeInputs.size() &gt; 1) {

The for already takes care of that.

This code:
 84     filterContext-&gt;fillRect(FloatRect(0.f, 0.f, subRegion().width(), subRegion().height()), color);

would be clearer as:
FloatRect(FloatPoint(), subregion.size())

The explicit color construction is not needed here:
 82     Color color = Color(colorWithOverrideAlpha(floodColor().rgb(), floodOpacity()));

 76     IntSize bufferSize = IntSize(subRegion().width(), subRegion().height());

why not just subRegion().size()?
or enclosingIntSize(...) if necessary?

No need to call .get(), OwnPtr will convert to a bool automatically:
0     if (!filterGraphic.get())
 61         return;

I woudl really like to see a way to get rid of all the calculateUniteEffectRect copy/paste code.

r- for the nits above.  I&apos;d like to see this again... ideally with the calculateUniteEffectRect copy/paste gone if possible. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125487</commentid>
    <comment_count>68</comment_count>
      <attachid>31203</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-12 11:20:14 -0700</bug_when>
    <thetext>Created attachment 31203
subRegion Code

&gt; r- for the nits above.
Most things are fixed. There is no enclosingIntSize. I had to use enclosingInRect and use the size of this rect. subRegion() is a FloatRect and can&apos;t be used with ImageBuffer.

&gt; I woudl really like to see a way to get rid of all the 
&gt; calculateUniteEffectRect
&gt; copy/paste code.
I shared as much code as possible in two new functions in FilterEffect. There are still some effects, that need special code to calculate their subRegions.

&gt; Does your test cover this?
Yes. The tests test clipped effects too.

&gt; It&apos;s really getting time to retire this bug.
This is the last topic. Every following patch gets a new bug report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125505</commentid>
    <comment_count>69</comment_count>
      <attachid>31203</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 12:25:19 -0700</bug_when>
    <thetext>Comment on attachment 31203
subRegion Code

 74         FloatRect childEffectsUnite(Filter*, FilterEffect*, FilterEffect*);
 75         FloatRect childEffectsUnite(Filter*, FilterEffect*);
The two FilterEffects probably could use names there.

childEffetsUnite! doesn&apos;t make much sense except as a revolution slogan for the filter effects workers union.

Did you mean unionOfChildEffectSubRegions?

&quot;unite&quot; is not the noun form. &quot;union&quot; is.  &quot;unite&quot; is the verb form.  Then again, in math you can say &quot;union&quot; as a verb too (or at least I&apos;ve heard it said).

What&apos;s a uniteEffectRect?

How are effects ever children of one another?  I guess one can view this as a tree... so maybe.

Isn&apos;t this:
FloatRect FEFlood::calculateEffectRect(Filter* filter)
 68 {
 69     setUniteEffectRect(filter-&gt;filterRegion());
 70     filter-&gt;calculateEffectSubRegion(this);
 71     return subRegion();
 72 }
just effectRectWithNoChildren()

Ok, so I think I see.  The difference between the various implementations is how many other effect rects to take into account.  Why not just have a calculateEffectRectOfChildren() function which is virtual, and by default returns FloatRect().  In the case where FilterEffects have no children, you don&apos;t have to do anything.  In cases where they do, you end up calling calculateEffectRectForChildren(one, two).  obviously merge woudl have its own implementation.

Then you only have *one* implementation of calculateEffectRect in the baseclass which depends on the virtual calculateEffectRectOfChildren()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125525</commentid>
    <comment_count>70</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-12 14:00:49 -0700</bug_when>
    <thetext>(In reply to comment #69)
&gt; Ok, so I think I see.  The difference between the various implementations is
&gt; how many other effect rects to take into account.  Why not just have a
&gt; calculateEffectRectOfChildren() function which is virtual, and by default
&gt; returns FloatRect().  In the case where FilterEffects have no children, you
&gt; don&apos;t have to do anything.  In cases where they do, you end up calling
&gt; calculateEffectRectForChildren(one, two).  obviously merge woudl have its own
&gt; implementation.
&gt; 
&gt; Then you only have *one* implementation of calculateEffectRect in the baseclass
&gt; which depends on the virtual calculateEffectRectOfChildren()

Not sure if I missunderstand you or you me. But at least it seems that I can amuse you :-)
Here is a short explanation of the code.
calculateEffectRect/childEffectsUnite (didn&apos;t rename them now to avoid more confusion) have different tasks. 

Before I start: a effect can have no, one, two or multiple childs (if you see the references as tree). Only feMerge can have multiple childs.

The first task is to let the childs calculate their subregion, second: calculate the *union* of this subregions, third calculate the own subregion, depending on the union and the filterRegion, as a preperation for apply() and for the union calculation of the parent.
Most calculations are very simular, with the exception of feTile and the source inputs. My question about your suggestion is how you would call calculateEffectSubRegion() that calculates the effects own subregion?
Not sure, but it sounds like that you&apos;ll end up on the same code as above. But with some more reasonable names :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125569</commentid>
    <comment_count>71</comment_count>
      <attachid>31219</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-12 16:23:48 -0700</bug_when>
    <thetext>Created attachment 31219
subRegion Code

Try to avoid copy/paste code as much as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125572</commentid>
    <comment_count>72</comment_count>
      <attachid>31219</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-12 16:29:30 -0700</bug_when>
    <thetext>Comment on attachment 31219
subRegion Code

Ok, two things left to fix.

We label all virtual functions with &quot;virtual&quot; even if it&apos;s not strictly required by C++ for subclasses.

I think:
+        FloatRect unionOfChildEffectSubRegions(Filter*, FilterEffect*, FilterEffect*);
+        FloatRect unionOfChildEffectSubRegions(Filter*, FilterEffect*);
should be called:
uniteChildEffectSubRegions() (yes, that&apos;s the same name as the virtual function, I know) since they do something/calculate something they should start with a verb.

I don&apos;t need to see this again.  please fix the above when landing.

Thanks again!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125619</commentid>
    <comment_count>73</comment_count>
      <attachid>31219</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2009-06-13 07:49:08 -0700</bug_when>
    <thetext>Comment on attachment 31219
subRegion Code

Hey Dirk,

looking forward to see subregion support in trunk :-)
Still, I have some more comments before landing:

&gt; +        FloatRect uniteChildEffectSubregions(Filter* filter) { return unionOfChildEffectSubRegions(filter, m_in.get(), m_in2.get()); }

I think it&apos;s incosistent to use &quot;Subgregions&quot; / &quot;SubRegions&quot;. Please stick with one writing style in all places.

&gt; +FloatRect FEMerge::uniteEffectRect(Filter* filter)
&gt; +{
&gt; +    FloatRect uniteEffectRect;
&gt; +    if (m_mergeInputs.isEmpty())
&gt; +        return FloatRect();
&gt; +    else
&gt; +        uniteEffectRect = m_mergeInputs[0]-&gt;calculateEffectRect(filter);
I&apos;d suggest using, early return style without allocating the FloatRect here.
if (m_mergeInputs.isEmpty())
    return FloatRect();

FloatRect uniteEffectRect = m_mergeInputs.first()-&gt;calculateEffectRect(filter);
..

Other than these minor issues, it looks great, and much nicer after Erics suggestions.
Keep up the good work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125637</commentid>
    <comment_count>74</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-13 10:42:04 -0700</bug_when>
    <thetext>Since subregion is a single word, Niko&apos;s right that we should be writing it Subregion (not SubRegion) in function names.  Thanks niko.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125645</commentid>
    <comment_count>75</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-13 10:59:30 -0700</bug_when>
    <thetext>(In reply to comment #72)
&gt; (From update of attachment 31219 [review])
&gt; Ok, two things left to fix.
&gt; 
&gt; We label all virtual functions with &quot;virtual&quot; even if it&apos;s not strictly
&gt; required by C++ for subclasses.
&gt; 
&gt; I think:
&gt; +        FloatRect unionOfChildEffectSubRegions(Filter*, FilterEffect*,
&gt; FilterEffect*);
&gt; +        FloatRect unionOfChildEffectSubRegions(Filter*, FilterEffect*);
&gt; should be called:
&gt; uniteChildEffectSubRegions() (yes, that&apos;s the same name as the virtual
&gt; function, I know) since they do something/calculate something they should start
&gt; with a verb.
The effects can&apos;t find unionOfChildEffectSubRegions if it gets the same name as the virtual function. Do you have a better name? :-P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125646</commentid>
    <comment_count>76</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-06-13 11:01:43 -0700</bug_when>
    <thetext>I&apos;m surprised by this.  It also could be a static method on the class, since it doesn&apos;t use an member variables.

Wasn&apos;t the suggesion to name it unite* not union* anyway?  You could change it to caclculateUnion* :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125661</commentid>
    <comment_count>77</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-06-13 13:13:34 -0700</bug_when>
    <thetext>landed subRegion patch in r44655. I close this bug for now and open new bug reports for other topics, since the main part on a cross-platform filter system is done.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22357</attachid>
            <date>2008-07-18 06:23:00 -0700</date>
            <delta_ts>2008-08-05 14:48:41 -0700</delta_ts>
            <desc>Initial working patch</desc>
            <filename>output6.diff</filename>
            <type>text/plain</type>
            <size>25068</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5
LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGZpbGxBbmRTdHJva2VQYXRoKGNvbgogCiB2b2lkIFJl
bmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKKyAgICBz
dGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJ
bmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkg
PT0gSElEREVOIHx8IG1fcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIApAQCAtMjExLDcgKzIxMiw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEkKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5k
KSB7CiAgICAgICAgIFBhaW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAotICAgICAgICBw
cmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZp
bHRlcik7CisgICAgICAgIG1fZmlsdGVyQnVmZmVyID0gcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dCh0aGlzLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOwogICAgICAgICBpZiAoc3R5
bGUoKS0+c3ZnU3R5bGUoKS0+c2hhcGVSZW5kZXJpbmcoKSA9PSBTUl9DUklTUEVER0VTKQogICAg
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNldFVzZUFudGlhbGlhc2luZyhmYWxzZSk7CiAg
ICAgICAgIGZpbGxBbmRTdHJva2VQYXRoKG1fcGF0aCwgcGFpbnRJbmZvLmNvbnRleHQsIHN0eWxl
KCksIHRoaXMpOwpAQCAtMjE5LDcgKzIyMCw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEkKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PFNWR1N0eWxlZEVsZW1lbnQq
PihlbGVtZW50KCkpLT5zdXBwb3J0c01hcmtlcnMoKSkKICAgICAgICAgICAgIG1fbWFya2VyQm91
bmRzID0gZHJhd01hcmtlcnNJZk5lZWRlZChwYWludEluZm8uY29udGV4dCwgcGFpbnRJbmZvLnJl
Y3QsIG1fcGF0aCk7CiAKLSAgICAgICAgZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWlu
dEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIsIHNhdmVkSW5mby5jb250ZXh0KTsKKyAgICAgICAg
ZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0
ZXIsIHNhdmVkSW5mby5jb250ZXh0LCBtX2ZpbHRlckJ1ZmZlcik7CiAgICAgfQogCiAgICAgaWYg
KChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZU91dGxpbmUgfHwgcGFpbnRJbmZvLnBoYXNl
ID09IFBhaW50UGhhc2VTZWxmT3V0bGluZSkgJiYgc3R5bGUoKS0+b3V0bGluZVdpZHRoKCkpCklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDM1
MTIyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzI0LDYgKzMyNCw3IEBAIGJvb2wgUmVuZGVyU1ZHQ29udGFpbmVyOjpzZWxm
V2lsbFBhaW50KCkKIAogdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgcGFyZW50WCwgaW50IHBhcmVudFkpCiB7CisgICAgc3RkOjphdXRvX3B0
cjxJbWFnZUJ1ZmZlcj4gbV9maWx0ZXJCdWZmZXI7CiAgICAgaWYgKHBhaW50SW5mby5jb250ZXh0
LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgIWRyYXdzQ29udGVudHMoKSkKICAgICAgICAgcmV0dXJu
OwogCkBAIC0zMzksNyArMzQwLDcgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBh
aW50SW5mbwogCiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gcmVsYXRpdmVCQm94KHRydWUp
OwogICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCi0gICAg
ICAgIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0Jv
eCwgZmlsdGVyKTsgCisgICAgICAgIG1fZmlsdGVyQnVmZmVyID0gcHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCh0aGlzLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOyAKIAogICAgIGFw
cGx5QWRkaXRpb25hbFRyYW5zZm9ybXMocGFpbnRJbmZvKTsKIApAQCAtMzUwLDcgKzM1MSw3IEBA
IHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAgICAgY2hpbGQt
PnBhaW50KGNoaWxkSW5mbywgMCwgMCk7CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKQotICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMs
IHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOworICAg
ICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gs
IGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQsIG1fZmlsdGVyQnVmZmVyKTsKIAogICAgIHBhaW50
SW5mby5jb250ZXh0LT5yZXN0b3JlKCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDYgKzE2NSw3IEBAIHZvaWQgUmVu
ZGVyU1ZHSW1hZ2U6OmxheW91dCgpCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVm
ZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTE3Niw3ICsxNzcsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQ
YWludEluZm8mIHBhCiAKICAgICAgICAgUGFpbnRJbmZvIHNhdmVkSW5mbyhwYWludEluZm8pOwog
Ci0gICAgICAgIHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBtX2xv
Y2FsQm91bmRzLCBmaWx0ZXIpOworICAgICAgICBtX2ZpbHRlckJ1ZmZlciA9IHByZXBhcmVUb1Jl
bmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBtX2xvY2FsQm91bmRzLCBmaWx0ZXIpOwog
CiAgICAgICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IG1fbG9jYWxCb3VuZHM7CiAgICAgICAgIEZs
b2F0UmVjdCBzcmNSZWN0KDAsIDAsIGltYWdlKCktPndpZHRoKCksIGltYWdlKCktPmhlaWdodCgp
KTsKQEAgLTE4Nyw3ICsxODgsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludElu
Zm8mIHBhCiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmRyYXdJbWFnZShpbWFnZSgpLCBk
ZXN0UmVjdCwgc3JjUmVjdCk7CiAKLSAgICAgICAgZmluaXNoUmVuZGVyU1ZHQ29udGVudCh0aGlz
LCBwYWludEluZm8sIG1fbG9jYWxCb3VuZHMsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOwor
ICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgbV9sb2NhbEJv
dW5kcywgZmlsdGVyLCBzYXZlZEluZm8uY29udGV4dCwgbV9maWx0ZXJCdWZmZXIpOwogICAgIH0K
ICAgICAKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwpJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDM1MTIyKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQCB2
b2lkIFJlbmRlclNWR1Jvb3Q6OmFwcGx5Q29udGVudFRyYW5zZm9yCiAKIHZvaWQgUmVuZGVyU1ZH
Um9vdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50
WSkKIHsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKICAg
ICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNzksMTMgKzE4MCwxMyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBh
aW50SW5mbyYgcGFpCiAKICAgICBGbG9hdFJlY3QgYm91bmRpbmdCb3ggPSByZWxhdGl2ZUJCb3go
dHJ1ZSk7CiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3Jv
dW5kKQotICAgICAgICBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIGNoaWxkUGFpbnRJ
bmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKTsgICAgICAgIAorICAgICAgICBtX2ZpbHRlckJ1ZmZl
ciA9IHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8sIGJvdW5k
aW5nQm94LCBmaWx0ZXIpOyAgICAgICAgCiAKICAgICBjaGlsZFBhaW50SW5mby5jb250ZXh0LT5j
b25jYXRDVE0oc3ZnLT52aWV3Qm94VG9WaWV3VHJhbnNmb3JtKHdpZHRoKCksIGhlaWdodCgpKSk7
CiAgICAgUmVuZGVyQ29udGFpbmVyOjpwYWludChjaGlsZFBhaW50SW5mbywgMCwgMCk7CiAKICAg
ICBpZiAoY2hpbGRQYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCi0gICAg
ICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8sIGJvdW5kaW5n
Qm94LCBmaWx0ZXIsIHBhaW50SW5mby5jb250ZXh0KTsKKyAgICAgICAgZmluaXNoUmVuZGVyU1ZH
Q29udGVudCh0aGlzLCBjaGlsZFBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgcGFpbnRJ
bmZvLmNvbnRleHQsIG1fZmlsdGVyQnVmZmVyKTsKIAogICAgIGNoaWxkUGFpbnRJbmZvLmNvbnRl
eHQtPnJlc3RvcmUoKTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1
cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBv
cnQuY3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1
cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw4ICszOCw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomIGZpbHRlciwgU1ZHUmVzb3VyY2VG
aWx0ZXIqIHJvb3RGaWx0ZXIpCitzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBwcmVwYXJlVG9S
ZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3Q6OlBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBTVkdSZXNvdXJj
ZUZpbHRlciomIGZpbHRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIHJvb3RGaWx0ZXIpCiB7ICAgIAor
ICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IG1fZmlsdGVyQnVmZmVyOwogICAgIFNWR0Vs
ZW1lbnQqIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4ob2JqZWN0LT5lbGVt
ZW50KCkpOwogICAgIEFTU0VSVChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCkg
JiYgc3ZnRWxlbWVudC0+aXNTdHlsZWQoKSk7CiAgICAgQVNTRVJUKG9iamVjdCk7CkBAIC04NCw3
ICs4NSw3IEBAIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmoKICNpZiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAgaWYgKGZpbHRlcikgewogICAgICAgICBmaWx0ZXItPmFk
ZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBh
aW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CisgICAgICAgIG1fZmlsdGVyQnVmZmVyID0g
ZmlsdGVyLT5wcmVwYXJlKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CiAgICAgfSBl
bHNlIGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQogICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVu
dCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJJZCwg
c3R5bGVkRWxlbWVudCk7CiAjZW5kaWYKQEAgLTEwMCw5ICsxMDEsMTEgQEAgdm9pZCBwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iagogICAgICAgICBtYXNrZXItPmFwcGx5TWFzayhw
YWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwogICAgIH0gZWxzZSBpZiAoIW1hc2tlcklk
LmlzRW1wdHkoKSkKICAgICAgICAgc3ZnRWxlbWVudC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0
ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UobWFza2VySWQsIHN0eWxlZEVsZW1lbnQpOwor
ICAgICAgICAKKyAgICByZXR1cm4gbV9maWx0ZXJCdWZmZXI7CiB9CiAKLXZvaWQgZmluaXNoUmVu
ZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyT2JqZWN0OjpQYWludElu
Zm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VG
aWx0ZXIqJiBmaWx0ZXIsIEdyYXBoaWNzQ29udGV4dCogc2F2ZWRDb250ZXh0KQordm9pZCBmaW5p
c2hSZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBTVkdSZXNv
dXJjZUZpbHRlciomIGZpbHRlciwgR3JhcGhpY3NDb250ZXh0KiBzYXZlZENvbnRleHQsIHN0ZDo6
YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1ZmZlcikKIHsKICAgICBBU1NFUlQob2JqZWN0
KTsKIApAQCAtMTExLDggKzExNCw4IEBAIHZvaWQgZmluaXNoUmVuZGVyU1ZHQ29udGVudChSZW5k
ZXJPYmplY3QKIAogI2lmIEVOQUJMRShTVkdfRklMVEVSUykKICAgICBpZiAoZmlsdGVyKSB7Ci0g
ICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94
KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQgPSBzYXZlZENvbnRleHQ7CisgICAgICAgIGZp
bHRlci0+YXBwbHkocGFpbnRJbmZvLmNvbnRleHQsIGZpbHRlckJ1ZmZlciwgYm91bmRpbmdCb3gp
OwogICAgIH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBw
b3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5o
CShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDE0IEBACiAgKi8KIAogI2lmIEVOQUJMRShT
VkcpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdSZXNvdXJjZUZpbHRlcjsKLXZvaWQg
cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBh
aW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVy
KiYsIFNWR1Jlc291cmNlRmlsdGVyKiByb290RmlsdGVyID0gMCk7Ci12b2lkIGZpbmlzaFJlbmRl
clNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomLCBHcmFwaGljc0Nv
bnRleHQqIHNhdmVkQ29udGV4dCk7CitzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdDo6UGFpbnRJbmZv
JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VGaWx0ZXIqJiwgU1ZH
UmVzb3VyY2VGaWx0ZXIqIHJvb3RGaWx0ZXIgPSAwKTsKK3ZvaWQgZmluaXNoUmVuZGVyU1ZHQ29u
dGVudChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYsIEdyYXBoaWNzQ29udGV4dCog
c2F2ZWRDb250ZXh0LCBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPik7CiAKIC8vIFRoaXMgb2Zm
ZXJzIGEgd2F5IHRvIHJlbmRlciBwYXJ0cyBvZiBhIFdlYktpdCByZW5kZXJpbmcgdHJlZSBpbnRv
IGEgSW1hZ2VCdWZmZXIuCiBjbGFzcyBJbWFnZUJ1ZmZlcjsKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1NWR1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDcsNyArNDA3LDcg
QEAgc3RydWN0IFNWR1Jvb3RJbmxpbmVCb3hQYWludFdhbGtlciB7CiAgICAgICAgIG1fcGFpbnRJ
bmZvLmNvbnRleHQtPmNvbmNhdENUTShvYmplY3QtPmxvY2FsVHJhbnNmb3JtKCkpOwogCiAgICAg
ICAgIGlmICghZmxvd0JveC0+aXNSb290SW5saW5lQm94KCkpIHsKLSAgICAgICAgICAgIHByZXBh
cmVUb1JlbmRlclNWR0NvbnRlbnQob2JqZWN0LCBtX3BhaW50SW5mbywgbV9ib3VuZGluZ0JveCwg
bV9maWx0ZXIsIG1fcm9vdEZpbHRlcik7CisgICAgICAgICAgICBtX2ZpbHRlckJ1ZmZlciA9IHBy
ZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQob2JqZWN0LCBtX3BhaW50SW5mbywgbV9ib3VuZGluZ0Jv
eCwgbV9maWx0ZXIsIG1fcm9vdEZpbHRlcik7CiAgICAgICAgICAgICBtX3BhaW50SW5mby5yZWN0
ID0gb2JqZWN0LT5sb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBSZWN0KG1fcGFpbnRJbmZv
LnJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI4LDcgKzQyOCw3IEBAIHN0cnVjdCBTVkdS
b290SW5saW5lQm94UGFpbnRXYWxrZXIgewogCiAgICAgICAgIC8vIEZpbmFsaXplIHRleHQgcmVu
ZGVyaW5nIAogICAgICAgICBpZiAoIWZsb3dCb3gtPmlzUm9vdElubGluZUJveCgpKSB7Ci0gICAg
ICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KG9iamVjdCwgbV9wYWludEluZm8sIG1fYm91
bmRpbmdCb3gsIG1fZmlsdGVyLCBtX3NhdmVkSW5mby5jb250ZXh0KTsKKyAgICAgICAgICAgIGZp
bmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0LCBtX3BhaW50SW5mbywgbV9ib3VuZGluZ0JveCwg
bV9maWx0ZXIsIG1fc2F2ZWRJbmZvLmNvbnRleHQsIG1fZmlsdGVyQnVmZmVyKTsKICAgICAgICAg
ICAgIG1fZmlsdGVyID0gMDsKICAgICAgICAgfQogCkBAIC01NjAsNiArNTYwLDcgQEAgcHJpdmF0
ZToKICAgICBGbG9hdFJlY3QgbV9ib3VuZGluZ0JveDsKICAgICBTVkdSZXNvdXJjZUZpbHRlciog
bV9maWx0ZXI7CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIG1fcm9vdEZpbHRlcjsKKyAgICBzdGQ6
OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKIAogICAgIFNWR1BhaW50U2Vy
dmVyKiBtX2ZpbGxQYWludFNlcnZlcjsKICAgICBTVkdQYWludFNlcnZlciogbV9zdHJva2VQYWlu
dFNlcnZlcjsKQEAgLTU3Myw2ICs1NzQsNyBAQCBwcml2YXRlOgogCiB2b2lkIFNWR1Jvb3RJbmxp
bmVCb3g6OnBhaW50KFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwg
aW50IHR5KQogeworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1ZmZlcjsK
ICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWludElu
Zm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIApAQCAt
NTg0LDcgKzU4Niw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2JqZWMK
IAogICAgIC8vIEluaXRpYWxpemUgdGV4dCByZW5kZXJpbmcKICAgICBwYWludEluZm8uY29udGV4
dC0+Y29uY2F0Q1RNKG9iamVjdCgpLT5sb2NhbFRyYW5zZm9ybSgpKTsKLSAgICBwcmVwYXJlVG9S
ZW5kZXJTVkdDb250ZW50KG9iamVjdCgpLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIp
OworICAgIGZpbHRlckJ1ZmZlciA9IHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQob2JqZWN0KCks
IHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlcik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQt
PmNvbmNhdENUTShvYmplY3QoKS0+bG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpOwogIAogICAg
IC8vIFJlbmRlciB0ZXh0LCBjaHVuay1ieS1jaHVuawpAQCAtNTk5LDcgKzYwMSw3IEBAIHZvaWQg
U1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2JqZWMKICAgICB3YWxrVGV4dENodW5rcygm
d2Fsa2VyKTsKIAogICAgIC8vIEZpbmFsaXplIHRleHQgcmVuZGVyaW5nIAotICAgIGZpbmlzaFJl
bmRlclNWR0NvbnRlbnQob2JqZWN0KCksIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwg
c2F2ZWRJbmZvLmNvbnRleHQpOworICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0KCks
IHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQsIGZpbHRl
ckJ1ZmZlcik7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9zdmcvRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIu
Y3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDE2ICsyNCwyMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRl
cjo6RmlsdGVyKEZpbHRlckVmZmVjdCogZWZmZWN0KQorRmlsdGVyOjpGaWx0ZXIoUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkKICAgICA6IG1fZWZmZWN0KGVmZmVjdCkKIHsKIH0KIAot
UGFzc1JlZlB0cjxGaWx0ZXI+IEZpbHRlcjo6Y3JlYXRlKEZpbHRlckVmZmVjdCogZWZmZWN0KQot
eyAKK1Bhc3NSZWZQdHI8RmlsdGVyPiBGaWx0ZXI6OmNyZWF0ZShQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0KQorewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRmlsdGVyKGVmZmVjdCkp
OwogfQogCitGaWx0ZXJFZmZlY3QqIEZpbHRlcjo6ZWZmZWN0KCkKK3sKKyAgICByZXR1cm4gbV9l
ZmZlY3QuZ2V0KCk7Cit9CisKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHJldmlzaW9uIDM1MTIyKQor
KysgV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxGaWx0ZXI+IHsKICAgICBwdWJsaWM6ICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGaWx0ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8RmlsdGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKKyAgICAgICAgCisg
ICAgICAgIEZpbHRlckVmZmVjdCogZWZmZWN0KCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEZpbHRlcihGaWx0ZXJFZmZlY3QqIGVmZmVjdCk7CisgICAgICAgIEZpbHRlcihQYXNz
UmVmUHRyPEZpbHRlckVmZmVjdD4pOwogICAgIAogICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBtX2VmZmVjdDsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gMzUxMjIp
CisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEw
ICszNCwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgY2xhc3MgRmlsdGVyQnVp
bGRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckJ1aWxkZXI+IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QpIHsgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0KTsgfQorICAg
ICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0KSB7CisgICAgICAgICAgICBpZihtX25hbWVkRWZmZWN0cy5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgbV9maWx0ZXIgPSBGaWx0ZXI6OmNyZWF0ZShlZmZlY3QpOworICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0
KTsgCisgICAgICAgIH0KKyAgICAgICAgfkZpbHRlckJ1aWxkZXIoKXsgcHJpbnRmKCJGaWx0ZXJC
dWlsZGVyIERlc3RydWN0aWZpZWRcblxuIik7IH0KKyAgICAgICAgCiAgICAgICAgIEZpbHRlckVm
ZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBTdHJpbmcmIGlkKSBjb25zdCB7IHJldHVybiBtX25h
bWVkRWZmZWN0cy5nZXQoaWQuaW1wbCgpKS5nZXQoKTsgfQogICAgICAgICAKLSAgICAgICAgUGFz
c1JlZlB0cjxGaWx0ZXI+IGZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyOyB9CisgICAg
ICAgIEZpbHRlciogZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7IH0KICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgUmVmUHRy
PEZpbHRlckVmZmVjdD4gPiBtX25hbWVkRWZmZWN0czsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
Rmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxl
bWVudC5jcHAJKHJldmlzaW9uIDM1MTIyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCwxMiBAQAogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgorI2luY2x1ZGUgIlN0cmluZy5oIgorCisgICNkZWZpbmUgUFJJTlRTVFJJTkco
dmFyTmFtZSwgc3RyaW5nKSBcCisgICAgU3RyaW5nIHZhck5hbWUgPSBzdHJpbmc7IFwKKyAgICB2
YXJOYW1lLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCk7IFwKKyAgICBwcmludGYoIiVz
XG4iLHZhck5hbWUuYXNjaWkoKS5kYXRhKCkpOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU2LDYgKzYyLDcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUZsb29kRWxlbWVudDo6ZmlsdAog
CiBib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQog
eworICAgIHByaW50ZigiSGVsbG8gZnJvbSBGbG9vZCBidWlsZCgpXG4iKTsKICAgICBSZW5kZXJT
dHlsZSogcGFyZW50U3R5bGUgPSB0aGlzLT5zdHlsZUZvclJlbmRlcmVyKHBhcmVudCgpLT5yZW5k
ZXJlcigpKTsKICAgICBSZW5kZXJTdHlsZSogZmlsdGVyU3R5bGUgPSB0aGlzLT5yZXNvbHZlU3R5
bGUocGFyZW50U3R5bGUpOwogCkBAIC02NCw5ICs3MSwxOSBAQCBib29sIFNWR0ZFRmxvb2RFbGVt
ZW50OjpidWlsZChGaWx0ZXJCdWlsCiAKICAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQo
KS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJl
bmRlckFyZW5hKCkpOworICAgIAorICAgIFRleHRTdHJlYW0gdGVzdE91dDsKKyAgICBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gdGVzdEVmZmVjdCA9IEZFRmxvb2Q6OmNyZWF0ZShjb2xvciwgb3Bh
Y2l0eSk7CisgICAgdGVzdEVmZmVjdC0+ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbih0ZXN0T3V0KTsK
KyAgICAKKyAgICBTdHJpbmcgdGVtcCA9IHRlc3RPdXQucmVsZWFzZSgpOworICAgIHRlbXAuY2hh
cmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQo
KSwgRkVGbG9vZDo6Y3JlYXRlKGNvbG9yLCBvcGFjaXR5KSk7CisgICAgcHJpbnRmKCIlc1xuIix0
ZW1wLmFzY2lpKCkuZGF0YSgpKTsKICAgICAKKworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwg
RkVGbG9vZDo6Y3JlYXRlKGNvbG9yLCBvcGFjaXR5KSk7CisgICAgcHJpbnRmKCJleGl0aW5nIGZy
b20gRmxvb2QgYnVpbGQoKVxuIik7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gMzUxMjIpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIHZv
aWQgU1ZHRkVPZmZzZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHIKIAogU1ZHRmlsdGVyRWZmZWN0
KiBTVkdGRU9mZnNldEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKSBjb25zdAogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIC8vQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTEyMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsMTQgKzEwNywxNyBAQCB2b2lkIFNWR0ZpbHRlckVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAKIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50
OjpjYW52YXNSZXNvdXJjZSgpCiB7CisgICAgcHJpbnRmKCJIZWxsbyBmcm9tIEZpbHRlckVsZW1l
bnQgY2FudmFzUmVzb3VyY2UoKVxuIik7CiAgICAgaWYgKCFhdHRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIGlmICghbV9maWx0ZXIpCi0gICAgICAgIG1fZmlsdGVyID0gbmV3IFNW
R1Jlc291cmNlRmlsdGVyKCk7CisgICAgaWYgKCFtX3Jlc291cmNlRmlsdGVyKQorICAgICAgICBt
X3Jlc291cmNlRmlsdGVyID0gbmV3IFNWR1Jlc291cmNlRmlsdGVyKCk7CisgICAgCisgICAgRmls
dGVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgYm9vbCBmaWx0ZXJCQm94TW9kZSA9IGZpbHRlclVu
aXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwot
ICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJCb3VuZGluZ0JveE1vZGUoZmlsdGVyQkJveE1vZGUpOwor
ICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94
TW9kZSk7CiAKICAgICBmbG9hdCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodDsKIApAQCAtMTI0LDgg
KzEyNyw4IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKICAgICAg
ICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwogICAgICAgICBfaGVpZ2h0
ID0gaGVpZ2h0KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICB9IGVsc2UgewotICAgICAgICBt
X2ZpbHRlci0+c2V0WEJvdW5kaW5nQm94TW9kZSh4KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSk7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRZQm91bmRpbmdCb3hNb2RlKHkoKS51
bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKTsKKyAgICAgICAgbV9yZXNvdXJjZUZp
bHRlci0+c2V0WEJvdW5kaW5nQm94TW9kZSh4KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVy
Y2VudGFnZSk7CisgICAgICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldFlCb3VuZGluZ0JveE1vZGUo
eSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpOwogCiAgICAgICAgIF94ID0g
eCgpLnZhbHVlKCk7CiAgICAgICAgIF95ID0geSgpLnZhbHVlKCk7CkBAIC0xMzMsMjggKzEzNiwy
OSBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAgICAgIF9o
ZWlnaHQgPSBoZWlnaHQoKS52YWx1ZSgpOwogICAgIH0gCiAKLSAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyUmVjdChGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsKKyAgICBtX3Jlc291
cmNlRmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdo
dCkpOwogCiAgICAgYm9vbCBwcmltaXRpdmVCQm94TW9kZSA9IHByaW1pdGl2ZVVuaXRzKCkgPT0g
U1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwotICAgIG1fZmls
dGVyLT5zZXRFZmZlY3RCb3VuZGluZ0JveE1vZGUocHJpbWl0aXZlQkJveE1vZGUpOworICAgIG1f
cmVzb3VyY2VGaWx0ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShwcmltaXRpdmVCQm94TW9k
ZSk7CiAKICAgICAvLyBUT0RPIDogdXNlIHN3aXRjaC9jYXNlIGluc3RlYWQ/Ci0gICAgbV9maWx0
ZXItPmNsZWFyRWZmZWN0cygpOworICAgIG1fcmVzb3VyY2VGaWx0ZXItPmNsZWFyRWZmZWN0cygp
OwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNp
YmxpbmcoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gMDsKICAgICAgICAgaWYg
KG4tPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R0VsZW1lbnQqPihuKTsKICAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNGaWx0ZXJF
ZmZlY3QoKSkgewotICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzKiBmaWx0ZXJBdHRyaWJ1dGVzID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVudCk7Ci0gICAgICAgICAgICBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdCA9IGZpbHRlckF0dHJpYnV0ZXMtPmZpbHRlckVmZmVjdChtX2ZpbHRlci5n
ZXQoKSk7Ci0gICAgICAgICAgICBpZiAoIWZpbHRlckVmZmVjdCkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgbV9maWx0ZXItPmFkZEZpbHRlckVmZmVjdChmaWx0ZXJF
ZmZlY3QpOworICAgICAgICAgICAgcHJpbnRmKCJmaWx0ZXJFZmZlY3QgZm91bmRcbiIpOworICAg
ICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBlZmZlY3RFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4o
ZWxlbWVudCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGVmZmVjdEVsZW1lbnQtPmJ1aWxk
KCZidWlsZGVyKTsKKyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJu
IG1fZmlsdGVyLmdldCgpOworICAgIAorICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEZpbHRlcihi
dWlsZGVyLmZpbHRlcigpKTsKKyAgICBwcmludGYoImV4aXRpbmcgZnJvbSBGaWx0ZXJFbGVtZW50
IGNhbnZhc1Jlc291cmNlKClcbiIpOworICAgIHJldHVybiBtX3Jlc291cmNlRmlsdGVyLmdldCgp
OwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCShyZXZpc2lvbiAzNTEyMikKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyAr
NjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBsb25nLCBGaWx0ZXJSZXNYLCBmaWx0ZXJSZXNY
KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyRWxlbWVu
dCwgbG9uZywgRmlsdGVyUmVzWSwgZmlsdGVyUmVzWSkKIAotICAgICAgICBSZWZQdHI8U1ZHUmVz
b3VyY2VGaWx0ZXI+IG1fZmlsdGVyOworICAgICAgICBSZWZQdHI8U1ZHUmVzb3VyY2VGaWx0ZXI+
IG1fcmVzb3VyY2VGaWx0ZXI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgJKHJldmlzaW9uIDM1MTIyKQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0ID0gMDsKKyAgICAgICAgdmly
dHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lv
biAzNTEyMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMTAgKzIyLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiSW1hZ2VC
dWZmZXIuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiAjaW5jbHVkZSAiU1ZH
UmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1
ZGUgIlNWR0ZFRmxvb2QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDgsNiArMTEw
LDM4IEBAIFRleHRTdHJlYW0mIFNWR1Jlc291cmNlRmlsdGVyOjpleHRlcm5hbFIKICAgICByZXR1
cm4gdHM7CiB9CiAKK3N0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IFNWR1Jlc291cmNlRmlsdGVy
OjpwcmVwYXJlKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkKK3sKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKKyAg
IAorICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0ID0gZmlsdGVyQkJveEZvckl0ZW1CQm94KGJib3gp
OworICAgICAKKyAgICBpZiAoYmJveC5pc0VtcHR5KCkgJiYgZmlsdGVyUmVjdC5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPigwKTsKKyAgICAKKyAg
ICBmbG9hdCB3aWR0aCA9IGZpbHRlclJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHQgPSBm
aWx0ZXJSZWN0LmhlaWdodCgpOworICAgIAorICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNp
emUod2lkdGgsIGhlaWdodCk7CisgICAgCisgICAgbV9maWx0ZXJCdWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKTsKKyAgICBjb250ZXh0ID0gbV9maWx0ZXJCdWZm
ZXItPmNvbnRleHQoKTsKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+dHJhbnNs
YXRlKC1maWx0ZXJSZWN0LngoKSwgLWZpbHRlclJlY3QueSgpKTsKKyAgICAKKyAgICByZXR1cm4g
bV9maWx0ZXJCdWZmZXI7Cit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5KEdyYXBo
aWNzQ29udGV4dComIGNvbnRleHQsIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1
ZmZlciwgY29uc3QgRmxvYXRSZWN0JiBiYm94KQoreworICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0
ID0gZmlsdGVyQkJveEZvckl0ZW1CQm94KGJib3gpOworICAgIAorICAgIGlmIChiYm94LmlzRW1w
dHkoKSAmJiBmaWx0ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAg
IGNvbnRleHQtPmRyYXdJbWFnZShmaWx0ZXJCdWZmZXItPmltYWdlKCksIEZsb2F0UmVjdChmaWx0
ZXJCdWZmZXItPmltYWdlKCktPnJlY3QoKSkpOworfQorCiBTVkdSZXNvdXJjZUZpbHRlciogZ2V0
RmlsdGVyQnlJZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7
CiAgICAgU1ZHUmVzb3VyY2UqIHJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBp
ZCk7CkBAIC0xMTcsNyArMTUxLDYgQEAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGdldEZpbHRlckJ5SWQo
RG9jdW1lbgogICAgIHJldHVybiAwOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291
cmNlRmlsdGVyLmgJKHJldmlzaW9uIDM1MTIyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
UmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEyIEBACiAjZGVm
aW5lIFNWR1Jlc291cmNlRmlsdGVyX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgogCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDExICs2
OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyRWZmZWN0
Kik7CiAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYpIGNvbnN0OworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IHByZXBhcmUo
R3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgYXBwbHkoR3Jh
cGhpY3NDb250ZXh0KiYsIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJl
Y3QmIGJib3gpOwogCiAgICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgaW4gcGxhdGZvcm0gc3BlY2lm
aWMgY29kZS4KICAgICB2b2lkIHByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0
IEZsb2F0UmVjdCYgYmJveCk7CiAgICAgdm9pZCBhcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQq
JiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKICAgICAKKyAgICBGaWx0ZXIqIGZpbHRlcigpIHsg
cmV0dXJuIG1fZmlsdGVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRGaWx0ZXIoRmlsdGVyKiBmaWx0
ZXIpIHsgbV9maWx0ZXIgPSBmaWx0ZXI7IH0KKyAgICAKICAgICBTVkdSZXNvdXJjZUZpbHRlclBs
YXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhKCkgeyByZXR1cm4gbV9wbGF0Zm9ybURhdGEuZ2V0KCk7
IH0KICAgICBjb25zdCBWZWN0b3I8U1ZHRmlsdGVyRWZmZWN0Kj4mIGVmZmVjdHMoKSB7IHJldHVy
biBtX2VmZmVjdHM7IH0KICAgICAKQEAgLTg3LDYgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1feUJCb3hNb2RlIDogMTsKIAogICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlY3Q7CisgICAgUmVm
UHRyPEZpbHRlcj4gbV9maWx0ZXI7CiAgICAgVmVjdG9yPFNWR0ZpbHRlckVmZmVjdCo+IG1fZWZm
ZWN0czsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmls
dGVyQ2cubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3Vy
Y2VGaWx0ZXJDZy5tbQkocmV2aXNpb24gMzUxMjIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9j
Zy9TVkdSZXNvdXJjZUZpbHRlckNnLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcAogICAgICAgICAgICAg
RmxvYXRQb2ludCBkZXN0T3JpZ2luID0gZmlsdGVyUmVjdC5sb2NhdGlvbigpOwogICAgICAgICAg
ICAgZmlsdGVyUmVjdC5zZXRMb2NhdGlvbihGbG9hdFBvaW50KDAuMGYsIDAuMGYpKTsKIAotICAg
ICAgICAgICAgW3BsYXRmb3JtLT5tX2ZpbHRlckNJQ29udGV4dCBkcmF3SW1hZ2U6b3V0cHV0SW1h
Z2UgYXRQb2ludDpDR1BvaW50KGRlc3RPcmlnaW4pIGZyb21SZWN0OmZpbHRlclJlY3RdOworICAg
ICAgICAgICAgLy9bcGxhdGZvcm0tPm1fZmlsdGVyQ0lDb250ZXh0IGRyYXdJbWFnZTpvdXRwdXRJ
bWFnZSBhdFBvaW50OkNHUG9pbnQoZGVzdE9yaWdpbikgZnJvbVJlY3Q6ZmlsdGVyUmVjdF07CiAg
ICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVGbG9vZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUZsb29kLmNwcAkocmV2aXNpb24gMzUxMjIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2MywxMSBAQCB2
b2lkIEZFRmxvb2Q6OmFwcGx5KCkKIHsKIH0KIAordm9pZCBGRUZsb29kOjphcHBseShHcmFwaGlj
c0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzaXplKQoreworICAgIGNvbnRleHQt
PmZpbGxSZWN0KHNpemUsIGZsb29kQ29sb3IoKSk7Cit9CisKIHZvaWQgRkVGbG9vZDo6ZHVtcCgp
CiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAko
cmV2aXNpb24gMzUxMjIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM5LDYgKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KCk7CisgICAgICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEludFJlY3Qm
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22660</attachid>
            <date>2008-08-05 14:48:41 -0700</date>
            <delta_ts>2008-08-17 21:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>output.diff</filename>
            <type>text/plain</type>
            <size>77674</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTU2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYyIEBACisyMDA4LTA4LTA1ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBidWcgMTk5OTE6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5OTE+CisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnRlZCBhIG5ldyBmaWx0ZXIgYnVpbGRp
bmcgc3lzdGVtIGFzIHdlbGwgYXMgcHJlbGltaW5hcnkgcmVuZGVyaW5nCisgICAgICAgIGZvciBz
aW1wbGUgc2luZ2xlIGZpbHRlcnMgc3VjaCBhcyBGRUZsb29kIGFuZCBGRUltYWdlLCB0aG91Z2gg
RkVJbWFnZSBoYXMgYQorICAgICAgICBrbm93biByZW5kZXJpbmcgYnVnIHRoYXQgaGFzIHlldCB0
byBiZSByZXNvbHZlZC4KKyAgICAgICAgCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGZpbHRl
ciBlZmZlY3Qgc3VicmVnaW9ucywgdGhleSBub3cgcHJvcGVybHkgaW5oZXJpdCBmcm9tCisgICAg
ICAgIHRoZSBmaWx0ZXIgYm91bmRpbmcgYm94IGlmIHVuZGVmaW5lZCwgYW5kIGZpeGVkIGlzc3Vl
cyB3aXRoIGZpbHRlcgorICAgICAgICBib3VuZGluZyBib3guCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVu
ZDo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjphcHBseSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Q29tcG9zaXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5l
cjo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJT
dXBwb3J0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyOjpjaHVua1N0YXJ0Q2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyOjpj
aHVua0VuZENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OnBh
aW50KToKKyAgICAgICAgKiBzdmcvRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
cjo6Y3JlYXRlKToKKyAgICAgICAgKiBzdmcvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXI6OmVmZmVjdCk6CisgICAgICAgICogc3ZnL0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJC
dWlsZGVyOjpnZXRFZmZlY3RCeUlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6
OmZpbHRlcik6CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnByaW1pdGl2ZUJCb3hGb3JGaWx0ZXJCQm94KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6c3ViUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0U3ViUmVnaW9uKToKKyAgICAgICAgKiBzdmcvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpzZXRYQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6eUJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFlCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojp3aWR0aEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnNldFdpZHRoQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6aGVpZ2h0Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6c2V0SGVpZ2h0Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1
aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVH
YXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNS
ZXNvdXJjZSk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRB
dHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmZp
bHRlckJCb3hGb3JJdGVtQkJveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRl
cjo6cHJlcGFyZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHkp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZXNvdXJjZUZpbHRlcjo6c2V0RmlsdGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9s
dmVNYXRyaXg6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNv
bnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZm
dXNlTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmFw
cGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGlu
Zy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjphcHBseSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFRmxvb2Q6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUZsb29kLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJs
dXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZTo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjphcHBseSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmFw
cGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVU
aWxlOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oOgorCiAyMDA4LTA4LTA1ICBLZXZpbiBNY0N1
bGxvdWdoICA8a21jY3VsbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIC0gQWRkZWQgYSB0ZXN0
IHRoYXQgY2hlY2tzIGZvciBzZXZlcmFsIGVkZ2UgY2FzZXMgKHNlZSBkZXNjcmlwdGlvbiBpbgpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAko
cmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBGRUJsZW5kOjpz
ZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAgIG1fbW9kZSA9IG1vZGU7CiB9CiAKLXZvaWQg
RkVCbGVuZDo6YXBwbHkoKQordm9pZCBGRUJsZW5kOjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVy
QnVmZmVyKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJsZW5kTW9kZVR5cGUgYmxlbmRNb2RlKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUpOwogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJ
bWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0
ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1
OSw3IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0IFZlY3QKICAgICBtX3Zh
bHVlcyA9IHZhbHVlczsKIH0KIAotdm9pZCBGRUNvbG9yTWF0cml4OjphcHBseSgpCit2b2lkIEZF
Q29sb3JNYXRyaXg6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKICAgICAg
ICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1ZmZlcik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24g
MzUyOTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBGRUNvbXBv
bmVudFRyYW5zZmVyOjpzZXRBbHBoYUZ1bmN0aQogICAgIG1fYWxwaGFGdW5jID0gZnVuYzsKIH0K
IAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjphcHBseSgpCit2b2lkIEZFQ29tcG9uZW50VHJh
bnNmZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxwaGFGdW5jdGlv
bihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CiAgICAgICAgIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVm
ZmVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBG
RUNvbXBvc2l0ZTo6c2V0SzQoZmxvYXQgazQpCiAgICAgbV9rNCA9IGs0OwogfQogCi12b2lkIEZF
Q29tcG9zaXRlOjphcHBseSgpCit2b2lkIEZFQ29tcG9zaXRlOjphcHBseShJbWFnZUJ1ZmZlciog
ZmlsdGVyQnVmZmVyKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGs0KCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0SzQoZmxvYXQpOwogICAgICAgICAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcgQEAgc3Rh
dGljIGlubGluZSB2b2lkIGZpbGxBbmRTdHJva2VQYXRoKGNvbgogCiB2b2lkIFJlbmRlclBhdGg6
OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKKyAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8IG1fcGF0
aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMjExLDcgKzIx
Miw3IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEkKICAgICBpZiAo
cGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIFBhaW50
SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAotICAgICAgICBwcmVwYXJlVG9SZW5kZXJTVkdD
b250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlcik7CisgICAgICAgIGZp
bHRlckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8s
IGJvdW5kaW5nQm94LCBmaWx0ZXIpKTsKICAgICAgICAgaWYgKHN0eWxlKCktPnN2Z1N0eWxlKCkt
PnNoYXBlUmVuZGVyaW5nKCkgPT0gU1JfQ1JJU1BFREdFUykKICAgICAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5zZXRVc2VBbnRpYWxpYXNpbmcoZmFsc2UpOwogICAgICAgICBmaWxsQW5kU3Ry
b2tlUGF0aChtX3BhdGgsIHBhaW50SW5mby5jb250ZXh0LCBzdHlsZSgpLCB0aGlzKTsKQEAgLTIx
OSw3ICsyMjAsNyBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJCiAg
ICAgICAgIGlmIChzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpKS0+c3Vw
cG9ydHNNYXJrZXJzKCkpCiAgICAgICAgICAgICBtX21hcmtlckJvdW5kcyA9IGRyYXdNYXJrZXJz
SWZOZWVkZWQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0LCBtX3BhdGgpOwogCi0g
ICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0Jv
eCwgZmlsdGVyLCBzYXZlZEluZm8uY29udGV4dCk7CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0Nv
bnRlbnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyLCBzYXZlZEluZm8uY29u
dGV4dCwgZmlsdGVyQnVmZmVyLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjQsNiArMzI0LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQog
CiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGlu
dCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKIHsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRl
ckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8
fCAhZHJhd3NDb250ZW50cygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMzOSw3ICszNDAsNyBA
QCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAKICAgICBGbG9hdFJl
Y3QgYm91bmRpbmdCb3ggPSByZWxhdGl2ZUJCb3godHJ1ZSk7CiAgICAgaWYgKHBhaW50SW5mby5w
aGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKLSAgICAgICAgcHJlcGFyZVRvUmVuZGVyU1ZH
Q29udGVudCh0aGlzLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOyAKKyAgICAgICAg
ZmlsdGVyQnVmZmVyLnNldChwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5m
bywgYm91bmRpbmdCb3gsIGZpbHRlcikpOyAKIAogICAgIGFwcGx5QWRkaXRpb25hbFRyYW5zZm9y
bXMocGFpbnRJbmZvKTsKIApAQCAtMzUwLDcgKzM1MSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFp
bmVyOjpwYWludChQYWludEluZm8KICAgICAgICAgY2hpbGQtPnBhaW50KGNoaWxkSW5mbywgMCwg
MCk7CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQot
ICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdC
b3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOworICAgICAgICBmaW5pc2hSZW5kZXJTVkdD
b250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNv
bnRleHQsIGZpbHRlckJ1ZmZlci5nZXQoKSk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+cmVz
dG9yZSgpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2
aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlv
dXQoKQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywg
aW50LCBpbnQpCiB7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJCdWZmZXI7CiAgICAg
aWYgKHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS0+dmlz
aWJpbGl0eSgpID09IEhJRERFTikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzYsNyArMTc3LDcg
QEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogCiAgICAgICAgIFBh
aW50SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAotICAgICAgICBwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgbV9sb2NhbEJvdW5kcywgZmlsdGVyKTsKKyAgICAg
ICAgZmlsdGVyQnVmZmVyLnNldChwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50
SW5mbywgbV9sb2NhbEJvdW5kcywgZmlsdGVyKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGRlc3RS
ZWN0ID0gbV9sb2NhbEJvdW5kczsKICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1h
Z2UoKS0+d2lkdGgoKSwgaW1hZ2UoKS0+aGVpZ2h0KCkpOwpAQCAtMTg3LDcgKzE4OCw3IEBAIHZv
aWQgUmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGEKIAogICAgICAgICBwYWludElu
Zm8uY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAg
ICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgbV9sb2NhbEJvdW5k
cywgZmlsdGVyLCBzYXZlZEluZm8uY29udGV4dCk7CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0Nv
bnRlbnQodGhpcywgcGFpbnRJbmZvLCBtX2xvY2FsQm91bmRzLCBmaWx0ZXIsIHNhdmVkSW5mby5j
b250ZXh0LCBmaWx0ZXJCdWZmZXIuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBwYWludEluZm8u
Y29udGV4dC0+cmVzdG9yZSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9v
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFw
cGx5Q29udGVudFRyYW5zZm9yCiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnQoUGFpbnRJbmZv
JiBwYWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKIHsKKyAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzksMTMgKzE4MCwxMyBAQCB2
b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAKICAgICBGbG9hdFJlY3Qg
Ym91bmRpbmdCb3ggPSByZWxhdGl2ZUJCb3godHJ1ZSk7CiAgICAgaWYgKGNoaWxkUGFpbnRJbmZv
LnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQotICAgICAgICBwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KHRoaXMsIGNoaWxkUGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKTsgICAg
ICAgIAorICAgICAgICBmaWx0ZXJCdWZmZXIuc2V0KHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQo
dGhpcywgY2hpbGRQYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpKTsgICAgICAgIAogCiAg
ICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKHN2Zy0+dmlld0JveFRvVmlld1Ry
YW5zZm9ybSh3aWR0aCgpLCBoZWlnaHQoKSkpOwogICAgIFJlbmRlckNvbnRhaW5lcjo6cGFpbnQo
Y2hpbGRQYWludEluZm8sIDAsIDApOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09
IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQotICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRo
aXMsIGNoaWxkUGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyLCBwYWludEluZm8uY29udGV4
dCk7CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8s
IGJvdW5kaW5nQm94LCBmaWx0ZXIsIHBhaW50SW5mby5jb250ZXh0LCBmaWx0ZXJCdWZmZXIuZ2V0
KCkpOwogCiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIApJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDggKzM4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHByZXBhcmVU
b1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291
cmNlRmlsdGVyKiYgZmlsdGVyLCBTVkdSZXNvdXJjZUZpbHRlciogcm9vdEZpbHRlcikKK0ltYWdl
QnVmZmVyKiBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBS
ZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomIGZpbHRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIHJv
b3RGaWx0ZXIpCiB7ICAgIAorICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IG1fZmlsdGVy
QnVmZmVyOwogICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4ob2JqZWN0LT5lbGVtZW50KCkpOwogICAgIEFTU0VSVChzdmdFbGVtZW50ICYmIHN2Z0Vs
ZW1lbnQtPmRvY3VtZW50KCkgJiYgc3ZnRWxlbWVudC0+aXNTdHlsZWQoKSk7CiAgICAgQVNTRVJU
KG9iamVjdCk7CkBAIC04NCw3ICs4NSw3IEBAIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVu
dChSZW5kZXJPYmoKICNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAgaWYgKGZpbHRlcikgewog
ICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgZmlsdGVy
LT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CisgICAgICAg
IG1fZmlsdGVyQnVmZmVyID0gZmlsdGVyLT5wcmVwYXJlKHBhaW50SW5mby5jb250ZXh0LCBib3Vu
ZGluZ0JveCk7CiAgICAgfSBlbHNlIGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQogICAgICAgICBz
dmdFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdS
ZXNvdXJjZShmaWx0ZXJJZCwgc3R5bGVkRWxlbWVudCk7CiAjZW5kaWYKQEAgLTEwMCw5ICsxMDEs
MTEgQEAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iagogICAgICAgICBt
YXNrZXItPmFwcGx5TWFzayhwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwogICAgIH0g
ZWxzZSBpZiAoIW1hc2tlcklkLmlzRW1wdHkoKSkKICAgICAgICAgc3ZnRWxlbWVudC0+ZG9jdW1l
bnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UobWFza2VySWQs
IHN0eWxlZEVsZW1lbnQpOworICAgICAgICAKKyAgICByZXR1cm4gbV9maWx0ZXJCdWZmZXIucmVs
ZWFzZSgpOwogfQogCi12b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYgZmlsdGVyLCBHcmFwaGljc0NvbnRl
eHQqIHNhdmVkQ29udGV4dCkKK3ZvaWQgZmluaXNoUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxv
YXRSZWN0JiBib3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VGaWx0ZXIqJiBmaWx0ZXIsIEdyYXBoaWNz
Q29udGV4dCogc2F2ZWRDb250ZXh0LCBJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogewogICAg
IEFTU0VSVChvYmplY3QpOwogCkBAIC0xMTEsOCArMTE0LDkgQEAgdm9pZCBmaW5pc2hSZW5kZXJT
VkdDb250ZW50KFJlbmRlck9iamVjdAogCiAjaWYgRU5BQkxFKFNWR19GSUxURVJTKQogICAgIGlm
IChmaWx0ZXIpIHsKLSAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4
dCwgYm91bmRpbmdCb3gpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCA9IHNhdmVkQ29udGV4
dDsKKyAgICAgICAgIGlmKGZpbHRlckJ1ZmZlcikKKyAgICAgICAgICAgIGZpbHRlci0+YXBwbHko
cGFpbnRJbmZvLmNvbnRleHQsIGZpbHRlckJ1ZmZlciwgYm91bmRpbmdCb3gpOwogICAgIH0KICNl
bmRpZgogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCShyZXZpc2lvbiAz
NTI5MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMsMTMgKzIzLDE0IEBACiAgKi8KIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdSZXNvdXJjZUZpbHRlcjsKLXZvaWQgcHJlcGFyZVRvUmVu
ZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYsIFNWR1Jlc291
cmNlRmlsdGVyKiByb290RmlsdGVyID0gMCk7Ci12b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQo
UmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomLCBHcmFwaGljc0NvbnRleHQqIHNhdmVk
Q29udGV4dCk7CitJbWFnZUJ1ZmZlciogcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJP
YmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYsIFNWR1Jlc291cmNlRmlsdGVyKiByb290RmlsdGVy
ID0gMCk7Cit2b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
T2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBTVkdSZXNv
dXJjZUZpbHRlciomLCBHcmFwaGljc0NvbnRleHQqIHNhdmVkQ29udGV4dCwgSW1hZ2VCdWZmZXIq
KTsKIAogLy8gVGhpcyBvZmZlcnMgYSB3YXkgdG8gcmVuZGVyIHBhcnRzIG9mIGEgV2ViS2l0IHJl
bmRlcmluZyB0cmVlIGludG8gYSBJbWFnZUJ1ZmZlci4KIGNsYXNzIEltYWdlQnVmZmVyOwpJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwNyw3ICs0MDcsNyBAQCBzdHJ1Y3QgU1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyIHsK
ICAgICAgICAgbV9wYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKG9iamVjdC0+bG9jYWxUcmFu
c2Zvcm0oKSk7CiAKICAgICAgICAgaWYgKCFmbG93Qm94LT5pc1Jvb3RJbmxpbmVCb3goKSkgewot
ICAgICAgICAgICAgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChvYmplY3QsIG1fcGFpbnRJbmZv
LCBtX2JvdW5kaW5nQm94LCBtX2ZpbHRlciwgbV9yb290RmlsdGVyKTsKKyAgICAgICAgICAgIGZp
bHRlckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChvYmplY3QsIG1fcGFpbnRJ
bmZvLCBtX2JvdW5kaW5nQm94LCBtX2ZpbHRlciwgbV9yb290RmlsdGVyKSk7CiAgICAgICAgICAg
ICBtX3BhaW50SW5mby5yZWN0ID0gb2JqZWN0LT5sb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS5t
YXBSZWN0KG1fcGFpbnRJbmZvLnJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI4LDcgKzQy
OCw3IEBAIHN0cnVjdCBTVkdSb290SW5saW5lQm94UGFpbnRXYWxrZXIgewogCiAgICAgICAgIC8v
IEZpbmFsaXplIHRleHQgcmVuZGVyaW5nIAogICAgICAgICBpZiAoIWZsb3dCb3gtPmlzUm9vdElu
bGluZUJveCgpKSB7Ci0gICAgICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KG9iamVjdCwg
bV9wYWludEluZm8sIG1fYm91bmRpbmdCb3gsIG1fZmlsdGVyLCBtX3NhdmVkSW5mby5jb250ZXh0
KTsKKyAgICAgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0LCBtX3BhaW50SW5m
bywgbV9ib3VuZGluZ0JveCwgbV9maWx0ZXIsIG1fc2F2ZWRJbmZvLmNvbnRleHQsIGZpbHRlckJ1
ZmZlci5nZXQoKSk7CiAgICAgICAgICAgICBtX2ZpbHRlciA9IDA7CiAgICAgICAgIH0KIApAQCAt
NTYwLDYgKzU2MCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAg
ICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIG1fZmlsdGVyOwogICAgIFNWR1Jlc291cmNlRmlsdGVyKiBt
X3Jvb3RGaWx0ZXI7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJCdWZmZXI7CiAKICAg
ICBTVkdQYWludFNlcnZlciogbV9maWxsUGFpbnRTZXJ2ZXI7CiAgICAgU1ZHUGFpbnRTZXJ2ZXIq
IG1fc3Ryb2tlUGFpbnRTZXJ2ZXI7CkBAIC01NzMsNiArNTc0LDcgQEAgcHJpdmF0ZToKIAogdm9p
ZCBTVkdSb290SW5saW5lQm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBpbnQgdHgsIGludCB0eSkKIHsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1
ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNTg0LDcgKzU4Niw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVy
T2JqZWMKIAogICAgIC8vIEluaXRpYWxpemUgdGV4dCByZW5kZXJpbmcKICAgICBwYWludEluZm8u
Y29udGV4dC0+Y29uY2F0Q1RNKG9iamVjdCgpLT5sb2NhbFRyYW5zZm9ybSgpKTsKLSAgICBwcmVw
YXJlVG9SZW5kZXJTVkdDb250ZW50KG9iamVjdCgpLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBm
aWx0ZXIpOworICAgIGZpbHRlckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChv
YmplY3QoKSwgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKSk7CiAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPmNvbmNhdENUTShvYmplY3QoKS0+bG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkp
OwogIAogICAgIC8vIFJlbmRlciB0ZXh0LCBjaHVuay1ieS1jaHVuawpAQCAtNTk5LDcgKzYwMSw3
IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2JqZWMKICAgICB3YWxrVGV4
dENodW5rcygmd2Fsa2VyKTsKIAogICAgIC8vIEZpbmFsaXplIHRleHQgcmVuZGVyaW5nIAotICAg
IGZpbmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0KCksIHBhaW50SW5mbywgYm91bmRpbmdCb3gs
IGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOworICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQo
b2JqZWN0KCksIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRl
eHQsIGZpbHRlckJ1ZmZlci5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9GaWx0ZXIuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgRmlsdGVyOjpGaWx0ZXIoRmls
dGVyRWZmZWN0KiBlZmZlY3QpCiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyPiBGaWx0ZXI6OmNyZWF0
ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBG
aWx0ZXIoZWZmZWN0KSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlci5oCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUv
c3ZnL0ZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOiAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8Rmls
dGVyPiBjcmVhdGUoRmlsdGVyRWZmZWN0Kik7CiAgICAgICAgIAorICAgICAgICBGaWx0ZXJFZmZl
Y3QqIGVmZmVjdCgpIHsgcmV0dXJuIG1fZWZmZWN0LmdldCgpOyB9CisgICAgICAgIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIEZpbHRlcihGaWx0ZXJFZmZlY3QqIGVmZmVjdCk7CisgICAgICAgIEZp
bHRlcihGaWx0ZXJFZmZlY3QqKTsKICAgICAKICAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
bV9lZmZlY3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw2IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJGaWx0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNCwxMyArMzMsMjUg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAogICAgIGNsYXNzIEZpbHRlckJ1aWxkZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxGaWx0ZXJCdWlsZGVyPiB7CiAgICAgcHVibGljOgotICAgICAgICB2
b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
KSB7IG1fbmFtZWRFZmZlY3RzLnNldChpZC5pbXBsKCksIGVmZmVjdCk7IH0KLSAgICAgICAgRmls
dGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZWRFZmZlY3RzLmdldChpZC5pbXBsKCkpLmdldCgpOyB9CisgICAgICAgIHZvaWQgYWRk
KGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpIHsKKyAg
ICAgICAgICAgIG1fbGFzdEVmZmVjdCA9IGVmZmVjdC5nZXQoKTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYoaWQgIT0wKQorICAgICAgICAgICAgICAgIG1fbmFtZWRFZmZlY3RzLnNldChp
ZC5pbXBsKCksIGVmZmVjdC5nZXQoKSk7IAorICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBQ
YXNzUmVmUHRyPEZpbHRlcj4gZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXI7IH0KKyAg
ICAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0
IHsgICAgICAgICAKKyAgICAgICAgICAgIGlmKGlkID09IDAgJiYgbV9sYXN0RWZmZWN0KQorICAg
ICAgICAgICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmltcGwoKSkuZ2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFBhc3NSZWZQdHI8RmlsdGVyPiBmaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBGaWx0ZXI6OmNyZWF0ZShtX2xhc3RFZmZlY3QuZ2V0KCkpOyB9CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nSW1wbCosIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+ID4gbV9uYW1lZEVmZmVjdHM7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IG1fbGFzdEVmZmVjdDsKICAgICAgICAgCiAgICAgICAgIFJlZlB0cjxGaWx0ZXI+IG1f
ZmlsdGVyOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiAr
MjUsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZl
Y3QoKQorICAgIDogbV94QkJveE1vZGUoZmFsc2UpCisgICAgLCBtX3lCQm94TW9kZShmYWxzZSkK
KyAgICAsIG1fd2lkdGhCQm94TW9kZShmYWxzZSkKKyAgICAsIG1faGVpZ2h0QkJveE1vZGUoZmFs
c2UpCiB7CiB9CiAKQEAgLTM3LDYgKzQxLDQ2IEBAIFRleHRTdHJlYW0mIEZpbHRlckVmZmVjdDo6
ZXh0ZXJuYWxSZXByZXMKICAgICByZXR1cm4gdHM7CiB9CiAKK0Zsb2F0UmVjdCBGaWx0ZXJFZmZl
Y3Q6OnByaW1pdGl2ZUJCb3hGb3JGaWx0ZXJCQm94KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyQkJv
eCwgY29uc3QgRmxvYXRSZWN0JiBpdGVtQkJveCwgYm9vbCBlZmZlY3RCb3VuZGluZ0JveE1vZGUs
IGJvb2wgZmlsdGVyQm91bmRpbmdCb3hNb2RlKSBjb25zdAoreworICAgIEZsb2F0UmVjdCBzdWJS
ZWdpb25CQm94ID0gc3ViUmVnaW9uKCk7CisgICAgRmxvYXRSZWN0IHVzZUJCb3ggPSBmaWx0ZXJC
Qm94OworCisgICAgaWYgKGVmZmVjdEJvdW5kaW5nQm94TW9kZSkgeworICAgICAgICBpZiAoZmls
dGVyQm91bmRpbmdCb3hNb2RlKQorICAgICAgICAgICAgdXNlQkJveCA9IGl0ZW1CQm94OworCisg
ICAgICAgIHN1YlJlZ2lvbkJCb3ggPSBGbG9hdFJlY3QodXNlQkJveC54KCkgKyBzdWJSZWdpb25C
Qm94LngoKSAqIHVzZUJCb3gud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWlnaHQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LndpZHRoKCkg
KiB1c2VCQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vi
UmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGlmICh4Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94
LnNldFgodXNlQkJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVzZUJCb3gud2lkdGgoKSk7
CisKKyAgICAgICAgaWYgKHlCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIHN1YlJlZ2lv
bkJCb3guc2V0WSh1c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWln
aHQoKSk7CisKKyAgICAgICAgaWYgKHdpZHRoQm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAg
ICBzdWJSZWdpb25CQm94LnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIHVzZUJCb3gu
d2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGhlaWdodEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAg
ICAgICAgc3ViUmVnaW9uQkJveC5zZXRIZWlnaHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVz
ZUJCb3guaGVpZ2h0KCkpOworICAgIH0KKworICAgIHJldHVybiBzdWJSZWdpb25CQm94OworfQor
CitGbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpzdWJSZWdpb24oKSBjb25zdAoreworICAgIHJldHVy
biBtX3N1YlJlZ2lvbjsKK30KKwordm9pZCBGaWx0ZXJFZmZlY3Q6OnNldFN1YlJlZ2lvbihjb25z
dCBGbG9hdFJlY3QmIHN1YlJlZ2lvbikKK3sKKyAgICBtX3N1YlJlZ2lvbiA9IHN1YlJlZ2lvbjsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIx
LDggQEAKICNkZWZpbmUgRmlsdGVyRWZmZWN0X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CkBAIC0zMywxMiArMzUsMzggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7CiAgICAgICAgIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKSA9IDA7CisgICAgICAgIGJvb2wgeEJvdW5kaW5nQm94TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1feEJCb3hNb2RlOyB9CisgICAgICAgIHZvaWQgc2V0WEJvdW5kaW5n
Qm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAg
ICAgICBib29sIHlCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3lCQm94TW9kZTsg
fQorICAgICAgICB2b2lkIHNldFlCb3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX3lC
Qm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAgICAgYm9vbCB3aWR0aEJvdW5kaW5nQm94TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldFdp
ZHRoQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1vZGUpIHsgbV93aWR0aEJCb3hNb2RlID0gYmJv
eE1vZGU7IH0KKworICAgICAgICBib29sIGhlaWdodEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faGVpZ2h0QkJveE1vZGU7IH0KKyAgICAgICAgdm9pZCBzZXRIZWlnaHRCb3VuZGlu
Z0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX2hlaWdodEJCb3hNb2RlID0gYmJveE1vZGU7IH0K
KworICAgICAgICBGbG9hdFJlY3QgcHJpbWl0aXZlQkJveEZvckZpbHRlckJCb3goY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJCQm94LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94LCBib29sLCBib29s
KSBjb25zdDsKKworICAgICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0U3ViUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYpOworICAgICAgICAKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpID0gMDsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBGaWx0ZXJFZmZlY3QoKTsKKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAKKyAg
ICAgICAgYm9vbCBtX3hCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV95QkJveE1vZGUgOiAx
OworICAgICAgICBib29sIG1fd2lkdGhCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9oZWln
aHRCQm94TW9kZSA6IDE7CisKKyAgICAgICAgRmxvYXRSZWN0IG1fc3ViUmVnaW9uOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVC
bGVuZEVsZW1lbnQ6OmZpbHQKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUJsZW5kRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVCbGVuZEVsZW1l
bnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjIoKSk7CkBAIC03OCw3ICs3OCw5IEBAIGJvb2wgU1ZHRkVCbGVuZEVsZW1l
bnQ6OmJ1aWxkKEZpbHRlckJ1aWwKICAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVCbGVuZDo6Y3Jl
YXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxCbGVuZE1vZGVUeXBlPiAobW9kZSgpKSkp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShpbnB1
dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4gKG1vZGUoKSkpOworICAgIHNl
dFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBi
dWlsZGVyLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDM1MjkyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0
ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAg
ICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxk
KEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBT
VkdOYW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCkBAIC04Niw3ICs4Niw5IEBAIGJvb2wg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKEZpbHQKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDtpIDwgbnI7aSsrKQogICAgICAgICBfdmFsdWVzLmFwcGVuZChudW1iZXJzLT5nZXRJ
dGVtKGksIGVjKSk7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFQ29sb3JNYXRyaXg6
OmNyZWF0ZShpbnB1dDEsIHN0YXRpY19jYXN0PENvbG9yTWF0cml4VHlwZT4gKHR5cGUoKSksIF92
YWx1ZXMpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4
OjpjcmVhdGUoaW5wdXQxLCBzdGF0aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBf
dmFsdWVzKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVj
dC5nZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJF
ZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0
ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKiwg
U1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZl
Q29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4x
LCBpbjEpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBTVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJv
b2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1
aWxkZXIpCitib29sIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChGaWx0ZXJC
dWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
ICAgICAKQEAgLTg1LDcgKzg1LDkgQEAgYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6YnVpbAogICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQogICAgIAotICAgIGJ1aWxkZXItPmFk
ZChyZXN1bHQoKSwgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGlucHV0MSwgcmVkLCBncmVl
biwgYmx1ZSwgYWxwaGEpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5wdXQxLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkp
OworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVj
dCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wg
YnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQsIFNWR05hbWVzOjpmZUNvbXBvbmVudFRyYW5zZmVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5B
dHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OgogICAgIHJldHVybiAwOwogfQogCi1ib29s
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jv
b2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBT
VkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwpAQCAtOTQsOSArOTQsMTAg
QEAgYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlcgogICAgIGlmKCFpbnB1
dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShpbnB1dDEsIGlu
cHV0Miwgc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4gKF9vcGVyYXRvcigpKSwK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGlu
cHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRpb25UeXBlPiAoX29wZXJh
dG9yKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsxKCksIGsy
KCksIGszKCksIGs0KCkpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3Qu
cmVsZWFzZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVm
ZmVjdC5nZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgp
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChT
VkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxk
ZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNv
dXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRl
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lv
biAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZQogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKQEAgLTkxLDkgKzkxLDEw
IEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCgKICAgICBwYXJlbnRT
dHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUt
PmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIAorICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgZmluZExpZ2h0cygpKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCks
IGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZm
ZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0
dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFs
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcs
IFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksNyArNzksNyBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291cmNlRmls
dGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CkBAIC04OCw5ICs4OCwxMCBAQCBib29sIFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURp
c3BsYWNlbWVudE1hcDo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDaGFubmVs
U2VsZWN0b3JUeXBlPiAoeENoYW5uZWxTZWxlY3RvcigpKSwgCisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwg
c3RhdGljX2Nhc3Q8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gKHhDaGFubmVsU2VsZWN0b3IoKSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENoYW5u
ZWxTZWxlY3RvclR5cGU+ICh5Q2hhbm5lbFNlbGVjdG9yKCkpLCBzY2FsZSgpKTsKLSAgICBidWls
ZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXIt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2
aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJC
dWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKiwgU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZH
TmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5n
LCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2
aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUZsb29kRWxl
bWVudDo6ZmlsdAogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFRmxvb2RFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291
cmNlKQogewogICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHRoaXMtPnN0eWxlRm9yUmVu
ZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOwogICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHls
ZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CkBAIC02NCw4ICs2NCwxMCBAQCBi
b29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsCiAKICAgICBwYXJlbnRTdHls
ZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUtPmRl
cmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwotCi0gICAgYnVpbGRlci0+YWRkKHJlc3Vs
dCgpLCBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpKTsKKyAgICAKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOwor
ICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsK
KyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOyAgICAKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNp
b24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0
dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUZsb29kPiBtX2ZpbHRlckVmZmVj
dDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNp
b24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MiwxNCArNzIsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbgogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBi
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVHYXVzc2lhbkJs
dXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKSk7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShp
bnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKTsKKyAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDM1Mjky
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAg
dmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmly
dHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnU3RyaW5nLCBT
VkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEyICs5MywxNCBAQCBTVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJv
b2wgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCitib29s
IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgaWYoIW1fY2FjaGVkSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVJbWFn
ZTo6Y3JlYXRlKG1fY2FjaGVkSW1hZ2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRUltYWdlOjpjcmVhdGUobV9jYWNoZWRJbWFnZSk7CisgICAgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChy
ZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFN1YnJlc291cmNlQXR0cmli
dXRlU3RyaW5ncyhWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZp
bHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
LCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIq
IGJ1aWxkZXIpCitib29sIFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBi
dWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9y
PEZpbHRlckVmZmVjdCo+IG1lcmdlSW5wdXRzOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewpAQCAtNTksNyArNTksOSBAQCBi
b29sIFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsCiAgICAgaWYobWVyZ2VJbnB1
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQo
cmVzdWx0KCksIEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cykpOworICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cyk7CisgICAgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1
aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVNZXJnZUVs
ZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0
KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVp
bGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jl
c291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RU1lcmdlPiBtX2ZpbHRlckVmZmVjdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MiwxNCArNjIsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdG
RU9mZnNldEVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFT2Zmc2V0
RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVPZmZzZXRF
bGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVPZmZzZXQ6OmNyZWF0ZShpbnB1
dDEsIGR4KCksIGR5KCkpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU9m
ZnNldDo6Y3JlYXRlKGlucHV0MSwgZHgoKSwgZHkoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1
bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWls
ZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWls
ZGVyKiwgU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpm
ZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGlu
MSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIExpZ2h0U291cmNlKiBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW4KICAgICByZXR1cm4gbGlnaHQ7CiB9CiAKLWJvb2wg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRl
cikKK2Jvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRl
ciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAg
CkBAIC0xMDcsOSArMTA3LDEwIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQKICAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7
CiAgICAgZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAg
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3Rh
bnQoKSwgCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3Rh
bnQoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJF
eHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBmaW5k
TGlnaHRzKCkpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFz
ZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5n
ZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQo
RmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6
OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNCArNTcsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBT
VkdGRVRpbGVFbGVtZW50OjpmaWx0ZQogICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVUaWxl
RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVUaWxlRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlclJlc291cmNlKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFVGlsZTo6Y3JlYXRlKGlucHV0MSkp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGlucHV0
MSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0
KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lv
biAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0
dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVU
aWxlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVGlsZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0
cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMSArODIsMTIgQEAgU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OgogICAgIHJldHVybiAwOwogfQogCi1ib29s
IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCiti
b29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIs
IFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFR1
cmJ1bGFuY2VUeXBlPiAodHlwZSgpKSwgYmFzZUZyZXF1ZW5jeVgoKSwgCisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8VHVy
YnVsYW5jZVR5cGU+ICh0eXBlKCkpLCBiYXNlRnJlcXVlbmN5WCgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCks
IHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOwotICAgIGJ1
aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICBzZXRTdGFu
ZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgYnVpbGRl
ci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gMzUyOTIp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmly
dHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNv
bnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR0Jhc2VG
cmVxdWVuY3lYSWRlbnRpZmllciwgZmxvYXQsIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5
WCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTEg
KzEwMiwxMyBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAg
aWYgKCFhdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghbV9maWx0ZXIp
Ci0gICAgICAgIG1fZmlsdGVyID0gbmV3IFNWR1Jlc291cmNlRmlsdGVyKCk7CisgICAgaWYgKCFt
X3Jlc291cmNlRmlsdGVyKQorICAgICAgICBtX3Jlc291cmNlRmlsdGVyID0gbmV3IFNWR1Jlc291
cmNlRmlsdGVyKCk7CisKKyAgICBGaWx0ZXJCdWlsZGVyIGJ1aWxkZXI7CiAKICAgICBib29sIGZp
bHRlckJCb3hNb2RlID0gZmlsdGVyVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZ
UEVfT0JKRUNUQk9VTkRJTkdCT1g7Ci0gICAgbV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94
TW9kZShmaWx0ZXJCQm94TW9kZSk7CisgICAgbV9yZXNvdXJjZUZpbHRlci0+c2V0RmlsdGVyQm91
bmRpbmdCb3hNb2RlKGZpbHRlckJCb3hNb2RlKTsKIAogICAgIGZsb2F0IF94LCBfeSwgX3dpZHRo
LCBfaGVpZ2h0OwogCkBAIC0xMTYsOCArMTE4LDggQEAgU1ZHUmVzb3VyY2UqIFNWR0ZpbHRlckVs
ZW1lbnQ6OmNhbnZhc1JlcwogICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50
YWdlKCk7CiAgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRYQm91bmRpbmdCb3hNb2RlKHgoKS51
bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFlCb3VuZGluZ0JveE1vZGUoeSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2Up
OworICAgICAgICBtX3Jlc291cmNlRmlsdGVyLT5zZXRYQm91bmRpbmdCb3hNb2RlKHgoKS51bml0
VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKTsKKyAgICAgICAgbV9yZXNvdXJjZUZpbHRl
ci0+c2V0WUJvdW5kaW5nQm94TW9kZSh5KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBlUGVyY2Vu
dGFnZSk7CiAKICAgICAgICAgX3ggPSB4KCkudmFsdWUodGhpcyk7CiAgICAgICAgIF95ID0geSgp
LnZhbHVlKHRoaXMpOwpAQCAtMTI1LDI4ICsxMjcsMjcgQEAgU1ZHUmVzb3VyY2UqIFNWR0ZpbHRl
ckVsZW1lbnQ6OmNhbnZhc1JlcwogICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCkudmFsdWUodGhp
cyk7CiAgICAgfSAKIAotICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwg
X3ksIF93aWR0aCwgX2hlaWdodCkpOworICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEZpbHRlclJl
Y3QoRmxvYXRSZWN0KF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0KSk7CiAKICAgICBib29sIHByaW1p
dGl2ZUJCb3hNb2RlID0gcHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklU
X1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7Ci0gICAgbV9maWx0ZXItPnNldEVmZmVjdEJvdW5kaW5n
Qm94TW9kZShwcmltaXRpdmVCQm94TW9kZSk7CisgICAgbV9yZXNvdXJjZUZpbHRlci0+c2V0RWZm
ZWN0Qm91bmRpbmdCb3hNb2RlKHByaW1pdGl2ZUJCb3hNb2RlKTsKIAogICAgIC8vIFRPRE8gOiB1
c2Ugc3dpdGNoL2Nhc2UgaW5zdGVhZD8KLSAgICBtX2ZpbHRlci0+Y2xlYXJFZmZlY3RzKCk7Cisg
ICAgbV9yZXNvdXJjZUZpbHRlci0+Y2xlYXJFZmZlY3RzKCk7CiAgICAgZm9yIChOb2RlKiBuID0g
Zmlyc3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIFNW
R0VsZW1lbnQqIGVsZW1lbnQgPSAwOwotICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkpCisg
ICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICAgICAgZWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKTsKLSAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVu
dC0+aXNGaWx0ZXJFZmZlY3QoKSkgewotICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJBdHRyaWJ1dGVzID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVudCk7Ci0gICAgICAgICAgICBTVkdG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCA9IGZpbHRlckF0dHJpYnV0ZXMtPmZpbHRlckVmZmVj
dChtX2ZpbHRlci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoIWZpbHRlckVmZmVjdCkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0ZpbHRlckVm
ZmVjdCgpKSB7CisgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKiBlZmZlY3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVudCk7CiAKLSAgICAgICAgICAgIG1fZmlsdGVyLT5hZGRG
aWx0ZXJFZmZlY3QoZmlsdGVyRWZmZWN0KTsKKyAgICAgICAgICAgICAgICBlZmZlY3RFbGVtZW50
LT5idWlsZCgmYnVpbGRlciwgbV9yZXNvdXJjZUZpbHRlci5nZXQoKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7CisgICAgbV9y
ZXNvdXJjZUZpbHRlci0+c2V0RmlsdGVyKGJ1aWxkZXIuZmlsdGVyKCkpOworICAgIHJldHVybiBt
X3Jlc291cmNlRmlsdGVyLmdldCgpOwogfQogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5o
CShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1l
czo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdGaWx0ZXJSZXNYSWRlbnRpZmllciwgbG9uZywgRmlsdGVy
UmVzWCwgZmlsdGVyUmVzWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjpmaWx0ZXJUYWdTdHJpbmcsIFNWR0ZpbHRlclJl
c1lJZGVudGlmaWVyLCBsb25nLCBGaWx0ZXJSZXNZLCBmaWx0ZXJSZXNZKQogCi0gICAgICAgIFJl
ZlB0cjxTVkdSZXNvdXJjZUZpbHRlcj4gbV9maWx0ZXI7CisgICAgICAgIFJlZlB0cjxTVkdSZXNv
dXJjZUZpbHRlcj4gbV9yZXNvdXJjZUZpbHRlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyRWxlbWVudC5oIgpAQCAtNjksMjYgKzcwLDI4IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKFNWR0ZpbHRlckVmZmVjdCog
ZmlsdGVyRWZmZWN0KSBjb25zdAordm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyhTVkdSZXNvdXJjZUZpbHRlciogcmVzb3VyY2VG
aWx0ZXIsIEZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdAogewogICAgIEFTU0VSVChm
aWx0ZXJFZmZlY3QpOwogICAgIGlmICghZmlsdGVyRWZmZWN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBBU1NFUlQoZmlsdGVyRWZmZWN0LT5maWx0ZXIoKSk7CisgICAgQVNTRVJUKHJlc291cmNl
RmlsdGVyKTsKIAogICAgIGZsb2F0IF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0OworICAgIAorICAg
IEZsb2F0UmVjdCBmaWx0ZXJSZWN0ID0gcmVzb3VyY2VGaWx0ZXItPmZpbHRlclJlY3QoKTsgCiAK
LSAgICBpZiAoZmlsdGVyRWZmZWN0LT5maWx0ZXIoKS0+ZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkp
IHsKLSAgICAgICAgX3ggPSB4KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKLSAgICAgICAgX3kgPSB5
KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKLSAgICAgICAgX3dpZHRoID0gd2lkdGgoKS52YWx1ZUFz
UGVyY2VudGFnZSgpOwotICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCkudmFsdWVBc1BlcmNlbnRh
Z2UoKTsKKyAgICBpZiAocmVzb3VyY2VGaWx0ZXItPmVmZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7
CisgICAgICAgIF94ID0gKHgoKS52YWx1ZUFzUGVyY2VudGFnZSgpICsgMS4wZikgKiBmaWx0ZXJS
ZWN0LngoKTsKKyAgICAgICAgX3kgPSAoeSgpLnZhbHVlQXNQZXJjZW50YWdlKCkgKyAxLjBmKSAq
IGZpbHRlclJlY3QueSgpOworICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50
YWdlKCkgKiBmaWx0ZXJSZWN0LndpZHRoKCk7CisgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQoKS52
YWx1ZUFzUGVyY2VudGFnZSgpICogZmlsdGVyUmVjdC5oZWlnaHQoKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICAvLyBXZSBuZWVkIHRvIHJlc29sdmUgYW55IHBlcmNlbnRhZ2VzIGluIGZpbHRlciBy
ZWN0IHNwYWNlLgogICAgICAgICBpZiAoeCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNl
bnRhZ2UpIHsKICAgICAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0WEJvdW5kaW5nQm94TW9kZSh0
cnVlKTsKLSAgICAgICAgICAgIF94ID0geCgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CisgICAgICAg
ICAgICBfeCA9ICh4KCkudmFsdWVBc1BlcmNlbnRhZ2UoKSArIDEuMGYpICogZmlsdGVyUmVjdC54
KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFhCb3Vu
ZGluZ0JveE1vZGUoZmFsc2UpOwogICAgICAgICAgICAgX3ggPSB4KCkudmFsdWUodGhpcyk7CkBA
IC05Niw3ICs5OSw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUK
IAogICAgICAgICBpZiAoeSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsK
ICAgICAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0WUJvdW5kaW5nQm94TW9kZSh0cnVlKTsKLSAg
ICAgICAgICAgIF95ID0geSgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CisgICAgICAgICAgICBfeSA9
ICh5KCkudmFsdWVBc1BlcmNlbnRhZ2UoKSArIDEuMGYpICogZmlsdGVyUmVjdC55KCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFlCb3VuZGluZ0JveE1v
ZGUoZmFsc2UpOwogICAgICAgICAgICAgX3kgPSB5KCkudmFsdWUodGhpcyk7CkBAIC0xMDQsNyAr
MTA3LDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogCiAgICAg
ICAgIGlmICh3aWR0aCgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNlbnRhZ2UpIHsKICAg
ICAgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0V2lkdGhCb3VuZGluZ0JveE1vZGUodHJ1ZSk7Ci0g
ICAgICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CisgICAgICAg
ICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50YWdlKCkgKiBmaWx0ZXJSZWN0Lndp
ZHRoKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldFdp
ZHRoQm91bmRpbmdCb3hNb2RlKGZhbHNlKTsKICAgICAgICAgICAgIF93aWR0aCA9IHdpZHRoKCku
dmFsdWUodGhpcyk7CkBAIC0xMTIsNyArMTE1LDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZQogCiAgICAgICAgIGlmIChoZWlnaHQoKS51bml0VHlwZSgpID09IExl
bmd0aFR5cGVQZXJjZW50YWdlKSB7CiAgICAgICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhlaWdo
dEJvdW5kaW5nQm94TW9kZSh0cnVlKTsKLSAgICAgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQoKS52
YWx1ZUFzUGVyY2VudGFnZSgpOworICAgICAgICAgICAgX2hlaWdodCA9IGhlaWdodCgpLnZhbHVl
QXNQZXJjZW50YWdlKCkgKiBmaWx0ZXJSZWN0LmhlaWdodCgpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUoZmFsc2Up
OwogICAgICAgICAgICAgX2hlaWdodCA9IGhlaWdodCgpLnZhbHVlKHRoaXMpOwpAQCAtMTIwLDcg
KzEyMyw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICB9
CiAKICAgICBmaWx0ZXJFZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lk
dGgsIF9oZWlnaHQpKTsKLSAgICBmaWx0ZXJFZmZlY3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9
CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMiAr
NDMsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0ID0gMDsK
KyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZp
bHRlciopID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5k
ZXJTdHlsZSopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZv
aWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKFNWR1Jlc291cmNlRmlsdGVyKiwgRmlsdGVyRWZmZWN0
KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9Ci0gICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKFNWR0ZpbHRlckVmZmVjdCopIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
QU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcywgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmll
ciwgU1ZHTmFtZXM6OnhBdHRyU3RyaW5nLCBTVkdMZW5ndGgsIFgsIHgpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAzNTI5MikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1Rl
eHQuaCIKQEAgLTU4LDcgKzU5LDcgQEAgRmxvYXRSZWN0IFNWR1Jlc291cmNlRmlsdGVyOjpmaWx0
ZXJCQm94RgogICAgIEZsb2F0UmVjdCBmaWx0ZXJCQm94ID0gZmlsdGVyUmVjdCgpOwogCiAgICAg
ZmxvYXQgeE9mZnNldCA9IDAuMGY7Ci0gICAgZmxvYXQgeU9mZnNldCA9IDAuMGY7CisgICAgZmxv
YXQgeU9mZnNldCA9IDAuMGY7ICAgIAogCiAgICAgaWYgKCFlZmZlY3RCb3VuZGluZ0JveE1vZGUo
KSkgewogICAgICAgICB4T2Zmc2V0ID0gaXRlbUJCb3gueCgpOwpAQCAtNjYsOCArNjcsOCBAQCBG
bG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hGCiAgICAgfQogCiAgICAgaWYg
KGZpbHRlckJvdW5kaW5nQm94TW9kZSgpKSB7Ci0gICAgICAgIGZpbHRlckJCb3ggPSBGbG9hdFJl
Y3QoeE9mZnNldCArIGZpbHRlckJCb3gueCgpICogaXRlbUJCb3gud2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB5T2Zmc2V0ICsgZmlsdGVyQkJveC55KCkgKiBpdGVtQkJv
eC5oZWlnaHQoKSwKKyAgICAgICAgZmlsdGVyQkJveCA9IEZsb2F0UmVjdCh4T2Zmc2V0ICsgKGZp
bHRlckJCb3gueCgpICsgMS4wZikgKiBpdGVtQkJveC54KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeU9mZnNldCArIChmaWx0ZXJCQm94LnkoKSArIDEuMGYpICogaXRlbUJCb3gu
eSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3gud2lkdGgoKSAq
IGl0ZW1CQm94LndpZHRoKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVy
QkJveC5oZWlnaHQoKSAqIGl0ZW1CQm94LmhlaWdodCgpKTsKICAgICB9IGVsc2UgewpAQCAtMTA4
LDYgKzEwOSw0MCBAQCBUZXh0U3RyZWFtJiBTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxSCiAg
ICAgcmV0dXJuIHRzOwogfQogCitzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBTVkdSZXNvdXJj
ZUZpbHRlcjo6cHJlcGFyZShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBGbG9hdFJl
Y3QmIGJib3gpCit7CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gbV9maWx0ZXJCdWZm
ZXI7CisgICAKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJv
eChiYm94KTsKKyAgICAgCisgICAgaWYgKGJib3guaXNFbXB0eSgpICYmIGZpbHRlclJlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4oMCk7Cisg
ICAgCisgICAgZmxvYXQgd2lkdGggPSBmaWx0ZXJSZWN0LndpZHRoKCk7CisgICAgZmxvYXQgaGVp
Z2h0ID0gZmlsdGVyUmVjdC5oZWlnaHQoKTsKKyAgICAKKyAgICBJbnRTaXplIGJ1ZmZlclNpemUg
PSBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIAorICAgIG1fZmlsdGVyQnVmZmVyID0gSW1h
Z2VCdWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSk7CisgICAgY29udGV4dCA9IG1fZmls
dGVyQnVmZmVyLT5jb250ZXh0KCk7CisgICAgY29udGV4dC0+c2F2ZSgpOworICAgIGNvbnRleHQt
PnRyYW5zbGF0ZSgtZmlsdGVyUmVjdC54KCksIC1maWx0ZXJSZWN0LnkoKSk7CisgICAgCisgICAg
cmV0dXJuIG1fZmlsdGVyQnVmZmVyOworfQorCit2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eShHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyLCBj
b25zdCBGbG9hdFJlY3QmIGJib3gpCit7CisgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0
ZXJCQm94Rm9ySXRlbUJCb3goYmJveCk7CisgICAgCisgICAgaWYgKGJib3guaXNFbXB0eSgpICYm
IGZpbHRlclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGZp
bHRlcigpLT5lZmZlY3QoKS0+YXBwbHkoZmlsdGVyQnVmZmVyKTsKKyAgICBjb250ZXh0LT50cmFu
c2xhdGUoZmlsdGVyUmVjdC54KCksIGZpbHRlclJlY3QueSgpKTsKKyAgICBjb250ZXh0LT5kcmF3
SW1hZ2UoZmlsdGVyQnVmZmVyLT5pbWFnZSgpLCBGbG9hdFJlY3QoZmlsdGVyQnVmZmVyLT5pbWFn
ZSgpLT5yZWN0KCkpKTsKK30KKwogU1ZHUmVzb3VyY2VGaWx0ZXIqIGdldEZpbHRlckJ5SWQoRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkKQogewogICAgIFNWR1Jlc291
cmNlKiByZXNvdXJjZSA9IGdldFJlc291cmNlQnlJZChkb2N1bWVudCwgaWQpOwpAQCAtMTE3LDcg
KzE1Miw2IEBAIFNWR1Jlc291cmNlRmlsdGVyKiBnZXRGaWx0ZXJCeUlkKERvY3VtZW4KICAgICBy
ZXR1cm4gMDsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCShy
ZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMiBAQAogI2RlZmluZSBTVkdSZXNvdXJj
ZUZpbHRlcl9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5j
bHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJFZmZlY3QuaCIKIAotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotCiAjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NywxMSArNjgsMTYgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkRmlsdGVyRWZmZWN0KFNWR0ZpbHRlckVmZmVjdCopOwogCiAgICAgdmly
dHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25z
dDsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBwcmVwYXJlKEdyYXBoaWNzQ29udGV4
dComLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCom
LCBJbWFnZUJ1ZmZlciosIGNvbnN0IEZsb2F0UmVjdCYgYmJveCk7CiAKICAgICAvLyBUbyBiZSBp
bXBsZW1lbnRlZCBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgogICAgIHZvaWQgcHJlcGFyZUZp
bHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKICAgICB2b2lk
IGFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmIGJib3gpOwog
ICAgIAorICAgIEZpbHRlciogZmlsdGVyKCkgeyByZXR1cm4gbV9maWx0ZXIuZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldEZpbHRlcihQYXNzUmVmUHRyPEZpbHRlcj4gZmlsdGVyKSB7IG1fZmlsdGVyID0g
ZmlsdGVyOyB9CisgICAgCiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEqIHBsYXRm
b3JtRGF0YSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhLmdldCgpOyB9CiAgICAgY29uc3QgVmVj
dG9yPFNWR0ZpbHRlckVmZmVjdCo+JiBlZmZlY3RzKCkgeyByZXR1cm4gbV9lZmZlY3RzOyB9CiAg
ICAgCkBAIC04Nyw2ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3lCQm94TW9kZSA6IDE7
CiAKICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWN0OworICAgIFJlZlB0cjxGaWx0ZXI+IG1fZmls
dGVyOwogICAgIFZlY3RvcjxTVkdGaWx0ZXJFZmZlY3QqPiBtX2VmZmVjdHM7CiB9OwogCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1h
dHJpeC5jcHAJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDcgKzEzMyw3
IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYSgKICAgICBtX3ByZXNl
cnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0cml4Ojph
cHBseSgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJC
dWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVzZXJ2
ZUFscGhhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KEltYWdlQnVmZmVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Owog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmNwcAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEy
LDcgKzExMiw3IEBAIHZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKEwKICAg
ICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRp
bmc6OmFwcGx5KCkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KEltYWdlQnVmZmVyKiBm
aWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29u
c3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TGln
aHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZp
c2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgRkVEaXNw
bGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICBtX3NjYWxlID0gc2NhbGU7CiB9CiAK
LXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJl
dmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRT
Y2FsZShmbG9hdCBzY2FsZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRmxvb2QuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDggKzU5LDkg
QEAgdm9pZCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvbwogICAgIG1fZmxvb2RP
cGFjaXR5ID0gZmxvb2RPcGFjaXR5OwogfQogCi12b2lkIEZFRmxvb2Q6OmFwcGx5KCkKK3ZvaWQg
RkVGbG9vZDo6YXBwbHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1ZmZlcikKIHsKKyAgICBmaWx0ZXJC
dWZmZXItPmNvbnRleHQoKS0+ZmlsbFJlY3Qoc3ViUmVnaW9uKCksIGZsb29kQ29sb3IoKSk7CiB9
CiAKIHZvaWQgRkVGbG9vZDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRmxvb2QuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAog
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM4LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBmbG9hdCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKKyAgICAgICAgdm9p
ZCBhcHBseShHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgSW50UmVjdCYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3Rk
RGV2aWF0aW9uWShmbAogICAgIG1feSA9IHk7CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJsdXI6OmFw
cGx5KCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZm
ZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVz
c2lhbkJsdXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFR2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICsz
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VC
dWZmZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24g
MzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFSW1hZ2UuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzEsNiArMzIsNyBAQCBGRUltYWdlOjpGRUltYWdlKENhY2hlZElt
YWdlKiBjYWNoZWRJbWFnCiAgICAgOiBGaWx0ZXJFZmZlY3QoKQogICAgICwgbV9jYWNoZWRJbWFn
ZShjYWNoZWRJbWFnZSkKIHsKKyAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9
CiAKIFBhc3NSZWZQdHI8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSkKQEAgLTYzLDggKzY1LDkgQEAgdm9pZCBGRUltYWdlOjpzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZQogICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAK
LXZvaWQgRkVJbWFnZTo6YXBwbHkoKQordm9pZCBGRUltYWdlOjphcHBseShJbWFnZUJ1ZmZlciog
ZmlsdGVyQnVmZmVyKQogeworICAgIGZpbHRlckJ1ZmZlci0+Y29udGV4dCgpLT5kcmF3SW1hZ2Uo
Y2FjaGVkSW1hZ2UoKS0+aW1hZ2UoKSwgc3ViUmVnaW9uKCksIEZsb2F0UmVjdCgwLCAwLCAtMSwg
LTEpLCBDb21wb3NpdGVDb3B5LCBmYWxzZSk7CiB9CiAKIHZvaWQgRkVJbWFnZTo6ZHVtcCgpCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24g
MzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldENhY2hl
ZEltYWdlKENhY2hlZEltYWdlKik7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAkocmV2aXNpb24gMzUyOTIpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIHZvaWQgRkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMoY29uc3Qg
VmVjdG8KICAgICBtX21lcmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7CiB9CiAKLXZvaWQgRkVNZXJn
ZTo6YXBwbHkoKQordm9pZCBGRU1lcmdlOjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVy
KQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
aAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
TWVyZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVyRWZm
ZWN0Kj4mIG1lcmdlSW5wdXRzKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHJldmlzaW9uIDM1MjkyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZ
KGZsb2F0IHJhZGkKICAgICBtX3JhZGl1c1kgPSByYWRpdXNZOwogfQogCi12b2lkIEZFTW9ycGhv
bG9neTo6YXBwbHkoKQordm9pZCBGRU1vcnBob2xvZ3k6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0
ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNb3JwaG9sb2d5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRU1vcnBob2xvZ3kuaAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldFJhZGl1c1koZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCShyZXZpc2lvbiAzNTI5MikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTYwLDggKzYxLDkgQEAgdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAg
ICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjphcHBseSgpCit2b2lkIEZFT2Zmc2V0
OjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogeworICAgIGZpbHRlckJ1ZmZlci0+
Y29udGV4dCgpLT50cmFuc2xhdGUoZHgoKSwgZHkoKSk7CiB9CiAKIHZvaWQgRkVPZmZzZXQ6OmR1
bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAko
cmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zm
c2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBmbG9hdCBkeSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldER5KGZsb2F0KTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFw
cGx5KEltYWdlQnVmZmVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAzNTI5MikKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJj
ZSgKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVTcGVjdWxh
ckxpZ2h0aW5nOjphcHBseSgpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6YXBwbHkoSW1hZ2VC
dWZmZXIqIGZpbHRlckJ1ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiAzNTI5
MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAg
dm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHJldmlzaW9uIDM1MjkyKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw3ICszNiw3IEBAIFBhc3NSZWZQdHI8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXIK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFVGlsZShpbikpOwogfQogCi12b2lkIEZFVGlsZTo6
YXBwbHkoKQordm9pZCBGRVRpbGU6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAkocmV2
aXNpb24gMzUyOTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFVGlsZT4gY3JlYXRlKEZpbHRl
ckVmZmVjdCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVR1cmJ1bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gMzUyOTIpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMoYm9v
bCBzCiAgICAgbV9zdGl0Y2hUaWxlcyA9IHN0aXRjaDsKIH0KIAotdm9pZCBGRVR1cmJ1bGVuY2U6
OmFwcGx5KCkKK3ZvaWQgRkVUdXJidWxlbmNlOjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVm
ZmVyKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVy
YnVsZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUdXJidWxlbmNlLmgJKHJldmlzaW9uIDM1MjkyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc3RpdGNoVGlsZXMoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRTdGl0Y2hUaWxlcyhib29sKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCg==
</data>
<flag name="review"
          id="10030"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22846</attachid>
            <date>2008-08-17 21:51:02 -0700</date>
            <delta_ts>2009-05-12 23:22:49 -0700</delta_ts>
            <desc>Updated Patch</desc>
            <filename>output.diff</filename>
            <type>text/plain</type>
            <size>82812</size>
            <attacher name="Alex Mathews">possessedpenguinbob</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNTgxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTY4IEBACisyMDA4LTA4LTE3ICBBbGV4IE1hdGhld3MgIDxwb3NzZXNzZWRwZW5n
dWluYm9iQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCdWcgMTk5OTE6IFdlYktpdCBuZWVkcyBjcm9zcy1wbGF0Zm9ybSBmaWx0ZXIg
c3lzdGVtCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk5OTE+CisKKyAgICAgICAgV29yayB0b3dhcmRzIGNyb3NzLXBsYXRmb3JtIHN2ZyBmaWx0ZXJz
LiBGaXJzdCByb3VuZCBvZiBjaGFuZ2VzIHRvIGFsbG93IHJlbmRlcmluZworICAgICAgICBvZiBz
aW1wbGUgZmlsdGVycy4gQWxzbyByZW5kZXJpbmcgYm91bmRpbmcgYm94ZXMgc2hvdWxkIGFsbCB3
b3JrIHByb3Blcmx5IGZvciBmaWx0ZXJzCisgICAgICAgIGFzIExheW91dFRlc3RzL3N2Zy9iYXRp
ay9maWx0ZXJSZWdpb25zLnN2ZyBzaG91bGQgcmVuZGVyIGNvcnJlY3RseSB3aXRoIGEgU1ZHIEZJ
TFRFUlMKKyAgICAgICAgZW5hYmxlZCBidWlsZC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6YXBwbHkpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRUNvbG9yTWF0cml4OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50
VHJhbnNmZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjphcHBseSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VHcmFwaGljOjpzb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VHcmFwaGljOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFw
aGljOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpkdW1wKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OlNvdXJjZUdyYXBoaWMpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJQYXRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclBhdGg6
OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJ
bWFnZTo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcmVwYXJlVG9SZW5k
ZXJTVkdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0Lmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9vdElu
bGluZUJveFBhaW50V2Fsa2VyOjpjaHVua1N0YXJ0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyOjpjaHVua0VuZENhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KToKKyAgICAgICAgKiBzdmcvRmls
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBz
dmcvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmVmZmVjdCk6CisgICAgICAg
ICogc3ZnL0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6
OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RCeUlkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmZpbHRlcik6CisgICAgICAgICogc3Zn
L0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRl
ckVmZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnByaW1pdGl2ZUJCb3hG
b3JGaWx0ZXJCQm94KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c3ViUmVnaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0U3ViUmVnaW9uKToKKyAgICAg
ICAgKiBzdmcvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRY
Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6eUJvdW5k
aW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldFlCb3VuZGlu
Z0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp3aWR0aEJvdW5kaW5n
Qm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldFdpZHRoQm91bmRp
bmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aGVpZ2h0Qm91bmRp
bmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0SGVpZ2h0Qm91
bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6
YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVs
ZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
T2Zmc2V0RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50
OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBz
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXNvdXJjZSk6CisgICAgICAgICogc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBz
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNvbnRleHRFbGVtZW50
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVyQkJveEZvckl0ZW1CQm94KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlRmlsdGVyOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291
cmNlRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpzZXRGaWx0ZXIpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFj
ZW1lbnRNYXA6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURp
c3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBwbHkpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNz
aWFuQmx1cjo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1
c3NpYW5CbHVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZFSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmFw
cGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRU9mZnNldDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFT2Zmc2V0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGlu
Zzo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJM
aWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRVRpbGUuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjphcHBs
eSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6CisK
IDIwMDgtMDgtMTcgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAg
ICAgIENvbXBsZXRlIGluIHNjb3BlIHZhcmlhYmxlcyBpbiB0aGUgQ29uc29sZSB3aGVuIHBhdXNl
ZC4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAzNTgxMikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC00ODYsNiArNDg2LDcgQEAKIAkJNEUxOTU5MkMwQTM5REFDQzAw
MjIwRkU1IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmggKi87IH07CiAJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRp
YVF1ZXJ5RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRFMTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsK
IAkJNEUxOTU5MkUwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CisJCTUwNDAxRUM5MEU1OTEwRTIwMDE5QTdB
NCAvKiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MDQwMUVDODBFNTkxMEUyMDAxOUE3QTQgLyogU291cmNlR3JhcGhpYy5oICov
OyB9OwogCQk1MEE1REY3NTBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1REY3MzBFMUExM0M5MDAwQTAz
QUUgLyogRmlsdGVyLmggKi87IH07CiAJCTUwQTVERjc2MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0
ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MEE1REY3NDBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyQnVpbGRlci5oICovOyB9OwogCQk1
MEE1RTIxMDBFMUFCQUYyMDAwQTAzQUUgLyogRmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1RTIwRjBFMUFCQUYyMDAwQTAzQUUg
LyogRmlsdGVyRWZmZWN0LmggKi87IH07CkBAIC01MDM3LDYgKzUwMzgsNyBAQAogCQk0RTE5NTky
NjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV2YWx1YXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0RTE5NTkyNzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4
cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFRdWVyeUV4
cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTI4MEEzOURBQ0MwMDIy
MEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVF1ZXJ5RXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUwNDAxRUM4
MEU1OTEwRTIwMDE5QTdBNCAvKiBTb3VyY2VHcmFwaGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNvdXJjZUdyYXBoaWMuaDsgcGF0aCA9IGZpbHRlcnMvU291cmNlR3JhcGhp
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEE1REY3MzBFMUExM0M5MDAwQTAz
QUUgLyogRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MEE1REY3NDBFMUExM0M5MDAwQTAzQUUg
LyogRmlsdGVyQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0
ZXJCdWlsZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUwQTVFMjBGMEUxQUJB
RjIwMDBBMDNBRSAvKiBGaWx0ZXJFZmZlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmlsdGVyRWZmZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDg2
Myw2ICsxMDg2NSw3IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MDQwMUVDODBF
NTkxMEUyMDAxOUE3QTQgLyogU291cmNlR3JhcGhpYy5oICovLAogCQkJCUE3NUU4QjgwMEUxREUy
RDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLywKIAkJCQlBNzVFOEI4MTBFMURFMkQ2MDA3RjI0
ODEgLyogRkVCbGVuZC5oICovLAogCQkJCUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNv
bG9yTWF0cml4LmNwcCAqLywKQEAgLTE1NDAyLDYgKzE1NDA1LDcgQEAKIAkJCQkzMUMwRkY0RTBF
NENFRkREMDA3RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50SW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEZBNkU1RDBFNENGREVEMDBENUNGNDkgLyogUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTA0MDFFQzkwRTU5MTBFMjAwMTlBN0E0IC8qIFNvdXJj
ZUdyYXBoaWMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDcgQEAgdm9pZCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAg
IG1fbW9kZSA9IG1vZGU7CiB9CiAKLXZvaWQgRkVCbGVuZDo6YXBwbHkoKQordm9pZCBGRUJsZW5k
OjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHJldmlzaW9uIDM1ODEyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJsZW5k
TW9kZVR5cGUgYmxlbmRNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJs
ZW5kTW9kZVR5cGUpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDM1ODEy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6c2V0
VmFsdWVzKGNvbnN0IFZlY3QKICAgICBtX3ZhbHVlcyA9IHZhbHVlczsKIH0KIAotdm9pZCBGRUNv
bG9yTWF0cml4OjphcHBseSgpCit2b2lkIEZFQ29sb3JNYXRyaXg6OmFwcGx5KEltYWdlQnVmZmVy
KiBmaWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3Qg
VmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VmFsdWVzKGNv
bnN0IFZlY3RvcjxmbG9hdD4mKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1ZmZl
cik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgzLDcgKzgzLDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRBbHBoYUZ1bmN0aQog
ICAgIG1fYWxwaGFGdW5jID0gZnVuYzsKIH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjph
cHBseSgpCit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0
ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkocmV2aXNpb24gMzU4MTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGFGdW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJik7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
dW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6c2V0SzQoZmxvYXQgazQpCiAg
ICAgbV9rNCA9IGs0OwogfQogCi12b2lkIEZFQ29tcG9zaXRlOjphcHBseSgpCit2b2lkIEZFQ29t
cG9zaXRlOjphcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogewogfQogCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkocmV2
aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGZsb2F0IGs0KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0SzQoZmxvYXQp
OwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgp
OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vz
c2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFNvdXJjZUdyYXBoaWNfaAorI2Rl
ZmluZSBTb3VyY2VHcmFocGljX2gKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisgICAgY2xhc3MgU291cmNlR3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1
YmxpYzogICAgICAgIAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VHcmFwaGljPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlR3JhcGhpYygpKTsgfQorICAgICAg
ICAKKyAgICAgICAgSW1hZ2UqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5n
ZXQoKTsgfQorICAgICAgICB2b2lkIHNldFNvdXJjZUltYWdlKEltYWdlKiBzb3VyY2VJbWFnZSkg
eyBtX3NvdXJjZUltYWdlID0gc291cmNlSW1hZ2U7IH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1
YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGR1bXAoKSB7IH0KKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBTb3VyY2VH
cmFwaGljKCkgeyB9CisgICAgICAgIFJlZlB0cjxJbWFnZT4gbV9zb3VyY2VJbWFnZTsKKyAgICB9
OworfSAvL25hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBTb3VyY2VHcmFwaGljX2gKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclBhdGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclBhdGguY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclBhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIGZpbGxBbmRTdHJva2VQYXRoKGNvbgogCiB2b2lkIFJlbmRlclBhdGg6OnBh
aW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQsIGludCkKIHsKKyAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IGZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSB8fCBzdHlsZSgpLT52aXNpYmlsaXR5KCkgPT0gSElEREVOIHx8IG1fcGF0aC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIApAQCAtMjExLDcgKzIxMiw3
IEBAIHZvaWQgUmVuZGVyUGF0aDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEkKICAgICBpZiAocGFp
bnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKSB7CiAgICAgICAgIFBhaW50SW5m
byBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAotICAgICAgICBwcmVwYXJlVG9SZW5kZXJTVkdDb250
ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlcik7CisgICAgICAgIGZpbHRl
ckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCh0aGlzLCBwYWludEluZm8sIGJv
dW5kaW5nQm94LCBmaWx0ZXIpKTsKICAgICAgICAgaWYgKHN0eWxlKCktPnN2Z1N0eWxlKCktPnNo
YXBlUmVuZGVyaW5nKCkgPT0gU1JfQ1JJU1BFREdFUykKICAgICAgICAgICAgIHBhaW50SW5mby5j
b250ZXh0LT5zZXRVc2VBbnRpYWxpYXNpbmcoZmFsc2UpOwogICAgICAgICBmaWxsQW5kU3Ryb2tl
UGF0aChtX3BhdGgsIHBhaW50SW5mby5jb250ZXh0LCBzdHlsZSgpLCB0aGlzKTsKQEAgLTIxOSw3
ICsyMjAsNyBAQCB2b2lkIFJlbmRlclBhdGg6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJCiAgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCgpKS0+c3VwcG9y
dHNNYXJrZXJzKCkpCiAgICAgICAgICAgICBtX21hcmtlckJvdW5kcyA9IGRyYXdNYXJrZXJzSWZO
ZWVkZWQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50SW5mby5yZWN0LCBtX3BhdGgpOwogCi0gICAg
ICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwg
ZmlsdGVyLCBzYXZlZEluZm8uY29udGV4dCk7CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRl
bnQodGhpcywgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyLCBzYXZlZEluZm8uY29udGV4
dCwgZmlsdGVyQnVmZmVyLmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlT3V0bGluZSB8fCBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNl
bGZPdXRsaW5lKSAmJiBzdHlsZSgpLT5vdXRsaW5lV2lkdGgoKSkKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjQs
NiArMzI0LDcgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6OnNlbGZXaWxsUGFpbnQoKQogCiB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCBw
YXJlbnRYLCBpbnQgcGFyZW50WSkKIHsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1
ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCAh
ZHJhd3NDb250ZW50cygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMzOSw3ICszNDAsNyBAQCB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAKICAgICBGbG9hdFJlY3Qg
Ym91bmRpbmdCb3ggPSByZWxhdGl2ZUJCb3godHJ1ZSk7CiAgICAgaWYgKHBhaW50SW5mby5waGFz
ZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKLSAgICAgICAgcHJlcGFyZVRvUmVuZGVyU1ZHQ29u
dGVudCh0aGlzLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpOyAKKyAgICAgICAgZmls
dGVyQnVmZmVyLnNldChwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywg
Ym91bmRpbmdCb3gsIGZpbHRlcikpOyAKIAogICAgIGFwcGx5QWRkaXRpb25hbFRyYW5zZm9ybXMo
cGFpbnRJbmZvKTsKIApAQCAtMzUwLDcgKzM1MSw3IEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVy
OjpwYWludChQYWludEluZm8KICAgICAgICAgY2hpbGQtPnBhaW50KGNoaWxkSW5mbywgMCwgMCk7
CiAKICAgICBpZiAocGFpbnRJbmZvLnBoYXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQotICAg
ICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gs
IGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOworICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250
ZW50KHRoaXMsIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRl
eHQsIGZpbHRlckJ1ZmZlci5nZXQoKSk7CiAKICAgICBwYWludEluZm8uY29udGV4dC0+cmVzdG9y
ZSgpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNp
b24gMzU4MTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE2NSw2ICsxNjUsNyBAQCB2b2lkIFJlbmRlclNWR0ltYWdlOjpsYXlvdXQo
KQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50
LCBpbnQpCiB7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJCdWZmZXI7CiAgICAgaWYg
KHBhaW50SW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgc3R5bGUoKS0+dmlzaWJp
bGl0eSgpID09IEhJRERFTikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzYsNyArMTc3LDcgQEAg
dm9pZCBSZW5kZXJTVkdJbWFnZTo6cGFpbnQoUGFpbnRJbmZvJiBwYQogCiAgICAgICAgIFBhaW50
SW5mbyBzYXZlZEluZm8ocGFpbnRJbmZvKTsKIAotICAgICAgICBwcmVwYXJlVG9SZW5kZXJTVkdD
b250ZW50KHRoaXMsIHBhaW50SW5mbywgbV9sb2NhbEJvdW5kcywgZmlsdGVyKTsKKyAgICAgICAg
ZmlsdGVyQnVmZmVyLnNldChwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5m
bywgbV9sb2NhbEJvdW5kcywgZmlsdGVyKSk7CiAKICAgICAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gbV9sb2NhbEJvdW5kczsKICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgaW1hZ2Uo
KS0+d2lkdGgoKSwgaW1hZ2UoKS0+aGVpZ2h0KCkpOwpAQCAtMTg3LDcgKzE4OCw3IEBAIHZvaWQg
UmVuZGVyU1ZHSW1hZ2U6OnBhaW50KFBhaW50SW5mbyYgcGEKIAogICAgICAgICBwYWludEluZm8u
Y29udGV4dC0+ZHJhd0ltYWdlKGltYWdlKCksIGRlc3RSZWN0LCBzcmNSZWN0KTsKIAotICAgICAg
ICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMsIHBhaW50SW5mbywgbV9sb2NhbEJvdW5kcywg
ZmlsdGVyLCBzYXZlZEluZm8uY29udGV4dCk7CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRl
bnQodGhpcywgcGFpbnRJbmZvLCBtX2xvY2FsQm91bmRzLCBmaWx0ZXIsIHNhdmVkSW5mby5jb250
ZXh0LCBmaWx0ZXJCdWZmZXIuZ2V0KCkpOwogICAgIH0KICAgICAKICAgICBwYWludEluZm8uY29u
dGV4dC0+cmVzdG9yZSgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJl
dmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0Niw2ICsxNDYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFwcGx5
Q29udGVudFRyYW5zZm9yCiAKIHZvaWQgUmVuZGVyU1ZHUm9vdDo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGludCBwYXJlbnRYLCBpbnQgcGFyZW50WSkKIHsKKyAgICBPd25QdHI8SW1hZ2VC
dWZmZXI+IGZpbHRlckJ1ZmZlcjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzksMTMgKzE4MCwxMyBAQCB2b2lk
IFJlbmRlclNWR1Jvb3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAKICAgICBGbG9hdFJlY3QgYm91
bmRpbmdCb3ggPSByZWxhdGl2ZUJCb3godHJ1ZSk7CiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBo
YXNlID09IFBhaW50UGhhc2VGb3JlZ3JvdW5kKQotICAgICAgICBwcmVwYXJlVG9SZW5kZXJTVkdD
b250ZW50KHRoaXMsIGNoaWxkUGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKTsgICAgICAg
IAorICAgICAgICBmaWx0ZXJCdWZmZXIuc2V0KHByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQodGhp
cywgY2hpbGRQYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0ZXIpKTsgICAgICAgIAogCiAgICAg
Y2hpbGRQYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKHN2Zy0+dmlld0JveFRvVmlld1RyYW5z
Zm9ybSh3aWR0aCgpLCBoZWlnaHQoKSkpOwogICAgIFJlbmRlckNvbnRhaW5lcjo6cGFpbnQoY2hp
bGRQYWludEluZm8sIDAsIDApOwogCiAgICAgaWYgKGNoaWxkUGFpbnRJbmZvLnBoYXNlID09IFBh
aW50UGhhc2VGb3JlZ3JvdW5kKQotICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KHRoaXMs
IGNoaWxkUGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyLCBwYWludEluZm8uY29udGV4dCk7
CisgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQodGhpcywgY2hpbGRQYWludEluZm8sIGJv
dW5kaW5nQm94LCBmaWx0ZXIsIHBhaW50SW5mby5jb250ZXh0LCBmaWx0ZXJCdWZmZXIuZ2V0KCkp
OwogCiAgICAgY2hpbGRQYWludEluZm8uY29udGV4dC0+cmVzdG9yZSgpOwogICAgIApJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDggKzM4LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHByZXBhcmVUb1Jl
bmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlck9iamVjdDo6UGFpbnRJ
bmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNl
RmlsdGVyKiYgZmlsdGVyLCBTVkdSZXNvdXJjZUZpbHRlciogcm9vdEZpbHRlcikKK0ltYWdlQnVm
ZmVyKiBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5k
ZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5n
Qm94LCBTVkdSZXNvdXJjZUZpbHRlciomIGZpbHRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIHJvb3RG
aWx0ZXIpCiB7ICAgIAorICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IG1fZmlsdGVyQnVm
ZmVyOwogICAgIFNWR0VsZW1lbnQqIHN2Z0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50
Kj4ob2JqZWN0LT5lbGVtZW50KCkpOwogICAgIEFTU0VSVChzdmdFbGVtZW50ICYmIHN2Z0VsZW1l
bnQtPmRvY3VtZW50KCkgJiYgc3ZnRWxlbWVudC0+aXNTdHlsZWQoKSk7CiAgICAgQVNTRVJUKG9i
amVjdCk7CkBAIC04NCw3ICs4NSw3IEBAIHZvaWQgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChS
ZW5kZXJPYmoKICNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAgaWYgKGZpbHRlcikgewogICAg
ICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgZmlsdGVyLT5w
cmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CisgICAgICAgIG1f
ZmlsdGVyQnVmZmVyID0gZmlsdGVyLT5wcmVwYXJlKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGlu
Z0JveCk7CiAgICAgfSBlbHNlIGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQogICAgICAgICBzdmdF
bGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNv
dXJjZShmaWx0ZXJJZCwgc3R5bGVkRWxlbWVudCk7CiAjZW5kaWYKQEAgLTEwMCw5ICsxMDEsMTEg
QEAgdm9pZCBwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KFJlbmRlck9iagogICAgICAgICBtYXNr
ZXItPmFwcGx5TWFzayhwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwogICAgIH0gZWxz
ZSBpZiAoIW1hc2tlcklkLmlzRW1wdHkoKSkKICAgICAgICAgc3ZnRWxlbWVudC0+ZG9jdW1lbnQo
KS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UobWFza2VySWQsIHN0
eWxlZEVsZW1lbnQpOworICAgICAgICAKKyAgICByZXR1cm4gbV9maWx0ZXJCdWZmZXIucmVsZWFz
ZSgpOwogfQogCi12b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIFJlbmRlck9iamVjdDo6UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYgZmlsdGVyLCBHcmFwaGljc0NvbnRleHQq
IHNhdmVkQ29udGV4dCkKK3ZvaWQgZmluaXNoUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmplY3Qq
IG9iamVjdCwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCwgU1ZHUmVzb3VyY2VGaWx0ZXIqJiBmaWx0ZXIsIEdyYXBoaWNzQ29u
dGV4dCogc2F2ZWRDb250ZXh0LCBJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogewogICAgIEFT
U0VSVChvYmplY3QpOwogCkBAIC0xMTEsOCArMTE0LDkgQEAgdm9pZCBmaW5pc2hSZW5kZXJTVkdD
b250ZW50KFJlbmRlck9iamVjdAogCiAjaWYgRU5BQkxFKFNWR19GSUxURVJTKQogICAgIGlmIChm
aWx0ZXIpIHsKLSAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwg
Ym91bmRpbmdCb3gpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCA9IHNhdmVkQ29udGV4dDsK
KyAgICAgICAgIGlmKGZpbHRlckJ1ZmZlcikKKyAgICAgICAgICAgIGZpbHRlci0+YXBwbHkocGFp
bnRJbmZvLmNvbnRleHQsIGZpbHRlckJ1ZmZlciwgYm91bmRpbmdCb3gpOwogICAgIH0KICNlbmRp
ZgogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCShyZXZpc2lvbiAzNTgx
MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTMgKzIzLDE0IEBACiAgKi8KIAogI2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBTVkdSZXNvdXJjZUZpbHRlcjsKLXZvaWQgcHJlcGFyZVRvUmVuZGVy
U1ZHQ29udGVudChSZW5kZXJPYmplY3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291cmNlRmlsdGVyKiYsIFNWR1Jlc291cmNl
RmlsdGVyKiByb290RmlsdGVyID0gMCk7Ci12b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVu
ZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0OjpQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomLCBHcmFwaGljc0NvbnRleHQqIHNhdmVkQ29u
dGV4dCk7CitJbWFnZUJ1ZmZlciogcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChSZW5kZXJPYmpl
Y3QqLCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIFNWR1Jlc291cmNlRmlsdGVyKiYsIFNWR1Jlc291cmNlRmlsdGVyKiByb290RmlsdGVyID0g
MCk7Cit2b2lkIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2Jq
ZWN0OjpQYWludEluZm8mLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBTVkdSZXNvdXJj
ZUZpbHRlciomLCBHcmFwaGljc0NvbnRleHQqIHNhdmVkQ29udGV4dCwgSW1hZ2VCdWZmZXIqKTsK
IAogLy8gVGhpcyBvZmZlcnMgYSB3YXkgdG8gcmVuZGVyIHBhcnRzIG9mIGEgV2ViS2l0IHJlbmRl
cmluZyB0cmVlIGludG8gYSBJbWFnZUJ1ZmZlci4KIGNsYXNzIEltYWdlQnVmZmVyOwpJbmRleDog
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvU1ZHUm9vdElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwNyw3ICs0MDcsNyBAQCBzdHJ1Y3QgU1ZHUm9vdElubGluZUJveFBhaW50V2Fsa2VyIHsKICAg
ICAgICAgbV9wYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKG9iamVjdC0+bG9jYWxUcmFuc2Zv
cm0oKSk7CiAKICAgICAgICAgaWYgKCFmbG93Qm94LT5pc1Jvb3RJbmxpbmVCb3goKSkgewotICAg
ICAgICAgICAgcHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChvYmplY3QsIG1fcGFpbnRJbmZvLCBt
X2JvdW5kaW5nQm94LCBtX2ZpbHRlciwgbV9yb290RmlsdGVyKTsKKyAgICAgICAgICAgIGZpbHRl
ckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChvYmplY3QsIG1fcGFpbnRJbmZv
LCBtX2JvdW5kaW5nQm94LCBtX2ZpbHRlciwgbV9yb290RmlsdGVyKSk7CiAgICAgICAgICAgICBt
X3BhaW50SW5mby5yZWN0ID0gb2JqZWN0LT5sb2NhbFRyYW5zZm9ybSgpLmludmVyc2UoKS5tYXBS
ZWN0KG1fcGFpbnRJbmZvLnJlY3QpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI4LDcgKzQyOCw3
IEBAIHN0cnVjdCBTVkdSb290SW5saW5lQm94UGFpbnRXYWxrZXIgewogCiAgICAgICAgIC8vIEZp
bmFsaXplIHRleHQgcmVuZGVyaW5nIAogICAgICAgICBpZiAoIWZsb3dCb3gtPmlzUm9vdElubGlu
ZUJveCgpKSB7Ci0gICAgICAgICAgICBmaW5pc2hSZW5kZXJTVkdDb250ZW50KG9iamVjdCwgbV9w
YWludEluZm8sIG1fYm91bmRpbmdCb3gsIG1fZmlsdGVyLCBtX3NhdmVkSW5mby5jb250ZXh0KTsK
KyAgICAgICAgICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0LCBtX3BhaW50SW5mbywg
bV9ib3VuZGluZ0JveCwgbV9maWx0ZXIsIG1fc2F2ZWRJbmZvLmNvbnRleHQsIGZpbHRlckJ1ZmZl
ci5nZXQoKSk7CiAgICAgICAgICAgICBtX2ZpbHRlciA9IDA7CiAgICAgICAgIH0KIApAQCAtNTYw
LDYgKzU2MCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fYm91bmRpbmdCb3g7CiAgICAg
U1ZHUmVzb3VyY2VGaWx0ZXIqIG1fZmlsdGVyOwogICAgIFNWR1Jlc291cmNlRmlsdGVyKiBtX3Jv
b3RGaWx0ZXI7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJCdWZmZXI7CiAKICAgICBT
VkdQYWludFNlcnZlciogbV9maWxsUGFpbnRTZXJ2ZXI7CiAgICAgU1ZHUGFpbnRTZXJ2ZXIqIG1f
c3Ryb2tlUGFpbnRTZXJ2ZXI7CkBAIC01NzMsNiArNTc0LDcgQEAgcHJpdmF0ZToKIAogdm9pZCBT
VkdSb290SW5saW5lQm94OjpwYWludChSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZv
LCBpbnQgdHgsIGludCB0eSkKIHsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckJ1ZmZl
cjsKICAgICBpZiAocGFpbnRJbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBwYWlu
dEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNTg0LDcgKzU4Niw3IEBAIHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2Jq
ZWMKIAogICAgIC8vIEluaXRpYWxpemUgdGV4dCByZW5kZXJpbmcKICAgICBwYWludEluZm8uY29u
dGV4dC0+Y29uY2F0Q1RNKG9iamVjdCgpLT5sb2NhbFRyYW5zZm9ybSgpKTsKLSAgICBwcmVwYXJl
VG9SZW5kZXJTVkdDb250ZW50KG9iamVjdCgpLCBwYWludEluZm8sIGJvdW5kaW5nQm94LCBmaWx0
ZXIpOworICAgIGZpbHRlckJ1ZmZlci5zZXQocHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudChvYmpl
Y3QoKSwgcGFpbnRJbmZvLCBib3VuZGluZ0JveCwgZmlsdGVyKSk7CiAgICAgcGFpbnRJbmZvLmNv
bnRleHQtPmNvbmNhdENUTShvYmplY3QoKS0+bG9jYWxUcmFuc2Zvcm0oKS5pbnZlcnNlKCkpOwog
IAogICAgIC8vIFJlbmRlciB0ZXh0LCBjaHVuay1ieS1jaHVuawpAQCAtNTk5LDcgKzYwMSw3IEBA
IHZvaWQgU1ZHUm9vdElubGluZUJveDo6cGFpbnQoUmVuZGVyT2JqZWMKICAgICB3YWxrVGV4dENo
dW5rcygmd2Fsa2VyKTsKIAogICAgIC8vIEZpbmFsaXplIHRleHQgcmVuZGVyaW5nIAotICAgIGZp
bmlzaFJlbmRlclNWR0NvbnRlbnQob2JqZWN0KCksIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZp
bHRlciwgc2F2ZWRJbmZvLmNvbnRleHQpOworICAgIGZpbmlzaFJlbmRlclNWR0NvbnRlbnQob2Jq
ZWN0KCksIHBhaW50SW5mbywgYm91bmRpbmdCb3gsIGZpbHRlciwgc2F2ZWRJbmZvLmNvbnRleHQs
IGZpbHRlckJ1ZmZlci5nZXQoKSk7CiAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnJlc3RvcmUoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9GaWx0ZXIuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgRmlsdGVyOjpGaWx0ZXIoRmlsdGVy
RWZmZWN0KiBlZmZlY3QpCiB9CiAKIFBhc3NSZWZQdHI8RmlsdGVyPiBGaWx0ZXI6OmNyZWF0ZShG
aWx0ZXJFZmZlY3QqIGVmZmVjdCkKLXsgCit7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWx0
ZXIoZWZmZWN0KSk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL0ZpbHRlci5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3Zn
L0ZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCwxMCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOiAgICAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RmlsdGVy
PiBjcmVhdGUoRmlsdGVyRWZmZWN0Kik7CiAgICAgICAgIAorICAgICAgICBGaWx0ZXJFZmZlY3Qq
IGVmZmVjdCgpIHsgcmV0dXJuIG1fZWZmZWN0LmdldCgpOyB9CisgICAgICAgIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIEZpbHRlcihGaWx0ZXJFZmZlY3QqIGVmZmVjdCk7CisgICAgICAgIEZpbHRl
cihGaWx0ZXJFZmZlY3QqKTsKICAgICAKICAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9l
ZmZlY3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDM1ODEyKQorKysg
V2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwyNyArMjQs
NDMgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUg
IkZpbHRlci5oIgorI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKIAogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewotICAgIAorCiAgICAgY2xhc3MgRmlsdGVyQnVpbGRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PEZpbHRlckJ1aWxkZXI+IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgYWRkKGNvbnN0IFN0
cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpIHsgbV9uYW1lZEVmZmVj
dHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0KTsgfQotICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVm
ZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QgeyByZXR1cm4gbV9uYW1lZEVmZmVjdHMu
Z2V0KGlkLmltcGwoKSkuZ2V0KCk7IH0KLSAgICAgICAgCi0gICAgICAgIFBhc3NSZWZQdHI8Rmls
dGVyPiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlcjsgfQotICAgICAgICAKKyAgICAg
ICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCkgeworICAgICAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0LmdldCgpOworCisgICAg
ICAgICAgICBpZighaWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fbmFtZWRFZmZlY3Rz
LnNldChpZC5pbXBsKCksIGVmZmVjdC5nZXQoKSk7IAorICAgICAgICB9CisKKyAgICAgICAgRmls
dGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgICAgICAg
ICAKKyAgICAgICAgICAgIGlmKGlkLmlzRW1wdHkoKSAmJiBtX2xhc3RFZmZlY3QpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsKKyAgICAgICAgICAgIGVsc2UgaWYo
aWQuaXNFbXB0eSgpICYmICFtX2xhc3RFZmZlY3QpCisgICAgICAgICAgICAgICAgLy9JZiBpZCBp
c24ndCBkZWNsYXJlZCBhbmQgbGFzdEVmZmVjdCBpcyBzdGlsbCBudWxsIHRoZW4gRmlsdGVyQnVp
bGRlciB3aWxsIHJldHVybgorICAgICAgICAgICAgICAgIC8vYSBTb3VyY2VHcmFwaGljIG9iamVj
dCBhcyBwZXIgdGhlIFNwZWMuCisgICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJjZUdyYXBoaWM6
OmNyZWF0ZSgpLmdldCgpOworCisgICAgICAgICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0
KGlkLmltcGwoKSkuZ2V0KCk7CisgICAgICAgIH0KKworICAgICAgICBQYXNzUmVmUHRyPEZpbHRl
cj4gZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gRmlsdGVyOjpjcmVhdGUobV9sYXN0RWZmZWN0Lmdl
dCgpKTsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gPiBtX25hbWVkRWZmZWN0czsKLSAgICAgICAgCisgICAgICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsKKwogICAgICAgICBSZWZQdHI8RmlsdGVy
PiBtX2ZpbHRlcjsKICAgICB9OwotICAgIAorCiB9IC8vbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
c3ZnL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyRWZm
ZWN0LmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCgpCisgICAgOiBtX3hCQm94TW9kZShmYWxzZSkK
KyAgICAsIG1feUJCb3hNb2RlKGZhbHNlKQorICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQor
ICAgICwgbV9oZWlnaHRCQm94TW9kZShmYWxzZSkKIHsKIH0KIApAQCAtMzcsNiArNDEsNDkgQEAg
VGV4dFN0cmVhbSYgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlcwogICAgIHJldHVybiB0czsK
IH0KIAorRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6cHJpbWl0aXZlQkJveEZvckZpbHRlckJCb3go
Y29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJCQm94LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94LCBi
b29sIGVmZmVjdEJvdW5kaW5nQm94TW9kZSwgYm9vbCBmaWx0ZXJCb3VuZGluZ0JveE1vZGUpCit7
CisgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbkJCb3ggPSBzdWJSZWdpb24oKTsKKyAgICBGbG9hdFJl
Y3QgdXNlQkJveCA9IGZpbHRlckJCb3g7CisKKyAgICBpZiAoZWZmZWN0Qm91bmRpbmdCb3hNb2Rl
KSB7CisgICAgICAgIGlmICghZmlsdGVyQm91bmRpbmdCb3hNb2RlKQorICAgICAgICAgICAgdXNl
QkJveCA9IGl0ZW1CQm94OworCisgICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0WChzdWJSZWdpb25C
Qm94LngoKSAqIHVzZUJCb3gud2lkdGgoKSk7CisgICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0WShz
dWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgICAgICBzdWJSZWdpb25C
Qm94Lm1vdmUodXNlQkJveC54KCksIHVzZUJCb3gueSgpKTsKKyAgICAgICAgc3ViUmVnaW9uQkJv
eC5zZXRXaWR0aChzdWJSZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRoKCkpOworICAg
ICAgICBzdWJSZWdpb25CQm94LnNldEhlaWdodChzdWJSZWdpb25CQm94LmhlaWdodCgpICogdXNl
QkJveC5oZWlnaHQoKSk7ICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoeEJvdW5k
aW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5zZXRYKHVzZUJCb3gueCgp
ICsgc3ViUmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRoKCkpOworCisgICAgICAgIGlmICh5
Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFkodXNlQkJv
eC55KCkgKyBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAg
IGlmICh3aWR0aEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5z
ZXRXaWR0aChzdWJSZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRoKCkpOworCisgICAg
ICAgIGlmIChoZWlnaHRCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIHN1YlJlZ2lvbkJC
b3guc2V0SGVpZ2h0KHN1YlJlZ2lvbkJCb3guaGVpZ2h0KCkgKiB1c2VCQm94LmhlaWdodCgpKTsK
KyAgICB9CisKKyAgICBzZXRTdWJSZWdpb24oc3ViUmVnaW9uQkJveCk7CisKKyAgICByZXR1cm4g
c3ViUmVnaW9uQkJveDsKK30KKworRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6c3ViUmVnaW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9zdWJSZWdpb247Cit9CisKK3ZvaWQgRmlsdGVyRWZmZWN0
OjpzZXRTdWJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBzdWJSZWdpb24pCit7CisgICAgbV9zdWJS
ZWdpb24gPSBzdWJSZWdpb247Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3Zn
L0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5o
CShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw2ICsyMSw4IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzIsMTMgKzM0LDM5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0
ZXJFZmZlY3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgp
OwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCkgPSAwOworCisgICAgICAg
IGJvb2wgeEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1feEJCb3hNb2RlOyB9Cisg
ICAgICAgIHZvaWQgc2V0WEJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feEJCb3hN
b2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIHlCb3VuZGluZ0JveE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3lCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldFlCb3VuZGluZ0JveE1v
ZGUoYm9vbCBiYm94TW9kZSkgeyBtX3lCQm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAgICAg
Ym9vbCB3aWR0aEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhCQm94TW9k
ZTsgfQorICAgICAgICB2b2lkIHNldFdpZHRoQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1vZGUp
IHsgbV93aWR0aEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIGhlaWdodEJv
dW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0QkJveE1vZGU7IH0KKyAgICAg
ICAgdm9pZCBzZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX2hlaWdo
dEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBGbG9hdFJlY3QgcHJpbWl0aXZlQkJv
eEZvckZpbHRlckJCb3goY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJCQm94LCBjb25zdCBGbG9hdFJl
Y3QmIGl0ZW1CQm94LCBib29sLCBib29sKTsKKworICAgICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9u
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U3ViUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBGaWx0ZXJFZmZlY3QoKTsKKworICAgIHByaXZhdGU6CisKKyAg
ICAgICAgYm9vbCBtX3hCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV95QkJveE1vZGUgOiAx
OworICAgICAgICBib29sIG1fd2lkdGhCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9oZWln
aHRCQm94TW9kZSA6IDE7CisKKyAgICAgICAgRmxvYXRSZWN0IG1fc3ViUmVnaW9uOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVC
bGVuZEVsZW1lbnQ6OmZpbHQKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUJsZW5kRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVCbGVuZEVsZW1l
bnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjIoKSk7CkBAIC03OCw3ICs3OCw5IEBAIGJvb2wgU1ZHRkVCbGVuZEVsZW1l
bnQ6OmJ1aWxkKEZpbHRlckJ1aWwKICAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVCbGVuZDo6Y3Jl
YXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxCbGVuZE1vZGVUeXBlPiAobW9kZSgpKSkp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQmxlbmQ6OmNyZWF0ZShpbnB1
dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4gKG1vZGUoKSkpOworICAgIHNl
dFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBi
dWlsZGVyLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDM1ODEyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyAr
MzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0
ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAg
ICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxk
KEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBT
VkdOYW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5n
LCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw3IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZH
RkVDb2xvck1hdHJpeEVsZW1lbnQKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUNvbG9y
TWF0cml4RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCkBAIC04Niw3ICs4Niw5IEBAIGJvb2wg
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKEZpbHQKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDtpIDwgbnI7aSsrKQogICAgICAgICBfdmFsdWVzLmFwcGVuZChudW1iZXJzLT5nZXRJ
dGVtKGksIGVjKSk7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFQ29sb3JNYXRyaXg6
OmNyZWF0ZShpbnB1dDEsIHN0YXRpY19jYXN0PENvbG9yTWF0cml4VHlwZT4gKHR5cGUoKSksIF92
YWx1ZXMpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4
OjpjcmVhdGUoaW5wdXQxLCBzdGF0aWNfY2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBf
dmFsdWVzKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVj
dC5nZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFw
cGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJF
ZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0
ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKiwg
U1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZl
Q29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4x
LCBpbjEpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBTVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJv
b2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1
aWxkZXIpCitib29sIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChGaWx0ZXJC
dWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
ICAgICAKQEAgLTg1LDcgKzg1LDkgQEAgYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6YnVpbAogICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNfY2FzdDxTVkdGRUZ1bmNBRWxlbWVu
dCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQogICAgIAotICAgIGJ1aWxkZXItPmFk
ZChyZXN1bHQoKSwgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3JlYXRlKGlucHV0MSwgcmVkLCBncmVl
biwgYmx1ZSwgYWxwaGEpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNv
bXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5wdXQxLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7
CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkp
OworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmgJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVj
dCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wg
YnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQsIFNWR05hbWVzOjpmZUNvbXBvbmVudFRyYW5zZmVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5B
dHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OgogICAgIHJldHVybiAwOwogfQogCi1ib29s
IFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jv
b2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBT
VkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBp
bnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwpAQCAtOTQsOSArOTQsMTAg
QEAgYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlcgogICAgIGlmKCFpbnB1
dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShpbnB1dDEsIGlu
cHV0Miwgc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4gKF9vcGVyYXRvcigpKSwK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGlu
cHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRpb25UeXBlPiAoX29wZXJh
dG9yKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsxKCksIGsy
KCksIGszKCksIGs0KCkpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3Qu
cmVsZWFzZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVm
ZmVjdC5nZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgp
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRy
aWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChT
VkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxk
ZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNv
dXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRl
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lv
biAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZQogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdS
ZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKQEAgLTkxLDkgKzkxLDEw
IEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCgKICAgICBwYXJlbnRT
dHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUt
PmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAgIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEs
IGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIAorICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBj
b2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVs
VW5pdExlbmd0aFkoKSwgZmluZExpZ2h0cygpKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCks
IGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZm
ZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0
dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29u
c3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFs
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcs
IFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDM1ODEyKQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzksNyArNzksNyBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIsIFNWR1Jlc291cmNlRmls
dGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVp
bGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CkBAIC04OCw5ICs4OCwxMCBAQCBib29sIFNWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgCiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURp
c3BsYWNlbWVudE1hcDo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDaGFubmVs
U2VsZWN0b3JUeXBlPiAoeENoYW5uZWxTZWxlY3RvcigpKSwgCisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwg
c3RhdGljX2Nhc3Q8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gKHhDaGFubmVsU2VsZWN0b3IoKSksIAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENoYW5u
ZWxTZWxlY3RvclR5cGU+ICh5Q2hhbm5lbFNlbGVjdG9yKCkpLCBzY2FsZSgpKTsKLSAgICBidWls
ZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXIt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2
aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJC
dWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKiwgU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFU
RURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZH
TmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5n
LCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2
aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUZsb29kRWxl
bWVudDo6ZmlsdAogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFRmxvb2RFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291
cmNlKQogewogICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IHRoaXMtPnN0eWxlRm9yUmVu
ZGVyZXIocGFyZW50KCktPnJlbmRlcmVyKCkpOwogICAgIFJlbmRlclN0eWxlKiBmaWx0ZXJTdHls
ZSA9IHRoaXMtPnJlc29sdmVTdHlsZShwYXJlbnRTdHlsZSk7CkBAIC02NCw4ICs2NCwxMCBAQCBi
b29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsCiAKICAgICBwYXJlbnRTdHls
ZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7CiAgICAgZmlsdGVyU3R5bGUtPmRl
cmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwotCi0gICAgYnVpbGRlci0+YWRkKHJlc3Vs
dCgpLCBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpKTsKKyAgICAKKyAgICBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOwor
ICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsK
KyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOyAgICAKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNp
b24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0
dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUZsb29kPiBtX2ZpbHRlckVmZmVj
dDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNp
b24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MiwxNCArNzIsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbgogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBi
dWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVHYXVzc2lhbkJs
dXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKSk7Cisg
ICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShp
bnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKTsKKyAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDM1ODEy
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAg
dmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciop
IGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmly
dHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnU3RyaW5nLCBT
VkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
SW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEyICs5MywxNCBAQCBTVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJv
b2wgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCitib29s
IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgaWYoIW1fY2FjaGVkSW1hZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVJbWFn
ZTo6Y3JlYXRlKG1fY2FjaGVkSW1hZ2UpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRUltYWdlOjpjcmVhdGUobV9jYWNoZWRJbWFnZSk7CisgICAgc2V0U3RhbmRhcmRBdHRy
aWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChy
ZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGdldFN1YnJlc291cmNlQXR0cmli
dXRlU3RyaW5ncyhWZWN0b3I8U3RyaW5nPiYpIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZp
bHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIq
LCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyAr
NDYsNyBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0CiAgICAgcmV0
dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIq
IGJ1aWxkZXIpCitib29sIFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBi
dWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9y
PEZpbHRlckVmZmVjdCo+IG1lcmdlSW5wdXRzOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewpAQCAtNTksNyArNTksOSBAQCBi
b29sIFNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsCiAgICAgaWYobWVyZ2VJbnB1
dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQo
cmVzdWx0KCksIEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cykpOworICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6OmNyZWF0ZShtZXJnZUlucHV0cyk7CisgICAgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1
aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVNZXJnZUVs
ZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0
KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVp
bGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jl
c291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RU1lcmdlPiBtX2ZpbHRlckVmZmVjdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNw
cAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MiwxNCArNjIsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdG
RU9mZnNldEVsZW1lbnQ6OmZpbAogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFT2Zmc2V0
RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVPZmZzZXRF
bGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyLCBTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5n
ZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVPZmZzZXQ6OmNyZWF0ZShpbnB1
dDEsIGR4KCksIGR5KCkpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRU9m
ZnNldDo6Y3JlYXRlKGlucHV0MSwgZHgoKSwgZHkoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1
bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBm
aWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWls
ZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChGaWx0ZXJCdWls
ZGVyKiwgU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpm
ZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGlu
MSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5Miw3IEBAIExpZ2h0U291cmNlKiBT
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW4KICAgICByZXR1cm4gbGlnaHQ7CiB9CiAKLWJvb2wg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRl
cikKK2Jvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRl
ciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAg
CkBAIC0xMDcsOSArMTA3LDEwIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
YnVpbGQKICAgICBwYXJlbnRTdHlsZS0+ZGVyZWYoZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSk7
CiAgICAgZmlsdGVyU3R5bGUtPmRlcmVmKGRvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpOwogICAg
IAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3Rh
bnQoKSwgCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0
aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3Rh
bnQoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXJF
eHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBmaW5k
TGlnaHRzKCkpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFz
ZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5n
ZXQoKSk7CisgICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQo
RmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHTmFtZXM6
OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNCArNTcsMTYgQEAgU1ZHRmlsdGVyRWZmZWN0KiBT
VkdGRVRpbGVFbGVtZW50OjpmaWx0ZQogICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVUaWxl
RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVUaWxlRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlciwgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlclJlc291cmNlKQogewogICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFVGlsZTo6Y3JlYXRlKGlucHV0MSkp
OworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGlucHV0
MSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0
KCkpOworICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lv
biAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2
aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikg
Y29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0
dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVU
aWxlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVGlsZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0
cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MiwxMSArODIsMTIgQEAgU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OgogICAgIHJldHVybiAwOwogfQogCi1ib29s
IFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCiti
b29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIs
IFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFR1
cmJ1bGFuY2VUeXBlPiAodHlwZSgpKSwgYmFzZUZyZXF1ZW5jeVgoKSwgCisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8VHVy
YnVsYW5jZVR5cGU+ICh0eXBlKCkpLCBiYXNlRnJlcXVlbmN5WCgpLCAKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRnJlcXVlbmN5WSgpLCBudW1PY3RhdmVzKCks
IHNlZWQoKSwgc3RpdGNoVGlsZXMoKSA9PSBTVkdfU1RJVENIVFlQRV9TVElUQ0gpOwotICAgIGJ1
aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICBzZXRTdGFu
ZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgYnVpbGRl
ci0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwog
fQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmly
dHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNv
bnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqLCBTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR0Jhc2VG
cmVxdWVuY3lYSWRlbnRpZmllciwgZmxvYXQsIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5
WCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTEg
KzEwMiwxMyBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAg
aWYgKCFhdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghbV9maWx0ZXIp
Ci0gICAgICAgIG1fZmlsdGVyID0gbmV3IFNWR1Jlc291cmNlRmlsdGVyKCk7CisgICAgaWYgKCFt
X3Jlc291cmNlRmlsdGVyKQorICAgICAgICBtX3Jlc291cmNlRmlsdGVyID0gU1ZHUmVzb3VyY2VG
aWx0ZXI6OmNyZWF0ZSgpOworCisgICAgRmlsdGVyQnVpbGRlciBidWlsZGVyOwogCiAgICAgYm9v
bCBmaWx0ZXJCQm94TW9kZSA9IGZpbHRlclVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5J
VF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwotICAgIG1fZmlsdGVyLT5zZXRGaWx0ZXJCb3VuZGlu
Z0JveE1vZGUoZmlsdGVyQkJveE1vZGUpOworICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEZpbHRl
ckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9kZSk7CiAKICAgICBmbG9hdCBfeCwgX3ksIF93
aWR0aCwgX2hlaWdodDsKIApAQCAtMTE2LDM3ICsxMTgsMzYgQEAgU1ZHUmVzb3VyY2UqIFNWR0Zp
bHRlckVsZW1lbnQ6OmNhbnZhc1JlcwogICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQ
ZXJjZW50YWdlKCk7CiAgICAgICAgIF9oZWlnaHQgPSBoZWlnaHQoKS52YWx1ZUFzUGVyY2VudGFn
ZSgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fZmlsdGVyLT5zZXRYQm91bmRpbmdCb3hNb2Rl
KHgoKS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKTsKLSAgICAgICAgbV9maWx0
ZXItPnNldFlCb3VuZGluZ0JveE1vZGUoeSgpLnVuaXRUeXBlKCkgPT0gTGVuZ3RoVHlwZVBlcmNl
bnRhZ2UpOworICAgICAgICBtX3Jlc291cmNlRmlsdGVyLT5zZXRYQm91bmRpbmdCb3hNb2RlKHgo
KS51bml0VHlwZSgpID09IExlbmd0aFR5cGVQZXJjZW50YWdlKTsKKyAgICAgICAgbV9yZXNvdXJj
ZUZpbHRlci0+c2V0WUJvdW5kaW5nQm94TW9kZSh5KCkudW5pdFR5cGUoKSA9PSBMZW5ndGhUeXBl
UGVyY2VudGFnZSk7CiAKICAgICAgICAgX3ggPSB4KCkudmFsdWUodGhpcyk7CiAgICAgICAgIF95
ID0geSgpLnZhbHVlKHRoaXMpOwogICAgICAgICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlKHRoaXMp
OwotICAgICAgICBfaGVpZ2h0ID0gaGVpZ2h0KCkudmFsdWUodGhpcyk7CisgICAgICAgIF9oZWln
aHQgPSBoZWlnaHQoKS52YWx1ZSh0aGlzKTsgICAgICAgIAogICAgIH0gCiAKLSAgICBtX2ZpbHRl
ci0+c2V0RmlsdGVyUmVjdChGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsKKyAg
ICBtX3Jlc291cmNlRmlsdGVyLT5zZXRGaWx0ZXJSZWN0KEZsb2F0UmVjdChfeCwgX3ksIF93aWR0
aCwgX2hlaWdodCkpOwogCiAgICAgYm9vbCBwcmltaXRpdmVCQm94TW9kZSA9IHByaW1pdGl2ZVVu
aXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwot
ICAgIG1fZmlsdGVyLT5zZXRFZmZlY3RCb3VuZGluZ0JveE1vZGUocHJpbWl0aXZlQkJveE1vZGUp
OworICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShwcmltaXRp
dmVCQm94TW9kZSk7CiAKICAgICAvLyBUT0RPIDogdXNlIHN3aXRjaC9jYXNlIGluc3RlYWQ/Ci0g
ICAgbV9maWx0ZXItPmNsZWFyRWZmZWN0cygpOworICAgIG1fcmVzb3VyY2VGaWx0ZXItPmNsZWFy
RWZmZWN0cygpOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbiAhPSAwOyBuID0g
bi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gMDsKLSAg
ICAgICAgaWYgKG4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50
KCkpIHsKICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4obik7
Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRmlsdGVyRWZmZWN0KCkpIHsKLSAg
ICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyQXR0
cmlidXRlcyA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyo+KGVsZW1lbnQpOwotICAgICAgICAgICAgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3Qg
PSBmaWx0ZXJBdHRyaWJ1dGVzLT5maWx0ZXJFZmZlY3QobV9maWx0ZXIuZ2V0KCkpOwotICAgICAg
ICAgICAgaWYgKCFmaWx0ZXJFZmZlY3QpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBpZiAoZWxlbWVudC0+aXNGaWx0ZXJFZmZlY3QoKSkgeworICAgICAgICAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZWZmZWN0RWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyo+KGVsZW1lbnQp
OwogCi0gICAgICAgICAgICBtX2ZpbHRlci0+YWRkRmlsdGVyRWZmZWN0KGZpbHRlckVmZmVjdCk7
CisgICAgICAgICAgICAgICAgZWZmZWN0RWxlbWVudC0+YnVpbGQoJmJ1aWxkZXIsIG1fcmVzb3Vy
Y2VGaWx0ZXIuZ2V0KCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAg
cmV0dXJuIG1fZmlsdGVyLmdldCgpOworICAgIG1fcmVzb3VyY2VGaWx0ZXItPnNldEZpbHRlcihi
dWlsZGVyLmZpbHRlcigpKTsKKyAgICByZXR1cm4gbV9yZXNvdXJjZUZpbHRlci5nZXQoKTsKIH0K
IAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclRhZ1N0cmluZywgU1ZHRmls
dGVyUmVzWElkZW50aWZpZXIsIGxvbmcsIEZpbHRlclJlc1gsIGZpbHRlclJlc1gpCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1l
czo6ZmlsdGVyVGFnU3RyaW5nLCBTVkdGaWx0ZXJSZXNZSWRlbnRpZmllciwgbG9uZywgRmlsdGVy
UmVzWSwgZmlsdGVyUmVzWSkKIAotICAgICAgICBSZWZQdHI8U1ZHUmVzb3VyY2VGaWx0ZXI+IG1f
ZmlsdGVyOworICAgICAgICBSZWZQdHI8U1ZHUmVzb3VyY2VGaWx0ZXI+IG1fcmVzb3VyY2VGaWx0
ZXI7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZp
c2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKIAogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKQEAgLTY5LDE3
ICs3MCwxOSBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAg
ICAgIHJldHVybiBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KIAotdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5k
YXJkQXR0cmlidXRlcyhTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29uc3QKK3ZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlRmlsdGVyLCBGaWx0ZXJFZmZlY3QqIGZpbHRl
ckVmZmVjdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZp
bHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGZpbHRlckVmZmVjdC0+
ZmlsdGVyKCkpOworICAgIEFTU0VSVChyZXNvdXJjZUZpbHRlcik7CiAKICAgICBmbG9hdCBfeCwg
X3ksIF93aWR0aCwgX2hlaWdodDsKKyAgICAKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IHJl
c291cmNlRmlsdGVyLT5maWx0ZXJSZWN0KCk7IAogCi0gICAgaWYgKGZpbHRlckVmZmVjdC0+Zmls
dGVyKCktPmVmZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7CisgICAgaWYgKHJlc291cmNlRmlsdGVy
LT5lZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICBfeCA9IHgoKS52YWx1ZUFzUGVy
Y2VudGFnZSgpOwogICAgICAgICBfeSA9IHkoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwogICAgICAg
ICBfd2lkdGggPSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CkBAIC0xMjAsNyArMTIzLDYg
QEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIH0KIAogICAg
IGZpbHRlckVmZmVjdC0+c2V0U3ViUmVnaW9uKEZsb2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hl
aWdodCkpOwotICAgIGZpbHRlckVmZmVjdC0+c2V0UmVzdWx0KHJlc3VsdCgpKTsKIH0KIAogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmgJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywxMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVm
ZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3QgPSAwOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciosIFNWR1Jlc291cmNlRmlsdGVyKikg
PSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxl
KikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdm9pZCBzZXRT
dGFuZGFyZEF0dHJpYnV0ZXMoU1ZHUmVzb3VyY2VGaWx0ZXIqLCBGaWx0ZXJFZmZlY3QqKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRoaXM7IH0KLSAgICAgICAgdm9pZCBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
U1ZHRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyLCBTVkdO
YW1lczo6eEF0dHJTdHJpbmcsIFNWR0xlbmd0aCwgWCwgeCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgogCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgpA
QCAtMzgsNiArMzksMTEgQEAgU1ZHUmVzb3VyY2VGaWx0ZXI6OlNWR1Jlc291cmNlRmlsdGVyKCkK
IHsKIH0KIAorUGFzc1JlZlB0cjxTVkdSZXNvdXJjZUZpbHRlcj4gU1ZHUmVzb3VyY2VGaWx0ZXI6
OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdSZXNvdXJjZUZpbHRlcigp
KTsKK30KKwogdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6Y2xlYXJFZmZlY3RzKCkKIHsKICAgICBt
X2VmZmVjdHMuY2xlYXIoKTsKQEAgLTU5LDYgKzY1LDggQEAgRmxvYXRSZWN0IFNWR1Jlc291cmNl
RmlsdGVyOjpmaWx0ZXJCQm94RgogCiAgICAgZmxvYXQgeE9mZnNldCA9IDAuMGY7CiAgICAgZmxv
YXQgeU9mZnNldCA9IDAuMGY7CisgICAgZmxvYXQgc2NhbGVYID0gaXRlbUJCb3gud2lkdGgoKTsK
KyAgICBmbG9hdCBzY2FsZVkgPSBpdGVtQkJveC5oZWlnaHQoKTsKIAogICAgIGlmICghZWZmZWN0
Qm91bmRpbmdCb3hNb2RlKCkpIHsKICAgICAgICAgeE9mZnNldCA9IGl0ZW1CQm94LngoKTsKQEAg
LTY2LDEwICs3NCwxMSBAQCBGbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hG
CiAgICAgfQogCiAgICAgaWYgKGZpbHRlckJvdW5kaW5nQm94TW9kZSgpKSB7Ci0gICAgICAgIGZp
bHRlckJCb3ggPSBGbG9hdFJlY3QoeE9mZnNldCArIGZpbHRlckJCb3gueCgpICogaXRlbUJCb3gu
d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5T2Zmc2V0ICsgZmlsdGVy
QkJveC55KCkgKiBpdGVtQkJveC5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJCQm94LndpZHRoKCkgKiBpdGVtQkJveC53aWR0aCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3guaGVpZ2h0KCkgKiBpdGVtQkJveC5oZWlnaHQo
KSk7CisgICAgICAgIGZpbHRlckJCb3guc2V0WChmaWx0ZXJCQm94LngoKSAqIHNjYWxlWCk7Cisg
ICAgICAgIGZpbHRlckJCb3guc2V0WShmaWx0ZXJCQm94LnkoKSAqIHNjYWxlWSk7CisgICAgICAg
IGZpbHRlckJCb3gubW92ZSh4T2Zmc2V0LCB5T2Zmc2V0KTsKKyAgICAgICAgZmlsdGVyQkJveC5z
ZXRXaWR0aChmaWx0ZXJCQm94LndpZHRoKCkgKiBzY2FsZVgpOworICAgICAgICBmaWx0ZXJCQm94
LnNldEhlaWdodChmaWx0ZXJCQm94LmhlaWdodCgpICogc2NhbGVZKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBpZiAoeEJvdW5kaW5nQm94TW9kZSgpKQogICAgICAgICAgICAgZmlsdGVyQkJveC5z
ZXRYKHhPZmZzZXQgKyBmaWx0ZXJCQm94LngoKSk7CkBAIC0xMDgsNiArMTE3LDQxIEBAIFRleHRT
dHJlYW0mIFNWR1Jlc291cmNlRmlsdGVyOjpleHRlcm5hbFIKICAgICByZXR1cm4gdHM7CiB9CiAK
K3N0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlKEdy
YXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCkKK3sKKyAgICBz
dGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBtX2ZpbHRlckJ1ZmZlcjsKKyAgIAorICAgIEZsb2F0
UmVjdCBmaWx0ZXJSZWN0ID0gZmlsdGVyQkJveEZvckl0ZW1CQm94KGJib3gpOworICAgICAKKyAg
ICBpZiAoYmJveC5pc0VtcHR5KCkgJiYgZmlsdGVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPigwKTsKKyAgICAKKyAgICBmbG9hdCB3aWR0
aCA9IGZpbHRlclJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBoZWlnaHQgPSBmaWx0ZXJSZWN0Lmhl
aWdodCgpOworICAgIAorICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUod2lkdGgsIGhl
aWdodCk7CisgICAgCisgICAgbV9maWx0ZXJCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlclNpemUsIGZhbHNlKTsKKyAgICBjb250ZXh0ID0gbV9maWx0ZXJCdWZmZXItPmNvbnRleHQo
KTsKKyAgICBjb250ZXh0LT5zYXZlKCk7CisgICAgY29udGV4dC0+dHJhbnNsYXRlKC1maWx0ZXJS
ZWN0LngoKSwgLWZpbHRlclJlY3QueSgpKTsKKyAgICAKKyAgICByZXR1cm4gbV9maWx0ZXJCdWZm
ZXI7Cit9CisKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCom
IGNvbnRleHQsIEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIsIGNvbnN0IEZsb2F0UmVjdCYgYmJv
eCkKK3sKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChi
Ym94KTsKKyAgICAKKyAgICBpZiAoYmJveC5pc0VtcHR5KCkgJiYgZmlsdGVyUmVjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgRmxvYXRSZWN0IHRlc3QgPSBmaWx0
ZXIoKS0+ZWZmZWN0KCktPnByaW1pdGl2ZUJCb3hGb3JGaWx0ZXJCQm94KGZpbHRlclJlY3QsIGJi
b3gsIGVmZmVjdEJvdW5kaW5nQm94TW9kZSgpLCBmaWx0ZXJCb3VuZGluZ0JveE1vZGUoKSk7Cisg
ICAgZmlsdGVyKCktPmVmZmVjdCgpLT5hcHBseShmaWx0ZXJCdWZmZXIpOworICAgIGNvbnRleHQt
PnRyYW5zbGF0ZShmaWx0ZXJSZWN0LngoKSwgZmlsdGVyUmVjdC55KCkpOworICAgIGNvbnRleHQt
PmRyYXdJbWFnZShmaWx0ZXJCdWZmZXItPmltYWdlKCksIEZsb2F0UmVjdChmaWx0ZXJCdWZmZXIt
PmltYWdlKCktPnJlY3QoKSkpOworfQorCiBTVkdSZXNvdXJjZUZpbHRlciogZ2V0RmlsdGVyQnlJ
ZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQpCiB7CiAgICAgU1ZH
UmVzb3VyY2UqIHJlc291cmNlID0gZ2V0UmVzb3VyY2VCeUlkKGRvY3VtZW50LCBpZCk7CkBAIC0x
MTcsNyArMTYxLDYgQEAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGdldEZpbHRlckJ5SWQoRG9jdW1lbgog
ICAgIHJldHVybiAwOwogfQogCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVy
LmgJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VG
aWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEyIEBACiAjZGVmaW5lIFNWR1Jl
c291cmNlRmlsdGVyX2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
KyNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlckVmZmVjdC5oIgogCi0jaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0KICNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQzLDcgQEAgcHVi
bGljOgogCiBjbGFzcyBTVkdSZXNvdXJjZUZpbHRlciA6IHB1YmxpYyBTVkdSZXNvdXJjZSB7CiBw
dWJsaWM6Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIoKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdSZXNvdXJjZUZpbHRlcj4gY3JlYXRlKCk7CiAgICAgCiAgICAgdmlydHVhbCBTVkdSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gRmlsdGVyUmVzb3VyY2VUeXBlOyB9
CiAKQEAgLTY3LDE1ICs2OCwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3Qo
U1ZHRmlsdGVyRWZmZWN0Kik7CiAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VC
dWZmZXI+IHByZXBhcmUoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAg
IHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0KiYsIEltYWdlQnVmZmVyKiwgY29uc3QgRmxvYXRS
ZWN0JiBiYm94KTsKIAogICAgIC8vIFRvIGJlIGltcGxlbWVudGVkIGluIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCiAgICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25z
dCBGbG9hdFJlY3QmIGJib3gpOwogICAgIHZvaWQgYXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0
KiYsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCk7CiAgICAgCisgICAgRmlsdGVyKiBmaWx0ZXIoKSB7
IHJldHVybiBtX2ZpbHRlci5nZXQoKTsgfQorICAgIHZvaWQgc2V0RmlsdGVyKFBhc3NSZWZQdHI8
RmlsdGVyPiBmaWx0ZXIpIHsgbV9maWx0ZXIgPSBmaWx0ZXI7IH0KKyAgICAKICAgICBTVkdSZXNv
dXJjZUZpbHRlclBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhKCkgeyByZXR1cm4gbV9wbGF0Zm9y
bURhdGEuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8U1ZHRmlsdGVyRWZmZWN0Kj4mIGVmZmVj
dHMoKSB7IHJldHVybiBtX2VmZmVjdHM7IH0KICAgICAKIHByaXZhdGU6CisgICAgU1ZHUmVzb3Vy
Y2VGaWx0ZXIoKTsKICAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSogY3JlYXRlUGxh
dGZvcm1EYXRhKCk7CiAgICAgCiAgICAgT3duUHRyPFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1E
YXRhPiBtX3BsYXRmb3JtRGF0YTsKQEAgLTg3LDYgKzk0LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1feUJCb3hNb2RlIDogMTsKIAogICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlY3Q7CisgICAgUmVm
UHRyPEZpbHRlcj4gbV9maWx0ZXI7CiAgICAgVmVjdG9yPFNWR0ZpbHRlckVmZmVjdCo+IG1fZWZm
ZWN0czsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzMsNyArMTMzLDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFs
cGhhKAogICAgIG1fcHJlc2VydmVBbHBoYSA9IHByZXNlcnZlQWxwaGE7IAogfQogCi12b2lkIEZF
Q29udm9sdmVNYXRyaXg6OmFwcGx5KCkKK3ZvaWQgRkVDb252b2x2ZU1hdHJpeDo6YXBwbHkoSW1h
Z2VCdWZmZXIqIGZpbHRlckJ1ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHJldmlzaW9uIDM1ODEy
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmVzZXJ2
ZUFscGhhKGJvb2wpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1
bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCShyZXZpc2lvbiAzNTgxMikKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0
TGlnaHRTb3VyY2UoTAogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAotdm9p
ZCBGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkoKQordm9pZCBGRURpZmZ1c2VMaWdodGluZzo6YXBw
bHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkocmV2aXNp
b24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwogCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNl
bWVudE1hcC5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIG1fc2Nh
bGUgPSBzY2FsZTsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6YXBwbHkoKQordm9pZCBG
RURpc3BsYWNlbWVudE1hcDo6YXBwbHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1ZmZlcikKIHsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1h
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDcgKzUw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0Lmgi
CiAKQEAgLTU5LDggKzYwLDEyIEBAIHZvaWQgRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0
IGZsb28KICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3BhY2l0eTsKIH0KIAotdm9pZCBGRUZs
b29kOjphcHBseSgpCit2b2lkIEZFRmxvb2Q6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZm
ZXIpCiB7CisgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gZmlsdGVyQnVmZmVyLT5jb250
ZXh0KCk7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gZmlsdGVyQnVmZmVyLT5zaXplKCk7Cisg
ICAgY29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBidWZmZXJTaXplLndpZHRoKCkr
c3ViUmVnaW9uKCkueCgpLCAgYnVmZmVyU2l6ZS5oZWlnaHQoKStzdWJSZWdpb24oKS55KCkpKTsK
KyAgICBjb250ZXh0LT5maWxsUmVjdChzdWJSZWdpb24oKSwgZmxvb2RDb2xvcigpKTsKIH0KIAog
dm9pZCBGRUZsb29kOjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEltYWdlQnVmZmVyKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24g
MzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCB2b2lkIEZFR2F1c3NpYW5CbHVy
OjpzZXRTdGREZXZpYXRpb25ZKGZsCiAgICAgbV95ID0geTsKIH0KIAotdm9pZCBGRUdhdXNzaWFu
Qmx1cjo6YXBwbHkoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoSW1hZ2VCdWZmZXIqIGZp
bHRlckJ1ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdGREZXZp
YXRpb25ZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShJbWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsK
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShy
ZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgogI2luY2x1ZGUg
IlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMSw2ICszMiw3IEBAIEZFSW1hZ2U6OkZFSW1hZ2Uo
Q2FjaGVkSW1hZ2UqIGNhY2hlZEltYWcKICAgICA6IEZpbHRlckVmZmVjdCgpCiAgICAgLCBtX2Nh
Y2hlZEltYWdlKGNhY2hlZEltYWdlKQogeworICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0
aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoQ2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWdlKQpAQCAtNjMsOCArNjUsOSBAQCB2b2lkIEZFSW1hZ2U6OnNldENhY2hl
ZEltYWdlKENhY2hlZEltYWdlCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlz
KTsKIH0KIAotdm9pZCBGRUltYWdlOjphcHBseSgpCit2b2lkIEZFSW1hZ2U6OmFwcGx5KEltYWdl
QnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7CisgICAgZmlsdGVyQnVmZmVyLT5jb250ZXh0KCktPmRy
YXdJbWFnZShjYWNoZWRJbWFnZSgpLT5pbWFnZSgpLCBzdWJSZWdpb24oKSwgRmxvYXRSZWN0KDAs
IDAsIC0xLCAtMSksIENvbXBvc2l0ZUNvcHksIGZhbHNlKTsKIH0KIAogdm9pZCBGRUltYWdlOjpk
dW1wKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShy
ZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIApJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiAz
NTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgdm9pZCBGRU1lcmdlOjpzZXRNZXJnZUlucHV0
cyhjb25zdCBWZWN0bwogICAgIG1fbWVyZ2VJbnB1dHMgPSBtZXJnZUlucHV0czsKIH0KIAotdm9p
ZCBGRU1lcmdlOjphcHBseSgpCit2b2lkIEZFTWVyZ2U6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0
ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNZXJnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNZXJnZS5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVNZXJnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlu
cHV0cygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxG
aWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2
b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24g
MzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnNl
dFJhZGl1c1koZmxvYXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7CiB9CiAKLXZvaWQg
RkVNb3JwaG9sb2d5OjphcHBseSgpCit2b2lkIEZFTW9ycGhvbG9neTo6YXBwbHkoSW1hZ2VCdWZm
ZXIqIGZpbHRlckJ1ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1vcnBob2xvZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDcgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCByYWRpdXNZ
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UmFkaXVzWShmbG9hdCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZl
ciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJldmlzaW9uIDM1
ODEyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVPZmZzZXQuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNjAsOCArNjEsOSBAQCB2b2lkIEZFT2Zmc2V0OjpzZXREeShmbG9h
dCBkeSkKICAgICBtX2R5ID0gZHk7CiB9CiAKLXZvaWQgRkVPZmZzZXQ6OmFwcGx5KCkKK3ZvaWQg
RkVPZmZzZXQ6OmFwcGx5KEltYWdlQnVmZmVyKiBmaWx0ZXJCdWZmZXIpCiB7CisgICAgZmlsdGVy
QnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZShkeCgpLCBkeSgpKTsKIH0KIAogdm9pZCBGRU9m
ZnNldDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zm
c2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9m
ZnNldC5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVPZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0RHko
ZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoSW1hZ2VCdWZmZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsK
ICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJldmlzaW9uIDM1ODEyKQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExp
Z2h0U291cmNlKAogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAotdm9pZCBG
RVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjphcHBs
eShJbWFnZUJ1ZmZlciogZmlsdGVyQnVmZmVyKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJldmlz
aW9uIDM1ODEyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZl
ciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkocmV2aXNpb24gMzU4MTIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM2LDcgKzM2LDcgQEAgUGFzc1JlZlB0cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRl
KEZpbHRlcgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKGluKSk7CiB9CiAKLXZvaWQg
RkVUaWxlOjphcHBseSgpCit2b2lkIEZFVGlsZTo6YXBwbHkoSW1hZ2VCdWZmZXIqIGZpbHRlckJ1
ZmZlcikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRp
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGls
ZS5oCShyZXZpc2lvbiAzNTgxMikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVUaWxlPiBjcmVh
dGUoRmlsdGVyRWZmZWN0Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShJbWFnZUJ1ZmZlciopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdDsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCShyZXZpc2lvbiAzNTgxMikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hU
aWxlcyhib29sIHMKICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwogfQogCi12b2lkIEZFVHVy
YnVsZW5jZTo6YXBwbHkoKQordm9pZCBGRVR1cmJ1bGVuY2U6OmFwcGx5KEltYWdlQnVmZmVyKiBm
aWx0ZXJCdWZmZXIpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVUdXJidWxlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkocmV2aXNpb24gMzU4MTIpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3
ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzdGl0Y2hUaWxlcygp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0aXRjaFRpbGVzKGJvb2wpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoSW1hZ2VCdWZm
ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAK
</data>
<flag name="review"
          id="10154"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30261</attachid>
            <date>2009-05-12 23:22:49 -0700</date>
            <delta_ts>2009-05-13 02:06:15 -0700</delta_ts>
            <desc>prepare SVG FilterEffect</desc>
            <filename>svg-filter-part1.patch</filename>
            <type>text/plain</type>
            <size>57026</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzYxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAyIEBACisyMDA5LTA1LTEyICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVs
ZXRlZCBkZWFkIGJpbmRpbmdzIHRvIHBsYXRmb3JtIGRlcGVuZGVudCBjb2RlIGZvciBTVkcgZmls
dGVycy4gUHJlcGFyZSBldmVyeQorICAgICAgICBGaWx0ZXJFZmZlY3QgdG8gaGF2ZSBpdCdzIG93
biBJbWFnZUJ1ZmZlciBmb3IgZHJhd2luZyBhbWQgbW92ZWQgY2FsY3VsYXRpb24gb2YKKyAgICAg
ICAgRmlsdGVyRWZmZWN0UmVjdCB0byBTVkdSZXNvdXJjZUZpbHRlci4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUJsZW5kOjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29sb3JNYXRyaXg6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25l
bnRUcmFuc2Zlcjo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdSZW5kZXJCYXNlOjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAg
KiBzdmcvRmlsdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmVmZmVjdCk6CisgICAg
ICAgICogc3ZnL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVjdC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp4Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0WEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OnlCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
RmlsdGVyRWZmZWN0OjpzZXRZQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6d2lkdGhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRXaWR0aEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmhlaWdodEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldEhlaWdodEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OnN1YlJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnNldFN1YlJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnJlc3Vs
dEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0RWZmZWN0QnVmZmVy
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OlNWR1Jlc291cmNlRmlsdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpmaWx0ZXJCQm94Rm9ySXRlbUJCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlclByaW1pdGl2ZVN1YlJl
Z2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJvdW5kaW5nQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpzZXRGaWx0ZXJCb3VuZGluZ0JveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6aXRlbUJvdW5kaW5nQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpzZXRJdGVtQm91bmRpbmdCb3gpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9jYWlybzogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VGaWx0ZXJDYWlyby5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFj
ZW1lbnRNYXA6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURp
c3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBwbHkpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNz
aWFuQmx1cjo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1
c3NpYW5CbHVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6YXBwbHkpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVNb3JwaG9sb2d5OjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVP
ZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmFwcGx5KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjphcHBseSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmg6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFVHVyYnVsZW5jZTo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVHVyYnVsZW5jZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9xdDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvcXQvU1ZHUmVzb3VyY2VGaWx0ZXJRdC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL3NraWE6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dy
YXBoaWNzL3NraWEvU1ZHUmVzb3VyY2VGaWx0ZXJTa2lhLmNwcDogUmVtb3ZlZC4KKwogMjAwOS0w
NS0xMiAgUm9sYW5kIFN0ZWluZXIgPHJvbGFuZHN0ZWluZXJAZ29vZ2xlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDM1NzQpCisr
KyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0yOTE4LDEwICsyOTE4
LDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR1BvaW50TGlnaHRTb3VyY2UuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdTcG90TGlnaHRTb3VyY2UuaAogCi13ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCi0KLQogIyBTVkcg
RmVhdHVyZXMKIGlmIEVOQUJMRV9TVkdfVVNFCiBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCAr
PSBFTkFCTEVfU1ZHX1VTRT0xCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9XZWJD
b3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTg3NSw5ICsxODc1LDYgQEAgY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0
LmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94LmNwcAogCi1TT1VSQ0VT
ICs9IFwKLSAgICAgICAgc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlRmlsdGVyUXQuY3BwCi0K
IAogICAgICAgICAjIEdFTkVSQVRPUiA1LUM6CiAgICAgICAgIHN2Z25hbWVzX2Eub3V0cHV0ID0g
JCRHRU5FUkFURURfU09VUkNFU19ESVIvU1ZHTmFtZXMuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ3MzEsMzAgKzE0NzMx
LDYgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWx0ZXINCi0JCQkJCU5hbWU9ImNn
Ig0KLQkJCQkJPg0KLQkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFw
aGljc1xjZ1xTVkdSZXNvdXJjZUZpbHRlckNnLmNwcCINCi0JCQkJCQk+DQotCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvfFdpbjMyIg0KLQkJCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJSZWxl
YXNlX0NhaXJvfFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJ
CQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0J
CQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJPC9GaWxlPg0KLQkJ
CQk8L0ZpbHRlcj4NCi0JCQkJPEZpbHRlcg0KIAkJCQkJTmFtZT0iZmlsdGVycyINCiAJCQkJCT4N
CiAJCQkJCTxGaWxlDQpAQCAtMTQ5MTAsMzggKzE0ODg2LDYgQEAKIAkJCQkJCT4NCiAJCQkJCTwv
RmlsZT4NCiAJCQkJPC9GaWx0ZXI+DQotCQkJCTxGaWx0ZXINCi0JCQkJCU5hbWU9ImNhaXJvIg0K
LQkJCQkJPg0KLQkJCQkJPEZpbGUNCi0JCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGlj
c1xjYWlyb1xTVkdSZXNvdXJjZUZpbHRlckNhaXJvLmNwcCINCi0JCQkJCQk+DQotCQkJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIg0KLQkJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJ
CQkJCQk8VG9vbA0KLQkJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4N
Ci0JCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0K
LQkJCQkJCQlOYW1lPSJEZWJ1Z19JbnRlcm5hbHxXaW4zMiINCi0JCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiDQotCQkJCQkJCT4NCi0JCQkJCQkJPFRvb2wNCi0JCQkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQotCQkJCQkJCS8+DQotCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
Ci0JCQkJCTwvRmlsZT4NCi0JCQkJPC9GaWx0ZXI+DQogCQkJPC9GaWx0ZXI+DQogCQk8L0ZpbHRl
cj4NCiAJCTxGaWx0ZXINCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBA
QAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGRUJs
ZW5kLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0
KiBpbjIsIEJsZW5kTW9kZVR5cGUgbW9kZSkKQEAgLTU5LDggKzYxLDE0IEBAIHZvaWQgRkVCbGVu
ZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUKICAgICBtX21vZGUgPSBtb2RlOwogfQogCi12
b2lkIEZFQmxlbmQ6OmFwcGx5KCkKK3ZvaWQgRkVCbGVuZDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0
ZXIqIHJlc291cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24o
dGhpcyk7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShyZXNvdXJjZS0+ZmlsdGVy
Qm91bmRpbmdCb3goKS53aWR0aCgpLCByZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS5oZWln
aHQoKSk7CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFn
ZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAgCisgICAgaWYgKCFmaWx0
ZXJHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgRkVCbGVuZDo6ZHVt
cCgpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJ
KHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGVudW0gQmxlbmRNb2RlVHlwZSB7CkBAIC00Niw3ICs0OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgQmxlbmRNb2RlVHlwZSBibGVuZE1vZGUoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZSk7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmls
dGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0
cml4LmNwcAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRkVDb2xv
ck1hdHJpeC5oIgogCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBGRUNvbG9yTWF0cml4OjpGRUNvbG9yTWF0cml4KEZpbHRlckVmZmVjdCog
aW4sIENvbG9yTWF0cml4VHlwZSB0eXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMpCkBA
IC01OSw4ICs2MSwxNCBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnNldFZhbHVlcyhjb25zdCBWZWN0
CiAgICAgbV92YWx1ZXMgPSB2YWx1ZXM7CiB9CiAKLXZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHko
KQordm9pZCBGRUNvbG9yTWF0cml4OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciogcmVzb3VyY2Up
CiB7CisgICAgcmVzb3VyY2UtPmZpbHRlclByaW1pdGl2ZVN1YlJlZ2lvbih0aGlzKTsKKyAgICBJ
bnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgp
LndpZHRoKCksIHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgpLmhlaWdodCgpKTsKKyAgICBz
dGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVh
dGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKyAgICAKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0
KCkpCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBGRUNvbG9yTWF0cml4OjpkdW1wKCkKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCisKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcygpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAgICAgICAg
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFw
cGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAK
ICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24gNDM1NzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBG
RUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlckVmZmVjdCogaW4s
IGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIApAQCAtODMsOCArODUs
MTQgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRBbHBoYUZ1bmN0aQogICAgIG1fYWxw
aGFGdW5jID0gZnVuYzsKIH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjphcHBseSgpCit2
b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKiByZXNvdXJj
ZSkKIHsKKyAgICByZXNvdXJjZS0+ZmlsdGVyUHJpbWl0aXZlU3ViUmVnaW9uKHRoaXMpOworICAg
IEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUocmVzb3VyY2UtPmZpbHRlckJvdW5kaW5nQm94
KCkud2lkdGgoKSwgcmVzb3VyY2UtPmZpbHRlckJvdW5kaW5nQm94KCkuaGVpZ2h0KCkpOworICAg
IHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNy
ZWF0ZShidWZmZXJTaXplLCBmYWxzZSkpOworICAgIAorICAgIGlmICghZmlsdGVyR3JhcGhpYy5n
ZXQoKSkKKyAgICAgICAgcmV0dXJuOwogfQogCiB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmR1
bXAoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDkgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKwogI2luY2x1ZGUgIlNWR0ZFRGlzcGxh
Y2VtZW50TWFwLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNzgsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlvbigpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gNDM1NzQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNv
dXJjZUZpbHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQ29tcG9zaXRlOjpGRUNv
bXBvc2l0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwKQEAgLTk1LDggKzk3LDE0IEBAIHZvaWQgRkVDb21wb3Np
dGU6OnNldEs0KGZsb2F0IGs0KQogICAgIG1fazQgPSBrNDsKIH0KIAotdm9pZCBGRUNvbXBvc2l0
ZTo6YXBwbHkoKQordm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJl
c291cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24odGhpcyk7
CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShyZXNvdXJjZS0+ZmlsdGVyQm91bmRp
bmdCb3goKS53aWR0aCgpLCByZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS5oZWlnaHQoKSk7
CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAgCisgICAgaWYgKCFmaWx0ZXJHcmFw
aGljLmdldCgpKQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgRkVDb21wb3NpdGU6OmR1bXAo
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmgJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ZW51bSBDb21wb3NpdGVPcGVyYXRpb25UeXBlIHsKQEAgLTU4LDcgKzYwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBmbG9hdCBrNCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEs0
KGZsb2F0KTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdS
ZW5kZXJTdXBwb3J0LmNwcAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZv
aWQgU1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICNpZiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCiAgICAgaWYgKGZpbHRlcikgewogICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHls
ZWRFbGVtZW50KTsKLSAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250
ZXh0LCBib3VuZGluZ0JveCk7CisgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludElu
Zm8uY29udGV4dCwgb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKICAgICB9IGVsc2UgaWYg
KCFmaWx0ZXJJZC5pc0VtcHR5KCkpCiAgICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFj
Y2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRF
bGVtZW50KTsKICNlbmRpZgpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6
ZmluaXNoUmVuZGVyU1ZHQ29udGUKIAogI2lmIEVOQUJMRShTVkdfRklMVEVSUykKICAgICBpZiAo
ZmlsdGVyKSB7Ci0gICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQs
IGJvdW5kaW5nQm94KTsKKyAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29u
dGV4dCwgb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNv
bnRleHQgPSBzYXZlZENvbnRleHQ7CiAgICAgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9G
aWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkocmV2aXNpb24gNDM1
NzQpCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzogICAgCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZpbHRlcj4gY3JlYXRlKEZpbHRlckVmZmVjdCopOwogICAgICAgICAKKyAg
ICAgICAgRmlsdGVyRWZmZWN0KiBlZmZlY3QoKSB7IHJldHVybiBtX2VmZmVjdC5nZXQoKTsgfQor
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBGaWx0ZXIoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QpOworICAgICAgICBGaWx0ZXIoRmlsdGVyRWZmZWN0Kik7CiAgICAgCiAgICAgICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IG1fZWZmZWN0OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0
ZXJFZmZlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAJ
KHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSwyMSArMSwyMiBAQAogLyoKLSAgICBDb3B5cmlnaHQgKEMpIEFsZXggTWF0
aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+Ci0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLworICogIENvcHlyaWdodCAoQykg
QWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9iQGdtYWlsLmNvbT4KKyAqICAgICAgICAg
ICAgICAgIERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIApAQCAtMjUsNiArMjYsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
RmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZlY3QoKQorICAgIDogbV94QkJveE1vZGUoZmFsc2UpCisg
ICAgLCBtX3lCQm94TW9kZShmYWxzZSkKKyAgICAsIG1fd2lkdGhCQm94TW9kZShmYWxzZSkKKyAg
ICAsIG1faGVpZ2h0QkJveE1vZGUoZmFsc2UpCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL0Zp
bHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCShy
ZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw2ICsyMSw5IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgog
I2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC0zMiwxMyArMzUsNDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZpbHRlckVm
ZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckVmZmVjdD4gewogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+RmlsdGVyRWZmZWN0KCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKSA9IDA7CisKKyAgICAgICAgYm9vbCB4Qm91bmRpbmdCb3hNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV94QkJveE1vZGU7IH0KKyAgICAgICAgdm9pZCBzZXRYQm91bmRpbmdCb3hN
b2RlKGJvb2wgYmJveE1vZGUpIHsgbV94QkJveE1vZGUgPSBiYm94TW9kZTsgfQorCisgICAgICAg
IGJvb2wgeUJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1feUJCb3hNb2RlOyB9Cisg
ICAgICAgIHZvaWQgc2V0WUJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feUJCb3hN
b2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIHdpZHRoQm91bmRpbmdCb3hNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aEJCb3hNb2RlOyB9CisgICAgICAgIHZvaWQgc2V0V2lkdGhC
b3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX3dpZHRoQkJveE1vZGUgPSBiYm94TW9k
ZTsgfQorCisgICAgICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9oZWlnaHRCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldEhlaWdodEJvdW5kaW5nQm94
TW9kZShib29sIGJib3hNb2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94TW9kZTsgfQorCisg
ICAgICAgIEZsb2F0UmVjdCBzdWJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3N1YlJlZ2lvbjsg
fQorICAgICAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIHN1YlJlZ2lvbikg
eyBtX3N1YlJlZ2lvbiA9IHN1YlJlZ2lvbjsgfQorCisgICAgICAgIC8vIFRoZSByZXN1bHQgaXMg
Ym91bmRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgZmlsdGVyIHByaW1pdGl2ZSB0byBzYXZlIHJlc291
cmNlcworICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UoKSB7IHJldHVybiBtX2VmZmVj
dEJ1ZmZlci5nZXQoKTsgfQorICAgICAgICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihJbWFnZUJ1ZmZl
ciogZWZmZWN0QnVmZmVyKSB7IG1fZWZmZWN0QnVmZmVyLnNldChlZmZlY3RCdWZmZXIpOyB9CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpID0gMDsKLSAgICAgICAgCisKICAgICAgICAgdmlydHVh
bCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEZpbHRlckVmZmVjdCgpOworCisgICAgcHJpdmF0ZToK
KworICAgICAgICBib29sIG1feEJCb3hNb2RlIDogMTsKKyAgICAgICAgYm9vbCBtX3lCQm94TW9k
ZSA6IDE7CisgICAgICAgIGJvb2wgbV93aWR0aEJCb3hNb2RlIDogMTsKKyAgICAgICAgYm9vbCBt
X2hlaWdodEJCb3hNb2RlIDogMTsKKworICAgICAgICBGbG9hdFJlY3QgbV9zdWJSZWdpb247CisK
KyAgICAgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZWZmZWN0QnVmZmVyOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIs
NyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIw
MDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUgRXJpYyBT
ZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDkgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI0LDE0ICsyNSwx
OCBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgogCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRl
ICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCiAK
K3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OlNWR1Jlc291cmNlRmlsdGVyKCkKLSAgICA6IG1fcGxhdGZvcm1EYXRhKGNyZWF0
ZVBsYXRmb3JtRGF0YSgpKQotICAgICwgbV9maWx0ZXJCQm94TW9kZShmYWxzZSkKKyAgICA6IG1f
ZmlsdGVyQkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX2VmZmVjdEJCb3hNb2RlKGZhbHNlKQogICAg
ICwgbV94QkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX3lCQm94TW9kZShmYWxzZSkKQEAgLTU3LDI4
ICs2Miw4OCBAQCBGbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hGCiB7CiAg
ICAgRmxvYXRSZWN0IGZpbHRlckJCb3ggPSBmaWx0ZXJSZWN0KCk7CiAKLSAgICBmbG9hdCB4T2Zm
c2V0ID0gMC4wZjsKLSAgICBmbG9hdCB5T2Zmc2V0ID0gMC4wZjsKLQotICAgIGlmICghZWZmZWN0
Qm91bmRpbmdCb3hNb2RlKCkpIHsKLSAgICAgICAgeE9mZnNldCA9IGl0ZW1CQm94LngoKTsKLSAg
ICAgICAgeU9mZnNldCA9IGl0ZW1CQm94LnkoKTsKLSAgICB9Ci0KLSAgICBpZiAoZmlsdGVyQm91
bmRpbmdCb3hNb2RlKCkpIHsKLSAgICAgICAgZmlsdGVyQkJveCA9IEZsb2F0UmVjdCh4T2Zmc2V0
ICsgZmlsdGVyQkJveC54KCkgKiBpdGVtQkJveC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHlPZmZzZXQgKyBmaWx0ZXJCQm94LnkoKSAqIGl0ZW1CQm94LmhlaWdodCgp
LAorICAgIGlmIChmaWx0ZXJCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgZmlsdGVyQkJveCA9
IEZsb2F0UmVjdChpdGVtQkJveC54KCkgKyBmaWx0ZXJCQm94LngoKSAqIGl0ZW1CQm94LndpZHRo
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUJCb3gueSgpICsgZmlsdGVy
QkJveC55KCkgKiBpdGVtQkJveC5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWx0ZXJCQm94LndpZHRoKCkgKiBpdGVtQkJveC53aWR0aCgpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3guaGVpZ2h0KCkgKiBpdGVtQkJveC5oZWlnaHQo
KSk7CisKKyAgICByZXR1cm4gZmlsdGVyQkJveDsKK30KKwordm9pZCBTVkdSZXNvdXJjZUZpbHRl
cjo6ZmlsdGVyUHJpbWl0aXZlU3ViUmVnaW9uKEZpbHRlckVmZmVjdCogcHJpbWl0aXZlKQorewor
ICAgIEZsb2F0UmVjdCBzdWJSZWdpb25CQm94ID0gcHJpbWl0aXZlLT5zdWJSZWdpb24oKTsKKyAg
ICBGbG9hdFJlY3QgdXNlQkJveCA9IG1fZmlsdGVyQkJveDsKKworICAgIGlmIChtX2VmZmVjdEJC
b3hNb2RlKSB7CisgICAgICAgIGlmICghbV9maWx0ZXJCQm94TW9kZSkKKyAgICAgICAgICAgIHVz
ZUJCb3ggPSBtX2l0ZW1CQm94OworCisgICAgICAgIHN1YlJlZ2lvbkJCb3ggPSBGbG9hdFJlY3Qo
c3ViUmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRoKCkgKyB1c2VCQm94LngoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVp
Z2h0KCkgKyB1c2VCQm94LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJS
ZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh4Qm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAgICAg
ICBmaWx0ZXJCQm94LnNldFgoeE9mZnNldCArIGZpbHRlckJCb3gueCgpKTsKKyAgICAgICAgaWYg
KHByaW1pdGl2ZS0+eEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9uQkJv
eC5zZXRYKHVzZUJCb3gueCgpICsgc3ViUmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRoKCkp
OworCisgICAgICAgIGlmIChwcmltaXRpdmUtPnlCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAg
ICAgIHN1YlJlZ2lvbkJCb3guc2V0WSh1c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICog
dXNlQkJveC5oZWlnaHQoKSk7CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZS0+d2lkdGhCb3VuZGlu
Z0JveE1vZGUoKSkKKyAgICAgICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0V2lkdGgoc3ViUmVnaW9u
QkJveC53aWR0aCgpICogdXNlQkJveC53aWR0aCgpKTsKIAotICAgICAgICBpZiAoeUJvdW5kaW5n
Qm94TW9kZSgpKQotICAgICAgICAgICAgZmlsdGVyQkJveC5zZXRZKHlPZmZzZXQgKyBmaWx0ZXJC
Qm94LnkoKSk7CisgICAgICAgIGlmIChwcmltaXRpdmUtPmhlaWdodEJvdW5kaW5nQm94TW9kZSgp
KQorICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5zZXRIZWlnaHQoc3ViUmVnaW9uQkJveC5oZWln
aHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOwogICAgIH0KIAotICAgIHJldHVybiBmaWx0ZXJCQm94
OworICAgIHByaW1pdGl2ZS0+c2V0U3ViUmVnaW9uKHN1YlJlZ2lvbkJCb3gpOworfQorCit2b2lk
IFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRl
eHQsIGNvbnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit7CisgICAgaWYgKGl0ZW1SZWN0LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0
ZXJCQm94Rm9ySXRlbUJCb3goaXRlbVJlY3QpOworCisgICAgLy8gRHJhdyB0aGUgY29udGVudCBv
ZiB0aGUgY3VycmVudCBlbGVtZW50IGFuZCBpdCdzIGNoaWxkcyB0byBhIGltYWdlQnVmZmVyIHRv
IGdldCB0aGUgU291cmNlR3JhcGhpYy4KKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgU291cmNlR3Jh
cGhpYyBtdXN0IG1hdGNoIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50LCB0aGUgZmlsdGVyIGlzIGFw
bGllZCB0by4KKyAgICBhdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpYyhJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKEludFJlY3QoZW5jbG9zaW5nSW50UmVjdChmaWx0ZXJSZWN0KSkuc2l6ZSgp
LCBmYWxzZSkpOworICAgIAorICAgIGlmICghc291cmNlR3JhcGhpYy5nZXQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNv
dXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+Y2xlYXJS
ZWN0KEZsb2F0UmVjdCgwLCAwLCBmaWx0ZXJSZWN0LndpZHRoKCksIGZpbHRlclJlY3QuaGVpZ2h0
KCkpKTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKC1maWx0ZXJSZWN0Lngo
KSwgLWZpbHRlclJlY3QueSgpKTsKKworICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5zZXQoc291
cmNlR3JhcGhpYy5yZWxlYXNlKCkpOworICAgIG1fc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKKwor
ICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsKK30KKwordm9pZCBTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgRmxv
YXRSZWN0JiBpdGVtUmVjdCkKK3sKKyAgICBpZiAoaXRlbVJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAoIW1fc2F2ZWRDb250ZXh0KQorICAgICAgICByZXR1cm47CisK
KyAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChpdGVtUmVj
dCk7CisKKyAgICBzZXRGaWx0ZXJCb3VuZGluZ0JveChmaWx0ZXJSZWN0KTsKKyAgICBzZXRJdGVt
Qm91bmRpbmdCb3goaXRlbVJlY3QpOworCisgICAgY29udGV4dCA9IG1fc2F2ZWRDb250ZXh0Owor
ICAgIG1fc2F2ZWRDb250ZXh0ID0gMDsKKworICAgIC8vIFRPRE86IGFwcGx5IGZpbHRlciBlZmZl
Y3RzIGhlcmUKKworICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwogfQogCiBUZXh0
U3RyZWFtJiBTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3QKQEAgLTEwMiw4ICsxNjcsNiBAQCBUZXh0U3RyZWFtJiBTVkdSZXNvdXJj
ZUZpbHRlcjo6ZXh0ZXJuYWxSCiAgICAgICAgIHRzIDw8ICIgW2JvdW5kaW5nIGJveCBtb2RlPSIg
PDwgZmlsdGVyQm91bmRpbmdCb3hNb2RlKCkgPDwgIl0iOwogICAgIGlmIChlZmZlY3RCb3VuZGlu
Z0JveE1vZGUoKSkgLy8gZGVmYXVsdCBpcyBmYWxzZQogICAgICAgICB0cyA8PCAiIFtlZmZlY3Qg
Ym91bmRpbmcgYm94IG1vZGU9IiA8PCBlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSA8PCAiXSI7Ci0g
ICAgaWYgKG1fZWZmZWN0cy5zaXplKCkgPiAwKQotICAgICAgICB0cyA8PCAiIFtlZmZlY3RzPSIg
PDwgbV9lZmZlY3RzIDw8ICJdIjsKIAogICAgIHJldHVybiB0czsKIH0KSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDkgRGly
ayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDEy
ICsyNywxNCBAQAogI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVy
RWZmZWN0LmgiCiAKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIGNsYXNzIFNWR0Zp
bHRlckVmZmVjdDsKICAgICAKQEAgLTYxLDI0ICs2NCwyNiBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IGZpbHRlclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlY3Q7IH0KICAgICB2b2lk
IHNldEZpbHRlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fZmlsdGVyUmVjdCA9IHJl
Y3Q7IH0KIAorICAgIEZsb2F0UmVjdCBmaWx0ZXJCb3VuZGluZ0JveCgpIHsgcmV0dXJuIG1fZmls
dGVyQkJveDsgfQorICAgIHZvaWQgc2V0RmlsdGVyQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0
JiByZWN0KSB7IG1fZmlsdGVyQkJveCA9IHJlY3Q7IH0KKworICAgIEZsb2F0UmVjdCBpdGVtQm91
bmRpbmdCb3goKSB7IHJldHVybiBtX2l0ZW1CQm94OyB9CisgICAgdm9pZCBzZXRJdGVtQm91bmRp
bmdCb3goY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1faXRlbUJCb3ggPSByZWN0OyB9CisKICAg
ICBGbG9hdFJlY3QgZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJC
b3gpIGNvbnN0OworICAgIHZvaWQgZmlsdGVyUHJpbWl0aXZlU3ViUmVnaW9uKEZpbHRlckVmZmVj
dCopOwogCiAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKICAgICB2b2lkIGFkZEZpbHRlckVmZmVj
dChTVkdGaWx0ZXJFZmZlY3QqKTsKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICAvLyBUbyBiZSBpbXBsZW1l
bnRlZCBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgogICAgIHZvaWQgcHJlcGFyZUZpbHRlcihH
cmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKICAgICB2b2lkIGFwcGx5
RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmIGJib3gpOwogICAgIAot
ICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEoKSB7IHJldHVy
biBtX3BsYXRmb3JtRGF0YS5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxTVkdGaWx0ZXJFZmZl
Y3QqPiYgZWZmZWN0cygpIHsgcmV0dXJuIG1fZWZmZWN0czsgfQogICAgIAogcHJpdmF0ZToKLSAg
ICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSogY3JlYXRlUGxhdGZvcm1EYXRhKCk7Ci0g
ICAgCi0gICAgT3duUHRyPFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhPiBtX3BsYXRmb3Jt
RGF0YTsKIAogICAgIGJvb2wgbV9maWx0ZXJCQm94TW9kZSA6IDE7CiAgICAgYm9vbCBtX2VmZmVj
dEJCb3hNb2RlIDogMTsKQEAgLTg3LDYgKzkyLDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3lC
Qm94TW9kZSA6IDE7CiAKICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWN0OworCisgICAgRmxvYXRS
ZWN0IG1fZmlsdGVyQkJveDsKKyAgICBGbG9hdFJlY3QgbV9pdGVtQkJveDsKKworICAgIG11dGFi
bGUgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4dDsKKyAgICBtdXRhYmxlIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VHcmFwaGljQnVmZmVyOworCiAgICAgVmVjdG9yPFNWR0ZpbHRl
ckVmZmVjdCo+IG1fZWZmZWN0czsKIH07CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Nh
aXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCShyZXZpc2lvbiA0MzU3
NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDA4IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIx
MTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
LSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKiBTVkdSZXNvdXJjZUZpbHRlcjo6Y3JlYXRl
UGxhdGZvcm1EYXRhKCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAwOwot
fQotCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4
dComLCBjb25zdCBGbG9hdFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZv
aWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25z
dCBGbG9hdFJlY3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmCi0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NW
R1Jlc291cmNlRmlsdGVyQ2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cuY3BwCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBEYXZl
IE1hY0xhY2hsYW4gKGRtYWNsYWNoQG1hYy5jb20pCi0gKiAgICAgICAgICAgICAgIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSogU1ZHUmVzb3VyY2VGaWx0ZXI6
OmNyZWF0ZVBsYXRmb3JtRGF0YSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU1ZHUmVz
b3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0
UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTVkdSZXNvdXJjZUZp
bHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpCi17
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCShyZXZpc2lvbiA0MzU3NCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeC5oIgogI2luY2x1ZGUg
IlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMyw4ICsxMzQsMTQgQEAgdm9pZCBGRUNvbnZv
bHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKAogICAgIG1fcHJlc2VydmVBbHBoYSA9IHByZXNl
cnZlQWxwaGE7IAogfQogCi12b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KCkKK3ZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlKQogeworICAg
IHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24odGhpcyk7CisgICAgSW50U2l6ZSBi
dWZmZXJTaXplID0gSW50U2l6ZShyZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS53aWR0aCgp
LCByZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS5oZWlnaHQoKSk7CisgICAgc3RkOjphdXRv
X3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZl
clNpemUsIGZhbHNlKSk7CisgICAgCisgICAgaWYgKCFmaWx0ZXJHcmFwaGljLmdldCgpKQorICAg
ICAgICByZXR1cm47CiB9CiAKIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6ZHVtcCgpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXgu
aAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
Q29udm9sdmVNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC02OCw3ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJlc2Vy
dmVBbHBoYShib29sKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkocmV2aXNpb24gNDM1NzQp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0xpZ2h0U291
cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaCIKICNpbmNsdWRlICJTVkdS
ZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMTIsOCArMTEzLDE0IEBAIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OnNldExpZ2h0U291cmNlKEwKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7
CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKiByZXNvdXJjZSkKIHsKKyAgICByZXNvdXJj
ZS0+ZmlsdGVyUHJpbWl0aXZlU3ViUmVnaW9uKHRoaXMpOworICAgIEludFNpemUgYnVmZmVyU2l6
ZSA9IEludFNpemUocmVzb3VyY2UtPmZpbHRlckJvdW5kaW5nQm94KCkud2lkdGgoKSwgcmVzb3Vy
Y2UtPmZpbHRlckJvdW5kaW5nQm94KCkuaGVpZ2h0KCkpOworICAgIHN0ZDo6YXV0b19wdHI8SW1h
Z2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBm
YWxzZSkpOworICAgIAorICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuOwogfQogCiB2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJl
dmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUg
IlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
IgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzQsOCArNzUsMTQgQEAgdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6c2V0U2NhbGUoZmxv
YXQgcwogICAgIG1fc2NhbGUgPSBzY2FsZTsKIH0KIAotdm9pZCBGRURpc3BsYWNlbWVudE1hcDo6
YXBwbHkoKQordm9pZCBGRURpc3BsYWNlbWVudE1hcDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIq
IHJlc291cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24odGhp
cyk7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShyZXNvdXJjZS0+ZmlsdGVyQm91
bmRpbmdCb3goKS53aWR0aCgpLCByZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS5oZWlnaHQo
KSk7CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAgCisgICAgaWYgKCFmaWx0ZXJH
cmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgRkVEaXNwbGFjZW1lbnRN
YXA6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2FsZSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291
cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlz
aW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgICAg
ICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMyw3ICsyNCwxMyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKKworI2luY2x1ZGUgIkNv
bG9yLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNU
ZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01OSw4ICs2NiwyNCBAQCB2b2lkIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShm
bG9hdCBmbG9vCiAgICAgbV9mbG9vZE9wYWNpdHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKLXZvaWQg
RkVGbG9vZDo6YXBwbHkoKQordm9pZCBGRUZsb29kOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciog
cmVzb3VyY2UpCiB7CisgICAgcmVzb3VyY2UtPmZpbHRlclByaW1pdGl2ZVN1YlJlZ2lvbih0aGlz
KTsKKworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUocmVzb3VyY2UtPmZpbHRlckJv
dW5kaW5nQm94KCkud2lkdGgoKSwgcmVzb3VyY2UtPmZpbHRlckJvdW5kaW5nQm94KCkuaGVpZ2h0
KCkpOworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSkpOworICAgIAorICAgIGlmICghZmlsdGVy
R3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBm
aWx0ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRlckNvbnRl
eHQtPnNhdmUoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT50cmFuc2xhdGUoLXJlc291cmNlLT5maWx0
ZXJCb3VuZGluZ0JveCgpLngoKSwgLXJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgpLnkoKSk7
CisgICAgZmlsdGVyQ29udGV4dC0+c2V0QWxwaGEoZmxvb2RPcGFjaXR5KCkpOworICAgIGZpbHRl
ckNvbnRleHQtPmZpbGxSZWN0KHN1YlJlZ2lvbigpLCBmbG9vZENvbG9yKCkpOworICAgIGZpbHRl
ckNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIHNldEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGlj
LnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVGbG9vZDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUsNiArMjUsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNp
bmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNW
R1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJj
ZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1
ci5jcHAJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUdhdXNzaWFuQmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVHYXVz
c2lhbkJsdXIuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCw4ICs2
MSwxNCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsCiAgICAgbV95
ID0geTsKIH0KIAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoKQordm9pZCBGRUdhdXNzaWFu
Qmx1cjo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlKQogeworICAgIHJlc291cmNl
LT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24odGhpcyk7CisgICAgSW50U2l6ZSBidWZmZXJTaXpl
ID0gSW50U2l6ZShyZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS53aWR0aCgpLCByZXNvdXJj
ZS0+ZmlsdGVyQm91bmRpbmdCb3goKS5oZWlnaHQoKSk7CisgICAgc3RkOjphdXRvX3B0cjxJbWFn
ZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZh
bHNlKSk7CisgICAgCisgICAgaWYgKCFmaWx0ZXJHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1
cm47CiB9CiAKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDM1
NzQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM4
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNv
dXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0
U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZp
c2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgogI2luY2x1ZGUgIlNW
R1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYzLDggKzY0LDE0IEBAIHZvaWQgRkVJbWFnZTo6c2V0
Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50
KHRoaXMpOwogfQogCi12b2lkIEZFSW1hZ2U6OmFwcGx5KCkKK3ZvaWQgRkVJbWFnZTo6YXBwbHko
U1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmlt
aXRpdmVTdWJSZWdpb24odGhpcyk7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShy
ZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3goKS53aWR0aCgpLCByZXNvdXJjZS0+ZmlsdGVyQm91
bmRpbmdCb3goKS5oZWlnaHQoKSk7CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmls
dGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAg
CisgICAgaWYgKCFmaWx0ZXJHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiB9CiAKIHZv
aWQgRkVJbWFnZTo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5k
bGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDcgKzQyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopOwogICAgICAgICAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShT
VkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAg
ICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dDsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVy
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
ZXJnZS5jcHAJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRU1lcmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRU1lcmdlLmgi
CiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNl
RmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsOCArNDksMTQgQEAgdm9p
ZCBGRU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0bwogICAgIG1fbWVyZ2VJbnB1dHMg
PSBtZXJnZUlucHV0czsKIH0KIAotdm9pZCBGRU1lcmdlOjphcHBseSgpCit2b2lkIEZFTWVyZ2U6
OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKiByZXNvdXJjZSkKIHsKKyAgICByZXNvdXJjZS0+Zmls
dGVyUHJpbWl0aXZlU3ViUmVnaW9uKHRoaXMpOworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IElu
dFNpemUocmVzb3VyY2UtPmZpbHRlckJvdW5kaW5nQm94KCkud2lkdGgoKSwgcmVzb3VyY2UtPmZp
bHRlckJvdW5kaW5nQm94KCkuaGVpZ2h0KCkpOworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZm
ZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSkp
OworICAgIAorICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOwog
fQogCiB2b2lkIEZFTWVyZ2U6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1lcmdlLmgJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAK
IAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0
ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCkBAIC0zNiw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cygpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYg
bWVyZ2VJbnB1dHMpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gNDM1NzQpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNb3JwaG9sb2d5LmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNzEsOCArNzIsMTQgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnNl
dFJhZGl1c1koZmxvYXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7CiB9CiAKLXZvaWQg
RkVNb3JwaG9sb2d5OjphcHBseSgpCit2b2lkIEZFTW9ycGhvbG9neTo6YXBwbHkoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIHJlc291cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJS
ZWdpb24odGhpcyk7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShyZXNvdXJjZS0+
ZmlsdGVyQm91bmRpbmdCb3goKS53aWR0aCgpLCByZXNvdXJjZS0+ZmlsdGVyQm91bmRpbmdCb3go
KS5oZWlnaHQoKSk7CisgICAgc3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhp
YyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAgCisgICAgaWYg
KCFmaWx0ZXJHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgRkVNb3Jw
aG9sb2d5OjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
b3JwaG9sb2d5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU1vcnBob2xvZ3kuaAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00NSw3ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFJhZGl1c1koZmxv
YXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVP
ZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVPZmZzZXQuY3BwCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVPZmZzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsOCArNjEsMTQg
QEAgdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12
b2lkIEZFT2Zmc2V0OjphcHBseSgpCit2b2lkIEZFT2Zmc2V0OjphcHBseShTVkdSZXNvdXJjZUZp
bHRlciogcmVzb3VyY2UpCiB7CisgICAgcmVzb3VyY2UtPmZpbHRlclByaW1pdGl2ZVN1YlJlZ2lv
bih0aGlzKTsKKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHJlc291cmNlLT5maWx0
ZXJCb3VuZGluZ0JveCgpLndpZHRoKCksIHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgpLmhl
aWdodCgpKTsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGljKElt
YWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKyAgICAKKyAgICBpZiAoIWZp
bHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBGRU9mZnNldDo6
ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5o
CShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVP
ZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzcsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0RHkoZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBh
cHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5j
cHAJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVNwZWN1bGFyTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFU3Bl
Y3VsYXJMaWdodGluZy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEy
NCw4ICsxMjUsMTQgQEAgdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKAog
ICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAotdm9pZCBGRVNwZWN1bGFyTGln
aHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjphcHBseShTVkdSZXNvdXJj
ZUZpbHRlciogcmVzb3VyY2UpCiB7CisgICAgcmVzb3VyY2UtPmZpbHRlclByaW1pdGl2ZVN1YlJl
Z2lvbih0aGlzKTsKKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHJlc291cmNlLT5m
aWx0ZXJCb3VuZGluZ0JveCgpLndpZHRoKCksIHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgp
LmhlaWdodCgpKTsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGlj
KEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKyAgICAKKyAgICBpZiAo
IWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBGRVNwZWN1
bGFyTGlnaHRpbmc6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiA0MzU3NCkKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUg
IlNWR0xpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1
Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxp
Z2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3Vy
Y2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
VGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVRpbGUuY3BwCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRVRpbGUuaCIK
ICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VG
aWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNiw4ICszNywxNCBAQCBQYXNz
UmVmUHRyPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGRVRpbGUoaW4pKTsKIH0KIAotdm9pZCBGRVRpbGU6OmFwcGx5KCkKK3ZvaWQgRkVUaWxl
OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciogcmVzb3VyY2UpCiB7CisgICAgcmVzb3VyY2UtPmZp
bHRlclByaW1pdGl2ZVN1YlJlZ2lvbih0aGlzKTsKKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJ
bnRTaXplKHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgpLndpZHRoKCksIHJlc291cmNlLT5m
aWx0ZXJCb3VuZGluZ0JveCgpLmhlaWdodCgpKTsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVm
ZmVyPiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2Up
KTsKKyAgICAKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsK
IH0KIAogdm9pZCBGRVRpbGU6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVRpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFVGlsZS5oCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAog
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgCkBAIC0zMSw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFVGlsZT4gY3JlYXRlKEZpbHRlckVm
ZmVjdCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1
bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3Ry
ZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gNDM1NzQpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCiAjaW5jbHVkZSAiU1ZHRkVUdXJidWxlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTA1LDggKzEwNiwxNCBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6c2V0U3Rp
dGNoVGlsZXMoYm9vbCBzCiAgICAgbV9zdGl0Y2hUaWxlcyA9IHN0aXRjaDsKIH0KIAotdm9pZCBG
RVR1cmJ1bGVuY2U6OmFwcGx5KCkKK3ZvaWQgRkVUdXJidWxlbmNlOjphcHBseShTVkdSZXNvdXJj
ZUZpbHRlciogcmVzb3VyY2UpCiB7CisgICAgcmVzb3VyY2UtPmZpbHRlclByaW1pdGl2ZVN1YlJl
Z2lvbih0aGlzKTsKKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHJlc291cmNlLT5m
aWx0ZXJCb3VuZGluZ0JveCgpLndpZHRoKCksIHJlc291cmNlLT5maWx0ZXJCb3VuZGluZ0JveCgp
LmhlaWdodCgpKTsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGlj
KEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKyAgICAKKyAgICBpZiAo
IWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBGRVR1cmJ1
bGVuY2U6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1
cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiA0MzU3NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU2LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBib29sIHN0aXRjaFRpbGVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGls
ZXMoYm9vbCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvcXQvU1ZHUmVz
b3VyY2VGaWx0ZXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvcXQv
U1ZHUmVzb3VyY2VGaWx0ZXJRdC5jcHAJKHJldmlzaW9uIDQzNTc0KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvcXQvU1ZHUmVzb3VyY2VGaWx0ZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTAgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHBy
b2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBh
aW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgotI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHUmVzb3VyY2VG
aWx0ZXJQbGF0Zm9ybURhdGEqIFNWR1Jlc291cmNlRmlsdGVyOjpjcmVhdGVQbGF0Zm9ybURhdGEo
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU1ZH
UmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZs
b2F0UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQot
Ci0jZW5kaWYKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
c2tpYS9TVkdSZXNvdXJjZUZpbHRlclNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL3NraWEvU1ZHUmVzb3VyY2VGaWx0ZXJTa2lhLmNwcAkocmV2aXNpb24gNDM1NzQp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9za2lhL1NWR1Jlc291cmNlRmlsdGVyU2tpYS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAw
OCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSogU1ZHUmVzb3VyY2VGaWx0
ZXI6OmNyZWF0ZVBsYXRmb3JtRGF0YSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU1ZH
UmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZs
b2F0UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQo=
</data>
<flag name="review"
          id="15223"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30267</attachid>
            <date>2009-05-13 02:06:15 -0700</date>
            <delta_ts>2009-05-17 11:43:11 -0700</delta_ts>
            <desc>mainline SVG patch</desc>
            <filename>svg-filter-part1.patch</filename>
            <type>text/plain</type>
            <size>65692</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDE5LDYgKzE0MTksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIFwKKyAgICBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRp
b24uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbi5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCkBAIC0yOTE4LDEwICsyOTE5LDYgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1BvaW50
TGlnaHRTb3VyY2UuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdTcG90TGln
aHRTb3VyY2UuaAogCi13ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCi0KLQogIyBTVkcgRmVhdHVyZXMK
IGlmIEVOQUJMRV9TVkdfVVNFCiBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVf
U1ZHX1VTRT0xCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGRUJsZW5kLmgi
CiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIs
IEJsZW5kTW9kZVR5cGUgbW9kZSkKQEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBGRUJsZW5kOjpzZXRC
bGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAgIG1fbW9kZSA9IG1vZGU7CiB9CiAKLXZvaWQgRkVC
bGVuZDo6YXBwbHkoKQordm9pZCBGRUJsZW5kOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQu
aAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw4IEBACiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgZW51bSBCbGVuZE1vZGVUeXBlIHsKQEAgLTQ2LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBCbGVuZE1vZGVUeXBlIGJsZW5kTW9kZSgpIGNvbnN0OwogICAgICAgICB2
b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBlKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBA
QAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGRUNv
bG9yTWF0cml4LmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgoRmlsdGVyRWZmZWN0
KiBpbiwgQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykK
QEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpzZXRWYWx1ZXMoY29uc3QgVmVj
dAogICAgIG1fdmFsdWVzID0gdmFsdWVzOwogfQogCi12b2lkIEZFQ29sb3JNYXRyaXg6OmFwcGx5
KCkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQog
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAog
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgorCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ2LDcgKzQ4LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwogICAg
ICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgp
OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDQzNjE4
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIK
IAorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogRkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRUcmFuc2ZlcihGaWx0ZXJFZmZlY3Qq
IGluLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiByZWRGdW5jLCAKQEAgLTgzLDcg
Kzg1LDcgQEAgdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjpzZXRBbHBoYUZ1bmN0aQogICAgIG1f
YWxwaGFGdW5jID0gZnVuYzsKIH0KIAotdm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjphcHBseSgp
Cit2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsK
IH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI0LDcgKzI0LDkgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKwogI2luY2x1ZGUgIlNWR0ZFRGlzcGxh
Y2VtZW50TWFwLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIApAQCAtNzgsNyArODAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlvbigpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbiYpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gNDM2MTgpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29tcG9zaXRlLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNv
dXJjZUZpbHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQ29tcG9zaXRlOjpGRUNv
bXBvc2l0ZShGaWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ29tcG9z
aXRlT3BlcmF0aW9uVHlwZSYgdHlwZSwKQEAgLTk1LDcgKzk3LDcgQEAgdm9pZCBGRUNvbXBvc2l0
ZTo6c2V0SzQoZmxvYXQgazQpCiAgICAgbV9rNCA9IGs0OwogfQogCi12b2lkIEZFQ29tcG9zaXRl
OjphcHBseSgpCit2b2lkIEZFQ29tcG9zaXRlOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAor
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgIGVudW0gQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSB7CkBAIC01OCw3ICs2MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgazQoKSBjb25zdDsKICAgICAgICAgdm9pZCBz
ZXRLNChmbG9hdCk7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBA
QCB2b2lkIFNWR1JlbmRlckJhc2U6OnByZXBhcmVUb1JlbmRlclNWR0NvCiAjaWYgRU5BQkxFKFNW
R19GSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKICAgICAgICAgZmlsdGVyLT5hZGRDbGllbnQo
c3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8u
Y29udGV4dCwgYm91bmRpbmdCb3gpOworICAgICAgICBmaWx0ZXItPnByZXBhcmVGaWx0ZXIocGFp
bnRJbmZvLmNvbnRleHQsIG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7CiAgICAgfSBlbHNl
IGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQogICAgICAgICBzdmdFbGVtZW50LT5kb2N1bWVudCgp
LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJJZCwgc3R5
bGVkRWxlbWVudCk7CiAjZW5kaWYKQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lkIFNWR1JlbmRlckJh
c2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlCiAKICNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAg
aWYgKGZpbHRlcikgewotICAgICAgICBmaWx0ZXItPmFwcGx5RmlsdGVyKHBhaW50SW5mby5jb250
ZXh0LCBib3VuZGluZ0JveCk7CisgICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZv
LmNvbnRleHQsIG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7CiAgICAgICAgIHBhaW50SW5m
by5jb250ZXh0ID0gc2F2ZWRDb250ZXh0OwogICAgIH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9z
dmcvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHJldmlzaW9u
IDQzNjE4KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
aWx0ZXI+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgRmlsdGVyKEZpbHRlckVmZmVjdCogZWZmZWN0KTsKKyAgICAgICAgRmlsdGVyKEZpbHRl
ckVmZmVjdCopOwogICAgIAogICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2VmZmVjdDsK
ICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3Jl
L3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDI4ICsyMyw0OSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotICAgIGNsYXNzIEZpbHRlckJ1aWxkZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxGaWx0ZXJCdWlsZGVyPiB7CisKKyAgICBjbGFzcyBTdHJpbmdJbXBsOwor
CisgICAgY2xhc3MgRmlsdGVyQnVpbGRlciA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QpIHsgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0KTsgfQotICAg
ICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmltcGwoKSkuZ2V0KCk7IH0KLSAgICAgICAg
Ci0gICAgICAgIFBhc3NSZWZQdHI8RmlsdGVyPiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlcjsgfQotICAgICAgICAKKworICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KSB7CisgICAgICAgICAgICBtX2xhc3RFZmZl
Y3QgPSBlZmZlY3QuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmKCFpZC5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0LmdldCgpKTsg
CisgICAgICAgIH0KKworICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3Qg
U3RyaW5nJiBpZCkgY29uc3QgeyAgICAgICAgIAorICAgICAgICAgICAgaWYoaWQuaXNFbXB0eSgp
ICYmIG1fbGFzdEVmZmVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0Lmdl
dCgpOworCisgICAgICAgICAgICAvL0lmIGlkIGlzbid0IGRlY2xhcmVkIGFuZCBsYXN0RWZmZWN0
IGlzIHN0aWxsIG51bGwgdGhlbiBGaWx0ZXJCdWlsZGVyIHdpbGwgcmV0dXJuCisgICAgICAgICAg
ICAvL2EgU291cmNlR3JhcGhpYyBvYmplY3QgYXMgcGVyIHRoZSBTcGVjLgorICAgICAgICAgICAg
aWYoaWQuaXNFbXB0eSgpICYmICFtX2xhc3RFZmZlY3QpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fbmFtZWRFZmZlY3RzLmdldChTdHJpbmcoIlNvdXJjZUdyYXBoaWMiKS5pbXBsKCkpLmdldCgp
OworCisgICAgICAgICAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmltcGwoKSkuZ2V0
KCk7CisgICAgICAgIH0KKworICAgICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RGaWx0ZXIoKSBjb25z
dCB7IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KKworICAgICAgICB2b2lkIGNsZWFyRWZm
ZWN0cygpIHsgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsgfQorICAgICAgICBib29sIGVtcHR5KCkg
eyByZXR1cm4gbV9uYW1lZEVmZmVjdHMuaXNFbXB0eSgpOyB9CisKICAgICBwcml2YXRlOgogICAg
ICAgICBIYXNoTWFwPFN0cmluZ0ltcGwqLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFtZWRF
ZmZlY3RzOwotICAgICAgICAKLSAgICAgICAgUmVmUHRyPEZpbHRlcj4gbV9maWx0ZXI7CisKKyAg
ICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9sYXN0RWZmZWN0OwogICAgIH07Ci0gICAgCisK
IH0gLy9uYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysr
IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0
KCkKKyAgICA6IG1feEJCb3hNb2RlKGZhbHNlKQorICAgICwgbV95QkJveE1vZGUoZmFsc2UpCisg
ICAgLCBtX3dpZHRoQkJveE1vZGUoZmFsc2UpCisgICAgLCBtX2hlaWdodEJCb3hNb2RlKGZhbHNl
KQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3Jl
L3N2Zy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsOSBAQAogI2Rl
ZmluZSBGaWx0ZXJFZmZlY3RfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzIsMTMgKzM1LDQzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWx0ZXJFZmZlY3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkZpbHRlckVmZmVj
dCgpOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCkgPSAwOworCisgICAg
ICAgIGJvb2wgeEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1feEJCb3hNb2RlOyB9
CisgICAgICAgIHZvaWQgc2V0WEJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feEJC
b3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIHlCb3VuZGluZ0JveE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3lCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldFlCb3VuZGluZ0Jv
eE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX3lCQm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAg
ICAgYm9vbCB3aWR0aEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhCQm94
TW9kZTsgfQorICAgICAgICB2b2lkIHNldFdpZHRoQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1v
ZGUpIHsgbV93aWR0aEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIGhlaWdo
dEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0QkJveE1vZGU7IH0KKyAg
ICAgICAgdm9pZCBzZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX2hl
aWdodEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJSZWdpb247IH0KKyAgICAgICAgdm9pZCBzZXRTdWJSZWdp
b24oY29uc3QgRmxvYXRSZWN0JiBzdWJSZWdpb24pIHsgbV9zdWJSZWdpb24gPSBzdWJSZWdpb247
IH0KKworICAgICAgICAvLyBUaGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgdGhlIHNpemUgb2YgdGhl
IGZpbHRlciBwcmltaXRpdmUgdG8gc2F2ZSByZXNvdXJjZXMKKyAgICAgICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlKCkgeyByZXR1cm4gbV9lZmZlY3RCdWZmZXIuZ2V0KCk7IH0KKyAgICAgICAg
dm9pZCBzZXRFZmZlY3RCdWZmZXIoSW1hZ2VCdWZmZXIqIGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVj
dEJ1ZmZlci5zZXQoZWZmZWN0QnVmZmVyKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShTVkdSZXNvdXJjZUZpbHRlciopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9
IDA7Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBG
aWx0ZXJFZmZlY3QoKTsKKworICAgIHByaXZhdGU6CisKKyAgICAgICAgYm9vbCBtX3hCQm94TW9k
ZSA6IDE7CisgICAgICAgIGJvb2wgbV95QkJveE1vZGUgOiAxOworICAgICAgICBib29sIG1fd2lk
dGhCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9oZWlnaHRCQm94TW9kZSA6IDE7CisKKyAg
ICAgICAgRmxvYXRSZWN0IG1fc3ViUmVnaW9uOworCisgICAgICAgIG11dGFibGUgT3duUHRyPElt
YWdlQnVmZmVyPiBtX2VmZmVjdEJ1ZmZlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEs
MTUgKzcxLDE3IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHQKICAg
ICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVp
bGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0g
YnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVj
dEJ5SWQoaW4yKCkpOwogCiAgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFQmxlbmQ6OmNyZWF0ZShp
bnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4gKG1vZGUoKSkpKTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoaW5wdXQxLCBp
bnB1dDIsIHN0YXRpY19jYXN0PEJsZW5kTW9kZVR5cGU+IChtb2RlKCkpKTsKKyAgICBzZXRTdGFu
ZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVy
UmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lv
biA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZp
cnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBj
b25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdO
YW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJ
bjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Miw5ICs3Miw5IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkK
IHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIo
KS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC04Nyw3ICs4Nyw5IEBAIGJvb2wgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OmJ1aWxkKEZpbHQKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDtpIDwgbnI7aSsrKQogICAg
ICAgICBfdmFsdWVzLmFwcGVuZChudW1iZXJzLT5nZXRJdGVtKGksIGVjKSk7CiAKLSAgICBidWls
ZGVyLT5hZGQocmVzdWx0KCksIEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShpbnB1dDEsIHN0YXRpY19j
YXN0PENvbG9yTWF0cml4VHlwZT4gKHR5cGUoKSksIF92YWx1ZXMpKTsKKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQxLCBzdGF0aWNf
Y2FzdDxDb2xvck1hdHJpeFR5cGU+ICh0eXBlKCkpLCBfdmFsdWVzKTsKKyAgICBzZXRTdGFuZGFy
ZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVz
b3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3Qo
U1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWls
ZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZ1N0cmluZywg
U1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzNjE4
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Myw5ICs2Myw5IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckUKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNv
dXJjZSkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1
aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYsNyArODYsOSBAQCBib29sIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpidWlsCiAgICAgICAgICAgICBhbHBoYSA9IHN0YXRpY19jYXN0PFNW
R0ZFRnVuY0FFbGVtZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0g
ICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5w
dXQxLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwgZ3JlZW4s
IGJsdWUsIGFscGhhKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2Us
IGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3Vs
dCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2aXNpb24g
NDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7
CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7Cisg
ICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb25lbnRUcmFuc2ZlclRhZ1N0cmlu
ZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NywxNyAr
ODcsMTggQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OgogICAgIHJl
dHVybiAwOwogfQogCi1ib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVp
bGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEg
PSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0
MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5w
dXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Cisg
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRF
ZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVm
ZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENv
bXBvc2l0ZU9wZXJhdGlvblR5cGU+IChfb3BlcmF0b3IoKSksCisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGlj
X2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4gKF9vcGVyYXRvcigpKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsKLSAg
ICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZp
bHRlclJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZH
UmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVy
Kik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
Q29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc4LDkgKzc4LDkgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZQog
ICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTg4LDkgKzg4LDEwIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZCgKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGZpbHRlclN0eWxlID0gc3R5bGVGb3JSZW5k
ZXJlcigpOwogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0
aW5nQ29sb3IoKTsKICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9
IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCks
IGRpZmZ1c2VDb25zdGFudCgpLCAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBG
RURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGlucHV0MSwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBk
aWZmdXNlQ29uc3RhbnQoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGZpbmRMaWdo
dHMoKSk7Ci0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkp
OworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgp
KTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5y
ZWxlYXNlKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBw
YXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKICAgICAgICAgdmlydHVhbCBT
VkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0Owot
ICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29s
IGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBT
VkdOYW1lczo6ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJp
bmcsIFN0cmluZywgSW4xLCBpbjEpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksMTggKzc5LDE5
IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGUKICAgICByZXR1cm4g
MDsKIH0KIAotYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1
aWxkZXIqIGJ1aWxkZXIpCitib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQo
U1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBGaWx0ZXJFZmZl
Y3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4x
KCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIo
KS0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQy
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgIAotICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShpbnB1dDEs
IGlucHV0Miwgc3RhdGljX2Nhc3Q8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gKHhDaGFubmVsU2VsZWN0
b3IoKSksIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlzcGxhY2VtZW50
TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5
cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeUNoYW5uZWxTZWxl
Y3RvcigpKSwgc2NhbGUoKSk7Ci0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVj
dC5yZWxlYXNlKCkpOworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwg
ZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0
KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHJldmlzaW9uIDQzNjE4
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSop
OwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAg
CiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFwVGFn
U3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE0ICs1NSwxNiBA
QCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0CiAgICAgcmV0dXJuIDA7
CiB9CiAKLWJvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxk
ZXIpCitib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyUmVzb3VyY2UpCiB7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBmaWx0ZXJTdHlsZSA9IHN0
eWxlRm9yUmVuZGVyZXIoKTsKIAogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0
eWxlKCktPmZsb29kQ29sb3IoKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gZmlsdGVyU3R5bGUtPnN2
Z1N0eWxlKCktPmZsb29kT3BhY2l0eSgpOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBG
RUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRUZsb29kOjpjcmVhdGUoY29sb3IsIG9wYWNpdHkpOworICAgIHNldFN0YW5k
YXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJS
ZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOyAgICAK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAko
cmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAg
ICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmls
dGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFRmxvb2Q+IG1fZmlsdGVyRWZmZWN0OwpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzYxOCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTczLDE0ICs3MywxNiBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoaW5w
dXQxLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSkpOworICAgIFJlZlB0cjxGaWx0
ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoaW5wdXQxLCBzdGREZXZp
YXRpb25YKCksIHN0ZERldmlhdGlvblkoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZp
bHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVy
KCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZpc2lvbiA0
MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0
ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAg
IHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5B
dHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk0LDEyICs5NCwxNCBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNW
R0ZFSW1hZ2VFbGVtZW50OjpmaWx0CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVJbWFn
ZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCitib29sIFNWR0ZFSW1hZ2VF
bGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7CiAgICAg
aWYoIW1fY2FjaGVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXIt
PmFkZChyZXN1bHQoKSwgRkVJbWFnZTo6Y3JlYXRlKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpKTsKKyAg
ICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUltYWdlOjpjcmVhdGUobV9jYWNoZWRJ
bWFnZS5nZXQoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBl
ZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQo
KSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUlt
YWdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJM
cyhMaXN0SGFzaFNldDxLVVJMPiYpIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1
aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7
CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIgQEAgU1ZHRmlsdGVyRWZm
ZWN0KiBTVkdGRU1lcmdlRWxlbWVudDo6ZmlsdAogICAgIHJldHVybiAwOwogfQogCi1ib29sIFNW
R0ZFTWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdG
RU1lcmdlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQog
ewogICAgIFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiBtZXJnZUlucHV0czsKICAgICBmb3IgKE5vZGUq
IG4gPSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFnKSkgewotICAgICAg
ICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
c3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmluMSgpKTsKKyAgICAgICAg
ICAgIEZpbHRlckVmZmVjdCogbWVyZ2VFZmZlY3QgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigp
LT5nZXRFZmZlY3RCeUlkKHN0YXRpY19jYXN0PFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCo+KG4pLT5p
bjEoKSk7CiAgICAgICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQobWVyZ2VFZmZlY3QpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNTksNyArNTksOSBAQCBib29sIFNWR0ZFTWVyZ2VFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsCiAgICAgaWYobWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFTWVyZ2U6OmNyZWF0
ZShtZXJnZUlucHV0cykpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVy
Z2U6OmNyZWF0ZShtZXJnZUlucHV0cyk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCkt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVNZXJnZUVsZW1lbnQo
KTsKIAogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIG11dGFibGUgUmVmUHRyPEZFTWVyZ2U+IG1fZmlsdGVyRWZmZWN0
OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDE0ICs2MywxNiBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsCiAg
ICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChGaWx0ZXJC
dWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAg
ICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQo
cmVzdWx0KCksIEZFT2Zmc2V0OjpjcmVhdGUoaW5wdXQxLCBkeCgpLCBkeSgpKSk7CisgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShpbnB1dDEsIGR4KCks
IGR5KCkpOworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0
LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVm
ZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRU9mZnNldEVsZW1lbnQsIFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFt
ZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw5ICs5Myw5IEBAIExpZ2h0U291cmNlKiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW4KICAgICByZXR1cm4gbGlnaHQ7CiB9CiAKLWJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQog
ewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigp
LT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKICAgICBpZighaW5wdXQxKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xMDQsOSArMTA0LDEwIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6YnVpbGQKICAgICAKICAgICBDb2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5z
dmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCk7CiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gYWRkZWRFZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9y
LCBzdXJmYWNlU2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5n
dGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7Ci0gICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIHNldFN0YW5kYXJkQXR0
cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJj
ZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0
dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudC5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7CiAgICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0
KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBi
dWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNv
dXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNw
ZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywg
SW4xLCBpbjEpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNDM2MTgp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsMTQgKzU4LDE2IEBAIFNWR0ZpbHRlckVmZmVjdCogU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGUK
ICAgIHJldHVybiAwOwogfQogCi1ib29sIFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1
aWxkZXIqIGJ1aWxkZXIpCitib29sIFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1
aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0g
ZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBp
ZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVz
dWx0KCksIEZFVGlsZTo6Y3JlYXRlKGlucHV0MSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGlucHV0MSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5i
dWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShyZXZpc2lvbiA0MzYxOCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNW
R0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wg
YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6ZmVU
aWxlVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzNjE4
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDExICs4MywxMiBAQCBTVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQ6CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6
YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGlj
X2Nhc3Q8VHVyYnVsYW5jZVR5cGU+ICh0eXBlKCkpLCBiYXNlRnJlcXVlbmN5WCgpLCAKKyAgICBS
ZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxUdXJidWxhbmNlVHlwZT4gKHR5cGUoKSksIGJhc2VGcmVxdWVuY3lYKCksIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VGcmVxdWVuY3lZKCksIG51bU9j
dGF2ZXMoKSwgc2VlZCgpLCBzdGl0Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7
Ci0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAg
IHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAg
ICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNl
KCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1
bGVuY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNl
RWxlbWVudC5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5n
LCBTVkdCYXNlRnJlcXVlbmN5WElkZW50aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WCwgYmFz
ZUZyZXF1ZW5jeVgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNDM2
MTgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkF0dHIuaCIKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiTWFwcGVk
QXR0cmlidXRlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdMZW5ndGgu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgpAQCAtMTA2LDYgKzEwOCw5IEBAIFNWR1Jlc291cmNl
KiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKICAgICBpZiAoIW1fZmlsdGVyKQogICAgICAg
ICBtX2ZpbHRlciA9IG5ldyBTVkdSZXNvdXJjZUZpbHRlcigpOwogCisJaWYgKCFtX2ZpbHRlci0+
YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKFN0cmluZygiU291cmNlR3JhcGhpYyIpKSkKKwkgICAg
bV9maWx0ZXItPmJ1aWxkZXIoKS0+YWRkKFN0cmluZygiU291cmNlR3JhcGhpYyIpLCBTb3VyY2VH
cmFwaGljOjpjcmVhdGUoKS5nZXQoKSk7CisKICAgICBib29sIGZpbHRlckJCb3hNb2RlID0gZmls
dGVyVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdC
T1g7CiAgICAgbV9maWx0ZXItPnNldEZpbHRlckJvdW5kaW5nQm94TW9kZShmaWx0ZXJCQm94TW9k
ZSk7CiAKQEAgLTEzMSwxOSArMTM2LDE3IEBAIFNWR1Jlc291cmNlKiBTVkdGaWx0ZXJFbGVtZW50
OjpjYW52YXNSZXMKICAgICBib29sIHByaW1pdGl2ZUJCb3hNb2RlID0gcHJpbWl0aXZlVW5pdHMo
KSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7CiAgICAg
bV9maWx0ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShwcmltaXRpdmVCQm94TW9kZSk7CiAK
LSAgICAvLyBUT0RPIDogdXNlIHN3aXRjaC9jYXNlIGluc3RlYWQ/Ci0gICAgbV9maWx0ZXItPmNs
ZWFyRWZmZWN0cygpOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbiAhPSAwOyBu
ID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50ID0gMDsK
LSAgICAgICAgaWYgKG4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBpZiAobi0+aXNTVkdFbGVt
ZW50KCkpIHsKICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4o
bik7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRmlsdGVyRWZmZWN0KCkpIHsK
LSAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVy
QXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcyo+KGVsZW1lbnQpOwotICAgICAgICAgICAgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QgPSBmaWx0ZXJBdHRyaWJ1dGVzLT5maWx0ZXJFZmZlY3QobV9maWx0ZXIuZ2V0KCkpOwotICAg
ICAgICAgICAgaWYgKCFmaWx0ZXJFZmZlY3QpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIG1fZmlsdGVyLT5hZGRGaWx0ZXJFZmZlY3QoZmlsdGVyRWZmZWN0KTsKKyAg
ICAgICAgICAgIGlmIChlbGVtZW50LT5pc0ZpbHRlckVmZmVjdCgpKSB7CisgICAgICAgICAgICAg
ICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBlZmZlY3RFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVu
dCk7CisgICAgICAgICAgICAJaWYgKCFlZmZlY3RFbGVtZW50LT5idWlsZChtX2ZpbHRlci5nZXQo
KSkpIHsKKwkJCQkJbV9maWx0ZXItPmJ1aWxkZXIoKS0+Y2xlYXJFZmZlY3RzKCk7CisJCQkJCWJy
ZWFrOworCQkJCX0KKwkJCX0KICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShyZXZp
c2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKIAogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgpAQCAtNzAsMTcg
KzcxLDE3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICAg
ICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwog
fQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KSBjb25zdAordm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRl
cyhTVkdSZXNvdXJjZUZpbHRlciogcmVzb3VyY2VGaWx0ZXIsIEZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0KSBjb25zdAogewogICAgIEFTU0VSVChmaWx0ZXJFZmZlY3QpOwogICAgIGlmICghZmls
dGVyRWZmZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoZmlsdGVyRWZmZWN0LT5m
aWx0ZXIoKSk7CisgICAgQVNTRVJUKHJlc291cmNlRmlsdGVyKTsKIAogICAgIGZsb2F0IF94LCBf
eSwgX3dpZHRoLCBfaGVpZ2h0OwogCi0gICAgaWYgKGZpbHRlckVmZmVjdC0+ZmlsdGVyKCktPmVm
ZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7CisgICAgaWYgKHJlc291cmNlRmlsdGVyLT5lZmZlY3RC
b3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICBfeCA9IHgoKS52YWx1ZUFzUGVyY2VudGFnZSgp
OwogICAgICAgICBfeSA9IHkoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwogICAgICAgICBfd2lkdGgg
PSB3aWR0aCgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CkBAIC0xMjEsNyArMTIyLDYgQEAgdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogICAgIH0KIAogICAgIGZpbHRlckVm
ZmVjdC0+c2V0U3ViUmVnaW9uKEZsb2F0UmVjdChfeCwgX3ksIF93aWR0aCwgX2hlaWdodCkpOwot
ICAgIGZpbHRlckVmZmVjdC0+c2V0UmVzdWx0KHJlc3VsdCgpKTsKIH0KIAogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJ
KHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDEyICs0MywxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KE1hcHBlZEF0dHJpYnV0ZSopOwogICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFs
IGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBi
b29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRlcyhTVkdSZXNv
dXJjZUZpbHRlciosIEZpbHRlckVmZmVjdCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotICAg
ICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRlcyhTVkdGaWx0ZXJFZmZlY3QqKSBjb25zdDsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVu
Z3RoLCBYLCB4KQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVy
LmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJj
ZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYxICsyNCwxMTUgQEAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKIAorI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKLSNpbmNsdWRlICJTVkdGaWx0
ZXJFZmZlY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBTVkdSZXNvdXJjZUZpbHRlcjo6U1ZHUmVzb3VyY2VGaWx0ZXIoKQotICAgIDogbV9wbGF0
Zm9ybURhdGEoY3JlYXRlUGxhdGZvcm1EYXRhKCkpCi0gICAgLCBtX2ZpbHRlckJCb3hNb2RlKGZh
bHNlKQorICAgIDogbV9maWx0ZXJCQm94TW9kZShmYWxzZSkKICAgICAsIG1fZWZmZWN0QkJveE1v
ZGUoZmFsc2UpCiAgICAgLCBtX3hCQm94TW9kZShmYWxzZSkKICAgICAsIG1feUJCb3hNb2RlKGZh
bHNlKQogeworICAgIG1fZmlsdGVyQnVpbGRlci5zZXQobmV3IEZpbHRlckJ1aWxkZXIoKSk7CiB9
CiAKLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmNsZWFyRWZmZWN0cygpCitGbG9hdFJlY3QgU1ZH
UmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hGb3JJdGVtQkJveChjb25zdCBGbG9hdFJlY3QmIGl0
ZW1CQm94KSBjb25zdAogewotICAgIG1fZWZmZWN0cy5jbGVhcigpOworICAgIEZsb2F0UmVjdCBm
aWx0ZXJCQm94ID0gZmlsdGVyUmVjdCgpOworCisgICAgaWYgKGZpbHRlckJvdW5kaW5nQm94TW9k
ZSgpKQorICAgICAgICBmaWx0ZXJCQm94ID0gRmxvYXRSZWN0KGl0ZW1CQm94LngoKSArIGZpbHRl
ckJCb3gueCgpICogaXRlbUJCb3gud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpdGVtQkJveC55KCkgKyBmaWx0ZXJCQm94LnkoKSAqIGl0ZW1CQm94LmhlaWdodCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3gud2lkdGgoKSAqIGl0ZW1C
Qm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQkJveC5o
ZWlnaHQoKSAqIGl0ZW1CQm94LmhlaWdodCgpKTsKKworICAgIHJldHVybiBmaWx0ZXJCQm94Owog
fQogCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjphZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyRWZm
ZWN0KiBlZmZlY3QpCit2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpmaWx0ZXJQcmltaXRpdmVTdWJS
ZWdpb24oRmlsdGVyRWZmZWN0KiBwcmltaXRpdmUpCiB7Ci0gICAgQVNTRVJUKGVmZmVjdCk7Cisg
ICAgRmxvYXRSZWN0IHN1YlJlZ2lvbkJCb3ggPSBwcmltaXRpdmUtPnN1YlJlZ2lvbigpOworICAg
IEZsb2F0UmVjdCB1c2VCQm94ID0gbV9maWx0ZXJCQm94OwogCi0gICAgaWYgKGVmZmVjdCkgewot
ICAgICAgICBBU1NFUlQoZWZmZWN0LT5maWx0ZXIoKSA9PSB0aGlzKTsKLSAgICAgICAgbV9lZmZl
Y3RzLmFwcGVuZChlZmZlY3QpOworICAgIGlmIChtX2VmZmVjdEJCb3hNb2RlKSB7CisgICAgICAg
IGlmICghbV9maWx0ZXJCQm94TW9kZSkKKyAgICAgICAgICAgIHVzZUJCb3ggPSBtX2l0ZW1CQm94
OworCisgICAgICAgIHN1YlJlZ2lvbkJCb3ggPSBGbG9hdFJlY3Qoc3ViUmVnaW9uQkJveC54KCkg
KiB1c2VCQm94LndpZHRoKCkgKyB1c2VCQm94LngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkgKyB1c2VCQm94Lnko
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LndpZHRoKCkg
KiB1c2VCQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUmVn
aW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIGlmIChwcmltaXRpdmUtPnhCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIHN1YlJl
Z2lvbkJCb3guc2V0WCh1c2VCQm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICogdXNlQkJveC53
aWR0aCgpKTsKKworICAgICAgICBpZiAocHJpbWl0aXZlLT55Qm91bmRpbmdCb3hNb2RlKCkpCisg
ICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFkodXNlQkJveC55KCkgKyBzdWJSZWdpb25CQm94
LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChwcmltaXRpdmUtPndpZHRo
Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFdpZHRoKHN1
YlJlZ2lvbkJCb3gud2lkdGgoKSAqIHVzZUJCb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKHBy
aW1pdGl2ZS0+aGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25C
Qm94LnNldEhlaWdodChzdWJSZWdpb25CQm94LmhlaWdodCgpICogdXNlQkJveC5oZWlnaHQoKSk7
CiAgICAgfQorCisgICAgcHJpbWl0aXZlLT5zZXRTdWJSZWdpb24oc3ViUmVnaW9uQkJveCk7CiB9
CiAKLUZsb2F0UmVjdCBTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVyQkJveEZvckl0ZW1CQm94KGNv
bnN0IEZsb2F0UmVjdCYgaXRlbUJCb3gpIGNvbnN0Cit2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpw
cmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
aXRlbVJlY3QpCiB7Ci0gICAgRmxvYXRSZWN0IGZpbHRlckJCb3ggPSBmaWx0ZXJSZWN0KCk7Cisg
ICAgaWYgKGJ1aWxkZXIoKS0+ZW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQg
eE9mZnNldCA9IDAuMGY7Ci0gICAgZmxvYXQgeU9mZnNldCA9IDAuMGY7CisgICAgRmxvYXRSZWN0
IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goaXRlbVJlY3QpOwogCi0gICAgaWYg
KCFlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgewotICAgICAgICB4T2Zmc2V0ID0gaXRlbUJCb3gu
eCgpOwotICAgICAgICB5T2Zmc2V0ID0gaXRlbUJCb3gueSgpOwotICAgIH0KKyAgICAvLyBEcmF3
IHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIGl0J3MgY2hpbGRzIHRvIGEg
aW1hZ2VCdWZmZXIgdG8gZ2V0IHRoZSBTb3VyY2VHcmFwaGljLgorICAgIC8vIFRoZSBzaXplIG9m
IHRoZSBTb3VyY2VHcmFwaGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQsIHRo
ZSBmaWx0ZXIgaXMgYXBsaWVkIHRvLgorICAgIGF1dG9fcHRyPEltYWdlQnVmZmVyPiBzb3VyY2VH
cmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoSW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KGZpbHRl
clJlY3QpKS5zaXplKCksIGZhbHNlKSk7CisgICAgCisgICAgaWYgKCFzb3VyY2VHcmFwaGljLmdl
dCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZmlsdGVyQm91bmRpbmdCb3hNb2RlKCkp
IHsKLSAgICAgICAgZmlsdGVyQkJveCA9IEZsb2F0UmVjdCh4T2Zmc2V0ICsgZmlsdGVyQkJveC54
KCkgKiBpdGVtQkJveC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlP
ZmZzZXQgKyBmaWx0ZXJCQm94LnkoKSAqIGl0ZW1CQm94LmhlaWdodCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3gud2lkdGgoKSAqIGl0ZW1CQm94LndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQkJveC5oZWlnaHQoKSAqIGl0
ZW1CQm94LmhlaWdodCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoeEJvdW5kaW5nQm94
TW9kZSgpKQotICAgICAgICAgICAgZmlsdGVyQkJveC5zZXRYKHhPZmZzZXQgKyBmaWx0ZXJCQm94
LngoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJj
ZUdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0
KEZsb2F0UmVjdCgwLCAwLCBmaWx0ZXJSZWN0LndpZHRoKCksIGZpbHRlclJlY3QuaGVpZ2h0KCkp
KTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKC1maWx0ZXJSZWN0LngoKSwg
LWZpbHRlclJlY3QueSgpKTsKIAotICAgICAgICBpZiAoeUJvdW5kaW5nQm94TW9kZSgpKQotICAg
ICAgICAgICAgZmlsdGVyQkJveC5zZXRZKHlPZmZzZXQgKyBmaWx0ZXJCQm94LnkoKSk7Ci0gICAg
fQorICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5zZXQoc291cmNlR3JhcGhpYy5yZWxlYXNlKCkp
OworICAgIG1fc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAotICAgIHJldHVybiBmaWx0ZXJCQm94
OworICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsKK30KKwordm9pZCBTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3Qg
RmxvYXRSZWN0JiBpdGVtUmVjdCkKK3sKKyAgICBpZiAoYnVpbGRlcigpLT5lbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fc2F2ZWRDb250ZXh0KQorICAgICAgICByZXR1cm47
CisKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChpdGVt
UmVjdCk7CisKKyAgICBzZXRGaWx0ZXJCb3VuZGluZ0JveChmaWx0ZXJSZWN0KTsKKyAgICBzZXRJ
dGVtQm91bmRpbmdCb3goaXRlbVJlY3QpOworCisgICAgY29udGV4dCA9IG1fc2F2ZWRDb250ZXh0
OworICAgIG1fc2F2ZWRDb250ZXh0ID0gMDsKKworICAgIG1fZmlsdGVyQnVpbGRlci0+bGFzdEZp
bHRlcigpLT5hcHBseSh0aGlzKTsKKworICAgIC8vIGNhbiBiZSBudWxsLCBpZiBhIGZpbHRlciBp
cyBub3QgaW1wZW1lbnRlZAorICAgIGlmIChtX2ZpbHRlckJ1aWxkZXItPmxhc3RGaWx0ZXIoKS0+
cmVzdWx0SW1hZ2UoKSkKKyAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fZmlsdGVyQnVpbGRl
ci0+bGFzdEZpbHRlcigpLT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCBmaWx0ZXJSZWN0KTsKKwor
ICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwogfQogCiBUZXh0U3RyZWFtJiBTVkdS
ZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29u
c3QKQEAgLTEwMiw4ICsxNTYsNiBAQCBUZXh0U3RyZWFtJiBTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0
ZXJuYWxSCiAgICAgICAgIHRzIDw8ICIgW2JvdW5kaW5nIGJveCBtb2RlPSIgPDwgZmlsdGVyQm91
bmRpbmdCb3hNb2RlKCkgPDwgIl0iOwogICAgIGlmIChlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkg
Ly8gZGVmYXVsdCBpcyBmYWxzZQogICAgICAgICB0cyA8PCAiIFtlZmZlY3QgYm91bmRpbmcgYm94
IG1vZGU9IiA8PCBlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSA8PCAiXSI7Ci0gICAgaWYgKG1fZWZm
ZWN0cy5zaXplKCkgPiAwKQotICAgICAgICB0cyA8PCAiIFtlZmZlY3RzPSIgPDwgbV9lZmZlY3Rz
IDw8ICJdIjsKIAogICAgIHJldHVybiB0czsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxOSArMjYsMTYg
QEAKICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5o
IgogCisjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBG
aWx0ZXJCdWlsZGVyOworY2xhc3MgRmlsdGVyRWZmZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwotY2xhc3MgU1ZHRmlsdGVyRWZmZWN0OwotICAgIAotY2xhc3MgU1ZHUmVzb3VyY2VGaWx0ZXJQ
bGF0Zm9ybURhdGEgewotcHVibGljOgotICAgIHZpcnR1YWwgflNWR1Jlc291cmNlRmlsdGVyUGxh
dGZvcm1EYXRhKCkge30KLX07CiAKIGNsYXNzIFNWR1Jlc291cmNlRmlsdGVyIDogcHVibGljIFNW
R1Jlc291cmNlIHsKIHB1YmxpYzoKQEAgLTYxLDI0ICs1OCwyNSBAQCBwdWJsaWM6CiAgICAgRmxv
YXRSZWN0IGZpbHRlclJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlY3Q7IH0KICAgICB2
b2lkIHNldEZpbHRlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fZmlsdGVyUmVjdCA9
IHJlY3Q7IH0KIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goY29uc3QgRmxv
YXRSZWN0JiBpdGVtQkJveCkgY29uc3Q7CisgICAgRmxvYXRSZWN0IGZpbHRlckJvdW5kaW5nQm94
KCkgeyByZXR1cm4gbV9maWx0ZXJCQm94OyB9CisgICAgdm9pZCBzZXRGaWx0ZXJCb3VuZGluZ0Jv
eChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9maWx0ZXJCQm94ID0gcmVjdDsgfQorCisgICAg
RmxvYXRSZWN0IGl0ZW1Cb3VuZGluZ0JveCgpIHsgcmV0dXJuIG1faXRlbUJCb3g7IH0KKyAgICB2
b2lkIHNldEl0ZW1Cb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9pdGVtQkJv
eCA9IHJlY3Q7IH0KIAotICAgIHZvaWQgY2xlYXJFZmZlY3RzKCk7Ci0gICAgdm9pZCBhZGRGaWx0
ZXJFZmZlY3QoU1ZHRmlsdGVyRWZmZWN0Kik7CisgICAgRmxvYXRSZWN0IGZpbHRlckJCb3hGb3JJ
dGVtQkJveChjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdDsKKyAgICB2b2lkIGZpbHRl
clByaW1pdGl2ZVN1YlJlZ2lvbihGaWx0ZXJFZmZlY3QqKTsKIAogICAgIHZpcnR1YWwgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICAv
LyBUbyBiZSBpbXBsZW1lbnRlZCBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgotICAgIHZvaWQg
cHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsK
LSAgICB2b2lkIGFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3Qm
IGJib3gpOwotICAgIAotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKiBwbGF0Zm9y
bURhdGEoKSB7IHJldHVybiBtX3BsYXRmb3JtRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFZlY3Rv
cjxTVkdGaWx0ZXJFZmZlY3QqPiYgZWZmZWN0cygpIHsgcmV0dXJuIG1fZWZmZWN0czsgfQorICAg
IHZvaWQgcHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0Jik7
CisgICAgdm9pZCBhcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0
Jik7CisKKyAgICBJbWFnZUJ1ZmZlciogc291cmNlR3JhcGhpYygpIHsgcmV0dXJuIG1fc291cmNl
R3JhcGhpY0J1ZmZlci5yZWxlYXNlKCk7IH0KKworICAgIEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIo
KSB7IHJldHVybiBtX2ZpbHRlckJ1aWxkZXIuZ2V0KCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAg
U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEqIGNyZWF0ZVBsYXRmb3JtRGF0YSgpOwotICAg
IAotICAgIE93blB0cjxTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YT4gbV9wbGF0Zm9ybURh
dGE7CiAKICAgICBib29sIG1fZmlsdGVyQkJveE1vZGUgOiAxOwogICAgIGJvb2wgbV9lZmZlY3RC
Qm94TW9kZSA6IDE7CkBAIC04Nyw3ICs4NSwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV95QkJv
eE1vZGUgOiAxOwogCiAgICAgRmxvYXRSZWN0IG1fZmlsdGVyUmVjdDsKLSAgICBWZWN0b3I8U1ZH
RmlsdGVyRWZmZWN0Kj4gbV9lZmZlY3RzOworCisgICAgRmxvYXRSZWN0IG1fZmlsdGVyQkJveDsK
KyAgICBGbG9hdFJlY3QgbV9pdGVtQkJveDsKKworICAgIG11dGFibGUgT3duUHRyPEZpbHRlckJ1
aWxkZXI+IG1fZmlsdGVyQnVpbGRlcjsKKyAgICBtdXRhYmxlIEdyYXBoaWNzQ29udGV4dCogbV9z
YXZlZENvbnRleHQ7CisgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlR3Jh
cGhpY0J1ZmZlcjsKIH07CiAKIFNWR1Jlc291cmNlRmlsdGVyKiBnZXRGaWx0ZXJCeUlkKERvY3Vt
ZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDQzNjE4
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5j
bHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgRkVD
b252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYSgKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBw
cmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0cml4OjphcHBseSgpCit2b2lk
IEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0
cml4LmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVk
ZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjgsNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBy
ZXNlcnZlQWxwaGEoYm9vbCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDQz
NjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdMaWdo
dFNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAi
U1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgRkVEaWZmdXNl
TGlnaHRpbmc6OnNldExpZ2h0U291cmNlKEwKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3Vy
Y2U7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVEaWZmdXNl
TGlnaHRpbmc6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAko
cmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSopOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0
ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC03NCw3ICs3NSw3IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZs
b2F0IHMKICAgICBtX3NjYWxlID0gc2NhbGU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OmFwcGx5KCkKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
KikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2FsZSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291
cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlz
aW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsMTMgQEAKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUZsb29kLmgiCisKKyNpbmNsdWRl
ICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTksNyArNjUsNyBAQCB2b2lkIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0
eShmbG9hdCBmbG9vCiAgICAgbV9mbG9vZE9wYWNpdHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKLXZv
aWQgRkVGbG9vZDo6YXBwbHkoKQordm9pZCBGRUZsb29kOjphcHBseShTVkdSZXNvdXJjZUZpbHRl
ciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9v
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9v
ZC5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zOCw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Rmxvb2RP
cGFjaXR5KGZsb2F0KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIlNWR1Jl
bmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6
c2V0U3RkRGV2aWF0aW9uWShmbAogICAgIG1feSA9IHk7CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJs
dXI6OmFwcGx5KCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
KikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNz
aWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0
LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3Rk
RGV2aWF0aW9uWShmbG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYg
KzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVk
ZSAiU1ZHRkVJbWFnZS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYz
LDcgKzY0LDcgQEAgdm9pZCBGRUltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZQogICAg
ICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAKLXZvaWQgRkVJbWFnZTo6
YXBwbHkoKQordm9pZCBGRUltYWdlOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lv
biA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VD
bGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldENh
Y2hlZEltYWdlKENhY2hlZEltYWdlKik7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAkocmV2aXNpb24g
NDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTWVyZ2UuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00OCw3ICs0OSw3IEBAIHZvaWQgRkVNZXJnZTo6c2V0TWVyZ2VJ
bnB1dHMoY29uc3QgVmVjdG8KICAgICBtX21lcmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7CiB9CiAK
LXZvaWQgRkVNZXJnZTo6YXBwbHkoKQordm9pZCBGRU1lcmdlOjphcHBseShTVkdSZXNvdXJjZUZp
bHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
ZXJnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
ZXJnZS5oCShyZXZpc2lvbiA0MzYxOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNZXJnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIApAQCAtMzYsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0
IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIG1lcmdlSW5wdXRz
KTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQog
I2luY2x1ZGUgIlNWR0ZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1Rl
eHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTcxLDcgKzcyLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxv
YXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7CiB9CiAKLXZvaWQgRkVNb3JwaG9sb2d5
OjphcHBseSgpCit2b2lkIEZFTW9ycGhvbG9neTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQog
ewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9n
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3Jw
aG9sb2d5LmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZs
b2F0IHJhZGl1c1koKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZsb2F0KTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAg
ICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNv
bnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0
LmNwcAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFT2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRU9mZnNldC5oIgog
I2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgdm9pZCBG
RU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zm
c2V0OjphcHBseSgpCit2b2lkIEZFT2Zmc2V0OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJ
KHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9m
ZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
Nyw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZHkoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXREeShmbG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFw
cGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNw
cAkocmV2aXNpb24gNDM2MTgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
U3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1
ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI0
LDcgKzEyNSw3IEBAIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZSgKICAg
ICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVTcGVjdWxhckxpZ2h0
aW5nOjphcHBseSgpCit2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6YXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
U3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiU1ZH
TGlnaHRTb3VyY2UuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdS
ZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU2LDcgKzU3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRT
b3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSop
OwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsK
ICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGls
ZS5jcHAJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFVGlsZS5oIgogI2lu
Y2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM2LDcgKzM3LDcgQEAgUGFzc1JlZlB0
cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRlcgogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RkVUaWxlKGluKSk7CiB9CiAKLXZvaWQgRkVUaWxlOjphcHBseSgpCit2b2lkIEZFVGlsZTo6YXBw
bHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBA
QAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAKQEAgLTMxLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVUaWxlPiBjcmVhdGUoRmls
dGVyRWZmZWN0Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdDsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCShyZXZpc2lvbiA0MzYxOCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2UuaCIKICNpbmNsdWRlICJTVkdSZW5k
ZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0xMDUsNyArMTA2LDcgQEAgdm9pZCBGRVR1cmJ1bGVuY2U6OnNl
dFN0aXRjaFRpbGVzKGJvb2wgcwogICAgIG1fc3RpdGNoVGlsZXMgPSBzdGl0Y2g7CiB9CiAKLXZv
aWQgRkVUdXJidWxlbmNlOjphcHBseSgpCit2b2lkIEZFVHVyYnVsZW5jZTo6YXBwbHkoU1ZHUmVz
b3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFVHVyYnVsZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHJldmlzaW9uIDQzNjE4KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2lu
Y2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsNyArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgc3RpdGNoVGlsZXMoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRT
dGl0Y2hUaWxlcyhib29sKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30424</attachid>
            <date>2009-05-17 11:43:11 -0700</date>
            <delta_ts>2009-05-20 13:02:31 -0700</delta_ts>
            <desc>initial SVG Filter patch</desc>
            <filename>svg-filter-part1.patch</filename>
            <type>text/plain</type>
            <size>94970</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzgxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTczIEBACisyMDA5LTA1LTE3ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnJp
bmcgdXAgdGhlIGJhc2ljIGZpbHRlciBzeXN0ZW0uIEZpbHRlciByZWdpb25zIGFuZCBmaWx0ZXIg
cHJpbWl0aXZlIAorICAgICAgICBzdWJyZWdpb25zIHdvcmsgYWdhaW4uIEEgc2ltcGxlIGV4YW1w
bGUgZWZmZWN0IHdhcyBhZGRlZDogZmVGbG9vZC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFt
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUJsZW5kOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmFw
cGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVDb21wb3NpdGU6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUFscGhhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmFwcGx5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpkdW1wKToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlR3JhcGhpYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmFw
cGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmR1bXApOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogcmVuZGVy
aW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFz
ZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5k
ZXJCYXNlOjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKiBzdmcvRmlsdGVyLmg6
CisgICAgICAgICogc3ZnL0ZpbHRlckJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckJ1aWxkZXI6OkZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRl
cjo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6bGFzdEZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpGaWx0ZXJF
ZmZlY3QpOgorICAgICAgICAqIHN2Zy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6eEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnNldFhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0Ojp5Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0WUJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OndpZHRoQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6
c2V0V2lkdGhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpoZWlnaHRCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpzZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0OjpzdWJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRTdWJS
ZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpyZXN1bHRJbWFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEVmZmVjdEJ1ZmZlcik6CisgICAgICAg
ICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxl
bmRFbGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJs
ZW5kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OlNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpTVkdGRUZsb29kRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VFbGVtZW50OjpTVkdGRU1lcmdlRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9T
VkdGRU1lcmdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpTVkdGRU9mZnNldEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJM
aWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAq
IHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxlbWVudDo6U1ZH
RkVUaWxlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50OjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVUdXJidWxl
bmNlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNhbnZhc1Jlc291cmNlKToKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRh
cmRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OmNvbnRleHRFbGVtZW50KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6
OlNWR1Jlc291cmNlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVy
OjpmaWx0ZXJCQm94Rm9ySXRlbUJCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VG
aWx0ZXI6OmZpbHRlclByaW1pdGl2ZVN1YlJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VG
aWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6
OmZpbHRlckJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVy
OjpzZXRGaWx0ZXJCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZp
bHRlcjo6aXRlbUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmls
dGVyOjpzZXRJdGVtQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VG
aWx0ZXI6OnNvdXJjZUdyYXBoaWMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0
ZXI6OmJ1aWxkZXIpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9s
dmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6YXBwbHkp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBw
bHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjphcHBseSk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9m
ZnNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6YXBwbHkpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFU3BlY3VsYXJMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmFwcGx5KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaDoKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVUdXJidWxlbmNlOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUdXJidWxlbmNlLmg6CisKIDIwMDktMDUtMTcgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KSW5kZXg6IFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gNDM4MDgpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDI1LDYgKzE0MjUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIFwKKyAgICBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEgXAorICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oIFwKIAlXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmNwcCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oIFwKQEAgLTI5MjQsMTAgKzI5MjYsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oIFwKIAlXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oCiAKLXdlYmNvcmVn
dGtfc291cmNlcyArPSBcCi0JV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVzb3VyY2VG
aWx0ZXJDYWlyby5jcHAKLQotCiAjIFNWRyBGZWF0dXJlcwogaWYgRU5BQkxFX1NWR19VU0UKIEZF
QVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfVVNFPTEKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHJldmlzaW9uIDQz
ODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZFQmxlbmQuaCIKIAorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVCbGVuZDo6RkVCbGVuZChG
aWx0ZXJFZmZlY3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgQmxlbmRNb2RlVHlwZSBtb2RlKQpA
QCAtNTksNyArNjEsNyBAQCB2b2lkIEZFQmxlbmQ6OnNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBl
CiAgICAgbV9tb2RlID0gbW9kZTsKIH0KIAotdm9pZCBGRUJsZW5kOjphcHBseSgpCit2b2lkIEZF
QmxlbmQ6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiA0MzgwOCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDggQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBlbnVtIEJsZW5kTW9kZVR5cGUg
ewpAQCAtNDYsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJsZW5kTW9k
ZVR5cGUgYmxlbmRNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5k
TW9kZVR5cGUpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHJldmlzaW9uIDQz
ODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAorI2luY2x1
ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRkVDb2xv
ck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXJFZmZlY3QqIGluLCBDb2xvck1hdHJpeFR5cGUg
dHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQpAQCAtNTksNyArNjEsNyBAQCB2b2lk
IEZFQ29sb3JNYXRyaXg6OnNldFZhbHVlcyhjb25zdCBWZWN0CiAgICAgbV92YWx1ZXMgPSB2YWx1
ZXM7CiB9CiAKLXZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHkoKQordm9pZCBGRUNvbG9yTWF0cml4
OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkocmV2aXNpb24gNDM4
MDgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisKKyNpbmNsdWRl
ICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDYsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcygpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmls
dGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDYgKzI0LDggQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5oIgogCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGRUNvbXBvbmVudFRyYW5zZmVy
OjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIApAQCAtODMsNyArODUsNyBAQCB2b2lkIEZFQ29tcG9u
ZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3RpCiAgICAgbV9hbHBoYUZ1bmMgPSBmdW5jOwogfQog
Ci12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KCkKK3ZvaWQgRkVDb21wb25lbnRUcmFu
c2Zlcjo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVy
LmgJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsOSBAQAog
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgorCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIKKyNpbmNsdWRl
ICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC03
OCw3ICs4MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QWxwaGFG
dW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CiAgICAgICAgIAotICAg
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNW
R1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAKICAgICBw
cml2YXRlOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0
LDggQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
RkVDb21wb3NpdGUuaCIKIAorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRkVDb21wb3NpdGU6OkZFQ29tcG9zaXRlKEZpbHRlckVmZmVjdCog
aW4sIEZpbHRlckVmZmVjdCogaW4yLCBjb25zdCBDb21wb3NpdGVPcGVyYXRpb25UeXBlJiB0eXBl
LApAQCAtOTUsNyArOTcsNyBAQCB2b2lkIEZFQ29tcG9zaXRlOjpzZXRLNChmbG9hdCBrNCkKICAg
ICBtX2s0ID0gazQ7CiB9CiAKLXZvaWQgRkVDb21wb3NpdGU6OmFwcGx5KCkKK3ZvaWQgRkVDb21w
b3NpdGU6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDQz
ODA4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VG
aWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgZW51bSBDb21wb3NpdGVPcGVy
YXRpb25UeXBlIHsKQEAgLTU4LDcgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBmbG9hdCBrNCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEs0KGZsb2F0KTsKICAgICAgICAg
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKIAog
ICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgU291cmNlQWxwaGFfaAorI2RlZmluZSBTb3VyY2VBbHBoYV9oCisKKyNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvdXJjZUFscGhhIDogcHVibGljIEZp
bHRlckVmZmVjdCB7CisgICAgcHVibGljOiAgICAgICAgCisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNvdXJjZUFscGhhPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQWxw
aGEoKSk7IH0KKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJj
ZUZpbHRlciogcmVzb3VyY2UpIHsKKyAgICAgICAgICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IElu
dFNpemUocmVzb3VyY2UtPml0ZW1Cb3VuZGluZ0JveCgpLndpZHRoKCksIHJlc291cmNlLT5pdGVt
Qm91bmRpbmdCb3goKS5oZWlnaHQoKSk7CisgICAgICAgICAgICBzdGQ6OmF1dG9fcHRyPEltYWdl
QnVmZmVyPiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFs
c2UpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFmaWx0ZXJHcmFwaGljLmdldCgp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc2V0U3ViUmVnaW9uKHJl
c291cmNlLT5pdGVtQm91bmRpbmdCb3goKSk7CisKKyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4
dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICAgICAgICAg
IGZpbHRlckNvbnRleHQtPnNhdmUoKTsKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQtPnRyYW5z
bGF0ZSgtc3ViUmVnaW9uKCkueCgpLCAtc3ViUmVnaW9uKCkueSgpKTsKKyAgICAgICAgICAgIGZp
bHRlckNvbnRleHQtPmZpbGxSZWN0KHN1YlJlZ2lvbigpLCBDb2xvcigwLCAwLCAwKSk7CisgICAg
ICAgICAgICBmaWx0ZXJDb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlRGVz
dGluYXRpb25Jbik7CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2UocmVzb3Vy
Y2UtPnNvdXJjZUdyYXBoaWMoKS0+aW1hZ2UoKSwgc3ViUmVnaW9uKCkpOworICAgICAgICAgICAg
ZmlsdGVyQ29udGV4dC0+cmVzdG9yZSgpOworCisgICAgICAgICAgICBzZXRFZmZlY3RCdWZmZXIo
ZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOworICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkdW1wKCkgeyB9CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgU291cmNlQWxwaGEoKSB7
IH0KKyAgICB9OworfSAvL25hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBTb3VyY2VBbHBoYV9oCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwuY29t
PgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpZm5kZWYgU291cmNlR3JhcGhpY19oCisjZGVmaW5lIFNvdXJjZUdyYWhwaWNfaAorCisj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisgICAgY2xhc3MgU291cmNlR3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3Qgewor
ICAgIHB1YmxpYzogICAgICAgIAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VHcmFw
aGljPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlR3JhcGhpYygpKTsgfQor
ICAgICAgICAKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKiBy
ZXNvdXJjZSkgeworICAgICAgICAgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShyZXNv
dXJjZS0+aXRlbUJvdW5kaW5nQm94KCkud2lkdGgoKSwgcmVzb3VyY2UtPml0ZW1Cb3VuZGluZ0Jv
eCgpLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZp
bHRlckdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSkpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzZXRTdWJSZWdpb24ocmVzb3VyY2UtPml0
ZW1Cb3VuZGluZ0JveCgpKTsKKworICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJD
b250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgICAgICAgICAgZmlsdGVyQ29u
dGV4dC0+c2F2ZSgpOworICAgICAgICAgICAgZmlsdGVyQ29udGV4dC0+dHJhbnNsYXRlKC1zdWJS
ZWdpb24oKS54KCksIC1zdWJSZWdpb24oKS55KCkpOworICAgICAgICAgICAgZmlsdGVyQ29udGV4
dC0+Y2xlYXJSZWN0KHN1YlJlZ2lvbigpKTsKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQtPmRy
YXdJbWFnZShyZXNvdXJjZS0+c291cmNlR3JhcGhpYygpLT5pbWFnZSgpLCBzdWJSZWdpb24oKSk7
CisgICAgICAgICAgICBmaWx0ZXJDb250ZXh0LT5yZXN0b3JlKCk7CisKKyAgICAgICAgICAgIHNl
dEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgdmlydHVhbCB2b2lkIGR1bXAoKSB7IH0KKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBT
b3VyY2VHcmFwaGljKCkgeyB9CisgICAgfTsKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorCisjZW5kaWYgLy8gU291
cmNlR3JhcGhpY19oCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
cmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6
cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAgaWYgKGZp
bHRlcikgewogICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAg
ICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7
CisgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0
LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKICAgICB9IGVsc2UgaWYgKCFmaWx0ZXJJZC5pc0VtcHR5
KCkpCiAgICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMo
KS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVtZW50KTsKICNlbmRpZgpA
QCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29u
dGUKIAogI2lmIEVOQUJMRShTVkdfRklMVEVSUykKICAgICBpZiAoZmlsdGVyKSB7Ci0gICAgICAg
IGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94KTsKKyAg
ICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0LT5vYmpl
Y3RCb3VuZGluZ0JveCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQgPSBzYXZlZENvbnRl
eHQ7CiAgICAgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2
Zy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlcj4gY3JlYXRlKEZpbHRlckVm
ZmVjdCopOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBGaWx0ZXIoRmlsdGVyRWZm
ZWN0KiBlZmZlY3QpOworICAgICAgICBGaWx0ZXIoRmlsdGVyRWZmZWN0Kik7CiAgICAgCiAgICAg
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZWZmZWN0OwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L3N2Zy9GaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyQnVp
bGRlci5oCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjMsMjggKzIzLDc0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJGaWx0ZXIu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgi
CisjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAg
Ci0gICAgY2xhc3MgRmlsdGVyQnVpbGRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckJ1aWxk
ZXI+IHsKKworICAgIGNsYXNzIFN0cmluZ0ltcGw7CisKKyAgICBjbGFzcyBGaWx0ZXJCdWlsZGVy
IDogUmVmQ291bnRlZDxGaWx0ZXJCdWlsZGVyPiB7CiAgICAgcHVibGljOgotICAgICAgICB2b2lk
IGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KSB7
IG1fbmFtZWRFZmZlY3RzLnNldChpZC5pbXBsKCksIGVmZmVjdCk7IH0KLSAgICAgICAgRmlsdGVy
RWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgcmV0dXJuIG1f
bmFtZWRFZmZlY3RzLmdldChpZC5pbXBsKCkpLmdldCgpOyB9Ci0gICAgICAgIAotICAgICAgICBQ
YXNzUmVmUHRyPEZpbHRlcj4gZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXI7IH0KLSAg
ICAgICAgCisKKyAgICAgICAgRmlsdGVyQnVpbGRlcigpIHsKKyAgICAgICAgICAgIG1fc291cmNl
QWxwaGEgPSBTb3VyY2VBbHBoYTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX3NvdXJjZUdyYXBo
aWMgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
YWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpIHsK
KyAgICAgICAgICAgIG1fbGFzdEVmZmVjdCA9IGVmZmVjdC5nZXQoKTsKKworICAgICAgICAgICAg
aWYoIWlkLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBtX25hbWVkRWZmZWN0cy5zZXQoaWQu
aW1wbCgpLCBlZmZlY3QuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgRmlsdGVyRWZmZWN0
KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0IHsgICAgICAgICAKKyAgICAg
ICAgICAgIGlmKGlkLmlzRW1wdHkoKSAmJiBtX2xhc3RFZmZlY3QpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsKKworICAgICAgICAgICAgLy8gSWYgaWQgaXNuJ3Qg
ZGVjbGFyZWQgYW5kIGxhc3RFZmZlY3QgaXMgc3RpbGwgbnVsbCB0aGVuIEZpbHRlckJ1aWxkZXIg
d2lsbCByZXR1cm4KKyAgICAgICAgICAgIC8vIGEgU291cmNlR3JhcGhpYyBvYmplY3QgYXMgcGVy
IHRoZSBTcGVjLgorICAgICAgICAgICAgaWYoaWQuaXNFbXB0eSgpICYmICFtX2xhc3RFZmZlY3Qp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc291cmNlR3JhcGhpYy5nZXQoKTsKKworICAgICAg
ICAgICAgaWYoaWQgPT0gU3RyaW5nKCJTb3VyY2VHcmFwaGljIikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fc291cmNlR3JhcGhpYy5nZXQoKTsKKyAgICAgICAgICAgIGlmKGlkID09IFN0cmlu
ZygiU291cmNlQWxwaGEiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zb3VyY2VBbHBoYS5n
ZXQoKTsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAorICAg
ICAgICAgICAgaWYoaWQgPT0gU3RyaW5nKCJCYWNrZ3JvdW5kR3JhcGhpYyIpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtX3NvdXJjZUdyYXBoaWMuZ2V0KCk7CisgICAgICAgICAgICBpZihpZCA9
PSBTdHJpbmcoIkJhY2tncm91bmRBbHBoYSIpKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3Nv
dXJjZUdyYXBoaWMuZ2V0KCk7CisgICAgICAgICAgICBpZihpZCA9PSBTdHJpbmcoIkZpbGxQYWlu
dCIpKQorICAgICAgICAgICAgICAgIHJldHVybiBtX3NvdXJjZUdyYXBoaWMuZ2V0KCk7CisgICAg
ICAgICAgICBpZihpZCA9PSBTdHJpbmcoIlN0cm9rZVBhaW50IikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1fc291cmNlR3JhcGhpYy5nZXQoKTsKKworICAgICAgICAgICAgcmV0dXJuIG1fbmFt
ZWRFZmZlY3RzLmdldChpZC5pbXBsKCkpLmdldCgpOworICAgICAgICB9CisKKyAgICAgICAgRmls
dGVyRWZmZWN0KiBsYXN0RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgp
OyB9CisKKyAgICAgICAgdm9pZCBjbGVhckVmZmVjdHMoKSB7CisgICAgICAgICAgICBtX2xhc3RF
ZmZlY3QgPSAwOworICAgICAgICAgICAgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsKKyAgICAgICAg
fQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgUmVmUHRyPEZp
bHRlckVmZmVjdD4gPiBtX25hbWVkRWZmZWN0czsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxG
aWx0ZXI+IG1fZmlsdGVyOworCisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVm
ZmVjdDsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VHcmFwaGljOworICAg
ICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX3NvdXJjZUFscGhhOwogICAgIH07Ci0gICAgCisK
IH0gLy9uYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysr
IFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0
KCkKKyAgICA6IG1feEJCb3hNb2RlKGZhbHNlKQorICAgICwgbV95QkJveE1vZGUoZmFsc2UpCisg
ICAgLCBtX3dpZHRoQkJveE1vZGUoZmFsc2UpCisgICAgLCBtX2hlaWdodEJCb3hNb2RlKGZhbHNl
KQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3Jl
L3N2Zy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsOSBAQAogI2Rl
ZmluZSBGaWx0ZXJFZmZlY3RfaAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisj
aW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMzIsMTMgKzM1LDQzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWx0ZXJFZmZlY3QgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWx0ZXJFZmZlY3Q+IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfkZpbHRlckVmZmVj
dCgpOwotICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCkgPSAwOworCisgICAg
ICAgIGJvb2wgeEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1feEJCb3hNb2RlOyB9
CisgICAgICAgIHZvaWQgc2V0WEJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feEJC
b3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIHlCb3VuZGluZ0JveE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX3lCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldFlCb3VuZGluZ0Jv
eE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX3lCQm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAg
ICAgYm9vbCB3aWR0aEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhCQm94
TW9kZTsgfQorICAgICAgICB2b2lkIHNldFdpZHRoQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1v
ZGUpIHsgbV93aWR0aEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBib29sIGhlaWdo
dEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0QkJveE1vZGU7IH0KKyAg
ICAgICAgdm9pZCBzZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX2hl
aWdodEJCb3hNb2RlID0gYmJveE1vZGU7IH0KKworICAgICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJSZWdpb247IH0KKyAgICAgICAgdm9pZCBzZXRTdWJSZWdp
b24oY29uc3QgRmxvYXRSZWN0JiBzdWJSZWdpb24pIHsgbV9zdWJSZWdpb24gPSBzdWJSZWdpb247
IH0KKworICAgICAgICAvLyBUaGUgcmVzdWx0IGlzIGJvdW5kZWQgYnkgdGhlIHNpemUgb2YgdGhl
IGZpbHRlciBwcmltaXRpdmUgdG8gc2F2ZSByZXNvdXJjZXMKKyAgICAgICAgSW1hZ2VCdWZmZXIq
IHJlc3VsdEltYWdlKCkgeyByZXR1cm4gbV9lZmZlY3RCdWZmZXIuZ2V0KCk7IH0KKyAgICAgICAg
dm9pZCBzZXRFZmZlY3RCdWZmZXIoSW1hZ2VCdWZmZXIqIGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVj
dEJ1ZmZlci5zZXQoZWZmZWN0QnVmZmVyKTsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShTVkdSZXNvdXJjZUZpbHRlciopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9
IDA7Ci0gICAgICAgIAorCiAgICAgICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBG
aWx0ZXJFZmZlY3QoKTsKKworICAgIHByaXZhdGU6CisKKyAgICAgICAgYm9vbCBtX3hCQm94TW9k
ZSA6IDE7CisgICAgICAgIGJvb2wgbV95QkJveE1vZGUgOiAxOworICAgICAgICBib29sIG1fd2lk
dGhCQm94TW9kZSA6IDE7CisgICAgICAgIGJvb2wgbV9oZWlnaHRCQm94TW9kZSA6IDE7CisKKyAg
ICAgICAgRmxvYXRSZWN0IG1fc3ViUmVnaW9uOworCisgICAgICAgIG11dGFibGUgT3duUHRyPElt
YWdlQnVmZmVyPiBtX2VmZmVjdEJ1ZmZlcjsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysr
IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNiBAQCBTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQoY29uCiAgICAg
LCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQogICAgICwgbV9pbjIodGhpcywgU1ZHTmFt
ZXM6OmluMkF0dHIpCiAgICAgLCBtX21vZGUodGhpcywgU1ZHTmFtZXM6Om1vZGVBdHRyLCBGRUJM
RU5EX01PREVfTk9STUFMKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNjUs
MjEgKzY0LDE3IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUJsZW5kRWxlbWVudDo6
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZF
QmxlbmRFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IAotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNW
R0ZFQmxlbmRFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyUmVzb3Vy
Y2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZighaW5wdXQxIHx8
ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1
bHQoKSwgRkVCbGVuZDo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxCbGVuZE1v
ZGVUeXBlPiAobW9kZSgpKSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
QmxlbmQ6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4g
KG1vZGUoKSkpOworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZm
ZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCks
IGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDEyIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQmxlbmRFbGVtZW50KCk7CiAKICAgICAgICAg
dmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAg
ICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmls
dGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUJsZW5kRWxlbWVu
dCwgU1ZHTmFtZXM6OmZlQmxlbmRUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0
cmluZywgSW4xLCBpbjEpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhT
VkdGRUJsZW5kRWxlbWVudCwgU1ZHTmFtZXM6OmZlQmxlbmRUYWdTdHJpbmcsIFNWR05hbWVzOjpp
bjJBdHRyU3RyaW5nLCBTdHJpbmcsIEluMiwgaW4yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFnU3Ry
aW5nLCBTVkdOYW1lczo6bW9kZUF0dHJTdHJpbmcsIGludCwgTW9kZSwgbW9kZSkKLQotICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxGRUJsZW5kPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQCBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6U1ZHRkVDb2xvck1hdHJpCiAgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6
aW5BdHRyKQogICAgICwgbV90eXBlKHRoaXMsIFNWR05hbWVzOjp0eXBlQXR0ciwgRkVDT0xPUk1B
VFJJWF9UWVBFX1VOS05PV04pCiAgICAgLCBtX3ZhbHVlcyh0aGlzLCBTVkdOYW1lczo6dmFsdWVz
QXR0ciwgU1ZHTnVtYmVyTGlzdDo6Y3JlYXRlKFNWR05hbWVzOjp2YWx1ZXNBdHRyKSkKLSAgICAs
IG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTY2LDE1ICs2NSw5IEBAIHZvaWQgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OnBhcnNlTWFwcGUKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZH
RmlsdGVyRWZmZWN0KiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZm
ZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJF
ZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOwogCiAgICAgaWYoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODcs
NyArODAsOSBAQCBib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChGaWx0CiAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7aSA8IG5yO2krKykKICAgICAgICAgX3ZhbHVlcy5hcHBl
bmQobnVtYmVycy0+Z2V0SXRlbShpLCBlYykpOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgp
LCBGRUNvbG9yTWF0cml4OjpjcmVhdGUoaW5wdXQxLCBzdGF0aWNfY2FzdDxDb2xvck1hdHJpeFR5
cGU+ICh0eXBlKCkpLCBfdmFsdWVzKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGlucHV0MSwgc3RhdGljX2Nhc3Q8Q29sb3JNYXRyaXhU
eXBlPiAodHlwZSgpKSwgX3ZhbHVlcyk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCkt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDQz
ODA4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsMTUgKzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB+U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwg
U1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsK
LSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5J
TUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdO
YW1lczo6ZmVDb2xvck1hdHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3Ry
aW5nLCBJbjEsIGluMSkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZ1N0cmluZywg
U1ZHTmFtZXM6OnR5cGVBdHRyU3RyaW5nLCBpbnQsIFR5cGUsIHR5cGUpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFt
ZXM6OmZlQ29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjp2YWx1ZXNBdHRyU3RyaW5nLCBT
VkdOdW1iZXJMaXN0LCBWYWx1ZXMsIHZhbHVlcykKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RUNvbG9yTWF0cml4PiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1l
LCBkb2MpCiAgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAgICwgbV9maWx0
ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNTcsMTUgKzU2LDkgQEAgdm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6cGFycwogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwor
ICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYoIWlucHV0MSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtODYsNyArNzksOSBAQCBib29sIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50OjpidWlsCiAgICAgICAgICAgICBhbHBoYSA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0FFbGVt
ZW50Kj4obiktPnRyYW5zZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgYnVpbGRlci0+
YWRkKHJlc3VsdCgpLCBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5wdXQxLCByZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
Q29tcG9uZW50VHJhbnNmZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhh
KTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQo
KSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3Qu
cmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAkocmV2aXNpb24gNDM4MDgpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxMyArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVh
bCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0
OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQsIFNWR05hbWVzOjpmZUNvbXBvbmVudFRyYW5zZmVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5B
dHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQotCi0gICAgICAgIG11dGFibGUgUmVmUHRyPEZF
Q29tcG9uZW50VHJhbnNmZXI+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAkocmV2
aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6U1ZH
RkVDb21wb3NpdGVFbGUKICAgICAsIG1fazIodGhpcywgU1ZHTmFtZXM6OmsyQXR0cikKICAgICAs
IG1fazModGhpcywgU1ZHTmFtZXM6OmszQXR0cikKICAgICAsIG1fazQodGhpcywgU1ZHTmFtZXM6
Oms0QXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTgxLDIzICs4MCwx
OCBAQCB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6cGFyc2VNYXBwZWRBCiAgICAgICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZH
RkVDb21wb3NpdGVFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0g
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsK
KyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyUmVz
b3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAgaWYoIWlu
cHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgUmVmUHRy
PEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRUNvbXBvc2l0ZTo6Y3JlYXRlKGlucHV0MSwg
aW5wdXQyLCBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRpb25UeXBlPiAoX29wZXJhdG9yKCkp
LAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUo
aW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0PENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IChfb3Bl
cmF0b3IoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgazEoKSwg
azIoKSwgazMoKSwgazQoKSk7Ci0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVj
dC5yZWxlYXNlKCkpOworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwg
ZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0
KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQ29tcG9zaXRlRWxl
bWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRl
ckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdTdHJpbmcs
IFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCkBAIC00Niw4ICs0NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3Ry
aW5nLCBTVkdOYW1lczo6azJBdHRyU3RyaW5nLCBmbG9hdCwgSzIsIGsyKQogICAgICAgICBBTklN
QVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1l
czo6ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNWR05hbWVzOjprM0F0dHJTdHJpbmcsIGZsb2F0LCBL
MywgazMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6Oms0
QXR0clN0cmluZywgZmxvYXQsIEs0LCBrNCkKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUNv
bXBvc2l0ZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDYgQEAgU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50OjpTVkdGRURpZmZ1cwogICAgICwgbV9zdXJmYWNlU2NhbGUodGhpcywgU1ZHTmFt
ZXM6OnN1cmZhY2VTY2FsZUF0dHIsIDEuMGYpCiAgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKHRo
aXMsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKICAgICAsIG1fa2VybmVsVW5pdExl
bmd0aFkodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKQotICAgICwgbV9maWx0
ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNzIsMTUgKzcxLDkgQEAgdm9pZCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OnBhcnNlTQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFRGlmZnVzZUxp
Z2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZp
bHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0
QnlJZChpbjEoKSk7CiAgICAgCiAgICAgaWYoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtODgsOSArODEsMTAgQEAgYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1
aWxkKAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRl
cmVyKCk7CiAgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRp
bmdDb2xvcigpOwogICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0g
RkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwg
ZGlmZnVzZUNvbnN0YW50KCksIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
RGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRp
ZmZ1c2VDb25zdGFudCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgZmluZExpZ2h0
cygpKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7
CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkp
OworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJl
bGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDAs
OCArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBi
b29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNW
R1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6
ZmVEaWZmdXNlTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmlu
ZywgSW4xLCBpbjEpCkBAIC01MSw4ICs1MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0
TGVuZ3RoWUlkZW50aWZpZXIsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExl
bmd0aFkpCiAKICAgICAgICAgTGlnaHRTb3VyY2UqIGZpbmRMaWdodHMoKSBjb25zdDsKLSAgICAg
ICAgCi0gICAgICAgIG11dGFibGUgUmVmUHRyPEZFRGlmZnVzZUxpZ2h0aW5nPiBtX2ZpbHRlckVm
ZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzODA4KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNiBAQCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OlNWR0ZFRGlz
cGxhCiAgICAgLCBtX3hDaGFubmVsU2VsZWN0b3IodGhpcywgU1ZHTmFtZXM6OnhDaGFubmVsU2Vs
ZWN0b3JBdHRyLCBDSEFOTkVMX0EpCiAgICAgLCBtX3lDaGFubmVsU2VsZWN0b3IodGhpcywgU1ZH
TmFtZXM6OnlDaGFubmVsU2VsZWN0b3JBdHRyLCBDSEFOTkVMX0EpCiAgICAgLCBtX3NjYWxlKHRo
aXMsIFNWR05hbWVzOjpzY2FsZUF0dHIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQog
CkBAIC03MywyNCArNzIsMTkgQEAgdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnBh
cnNlTQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFRGlzcGxh
Y2VtZW50TWFwRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIp
IGNvbnN0Citib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6YnVp
bGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9
IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQy
ID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MiA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVm
ZmVjdEJ5SWQoaW4yKCkpOwogICAgIAogICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBhZGRlZEVmZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIs
IHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAK
KyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeENo
YW5uZWxTZWxlY3RvcigpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q2hhbm5lbFNlbGVjdG9yVHlwZT4gKHlDaGFubmVsU2VsZWN0b3IoKSks
IHNjYWxlKCkpOwotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFz
ZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5n
ZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZl
Y3QucmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZpc2lvbiA0MzgwOCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw4ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIENoYW5u
ZWxTZWxlY3RvclR5cGUgc3RyaW5nVG9DaGFubmVsKGNvbnN0IFN0cmluZyYpOwogICAgICAgICAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlzcGxhY2VtZW50TWFw
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpAQCAt
NDMsOCArNDIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpm
ZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
U3RyaW5nLCBpbnQsIFhDaGFubmVsU2VsZWN0b3IsIHhDaGFubmVsU2VsZWN0b3IpCiAgICAgICAg
IEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQsIFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OnlDaGFu
bmVsU2VsZWN0b3JBdHRyU3RyaW5nLCBpbnQsIFlDaGFubmVsU2VsZWN0b3IsIHlDaGFubmVsU2Vs
ZWN0b3IpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywg
U1ZHTmFtZXM6OnNjYWxlQXR0clN0cmluZywgZmxvYXQsIFNjYWxlLCBzY2FsZSkKLQotICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxGRURpc3BsYWNlbWVudE1hcD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50
LmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewog
fQogCkBAIC00OSwyMCArNDgsMTYgQEAgdm9pZCBTVkdGRUZsb29kRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaQogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVGbG9vZEVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZF
Rmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUZs
b29kRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewog
ICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7
CiAKICAgICBDb2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZENvbG9y
KCk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5mbG9vZE9w
YWNpdHkoKTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVGbG9vZDo6Y3JlYXRlKGNv
bG9yLCBvcGFjaXR5KSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVGbG9v
ZDo6Y3JlYXRlKGNvbG9yLCBvcGFjaXR5KTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmls
dGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIo
KS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsgICAgCiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDQzODA4KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
MTEgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB+U1ZHRkVGbG9v
ZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChG
aWx0ZXJCdWlsZGVyKik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxG
RUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jl
c291cmNlRmlsdGVyKik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzgwOCkK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDYgQEAgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpTVkdGRUdhdXNz
aWFuQgogICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAgICAsIG1fc3RkRGV2
aWF0aW9uWCh0aGlzLCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikKICAgICAsIG1fc3RkRGV2
aWF0aW9uWSh0aGlzLCBTVkdOYW1lczo6c3RkRGV2aWF0aW9uQXR0cikKLSAgICAsIG1fZmlsdGVy
RWZmZWN0KDApCiB7CiB9CiAKQEAgLTY3LDIwICs2NiwxNiBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6cGFyc2VNYXBwCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVm
ZmVjdCogU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpidWls
ZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0
KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgp
KTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxk
ZXItPmFkZChyZXN1bHQoKSwgRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlh
dGlvblgoKSwgc3RkRGV2aWF0aW9uWSgpKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZShpbnB1dDEsIHN0ZERldmlhdGlvblgoKSwgc3Rk
RGV2aWF0aW9uWSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2Us
IGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3Vs
dCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlzaW9uIDQzODA4KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDE1ICs0MCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2
aWF0aW9uKGZsb2F0IHN0ZERldmlhdGlvblgsIGZsb2F0IHN0ZERldmlhdGlvblkpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsK
LSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAg
ICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWdTdHJpbmcsIFNWR05hbWVz
OjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQsIFNWR05hbWVzOjpmZUdh
dXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHU3RkRGV2aWF0aW9uWEF0dHJJZGVudGlmaWVyLCBmbG9h
dCwgU3RkRGV2aWF0aW9uWCwgc3RkRGV2aWF0aW9uWCkKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1
c3NpYW5CbHVyVGFnU3RyaW5nLCBTVkdTdGREZXZpYXRpb25ZQXR0cklkZW50aWZpZXIsIGZsb2F0
LCBTdGREZXZpYXRpb25ZLCBzdGREZXZpYXRpb25ZKQotCi0gICAgICAgIG11dGFibGUgUmVmUHRy
PEZFR2F1c3NpYW5CbHVyPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0Mzgw
OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsOCArNDMsNiBAQCBTVkdGRUltYWdlRWxlbWVudDo6U1ZHRkVJbWFnZUVsZW1lbnQoY29u
CiAgICAgLCBTVkdMYW5nU3BhY2UoKQogICAgICwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCgpCiAgICAgLCBtX3ByZXNlcnZlQXNwZWN0UmF0aW8odGhpcywgU1ZHTmFtZXM6OnByZXNlcnZl
QXNwZWN0UmF0aW9BdHRyLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpjcmVhdGUoKSkKLSAgICAs
IG1fY2FjaGVkSW1hZ2UoMCkKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTg0
LDIyICs4MiwxOCBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAK
IHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBm
aW5pc2hlZE9iaikKIHsKLSAgICBpZiAoZmluaXNoZWRPYmogPT0gbV9jYWNoZWRJbWFnZSAmJiBt
X2ZpbHRlckVmZmVjdCkKLSAgICAgICAgbV9maWx0ZXJFZmZlY3QtPnNldENhY2hlZEltYWdlKG1f
Y2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIC8vaWYgKGZpbmlzaGVkT2JqID09IG1fY2FjaGVkSW1h
Z2UpCisgICAgLy8gICAgbV9maWx0ZXJFZmZlY3QtPnNldENhY2hlZEltYWdlKG1fY2FjaGVkSW1h
Z2UuZ2V0KCkpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFSW1hZ2VFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRUltYWdlRWxlbWVu
dDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wgU1ZHRkVJbWFnZUVsZW1lbnQ6
OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKICAgICBpZighbV9j
YWNoZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVpbGRlci0+YWRkKHJl
c3VsdCgpLCBGRUltYWdlOjpjcmVhdGUobV9jYWNoZWRJbWFnZS5nZXQoKSkpOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFSW1hZ2U6OmNyZWF0ZShtX2NhY2hlZEltYWdlLmdl
dCgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5n
ZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZl
Y3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5oCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE3ICs0NywxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSop
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVy
Kik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CiAKICAgICBw
cml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVJbWFn
ZUVsZW1lbnQsIFNWR05hbWVzOjpmZUltYWdlVGFnU3RyaW5nLCBTVkdOYW1lczo6cHJlc2VydmVB
c3BlY3RSYXRpb0F0dHJTdHJpbmcsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNw
ZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkSW1hZ2U+IG1fY2FjaGVkSW1hZ2U7Ci0gICAgICAgIG11dGFibGUgUmVmUHRy
PEZFSW1hZ2U+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzODA4KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3
ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVNZXJnZUVsZW1lbnQ6OlNWR0ZF
TWVyZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2Mp
CiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9j
KQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNDAsMTggKzM5LDEyIEBAIFNW
R0ZFTWVyZ2VFbGVtZW50Ojp+U1ZHRkVNZXJnZUVsZW1lbnQoKQogewogfQogCi1TVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFTWVyZ2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
MDsKLX0KLQotYm9vbCBTVkdGRU1lcmdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVp
bGRlcikKK2Jvb2wgU1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXJSZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4gbWVyZ2VJbnB1dHM7
CiAgICAgZm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgIGlmIChuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZU1lcmdlTm9k
ZVRhZykpIHsKLSAgICAgICAgICAgIEZpbHRlckVmZmVjdCogbWVyZ2VFZmZlY3QgPSBidWlsZGVy
LT5nZXRFZmZlY3RCeUlkKHN0YXRpY19jYXN0PFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCo+KG4pLT5p
bjEoKSk7CisgICAgICAgICAgICBGaWx0ZXJFZmZlY3QqIG1lcmdlRWZmZWN0ID0gZmlsdGVyUmVz
b3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChzdGF0aWNfY2FzdDxTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQqPihuKS0+aW4xKCkpOwogICAgICAgICAgICAgbWVyZ2VJbnB1dHMuYXBwZW5kKG1l
cmdlRWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTU5LDcgKzUyLDkgQEAgYm9vbCBTVkdG
RU1lcmdlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbAogICAgIGlmKG1lcmdlSW5wdXRzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgp
LCBGRU1lcmdlOjpjcmVhdGUobWVyZ2VJbnB1dHMpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QgPSBGRU1lcmdlOjpjcmVhdGUobWVyZ2VJbnB1dHMpOworICAgIHNldFN0YW5kYXJk
QXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNv
dXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAg
cmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDQz
ODA4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsMTEgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRU1lcmdl
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVh
bCB+U1ZHRkVNZXJnZUVsZW1lbnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVj
dCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wg
YnVpbGQoRmlsdGVyQnVpbGRlciopOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8RkVNZXJnZT4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWls
ZChTVkdSZXNvdXJjZUZpbHRlciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw2IEBAIFNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGMKICAgICAs
IG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCiAgICAgLCBtX2R4KHRoaXMsIFNWR05hbWVz
OjpkeEF0dHIpCiAgICAgLCBtX2R5KHRoaXMsIFNWR05hbWVzOjpkeUF0dHIpCi0gICAgLCBtX2Zp
bHRlckVmZmVjdCgwKQogewogfQogCkBAIC01NywyMCArNTYsMTYgQEAgdm9pZCBTVkdGRU9mZnNl
dEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cgogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0
ZXJFZmZlY3QqIFNWR0ZFT2Zmc2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmls
dGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHUmVz
b3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoRmls
dGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxk
ZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmls
dGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZigh
aW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0
KCksIEZFT2Zmc2V0OjpjcmVhdGUoaW5wdXQxLCBkeCgpLCBkeSgpKSk7CisgICAgUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0ID0gRkVPZmZzZXQ6OmNyZWF0ZShpbnB1dDEsIGR4KCksIGR5KCkp
OworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgp
KTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5y
ZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTUgKzM1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVPZmZzZXRFbGVtZW50KCk7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAg
ICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2
aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNldEVsZW1lbnQs
IFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3Ry
aW5nLCBJbjEsIGluMSkKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNW
R0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmZlT2Zmc2V0VGFnU3RyaW5nLCBTVkdOYW1lczo6
ZHhBdHRyU3RyaW5nLCBmbG9hdCwgRHgsIGR4KQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdOYW1lczo6ZmVPZmZzZXRUYWdTdHJp
bmcsIFNWR05hbWVzOjpkeUF0dHJTdHJpbmcsIGZsb2F0LCBEeSwgZHkpCi0KLSAgICAgICAgbXV0
YWJsZSBSZWZQdHI8RkVPZmZzZXQ+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIFNW
R0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OlNWR0ZFU3BlY3UKICAgICAsIG1fc3VyZmFjZVNj
YWxlKHRoaXMsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAxLjBmKQogICAgICwgbV9rZXJu
ZWxVbml0TGVuZ3RoWCh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpCiAgICAg
LCBtX2tlcm5lbFVuaXRMZW5ndGhZKHRoaXMsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0
cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTcxLDEyICs3MCw2IEBAIHZv
aWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6cGFyc2UKICAgICAgICAgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKLXsKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogTGlnaHRTb3VyY2UqIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25zdAogewogICAgIExpZ2h0U291
cmNlKiBsaWdodCA9IDA7CkBAIC05Myw5ICs4Niw5IEBAIExpZ2h0U291cmNlKiBTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW4KICAgICByZXR1cm4gbGlnaHQ7CiB9CiAKLWJvb2wgU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKK2Jvb2wg
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlclJlc291cmNlKQogewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNv
dXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKICAgICAKICAgICBpZighaW5w
dXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDQsOSArOTcsMTAgQEAgYm9vbCBTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZAogICAgIAogICAgIENvbG9yIGNvbG9yID0g
ZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsKICAgICAKLSAgICBSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBhZGRlZEVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRl
KGlucHV0MSwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIAorICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRl
KGlucHV0MSwgY29sb3IsIHN1cmZhY2VTY2FsZSgpLCBzcGVjdWxhckNvbnN0YW50KCksIAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGFyRXhwb25lbnQoKSwg
a2VybmVsVW5pdExlbmd0aFgoKSwga2VybmVsVW5pdExlbmd0aFkoKSwgZmluZExpZ2h0cygpKTsK
LSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAg
c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAg
IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2Uo
KSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVTcGVjdWxhckxp
Z2h0aW5nRWxlbWVudCgpOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRl
ckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAg
IGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQo
U1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1l
czo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBT
dHJpbmcsIEluMSwgaW4xKQpAQCAtNDksOCArNDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0clN0cmluZywgZmxvYXQsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNj
YWxlKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywg
U1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFgs
IGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdo
dGluZ1RhZ1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyLCBmbG9hdCwgS2Vy
bmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQotCi0gICAgICAgIG11dGFibGUgUmVm
UHRyPEZFU3BlY3VsYXJMaWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgICAgIAogICAgICAg
ICBMaWdodFNvdXJjZSogZmluZExpZ2h0cygpIGNvbnN0OwogICAgIH07CkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQogICAgICwgbV9pbjEodGhpcywgU1ZH
TmFtZXM6OmluQXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTUyLDIw
ICs1MSwxNiBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAg
ICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVUaWxlRWxlbWVudDo6Zmls
dGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFVGls
ZUVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZHRkVUaWxl
RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZl
Y3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBi
dWlsZGVyLT5hZGQocmVzdWx0KCksIEZFVGlsZTo6Y3JlYXRlKGlucHV0MSkpOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVGlsZTo6Y3JlYXRlKGlucHV0MSk7CisgICAgc2V0
U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZp
bHRlclJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7
CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCShy
ZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB+U1ZHRkVUaWxlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdG
aWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAg
ICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1
aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUaWxlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVGls
ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKLQot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVRpbGU+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIFNWR0ZFVHVyYnVs
ZW5jZUVsZW1lbnQ6OlNWR0ZFVHVyYnVsZW5jZUUKICAgICAsIG1fc2VlZCh0aGlzLCBTVkdOYW1l
czo6c2VlZEF0dHIpCiAgICAgLCBtX3N0aXRjaFRpbGVzKHRoaXMsIFNWR05hbWVzOjpzdGl0Y2hU
aWxlc0F0dHIsIFNWR19TVElUQ0hUWVBFX05PU1RJVENIKQogICAgICwgbV90eXBlKHRoaXMsIFNW
R05hbWVzOjp0eXBlQXR0ciwgRkVUVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSkKLSAgICAsIG1f
ZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTc3LDE3ICs3NiwxMiBAQCB2b2lkIFNWR0ZFVHVy
YnVsZW5jZUVsZW1lbnQ6OnBhcnNlTWFwcGVkCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0Zp
bHRlckVmZmVjdCogU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1
aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVUdXJidWxlbmNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8VHVy
YnVsYW5jZVR5cGU+ICh0eXBlKCkpLCBiYXNlRnJlcXVlbmN5WCgpLCAKKyAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBlZmZlY3QgPSBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxUdXJi
dWxhbmNlVHlwZT4gKHR5cGUoKSksIGJhc2VGcmVxdWVuY3lYKCksIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VGcmVxdWVuY3lZKCksIG51bU9jdGF2ZXMoKSwg
c2VlZCgpLCBzdGl0Y2hUaWxlcygpID09IFNWR19TVElUQ0hUWVBFX1NUSVRDSCk7Ci0gICAgYnVp
bGRlci0+YWRkKHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIHNldFN0YW5k
YXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJS
ZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgflNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
KSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR0Jhc2VGcmVxdWVuY3lYSWRl
bnRpZmllciwgZmxvYXQsIEJhc2VGcmVxdWVuY3lYLCBiYXNlRnJlcXVlbmN5WCkKQEAgLTU0LDgg
KzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9E
RUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVyYnVsZW5j
ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnNlZWRBdHRyU3RyaW5nLCBmbG9hdCwgU2VlZCwgc2VlZCkK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVs
ZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR05hbWVzOjpzdGl0Y2hU
aWxlc0F0dHJTdHJpbmcsIGludCwgU3RpdGNoVGlsZXMsIHN0aXRjaFRpbGVzKQogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZH
TmFtZXM6OmZlVHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnR5cGVBdHRyU3RyaW5nLCBp
bnQsIFR5cGUsIHR5cGUpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVUdXJidWxlbmNlPiBt
X2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsOSBAQAogI2lu
Y2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHIuaCIKKyNpbmNsdWRl
ICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgpAQCAtMTMxLDE5ICsxMzMsMTggQEAgU1ZHUmVzb3VyY2UqIFNWR0ZpbHRlckVsZW1lbnQ6
OmNhbnZhc1JlcwogICAgIGJvb2wgcHJpbWl0aXZlQkJveE1vZGUgPSBwcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKICAgICBt
X2ZpbHRlci0+c2V0RWZmZWN0Qm91bmRpbmdCb3hNb2RlKHByaW1pdGl2ZUJCb3hNb2RlKTsKIAot
ICAgIC8vIFRPRE8gOiB1c2Ugc3dpdGNoL2Nhc2UgaW5zdGVhZD8KLSAgICBtX2ZpbHRlci0+Y2xl
YXJFZmZlY3RzKCk7CisJbV9maWx0ZXItPmJ1aWxkZXIoKS0+Y2xlYXJFZmZlY3RzKCk7CiAgICAg
Zm9yIChOb2RlKiBuID0gZmlyc3RDaGlsZCgpOyBuICE9IDA7IG4gPSBuLT5uZXh0U2libGluZygp
KSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIGVsZW1lbnQgPSAwOwotICAgICAgICBpZiAobi0+aXNT
VkdFbGVtZW50KCkpCisgICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICAg
ICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihuKTsKLSAgICAgICAgaWYgKGVs
ZW1lbnQgJiYgZWxlbWVudC0+aXNGaWx0ZXJFZmZlY3QoKSkgewotICAgICAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJBdHRyaWJ1dGVzID0gc3RhdGlj
X2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4oZWxlbWVudCk7Ci0g
ICAgICAgICAgICBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCA9IGZpbHRlckF0dHJpYnV0
ZXMtPmZpbHRlckVmZmVjdChtX2ZpbHRlci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoIWZpbHRl
ckVmZmVjdCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgbV9maWx0
ZXItPmFkZEZpbHRlckVmZmVjdChmaWx0ZXJFZmZlY3QpOworICAgICAgICAgICAgaWYgKGVsZW1l
bnQtPmlzRmlsdGVyRWZmZWN0KCkpIHsKKyAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGVmZmVjdEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqPihlbGVtZW50KTsKKyAgICAgICAgICAgIAlp
ZiAoIWVmZmVjdEVsZW1lbnQtPmJ1aWxkKG1fZmlsdGVyLmdldCgpKSkgeworCQkJCQltX2ZpbHRl
ci0+YnVpbGRlcigpLT5jbGVhckVmZmVjdHMoKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQog
ICAgICAgICB9CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDQzODA4KQorKysgV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsMTEgKzIzLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAK
ICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3Qu
aCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgi
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCkBA
IC03MCwxNyArNjksMTcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZQogICAgICAgICByZXR1cm4gU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUo
YXR0cik7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
ZXRTdGFuZGFyZEF0dHJpYnV0ZXMoU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QpIGNvbnN0
Cit2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0U3RhbmRhcmRB
dHRyaWJ1dGVzKFNWR1Jlc291cmNlRmlsdGVyKiByZXNvdXJjZUZpbHRlciwgRmlsdGVyRWZmZWN0
KiBmaWx0ZXJFZmZlY3QpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGZpbHRlckVmZmVjdCk7CiAgICAg
aWYgKCFmaWx0ZXJFZmZlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChmaWx0ZXJF
ZmZlY3QtPmZpbHRlcigpKTsKKyAgICBBU1NFUlQocmVzb3VyY2VGaWx0ZXIpOwogCiAgICAgZmxv
YXQgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQ7CiAKLSAgICBpZiAoZmlsdGVyRWZmZWN0LT5maWx0
ZXIoKS0+ZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkpIHsKKyAgICBpZiAocmVzb3VyY2VGaWx0ZXIt
PmVmZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7CiAgICAgICAgIF94ID0geCgpLnZhbHVlQXNQZXJj
ZW50YWdlKCk7CiAgICAgICAgIF95ID0geSgpLnZhbHVlQXNQZXJjZW50YWdlKCk7CiAgICAgICAg
IF93aWR0aCA9IHdpZHRoKCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKQEAgLTEyMSw3ICsxMjAsNiBA
QCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgfQogCiAgICAg
ZmlsdGVyRWZmZWN0LT5zZXRTdWJSZWdpb24oRmxvYXRSZWN0KF94LCBfeSwgX3dpZHRoLCBfaGVp
Z2h0KSk7Ci0gICAgZmlsdGVyRWZmZWN0LT5zZXRSZXN1bHQocmVzdWx0KCkpOwogfQogCiB9Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBleHRlcm4gY2hhciBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXNJZGVudGlmaWVyW107CiAKLSAgICBjbGFzcyBTVkdGaWx0ZXJFZmZl
Y3Q7CiAgICAgY2xhc3MgU1ZHUmVzb3VyY2VGaWx0ZXI7CiAKICAgICBjbGFzcyBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCB7CkBA
IC00MiwxMyArNDEsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAg
ICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KikgY29uc3QgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0
ZXIqKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVy
U3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2b2lk
IHNldFN0YW5kYXJkQXR0cmlidXRlcyhTVkdSZXNvdXJjZUZpbHRlciosIEZpbHRlckVmZmVjdCop
IGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQotICAgICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmli
dXRlcyhTVkdGaWx0ZXJFZmZlY3QqKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIs
IFNWR05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICAgICAgICAgICAgICAgICAgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MjQsNjEgKzI1LDExMiBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
ICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRl
ci5oIgorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVy
RWZmZWN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU1ZHUmVzb3VyY2VGaWx0ZXI6OlNWR1Jlc291cmNlRmlsdGVyKCkKLSAgICA6IG1fcGxhdGZv
cm1EYXRhKGNyZWF0ZVBsYXRmb3JtRGF0YSgpKQotICAgICwgbV9maWx0ZXJCQm94TW9kZShmYWxz
ZSkKKyAgICA6IG1fZmlsdGVyQkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX2VmZmVjdEJCb3hNb2Rl
KGZhbHNlKQogICAgICwgbV94QkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX3lCQm94TW9kZShmYWxz
ZSkKIHsKKyAgICBtX2ZpbHRlckJ1aWxkZXIuc2V0KG5ldyBGaWx0ZXJCdWlsZGVyKCkpOwogfQog
Ci12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpjbGVhckVmZmVjdHMoKQorRmxvYXRSZWN0IFNWR1Jl
c291cmNlRmlsdGVyOjpmaWx0ZXJCQm94Rm9ySXRlbUJCb3goY29uc3QgRmxvYXRSZWN0JiBpdGVt
QkJveCkgY29uc3QKIHsKLSAgICBtX2VmZmVjdHMuY2xlYXIoKTsKKyAgICBGbG9hdFJlY3QgZmls
dGVyQkJveCA9IGZpbHRlclJlY3QoKTsKKworICAgIGlmIChmaWx0ZXJCb3VuZGluZ0JveE1vZGUo
KSkKKyAgICAgICAgZmlsdGVyQkJveCA9IEZsb2F0UmVjdChpdGVtQkJveC54KCkgKyBmaWx0ZXJC
Qm94LngoKSAqIGl0ZW1CQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaXRlbUJCb3gueSgpICsgZmlsdGVyQkJveC55KCkgKiBpdGVtQkJveC5oZWlnaHQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJCQm94LndpZHRoKCkgKiBpdGVtQkJv
eC53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3guaGVp
Z2h0KCkgKiBpdGVtQkJveC5oZWlnaHQoKSk7CisKKyAgICByZXR1cm4gZmlsdGVyQkJveDsKIH0K
IAotdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YWRkRmlsdGVyRWZmZWN0KFNWR0ZpbHRlckVmZmVj
dCogZWZmZWN0KQordm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVyUHJpbWl0aXZlU3ViUmVn
aW9uKEZpbHRlckVmZmVjdCogcHJpbWl0aXZlKQogewotICAgIEFTU0VSVChlZmZlY3QpOworICAg
IEZsb2F0UmVjdCBzdWJSZWdpb25CQm94ID0gcHJpbWl0aXZlLT5zdWJSZWdpb24oKTsKKyAgICBG
bG9hdFJlY3QgdXNlQkJveCA9IG1fZmlsdGVyQkJveDsKKworICAgIGlmIChtX2VmZmVjdEJCb3hN
b2RlKSB7CisgICAgICAgIGlmICghbV9maWx0ZXJCQm94TW9kZSkKKyAgICAgICAgICAgIHVzZUJC
b3ggPSBtX2l0ZW1CQm94OworCisgICAgICAgIHN1YlJlZ2lvbkJCb3ggPSBGbG9hdFJlY3Qoc3Vi
UmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRoKCkgKyB1c2VCQm94LngoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0
KCkgKyB1c2VCQm94LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdp
b25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChwcmltaXRpdmUtPnhCb3VuZGluZ0JveE1vZGUoKSkKKyAg
ICAgICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0WCh1c2VCQm94LngoKSArIHN1YlJlZ2lvbkJCb3gu
eCgpICogdXNlQkJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAocHJpbWl0aXZlLT55Qm91bmRp
bmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFkodXNlQkJveC55KCkg
KyBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOwogCi0gICAgaWYgKGVmZmVj
dCkgewotICAgICAgICBBU1NFUlQoZWZmZWN0LT5maWx0ZXIoKSA9PSB0aGlzKTsKLSAgICAgICAg
bV9lZmZlY3RzLmFwcGVuZChlZmZlY3QpOworICAgICAgICBpZiAocHJpbWl0aXZlLT53aWR0aEJv
dW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5zZXRXaWR0aChzdWJS
ZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRoKCkpOworCisgICAgICAgIGlmIChwcmlt
aXRpdmUtPmhlaWdodEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9uQkJv
eC5zZXRIZWlnaHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOwog
ICAgIH0KKworICAgIHByaW1pdGl2ZS0+c2V0U3ViUmVnaW9uKHN1YlJlZ2lvbkJCb3gpOwogfQog
Ci1GbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hGb3JJdGVtQkJveChjb25z
dCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdAordm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6cHJl
cGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGl0
ZW1SZWN0KQogewotICAgIEZsb2F0UmVjdCBmaWx0ZXJCQm94ID0gZmlsdGVyUmVjdCgpOworICAg
IC8vIERyYXcgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBhbmQgaXQncyBjaGls
ZHMgdG8gYSBpbWFnZUJ1ZmZlciB0byBnZXQgdGhlIFNvdXJjZUdyYXBoaWMuCisgICAgLy8gVGhl
IHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgbXVzdCBtYXRjaCB0aGUgc2l6ZSBvZiB0aGUgZWxl
bWVudCwgdGhlIGZpbHRlciBpcyBhcGxpZWQgdG8uCisgICAgSW50U2l6ZSBidWZmZXJTaXplID0g
SW50U2l6ZShpdGVtUmVjdC53aWR0aCgpLCBpdGVtUmVjdC5oZWlnaHQoKSk7CisgICAgYXV0b19w
dHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJT
aXplLCBmYWxzZSkpOworICAgIAorICAgIGlmICghc291cmNlR3JhcGhpYy5nZXQoKSkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgZmxvYXQgeE9mZnNldCA9IDAuMGY7Ci0gICAgZmxvYXQgeU9mZnNl
dCA9IDAuMGY7CisgICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNv
dXJjZUdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+dHJhbnNs
YXRlKC1pdGVtUmVjdC54KCksIC1pdGVtUmVjdC55KCkpOworICAgIHNvdXJjZUdyYXBoaWNDb250
ZXh0LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGl0ZW1SZWN0LndpZHRoKCksIGl0ZW1SZWN0
LmhlaWdodCgpKSk7CisgICAgbV9zb3VyY2VHcmFwaGljQnVmZmVyLnNldChzb3VyY2VHcmFwaGlj
LnJlbGVhc2UoKSk7CisgICAgbV9zYXZlZENvbnRleHQgPSBjb250ZXh0OwogCi0gICAgaWYgKCFl
ZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgewotICAgICAgICB4T2Zmc2V0ID0gaXRlbUJCb3gueCgp
OwotICAgICAgICB5T2Zmc2V0ID0gaXRlbUJCb3gueSgpOwotICAgIH0KKyAgICBjb250ZXh0ID0g
c291cmNlR3JhcGhpY0NvbnRleHQ7Cit9CiAKLSAgICBpZiAoZmlsdGVyQm91bmRpbmdCb3hNb2Rl
KCkpIHsKLSAgICAgICAgZmlsdGVyQkJveCA9IEZsb2F0UmVjdCh4T2Zmc2V0ICsgZmlsdGVyQkJv
eC54KCkgKiBpdGVtQkJveC53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHlPZmZzZXQgKyBmaWx0ZXJCQm94LnkoKSAqIGl0ZW1CQm94LmhlaWdodCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3gud2lkdGgoKSAqIGl0ZW1CQm94LndpZHRo
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQkJveC5oZWlnaHQoKSAq
IGl0ZW1CQm94LmhlaWdodCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoeEJvdW5kaW5n
Qm94TW9kZSgpKQotICAgICAgICAgICAgZmlsdGVyQkJveC5zZXRYKHhPZmZzZXQgKyBmaWx0ZXJC
Qm94LngoKSk7Cit2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjphcHBseUZpbHRlcihHcmFwaGljc0Nv
bnRleHQqJiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1SZWN0KQoreworICAgIGlmICgh
bV9zYXZlZENvbnRleHQpCisgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoeUJvdW5kaW5n
Qm94TW9kZSgpKQotICAgICAgICAgICAgZmlsdGVyQkJveC5zZXRZKHlPZmZzZXQgKyBmaWx0ZXJC
Qm94LnkoKSk7CisgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94Rm9ySXRlbUJC
b3goaXRlbVJlY3QpOworCisgICAgc2V0RmlsdGVyQm91bmRpbmdCb3goZmlsdGVyUmVjdCk7Cisg
ICAgc2V0SXRlbUJvdW5kaW5nQm94KGl0ZW1SZWN0KTsKKworICAgIGNvbnRleHQgPSBtX3NhdmVk
Q29udGV4dDsKKyAgICBtX3NhdmVkQ29udGV4dCA9IDA7CisKKyAgICBpZiAobV9maWx0ZXJCdWls
ZGVyLT5sYXN0RmlsdGVyKCkgJiYgIWZpbHRlclJlY3QuaXNFbXB0eSgpKSB7CisgICAgICAgIG1f
ZmlsdGVyQnVpbGRlci0+bGFzdEZpbHRlcigpLT5hcHBseSh0aGlzKTsKKworICAgICAgICBjb250
ZXh0LT5jbGlwKGZpbHRlclJlY3QpOworCisgICAgICAgIGlmIChtX2ZpbHRlckJ1aWxkZXItPmxh
c3RGaWx0ZXIoKS0+cmVzdWx0SW1hZ2UoKSkKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFn
ZShtX2ZpbHRlckJ1aWxkZXItPmxhc3RGaWx0ZXIoKS0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXJCdWlsZGVyLT5sYXN0RmlsdGVy
KCktPnN1YlJlZ2lvbigpKTsKICAgICB9CiAKLSAgICByZXR1cm4gZmlsdGVyQkJveDsKKyAgICBt
X3NvdXJjZUdyYXBoaWNCdWZmZXIuY2xlYXIoKTsKIH0KIAogVGV4dFN0cmVhbSYgU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBA
IC0xMDIsOCArMTU0LDYgQEAgVGV4dFN0cmVhbSYgU1ZHUmVzb3VyY2VGaWx0ZXI6OmV4dGVybmFs
UgogICAgICAgICB0cyA8PCAiIFtib3VuZGluZyBib3ggbW9kZT0iIDw8IGZpbHRlckJvdW5kaW5n
Qm94TW9kZSgpIDw8ICJdIjsKICAgICBpZiAoZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkpIC8vIGRl
ZmF1bHQgaXMgZmFsc2UKICAgICAgICAgdHMgPDwgIiBbZWZmZWN0IGJvdW5kaW5nIGJveCBtb2Rl
PSIgPDwgZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkgPDwgIl0iOwotICAgIGlmIChtX2VmZmVjdHMu
c2l6ZSgpID4gMCkKLSAgICAgICAgdHMgPDwgIiBbZWZmZWN0cz0iIDw8IG1fZWZmZWN0cyA8PCAi
XSI7CiAKICAgICByZXR1cm4gdHM7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdS
ZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jl
c291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmlj
QHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCwyMSArMjUsMTcgQEAKIAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdSZXNvdXJj
ZS5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgogCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGaWx0ZXJCdWlsZGVyOworY2xhc3MgRmls
dGVyRWZmZWN0OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotY2xhc3MgU1ZHRmlsdGVyRWZmZWN0
OwotICAgIAotY2xhc3MgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEgewotcHVibGljOgot
ICAgIHZpcnR1YWwgflNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKCkge30KLX07CiAKIGNs
YXNzIFNWR1Jlc291cmNlRmlsdGVyIDogcHVibGljIFNWR1Jlc291cmNlIHsKIHB1YmxpYzoKQEAg
LTYxLDI0ICs1OCwyNSBAQCBwdWJsaWM6CiAgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QoKSBjb25z
dCB7IHJldHVybiBtX2ZpbHRlclJlY3Q7IH0KICAgICB2b2lkIHNldEZpbHRlclJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByZWN0KSB7IG1fZmlsdGVyUmVjdCA9IHJlY3Q7IH0KIAotICAgIEZsb2F0UmVj
dCBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goY29uc3QgRmxvYXRSZWN0JiBpdGVtQkJveCkgY29uc3Q7
CisgICAgRmxvYXRSZWN0IGZpbHRlckJvdW5kaW5nQm94KCkgeyByZXR1cm4gbV9maWx0ZXJCQm94
OyB9CisgICAgdm9pZCBzZXRGaWx0ZXJCb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IHsgbV9maWx0ZXJCQm94ID0gcmVjdDsgfQorCisgICAgRmxvYXRSZWN0IGl0ZW1Cb3VuZGluZ0Jv
eCgpIHsgcmV0dXJuIG1faXRlbUJCb3g7IH0KKyAgICB2b2lkIHNldEl0ZW1Cb3VuZGluZ0JveChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9pdGVtQkJveCA9IHJlY3Q7IH0KIAotICAgIHZvaWQg
Y2xlYXJFZmZlY3RzKCk7Ci0gICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyRWZmZWN0
Kik7CisgICAgRmxvYXRSZWN0IGZpbHRlckJCb3hGb3JJdGVtQkJveChjb25zdCBGbG9hdFJlY3Qm
IGl0ZW1CQm94KSBjb25zdDsKKyAgICB2b2lkIGZpbHRlclByaW1pdGl2ZVN1YlJlZ2lvbihGaWx0
ZXJFZmZlY3QqKTsKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICAvLyBUbyBiZSBpbXBsZW1lbnRlZCBpbiBw
bGF0Zm9ybSBzcGVjaWZpYyBjb2RlLgotICAgIHZvaWQgcHJlcGFyZUZpbHRlcihHcmFwaGljc0Nv
bnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKLSAgICB2b2lkIGFwcGx5RmlsdGVyKEdy
YXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmIGJib3gpOwotICAgIAotICAgIFNWR1Jl
c291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKiBwbGF0Zm9ybURhdGEoKSB7IHJldHVybiBtX3BsYXRm
b3JtRGF0YS5nZXQoKTsgfQotICAgIGNvbnN0IFZlY3RvcjxTVkdGaWx0ZXJFZmZlY3QqPiYgZWZm
ZWN0cygpIHsgcmV0dXJuIG1fZWZmZWN0czsgfQorICAgIHZvaWQgcHJlcGFyZUZpbHRlcihHcmFw
aGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBhcHBseUZpbHRlcihH
cmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0Jik7CisKKyAgICBJbWFnZUJ1ZmZlciog
c291cmNlR3JhcGhpYygpIHsgcmV0dXJuIG1fc291cmNlR3JhcGhpY0J1ZmZlci5yZWxlYXNlKCk7
IH0KKworICAgIEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIoKSB7IHJldHVybiBtX2ZpbHRlckJ1aWxk
ZXIuZ2V0KCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9y
bURhdGEqIGNyZWF0ZVBsYXRmb3JtRGF0YSgpOwotICAgIAotICAgIE93blB0cjxTVkdSZXNvdXJj
ZUZpbHRlclBsYXRmb3JtRGF0YT4gbV9wbGF0Zm9ybURhdGE7CiAKICAgICBib29sIG1fZmlsdGVy
QkJveE1vZGUgOiAxOwogICAgIGJvb2wgbV9lZmZlY3RCQm94TW9kZSA6IDE7CkBAIC04Nyw3ICs4
NSwxMyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV95QkJveE1vZGUgOiAxOwogCiAgICAgRmxvYXRS
ZWN0IG1fZmlsdGVyUmVjdDsKLSAgICBWZWN0b3I8U1ZHRmlsdGVyRWZmZWN0Kj4gbV9lZmZlY3Rz
OworCisgICAgRmxvYXRSZWN0IG1fZmlsdGVyQkJveDsKKyAgICBGbG9hdFJlY3QgbV9pdGVtQkJv
eDsKKworICAgIG11dGFibGUgT3duUHRyPEZpbHRlckJ1aWxkZXI+IG1fZmlsdGVyQnVpbGRlcjsK
KyAgICBtdXRhYmxlIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7CisgICAgbXV0YWJs
ZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlR3JhcGhpY0J1ZmZlcjsKIH07CiAKIFNWR1Jl
c291cmNlRmlsdGVyKiBnZXRGaWx0ZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
Jik7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4
dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2Vy
dmVBbHBoYSgKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9p
ZCBGRUNvbnZvbHZlTWF0cml4OjphcHBseSgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5
KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHJldmlzaW9uIDQzODA4KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAt
NjgsNyArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlc2VydmVB
bHBoYSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShT
VkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAg
ICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdo
dGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNW
R0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgor
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNl
KEwKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVEaWZmdXNl
TGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KFNWR1Jlc291
cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBMaWdodFNv
dXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShM
aWdodFNvdXJjZSopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlzaW9u
IDQzODA4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVu
dE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw3ICs3NSw3IEBAIHZv
aWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICBtX3NjYWxlID0gc2Nh
bGU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KCkKK3ZvaWQgRkVEaXNwbGFj
ZW1lbnRNYXA6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAko
cmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlz
cGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUwLDcgKzUxLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2FsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dFNjYWxlKGZsb2F0IHNjYWxlKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2
ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xh
cyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsg
U2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsy
NCwxMyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1
ZGUgIlNWR0ZFRmxvb2QuaCIKKworI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VCdWZm
ZXIuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OSw4ICs2NiwyNCBA
QCB2b2lkIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vCiAgICAgbV9mbG9vZE9w
YWNpdHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKLXZvaWQgRkVGbG9vZDo6YXBwbHkoKQordm9pZCBG
RUZsb29kOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciogcmVzb3VyY2UpCiB7CisgICAgcmVzb3Vy
Y2UtPmZpbHRlclByaW1pdGl2ZVN1YlJlZ2lvbih0aGlzKTsKKworICAgIEludFNpemUgYnVmZmVy
U2l6ZSA9IEludFNpemUoc3ViUmVnaW9uKCkud2lkdGgoKSwgc3ViUmVnaW9uKCkuaGVpZ2h0KCkp
OworICAgIHN0ZDo6YXV0b19wdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSkpOworCisgICAgaWYgKCFmaWx0ZXJHcmFwaGlj
LmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNv
bnRleHQgPSBmaWx0ZXJHcmFwaGljLT5jb250ZXh0KCk7CisgICAgZmlsdGVyQ29udGV4dC0+c2F2
ZSgpOworICAgIGZpbHRlckNvbnRleHQtPnRyYW5zbGF0ZSgtc3ViUmVnaW9uKCkueCgpLCAtc3Vi
UmVnaW9uKCkueSgpKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5zZXRBbHBoYShmbG9vZE9wYWNpdHko
KSk7CisgICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3Qoc3ViUmVnaW9uKCksIGZsb29kQ29sb3Io
KSk7CisgICAgZmlsdGVyQ29udGV4dC0+cmVzdG9yZSgpOworCisgICAgc2V0RWZmZWN0QnVmZmVy
KGZpbHRlckdyYXBoaWMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBGRUZsb29kOjpkdW1wKCkKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCShyZXZpc2lvbiA0
MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zOCw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZmxv
b2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFw
cGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAg
ICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMp
IGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3Np
YW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTYwLDcgKzYxLDcgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9u
WShmbAogICAgIG1feSA9IHk7CiB9CiAKLXZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KCkKK3Zv
aWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIu
aAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
R2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTM3LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBz
dGREZXZpYXRpb25ZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9h
dCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgp
OwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVJbWFnZS5o
IgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxLDYgKzMyLDcgQEAgRkVJ
bWFnZTo6RkVJbWFnZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZwogICAgIDogRmlsdGVyRWZmZWN0
KCkKICAgICAsIG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCiB7CisgICAgbV9jYWNoZWRJbWFn
ZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1hZ2U6OmNy
ZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCkBAIC02Myw3ICs2NSw3IEBAIHZvaWQgRkVJ
bWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+
YWRkQ2xpZW50KHRoaXMpOwogfQogCi12b2lkIEZFSW1hZ2U6OmFwcGx5KCkKK3ZvaWQgRkVJbWFn
ZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQx
LDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRJbWFnZSogY2Fj
aGVkSW1hZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFn
ZSopOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRl
eHRTdHJlYW0mIHRzKSBjb25zdDsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHJldmlzaW9uIDQzODA4KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRU1lcmdlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDgsNyArNDksNyBAQCB2b2lkIEZFTWVyZ2U6OnNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvCiAg
ICAgbV9tZXJnZUlucHV0cyA9IG1lcmdlSW5wdXRzOwogfQogCi12b2lkIEZFTWVyZ2U6OmFwcGx5
KCkKK3ZvaWQgRkVNZXJnZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gNDM4
MDgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM2LDcgKzM3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0
Kj4mIG1lcmdlSW5wdXRzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29u
c3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cyk7CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jl
c291cmNlRmlsdGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Owog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xv
Z3kuY3BwCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRU1vcnBo
b2xvZ3kuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03MSw3ICs3Miw3
IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0IHJhZGkKICAgICBtX3JhZGl1
c1kgPSByYWRpdXNZOwogfQogCi12b2lkIEZFTW9ycGhvbG9neTo6YXBwbHkoKQordm9pZCBGRU1v
cnBob2xvZ3k6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiA0
MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDcgKzQ2
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCByYWRpdXNZKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0UmFkaXVzWShmbG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJldmlzaW9uIDQzODA4
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVPZmZzZXQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJU
cmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02MCw3ICs2MSw3IEBAIHZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0
IGR5KQogICAgIG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6YXBwbHkoKQordm9pZCBG
RU9mZnNldDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZpc2lvbiA0MzgwOCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmls
dGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsNyArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0
RHkoZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJldmlzaW9uIDQzODA4KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFU3BlY3VsYXJMaWdodGluZy5oIgogI2lu
Y2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNCw3ICsxMjUsNyBAQCB2b2lkIEZF
U3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3VyY2UoCiAgICAgbV9saWdodFNvdXJjZSA9IGxp
Z2h0U291cmNlOwogfQogCi12b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6YXBwbHkoKQordm9pZCBG
RVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJM
aWdodGluZy5oCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgiCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmls
dGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0m
IGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCShyZXZpc2lvbiA0Mzgw
OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRVRpbGUuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVl
QXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zNiw3ICszNyw3IEBAIFBhc3NSZWZQdHI8RkVUaWxlPiBGRVRpbGU6OmNy
ZWF0ZShGaWx0ZXIKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFVGlsZShpbikpOwogfQogCi12
b2lkIEZFVGlsZTo6YXBwbHkoKQordm9pZCBGRVRpbGU6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
KikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5o
CShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
aWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBA
IC0zMSw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEZFVGlsZT4gY3JlYXRlKEZpbHRlckVmZmVjdCopOwogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKICAgICAgICAg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7
CiAgICAgICAgIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1
bGVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUdXJidWxlbmNlLmNwcAkocmV2aXNpb24gNDM4MDgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0
LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
U1ZHRkVUdXJidWxlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTA1LDcgKzEwNiw3IEBAIHZvaWQgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxlcyhib29sIHMK
ICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwogfQogCi12b2lkIEZFVHVyYnVsZW5jZTo6YXBw
bHkoKQordm9pZCBGRVR1cmJ1bGVuY2U6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5j
ZS5oCShyZXZpc2lvbiA0MzgwOCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUdXJidWxlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU2LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHN0
aXRjaFRpbGVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMoYm9vbCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShTVkdSZXNvdXJjZUZpbHRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogICAg
ICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30513</attachid>
            <date>2009-05-20 13:02:31 -0700</date>
            <delta_ts>2009-05-28 15:36:43 -0700</delta_ts>
            <desc>initial SVG Filter patch</desc>
            <filename>svg-filter-part1.patch</filename>
            <type>text/plain</type>
            <size>97617</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MzkyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcwIEBACisyMDA5LTA1LTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0IG5lZWRzIGNyb3NzLXBsYXRmb3JtIGZpbHRlciBzeXN0ZW0KKyAgICAgICAgW2h0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5MV0KKworICAgICAgICBCcmluZyB1
cCB0aGUgYmFzaWMgZmlsdGVyIHN5c3RlbS4gRmlsdGVyIHJlZ2lvbnMgYW5kIGZpbHRlciBwcmlt
aXRpdmUgCisgICAgICAgIHN1YnJlZ2lvbnMgYXJlIHdvcmtpbmcgYWdhaW4uIEFkZGVkIHRoZSB0
d28gc2ltcGxlIGV4YW1wbGVzIGZlRmxvb2QgYW5kCisgICAgICAgIGZlTWVyZ2UuCisKKyAgICAg
ICAgVGVzdDogc3ZnL2N1c3RvbS9qcy1leGNlc3NpdmUtdXNlLW9mLWVmZmVjdHMuc3ZnCisKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVCbGVuZDo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjphcHBseSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29tcG9zaXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvc2l0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6
U291cmNlQWxwaGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OlNvdXJj
ZUdyYXBoaWMpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgICogc3ZnL0ZpbHRlci5oOgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjpsYXN0RmlsdGVyKToKKyAgICAg
ICAgKiBzdmcvRmlsdGVyRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKiBzdmcvRmlsdGVyRWZmZWN0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpzZXRYQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6eUJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OnNldFlCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0Ojp3aWR0aEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnNldFdpZHRoQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6aGVpZ2h0Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZp
bHRlckVmZmVjdDo6c2V0SGVpZ2h0Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6c3ViUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0U3ViUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cmVzdWx0
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRFZmZlY3RCdWZmZXIp
OgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWls
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50OjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OlNWR0ZFSW1hZ2VFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlRWxlbWVudDo6U1ZHRkVNZXJnZUVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6U1ZHRkVP
ZmZzZXRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oOgorICAgICAgICAq
IHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVs
ZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUaWxlRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVR1cmJ1bGVuY2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXNvdXJjZSk6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjb250ZXh0RWxlbWVudCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlRmlsdGVyOjpTVkdSZXNvdXJjZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZUZpbHRlcjo6ZmlsdGVyQkJveEZvckl0ZW1CQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlRmlsdGVyOjpmaWx0ZXJQcmltaXRpdmVTdWJSZWdpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlRmlsdGVyOjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlRmlsdGVyOjpmaWx0ZXJCb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNv
dXJjZUZpbHRlcjo6c2V0RmlsdGVyQm91bmRpbmdCb3gpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UmVzb3VyY2VGaWx0ZXI6Oml0ZW1Cb3VuZGluZ0JveCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZXNvdXJjZUZpbHRlcjo6c2V0SXRlbUJvdW5kaW5nQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlRmlsdGVyOjpzb3VyY2VHcmFwaGljKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
c291cmNlRmlsdGVyOjpidWlsZGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRy
aXg6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZl
TWF0cml4Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGln
aHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjphcHBseSk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
Rmxvb2Q6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29k
Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFn
ZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjphcHBseSk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6
YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaDoKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmFwcGx5KToK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjph
cHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oOgorCiAyMDA5LTA1LTIwICBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM0LDYgKzE0MzQsMTAgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25l
bnRUcmFuc2Zlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaCBcCisgICAgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcCBcCisgICAgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmggXAorICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFw
aGljLmNwcCBcCisgICAgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5
VHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggXApAQCAtMjU5Miw2
ICsyNTk2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9FbGVtZW50VGlt
ZUNvbnRyb2wuaCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyLmNwcCBcCiAJV2ViQ29yZS9zdmcvRmls
dGVyLmggXAorCVdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9G
aWx0ZXJCdWlsZGVyLmggXAogCVdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAgXAogCVdlYkNv
cmUvc3ZnL0ZpbHRlckVmZmVjdC5oIFwKQEAgLTI5MzEsMTAgKzI5MzYsNiBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNv
dXJjZS5oIFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJj
ZS5oCiAKLXdlYmNvcmVndGtfc291cmNlcyArPSBcCi0JV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fp
cm8vU1ZHUmVzb3VyY2VGaWx0ZXJDYWlyby5jcHAKLQotCiAjIFNWRyBGZWF0dXJlcwogaWYgRU5B
QkxFX1NWR19VU0UKIEZFQVRVUkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfVVNF
PTEKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzE0LDYgKzE3MTQsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZH
PTEpIHsKICAgICAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgXAog
ICAgICAgICBzdmcvU1ZHWm9vbUV2ZW50LmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVy
RXZlbnRzSGl0UnVsZXMuY3BwIFwKKyAgICAgICAgc3ZnL0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAg
ICAgICAgc3ZnL0ZpbHRlckVmZmVjdC5jcHAgXAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRl
bnNpb25zLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdJbWFnZUxvYWRlci5jcHAgXApAQCAtMTg1Miw2
ICsxODUzLDggQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAorICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCisgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCkBAIC0xOTAwLDEwICsxOTAzLDYg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHJlbmRlcmluZy9T
VkdSZW5kZXJTdXBwb3J0LmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9TVkdSb290SW5saW5lQm94
LmNwcAogCi1TT1VSQ0VTICs9IFwKLSAgICAgICAgc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNl
RmlsdGVyUXQuY3BwCi0KLQogICAgICAgICAjIEdFTkVSQVRPUiA1LUM6CiAgICAgICAgIHN2Z25h
bWVzX2Eub3V0cHV0ID0gJCRHRU5FUkFURURfU09VUkNFU19ESVIvU1ZHTmFtZXMuY3BwCiAgICAg
ICAgIHN2Z25hbWVzX2EuY29tbWFuZHMgPSBwZXJsIC1JJCRQV0QvYmluZGluZ3Mvc2NyaXB0cyAk
JFBXRC9kb20vbWFrZV9uYW1lcy5wbCAtLXRhZ3MgJCRQV0Qvc3ZnL3N2Z3RhZ3MuaW4gLS1hdHRy
cyAkJFBXRC9zdmcvc3ZnYXR0cnMuaW4gLS1leHRyYURlZmluZXMgXCIkJHtERUZJTkVTfVwiIC0t
cHJlcHJvY2Vzc29yIFwiJCR7UU1BS0VfTU9DfSAtRVwiIC0tZmFjdG9yeSAtLXdyYXBwZXJGYWN0
b3J5IC0tb3V0cHV0RGlyICQkR0VORVJBVEVEX1NPVVJDRVNfRElSCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCShyZXZpc2lvbiA0Mzg4OCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJGRUJsZW5kLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVy
RWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIEJsZW5kTW9kZVR5cGUgbW9kZSkKQEAgLTU5
LDcgKzYxLDcgQEAgdm9pZCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAg
IG1fbW9kZSA9IG1vZGU7CiB9CiAKLXZvaWQgRkVCbGVuZDo6YXBwbHkoKQordm9pZCBGRUJsZW5k
OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw2ICsyNSw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQog
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIu
aCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgZW51bSBCbGVuZE1vZGVUeXBlIHsKQEAg
LTQ2LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBCbGVuZE1vZGVUeXBl
IGJsZW5kTW9kZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGVU
eXBlKTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
Kik7CisgICAgICAgIHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRkVCbGVu
ZChGaWx0ZXJFZmZlY3QqLCBGaWx0ZXJFZmZlY3QqLCBCbGVuZE1vZGVUeXBlKTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZFQ29sb3JNYXRy
aXguaCIKIAorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRkVDb2xvck1hdHJpeDo6RkVDb2xvck1hdHJpeChGaWx0ZXJFZmZlY3QqIGluLCBD
b2xvck1hdHJpeFR5cGUgdHlwZSwgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKQpAQCAtNTks
NyArNjEsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6OnNldFZhbHVlcyhjb25zdCBWZWN0CiAgICAg
bV92YWx1ZXMgPSB2YWx1ZXM7CiB9CiAKLXZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHkoKQordm9p
ZCBGRUNvbG9yTWF0cml4OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXgu
aAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb2xvck1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw4IEBACiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCisKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDYsOCArNDgsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlcygpIGNvbnN0Owog
ICAgICAgICB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CiAgICAgICAgIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAo
KTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lk
IGR1bXAoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZFQ29sb3JNYXRyaXgoRmlsdGVyRWZm
ZWN0KiwgQ29sb3JNYXRyaXhUeXBlLCBjb25zdCBWZWN0b3I8ZmxvYXQ+Jik7CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50
VHJhbnNmZXIuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQs
NiArMjQsOCBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNs
dWRlICJGRUNvbXBvbmVudFRyYW5zZmVyLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29t
cG9uZW50VHJhbnNmZXIoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbiYgcmVkRnVuYywgCkBAIC04Myw3ICs4NSw3IEBAIHZvaWQgRkVDb21wb25lbnRUcmFu
c2Zlcjo6c2V0QWxwaGFGdW5jdGkKICAgICBtX2FscGhhRnVuYyA9IGZ1bmM7CiB9CiAKLXZvaWQg
RkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoKQordm9pZCBGRUNvbXBvbmVudFRyYW5zZmVyOjph
cHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw5IEBACiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCisKICNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5oIgorI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTc4LDggKzgw
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRBbHBoYUZ1bmN0aW9u
KGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKICAgICAgICAgCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBhcHBseSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAg
ICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgZHVtcCgpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRkVDb21wb25lbnRUcmFuc2ZlcihGaWx0ZXJFZmZlY3Qq
LGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mLCBjb25zdCBDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uJiwKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2
ICsyNCw4IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1
ZGUgIkZFQ29tcG9zaXRlLmgiCiAKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQ29tcG9zaXRlOjpGRUNvbXBvc2l0ZShGaWx0ZXJFZmZl
Y3QqIGluLCBGaWx0ZXJFZmZlY3QqIGluMiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYg
dHlwZSwKQEAgLTk1LDcgKzk3LDcgQEAgdm9pZCBGRUNvbXBvc2l0ZTo6c2V0SzQoZmxvYXQgazQp
CiAgICAgbV9rNCA9IGs0OwogfQogCi12b2lkIEZFQ29tcG9zaXRlOjphcHBseSgpCit2b2lkIEZF
Q29tcG9zaXRlOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCShyZXZpc2lv
biA0Mzg4OCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGVudW0gQ29tcG9zaXRl
T3BlcmF0aW9uVHlwZSB7CkBAIC01OCw4ICs2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgazQoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRLNChmbG9hdCk7CiAgICAg
ICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAg
ICB2b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZFQ29tcG9zaXRlKEZpbHRl
ckVmZmVjdCosIEZpbHRlckVmZmVjdCosIGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhh
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFNv
dXJjZUFscGhhX2gKKyNkZWZpbmUgU291cmNlQWxwaGFfaAorCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgU291cmNlQWxwaGEgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6ICAgICAg
ICAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U291cmNlQWxwaGE+IGNyZWF0ZSgpOworICAg
ICAgICAKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2
b2lkIGR1bXAoKTsKKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBTb3VyY2VBbHBoYSgpIHsg
fQorICAgIH07Cit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKworI2VuZGlmIC8vIFNvdXJjZUFscGhhX2gKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgICAgQ29weXJp
Z2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+
CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFpbnQgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KworI2lmbmRlZiBTb3VyY2VHcmFwaGljX2gKKyNkZWZpbmUgU291cmNlR3JhaHBpY19oCisKKyNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCisKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKKyAgICBjbGFzcyBTb3VyY2VHcmFwaGljIDogcHVibGljIEZpbHRlckVmZmVjdCB7
CisgICAgcHVibGljOiAgICAgICAgCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNvdXJjZUdy
YXBoaWM+IGNyZWF0ZSgpOworICAgICAgICAKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJj
ZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKKyAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBTb3VyY2VHcmFwaGljKCkgeyB9CisgICAgfTsKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorCisjZW5kaWYg
Ly8gU291cmNlR3JhcGhpY19oCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBw
b3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0
LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBw
b3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU1ZHUmVuZGVy
QmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAgICAg
aWYgKGZpbHRlcikgewogICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsK
LSAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGlu
Z0JveCk7CisgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwg
b2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKICAgICB9IGVsc2UgaWYgKCFmaWx0ZXJJZC5p
c0VtcHR5KCkpCiAgICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVtZW50KTsKICNl
bmRpZgpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVy
U1ZHQ29udGUKIAogI2lmIEVOQUJMRShTVkdfRklMVEVSUykKICAgICBpZiAoZmlsdGVyKSB7Ci0g
ICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIGJvdW5kaW5nQm94
KTsKKyAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0
LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQgPSBzYXZl
ZENvbnRleHQ7CiAgICAgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJD
b3JlL3N2Zy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlcj4gY3JlYXRlKEZp
bHRlckVmZmVjdCopOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBGaWx0ZXIoRmls
dGVyRWZmZWN0KiBlZmZlY3QpOworICAgICAgICBGaWx0ZXIoRmlsdGVyRWZmZWN0Kik7CiAgICAg
CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZWZmZWN0OwogICAgIH07CkluZGV4OiBX
ZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmls
dGVyQnVpbGRlci5oCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMjggKzIzLDM2IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJG
aWx0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgCisKKyAgICBjbGFzcyBTdHJpbmdJbXBsOworCiAgICAgY2xhc3MgRmlsdGVyQnVp
bGRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckJ1aWxkZXI+IHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBlZmZlY3QpIHsgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0KTsgfQotICAg
ICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Qg
eyByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmltcGwoKSkuZ2V0KCk7IH0KLSAgICAgICAg
Ci0gICAgICAgIFBhc3NSZWZQdHI8RmlsdGVyPiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlcjsgfQotICAgICAgICAKKworICAgICAgICBGaWx0ZXJCdWlsZGVyKCk7CisKKyAgICAgICAg
dm9pZCBhZGQoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVj
dCk7CisKKyAgICAgICAgRmlsdGVyRWZmZWN0KiBnZXRFZmZlY3RCeUlkKGNvbnN0IFN0cmluZyYg
aWQpIGNvbnN0OworICAgICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RGaWx0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7IH0KKworICAgICAgICB2b2lkIGNsZWFyRWZmZWN0cygp
OworCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSGFzaE1hcDxTdHJpbmdJbXBsKiwgUmVmUHRyPEZp
bHRlckVmZmVjdD4gPiBtX25hbWVkRWZmZWN0czsKLSAgICAgICAgCi0gICAgICAgIFJlZlB0cjxG
aWx0ZXI+IG1fZmlsdGVyOworICAgICAgICBIYXNoTWFwPFJlZlB0cjxTdHJpbmdJbXBsPiwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gPiBtX25hbWVkRWZmZWN0czsKKworICAgICAgICBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1f
c291cmNlR3JhcGhpYzsKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VBbHBo
YTsKICAgICB9OwotICAgIAorCiB9IC8vbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRl
ckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcAko
cmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSwxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGaWx0ZXJF
ZmZlY3Q6OkZpbHRlckVmZmVjdCgpCisgICAgOiBtX3hCQm94TW9kZShmYWxzZSkKKyAgICAsIG1f
eUJCb3hNb2RlKGZhbHNlKQorICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQorICAgICwgbV9o
ZWlnaHRCQm94TW9kZShmYWxzZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVyRWZm
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9u
IDQzODg4KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDYgKzIxLDkgQEAKICNkZWZpbmUgRmlsdGVyRWZmZWN0X2gKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVk
ZSAiVGV4dFN0cmVhbS5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTMyLDEz
ICszNSw0MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRmlsdGVyRWZmZWN0IDog
cHVibGljIFJlZkNvdW50ZWQ8RmlsdGVyRWZmZWN0PiB7CiAgICAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIH5GaWx0ZXJFZmZlY3QoKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgdm9pZCBh
cHBseSgpID0gMDsKKworICAgICAgICBib29sIHhCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3hCQm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldFhCb3VuZGluZ0JveE1vZGUoYm9v
bCBiYm94TW9kZSkgeyBtX3hCQm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAgICAgYm9vbCB5
Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV95QkJveE1vZGU7IH0KKyAgICAgICAg
dm9pZCBzZXRZQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1vZGUpIHsgbV95QkJveE1vZGUgPSBi
Ym94TW9kZTsgfQorCisgICAgICAgIGJvb2wgd2lkdGhCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX3dpZHRoQkJveE1vZGU7IH0KKyAgICAgICAgdm9pZCBzZXRXaWR0aEJvdW5kaW5n
Qm94TW9kZShib29sIGJib3hNb2RlKSB7IG1fd2lkdGhCQm94TW9kZSA9IGJib3hNb2RlOyB9CisK
KyAgICAgICAgYm9vbCBoZWlnaHRCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2hl
aWdodEJCb3hNb2RlOyB9CisgICAgICAgIHZvaWQgc2V0SGVpZ2h0Qm91bmRpbmdCb3hNb2RlKGJv
b2wgYmJveE1vZGUpIHsgbV9oZWlnaHRCQm94TW9kZSA9IGJib3hNb2RlOyB9CisKKyAgICAgICAg
RmxvYXRSZWN0IHN1YlJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3ViUmVnaW9uOyB9CisgICAg
ICAgIHZvaWQgc2V0U3ViUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgc3ViUmVnaW9uKSB7IG1fc3Vi
UmVnaW9uID0gc3ViUmVnaW9uOyB9CisKKyAgICAgICAgLy8gVGhlIHJlc3VsdCBpcyBib3VuZGVk
IGJ5IHRoZSBzaXplIG9mIHRoZSBmaWx0ZXIgcHJpbWl0aXZlIHRvIHNhdmUgcmVzb3VyY2VzCisg
ICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSgpIHsgcmV0dXJuIG1fZWZmZWN0QnVmZmVy
LmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0RWZmZWN0QnVmZmVyKEltYWdlQnVmZmVyKiBlZmZl
Y3RCdWZmZXIpIHsgbV9lZmZlY3RCdWZmZXIuc2V0KGVmZmVjdEJ1ZmZlcik7IH0KKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkdW1wKCkgPSAwOwotICAgICAgICAKKwogICAgICAgICB2aXJ0dWFsIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgRmlsdGVyRWZmZWN0KCk7CisKKyAgICBwcml2YXRlOgorCisgICAg
ICAgIGJvb2wgbV94QkJveE1vZGUgOiAxOworICAgICAgICBib29sIG1feUJCb3hNb2RlIDogMTsK
KyAgICAgICAgYm9vbCBtX3dpZHRoQkJveE1vZGUgOiAxOworICAgICAgICBib29sIG1faGVpZ2h0
QkJveE1vZGUgOiAxOworCisgICAgICAgIEZsb2F0UmVjdCBtX3N1YlJlZ2lvbjsKKworICAgICAg
ICBtdXRhYmxlIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9lZmZlY3RCdWZmZXI7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAko
cmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAgU1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxl
bmRFbGVtZW50KGNvbgogICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAgICAs
IG1faW4yKHRoaXMsIFNWR05hbWVzOjppbjJBdHRyKQogICAgICwgbV9tb2RlKHRoaXMsIFNWR05h
bWVzOjptb2RlQXR0ciwgRkVCTEVORF9NT0RFX05PUk1BTCkKLSAgICAsIG1fZmlsdGVyRWZmZWN0
KDApCiB7CiB9CiAKQEAgLTY1LDIxICs2NCwxNyBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50Ojpw
YXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCog
U1ZHRkVCbGVuZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
KSBjb25zdAorYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAKLSAgICByZXR1
cm4gMDsKLX0KLQotYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciog
YnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVj
dEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0RWZm
ZWN0QnlJZChpbjIoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJj
ZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0MiA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4yKCkpOwog
CiAgICAgaWYoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFQmxlbmQ6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwg
c3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4gKG1vZGUoKSkpKTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRUJsZW5kOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19j
YXN0PEJsZW5kTW9kZVR5cGU+IChtb2RlKCkpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
ZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxk
ZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVl
OwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICsz
NiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2aXJ0dWFsIH5TVkdGRUJsZW5kRWxl
bWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBw
ZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVm
ZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRl
ckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFn
U3RyaW5nLCBTVkdOYW1lczo6aW4yQXR0clN0cmluZywgU3RyaW5nLCBJbjIsIGluMikKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdO
YW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFtZXM6Om1vZGVBdHRyU3RyaW5nLCBpbnQsIE1v
ZGUsIG1vZGUpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVCbGVuZD4gbV9maWx0ZXJFZmZl
Y3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3
LDYgQEAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OlNWR0ZFQ29sb3JNYXRyaQogICAgICwgbV9p
bjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAgICAsIG1fdHlwZSh0aGlzLCBTVkdOYW1lczo6
dHlwZUF0dHIsIEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOKQogICAgICwgbV92YWx1ZXModGhp
cywgU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIFNWR051bWJlckxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6
dmFsdWVzQXR0cikpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQogCkBAIC02NiwxNSAr
NjUsOSBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpwYXJzZU1hcHBlCiAgICAgICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1
dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorYm9vbCBTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291
cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1i
b29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVy
KQotewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRl
cigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTg3LDcgKzgwLDkgQEAgYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVu
dDo6YnVpbGQoRmlsdAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwO2kgPCBucjtpKyspCiAg
ICAgICAgIF92YWx1ZXMuYXBwZW5kKG51bWJlcnMtPmdldEl0ZW0oaSwgZWMpKTsKIAotICAgIGJ1
aWxkZXItPmFkZChyZXN1bHQoKSwgRkVDb2xvck1hdHJpeDo6Y3JlYXRlKGlucHV0MSwgc3RhdGlj
X2Nhc3Q8Q29sb3JNYXRyaXhUeXBlPiAodHlwZSgpKSwgX3ZhbHVlcykpOworICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JNYXRyaXg6OmNyZWF0ZShpbnB1dDEsIHN0YXRp
Y19jYXN0PENvbG9yTWF0cml4VHlwZT4gKHR5cGUoKSksIF92YWx1ZXMpOworICAgIHNldFN0YW5k
YXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJS
ZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogICAg
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5oCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50KCk7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSop
OwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9y
TWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29sb3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVz
OjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCiAgICAgICAgIEFOSU1BVEVEX1BST1BF
UlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29s
b3JNYXRyaXhUYWdTdHJpbmcsIFNWR05hbWVzOjp0eXBlQXR0clN0cmluZywgaW50LCBUeXBlLCB0
eXBlKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb2xvck1h
dHJpeEVsZW1lbnQsIFNWR05hbWVzOjpmZUNvbG9yTWF0cml4VGFnU3RyaW5nLCBTVkdOYW1lczo6
dmFsdWVzQXR0clN0cmluZywgU1ZHTnVtYmVyTGlzdCwgVmFsdWVzLCB2YWx1ZXMpCi0KLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RkVDb2xvck1hdHJpeD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25l
bnRUcmFuc2ZlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQ6OlNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQogICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6Omlu
QXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTU3LDE1ICs1Niw5IEBA
IHZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnBhcnMKICAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
UmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWJvb2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxk
ZXIqIGJ1aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRF
ZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291
cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmKCFpbnB1
dDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg2LDcgKzc5LDkgQEAgYm9vbCBTVkdGRUNv
bXBvbmVudFRyYW5zZmVyRWxlbWVudDo6YnVpbAogICAgICAgICAgICAgYWxwaGEgPSBzdGF0aWNf
Y2FzdDxTVkdGRUZ1bmNBRWxlbWVudCo+KG4pLT50cmFuc2ZlckZ1bmN0aW9uKCk7CiAgICAgfQog
ICAgIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y3Jl
YXRlKGlucHV0MSwgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpKTsKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5wdXQxLCByZWQs
IGdyZWVuLCBibHVlLCBhbHBoYSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJl
c291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmFk
ZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHJl
dmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRl
Kik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVz
b3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7
CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb25lbnRUcmFuc2ZlclRhZ1N0
cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKLQotICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxGRUNvbXBvbmVudFRyYW5zZmVyPiBtX2ZpbHRlckVmZmVjdDsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQCBTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OlNWR0ZFQ29tcG9zaXRlRWxlCiAgICAgLCBtX2syKHRoaXMsIFNWR05h
bWVzOjprMkF0dHIpCiAgICAgLCBtX2szKHRoaXMsIFNWR05hbWVzOjprM0F0dHIpCiAgICAgLCBt
X2s0KHRoaXMsIFNWR05hbWVzOjprNEF0dHIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewog
fQogCkBAIC04MSwyMyArODAsMTggQEAgdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFQ29t
cG9zaXRlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNv
bnN0Citib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biAwOwotfQotCi1ib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRl
ciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwotICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gYnVpbGRlci0+Z2V0
RWZmZWN0QnlJZChpbjIoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNv
dXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MiA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4yKCkp
OwogICAgIAogICAgIGlmKCFpbnB1dDEgfHwgIWlucHV0MikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVDb21wb3Np
dGU6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9u
VHlwZT4gKF9vcGVyYXRvcigpKSwKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBG
RUNvbXBvc2l0ZTo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDb21wb3NpdGVP
cGVyYXRpb25UeXBlPiAoX29wZXJhdG9yKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGsxKCksIGsyKCksIGszKCksIGs0KCkpOwotICAgIGJ1aWxkZXItPmFkZChy
ZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1
aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHJldmlzaW9uIDQz
ODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDggKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5TVkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWls
ZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZl
Q29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwg
aW4xKQpAQCAtNDYsOCArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVsZW1lbnQsIFNWR05hbWVz
OjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmsyQXR0clN0cmluZywgZmxvYXQsIEsy
LCBrMikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9z
aXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6azNB
dHRyU3RyaW5nLCBmbG9hdCwgSzMsIGszKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6ZmVDb21wb3NpdGVUYWdT
dHJpbmcsIFNWR05hbWVzOjprNEF0dHJTdHJpbmcsIGZsb2F0LCBLNCwgazQpCi0KLSAgICAgICAg
bXV0YWJsZSBSZWZQdHI8RkVDb21wb3NpdGU+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw2IEBA
IFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXMKICAgICAsIG1fc3VyZmFj
ZVNjYWxlKHRoaXMsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAxLjBmKQogICAgICwgbV9r
ZXJuZWxVbml0TGVuZ3RoWCh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpCiAg
ICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKHRoaXMsIFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTcyLDE1ICs3MSw5IEBA
IHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU0KICAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZp
bHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorYm9vbCBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNv
dXJjZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQot
Ym9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1
aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5i
dWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmKCFpbnB1dDEpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg4LDkgKzgxLDEwIEBAIGJvb2wgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpidWlsZCgKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGZpbHRlclN0
eWxlID0gc3R5bGVGb3JSZW5kZXJlcigpOwogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUt
PnN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKTsKICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiBhZGRlZEVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xv
ciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKKyAgICBSZWZQdHI8RmlsdGVy
RWZmZWN0PiBlZmZlY3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGlucHV0MSwgY29sb3Is
IHN1cmZhY2VTY2FsZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRM
ZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7Ci0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBhZGRl
ZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIHNldFN0YW5kYXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNv
dXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQo
cmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9u
IDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDggKzQwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIH5TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
KSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudCwgU1ZHTmFtZXM6OmZlRGlmZnVzZUxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6
aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpAQCAtNTEsOCArNTAsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZ1N0
cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFlJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExl
bmd0aFksIGtlcm5lbFVuaXRMZW5ndGhZKQogCiAgICAgICAgIExpZ2h0U291cmNlKiBmaW5kTGln
aHRzKCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRURpZmZ1c2VM
aWdodGluZz4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDYgQEAgU1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpTVkdGRURpc3BsYQogICAgICwgbV94Q2hhbm5lbFNlbGVjdG9yKHRoaXMsIFNW
R05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ0hBTk5FTF9BKQogICAgICwgbV95Q2hhbm5l
bFNlbGVjdG9yKHRoaXMsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciwgQ0hBTk5FTF9B
KQogICAgICwgbV9zY2FsZSh0aGlzLCBTVkdOYW1lczo6c2NhbGVBdHRyKQotICAgICwgbV9maWx0
ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNzMsMjQgKzcyLDE5IEBAIHZvaWQgU1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpwYXJzZU0KICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVy
RWZmZWN0KiBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNv
dXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCi17Ci0gICAgRmls
dGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBG
aWx0ZXJFZmZlY3QqIGlucHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAg
IEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZm
ZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJSZXNvdXJj
ZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZighaW5wdXQx
IHx8ICFpbnB1dDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgCi0gICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRURpc3BsYWNlbWVudE1hcDo6Y3Jl
YXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0b3JUeXBlPiAoeENo
YW5uZWxTZWxlY3RvcigpKSwgCisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVE
aXNwbGFjZW1lbnRNYXA6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q2hhbm5l
bFNlbGVjdG9yVHlwZT4gKHhDaGFubmVsU2VsZWN0b3IoKSksIAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENoYW5uZWxTZWxlY3RvclR5cGU+ICh5
Q2hhbm5lbFNlbGVjdG9yKCkpLCBzY2FsZSgpKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCks
IGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCkt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHN0YXRpYyBDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChjb25zdCBT
dHJpbmcmKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJp
YnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3Qq
IGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBib29sIGJ1
aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291
cmNlRmlsdGVyKik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BS
T1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNWR05hbWVz
OjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3Ry
aW5nLCBJbjEsIGluMSkKQEAgLTQzLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBF
bGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjp4
Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywgaW50LCBYQ2hhbm5lbFNlbGVjdG9yLCB4Q2hhbm5l
bFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVE
aXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJp
bmcsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywgaW50LCBZQ2hhbm5lbFNl
bGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNM
QVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFj
ZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjpzY2FsZUF0dHJTdHJpbmcsIGZsb2F0LCBTY2Fs
ZSwgc2NhbGUpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVEaXNwbGFjZW1lbnRNYXA+IG1f
ZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVGbG9vZEVsZW1lbnQ6OlNWR0ZFRmxvb2RFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jKQotICAgICwgbV9m
aWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNDksMjAgKzQ4LDE2IEBAIHZvaWQgU1ZHRkVGbG9v
ZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJF
ZmZlY3QqIFNWR0ZFRmxvb2RFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
IGZpbHRlcikgY29uc3QKLXsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
MDsKLX0KLQotYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVp
bGRlcikKK2Jvb2wgU1ZHRkVGbG9vZEVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXJSZXNvdXJjZSkKIHsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGZpbHRlclN0eWxlID0g
c3R5bGVGb3JSZW5kZXJlcigpOwogCiAgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3Zn
U3R5bGUoKS0+Zmxvb2RDb2xvcigpOwogICAgIGZsb2F0IG9wYWNpdHkgPSBmaWx0ZXJTdHlsZS0+
c3ZnU3R5bGUoKS0+Zmxvb2RPcGFjaXR5KCk7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCks
IEZFRmxvb2Q6OmNyZWF0ZShjb2xvciwgb3BhY2l0eSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZl
Y3Q+IGVmZmVjdCA9IEZFRmxvb2Q6OmNyZWF0ZShjb2xvciwgb3BhY2l0eSk7CisgICAgc2V0U3Rh
bmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRl
clJlc291cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7ICAg
IAogICAgIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5o
CShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDExICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAg
IHZpcnR1YWwgflNWR0ZFRmxvb2RFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBh
cnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNW
R0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0g
ICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwotCi0gICAgcHJpdmF0ZToKLSAgICAg
ICAgbXV0YWJsZSBSZWZQdHI8RkVGbG9vZD4gbV9maWx0ZXJFZmZlY3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNw
cAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw2IEBAIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6U1ZHRkVHYXVzc2lhbkIKICAgICAsIG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0
dHIpCiAgICAgLCBtX3N0ZERldmlhdGlvblgodGhpcywgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0
dHIpCiAgICAgLCBtX3N0ZERldmlhdGlvblkodGhpcywgU1ZHTmFtZXM6OnN0ZERldmlhdGlvbkF0
dHIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewogfQogCkBAIC02NywyMCArNjYsMTYgQEAg
dm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNlTWFwcAogICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6ZmlsdGVy
RWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQog
ewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsK
LSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkp
OworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+
Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFR2F1c3NpYW5CbHVyOjpjcmVh
dGUoaW5wdXQxLCBzdGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSkpOworICAgIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFR2F1c3NpYW5CbHVyOjpjcmVhdGUoaW5wdXQxLCBz
dGREZXZpYXRpb25YKCksIHN0ZERldmlhdGlvblkoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5i
dWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCShyZXZp
c2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwxNSArNDAsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFN0ZERldmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBmbG9hdCBzdGRE
ZXZpYXRpb25ZKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUo
TWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0
ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChG
aWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZp
bHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFS
QVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1c3NpYW5CbHVy
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LCBTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWdTdHJpbmcsIFNWR1N0ZERldmlhdGlvblhB
dHRySWRlbnRpZmllciwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlvblgpCiAgICAg
ICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQsIFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHU3RkRGV2aWF0aW9uWUF0
dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9uWSkKLQotICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxGRUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZlY3Q7CiAgICAg
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDYgQEAgU1ZHRkVJbWFnZUVsZW1lbnQ6OlNW
R0ZFSW1hZ2VFbGVtZW50KGNvbgogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAsIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKHRoaXMs
IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bzo6Y3JlYXRlKCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCi0gICAgLCBtX2ZpbHRlckVmZmVj
dCgwKQogewogfQogCkBAIC04MiwyNCArODAsMTggQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaQogICAgIH0KIH0KIAotdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90
aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGZpbmlzaGVkT2JqKQordm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogewotICAgIGlmIChmaW5p
c2hlZE9iaiA9PSBtX2NhY2hlZEltYWdlICYmIG1fZmlsdGVyRWZmZWN0KQotICAgICAgICBtX2Zp
bHRlckVmZmVjdC0+c2V0Q2FjaGVkSW1hZ2UobV9jYWNoZWRJbWFnZS5nZXQoKSk7CiB9CiAKLVNW
R0ZpbHRlckVmZmVjdCogU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWls
ZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VG
aWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIGlmKCFtX2NhY2hlZEltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFSW1hZ2U6OmNy
ZWF0ZShtX2NhY2hlZEltYWdlLmdldCgpKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVJbWFnZTo6Y3JlYXRlKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAgIHNldFN0YW5k
YXJkQXR0cmlidXRlcyhmaWx0ZXJSZXNvdXJjZSwgZWZmZWN0LmdldCgpKTsKKyAgICBmaWx0ZXJS
ZXNvdXJjZS0+YnVpbGRlcigpLT5hZGQocmVzdWx0KCksIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmgJKHJldmlzaW9u
IDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMTcgKzQ3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKik7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVh
bCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0
ZXIqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBjb25zdCBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFO
SU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUltYWdlRWxlbWVudCwgU1ZHTmFtZXM6
OmZlSW1hZ2VUYWdTdHJpbmcsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0clN0cmlu
ZywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVB
c3BlY3RSYXRpbykKIAogICAgICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4g
bV9jYWNoZWRJbWFnZTsKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVJbWFnZT4gbV9maWx0ZXJF
ZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBTVkdGRU1lcmdlRWxlbWVudDo6U1ZHRkVNZXJnZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCi0gICAgLCBtX2ZpbHRlckVm
ZmVjdCgwKQogewogfQogCkBAIC00MCwxOCArMzksMTIgQEAgU1ZHRkVNZXJnZUVsZW1lbnQ6On5T
VkdGRU1lcmdlRWxlbWVudCgpCiB7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVNZXJnZUVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAotewot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZF
TWVyZ2VFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRU1l
cmdlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewog
ICAgIFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiBtZXJnZUlucHV0czsKICAgICBmb3IgKE5vZGUqIG4g
PSBmaXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAg
aWYgKG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlTWVyZ2VOb2RlVGFnKSkgewotICAgICAgICAg
ICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoc3Rh
dGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obiktPmluMSgpKTsKKyAgICAgICAgICAg
IEZpbHRlckVmZmVjdCogbWVyZ2VFZmZlY3QgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5n
ZXRFZmZlY3RCeUlkKHN0YXRpY19jYXN0PFNWR0ZFTWVyZ2VOb2RlRWxlbWVudCo+KG4pLT5pbjEo
KSk7CiAgICAgICAgICAgICBtZXJnZUlucHV0cy5hcHBlbmQobWVyZ2VFZmZlY3QpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNTksNyArNTIsOSBAQCBib29sIFNWR0ZFTWVyZ2VFbGVtZW50OjpidWls
ZChGaWx0ZXJCdWlsCiAgICAgaWYobWVyZ2VJbnB1dHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFTWVyZ2U6OmNyZWF0ZSht
ZXJnZUlucHV0cykpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFTWVyZ2U6
OmNyZWF0ZShtZXJnZUlucHV0cyk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRlclJl
c291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmFk
ZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFNWR0ZFTWVyZ2VFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgICAgICB2aXJ0dWFsIH5TVkdGRU1lcmdlRWxlbWVu
dCgpOwogCi0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZH
UmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVy
Kik7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRU1lcmdlPiBtX2Zp
bHRlckVmZmVjdDsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDYgQEAgU1ZHRkVPZmZz
ZXRFbGVtZW50OjpTVkdGRU9mZnNldEVsZW1lbnQoYwogICAgICwgbV9pbjEodGhpcywgU1ZHTmFt
ZXM6OmluQXR0cikKICAgICAsIG1fZHgodGhpcywgU1ZHTmFtZXM6OmR4QXR0cikKICAgICAsIG1f
ZHkodGhpcywgU1ZHTmFtZXM6OmR5QXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9
CiAKQEAgLTU3LDIwICs1NiwxNiBAQCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVPZmZz
ZXRFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QK
K2Jvb2wgU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVy
UmVzb3VyY2UpCiB7Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLWJvb2wgU1ZHRkVPZmZzZXRFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVy
KQotewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChp
bjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRl
cigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVPZmZzZXQ6OmNyZWF0
ZShpbnB1dDEsIGR4KCksIGR5KCkpKTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Qg
PSBGRU9mZnNldDo6Y3JlYXRlKGlucHV0MSwgZHgoKSwgZHkoKSk7CisgICAgc2V0U3RhbmRhcmRB
dHRyaWJ1dGVzKGZpbHRlclJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291
cmNlLT5idWlsZGVyKCktPmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA0
Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwxNSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFs
IH5TVkdGRU9mZnNldEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVy
RWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAg
Ym9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChT
VkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmZlT2Zmc2V0
VGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogICAg
ICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBT
VkdOYW1lczo6ZmVPZmZzZXRUYWdTdHJpbmcsIFNWR05hbWVzOjpkeEF0dHJTdHJpbmcsIGZsb2F0
LCBEeCwgZHgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9m
ZnNldEVsZW1lbnQsIFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmR5QXR0
clN0cmluZywgZmxvYXQsIER5LCBkeSkKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRU9mZnNl
dD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlz
aW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5n
RWxlbWVudDo6U1ZHRkVTcGVjdQogICAgICwgbV9zdXJmYWNlU2NhbGUodGhpcywgU1ZHTmFtZXM6
OnN1cmZhY2VTY2FsZUF0dHIsIDEuMGYpCiAgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKHRoaXMs
IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKICAgICAsIG1fa2VybmVsVW5pdExlbmd0
aFkodGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKQotICAgICwgbV9maWx0ZXJF
ZmZlY3QoMCkKIHsKIH0KIApAQCAtNzEsMTIgKzcwLDYgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpwYXJzZQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZl
Y3QqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiAwOwotfQotCiBMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6ZmluZExpZ2h0cygpIGNvbnN0CiB7CiAgICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKQEAg
LTkzLDkgKzg2LDkgQEAgTGlnaHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbgog
ICAgIHJldHVybiBsaWdodDsKIH0KIAotYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50
OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0g
ICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsK
KyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdl
dEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNCw5ICs5NywxMCBAQCBib29sIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQ6OmJ1aWxkCiAgICAgCiAgICAgQ29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5
bGUoKS0+bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFk
ZGVkRWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgCisgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0ID0gRkVTcGVjdWxhckxpZ2h0aW5nOjpjcmVhdGUoaW5wdXQxLCBjb2xvciwgc3Vy
ZmFjZVNjYWxlKCksIHNwZWN1bGFyQ29uc3RhbnQoKSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXJFeHBvbmVudCgpLCBrZXJuZWxVbml0TGVuZ3RoWCgp
LCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBmaW5kTGlnaHRzKCkpOwotICAgIGJ1aWxkZXItPmFkZChy
ZXN1bHQoKSwgYWRkZWRFZmZlY3QucmVsZWFzZSgpKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1
aWxkZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0
cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
aAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50KCk7CiAg
ICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVk
QXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJC
dWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciop
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05T
KFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZVNwZWN1bGFyTGlnaHRp
bmdUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywgSW4xLCBpbjEpCkBA
IC00OSw4ICs0OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQU5JTUFURURfUFJP
UEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVz
OjpmZVNwZWN1bGFyTGlnaHRpbmdUYWdTdHJpbmcsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRy
U3RyaW5nLCBmbG9hdCwgU3VyZmFjZVNjYWxlLCBzdXJmYWNlU2NhbGUpCiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBT
VkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdLZXJuZWxVbml0TGVuZ3Ro
WElkZW50aWZpZXIsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFgp
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdL
ZXJuZWxVbml0TGVuZ3RoWUlkZW50aWZpZXIsIGZsb2F0LCBLZXJuZWxVbml0TGVuZ3RoWSwga2Vy
bmVsVW5pdExlbmd0aFkpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVTcGVjdWxhckxpZ2h0
aW5nPiBtX2ZpbHRlckVmZmVjdDsKICAgICAgICAgCiAgICAgICAgIExpZ2h0U291cmNlKiBmaW5k
TGlnaHRzKCkgY29uc3Q7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR0ZFVGls
ZUVsZW1lbnQ6OlNWR0ZFVGlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqIGRvYykKICAgICA6IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyh0YWdOYW1lLCBkb2MpCiAgICAgLCBtX2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAg
ICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNTIsMjAgKzUxLDE2IEBAIHZvaWQgU1ZH
RkVUaWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAot
U1ZHRmlsdGVyRWZmZWN0KiBTVkdGRVRpbGVFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRVRpbGVFbGVtZW50OjpidWlsZChGaWx0
ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRl
ci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBmaWx0
ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAogICAgIGlmKCFp
bnB1dDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQo
KSwgRkVUaWxlOjpjcmVhdGUoaW5wdXQxKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0ID0gRkVUaWxlOjpjcmVhdGUoaW5wdXQxKTsKKyAgICBzZXRTdGFuZGFyZEF0dHJpYnV0ZXMo
ZmlsdGVyUmVzb3VyY2UsIGVmZmVjdC5nZXQoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmJ1aWxk
ZXIoKS0+YWRkKHJlc3VsdCgpLCBlZmZlY3QucmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDQzODg4KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyAr
MzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGRVRpbGVF
bGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1h
cHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVy
RWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmls
dGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0
ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRVRpbGVFbGVtZW50LCBTVkdOYW1lczo6ZmVUaWxlVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQotCi0gICAgICAgIG11dGFibGUgUmVm
UHRyPEZFVGlsZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9u
IDQzODg4KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVU
dXJidWxlbmNlRQogICAgICwgbV9zZWVkKHRoaXMsIFNWR05hbWVzOjpzZWVkQXR0cikKICAgICAs
IG1fc3RpdGNoVGlsZXModGhpcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgU1ZHX1NUSVRD
SFRZUEVfTk9TVElUQ0gpCiAgICAgLCBtX3R5cGUodGhpcywgU1ZHTmFtZXM6OnR5cGVBdHRyLCBG
RVRVUkJVTEVOQ0VfVFlQRV9UVVJCVUxFTkNFKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsK
IH0KIApAQCAtNzcsMTcgKzc2LDEyIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFy
c2VNYXBwZWQKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpw
YXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikg
Y29uc3QKK2Jvb2wgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0
ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiAwOwotfQotCi1ib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1
aWxkZXIqIGJ1aWxkZXIpCi17Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3Qg
PSBGRVR1cmJ1bGVuY2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxUdXJidWxhbmNlVHlwZT4gKHR5cGUo
KSksIGJhc2VGcmVxdWVuY3lYKCksIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9
IEZFVHVyYnVsZW5jZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFR1cmJ1bGFuY2VUeXBlPiAodHlwZSgp
KSwgYmFzZUZyZXF1ZW5jeVgoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZUZyZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVz
KCkgPT0gU1ZHX1NUSVRDSFRZUEVfU1RJVENIKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCks
IGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKGZpbHRl
clJlc291cmNlLCBlZmZlY3QuZ2V0KCkpOworICAgIGZpbHRlclJlc291cmNlLT5idWlsZGVyKCkt
PmFkZChyZXN1bHQoKSwgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHJldmlzaW9uIDQzODg4KQor
KysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw4ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZH
RkVUdXJidWxlbmNlRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBi
b29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNW
R1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZlVHVy
YnVsZW5jZVRhZ1N0cmluZywgU1ZHQmFzZUZyZXF1ZW5jeVhJZGVudGlmaWVyLCBmbG9hdCwgQmFz
ZUZyZXF1ZW5jeVgsIGJhc2VGcmVxdWVuY3lYKQpAQCAtNTQsOCArNTMsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVR1
cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5nLCBTVkdOYW1l
czo6c2VlZEF0dHJTdHJpbmcsIGZsb2F0LCBTZWVkLCBzZWVkKQogICAgICAgICBBTklNQVRFRF9Q
Uk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVUdXJidWxlbmNlRWxlbWVudCwgU1ZHTmFtZXM6OmZl
VHVyYnVsZW5jZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0clN0cmluZywgaW50
LCBTdGl0Y2hUaWxlcywgc3RpdGNoVGlsZXMpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNl
VGFnU3RyaW5nLCBTVkdOYW1lczo6dHlwZUF0dHJTdHJpbmcsIGludCwgVHlwZSwgdHlwZSkKLQot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRVR1cmJ1bGVuY2U+IG1fZmlsdGVyRWZmZWN0OwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw5IEBACiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxl
bWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgorI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIK
ICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogI2lu
Y2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCkBAIC0xMzEsMTkgKzEz
MywxOCBAQCBTVkdSZXNvdXJjZSogU1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzCiAgICAgYm9v
bCBwcmltaXRpdmVCQm94TW9kZSA9IHByaW1pdGl2ZVVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpT
VkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YOwogICAgIG1fZmlsdGVyLT5zZXRFZmZlY3RC
b3VuZGluZ0JveE1vZGUocHJpbWl0aXZlQkJveE1vZGUpOwogCi0gICAgLy8gVE9ETyA6IHVzZSBz
d2l0Y2gvY2FzZSBpbnN0ZWFkPwotICAgIG1fZmlsdGVyLT5jbGVhckVmZmVjdHMoKTsKKyAgICBt
X2ZpbHRlci0+YnVpbGRlcigpLT5jbGVhckVmZmVjdHMoKTsKICAgICBmb3IgKE5vZGUqIG4gPSBm
aXJzdENoaWxkKCk7IG4gIT0gMDsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgU1ZH
RWxlbWVudCogZWxlbWVudCA9IDA7Ci0gICAgICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSkKKyAg
ICAgICAgaWYgKG4tPmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgICAgICBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8U1ZHRWxlbWVudCo+KG4pOwotICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50
LT5pc0ZpbHRlckVmZmVjdCgpKSB7Ci0gICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMqIGZpbHRlckF0dHJpYnV0ZXMgPSBzdGF0aWNfY2FzdDxTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqPihlbGVtZW50KTsKLSAgICAgICAgICAgIFNWR0Zp
bHRlckVmZmVjdCogZmlsdGVyRWZmZWN0ID0gZmlsdGVyQXR0cmlidXRlcy0+ZmlsdGVyRWZmZWN0
KG1fZmlsdGVyLmdldCgpKTsKLSAgICAgICAgICAgIGlmICghZmlsdGVyRWZmZWN0KQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBtX2ZpbHRlci0+YWRkRmlsdGVyRWZm
ZWN0KGZpbHRlckVmZmVjdCk7CisgICAgICAgICAgICBpZiAoZWxlbWVudC0+aXNGaWx0ZXJFZmZl
Y3QoKSkgeworICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcyogZWZmZWN0RWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyo+KGVsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmICghZWZmZWN0RWxl
bWVudC0+YnVpbGQobV9maWx0ZXIuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fZmls
dGVyLT5idWlsZGVyKCktPmNsZWFyRWZmZWN0cygpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMSAr
MjMsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogI2luY2x1ZGUgIk1hcHBlZEF0
dHJpYnV0ZS5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR0Zp
bHRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1l
cy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTcwLDE3ICs2OSwxNyBAQCB2
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAgICAgIHJldHVybiBT
VkdTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRl
cyhTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29uc3QKK3ZvaWQgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqIHJlc291cmNlRmlsdGVyLCBGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29u
c3QKIHsKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZpbHRlckVmZmVjdCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGZpbHRlckVmZmVjdC0+ZmlsdGVyKCkpOwor
ICAgIEFTU0VSVChyZXNvdXJjZUZpbHRlcik7CiAKICAgICBmbG9hdCBfeCwgX3ksIF93aWR0aCwg
X2hlaWdodDsKIAotICAgIGlmIChmaWx0ZXJFZmZlY3QtPmZpbHRlcigpLT5lZmZlY3RCb3VuZGlu
Z0JveE1vZGUoKSkgeworICAgIGlmIChyZXNvdXJjZUZpbHRlci0+ZWZmZWN0Qm91bmRpbmdCb3hN
b2RlKCkpIHsKICAgICAgICAgX3ggPSB4KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICAgICAg
X3kgPSB5KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgX3dpZHRoID0gd2lkdGgoKS52
YWx1ZUFzUGVyY2VudGFnZSgpOwpAQCAtMTIxLDcgKzEyMCw2IEBAIHZvaWQgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICB9CiAKICAgICBmaWx0ZXJFZmZlY3QtPnNldFN1
YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsKLSAgICBmaWx0ZXJF
ZmZlY3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiA0
Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGV4dGVybiBjaGFyIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lk
ZW50aWZpZXJbXTsKIAotICAgIGNsYXNzIFNWR0ZpbHRlckVmZmVjdDsKICAgICBjbGFzcyBTVkdS
ZXNvdXJjZUZpbHRlcjsKIAogICAgIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyA6IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50IHsKQEAgLTQyLDEzICs0MSwxMyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0ZpbHRlckVmZmVjdCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVy
RWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdCA9IDA7CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChSZW5kZXJTdHlsZSopIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1
dGVzKFNWR1Jlc291cmNlRmlsdGVyKiwgRmlsdGVyRWZmZWN0KikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgY29uc3QgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
aGlzOyB9Ci0gICAgICAgIHZvaWQgc2V0U3RhbmRhcmRBdHRyaWJ1dGVzKFNWR0ZpbHRlckVmZmVj
dCopIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVD
TEFSQVRJT05TKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllciwgU1ZHTmFtZXM6OnhBdHRyU3Ry
aW5nLCBTVkdMZW5ndGgsIFgsIHgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNCw2MSArMjUsMTEyIEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKKyNpbmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCisjaW5jbHVkZSAiRmls
dGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNWR1Jl
bmRlclRyZWVBc1RleHQuaCIKLSNpbmNsdWRlICJTVkdGaWx0ZXJFZmZlY3QuaCIKKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdSZXNvdXJjZUZpbHRl
cjo6U1ZHUmVzb3VyY2VGaWx0ZXIoKQotICAgIDogbV9wbGF0Zm9ybURhdGEoY3JlYXRlUGxhdGZv
cm1EYXRhKCkpCi0gICAgLCBtX2ZpbHRlckJCb3hNb2RlKGZhbHNlKQorICAgIDogbV9maWx0ZXJC
Qm94TW9kZShmYWxzZSkKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX3hC
Qm94TW9kZShmYWxzZSkKICAgICAsIG1feUJCb3hNb2RlKGZhbHNlKQogeworICAgIG1fZmlsdGVy
QnVpbGRlci5zZXQobmV3IEZpbHRlckJ1aWxkZXIoKSk7CiB9CiAKLXZvaWQgU1ZHUmVzb3VyY2VG
aWx0ZXI6OmNsZWFyRWZmZWN0cygpCitGbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRl
ckJCb3hGb3JJdGVtQkJveChjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdAogewotICAg
IG1fZWZmZWN0cy5jbGVhcigpOworICAgIEZsb2F0UmVjdCBmaWx0ZXJCQm94ID0gZmlsdGVyUmVj
dCgpOworCisgICAgaWYgKGZpbHRlckJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICBmaWx0ZXJC
Qm94ID0gRmxvYXRSZWN0KGl0ZW1CQm94LngoKSArIGZpbHRlckJCb3gueCgpICogaXRlbUJCb3gu
d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQkJveC55KCkgKyBm
aWx0ZXJCQm94LnkoKSAqIGl0ZW1CQm94LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbHRlckJCb3gud2lkdGgoKSAqIGl0ZW1CQm94LndpZHRoKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyQkJveC5oZWlnaHQoKSAqIGl0ZW1CQm94Lmhl
aWdodCgpKTsKKworICAgIHJldHVybiBmaWx0ZXJCQm94OwogfQogCi12b2lkIFNWR1Jlc291cmNl
RmlsdGVyOjphZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyRWZmZWN0KiBlZmZlY3QpCit2b2lkIFNW
R1Jlc291cmNlRmlsdGVyOjpmaWx0ZXJQcmltaXRpdmVTdWJSZWdpb24oRmlsdGVyRWZmZWN0KiBw
cmltaXRpdmUpCiB7Ci0gICAgQVNTRVJUKGVmZmVjdCk7CisgICAgRmxvYXRSZWN0IHN1YlJlZ2lv
bkJCb3ggPSBwcmltaXRpdmUtPnN1YlJlZ2lvbigpOworICAgIEZsb2F0UmVjdCB1c2VCQm94ID0g
bV9maWx0ZXJCQm94OworCisgICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpIHsKKyAgICAgICAgaWYg
KCFtX2ZpbHRlckJCb3hNb2RlKQorICAgICAgICAgICAgdXNlQkJveCA9IG1faXRlbUJCb3g7CisK
KyAgICAgICAgc3ViUmVnaW9uQkJveCA9IEZsb2F0UmVjdChzdWJSZWdpb25CQm94LngoKSAqIHVz
ZUJCb3gud2lkdGgoKSArIHVzZUJCb3gueCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWlnaHQoKSArIHVzZUJCb3gueSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIHVz
ZUJCb3gud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25C
Qm94LmhlaWdodCgpICogdXNlQkJveC5oZWlnaHQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKHByaW1pdGl2ZS0+eEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgc3ViUmVnaW9u
QkJveC5zZXRYKHVzZUJCb3gueCgpICsgc3ViUmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRo
KCkpOworCisgICAgICAgIGlmIChwcmltaXRpdmUtPnlCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAg
ICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0WSh1c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgp
ICogdXNlQkJveC5oZWlnaHQoKSk7CiAKLSAgICBpZiAoZWZmZWN0KSB7Ci0gICAgICAgIEFTU0VS
VChlZmZlY3QtPmZpbHRlcigpID09IHRoaXMpOwotICAgICAgICBtX2VmZmVjdHMuYXBwZW5kKGVm
ZmVjdCk7CisgICAgICAgIGlmIChwcmltaXRpdmUtPndpZHRoQm91bmRpbmdCb3hNb2RlKCkpCisg
ICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAq
IHVzZUJCb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKHByaW1pdGl2ZS0+aGVpZ2h0Qm91bmRp
bmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldEhlaWdodChzdWJSZWdp
b25CQm94LmhlaWdodCgpICogdXNlQkJveC5oZWlnaHQoKSk7CiAgICAgfQorCisgICAgcHJpbWl0
aXZlLT5zZXRTdWJSZWdpb24oc3ViUmVnaW9uQkJveCk7CiB9CiAKLUZsb2F0UmVjdCBTVkdSZXNv
dXJjZUZpbHRlcjo6ZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJC
b3gpIGNvbnN0Cit2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNz
Q29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCiB7Ci0gICAgRmxv
YXRSZWN0IGZpbHRlckJCb3ggPSBmaWx0ZXJSZWN0KCk7CisgICAgLy8gRHJhdyB0aGUgY29udGVu
dCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGFuZCBpdCdzIGNoaWxkcyB0byBhIGltYWdlQnVmZmVy
IHRvIGdldCB0aGUgU291cmNlR3JhcGhpYy4KKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgU291cmNl
R3JhcGhpYyBtdXN0IG1hdGNoIHRoZSBzaXplIG9mIHRoZSBlbGVtZW50LCB0aGUgZmlsdGVyIGlz
IGFwbGllZCB0by4KKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKGl0ZW1SZWN0Lndp
ZHRoKCksIGl0ZW1SZWN0LmhlaWdodCgpKTsKKyAgICBhdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gc291
cmNlR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAg
CisgICAgaWYgKCFzb3VyY2VHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBm
bG9hdCB4T2Zmc2V0ID0gMC4wZjsKLSAgICBmbG9hdCB5T2Zmc2V0ID0gMC4wZjsKKyAgICBHcmFw
aGljc0NvbnRleHQqIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4
dCgpOworICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT50cmFuc2xhdGUoLWl0ZW1SZWN0LngoKSwg
LWl0ZW1SZWN0LnkoKSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChGbG9h
dFJlY3QoMCwgMCwgaXRlbVJlY3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X3NvdXJjZUdyYXBoaWNCdWZmZXIuc2V0KHNvdXJjZUdyYXBoaWMucmVsZWFzZSgpKTsKKyAgICBt
X3NhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAKLSAgICBpZiAoIWVmZmVjdEJvdW5kaW5nQm94TW9k
ZSgpKSB7Ci0gICAgICAgIHhPZmZzZXQgPSBpdGVtQkJveC54KCk7Ci0gICAgICAgIHlPZmZzZXQg
PSBpdGVtQkJveC55KCk7Ci0gICAgfQorICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4
dDsKK30KIAotICAgIGlmIChmaWx0ZXJCb3VuZGluZ0JveE1vZGUoKSkgewotICAgICAgICBmaWx0
ZXJCQm94ID0gRmxvYXRSZWN0KHhPZmZzZXQgKyBmaWx0ZXJCQm94LngoKSAqIGl0ZW1CQm94Lndp
ZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeU9mZnNldCArIGZpbHRlckJC
b3gueSgpICogaXRlbUJCb3guaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsdGVyQkJveC53aWR0aCgpICogaXRlbUJCb3gud2lkdGgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWx0ZXJCQm94LmhlaWdodCgpICogaXRlbUJCb3guaGVpZ2h0KCkp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh4Qm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAg
ICAgICBmaWx0ZXJCQm94LnNldFgoeE9mZnNldCArIGZpbHRlckJCb3gueCgpKTsKK3ZvaWQgU1ZH
UmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit7CisgICAgaWYgKCFtX3NhdmVkQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh5Qm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAg
ICAgICBmaWx0ZXJCQm94LnNldFkoeU9mZnNldCArIGZpbHRlckJCb3gueSgpKTsKKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChpdGVtUmVjdCk7CisKKyAg
ICBzZXRGaWx0ZXJCb3VuZGluZ0JveChmaWx0ZXJSZWN0KTsKKyAgICBzZXRJdGVtQm91bmRpbmdC
b3goaXRlbVJlY3QpOworCisgICAgY29udGV4dCA9IG1fc2F2ZWRDb250ZXh0OworICAgIG1fc2F2
ZWRDb250ZXh0ID0gMDsKKworICAgIGlmIChtX2ZpbHRlckJ1aWxkZXItPmxhc3RGaWx0ZXIoKSAm
JiAhZmlsdGVyUmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9maWx0ZXJCdWlsZGVyLT5sYXN0
RmlsdGVyKCktPmFwcGx5KHRoaXMpOworCisgICAgICAgIGNvbnRleHQtPmNsaXAoZmlsdGVyUmVj
dCk7CisKKyAgICAgICAgaWYgKG1fZmlsdGVyQnVpbGRlci0+bGFzdEZpbHRlcigpLT5yZXN1bHRJ
bWFnZSgpKQorICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKG1fZmlsdGVyQnVpbGRlci0+
bGFzdEZpbHRlcigpLT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2ZpbHRlckJ1aWxkZXItPmxhc3RGaWx0ZXIoKS0+c3ViUmVnaW9uKCkpOwog
ICAgIH0KIAotICAgIHJldHVybiBmaWx0ZXJCQm94OworICAgIG1fc291cmNlR3JhcGhpY0J1ZmZl
ci5jbGVhcigpOwogfQogCiBUZXh0U3RyZWFtJiBTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3QKQEAgLTEwMiw4ICsxNTQsNiBAQCBU
ZXh0U3RyZWFtJiBTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxSCiAgICAgICAgIHRzIDw8ICIg
W2JvdW5kaW5nIGJveCBtb2RlPSIgPDwgZmlsdGVyQm91bmRpbmdCb3hNb2RlKCkgPDwgIl0iOwog
ICAgIGlmIChlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgLy8gZGVmYXVsdCBpcyBmYWxzZQogICAg
ICAgICB0cyA8PCAiIFtlZmZlY3QgYm91bmRpbmcgYm94IG1vZGU9IiA8PCBlZmZlY3RCb3VuZGlu
Z0JveE1vZGUoKSA8PCAiXSI7Ci0gICAgaWYgKG1fZWZmZWN0cy5zaXplKCkgPiAwKQotICAgICAg
ICB0cyA8PCAiIFtlZmZlY3RzPSIgPDwgbV9lZmZlY3RzIDw8ICJdIjsKIAogICAgIHJldHVybiB0
czsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
ICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAg
ICAgICAgICAgICAgICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAg
ICAgICAgICAgICAgIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI0LDIxICsyNSwxOCBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCi0jaW5jbHVkZSAiU1ZH
RmlsdGVyRWZmZWN0LmgiCiAKKyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmlsdGVyQnVpbGRlcjsKK2NsYXNzIEZp
bHRlckVmZmVjdDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKLWNsYXNzIFNWR0ZpbHRlckVmZmVj
dDsKLSAgICAKLWNsYXNzIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhIHsKLXB1YmxpYzoK
LSAgICB2aXJ0dWFsIH5TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSgpIHt9Ci19OwogCiBj
bGFzcyBTVkdSZXNvdXJjZUZpbHRlciA6IHB1YmxpYyBTVkdSZXNvdXJjZSB7CiBwdWJsaWM6CkBA
IC02MSwyNCArNTksMjUgQEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJSZWN0OyB9CiAgICAgdm9pZCBzZXRGaWx0ZXJSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2ZpbHRlclJlY3QgPSByZWN0OyB9CiAKLSAgICBGbG9hdFJl
Y3QgZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJCb3gpIGNvbnN0
OworICAgIEZsb2F0UmVjdCBmaWx0ZXJCb3VuZGluZ0JveCgpIHsgcmV0dXJuIG1fZmlsdGVyQkJv
eDsgfQorICAgIHZvaWQgc2V0RmlsdGVyQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JiByZWN0
KSB7IG1fZmlsdGVyQkJveCA9IHJlY3Q7IH0KKworICAgIEZsb2F0UmVjdCBpdGVtQm91bmRpbmdC
b3goKSB7IHJldHVybiBtX2l0ZW1CQm94OyB9CisgICAgdm9pZCBzZXRJdGVtQm91bmRpbmdCb3go
Y29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1faXRlbUJCb3ggPSByZWN0OyB9CiAKLSAgICB2b2lk
IGNsZWFyRWZmZWN0cygpOwotICAgIHZvaWQgYWRkRmlsdGVyRWZmZWN0KFNWR0ZpbHRlckVmZmVj
dCopOworICAgIEZsb2F0UmVjdCBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goY29uc3QgRmxvYXRSZWN0
JiBpdGVtQkJveCkgY29uc3Q7CisgICAgdm9pZCBmaWx0ZXJQcmltaXRpdmVTdWJSZWdpb24oRmls
dGVyRWZmZWN0Kik7CiAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCi0gICAgLy8gVG8gYmUgaW1wbGVtZW50ZWQgaW4g
cGxhdGZvcm0gc3BlY2lmaWMgY29kZS4KLSAgICB2b2lkIHByZXBhcmVGaWx0ZXIoR3JhcGhpY3ND
b250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCk7Ci0gICAgdm9pZCBhcHBseUZpbHRlcihH
cmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JiBiYm94KTsKLSAgICAKLSAgICBTVkdS
ZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSogcGxhdGZvcm1EYXRhKCkgeyByZXR1cm4gbV9wbGF0
Zm9ybURhdGEuZ2V0KCk7IH0KLSAgICBjb25zdCBWZWN0b3I8U1ZHRmlsdGVyRWZmZWN0Kj4mIGVm
ZmVjdHMoKSB7IHJldHVybiBtX2VmZmVjdHM7IH0KKyAgICB2b2lkIHByZXBhcmVGaWx0ZXIoR3Jh
cGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgYXBwbHlGaWx0ZXIo
R3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOworCisgICAgSW1hZ2UqIHNvdXJj
ZUdyYXBoaWMoKSB7IHJldHVybiBtX3NvdXJjZUdyYXBoaWNCdWZmZXItPmltYWdlKCk7IH0KKwor
ICAgIEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIoKSB7IHJldHVybiBtX2ZpbHRlckJ1aWxkZXIuZ2V0
KCk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEq
IGNyZWF0ZVBsYXRmb3JtRGF0YSgpOwotICAgIAotICAgIE93blB0cjxTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YT4gbV9wbGF0Zm9ybURhdGE7CiAKICAgICBib29sIG1fZmlsdGVyQkJveE1v
ZGUgOiAxOwogICAgIGJvb2wgbV9lZmZlY3RCQm94TW9kZSA6IDE7CkBAIC04Nyw3ICs4NiwxMyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV95QkJveE1vZGUgOiAxOwogCiAgICAgRmxvYXRSZWN0IG1f
ZmlsdGVyUmVjdDsKLSAgICBWZWN0b3I8U1ZHRmlsdGVyRWZmZWN0Kj4gbV9lZmZlY3RzOworCisg
ICAgRmxvYXRSZWN0IG1fZmlsdGVyQkJveDsKKyAgICBGbG9hdFJlY3QgbV9pdGVtQkJveDsKKwor
ICAgIG11dGFibGUgT3duUHRyPEZpbHRlckJ1aWxkZXI+IG1fZmlsdGVyQnVpbGRlcjsKKyAgICBt
dXRhYmxlIEdyYXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7CisgICAgbXV0YWJsZSBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlR3JhcGhpY0J1ZmZlcjsKIH07CiAKIFNWR1Jlc291cmNl
RmlsdGVyKiBnZXRGaWx0ZXJCeUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJT
VkdGRUNvbnZvbHZlTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgor
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTMzLDcgKzEzNCw3IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBo
YSgKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9pZCBGRUNv
bnZvbHZlTWF0cml4OjphcHBseSgpCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KFNWR1Jl
c291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHJldmlzaW9uIDQzODg4KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCisjaW5jbHVkZSAiU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtNjgsOCAr
NjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgcHJlc2VydmVBbHBoYSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFByZXNlcnZlQWxwaGEoYm9vbCk7CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAg
ICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7
CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCShyZXZpc2lvbiA0Mzg4
OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHTGlnaHRT
b3VyY2UuaCIKICNpbmNsdWRlICJTVkdGRURpZmZ1c2VMaWdodGluZy5oIgogI2luY2x1ZGUgIlNW
R1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMiw3ICsxMTMsNyBAQCB2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjpzZXRMaWdodFNvdXJjZShMCiAgICAgbV9saWdodFNvdXJjZSA9IGxpZ2h0U291cmNl
OwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjphcHBseSgpCit2b2lkIEZFRGlmZnVzZUxp
Z2h0aW5nOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJl
dmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01NCw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgYXBwbHkoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsy
NCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUg
IlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
IgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNzQsNyArNzUsNyBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9h
dCBzCiAgICAgbV9zY2FsZSA9IHNjYWxlOwogfQogCi12b2lkIEZFRGlzcGxhY2VtZW50TWFwOjph
cHBseSgpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciop
CiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01
MCw4ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgc2NhbGUoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzY2FsZSk7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAg
IHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CiAg
ICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMp
IGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVGbG9vZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUZsb29kLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBA
QAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFzIFppbW1l
cm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUg
Um9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUgRXJpYyBTZWlk
ZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDkgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDcgKzI0LDEzIEBA
CiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZH
RkVGbG9vZC5oIgorCisjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU5LDggKzY2LDI3IEBAIHZvaWQg
RkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb28KICAgICBtX2Zsb29kT3BhY2l0eSA9
IGZsb29kT3BhY2l0eTsKIH0KIAotdm9pZCBGRUZsb29kOjphcHBseSgpCit2b2lkIEZFRmxvb2Q6
OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKiByZXNvdXJjZSkKIHsKKyAgICByZXNvdXJjZS0+Zmls
dGVyUHJpbWl0aXZlU3ViUmVnaW9uKHRoaXMpOworCisgICAgSW50U2l6ZSBidWZmZXJTaXplID0g
SW50U2l6ZShzdWJSZWdpb24oKS53aWR0aCgpLCBzdWJSZWdpb24oKS5oZWlnaHQoKSk7CisgICAg
c3RkOjphdXRvX3B0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9
IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5zYXZlKCk7Cisg
ICAgZmlsdGVyQ29udGV4dC0+dHJhbnNsYXRlKC1zdWJSZWdpb24oKS54KCksIC1zdWJSZWdpb24o
KS55KCkpOworICAgIENvbG9yIGNvbG9yID0gQ29sb3IoZmxvb2RDb2xvcigpLnJlZCgpIC8gMjU1
LjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgZmxvb2RDb2xvcigpLmdyZWVuKCkgLyAyNTUu
MGYsCisgICAgICAgICAgICAgICAgICAgICAgICBmbG9vZENvbG9yKCkuYmx1ZSgpIC8gMjU1LjBm
LAorICAgICAgICAgICAgICAgICAgICAgICAgZmxvb2RDb2xvcigpLmFscGhhKCkgLyAyNTUuMCAq
IGZsb29kT3BhY2l0eSgpKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVjdChzdWJSZWdpb24o
KSwgY29sb3IpOworICAgIGZpbHRlckNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIHNldEVmZmVj
dEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVGbG9vZDo6ZHVt
cCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRlckVm
ZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzgsOCArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZs
b2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShm
bG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAg
ICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCShy
ZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVz
c2lhbkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFR2F1c3NpYW5CbHVy
LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjAsNyArNjEsNyBAQCB2
b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsCiAgICAgbV95ID0geTsKIH0K
IAotdm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBwbHkoKQordm9pZCBGRUdhdXNzaWFuQmx1cjo6YXBw
bHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCShyZXZpc2lvbiA0Mzg4OCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsOCArMzgsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRTdGREZXZpYXRpb25ZKGZsb2F0KTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9p
ZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29u
c3Q7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVJ
bWFnZS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdS
ZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTMxLDYgKzMyLDcg
QEAgRkVJbWFnZTo6RkVJbWFnZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZwogICAgIDogRmlsdGVy
RWZmZWN0KCkKICAgICAsIG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCiB7CisgICAgbV9jYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1h
Z2U6OmNyZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCkBAIC02Myw3ICs2NSw3IEBAIHZv
aWQgRkVJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UKICAgICAgICAgbV9jYWNoZWRJ
bWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCi12b2lkIEZFSW1hZ2U6OmFwcGx5KCkKK3ZvaWQg
RkVJbWFnZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gNDM4ODgpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
KyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQxLDggKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNo
ZWRJbWFnZSopOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKICAgICBw
cml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
Y3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFu
bkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQu
b3JnPgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9y
Zz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjQsMTAgQEAKIAogI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRU1lcmdlLmgiCisKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0
LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00OCw4ICs1MiwyOSBAQCB2b2lkIEZFTWVyZ2U6OnNldE1lcmdlSW5wdXRzKGNvbnN0
IFZlY3RvCiAgICAgbV9tZXJnZUlucHV0cyA9IG1lcmdlSW5wdXRzOwogfQogCi12b2lkIEZFTWVy
Z2U6OmFwcGx5KCkKK3ZvaWQgRkVNZXJnZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291
cmNlKQogeworICAgIHJlc291cmNlLT5maWx0ZXJQcmltaXRpdmVTdWJSZWdpb24odGhpcyk7CisK
KyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHN1YlJlZ2lvbigpLndpZHRoKCksIHN1
YlJlZ2lvbigpLmhlaWdodCgpKTsKKyAgICBzdGQ6OmF1dG9fcHRyPEltYWdlQnVmZmVyPiBmaWx0
ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKworICAg
IGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhp
Y3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAg
IGZpbHRlckNvbnRleHQtPnNhdmUoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT50cmFuc2xhdGUoLXN1
YlJlZ2lvbigpLngoKSwgLXN1YlJlZ2lvbigpLnkoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1lcmdlSW5wdXRzKCkuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgbV9tZXJnZUlucHV0
c1tpXS0+YXBwbHkocmVzb3VyY2UpOworICAgICAgICBGbG9hdFJlY3QgaW5SZWdpb24gPSBtX21l
cmdlSW5wdXRzW2ldLT5zdWJSZWdpb24oKTsKKworICAgICAgICBpZiAobV9tZXJnZUlucHV0c1tp
XS0+cmVzdWx0SW1hZ2UoKSkKKyAgICAgICAgICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZSht
X21lcmdlSW5wdXRzW2ldLT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCBpblJlZ2lvbik7CisgICAg
fQorICAgIGZpbHRlckNvbnRleHQtPnJlc3RvcmUoKTsKKworICAgIHNldEVmZmVjdEJ1ZmZlcihm
aWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVNZXJnZTo6ZHVtcCgpCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gNDM4
ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291
cmNlRmlsdGVyLmgiCiAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTM2LDggKzM3LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0
Kj4mIG1lcmdlSW5wdXRzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TWVyZ2VJbnB1dHMoY29u
c3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cyk7CiAgICAgICAgIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAg
ICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAo
KTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNb3JwaG9sb2d5LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzEsNyArNzIsNyBAQCB2b2lkIEZFTW9ycGhvbG9neTo6c2V0UmFk
aXVzWShmbG9hdCByYWRpCiAgICAgbV9yYWRpdXNZID0gcmFkaXVzWTsKIH0KIAotdm9pZCBGRU1v
cnBob2xvZ3k6OmFwcGx5KCkKK3ZvaWQgRkVNb3JwaG9sb2d5OjphcHBseShTVkdSZXNvdXJjZUZp
bHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVN
b3JwaG9sb2d5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU1vcnBob2xvZ3kuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAi
RmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00NSw4ICs0Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgcmFkaXVzWSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFJhZGl1c1koZmxv
YXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOworICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAg
ICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gNDM4ODgp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRU9mZnNldC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRy
ZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQg
ZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjphcHBseSgpCit2b2lkIEZF
T2Zmc2V0OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHJldmlzaW9uIDQzODg4KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNyw4ICszOCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRE
eShmbG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsK
KyAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZy5jcHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3
IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNW
R0ZFU3BlY3VsYXJMaWdodGluZy5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIK
KyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTEyNCw3ICsxMjUsNyBAQCB2b2lkIEZFU3BlY3VsYXJMaWdodGluZzo6c2V0TGlnaHRTb3Vy
Y2UoCiAgICAgbV9saWdodFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQogCi12b2lkIEZFU3BlY3Vs
YXJMaWdodGluZzo6YXBwbHkoKQordm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OmFwcGx5KFNWR1Jl
c291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiA0Mzg4OCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1
ZGUgIlNWR0xpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Niw4
ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2Uq
IGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRT
b3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOwor
ICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkocmV2aXNpb24gNDM4ODgp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMzYsNyArMzcsNyBAQCBQYXNzUmVmUHRyPEZFVGlsZT4gRkVUaWxlOjpjcmVh
dGUoRmlsdGVyCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRVRpbGUoaW4pKTsKIH0KIAotdm9p
ZCBGRVRpbGU6OmFwcGx5KCkKK3ZvaWQgRkVUaWxlOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciop
CiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAko
cmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIApAQCAt
MzEsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAg
ICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAo
KTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCShyZXZpc2lvbiA0Mzg4
OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2UuaCIKICNpbmNsdWRlICJT
VkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsNyArMTA2LDcgQEAgdm9pZCBGRVR1cmJ1bGVu
Y2U6OnNldFN0aXRjaFRpbGVzKGJvb2wgcwogICAgIG1fc3RpdGNoVGlsZXMgPSBzdGl0Y2g7CiB9
CiAKLXZvaWQgRkVUdXJidWxlbmNlOjphcHBseSgpCit2b2lkIEZFVHVyYnVsZW5jZTo6YXBwbHko
U1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsOCArNTcsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc3RpdGNoVGlsZXMoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRTdGl0Y2hUaWxlcyhib29sKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNv
dXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKICAgICBwcml2
YXRlOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDM5MjMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNS0yMCAgRGlyayBTY2h1bHpl
ICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgMTAwMCBlZmZlY3RzIGFuZCBtZXJnZSB0aGVtIHRvZ2V0aGVyLiBU
aGlzIGV4Y2Vzc2l2ZQorICAgICAgICB1c2Ugb2YgZmlsdGVyIGVmZmVjdHMgbWFrZXMgc3VyZSB0
aGF0IHRoZSBtYXAgY2FuIGRlYWwgd2l0aAorICAgICAgICB0aGlzIGdyZWF0IG1hbnkgb2YgZWZm
ZWN0cyBhbmQgSW1hZ2VCdWZmZXJzLiAgCisKKyAgICAgICAgKiBzdmcvY3VzdG9tL2pzLWV4Y2Vz
c2l2ZS11c2Utb2YtZWZmZWN0cy5zdmc6IEFkZGVkLgorCiAyMDA5LTA1LTIwICBIb2xnZXIgSGFu
cyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jdXN0b20vanMtZXhj
ZXNzaXZlLXVzZS1vZi1lZmZlY3RzLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
Y3VzdG9tL2pzLWV4Y2Vzc2l2ZS11c2Utb2YtZWZmZWN0cy5zdmcJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL2pzLWV4Y2Vzc2l2ZS11c2Utb2YtZWZmZWN0cy5zdmcJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPHN2ZyB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIG9ubG9hZD0icnVuVGVzdCgpIj4KKzxk
ZWZzPgorPGZpbHRlciBpZD0iZmlsdGVyIiB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiPgorPC9maWx0ZXI+Cis8L2RlZnM+Cis8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0i
MTAwIiBoZWlnaHQ9IjEwMCIgZmlsdGVyPSJ1cmwoI2ZpbHRlcikiLz4KKzxzY3JpcHQgdHlwZT0i
dGV4dC9lY21hc2NyaXB0Ij48IVtDREFUQVsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCitmdW5jdGlv
biBydW5UZXN0KCkgeworICAgIGZvciAodmFyIGk9MDtpPDEwMDA7aSsrKXsKKyAgICAgICAgdmFy
IG5ld0VmZmVjdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciLCAiZmVGbG9vZCIpOworICAgICAgICBuZXdFZmZlY3Quc2V0QXR0cmlidXRlKCJm
bG9vZC1jb2xvciIsICIjMGYwIik7CisgICAgICAgIG5ld0VmZmVjdC5zZXRBdHRyaWJ1dGUoInJl
c3VsdCIsIGkpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsdGVyIikuYXBw
ZW5kQ2hpbGQobmV3RWZmZWN0KTsKKyAgICB9CisgICAgdmFyIG1lcmdlRWZmZWN0ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsICJmZU1lcmdl
Iik7CisgICAgZm9yICh2YXIgaT0wO2k8MTAwMDtpKyspIHsKKyAgICAgICAgdmFyIGFkZEVmZmVj
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci
LCAiZmVNZXJnZU5vZGUiKTsKKyAgICAgICAgYWRkRWZmZWN0LnNldEF0dHJpYnV0ZSgiaW4iLCBp
KTsKKyAgICAgICAgbWVyZ2VFZmZlY3QuYXBwZW5kQ2hpbGQoYWRkRWZmZWN0KTsKKyAgICB9Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbHRlciIpLmFwcGVuZENoaWxkKG1lcmdlRWZm
ZWN0KTsKK30KK11dPjwvc2NyaXB0PiAgCis8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30588</attachid>
            <date>2009-05-22 12:19:21 -0700</date>
            <delta_ts>2009-05-27 11:24:44 -0700</delta_ts>
            <desc>repare filter primitives for new svg filter system</desc>
            <filename>svg-filter-part1.patch</filename>
            <type>text/plain</type>
            <size>32909</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDA1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMDktMDUtMjIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIFByZXBhcmlu
ZyBGaWx0ZXIgcHJpbWl0dmVzIGZvciB0aGUgbmV3IGZpbHRlciBzeXN0ZW0uCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVC
bGVuZDo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbG9yTWF0cml4OjphcHBseSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29tcG9zaXRlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvc2l0ZS5oOgorICAgICAgICAqIHN2Zy9GaWx0ZXIuaDoKKyAgICAgICAgKiBzdmcv
RmlsdGVyQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6bGFzdEZp
bHRlcik6CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgICogc3ZnL0ZpbHRlckVmZmVj
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp4Qm91bmRpbmdCb3hNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0WEJvdW5kaW5nQm94TW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnlCb3VuZGluZ0JveE1vZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRZQm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6d2lkdGhCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRXaWR0aEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmhlaWdodEJvdW5kaW5nQm94TW9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEhlaWdodEJvdW5kaW5nQm94TW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnN1YlJlZ2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OnNldFN1YlJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3Q6OnJlc3VsdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0
RWZmZWN0QnVmZmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZv
bHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OmFwcGx5
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRmxvb2Q6OmFw
cGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJbWFnZTo6YXBwbHkp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaDoKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFTWVyZ2U6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1l
cmdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6YXBwbHkpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0
OjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjphcHBseSk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFVGlsZTo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGls
ZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1bGVuY2U6OmFwcGx5KToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaDoKKwogMjAwOS0wNS0yMiAgUGV0ZXIg
S2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MzQsNiArMTQzNCw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJh
bnNmZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVy
YXRpb24uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNm
b3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCkBAIC0yNTM5LDYgKzI1NDEsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxl
cy5jcHAgXAogCVdlYkNvcmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oIFwKIAlX
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcCBcCkBAIC0yNTkyLDYgKzI1
OTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29u
dHJvbC5oIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIu
aCBcCisJV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5jcHAgXAogCVdlYkNvcmUvc3ZnL0ZpbHRl
ckJ1aWxkZXIuaCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcCBcCiAJV2ViQ29yZS9z
dmcvRmlsdGVyRWZmZWN0LmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTE4NTIsNiArMTg1Miw4IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9TVkc9MSkgewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VM
aWdodGluZy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNl
bWVudE1hcC5jcHAgXApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAK
ICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRkVCbGVu
ZC5oIgogCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBGRUJsZW5kOjpGRUJsZW5kKEZpbHRlckVmZmVjdCogaW4sIEZpbHRlckVmZmVjdCog
aW4yLCBCbGVuZE1vZGVUeXBlIG1vZGUpCkBAIC01OSw3ICs2MSw3IEBAIHZvaWQgRkVCbGVuZDo6
c2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUKICAgICBtX21vZGUgPSBtb2RlOwogfQogCi12b2lk
IEZFQmxlbmQ6OmFwcGx5KCkKK3ZvaWQgRkVCbGVuZDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIq
KQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
IAorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGVudW0gQmxlbmRNb2RlVHlwZSB7CkBAIC00Niw4ICs0OCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQmxlbmRNb2RlVHlwZSBibGVuZE1vZGUoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZSk7CiAgICAgICAgIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAg
ICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEZFQmxlbmQoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZm
ZWN0KiwgQmxlbmRNb2RlVHlwZSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb2xvck1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJGRUNvbG9yTWF0cml4LmgiCiAKKyNpbmNsdWRlICJTVkdSZXNv
dXJjZUZpbHRlci5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFQ29sb3JNYXRyaXg6OkZF
Q29sb3JNYXRyaXgoRmlsdGVyRWZmZWN0KiBpbiwgQ29sb3JNYXRyaXhUeXBlIHR5cGUsIGNvbnN0
IFZlY3RvcjxmbG9hdD4mIHZhbHVlcykKQEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBGRUNvbG9yTWF0
cml4OjpzZXRWYWx1ZXMoY29uc3QgVmVjdAogICAgIG1fdmFsdWVzID0gdmFsdWVzOwogfQogCi12
b2lkIEZFQ29sb3JNYXRyaXg6OmFwcGx5KCkKK3ZvaWQgRkVDb2xvck1hdHJpeDo6YXBwbHkoU1ZH
UmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDQzODg4KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNiArMjQsOCBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTQ2LDggKzQ4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBW
ZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPGZsb2F0PiYpOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICBGRUNvbG9yTWF0cml4KEZpbHRlckVmZmVjdCosIENvbG9yTWF0cml4VHlwZSwgY29u
c3QgVmVjdG9yPGZsb2F0PiYpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAkocmV2aXNpb24gNDM4
ODgpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFu
c2Zlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDggQEAKICNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRkVDb21wb25lbnRUcmFuc2Zlci5o
IgogCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlckVmZmVj
dCogaW4sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmMsIApAQCAtODMs
NyArODUsNyBAQCB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3RpCiAgICAg
bV9hbHBoYUZ1bmMgPSBmdW5jOwogfQogCi12b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmFwcGx5
KCkKK3ZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQog
ewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25l
bnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsOCArMjQsOSBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR0ZFRGlzcGxh
Y2VtZW50TWFwLmgiCiAKKyNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5oIgorI2luY2x1
ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03OCw4ICs3OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiBhbHBoYUZ1bmN0aW9uKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0QWxwaGFGdW5jdGlvbihjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJik7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRl
ciopOworICAgICAgICB2b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZFQ29t
cG9uZW50VHJhbnNmZXIoRmlsdGVyRWZmZWN0Kixjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uJiwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYsCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHJldmlzaW9u
IDQzODg4KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsOCBAQAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGRUNvbXBv
c2l0ZTo6RkVDb21wb3NpdGUoRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIsIGNv
bnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmIHR5cGUsCkBAIC05NSw3ICs5Nyw3IEBAIHZvaWQg
RkVDb21wb3NpdGU6OnNldEs0KGZsb2F0IGs0KQogICAgIG1fazQgPSBrNDsKIH0KIAotdm9pZCBG
RUNvbXBvc2l0ZTo6YXBwbHkoKQordm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyAr
MjQsOSBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgorCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTU4
LDggKzYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBrNCgpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldEs0KGZsb2F0KTsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBhcHBseSgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICB2b2lk
IGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgZHVtcCgpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRkVDb21wb3NpdGUoRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0
KiwgY29uc3QgQ29tcG9zaXRlT3BlcmF0aW9uVHlwZSYsCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkocmV2aXNpb24gNDM4ODgp
CisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlcj4g
Y3JlYXRlKEZpbHRlckVmZmVjdCopOwogICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBG
aWx0ZXIoRmlsdGVyRWZmZWN0KiBlZmZlY3QpOworICAgICAgICBGaWx0ZXIoRmlsdGVyRWZmZWN0
Kik7CiAgICAgCiAgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fZWZmZWN0OwogICAgIH07
CkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL0Zp
bHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOSArMjMsOCBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQotI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5j
bHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM0LDE1ICsz
MywyMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiAgICAgY2xhc3MgRmlsdGVyQnVpbGRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckJ1aWxkZXI+IHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIHZvaWQgYWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QpIHsgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0KTsgfQotICAgICAg
ICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmltcGwoKSkuZ2V0KCk7IH0KLSAgICAgICAgCi0g
ICAgICAgIFBhc3NSZWZQdHI8RmlsdGVyPiBmaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRl
cjsgfQotICAgICAgICAKKyAgICAgICAgRmlsdGVyQnVpbGRlcigpOworCisgICAgICAgIHZvaWQg
YWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpOwor
CisgICAgICAgIEZpbHRlckVmZmVjdCogZ2V0RWZmZWN0QnlJZChjb25zdCBTdHJpbmcmIGlkKSBj
b25zdDsKKyAgICAgICAgRmlsdGVyRWZmZWN0KiBsYXN0RmlsdGVyKCkgY29uc3QgeyByZXR1cm4g
bV9sYXN0RWZmZWN0LmdldCgpOyB9CisKKyAgICAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKKwog
ICAgIHByaXZhdGU6Ci0gICAgICAgIEhhc2hNYXA8U3RyaW5nSW1wbCosIFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+ID4gbV9uYW1lZEVmZmVjdHM7Ci0gICAgICAgIAotICAgICAgICBSZWZQdHI8RmlsdGVy
PiBtX2ZpbHRlcjsKKyAgICAgICAgSGFzaE1hcDxSZWZQdHI8U3RyaW5nSW1wbD4sIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+ID4gbV9uYW1lZEVmZmVjdHM7CisKKyAgICAgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gbV9sYXN0RWZmZWN0OworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX3NvdXJj
ZUdyYXBoaWM7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxwaGE7CiAg
ICAgfTsKICAgICAKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvRmls
dGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3Bw
CShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDYgKzI1LDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZpbHRl
ckVmZmVjdDo6RmlsdGVyRWZmZWN0KCkKKyAgICA6IG1feEJCb3hNb2RlKGZhbHNlKQorICAgICwg
bV95QkJveE1vZGUoZmFsc2UpCisgICAgLCBtX3dpZHRoQkJveE1vZGUoZmFsc2UpCisgICAgLCBt
X2hlaWdodEJCb3hNb2RlKGZhbHNlKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJF
ZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNp
b24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8
cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSw2
ICsyMiw5IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiSW1h
Z2VCdWZmZXIuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlRl
eHRTdHJlYW0uaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0zMiwxMyArMzYs
NDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZpbHRlckVmZmVjdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPEZpbHRlckVmZmVjdD4gewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB+RmlsdGVyRWZmZWN0KCk7Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
KSA9IDA7CisKKyAgICAgICAgYm9vbCB4Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4g
bV94QkJveE1vZGU7IH0KKyAgICAgICAgdm9pZCBzZXRYQm91bmRpbmdCb3hNb2RlKGJvb2wgYmJv
eE1vZGUpIHsgbV94QkJveE1vZGUgPSBiYm94TW9kZTsgfQorCisgICAgICAgIGJvb2wgeUJvdW5k
aW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1feUJCb3hNb2RlOyB9CisgICAgICAgIHZvaWQg
c2V0WUJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feUJCb3hNb2RlID0gYmJveE1v
ZGU7IH0KKworICAgICAgICBib29sIHdpZHRoQm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV93aWR0aEJCb3hNb2RlOyB9CisgICAgICAgIHZvaWQgc2V0V2lkdGhCb3VuZGluZ0JveE1v
ZGUoYm9vbCBiYm94TW9kZSkgeyBtX3dpZHRoQkJveE1vZGUgPSBiYm94TW9kZTsgfQorCisgICAg
ICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHRC
Qm94TW9kZTsgfQorICAgICAgICB2b2lkIHNldEhlaWdodEJvdW5kaW5nQm94TW9kZShib29sIGJi
b3hNb2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94TW9kZTsgfQorCisgICAgICAgIEZsb2F0
UmVjdCBzdWJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3N1YlJlZ2lvbjsgfQorICAgICAgICB2
b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIHN1YlJlZ2lvbikgeyBtX3N1YlJlZ2lv
biA9IHN1YlJlZ2lvbjsgfQorCisgICAgICAgIC8vIFRoZSByZXN1bHQgaXMgYm91bmRlZCBieSB0
aGUgc2l6ZSBvZiB0aGUgZmlsdGVyIHByaW1pdGl2ZSB0byBzYXZlIHJlc291cmNlcworICAgICAg
ICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UoKSB7IHJldHVybiBtX2VmZmVjdEJ1ZmZlci5nZXQo
KTsgfQorICAgICAgICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihJbWFnZUJ1ZmZlciogZWZmZWN0QnVm
ZmVyKSB7IG1fZWZmZWN0QnVmZmVyLnNldChlZmZlY3RCdWZmZXIpOyB9CisKKyAgICAgICAgdmly
dHVhbCB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZHVtcCgpID0gMDsKLSAgICAgICAgCisKICAgICAgICAgdmlydHVhbCBUZXh0U3RyZWFt
JiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mKSBjb25zdDsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIEZpbHRlckVmZmVjdCgpOworCisgICAgcHJpdmF0ZToKKworICAgICAgICBi
b29sIG1feEJCb3hNb2RlIDogMTsKKyAgICAgICAgYm9vbCBtX3lCQm94TW9kZSA6IDE7CisgICAg
ICAgIGJvb2wgbV93aWR0aEJCb3hNb2RlIDogMTsKKyAgICAgICAgYm9vbCBtX2hlaWdodEJCb3hN
b2RlIDogMTsKKworICAgICAgICBGbG9hdFJlY3QgbV9zdWJSZWdpb247CisKKyAgICAgICAgbXV0
YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZWZmZWN0QnVmZmVyOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVDb252b2x2ZU1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVDb252b2x2ZU1hdHJpeC5oIgorI2luY2x1ZGUgIlNW
R1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzMsNyArMTM0LDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0
cml4OjpzZXRQcmVzZXJ2ZUFscGhhKAogICAgIG1fcHJlc2VydmVBbHBoYSA9IHByZXNlcnZlQWxw
aGE7IAogfQogCi12b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFwcGx5KCkKK3ZvaWQgRkVDb252b2x2
ZU1hdHJpeDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9s
dmVNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFNp
emUuaCIKLQorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw4ICs2OCw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBw
bHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShT
VkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKICAg
ICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgogI2luY2x1
ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4
dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTEyLDcgKzExMyw3IEBAIHZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0
U291cmNlKEwKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVE
aWZmdXNlTGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KFNW
R1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkocmV2aXNpb24gNDM4ODgpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTU0LDggKzU1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBM
aWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNv
dXJjZShMaWdodFNvdXJjZSopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOworICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNl
RmlsdGVyKik7CisgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRl
cm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKICAgICAgICAgCiAgICAg
cHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzQsNyArNzUsNyBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpz
ZXRTY2FsZShmbG9hdCBzCiAgICAgbV9zY2FsZSA9IHNjYWxlOwogfQogCi12b2lkIEZFRGlzcGxh
Y2VtZW50TWFwOjphcHBseSgpCit2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjphcHBseShTVkdSZXNv
dXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01MCw4ICs1MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxv
YXQgc2NhbGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCBzY2FsZSk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1w
KCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9p
ZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQog
I2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0Lmgi
CisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC01OSw3ICs2MCw3IEBAIHZvaWQgRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZs
b28KICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3BhY2l0eTsKIH0KIAotdm9pZCBGRUZsb29k
OjphcHBseSgpCit2b2lkIEZFRmxvb2Q6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0K
IApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJKHJldmlz
aW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZl
Y3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM4LDggKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9h
dCBmbG9vZE9wYWNpdHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxv
YXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZHVtcCgpOworICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAg
ICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0
aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2
aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3Np
YW5CbHVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUdhdXNzaWFuQmx1ci5o
IgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYwLDcgKzYxLDcgQEAgdm9p
ZCBGRUdhdXNzaWFuQmx1cjo6c2V0U3RkRGV2aWF0aW9uWShmbAogICAgIG1feSA9IHk7CiB9CiAK
LXZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KCkKK3ZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5
KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDM4ODgpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDggKzM4LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdGREZXZpYXRpb25ZKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CiAKLSAgICAgICAgdmlydHVhbCB2
b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQg
YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmNwcAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFSW1h
Z2UuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Myw3ICs2NCw3IEBA
IHZvaWQgRkVJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UKICAgICAgICAgbV9jYWNo
ZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCi12b2lkIEZFSW1hZ2U6OmFwcGx5KCkKK3Zv
aWQgRkVJbWFnZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gNDM4ODgpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50LmgiCiAj
aW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQxLDggKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZSopOwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogICAgICAgICAKICAg
ICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVy
Z2UuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNZXJnZS5oIgog
I2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDcgKzQ5LDcgQEAgdm9pZCBG
RU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0bwogICAgIG1fbWVyZ2VJbnB1dHMgPSBt
ZXJnZUlucHV0czsKIH0KIAotdm9pZCBGRU1lcmdlOjphcHBseSgpCit2b2lkIEZFTWVyZ2U6OmFw
cGx5KFNWR1Jlc291cmNlRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1lcmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKLQorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw4ICszNiw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVj
dCo+JiBtZXJnZUlucHV0cygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNv
bnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpOwogICAgICAgICAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGFwcGx5KCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCk7Cisg
ICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1w
KCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHJldmlzaW9uIDQzODg4KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUgIlNWR1JlbmRl
clRyZWVBc1RleHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTcxLDcgKzcyLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnNldFJh
ZGl1c1koZmxvYXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7CiB9CiAKLXZvaWQgRkVN
b3JwaG9sb2d5OjphcHBseSgpCit2b2lkIEZFTW9ycGhvbG9neTo6YXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
TW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDQzODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsOCArNDYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZs
b2F0KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAg
ICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJldmlzaW9uIDQzODg4
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVPZmZzZXQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJU
cmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02MCw3ICs2MSw3IEBAIHZvaWQgRkVPZmZzZXQ6OnNldER5KGZsb2F0
IGR5KQogICAgIG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6YXBwbHkoKQordm9pZCBG
RU9mZnNldDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZpc2lvbiA0Mzg4OCkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmls
dGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsOCArMzgsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0
RHkoZmxvYXQpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseSgpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZHVtcCgpOworICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7
CisgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIAogICAgIHByaXZhdGU6CkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGln
aHRpbmcuY3BwCShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJT
VkdGRVNwZWN1bGFyTGlnaHRpbmcuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0Lmgi
CisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0xMjQsNyArMTI1LDcgQEAgdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291
cmNlKAogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAotdm9pZCBGRVNwZWN1
bGFyTGlnaHRpbmc6OmFwcGx5KCkKK3ZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjphcHBseShTVkdS
ZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAkocmV2aXNpb24gNDM4ODgpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRlICJTVkdMaWdodFNv
dXJjZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR0xpZ2h0U291
cmNlLmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC01Niw4ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29u
c3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TGln
aHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNv
dXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKICAgICBwcml2
YXRlOgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAko
cmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGls
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCiAjaW5jbHVkZSAi
U1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNyArMzcsNyBAQCBQYXNzUmVmUHRyPEZFVGls
ZT4gRkVUaWxlOjpjcmVhdGUoRmlsdGVyCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGRVRpbGUo
aW4pKTsKIH0KIAotdm9pZCBGRVRpbGU6OmFwcGx5KCkKK3ZvaWQgRkVUaWxlOjphcHBseShTVkdS
ZXNvdXJjZUZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVRpbGUuaAkocmV2aXNpb24gNDM4ODgpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIApAQCAtMzEsOCArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJFZmZl
Y3QqKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGR1bXAoKTsKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAg
ICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3Bw
CShyZXZpc2lvbiA0Mzg4OCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
dXJidWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2Uu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xMDUsNyArMTA2LDcgQEAg
dm9pZCBGRVR1cmJ1bGVuY2U6OnNldFN0aXRjaFRpbGVzKGJvb2wgcwogICAgIG1fc3RpdGNoVGls
ZXMgPSBzdGl0Y2g7CiB9CiAKLXZvaWQgRkVUdXJidWxlbmNlOjphcHBseSgpCit2b2lkIEZFVHVy
YnVsZW5jZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHJldmlzaW9uIDQz
ODg4KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNW
R1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTYsOCArNTcs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc3RpdGNoVGlsZXMoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRTdGl0Y2hUaWxlcyhib29sKTsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgYXBwbHkoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKTsKKyAgICAgICAgdm9p
ZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29u
c3Q7CiAKICAgICBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30608</attachid>
            <date>2009-05-23 00:46:56 -0700</date>
            <delta_ts>2009-05-23 08:28:50 -0700</delta_ts>
            <desc>add new source input and filterBuilder</desc>
            <filename>svg-filter-part2.patch</filename>
            <type>text/plain</type>
            <size>19340</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDA4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzUgQEAKKzIwMDktMDUtMjMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEFkZGVkIHN0
YW5kYXJkIGlucHV0IGZvciBmaWx0ZXIgc3lzdGVtLgorCisgICAgICAgIE5vIHRlc3RjYXNlcyB3
ZXJlIGFkZGVkLiBGaWx0ZXIgc3lzdGVtIGlzIHN0aWxsIG9mZi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBo
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZHVtcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogc3ZnL0Zp
bHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6
OkZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6YWRkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKToKKwogMjAwOS0wNS0yMyAg
RGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVp
bGQtZml4IGZvciBndGsuIFJlbW92ZSBzb3VyY2UgaW5wdXQgZmlsZXMKSW5kZXg6IFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gNDQwODUpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDM1LDYgKzE0MzUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmggXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0
aW9uLmggXApAQCAtMjUzOCw2ICsyNTQwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogCVdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCisJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCisJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIFwKIAlXZWJDb3Jl
L3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmlu
Zy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9y
ZWlnbk9iamVjdC5jcHAgXApAQCAtMjU5Miw2ICsyNTk2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIuaCBcCiAJ
V2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oIFwKKwlXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVy
LmNwcCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmNwcCBcCiAJV2ViQ29yZS9zdmcvRmls
dGVyRWZmZWN0LmggXAogCVdlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwko
cmV2aXNpb24gNDQwODIpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzAxLDYgKzE3MDEsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAg
ICAgICAgcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgXAogICAgICAgICBz
dmcvU1ZHWm9vbUV2ZW50LmNwcCBcCiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0
UnVsZXMuY3BwIFwKKyAgICAgICAgc3ZnL0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3Zn
L0ZpbHRlckVmZmVjdC5jcHAgXAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdJbWFnZUxvYWRlci5jcHAgXApAQCAtMTgzOSw2ICsxODQwLDgg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNDQwODIpCisrKyBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk0LDYgKzk5NCwx
MSBAQAogCQk3QUVEM0UwNTBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDMw
RkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJN0FFRDNF
MDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0Mg
LyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKIAkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlE
IC8qIFN0cm9rZVN0eWxlQXBwbGllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBw
bGllci5oICovOyB9OworCQk4NEE4MUYzQTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVpbGRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4
MUYzOTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVpbGRlci5jcHAgKi87IH07CisJCTg0QTgx
RjNEMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyog
U291cmNlQWxwaGEuY3BwICovOyB9OworCQk4NEE4MUYzRTBGQzdERkYwMDA5NTUzMDAgLyogU291
cmNlQWxwaGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0QTgxRjNDMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5oICovOyB9OworCQk4NEE4
MUY0MTBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAg
LyogU291cmNlR3JhcGhpYy5jcHAgKi87IH07CisJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAv
KiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEE4MUY0MDBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oICovOyB9
OwogCQk4NTAwNEQ5NDBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg4MEFDRUVB
RUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5oICovOyB9OwogCQk4NTAwNEQ5NTBBQ0VF
QUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NTAwNEQ4OTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9N
U1ZHRGVmc0VsZW1lbnQubW0gKi87IH07CiAJCTg1MDA0RDk2MEFDRUVBRUYwMEM0MzhGNiAvKiBE
T01TVkdEZXNjRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODUwMDREOEEwQUNFRUFFRjAwQzQzOEY2IC8qIERPTVNWR0Rlc2NFbGVtZW50Lmgg
Ki87IH07CkBAIC01OTc3LDYgKzU5ODIsMTEgQEAKIAkJN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDND
IC8qIEluc3BlY3RvckZyb250ZW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FFRDNFMDQwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VT
dHlsZUFwcGxpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ryb2tlU3R5
bGVBcHBsaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjM5MEZDN0RG
Q0MwMDk1NTMwMCAvKiBGaWx0ZXJCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEZpbHRlckJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU291cmNlQWxwaGEuY3BwOyBwYXRoID0gZmls
dGVycy9Tb3VyY2VBbHBoYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgx
RjNDMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBTb3VyY2VBbHBoYS5oOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VBbHBoYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAg
LyogU291cmNlR3JhcGhpYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBTb3VyY2VHcmFwaGljLmNwcDsgcGF0aCA9IGZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjQwMEZDN0UwMjcwMDk1NTMwMCAvKiBT
b3VyY2VHcmFwaGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvdXJjZUdy
YXBoaWMuaDsgcGF0aCA9IGZpbHRlcnMvU291cmNlR3JhcGhpYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NEIyQjFGNzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVy
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlS2V5R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3NzEgLyogV2Vi
Q29yZUtleUdlbmVyYXRvci5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLm9iamM7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk4NEIyQjI0RjA1NkJGMTVG
MDBEMkI3NzEgLyogU1NMS2V5R2VuZXJhdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU1NMS2V5R2VuZXJhdG9yTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
QEAgLTExODk0LDYgKzExOTA0LDEwIEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBm
aWx0ZXJzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4
NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAgKi8sCisJCQkJODRB
ODFGNDAwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuaCAqLywKKwkJCQk4NEE4MUYz
QjBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovLAorCQkJCTg0QTgxRjNDMEZD
N0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYw
MDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLywKIAkJCQlBNzVFOEI4MTBFMURFMkQ2MDA3RjI0ODEg
LyogRkVCbGVuZC5oICovLAogCQkJCUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9y
TWF0cml4LmNwcCAqLywKQEAgLTEyNTYxLDYgKzEyNTc1LDcgQEAKIAkJQjIyMjc3Q0EwRDAwQkYx
RTAwNzFCNzgyIC8qIHN2ZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJODRBODFGMzkwRkM3REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICov
LAogCQkJCUU0NkU5Nzg2MERBQUQ2MUIwMDcxRTg5NCAvKiBhbmltYXRpb24gKi8sCiAJCQkJQjI1
NTk4ODYwRDAwRDhCODAwQkI4MjVDIC8qIGdyYXBoaWNzICovLAogCQkJCUIyMjI3N0NCMEQwMEJG
MUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCAqLywKQEAgLTE2OTQ1LDYgKzE2OTYwLDgg
QEAKIAkJCQkyOUE4MTI0MjBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hP
cHRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBB
Y2Nlc3NpYmlsaXR5TGlzdEJveC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDkwRkJCOUNB
OTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQk4NEE4MUYzRTBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTE4OTY1LDYgKzE4OTgyLDkgQEAKIAkJCQkyOUE4MTI0ODBGQkI5Q0E5
MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI5QTgxMjRBMEZCQjlDQTkwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVj
dENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJODRBODFGM0EwRkM3REZDQzAwOTU1MzAw
IC8qIEZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODRBODFGM0QwRkM3REZG
MDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QTgxRjQx
MEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUFscGhhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqICBDb3B5
cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWludCB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQorI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NSZWZQdHI8U291cmNlQWxwaGE+IFNvdXJjZUFscGhhOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgU291cmNlQWxwaGEoKSk7Cit9CisKK3ZvaWQgU291cmNl
QWxwaGE6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKK3sKK30KKwordm9pZCBTb3VyY2VBbHBo
YTo6ZHVtcCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBTb3VyY2VBbHBoYV9oCisjZGVmaW5lIFNv
dXJjZUFscGhhX2gKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKworI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvdXJjZUFscGhhIDogcHVibGlj
IEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOiAgICAgICAgCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNvdXJjZUFscGhhPiBjcmVhdGUoKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgYXBw
bHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CisgICAgCisgICAg
cHJpdmF0ZToKKyAgICAgICAgU291cmNlQWxwaGEoKSB7IH0KKyAgICB9OworfSAvL25hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CisKKyNlbmRpZiAvLyBTb3VyY2VBbHBoYV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwOSBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgor
ICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiU291
cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAi
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRy
PFNvdXJjZUdyYXBoaWM+IFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTb3VyY2VHcmFwaGljKCkpOworfQorCit2b2lkIFNvdXJjZUdyYXBoaWM6OmFw
cGx5KFNWR1Jlc291cmNlRmlsdGVyKikKK3sKK30KKwordm9pZCBTb3VyY2VHcmFwaGljOjpkdW1w
KCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBNYXRoZXdz
IDxwb3NzZXNzZWRwZW5ndWluYm9iQGdtYWlsLmNvbT4KKyAgICAgICAgICAgICAgICAgIDIwMDkg
RGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFNvdXJjZUdyYXBoaWNf
aAorI2RlZmluZSBTb3VyY2VHcmFocGljX2gKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKworI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvdXJj
ZUdyYXBoaWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6ICAgICAgICAKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U291cmNlR3JhcGhpYz4gY3JlYXRlKCk7CisgICAgICAg
IAorICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQg
ZHVtcCgpOworICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIFNvdXJjZUdyYXBoaWMoKSB7IH0K
KyAgICB9OworfSAvL25hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBTb3VyY2VHcmFwaGljX2gKSW5kZXg6
IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L0ZpbHRlckJ1aWxkZXIuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVp
bGRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiAgQ29weXJpZ2h0
IChDKSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5j
bHVkZSAiRmlsdGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgorI2luY2x1
ZGUgIlNvdXJjZUdyYXBoaWMuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGaWx0ZXJCdWls
ZGVyOjpGaWx0ZXJCdWlsZGVyKCkgeworICAgIG1fc291cmNlQWxwaGEgPSBTb3VyY2VBbHBoYTo6
Y3JlYXRlKCk7CisgICAgbV9zb3VyY2VHcmFwaGljID0gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCk7
Cit9CisKK3ZvaWQgRmlsdGVyQnVpbGRlcjo6YWRkKGNvbnN0IFN0cmluZyYgaWQsIFBhc3NSZWZQ
dHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCit7CisgICAgICAgICAgICBtX2xhc3RFZmZlY3QgPSBl
ZmZlY3QuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmKCFpZC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICAgICAgbV9uYW1lZEVmZmVjdHMuc2V0KGlkLmltcGwoKSwgZWZmZWN0LmdldCgpKTsgCit9CisK
K0ZpbHRlckVmZmVjdCogRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBTdHJpbmcm
IGlkKSBjb25zdAoreyAgIAorICAgIGlmKGlkLmlzRW1wdHkoKSAmJiBtX2xhc3RFZmZlY3QpCisg
ICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7CisKKyAgICAvLyBJZiBpZCBpc24ndCBk
ZWNsYXJlZCBhbmQgbGFzdEVmZmVjdCBpcyBzdGlsbCBudWxsIHRoZW4gRmlsdGVyQnVpbGRlciB3
aWxsIHJldHVybgorICAgIC8vIGEgU291cmNlR3JhcGhpYyBvYmplY3QgYXMgcGVyIHRoZSBTcGVj
LgorICAgIGlmKGlkLmlzRW1wdHkoKSAmJiAhbV9sYXN0RWZmZWN0KQorICAgICAgICByZXR1cm4g
bV9zb3VyY2VHcmFwaGljLmdldCgpOworCisgICAgaWYgKGlkID09IFN0cmluZygiU291cmNlR3Jh
cGhpYyIpKQorICAgICAgICByZXR1cm4gbV9zb3VyY2VHcmFwaGljLmdldCgpOworICAgIGlmIChp
ZCA9PSBTdHJpbmcoIlNvdXJjZUFscGhhIikpCisgICAgICAgIHJldHVybiBtX3NvdXJjZUFscGhh
LmdldCgpOworICAgIC8vIEZJWE1FOiBuZWVkcyB0byBiZSBpbXBsZW1lbnRlZAorICAgIGlmIChp
ZCA9PSBTdHJpbmcoIkJhY2tncm91bmRHcmFwaGljIikpCisgICAgICAgIHJldHVybiBtX3NvdXJj
ZUdyYXBoaWMuZ2V0KCk7CisgICAgaWYgKGlkID09IFN0cmluZygiQmFja2dyb3VuZEFscGhhIikp
CisgICAgICAgIHJldHVybiBtX3NvdXJjZUdyYXBoaWMuZ2V0KCk7CisgICAgaWYgKGlkID09IFN0
cmluZygiRmlsbFBhaW50IikpCisgICAgICAgIHJldHVybiBtX3NvdXJjZUdyYXBoaWMuZ2V0KCk7
CisgICAgaWYgKGlkID09IFN0cmluZygiU3Ryb2tlUGFpbnQiKSkKKyAgICAgICAgcmV0dXJuIG1f
c291cmNlR3JhcGhpYy5nZXQoKTsKKworICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWQu
aW1wbCgpKS5nZXQoKTsKK30KKwordm9pZCBGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMoKQor
eworICAgIG1fbGFzdEVmZmVjdCA9IDA7CisgICAgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQo=
</data>
<flag name="review"
          id="15484"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30620</attachid>
            <date>2009-05-23 08:28:50 -0700</date>
            <delta_ts>2009-05-24 12:30:51 -0700</delta_ts>
            <desc>add new source input and filterBuilder</desc>
            <filename>svg-filter-part2.patch</filename>
            <type>text/plain</type>
            <size>19946</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDA5MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMDktMDUtMjMgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEFkZGVkIHN0
YW5kYXJkIGlucHV0IGZvciBmaWx0ZXIgc3lzdGVtLgorCisgICAgICAgIE5vIHRlc3RjYXNlcyB3
ZXJlIGFkZGVkLiBGaWx0ZXIgc3lzdGVtIGlzIHN0aWxsIG9mZi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBo
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUFscGhhOjpTb3VyY2VBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VH
cmFwaGljOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6YXBwbHkp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZHVtcCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlR3JhcGhpYzo6U291cmNlR3JhcGhpYyk6CisgICAgICAgICogc3ZnL0Zp
bHRlckJ1aWxkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6
OkZpbHRlckJ1aWxkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6YWRkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKToKKyAgICAgICAgKiBzdmcv
RmlsdGVyQnVpbGRlci5oOgorCiAyMDA5LTA1LTIzICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIHN0YXJ0dXBkYXRlU3R5bGVJZk5lZWRlZERpc3Bh
dGNoZXIgdG8gc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcgpJbmRleDogV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShy
ZXZpc2lvbiA0NDA4NSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0MzUsNiArMTQzNSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmggXAorCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24uaCBcCkBAIC0yNTM4LDYgKzI1NDAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogCVdlYkNv
cmUvcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgXAogCVdlYkNvcmUvcmVuZGVy
aW5nL1BvaW50ZXJFdmVudHNIaXRSdWxlcy5oIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
b3JlaWduT2JqZWN0LmNwcCBcCkBAIC0yNTkyLDYgKzI1OTYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVdlYkNvcmUvc3ZnL0ZpbHRlci5jcHAgXAogCVdlYkNvcmUvc3ZnL0ZpbHRlci5oIFwK
IAlXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmggXAorCVdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxk
ZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXJFZmZlY3QuY3BwIFwKIAlXZWJDb3JlL3N2Zy9G
aWx0ZXJFZmZlY3QuaCBcCiAJV2ViQ29yZS9zdmcvR3JhZGllbnRBdHRyaWJ1dGVzLmggXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJv
CShyZXZpc2lvbiA0NDA4MikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTE3MDEsNiArMTcwMSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewog
ICAgICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCBcCiAgICAgICAg
IHN2Zy9TVkdab29tRXZlbnQuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1BvaW50ZXJFdmVudHNI
aXRSdWxlcy5jcHAgXAorICAgICAgICBzdmcvRmlsdGVyQnVpbGRlci5jcHAgXAogICAgICAgICBz
dmcvRmlsdGVyRWZmZWN0LmNwcCBcCiAgICAgICAgIHN2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwIFwKICAgICAgICAgc3ZnL1NWR0ltYWdlTG9hZGVyLmNwcCBcCkBAIC0xODM5LDYgKzE4NDAs
OCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NDA4MikKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC05OTQsNiArOTk0
LDExIEBACiAJCTdBRUQzRTA1MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUVEM0Uw
MzBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovOyB9OwogCQk3QUVE
M0UwNjBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRUQzRTA0MEZCQjFFQUEwMEQyQjAz
QyAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovOyB9OwogCQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0
OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVB
cHBsaWVyLmggKi87IH07CisJCTg0QTgxRjNBMEZDN0RGQ0MwMDk1NTMwMCAvKiBGaWx0ZXJCdWls
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0
QTgxRjM5MEZDN0RGQ0MwMDk1NTMwMCAvKiBGaWx0ZXJCdWlsZGVyLmNwcCAqLzsgfTsKKwkJODRB
ODFGM0QwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QTgxRjNCMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5jcHAgKi87IH07CisJCTg0QTgxRjNFMEZDN0RGRjAwMDk1NTMwMCAvKiBT
b3VyY2VBbHBoYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODRBODFGM0MwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggKi87IH07CisJCTg0
QTgxRjQxMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QTgxRjNGMEZDN0UwMjcwMDk1NTMw
MCAvKiBTb3VyY2VHcmFwaGljLmNwcCAqLzsgfTsKKwkJODRBODFGNDIwRkM3RTAyNzAwOTU1MzAw
IC8qIFNvdXJjZUdyYXBoaWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg0QTgxRjQwMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggKi87
IH07CiAJCTg1MDA0RDk0MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREODgwQUNF
RUFFRjAwQzQzOEY2IC8qIERPTVNWR0RlZnNFbGVtZW50LmggKi87IH07CiAJCTg1MDA0RDk1MEFD
RUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZWZzRWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg5MEFDRUVBRUYwMEM0MzhGNiAvKiBE
T01TVkdEZWZzRWxlbWVudC5tbSAqLzsgfTsKIAkJODUwMDREOTYwQUNFRUFFRjAwQzQzOEY2IC8q
IERPTVNWR0Rlc2NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTAwNEQ4QTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVzY0VsZW1lbnQu
aCAqLzsgfTsKQEAgLTU5NzcsNiArNTk4MiwxMSBAQAogCQk3QUVEM0UwMzBGQkIxRUFBMDBEMkIw
M0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9r
ZVN0eWxlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJva2VT
dHlsZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODRBODFGMzkwRkM3
REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg0QTgxRjNCMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTb3VyY2VBbHBoYS5jcHA7IHBhdGggPSBm
aWx0ZXJzL1NvdXJjZUFscGhhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODRB
ODFGM0MwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNvdXJjZUFscGhhLmg7IHBhdGggPSBmaWx0ZXJzL1NvdXJjZUFscGhh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjNGMEZDN0UwMjcwMDk1NTMw
MCAvKiBTb3VyY2VHcmFwaGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNvdXJjZUdyYXBoaWMuY3BwOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODRBODFGNDAwRkM3RTAyNzAwOTU1MzAwIC8q
IFNvdXJjZUdyYXBoaWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU291cmNl
R3JhcGhpYy5oOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VHcmFwaGljLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg0QjJCMUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2Vu
ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkNvcmVLZXlHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTg0QjJCMUY4MDU2QkVGM0EwMEQyQjc3MSAvKiBX
ZWJDb3JlS2V5R2VuZXJhdG9yLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVLZXlHZW5lcmF0b3IubTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTg0QjJCMjRGMDU2QkYx
NUYwMEQyQjc3MSAvKiBTU0xLZXlHZW5lcmF0b3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTU0xLZXlHZW5lcmF0b3JNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwpAQCAtMTE4OTQsNiArMTE5MDQsMTAgQEAKIAkJQTc1RThCN0YwRTFERTJCMDAwN0YyNDgxIC8q
IGZpbHRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTg0QTgxRjNGMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmNwcCAqLywKKwkJCQk4
NEE4MUY0MDBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oICovLAorCQkJCTg0QTgx
RjNCMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5jcHAgKi8sCisJCQkJODRBODFGM0Mw
RkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggKi8sCiAJCQkJQTc1RThCODAwRTFERTJE
NjAwN0YyNDgxIC8qIEZFQmxlbmQuY3BwICovLAogCQkJCUE3NUU4QjgxMEUxREUyRDYwMDdGMjQ4
MSAvKiBGRUJsZW5kLmggKi8sCiAJCQkJQTc1RThCODIwRTFERTJENjAwN0YyNDgxIC8qIEZFQ29s
b3JNYXRyaXguY3BwICovLApAQCAtMTI1NjEsNiArMTI1NzUsNyBAQAogCQlCMjIyNzdDQTBEMDBC
RjFFMDA3MUI3ODIgLyogc3ZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQk4NEE4MUYzOTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVpbGRlci5jcHAg
Ki8sCiAJCQkJRTQ2RTk3ODYwREFBRDYxQjAwNzFFODk0IC8qIGFuaW1hdGlvbiAqLywKIAkJCQlC
MjU1OTg4NjBEMDBEOEI4MDBCQjgyNUMgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQjIyMjc3Q0IwRDAw
QkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovLApAQCAtMTY5NDUsNiArMTY5NjAs
OCBAQAogCQkJCTI5QTgxMjQyMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJv
eE9wdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTI0OTBGQkI5
Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTg0QTgxRjNFMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJODRBODFGNDIwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMTg5NjUsNiArMTg5ODIsOSBAQAogCQkJCTI5QTgxMjQ4MEZCQjlD
QTkwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2Jq
ZWN0Q2FjaGVNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk4NEE4MUYzQTBGQzdERkNDMDA5NTUz
MDAgLyogRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NEE4MUYzRDBGQzdE
RkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODRBODFG
NDEwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogIENv
cHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqCisgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhaW50IHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaW5jbHVkZSAiU291cmNlQWxwaGEuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUGFzc1JlZlB0cjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZSgpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTb3VyY2VBbHBoYSgpKTsKK30KKwordm9pZCBTb3Vy
Y2VBbHBoYTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQoreworfQorCit2b2lkIFNvdXJjZUFs
cGhhOjpkdW1wKCkKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1
bHplIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFNvdXJjZUFscGhhX2gKKyNkZWZpbmUg
U291cmNlQWxwaGFfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQor
I2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU291cmNlQWxwaGEgOiBwdWJs
aWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6ICAgICAgICAKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8U291cmNlQWxwaGE+IGNyZWF0ZSgpOworICAgICAgICAKKyAgICAgICAgdm9pZCBh
cHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKKyAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBTb3VyY2VBbHBoYSgpIHsgfQorICAgIH07Cit9IC8vbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKworI2VuZGlmIC8vIFNvdXJjZUFscGhhX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IERp
cmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJT
b3VyY2VHcmFwaGljLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQ
dHI8U291cmNlR3JhcGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFNvdXJjZUdyYXBoaWMoKSk7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhpYzo6
YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQoreworfQorCit2b2lkIFNvdXJjZUdyYXBoaWM6OmR1
bXAoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhl
d3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JAZ21haWwuY29tPgorICAgICAgICAgICAgICAgICAgMjAw
OSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgU291cmNlR3JhcGhp
Y19oCisjZGVmaW5lIFNvdXJjZUdyYWhwaWNfaAorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5jbHVkZSAiU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU291
cmNlR3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzogICAgICAgIAor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VHcmFwaGljPiBjcmVhdGUoKTsKKyAgICAg
ICAgCisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9p
ZCBkdW1wKCk7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgU291cmNlR3JhcGhpYygpIHsg
fQorICAgIH07Cit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKworI2VuZGlmIC8vIFNvdXJjZUdyYXBoaWNfaApJbmRl
eDogV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvRmlsdGVyQnVpbGRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJC
dWlsZGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqICBDb3B5cmln
aHQgKEMpIERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCisjaW5j
bHVkZSAiU291cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlckJ1
aWxkZXI6OkZpbHRlckJ1aWxkZXIoKSB7CisgICAgbV9zb3VyY2VBbHBoYSA9IFNvdXJjZUFscGhh
OjpjcmVhdGUoKTsKKyAgICBtX3NvdXJjZUdyYXBoaWMgPSBTb3VyY2VHcmFwaGljOjpjcmVhdGUo
KTsKK30KKwordm9pZCBGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3QgU3RyaW5nJiBpZCwgUmVmUHRy
PEZpbHRlckVmZmVjdD4gZWZmZWN0KQoreworICAgICAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZm
ZWN0LmdldCgpOworCisgICAgICAgICAgICBpZighaWQuaXNFbXB0eSgpKQorICAgICAgICAgICAg
ICAgIG1fbmFtZWRFZmZlY3RzLnNldChpZC5pbXBsKCksIG1fbGFzdEVmZmVjdCk7IAorfQorCitG
aWx0ZXJFZmZlY3QqIEZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBp
ZCkgY29uc3QKK3sgICAKKyAgICBpZihpZC5pc0VtcHR5KCkgJiYgbV9sYXN0RWZmZWN0KQorICAg
ICAgICByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOworCisgICAgLy8gSWYgaWQgaXNuJ3QgZGVj
bGFyZWQgYW5kIGxhc3RFZmZlY3QgaXMgc3RpbGwgbnVsbCB0aGVuIEZpbHRlckJ1aWxkZXIgd2ls
bCByZXR1cm4KKyAgICAvLyBhIFNvdXJjZUdyYXBoaWMgb2JqZWN0IGFzIHBlciB0aGUgU3BlYy4K
KyAgICBpZihpZC5pc0VtcHR5KCkgJiYgIW1fbGFzdEVmZmVjdCkKKyAgICAgICAgcmV0dXJuIG1f
c291cmNlR3JhcGhpYy5nZXQoKTsKKworICAgIGlmIChpZCA9PSBTdHJpbmcoIlNvdXJjZUdyYXBo
aWMiKSkKKyAgICAgICAgcmV0dXJuIG1fc291cmNlR3JhcGhpYy5nZXQoKTsKKyAgICBpZiAoaWQg
PT0gU3RyaW5nKCJTb3VyY2VBbHBoYSIpKQorICAgICAgICByZXR1cm4gbV9zb3VyY2VBbHBoYS5n
ZXQoKTsKKyAgICAvLyBGSVhNRTogbmVlZHMgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICBpZiAoaWQg
PT0gU3RyaW5nKCJCYWNrZ3JvdW5kR3JhcGhpYyIpKQorICAgICAgICByZXR1cm4gbV9zb3VyY2VH
cmFwaGljLmdldCgpOworICAgIGlmIChpZCA9PSBTdHJpbmcoIkJhY2tncm91bmRBbHBoYSIpKQor
ICAgICAgICByZXR1cm4gbV9zb3VyY2VHcmFwaGljLmdldCgpOworICAgIGlmIChpZCA9PSBTdHJp
bmcoIkZpbGxQYWludCIpKQorICAgICAgICByZXR1cm4gbV9zb3VyY2VHcmFwaGljLmdldCgpOwor
ICAgIGlmIChpZCA9PSBTdHJpbmcoIlN0cm9rZVBhaW50IikpCisgICAgICAgIHJldHVybiBtX3Nv
dXJjZUdyYXBoaWMuZ2V0KCk7CisKKyAgICByZXR1cm4gbV9uYW1lZEVmZmVjdHMuZ2V0KGlkLmlt
cGwoKSkuZ2V0KCk7Cit9CisKK3ZvaWQgRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKK3sK
KyAgICBtX2xhc3RFZmZlY3QgPSAwOworICAgIG1fbmFtZWRFZmZlY3RzLmNsZWFyKCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDQ0MDgzKQorKysg
V2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZpbHRlckJ1aWxk
ZXIoKTsKIAotICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZp
bHRlckVmZmVjdD4gZWZmZWN0KTsKKyAgICAgICAgdm9pZCBhZGQoY29uc3QgU3RyaW5nJiBpZCwg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKIAogICAgICAgICBGaWx0ZXJFZmZlY3QqIGdl
dEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CiAgICAgICAgIEZpbHRlckVmZmVj
dCogbGFzdEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQo=
</data>
<flag name="review"
          id="15492"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30632</attachid>
            <date>2009-05-24 12:30:51 -0700</date>
            <delta_ts>2009-05-24 15:38:32 -0700</delta_ts>
            <desc>add new source input and filterBuilder</desc>
            <filename>svg-filter-part3.patch</filename>
            <type>text/plain</type>
            <size>20821</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDExNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDktMDUtMjQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEFkZGVkIHN0
YW5kYXJkIGlucHV0IGZvciBmaWx0ZXIgc3lzdGVtLgorCisgICAgICAgIE5vIHRlc3RjYXNlcyB3
ZXJlIGFkZGVkLiBGaWx0ZXIgc3lzdGVtIGlzIHN0aWxsIG9mZi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBo
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjplZmZlY3ROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VBbHBoYTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpT
b3VyY2VBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VHcmFwaGljOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGlj
OjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBzdmcvRmlsdGVyQnVpbGRlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6RmlsdGVyQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWls
ZGVyOjpjbGVhckVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVyLmg6CisKIDIw
MDktMDUtMjMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0LiBDaGFuZ2Ugc2lnbmF0dXJl
IHRvIGhhdmUgUGFzc093blB0ci4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDQxMTUpCisrKyBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM3LDYgKzE0MzcsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJh
bnNmb3JtT3BlcmF0aW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggXApAQCAtMjU0MCw2ICsy
NTQyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZl
bnRzSGl0UnVsZXMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVs
ZXMuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgXApAQCAt
MjU5NCw2ICsyNTk4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9GaWx0
ZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIuaCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyQnVp
bGRlci5oIFwKKwlXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcCBcCiAJV2ViQ29yZS9zdmcv
RmlsdGVyRWZmZWN0LmNwcCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmggXAogCVdlYkNv
cmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNDQxMTUpCisrKyBX
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAzLDYgKzE3MDMsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgXAogICAgICAgICBzdmcvU1ZHWm9vbUV2ZW50LmNwcCBc
CiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKKyAgICAgICAg
c3ZnL0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL0ZpbHRlckVmZmVjdC5jcHAgXAog
ICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdJ
bWFnZUxvYWRlci5jcHAgXApAQCAtMTg0MSw2ICsxODQyLDggQEAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4
LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDQxMTUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk2LDYgKzk5NiwxMSBAQAogCQk3QUVEM0UwNTBGQkIx
RUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIElu
c3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLzsgfTsKIAkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ5Rjc3
NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oICovOyB9OworCQk4NEE4
MUYzQTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzOTBGQzdERkNDMDA5NTUzMDAg
LyogRmlsdGVyQnVpbGRlci5jcHAgKi87IH07CisJCTg0QTgxRjNEMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovOyB9
OworCQk4NEE4MUYzRTBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QTgxRjNDMEZDN0RGRjAwMDk1
NTMwMCAvKiBTb3VyY2VBbHBoYS5oICovOyB9OworCQk4NEE4MUY0MTBGQzdFMDI3MDA5NTUzMDAg
LyogU291cmNlR3JhcGhpYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAg
Ki87IH07CisJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUY0MDBGQzdF
MDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oICovOyB9OwogCQk4NTAwNEQ5NDBBQ0VFQUVG
MDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg4MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdE
ZWZzRWxlbWVudC5oICovOyB9OwogCQk4NTAwNEQ5NTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZH
RGVmc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTAwNEQ4OTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQubW0gKi87
IH07CiAJCTg1MDA0RDk2MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZXNjRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREOEEwQUNF
RUFFRjAwQzQzOEY2IC8qIERPTVNWR0Rlc2NFbGVtZW50LmggKi87IH07CkBAIC01OTgxLDYgKzU5
ODYsMTEgQEAKIAkJN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FFRDNFMDQwRkJCMUVBQTAw
RDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ryb2tlU3R5bGVBcHBsaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjM5MEZDN0RGQ0MwMDk1NTMwMCAvKiBGaWx0ZXJC
dWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlckJ1
aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEE4MUYzQjBGQzdERkYw
MDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU291cmNlQWxwaGEuY3BwOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjNDMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb3VyY2VB
bHBoYS5oOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VBbHBoYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTb3VyY2VHcmFwaGljLmNwcDsg
cGF0aCA9IGZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg0QTgxRjQwMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvdXJjZUdyYXBoaWMuaDsgcGF0aCA9IGZpbHRl
cnMvU291cmNlR3JhcGhpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEIyQjFG
NzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJD
b3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk4NEIyQjI0RjA1NkJGMTVGMDBEMkI3NzEgLyogU1NMS2V5R2Vu
ZXJhdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU1NMS2V5R2VuZXJhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTExODk4LDYgKzExOTA4LDEw
IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NEE4MUYzRjBGQzdFMDI3MDA5NTUz
MDAgLyogU291cmNlR3JhcGhpYy5jcHAgKi8sCisJCQkJODRBODFGNDAwRkM3RTAyNzAwOTU1MzAw
IC8qIFNvdXJjZUdyYXBoaWMuaCAqLywKKwkJCQk4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyog
U291cmNlQWxwaGEuY3BwICovLAorCQkJCTg0QTgxRjNDMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3Vy
Y2VBbHBoYS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCAqLywKIAkJCQlBNzVFOEI4MTBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5oICovLAogCQkJ
CUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCAqLywKQEAgLTEy
NTY1LDYgKzEyNTc5LDcgQEAKIAkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJODRBODFGMzkwRkM3
REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICovLAogCQkJCUU0NkU5Nzg2MERBQUQ2
MUIwMDcxRTg5NCAvKiBhbmltYXRpb24gKi8sCiAJCQkJQjI1NTk4ODYwRDAwRDhCODAwQkI4MjVD
IC8qIGdyYXBoaWNzICovLAogCQkJCUIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRp
c3RhbmNlLmNwcCAqLywKQEAgLTE2OTUyLDYgKzE2OTY3LDggQEAKIAkJCQkyOUE4MTI0MjBGQkI5
QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEE4MUYzRTBGQzdERkYw
MDA5NTUzMDAgLyogU291cmNlQWxwaGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0QTgxRjQyMEZD
N0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4OTcz
LDYgKzE4OTkwLDkgQEAKIAkJCQkyOUE4MTI0ODBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRBMEZCQjlDQTkwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJODRBODFGM0EwRkM3REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJODRBODFGM0QwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFs
cGhhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QTgxRjQxMEZDN0UwMjcwMDk1NTMwMCAvKiBT
b3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBT
Y2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlNvdXJj
ZUFscGhhLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0
cjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTb3VyY2VBbHBoYSgpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VB
bHBoYTo6ZWZmZWN0TmFtZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBBdG9t
aWNTdHJpbmcsIHNfZWZmZWN0TmFtZSwgKCJTb3VyY2VBbHBoYSIpKTsKKyAgICByZXR1cm4gc19l
ZmZlY3ROYW1lOworfQorCit2b2lkIFNvdXJjZUFscGhhOjphcHBseShTVkdSZXNvdXJjZUZpbHRl
ciopCit7Cit9CisKK3ZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQoreworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgU291cmNlQWxwaGFfaAorI2RlZmluZSBTb3VyY2VBbHBoYV9oCisKKyNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNvdXJjZUFscGhhIDogcHVibGlj
IEZpbHRlckVmZmVjdCB7CisgICAgcHVibGljOiAgICAgICAgCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNvdXJjZUFscGhhPiBjcmVhdGUoKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlZmZlY3ROYW1lKCk7CisKKyAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJj
ZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAoKTsKKyAgICAKKyAgICBwcml2YXRlOgorICAg
ICAgICBTb3VyY2VBbHBoYSgpIHsgfQorICAgIH07Cit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKworI2VuZGlmIC8v
IFNvdXJjZUFscGhhX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgi
CisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKKyNpbmNsdWRlIDx3dGYvU3Rk
TGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0cjxTb3VyY2VH
cmFwaGljPiBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgU291cmNlR3JhcGhpYygpKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFw
aGljOjplZmZlY3ROYW1lKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IEF0b21p
Y1N0cmluZywgc19lZmZlY3ROYW1lLCAoIlNvdXJjZUdyYXBoaWMiKSk7CisgICAgcmV0dXJuIHNf
ZWZmZWN0TmFtZTsKK30KKwordm9pZCBTb3VyY2VHcmFwaGljOjphcHBseShTVkdSZXNvdXJjZUZp
bHRlciopCit7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCit7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3Vp
bmJvYkBnbWFpbC5jb20+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBTb3VyY2VHcmFwaGljX2gKKyNkZWZpbmUgU291cmNl
R3JhaHBpY19oCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2lu
Y2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIFNvdXJjZUdyYXBoaWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKKyAgICBwdWJsaWM6
ICAgICAgICAKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U291cmNlR3JhcGhpYz4gY3JlYXRl
KCk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwor
CisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBk
dW1wKCk7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgU291cmNlR3JhcGhpYygpIHsgfQor
ICAgIH07Cit9IC8vbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKKworI2VuZGlmIC8vIFNvdXJjZUdyYXBoaWNfaApJbmRleDog
V2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
RmlsdGVyQnVpbGRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWls
ZGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NCBAQAorCisvKgorICogIENvcHlyaWdo
dCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgor
I2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitGaWx0
ZXJCdWlsZGVyOjpGaWx0ZXJCdWlsZGVyKCkgeworICAgIG1fYnVpbGRpbkVmZmVjdHMuYWRkKFNv
dXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKS5pbXBsKCksIFNvdXJjZUFscGhhOjpjcmVhdGUoKSk7
CisgICAgbV9idWlsZGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKS5pbXBs
KCksIFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKK30KKwordm9pZCBGaWx0ZXJCdWlsZGVyOjph
ZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQor
eworICAgIGlmICghaWQuaXNFbXB0eSgpICYmIG1fYnVpbGRpbkVmZmVjdHMuY29udGFpbnMoaWQu
aW1wbCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0Lmdl
dCgpOworCisgICAgaWYoIWlkLmlzRW1wdHkoKSkKKyAgICAgICAgbV9uYW1lZEVmZmVjdHMuc2V0
KGlkLmltcGwoKSwgbV9sYXN0RWZmZWN0KTsgCit9CisKK0ZpbHRlckVmZmVjdCogRmlsdGVyQnVp
bGRlcjo6Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAg
IGlmKGlkLmlzRW1wdHkoKSAmJiBtX2xhc3RFZmZlY3QpCisgICAgICAgIHJldHVybiBtX2xhc3RF
ZmZlY3QuZ2V0KCk7CisKKyAgICBpZiAobV9idWlsZGluRWZmZWN0cy5jb250YWlucyhpZC5pbXBs
KCkpKQorICAgICAgICByZXR1cm4gbV9idWlsZGluRWZmZWN0cy5nZXQoaWQuaW1wbCgpKS5nZXQo
KTsKKworICAgIGlmIChpZC5pc0VtcHR5KCkgJiYgIW1fbGFzdEVmZmVjdCkKKyAgICAgICAgcmV0
dXJuIG1fYnVpbGRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKS5pbXBs
KCkpLmdldCgpOworCisgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZC5pbXBsKCkpLmdl
dCgpOworfQorCit2b2lkIEZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCit7CisgICAgbV9s
YXN0RWZmZWN0ID0gMDsKKyAgICBtX25hbWVkRWZmZWN0cy5jbGVhcigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA0NDExNSkKKysrIFdlYkNvcmUv
c3ZnL0ZpbHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTkgKzM1LDE4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZpbHRlckJ1aWxkZXIoKTsK
IAotICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0KTsKKyAgICAgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwg
UmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKIAotICAgICAgICBGaWx0ZXJFZmZlY3QqIGdl
dEVmZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgICAgIEZpbHRlckVmZmVj
dCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICAgICAg
RmlsdGVyRWZmZWN0KiBsYXN0RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0Lmdl
dCgpOyB9CiAKICAgICAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+
IG1fbmFtZWRFZmZlY3RzOworICAgICAgICBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBs
PiwgUmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX2J1aWxkaW5FZmZlY3RzOworICAgICAgICBIYXNo
TWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgUmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX25h
bWVkRWZmZWN0czsKIAogICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7
Ci0gICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlR3JhcGhpYzsKLSAgICAgICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VBbHBoYTsKICAgICB9OwogICAgIAogfSAvL25h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30636</attachid>
            <date>2009-05-24 15:38:32 -0700</date>
            <delta_ts>2009-05-24 15:53:48 -0700</delta_ts>
            <desc>add new source input and filterBuilder</desc>
            <filename>svg-filter-part3.patch</filename>
            <type>text/plain</type>
            <size>20989</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDExNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzggQEAKKzIwMDktMDUtMjQgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEFkZGVkIHN0
YW5kYXJkIGlucHV0IGZvciBmaWx0ZXIgc3lzdGVtLgorCisgICAgICAgIE5vIHRlc3RjYXNlcyB3
ZXJlIGFkZGVkLiBGaWx0ZXIgc3lzdGVtIGlzIHN0aWxsIG9mZi4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUFscGhhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBo
YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjplZmZlY3ROYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjphcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VBbHBoYTo6ZHVtcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUFscGhhOjpT
b3VyY2VBbHBoYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VH
cmFwaGljLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VHcmFwaGljOjpkdW1wKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGlj
OjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKiBzdmcvRmlsdGVyQnVpbGRlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyQnVpbGRlcjo6RmlsdGVyQnVpbGRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJCdWls
ZGVyOjpjbGVhckVmZmVjdHMpOgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVyLmg6CisKIDIw
MDktMDUtMjMgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2VsZmlzaC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9yIFF0LiBDaGFuZ2Ugc2lnbmF0dXJl
IHRvIGhhdmUgUGFzc093blB0ci4KSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDQxMTUpCisrKyBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNDM3LDYgKzE0MzcsOCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0lkZW50aXR5VHJh
bnNmb3JtT3BlcmF0aW9uLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLmggXApAQCAtMjU0MCw2ICsy
NTQyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZl
bnRzSGl0UnVsZXMuY3BwIFwKIAlXZWJDb3JlL3JlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVs
ZXMuaCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAgXApAQCAt
MjU5NCw2ICsyNTk4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9GaWx0
ZXIuY3BwIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXIuaCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyQnVp
bGRlci5oIFwKKwlXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcCBcCiAJV2ViQ29yZS9zdmcv
RmlsdGVyRWZmZWN0LmNwcCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyRWZmZWN0LmggXAogCVdlYkNv
cmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNDQxMTUpCisrKyBX
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAzLDYgKzE3MDMsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgcmVuZGVyaW5nL3N0eWxl
L1NWR1JlbmRlclN0eWxlRGVmcy5jcHAgXAogICAgICAgICBzdmcvU1ZHWm9vbUV2ZW50LmNwcCBc
CiAgICAgICAgIHJlbmRlcmluZy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKKyAgICAgICAg
c3ZnL0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL0ZpbHRlckVmZmVjdC5jcHAgXAog
ICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBcCiAgICAgICAgIHN2Zy9TVkdJ
bWFnZUxvYWRlci5jcHAgXApAQCAtMTg0MSw2ICsxODQyLDggQEAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1NWRz0xKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9u
ZW50VHJhbnNmZXIuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4
LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDQxMTUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk2LDYgKzk5NiwxMSBAQAogCQk3QUVEM0UwNTBGQkIx
RUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIElu
c3BlY3RvckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8q
IEluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQu
aCAqLzsgfTsKIAkJODQ5Rjc3NzYwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGll
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ5Rjc3
NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0eWxlQXBwbGllci5oICovOyB9OworCQk4NEE4
MUYzQTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzOTBGQzdERkNDMDA5NTUzMDAg
LyogRmlsdGVyQnVpbGRlci5jcHAgKi87IH07CisJCTg0QTgxRjNEMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovOyB9
OworCQk4NEE4MUYzRTBGQzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QTgxRjNDMEZDN0RGRjAwMDk1
NTMwMCAvKiBTb3VyY2VBbHBoYS5oICovOyB9OworCQk4NEE4MUY0MTBGQzdFMDI3MDA5NTUzMDAg
LyogU291cmNlR3JhcGhpYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAg
Ki87IH07CisJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUY0MDBGQzdF
MDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5oICovOyB9OwogCQk4NTAwNEQ5NDBBQ0VFQUVG
MDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1MDA0RDg4MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdE
ZWZzRWxlbWVudC5oICovOyB9OwogCQk4NTAwNEQ5NTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZH
RGVmc0VsZW1lbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NTAwNEQ4OTBBQ0VFQUVGMDBDNDM4RjYgLyogRE9NU1ZHRGVmc0VsZW1lbnQubW0gKi87
IH07CiAJCTg1MDA0RDk2MEFDRUVBRUYwMEM0MzhGNiAvKiBET01TVkdEZXNjRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODUwMDREOEEwQUNF
RUFFRjAwQzQzOEY2IC8qIERPTVNWR0Rlc2NFbGVtZW50LmggKi87IH07CkBAIC01OTgxLDYgKzU5
ODYsMTEgQEAKIAkJN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5k
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250
ZW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FFRDNFMDQwRkJCMUVBQTAw
RDJCMDNDIC8qIEluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg0OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Ryb2tlU3R5bGVBcHBsaWVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjM5MEZDN0RGQ0MwMDk1NTMwMCAvKiBGaWx0ZXJC
dWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbHRlckJ1
aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NEE4MUYzQjBGQzdERkYw
MDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gU291cmNlQWxwaGEuY3BwOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg0QTgxRjNDMEZDN0RGRjAwMDk1NTMwMCAv
KiBTb3VyY2VBbHBoYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTb3VyY2VB
bHBoYS5oOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VBbHBoYS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NEE4MUYzRjBGQzdFMDI3MDA5NTUzMDAgLyogU291cmNlR3JhcGhpYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTb3VyY2VHcmFwaGljLmNwcDsg
cGF0aCA9IGZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg0QTgxRjQwMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNvdXJjZUdyYXBoaWMuaDsgcGF0aCA9IGZpbHRl
cnMvU291cmNlR3JhcGhpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEIyQjFG
NzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb3JlS2V5R2VuZXJhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9
OwogCQk4NEIyQjFGODA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXZWJD
b3JlS2V5R2VuZXJhdG9yLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk4NEIyQjI0RjA1NkJGMTVGMDBEMkI3NzEgLyogU1NMS2V5R2Vu
ZXJhdG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gU1NMS2V5R2VuZXJhdG9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTExODk4LDYgKzExOTA4LDEw
IEBACiAJCUE3NUU4QjdGMEUxREUyQjAwMDdGMjQ4MSAvKiBmaWx0ZXJzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk4NEE4MUYzRjBGQzdFMDI3MDA5NTUz
MDAgLyogU291cmNlR3JhcGhpYy5jcHAgKi8sCisJCQkJODRBODFGNDAwRkM3RTAyNzAwOTU1MzAw
IC8qIFNvdXJjZUdyYXBoaWMuaCAqLywKKwkJCQk4NEE4MUYzQjBGQzdERkYwMDA5NTUzMDAgLyog
U291cmNlQWxwaGEuY3BwICovLAorCQkJCTg0QTgxRjNDMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3Vy
Y2VBbHBoYS5oICovLAogCQkJCUE3NUU4QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNw
cCAqLywKIAkJCQlBNzVFOEI4MTBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5oICovLAogCQkJ
CUE3NUU4QjgyMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUNvbG9yTWF0cml4LmNwcCAqLywKQEAgLTEy
NTY1LDYgKzEyNTc5LDcgQEAKIAkJQjIyMjc3Q0EwRDAwQkYxRTAwNzFCNzgyIC8qIHN2ZyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJODRBODFGMzkwRkM3
REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICovLAogCQkJCUU0NkU5Nzg2MERBQUQ2
MUIwMDcxRTg5NCAvKiBhbmltYXRpb24gKi8sCiAJCQkJQjI1NTk4ODYwRDAwRDhCODAwQkI4MjVD
IC8qIGdyYXBoaWNzICovLAogCQkJCUIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRp
c3RhbmNlLmNwcCAqLywKQEAgLTE2OTUyLDYgKzE2OTY3LDggQEAKIAkJCQkyOUE4MTI0MjBGQkI5
QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTI5QTgxMjQzMEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk4NEE4MUYzRTBGQzdERkYw
MDA5NTUzMDAgLyogU291cmNlQWxwaGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTg0QTgxRjQyMEZD
N0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VHcmFwaGljLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4OTcz
LDYgKzE4OTkwLDkgQEAKIAkJCQkyOUE4MTI0ODBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJp
bGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTI5QTgxMjRBMEZCQjlDQTkwMDUx
MDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJODRBODFGM0EwRkM3REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJODRBODFGM0QwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFs
cGhhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg0QTgxRjQxMEZDN0UwMjcwMDk1NTMwMCAvKiBT
b3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMDkgRGlyayBT
Y2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIlNvdXJj
ZUFscGhhLmgiCisKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisKKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc1JlZlB0
cjxTb3VyY2VBbHBoYT4gU291cmNlQWxwaGE6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBTb3VyY2VBbHBoYSk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgU291cmNlQWxw
aGE6OmVmZmVjdE5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWlj
U3RyaW5nLCBzX2VmZmVjdE5hbWUsICgiU291cmNlQWxwaGEiKSk7CisgICAgcmV0dXJuIHNfZWZm
ZWN0TmFtZTsKK30KKwordm9pZCBTb3VyY2VBbHBoYTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIq
KQoreworfQorCit2b2lkIFNvdXJjZUFscGhhOjpkdW1wKCkKK3sKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IFNvdXJjZUFscGhhX2gKKyNkZWZpbmUgU291cmNlQWxwaGFfaAorCisjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTb3VyY2VBbHBoYSA6IHB1YmxpYyBG
aWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzogICAgICAgIAorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTb3VyY2VBbHBoYT4gY3JlYXRlKCk7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IEF0b21p
Y1N0cmluZyYgZWZmZWN0TmFtZSgpOworCisgICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VG
aWx0ZXIqKTsKKyAgICAgICAgdm9pZCBkdW1wKCk7CisgICAgCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgU291cmNlQWxwaGEoKSB7IH0KKyAgICB9OworfSAvL25hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisKKyNlbmRpZiAvLyBT
b3VyY2VBbHBoYV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU0IEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRA
d2Via2l0Lm9yZz4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgor
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorCisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8U291cmNlR3Jh
cGhpYz4gU291cmNlR3JhcGhpYzo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNvdXJjZUdyYXBoaWMpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUdyYXBoaWM6
OmVmZmVjdE5hbWUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3Ry
aW5nLCBzX2VmZmVjdE5hbWUsICgiU291cmNlR3JhcGhpYyIpKTsKKyAgICByZXR1cm4gc19lZmZl
Y3ROYW1lOworfQorCit2b2lkIFNvdXJjZUdyYXBoaWM6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVy
KikKK3sKK30KKwordm9pZCBTb3VyY2VHcmFwaGljOjpkdW1wKCkKK3sKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBo
aWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlR3JhcGhpYy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWluYm9i
QGdtYWlsLmNvbT4KKyAgICAgICAgICAgICAgICAgIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdl
YmtpdC5vcmc+CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisqLworCisjaWZuZGVmIFNvdXJjZUdyYXBoaWNfaAorI2RlZmluZSBTb3VyY2VHcmFo
cGljX2gKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpbmNsdWRl
ICJGaWx0ZXJFZmZlY3QuaCIKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgU291cmNlR3JhcGhpYyA6IHB1YmxpYyBGaWx0ZXJFZmZlY3QgeworICAgIHB1YmxpYzogICAg
ICAgIAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTb3VyY2VHcmFwaGljPiBjcmVhdGUoKTsK
KworICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlZmZlY3ROYW1lKCk7CisKKyAg
ICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGR1bXAo
KTsKKyAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBTb3VyY2VHcmFwaGljKCkgeyB9CisgICAg
fTsKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorCisjZW5kaWYgLy8gU291cmNlR3JhcGhpY19oCkluZGV4OiBXZWJD
b3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0
ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACisKKy8qCisgKiAgQ29weXJpZ2h0IChD
KSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgorICoKKyAqICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
bmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCisKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCisjaW5j
bHVkZSAiU291cmNlR3JhcGhpYy5oIgorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ZpbHRlckJ1
aWxkZXI6OkZpbHRlckJ1aWxkZXIoKQoreworICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJj
ZUdyYXBoaWM6OmVmZmVjdE5hbWUoKS5pbXBsKCksIFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsK
KyAgICBtX2J1aWx0aW5FZmZlY3RzLmFkZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpLmltcGwo
KSwgU291cmNlQWxwaGE6OmNyZWF0ZSgpKTsKK30KKwordm9pZCBGaWx0ZXJCdWlsZGVyOjphZGQo
Y29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQorewor
ICAgIGlmIChpZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0Lmdl
dCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQXRvbWljU3RyaW5nSW1wbCogaWRJ
bXBsID0gaWQuaW1wbCgpOworICAgIEFTU0VSVChpZEltcGwpOworCisgICAgaWYgKG1fYnVpbHRp
bkVmZmVjdHMuY29udGFpbnMoaWRJbXBsKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9sYXN0
RWZmZWN0ID0gZWZmZWN0LmdldCgpOworICAgIG1fbmFtZWRFZmZlY3RzLnNldChpZEltcGwsIG1f
bGFzdEVmZmVjdCk7Cit9CisKK0ZpbHRlckVmZmVjdCogRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0
QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGJvb2wgaWRJc0VtcHR5
ID0gaWQuaXNFbXB0eSgpOworCisgICAgaWYgKGlkSXNFbXB0eSAmJiBtX2xhc3RFZmZlY3QpCisg
ICAgICAgIHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7CisKKyAgICBBdG9taWNTdHJpbmdJbXBs
KiBpZEltcGwgPSBpZC5pbXBsKCk7CisKKyAgICBpZiAobV9idWlsdGluRWZmZWN0cy5jb250YWlu
cyhpZEltcGwpKQorICAgICAgICByZXR1cm4gbV9idWlsdGluRWZmZWN0cy5nZXQoaWRJbXBsKS5n
ZXQoKTsKKworICAgIGlmIChpZElzRW1wdHkgJiYgIW1fbGFzdEVmZmVjdCkKKyAgICAgICAgcmV0
dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKS5pbXBs
KCkpLmdldCgpOworCisgICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZEltcGwpLmdldCgp
OworfQorCit2b2lkIEZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCit7CisgICAgbV9sYXN0
RWZmZWN0ID0gMDsKKyAgICBtX25hbWVkRWZmZWN0cy5jbGVhcigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiA0NDExNSkKKysrIFdlYkNvcmUvc3Zn
L0ZpbHRlckJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTkgKzM1LDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEZpbHRlckJ1aWxkZXIoKTsKIAot
ICAgICAgICB2b2lkIGFkZChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVj
dD4gZWZmZWN0KTsKKyAgICAgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVm
UHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKIAotICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVm
ZmVjdEJ5SWQoY29uc3QgU3RyaW5nJiBpZCkgY29uc3Q7CisgICAgICAgIEZpbHRlckVmZmVjdCog
Z2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKICAgICAgICAgRmls
dGVyRWZmZWN0KiBsYXN0RmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgp
OyB9CiAKICAgICAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEhhc2hNYXA8UmVmUHRyPFN0cmluZ0ltcGw+LCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1f
bmFtZWRFZmZlY3RzOworICAgICAgICBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwg
UmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX2J1aWx0aW5FZmZlY3RzOworICAgICAgICBIYXNoTWFw
PFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgUmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX25hbWVk
RWZmZWN0czsKIAogICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xhc3RFZmZlY3Q7Ci0g
ICAgICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlR3JhcGhpYzsKLSAgICAgICAgUmVm
UHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VBbHBoYTsKICAgICB9OwogICAgIAogfSAvL25hbWVz
cGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30757</attachid>
            <date>2009-05-28 15:30:17 -0700</date>
            <delta_ts>2009-05-28 15:37:30 -0700</delta_ts>
            <desc>svg independen filters</desc>
            <filename>filter.patch</filename>
            <type>text/plain</type>
            <size>134566</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MjUy
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUt
MjggIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOaWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgRW5hYmxlIHRoZSBuZXcgYnVpbGQgZmxh
ZyAtLWZpbHRlcnMgZm9yIEd0ay4gTW9yZSBkZXRhaWxzIGluIFdlYkNvcmUvQ2hhbmdlTG9nLgor
CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA1LTE5ICBYYW4gTG9wZXogIDx4bG9w
ZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW4gQWxvbnpvIGFuZCBHdXN0
YXZvIE5vcm9uaGEuCkluZGV4OiBjb25maWd1cmUuYWMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uZmlndXJl
LmFjCShyZXZpc2lvbiA0NDI1MikKKysrIGNvbmZpZ3VyZS5hYwkod29ya2luZyBjb3B5KQpAQCAt
NDA0LDcgKzQwNCw2IEBAIEFDX01TR19SRVNVTFQoWyRlbmFibGVfd2ViX3dvcmtlcnNdKQogIyB0
dXJuIG9mZiBzdmcgZmVhdHVyZXMgaWYgLS1kaXNhYmxlLXN2ZyBpcyByZXF1ZXN0ZWQKIGlmIHRl
c3QgIiRlbmFibGVfc3ZnIiA9ICJubyI7IHRoZW4KICAgIGVuYWJsZV9zdmdfYW5pbWF0aW9uPW5v
Ci0gICBlbmFibGVfc3ZnX2ZpbHRlcnM9bm8KICAgIGVuYWJsZV9zdmdfZm9udHM9bm8KICAgIGVu
YWJsZV9zdmdfZm9yZWlnbl9vYmplY3Q9bm8KICAgIGVuYWJsZV9zdmdfYXNfaW1hZ2U9bm8KQEAg
LTQxOSwxMyArNDE4LDEzIEBAIEFDX0FSR19FTkFCTEUoc3ZnX2FuaW1hdGlvbiwKICAgICAgICAg
ICAgICAgW10sW2VuYWJsZV9zdmdfYW5pbWF0aW9uPSJ5ZXMiXSkKIEFDX01TR19SRVNVTFQoWyRl
bmFibGVfc3ZnX2FuaW1hdGlvbl0pCiAKLSMgY2hlY2sgd2hldGhlciB0byBlbmFibGUgc3VwcG9y
dCBmb3IgU1ZHIGZpbHRlcnMKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgc3Vw
cG9ydCBmb3IgU1ZHIGZpbHRlcnNdKQotQUNfQVJHX0VOQUJMRShzdmdfZmlsdGVycywKLSAgICAg
ICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN2Zy1maWx0ZXJzXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW2VuYWJsZSBzdXBwb3J0IGZvciBTVkcgZmlsdGVycyAoZXhw
ZXJpbWVudGFsKSBbZGVmYXVsdD1ub11dKSwKLSAgICAgICAgICAgICAgW10sW2VuYWJsZV9zdmdf
ZmlsdGVycz0ibm8iXSkKLUFDX01TR19SRVNVTFQoWyRlbmFibGVfc3ZnX2ZpbHRlcnNdKQorIyBj
aGVjayB3aGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBmaWx0ZXJzCitBQ19NU0dfQ0hFQ0tJ
TkcoW3doZXRoZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIGZpbHRlcnNdKQorQUNfQVJHX0VOQUJM
RShmaWx0ZXJzLAorICAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZmlsdGVy
c10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgc3VwcG9ydCBmb3IgZmls
dGVycyAoZXhwZXJpbWVudGFsKSBbZGVmYXVsdD1ub11dKSwKKyAgICAgICAgICAgICAgW10sW2Vu
YWJsZV9maWx0ZXJzPSJubyJdKQorQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9maWx0ZXJzXSkKIAog
IyBjaGVjayB3aGV0aGVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciBTVkcgZm9udHMKIEFDX01TR19D
SEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgc3VwcG9ydCBmb3IgU1ZHIGZvbnRzXSkKQEAgLTQ2
MSw3ICs0NjAsNiBAQCBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N2Z191c2VfZWxlbWVudF0pCiAK
ICMgY2hlY2sgZm9yIFNWRyBmZWF0dXJlcywgZW5hYmxpbmcgU1ZHIGlmIG5lY2Vzc2FyeQogaWYg
dGVzdCAiJGVuYWJsZV9zdmdfYW5pbWF0aW9uIiA9ICJ5ZXMiIHx8IFwKLSAgIHRlc3QgIiRlbmFi
bGVfc3ZnX2ZpbHRlcnMiID0gInllcyIgfHwgXAogICAgdGVzdCAiJGVuYWJsZV9zdmdfZm9udHMi
ID0gInllcyIgfHwgXAogICAgdGVzdCAiJGVuYWJsZV9zdmdfZm9yZWlnbl9vYmplY3QiID0gInll
cyIgfHwgXAogICAgdGVzdCAiJGVuYWJsZV9zdmdfYXNfaW1hZ2UiID0gInllcyIgfHwgXApAQCAt
NjY0LDExICs2NjIsMTEgQEAgQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9EQVRBQkFTRV0sW3Rlc3Qg
IgogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9JQ09OREFUQUJBU0VdLFt0ZXN0ICIkZW5hYmxlX2lj
b25fZGF0YWJhc2UiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9YUEFUSF0sW3Rl
c3QgIiRlbmFibGVfeHBhdGgiID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9YU0xU
XSxbdGVzdCAiJGVuYWJsZV94c2x0IiA9ICJ5ZXMiXSkKK0FNX0NPTkRJVElPTkFMKFtFTkFCTEVf
RklMVEVSU10sW3Rlc3QgIiRlbmFibGVfZmlsdGVycyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05B
TChbRU5BQkxFX0dFT0xPQ0FUSU9OXSwgW3Rlc3QgIiRlbmFibGVfZ2VvbG9jYXRpb24iID0gInll
cyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9WSURFT10sW3Rlc3QgIiRlbmFibGVfdmlkZW8i
ID0gInllcyJdKQogQU1fQ09ORElUSU9OQUwoW0VOQUJMRV9TVkddLFt0ZXN0ICIkZW5hYmxlX3N2
ZyIgPSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1NWR19BTklNQVRJT05dLFt0ZXN0
ICIkZW5hYmxlX3N2Z19hbmltYXRpb24iID0gInllcyJdKQotQU1fQ09ORElUSU9OQUwoW0VOQUJM
RV9TVkdfRklMVEVSU10sW3Rlc3QgIiRlbmFibGVfc3ZnX2ZpbHRlcnMiID0gInllcyJdKQogQU1f
Q09ORElUSU9OQUwoW0VOQUJMRV9TVkdfRk9OVFNdLFt0ZXN0ICIkZW5hYmxlX3N2Z19mb250cyIg
PSAieWVzIl0pCiBBTV9DT05ESVRJT05BTChbRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVF0sW3Rl
c3QgIiRlbmFibGVfc3ZnX2ZvcmVpZ25fb2JqZWN0IiA9ICJ5ZXMiXSkKIEFNX0NPTkRJVElPTkFM
KFtFTkFCTEVfU1ZHX0FTX0lNQUdFXSxbdGVzdCAiJGVuYWJsZV9zdmdfYXNfaW1hZ2UiID0gInll
cyJdKQpAQCAtNzA1LDYgKzcwMyw3IEBAIEZlYXR1cmVzOgogIDNEIFRyYW5zZm9ybXMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV8zRF90cmFuc2Zv
cm1zCiAgSklUIGNvbXBpbGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgOiAkZW5hYmxlX2ppdAogIERhc2hib2FyZCBzdXBwb3J0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9kYXNoYm9hcmRfc3VwcG9ydAorIEZpbHRl
cnMgc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVu
YWJsZV9maWx0ZXJzCiAgR2VvbG9jYXRpb24gc3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dlb2xvY2F0aW9uCiAgR05PTUUgS2V5cmluZyBzdXBw
b3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAkZW5hYmxlX2dub21la2V5
cmluZwogIEphdmFTY3JpcHQgZGVidWdnZXIvcHJvZmlsZXIgc3VwcG9ydCAgICAgICAgICAgICAg
ICAgICAgIDogJGVuYWJsZV9qYXZhc2NyaXB0X2RlYnVnZ2VyCkBAIC03MTYsNyArNzE1LDYgQEAg
RmVhdHVyZXM6CiAgSWNvbiBkYXRhYmFzZSBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX2ljb25fZGF0YWJhc2UKICBTVkcgc3VwcG9ydCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnCiAgU1ZH
IGFuaW1hdGlvbiBzdXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAk
ZW5hYmxlX3N2Z19hbmltYXRpb24KLSBTVkcgZmlsdGVycyBzdXBwb3J0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVfc3ZnX2ZpbHRlcnMKICBTVkcgZm9udHMg
c3VwcG9ydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRlbmFibGVf
c3ZnX2ZvbnRzCiAgU1ZHIGZvcmVpZ24gb2JqZWN0IHN1cHBvcnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiAkZW5hYmxlX3N2Z19mb3JlaWduX29iamVjdAogIFNWRyBhcyBpbWFnZSBz
dXBwb3J0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJGVuYWJsZV9zdmdf
YXNfaW1hZ2UKSW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ0MjUyKQorKysgSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjgg
IERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
aWtvbGFzIFppbW1lcm1hbm4uCisKKyAgICAgICAgQWRkZWQgbmV3IGJ1aWxkIGZsYWcgLS1maWx0
ZXJzIGZvciBNYWMuIE1vcmUgZGV0YWlscyBpbiBXZWJDb3JlL0NoYW5nZUxvZy4KKworICAgICAg
ICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorCiAyMDA5LTA1LTI3
ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
TWFyayBSb3dlLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQ0MjUyKQorKysgSmF2YVNjcmlw
dENvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAgRU5BQkxFXzNEX1JFTkRFUklORyA9IDsKIEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORyA9IDsKIEVOQUJMRV9EQVRBQkFTRSA9IEVOQUJMRV9EQVRBQkFTRTsKIEVO
QUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsKK0VOQUJMRV9GSUxURVJTID0g
OwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9J
Q09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUiA9IEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVfV09SS0VSUyA9IEVOQUJMRV9X
T1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFC
TEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RPTV9T
VE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElP
TlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FT
X0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05U
UykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJM
RV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YUEFUSCkg
JChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVf
RE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxF
X09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5J
TUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5E
SU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQo
RU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dP
UktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA0NDI1MikK
KysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAwIEBACisy
MDA5LTA1LTI4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgorCisgICAgICAgIEFkZGVkIGEgbmV3IGJ1aWxk
IGZsYWcgLS1maWx0ZXJzLiBUaGlzIHJlcGxhY2VzIHRoZSBvbGQgLS1zdmctZmlsdGVycyBhbmQg
ZW5hYmxlcworICAgICAgICBvdGhlciBwYXJ0cyBvZiBXZWJLaXQgdG8gdXNlIHNvbWUgYmFzaWMg
ZmlsdGVycyBvZiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIGlmIG5lZWRlZC4KKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgYnVnIGluIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAg
d2hlcmUgd2UgdXNlZCBTVkdfRklMVEVSLiBUaGlzIGZsYWcKKyAgICAgICAgZG9lc24ndCBleGlz
dCBhbmQgd2FzIHJlcGxhY2VkIGJ5IEZJTFRFUlMgYXMgd2VsbCBhcyBhbGwgU1ZHX0ZJTFRFUlMg
b2NjdXJyZW5jZXMuCisgICAgICAgIEZpbHRlcnMgYXJlIG5vdCB3b3JraW5nIHlldC4gVGhpcyBw
YXRjaCBpcyBqdXN0IGEgcHJlcGVyYXRpb24uIEZpbHRlcnMgYXJlIGRlYWN0aXZhdGVkIGJ5Cisg
ICAgICAgIGRlZmF1bHQuIAorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmlu
ZXMueGNjb25maWc6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBiaW5kaW5n
cy9vYmpjL0RPTS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUVsZW1lbnRDbGFzc01hcCk6
CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmlzU1ZHMTBGZWF0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzU1ZHMTFGZWF0dXJlKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JN
YXRyaXguY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
c2l0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHQ29udGFpbmVyOjpzZWxmV2lsbFBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnNlbGZXaWxsUGFpbnQpOgor
ICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlckJhc2U6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZW5kZXJCYXNlOjpmaWx0ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKToK
KyAgICAgICAgKiBzdmcvRmlsdGVyLmNwcDoKKyAgICAgICAgKiBzdmcvRmlsdGVyLmg6CisgICAg
ICAgICogc3ZnL0ZpbHRlckJ1aWxkZXIuY3BwOgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVy
Lmg6CisgICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaWRsOgor
ICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmlkbDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaWRsOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmlkbDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaWRsOgor
ICAgICAgICAqIHN2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2
Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZs
b29kRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHRkVGdW5jQUVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGdW5j
QUVsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNCRWxlbWVudC5jcHA6CisgICAg
ICAgICogc3ZnL1NWR0ZFRnVuY0JFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRnVuY0JF
bGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdGRUZ1bmNHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUZ1bmNHRWxl
bWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGdW5jUkVsZW1l
bnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmlkbDoKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlRWxlbWVudC5pZGw6CisgICAgICAgICogc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxl
bWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaWRsOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNl
dEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZF
UG9pbnRMaWdodEVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVQb2ludExpZ2h0RWxlbWVu
dC5pZGw6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgor
ICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaWRsOgorICAgICAgICAqIHN2Zy9TVkdG
RVNwb3RMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRVNwb3RMaWdodEVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmlkbDoKKyAgICAgICAg
KiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1l
bnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5pZGw6CisgICAgICAgICogc3Zn
L1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVu
Y2VFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuaWRsOgor
ICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHRmls
dGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAg
ICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2Fpcm8v
U1ZHUmVzb3VyY2VGaWx0ZXJDYWlyby5jcHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2NnL1NW
R1Jlc291cmNlRmlsdGVyQ2cuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9jZy9TVkdSZXNv
dXJjZUZpbHRlckNnLm1tOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3Rh
bnRMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZm
dXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5jcHA6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNw
bGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29k
LmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVy
Z2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3Bw
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVRpbGUuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1
bGVuY2UuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5j
ZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckVmZmVjdC5jcHA6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyRWZmZWN0Lmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3VyY2UuY3BwOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHUG9pbnRMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR1Nwb3RMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW06CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvU1ZHRmlsdGVyRWZmZWN0Q2cubW06CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLm06CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm06CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm06
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNwbGFjZW1lbnRNYXBGaWx0
ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNlbWVudE1h
cEZpbHRlci5tOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzdGFudExp
Z2h0RmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50
TGlnaHRGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dhbW1h
VHJhbnNmZXJGaWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9X
S0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tOb3JtYWxNYXBGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1BvaW50TGlnaHRGaWx0ZXIuaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1BvaW50TGlnaHRGaWx0ZXIubToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0RmlsdGVyLm06CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm06Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL21hYy9TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1h
Yy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9y
bURhdGFNYWMubW06CisgICAgICAgICogc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlRmlsdGVy
UXQuY3BwOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9za2lhL1NWR1Jlc291cmNlRmlsdGVyU2tp
YS5jcHA6CisgICAgICAgICogc3ZnL3N2Z3RhZ3MuaW46CisKIDIwMDktMDUtMjggIEJyZXR0IFdp
bHNvbiAgPGJyZXR0d0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgYnVpbGQg
Zml4LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw4ICs1ODcsOCBAQCBpZmVx
ICgkKGZpbmRzdHJpbmcgRU5BQkxFX1NWR19GT05UUywkKEZFCiAgICAgU1ZHX0ZMQUdTIDo9ICQo
U1ZHX0ZMQUdTKSBFTkFCTEVfU1ZHX0ZPTlRTPTEKIGVuZGlmCiAKLWlmZXEgKCQoZmluZHN0cmlu
ZyBFTkFCTEVfU1ZHX0ZJTFRFUlMsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX1NWR19GSUxU
RVJTKQotICAgIFNWR19GTEFHUyA6PSAkKFNWR19GTEFHUykgRU5BQkxFX1NWR19GSUxURVJTPTEK
K2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRklMVEVSUywkKEZFQVRVUkVfREVGSU5FUykpLCBF
TkFCTEVfRklMVEVSUykKKyAgICBTVkdfRkxBR1MgOj0gJChTVkdfRkxBR1MpIEVOQUJMRV9GSUxU
RVJTPTEKIGlmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTLCQo
RkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpCiAgICAgV0VC
Q09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVT
KSBXZWJDb3JlLlNWRy5GaWx0ZXJzLmV4cAogZW5kaWYKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNDQy
NTIpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQxLDEz
ICsxNDQxLDYgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1VuaXRCZXppZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJh
dG9yLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmggXAot
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXAotCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmggXAotCVdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmggXAotCVdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oIFwKLQlXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggXAotCVdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgXAog
CVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9NYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24uaCBcCkBAIC0yMzQ4LDYgKzIzNDEsMzYgQEAgRGVyaXZlZFNvdXJjZXMvV01MRWxlbWVu
dEZhY3RvcnkuY3BwOiAkKAogZW5kaWYgIyBFTkQgRU5BQkxFX1dNTAogCiAjIC0tLS0KKyMgRmls
dGVycworIyAtLS0tCitpZiBFTkFCTEVfRklMVEVSUworCitGRUFUVVJFX0RFRklORVNfSkFWQVND
UklQVCArPSBFTkFCTEVfRklMVEVSUz0xCit3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX0ZJ
TFRFUlM9MQorCit3ZWJjb3JlX3NvdXJjZXMgKz0gXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xv
ck1hdHJpeC5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25l
bnRUcmFuc2Zlci5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvc2l0ZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCisKK2lmIEVO
QUJMRV9TVkcKK1NWR19GRUFUVVJFUyArPSBFTkFCTEVfRklMVEVSUz0xCitlbmRpZgorCitlbmRp
ZiAjIEVORCBFTkFCTEVfRklMVEVSUworCisjIC0tLS0KICMgR2VvbG9jYXRpb24KICMgLS0tLQog
aWYgRU5BQkxFX0dFT0xPQ0FUSU9OCkBAIC0yNTUwLDEzICsyNTczLDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
IFwKIAlXZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIFwKIAlXZWJDb3JlL2Nzcy9TVkdDU1NT
dHlsZVNlbGVjdG9yLmNwcCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuY3BwIFwKLQlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1h
dHJpeC5jcHAgXAotCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmNwcCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcCBcCi0JV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAgXAotCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBo
YS5jcHAgXAotCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGlj
LmNwcCBcCiAJV2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBcCiAJ
V2ViQ29yZS9yZW5kZXJpbmcvUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmggXAogCVdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZvcmVpZ25PYmplY3QuY3BwIFwKQEAgLTI5NzEsMTIgKzI5ODcsNiBAQCBT
VkdfRkVBVFVSRVMgKz0gRU5BQkxFX1NWR19GT05UUz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1E
RU5BQkxFX1NWR19GT05UUz0xCiBlbmRpZgogCi1pZiBFTkFCTEVfU1ZHX0ZJTFRFUlMKLUZFQVRV
UkVfREVGSU5FU19KQVZBU0NSSVBUICs9IEVOQUJMRV9TVkdfRklMVEVSUz0xCi1TVkdfRkVBVFVS
RVMgKz0gRU5BQkxFX1NWR19GSUxURVJTPTEKLXdlYmNvcmVfY3BwZmxhZ3MgKz0gLURFTkFCTEVf
U1ZHX0ZJTFRFUlM9MQotZW5kaWYKLQogaWYgRU5BQkxFX1NWR19BU19JTUFHRQogRkVBVFVSRV9E
RUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NWR19BU19JTUFHRT0xCiBTVkdfRkVBVFVSRVMg
Kz0gRU5BQkxFX1NWR19BU19JTUFHRT0xCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTA0LDYgKzEwNCw3IEBAIENPTkZJRyhR
VERJUl9idWlsZCkgewogfQogCiAhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBU0hCT0FSRF9T
VVBQT1JUPS4pOiBERUZJTkVTICs9IEVOQUJMRV9EQVNIQk9BUkRfU1VQUE9SVD0wCishY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX0ZJTFRFUlM9Lik6IERFRklORVMgKz0gRU5BQkxFX0ZJTFRFUlM9
MAogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YUEFUSD0uKTogREVGSU5FUyArPSBFTkFCTEVf
WFBBVEg9MQogIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YU0xUPS4pOiBERUZJTkVTICs9IEVO
QUJMRV9YU0xUPTAKICMhY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1hCTD0uKTogREVGSU5FUyAr
PSBFTkFCTEVfWEJMPTEKQEAgLTExOSwxMCArMTIwLDggQEAgQ09ORklHKFFURElSX2J1aWxkKSB7
CiAgICAgIWNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkdfQU5JTUFUSU9OPS4pOiBERUZJTkVT
ICs9IEVOQUJMRV9TVkdfQU5JTUFUSU9OPTEKICAgICAhY29udGFpbnMoREVGSU5FUywgRU5BQkxF
X1NWR19BU19JTUFHRT0uKTogREVGSU5FUyArPSBFTkFCTEVfU1ZHX0FTX0lNQUdFPTEKICAgICAh
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWR19VU0U9Lik6IERFRklORVMgKz0gRU5BQkxFX1NW
R19VU0U9MQotICAgICMgZGlzYWJsZWQgZHVlIHN2ZyBmaWx0ZXIgcmV3b3JrCi0gICAgIWNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9TVkdfRklMVEVSUz0uKTogREVGSU5FUyArPSBFTkFCTEVfU1ZH
X0ZJTFRFUlM9MAogfSBlbHNlIHsKLSAgICBERUZJTkVTICs9IEVOQUJMRV9TVkdfRk9OVFM9MCBF
TkFCTEVfU1ZHX0ZJTFRFUlM9MCBFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUPTAgRU5BQkxFX1NW
R19BTklNQVRJT049MCBFTkFCTEVfU1ZHX0FTX0lNQUdFPTAgRU5BQkxFX1NWR19VU0U9MAorICAg
IERFRklORVMgKz0gRU5BQkxFX1NWR19GT05UUz0wIEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1Q9
MCBFTkFCTEVfU1ZHX0FOSU1BVElPTj0wIEVOQUJMRV9TVkdfQVNfSU1BR0U9MCBFTkFCTEVfU1ZH
X1VTRT0wCiB9CiAKICMgSFRNTDUgbWVkaWEgc3VwcG9ydApAQCAtMTQ4Nyw2ICsxNDg2LDE5IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9YQkw9MSkgewogICAgIEZFQVRVUkVfREVGSU5FU19K
QVZBU0NSSVBUICs9IEVOQUJMRV9YQkw9MQogfQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVf
RklMVEVSUz0xKSB7CisgICAgU09VUkNFUyArPSBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVCbGVuZC5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbXBvbmVudFRyYW5zZmVyLmNwcCBcCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwIFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VBbHBoYS5jcHAgXAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdy
YXBoaWMuY3BwCisKKyAgICBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFCTEVfRklM
VEVSUz0xCit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XTUw9MSkgewogICAgIFNPVVJD
RVMgKz0gXAogICAgICAgICB3bWwvV01MQUVsZW1lbnQuY3BwIFwKQEAgLTE4NDEsMTMgKzE4NTMs
NiBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgc3ZnL2FuaW1h
dGlvbi9TTUlMVGltZS5jcHAgXAogICAgICAgICBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcCBcCiAgICAgICAgIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIFwKLSAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBcCi0gICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAgXAotICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwIFwKLSAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAgXAotICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgXAotICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBcCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDQ0MjUyKQorKysg
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQCBFTkFCTEVfM0RfUkVOREVSSU5HID0gOwogRU5BQkxFX0NI
QU5ORUxfTUVTU0FHSU5HID0gOwogRU5BQkxFX0RBVEFCQVNFID0gRU5BQkxFX0RBVEFCQVNFOwog
RU5BQkxFX0RPTV9TVE9SQUdFID0gRU5BQkxFX0RPTV9TVE9SQUdFOworRU5BQkxFX0ZJTFRFUlMg
PSA7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSA7CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxF
X0lDT05EQVRBQkFTRTsKIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSID0gRU5BQkxFX0pBVkFT
Q1JJUFRfREVCVUdHRVI7CkBAIC00OCw0ICs0OSw0IEBAIEVOQUJMRV9XT1JLRVJTID0gRU5BQkxF
X1dPUktFUlM7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVO
QUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQo
RU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FU
SU9OUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRI
KSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJM
RV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFC
TEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19B
TklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJ
TkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkg
JChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dNTCkgJChFTkFCTEVf
V09SS0VSUykgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL0RPTS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NLm1tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVFbGVt
ZW50Q2xhc3NNYXAoKQogICAgIGFkZEVsZW1lbnRDbGFzcyhTVkdOYW1lczo6ZGVmc1RhZywgW0RP
TVNWR0RlZnNFbGVtZW50IGNsYXNzXSk7CiAgICAgYWRkRWxlbWVudENsYXNzKFNWR05hbWVzOjpk
ZXNjVGFnLCBbRE9NU1ZHRGVzY0VsZW1lbnQgY2xhc3NdKTsKICAgICBhZGRFbGVtZW50Q2xhc3Mo
U1ZHTmFtZXM6OmVsbGlwc2VUYWcsIFtET01TVkdFbGxpcHNlRWxlbWVudCBjbGFzc10pOwotI2lm
IEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoRklMVEVSUykKICAgICBhZGRFbGVtZW50
Q2xhc3MoU1ZHTmFtZXM6OmZlQmxlbmRUYWcsIFtET01TVkdGRUJsZW5kRWxlbWVudCBjbGFzc10p
OwogICAgIGFkZEVsZW1lbnRDbGFzcyhTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZywgW0RPTVNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50IGNsYXNzXSk7CiAgICAgYWRkRWxlbWVudENsYXNzKFNWR05h
bWVzOjpmZUNvbXBvbmVudFRyYW5zZmVyVGFnLCBbRE9NU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVs
ZW1lbnQgY2xhc3NdKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAJKHJldmlzaW9u
IDQ0MjUyKQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBib29sIGlzU1ZHMTBGZWF0dXJlKGNvbnN0IFN0
cmluZyAKICAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoRmVhdHVyZVNldCwgc3ZnRmVhdHVyZXMsICgpKTsKICAgICBpZiAoIWluaXRp
YWxpemVkKSB7Ci0jaWYgRU5BQkxFKFNWR19VU0UpICYmIEVOQUJMRShTVkdfRk9SRUlHTl9PQkpF
Q1QpICYmIEVOQUJMRShTVkdfRklMVEVSKSAmJiBFTkFCTEUoU1ZHX0ZPTlRTKQorI2lmIEVOQUJM
RShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JKRUNUKSAmJiBFTkFCTEUoRklMVEVS
UykgJiYgRU5BQkxFKFNWR19GT05UUykKICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAi
c3ZnIik7CiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgInN2Zy5zdGF0aWMiKTsKICNl
bmRpZgpAQCAtODQsNyArODQsNyBAQCBzdGF0aWMgYm9vbCBpc1NWRzEwRmVhdHVyZShjb25zdCBT
dHJpbmcgCiAvLyAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgInN2Zy5keW5hbWljIik7CiAv
LyAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgInN2Zy5kb20uYW5pbWF0aW9uIik7CiAvLyAg
ICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgInN2Zy5kb20uZHluYW1pYyIpOwotI2lmIEVOQUJM
RShTVkdfVVNFKSAmJiBFTkFCTEUoU1ZHX0ZPUkVJR05fT0JKRUNUKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUikgJiYgRU5BQkxFKFNWR19GT05UUykKKyNpZiBFTkFCTEUoU1ZHX1VTRSkgJiYgRU5BQkxF
KFNWR19GT1JFSUdOX09CSkVDVCkgJiYgRU5BQkxFKEZJTFRFUlMpICYmIEVOQUJMRShTVkdfRk9O
VFMpCiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgImRvbSIpOwogICAgICAgICBhZGRT
dHJpbmcoc3ZnRmVhdHVyZXMsICJkb20uc3ZnIik7CiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0
dXJlcywgImRvbS5zdmcuc3RhdGljIik7CkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGJvb2wg
aXNTVkcxMUZlYXR1cmUoY29uc3QgU3RyaW5nIAogICAgICAgICAvLyBTYWRseSwgd2UgY2Fubm90
IGNsYWltIHRvIGltcGxlbWVudCBhbnkgb2YgdGhlIFNWRyAxLjEgZ2VuZXJpYyBmZWF0dXJlIHNl
dHMKICAgICAgICAgLy8gbGFjayBvZiBGb250IGFuZCBGaWx0ZXIgc3VwcG9ydC4KICAgICAgICAg
Ly8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0ODAKLSNpZiBFTkFC
TEUoU1ZHX1VTRSkgJiYgRU5BQkxFKFNWR19GT1JFSUdOX09CSkVDVCkgJiYgRU5BQkxFKFNWR19G
SUxURVIpICYmIEVOQUJMRShTVkdfRk9OVFMpCisjaWYgRU5BQkxFKFNWR19VU0UpICYmIEVOQUJM
RShTVkdfRk9SRUlHTl9PQkpFQ1QpICYmIEVOQUJMRShGSUxURVJTKSAmJiBFTkFCTEUoU1ZHX0ZP
TlRTKQogICAgICAgICBhZGRTdHJpbmcoc3ZnRmVhdHVyZXMsICJTVkciKTsKICAgICAgICAgYWRk
U3RyaW5nKHN2Z0ZlYXR1cmVzLCAiU1ZHRE9NIik7CiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0
dXJlcywgIlNWRy1zdGF0aWMiKTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdGF0aWMgYm9vbCBpc1NW
RzExRmVhdHVyZShjb25zdCBTdHJpbmcgCiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywg
IkNsaXAiKTsKICAgICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVzLCAiQmFzaWNDbGlwIik7CiAg
ICAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgIk1hc2siKTsKLSNpZiBFTkFCTEUoU1ZHX0ZJ
TFRFUikKKyNpZiBFTkFCTEUoRklMVEVSUykKIC8vICAgICAgYWRkU3RyaW5nKHN2Z0ZlYXR1cmVz
LCAiRmlsdGVyIik7CiAgICAgICAgIGFkZFN0cmluZyhzdmdGZWF0dXJlcywgIkJhc2ljRmlsdGVy
Iik7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00NTMsOSArNDUzLDggQEAg
bW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBTVkdUcmFuc2Zvcm1Db25zdHJ1Y3Rv
ciBTVkdUcmFuc2Zvcm07CiAgICAgICAgIGF0dHJpYnV0ZSBTVkdVbml0VHlwZXNDb25zdHJ1Y3Rv
ciBTVkdVbml0VHlwZXM7CiAvLyAgICAgIGF0dHJpYnV0ZSBTVkdab29tQW5kUGFuQ29uc3RydWN0
b3IgU1ZHWm9vbUFuZFBhbjsKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChFTkFCTEVfU1ZHX0ZJTFRF
UlMpICYmIEVOQUJMRV9TVkdfRklMVEVSUworI2lmIGRlZmluZWQoRU5BQkxFX0ZJTFRFUlMpICYm
IEVOQUJMRV9GSUxURVJTCiAgICAgICAgIGF0dHJpYnV0ZSBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudENvbnN0cnVjdG9yIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50OwogICAgICAgICBhdHRyaWJ1dGUgU1ZHRkVCbGVuZEVsZW1lbnRDb25zdHJ1Y3RvciBTVkdG
RUJsZW5kRWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
Q29uc3RydWN0b3IgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ7CkBAIC00NjUsNiArNDY0LDcgQEAg
bW9kdWxlIHdpbmRvdyB7CiAvLyAgICAgIGF0dHJpYnV0ZSBTVkdGRU1vcnBob2xvZ3lFbGVtZW50
Q29uc3RydWN0b3IgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDsKICAgICAgICAgYXR0cmlidXRlIFNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnRDb25zdHJ1Y3RvciBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50Owog
I2VuZGlmCisjZW5kaWYKIAogI2VuZGlmIC8vIGRlZmluZWQoTEFOR1VBR0VfSkFWQVNDUklQVCkK
IApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lm
IEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZFQmxlbmQuaCIKIAogI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCkBAIC03MSw0ICs3MSw0IEBAIHZvaWQgRkVCbGVuZDo6ZHVtcCgpCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAkocmV2aXNpb24gNDQyNTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIFNWR0ZFQmxlbmRfaAogI2RlZmluZSBTVkdG
RUJsZW5kX2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBF
TkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogI2luY2x1ZGUgIlNW
R1Jlc291cmNlRmlsdGVyLmgiCkBAIC02MSw2ICs2MSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8g
U1ZHRkVCbGVuZF9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b2xvck1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAi
RkVDb2xvck1hdHJpeC5oIgogCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKQEAgLTcx
LDQgKzcxLDQgQEAgdm9pZCBGRUNvbG9yTWF0cml4OjpkdW1wKCkKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQor
I2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgU1ZHRkVDb2xvck1hdHJpeF9oCiAjZGVm
aW5lIFNWR0ZFQ29sb3JNYXRyaXhfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgog
CiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKQEAgLTYxLDYgKzYxLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMp
CiAKICNlbmRpZiAvLyBTVkdGRUNvbG9yTWF0cml4X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJ
KHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGRUNvbXBvbmVudFRyYW5zZmVy
LmgiCiAKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtOTUsNCArOTUsNCBAQCB2
b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OmR1bXAoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYg
Ly8gRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgJKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyX2gKICNkZWZpbmUgU1ZHRkVDb21wb25lbnRUcmFuc2Zlcl9oCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKEZJTFRFUlMpCiAjaW5j
bHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAKICNpbmNsdWRlICJTVkdGRURpc3BsYWNlbWVudE1hcC5o
IgpAQCAtOTUsNiArOTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
KyNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZFQ29tcG9zaXRl
LmgiCiAKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtMTA3LDQgKzEwNyw0IEBA
IHZvaWQgRkVDb21wb3NpdGU6OmR1bXAoKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5B
QkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIs
NyBAQAogI2lmbmRlZiBTVkdGRUNvbXBvc2l0ZV9oCiAjZGVmaW5lIFNWR0ZFQ29tcG9zaXRlX2gK
IAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCkBAIC03OCw2ICs3OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQorI2VuZGlmIC8vIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHRkVDb21wb3Np
dGVfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Myw0ICs0Myw0IEBAIFRleHRTdHJlYW0m
IEZpbHRlckVmZmVjdDo6ZXh0ZXJuYWxSZXByZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
Ci0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8v
IEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDcgQEAKICNpZm5kZWYgRmlsdGVyRWZmZWN0X2gKICNkZWZpbmUgRmlsdGVyRWZmZWN0
X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5o
IgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC03Nyw2ICs3Nyw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShGSUxURVJT
KQogCiAjZW5kaWYgLy8gRmlsdGVyRWZmZWN0X2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAkocmV2aXNpb24gNDQyNTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoRklMVEVSUykK
ICNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Lmgi
CkBAIC01MSw0ICs1MSw0IEBAIHZvaWQgU291cmNlQWxwaGE6OmR1bXAoKQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCisjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24gNDQyNTIpCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMjAsNyArMjAsNyBAQAogI2lmbmRlZiBTb3VyY2VBbHBoYV9oCiAjZGVmaW5lIFNv
dXJjZUFscGhhX2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
ZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCkBAIC00Miw2ICs0Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB9OwogfSAvL25hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMpCiAKICNlbmRp
ZiAvLyBTb3VyY2VBbHBoYV9oCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlR3JhcGhpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKEZJTFRFUlMpCiAjaW5j
bHVkZSAiU291cmNlR3JhcGhpYy5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC01MSw0ICs1MSw0IEBAIHZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKyNlbmRpZiAvLyBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gNDQyNTIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVmIFNvdXJjZUdyYXBoaWNfaAogI2Rl
ZmluZSBTb3VyY2VHcmFocGljX2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCkBAIC00Myw2ICs0Myw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICB9OwogfSAvL25hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKEZJTFRFUlMp
CiAKICNlbmRpZiAvLyBTb3VyY2VHcmFwaGljX2gKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogCiBib29sIFJlbmRlclNWR0NvbnRh
aW5lcjo6c2VsZldpbGxQYWludCgpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKFNWR19GSUxURVJTKQor
I2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNvbnN0IFNWR1JlbmRlclN0eWxlKiBzdmdTdHlsZSA9
IHN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlciA9IGdl
dEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmZpbHRlcigpKTsKICAgICBpZiAoZmls
dGVyKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAko
cmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgogCi0jaWYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCiAjZW5kaWYKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlz
aW9uIDQ0MjUyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKIAotI2lmIEVOQUJMRShTVkdfRklMVEVSUykK
KyNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2Vu
ZGlmCiAKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmxheW91dCgpCiAK
IGJvb2wgUmVuZGVyU1ZHUm9vdDo6c2VsZldpbGxQYWludCgpIGNvbnN0CiB7Ci0jaWYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGNvbnN0IFNWR1JlbmRlclN0
eWxlKiBzdmdTdHlsZSA9IHN0eWxlKCktPnN2Z1N0eWxlKCk7CiAgICAgU1ZHUmVzb3VyY2VGaWx0
ZXIqIGZpbHRlciA9IGdldEZpbHRlckJ5SWQoZG9jdW1lbnQoKSwgc3ZnU3R5bGUtPmZpbHRlcigp
KTsKICAgICBpZiAoZmlsdGVyKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBTVkdSZW5kZXJC
YXNlOjptYXBMb2NhbFRvQ29udGFpbmVyKAogCiB2b2lkIFNWR1JlbmRlckJhc2U6OnByZXBhcmVU
b1JlbmRlclNWR0NvbnRlbnQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlck9iamVjdDo6UGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIFNWR1Jlc291
cmNlRmlsdGVyKiYgZmlsdGVyLCBTVkdSZXNvdXJjZUZpbHRlciogcm9vdEZpbHRlcikKIHsKLSNp
ZiAhRU5BQkxFKFNWR19GSUxURVJTKQorI2lmICFFTkFCTEUoRklMVEVSUykKICAgICBVTlVTRURf
UEFSQU0oZmlsdGVyKTsKICAgICBVTlVTRURfUEFSQU0ocm9vdEZpbHRlcik7CiAjZW5kaWYKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJTVkdDbwog
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5
KTsKICAgICB9CiAKLSNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKEZJTFRFUlMp
CiAgICAgQXRvbWljU3RyaW5nIGZpbHRlcklkKHN2Z1N0eWxlLT5maWx0ZXIoKSk7CiAjZW5kaWYK
IApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVy
U1ZHQ28KIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG9iamVjdC0+ZG9jdW1lbnQoKTsKIAot
I2lmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoRklMVEVSUykKICAgICBTVkdSZXNv
dXJjZUZpbHRlciogbmV3RmlsdGVyID0gZ2V0RmlsdGVyQnlJZChkb2N1bWVudCwgZmlsdGVySWQp
OwogICAgIGlmIChuZXdGaWx0ZXIgPT0gcm9vdEZpbHRlcikgewogICAgICAgICAvLyBDYXRjaCA8
dGV4dCBmaWx0ZXI9InVybCgjZm9vKSI+VGVzdDx0c3BhbiBmaWx0ZXI9InVybCgjZm9vKSI+MTIz
PC90c3Bhbj48L3RleHQ+LgpAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6
cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICAgICBTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBn
ZXRDbGlwcGVyQnlJZChkb2N1bWVudCwgY2xpcHBlcklkKTsKICAgICBTVkdSZXNvdXJjZU1hc2tl
ciogbWFza2VyID0gZ2V0TWFza2VyQnlJZChkb2N1bWVudCwgbWFza2VySWQpOwogCi0jaWYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsK
ICAgICAgICAgZmlsdGVyLT5hZGRDbGllbnQoc3R5bGVkRWxlbWVudCk7CiAgICAgICAgIGZpbHRl
ci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ28KIAog
dm9pZCBTVkdSZW5kZXJCYXNlOjpmaW5pc2hSZW5kZXJTVkdDb250ZW50KFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJPYmplY3Q6OlBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBTVkdSZXNvdXJjZUZpbHRlciomIGZpbHRlciwgR3JhcGhpY3NDb250
ZXh0KiBzYXZlZENvbnRleHQpCiB7Ci0jaWYgIUVOQUJMRShTVkdfRklMVEVSUykKKyNpZiAhRU5B
QkxFKEZJTFRFUlMpCiAgICAgVU5VU0VEX1BBUkFNKGJvdW5kaW5nQm94KTsKICAgICBVTlVTRURf
UEFSQU0oZmlsdGVyKTsKICAgICBVTlVTRURfUEFSQU0oc2F2ZWRDb250ZXh0KTsKQEAgLTE1MSw3
ICsxNTEsNyBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlCiAgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gb2JqZWN0LT5zdHlsZSgpOwogICAgIEFTU0VSVChz
dHlsZSk7CiAKLSNpZiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKEZJTFRFUlMpCiAg
ICAgaWYgKGZpbHRlcikgewogICAgICAgICBmaWx0ZXItPmFwcGx5RmlsdGVyKHBhaW50SW5mby5j
b250ZXh0LCBib3VuZGluZ0JveCk7CiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0ID0gc2F2ZWRD
b250ZXh0OwpAQCAtMjE2LDcgKzIxNiw3IEBAIEZsb2F0UmVjdCBTVkdSZW5kZXJCYXNlOjpjb21w
dXRlQ29udGFpbmUKIAogRmxvYXRSZWN0IFNWR1JlbmRlckJhc2U6OmZpbHRlckJvdW5kaW5nQm94
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7Ci0jaWYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2lmIEVOQUJMRShGSUxURVJTKQogICAgIFNWR1Jlc291cmNlRmlsdGVyKiBm
aWx0ZXIgPSBnZXRGaWx0ZXJCeUlkKG9iamVjdC0+ZG9jdW1lbnQoKSwgb2JqZWN0LT5zdHlsZSgp
LT5zdmdTdHlsZSgpLT5maWx0ZXIoKSk7CiAgICAgaWYgKGZpbHRlcikKICAgICAgICAgcmV0dXJu
IGZpbHRlci0+ZmlsdGVyQkJveEZvckl0ZW1CQm94KG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3go
KSk7CkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL0ZpbHRlci5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvRmlsdGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM2LDQgKzM2LDQgQEAgUGFzc1JlZlB0cjxGaWx0ZXI+IEZpbHRlcjo6Y3Jl
YXRlKEZpbHRlcgogCiB9IC8vbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL0ZpbHRlci5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL0ZpbHRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcu
aCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC00Miw1ICs0Miw1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24gNDQy
NTIpCisrKyBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNyArMjAsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0Lmgi
CkBAIC04Miw0ICs4Miw0IEBAIHZvaWQgRmlsdGVyQnVpbGRlcjo6Y2xlYXJFZmZlY3RzKCkKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJ
bmRleDogV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL0ZpbHRlckJ1aWxkZXIuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9GaWx0
ZXJCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKQEAgLTUxLDUgKzUxLDUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogfSAvL25hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVu
dFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmgJKHJldmlz
aW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdDb21w
b25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudF9oCiAjZGVmaW5lIFNWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIkZFQ29tcG9u
ZW50VHJhbnNmZXIuaCIKQEAgLTUzLDUgKzUzLDUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1T
VkcmU1ZHX0ZJTFRFUlMsIEdlbmVyYXRlQ29uc3RydWN0b3JdIFNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25h
bD1TVkcmRklMVEVSUywgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQgOiBTVkdFbGVtZW50IHsKICAgICAgICAgLy8gQ29tcG9uZW50IFRyYW5z
ZmVyIFR5cGVzCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRS
QU5TRkVSX1RZUEVfVU5LTk9XTiAgPSAwOwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBT
VkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX0lERU5USVRZID0gMTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
KyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUJsZW5k
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50LmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdG
RUJsZW5kRWxlbWVudF9oCiAjZGVmaW5lIFNWR0ZFQmxlbmRFbGVtZW50X2gKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJGRUJsZW5kLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRF
bGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlMsIEdlbmVyYXRlQ29uc3RydWN0
b3JdIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwKKyAgICBpbnRlcmZhY2UgW0NvbmRp
dGlvbmFsPVNWRyZGSUxURVJTLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdGRUJsZW5kRWxlbWVu
dCA6IFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICAg
ICAgLy8gQmxlbmQgTW9kZSBUeXBlcwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdf
RkVCTEVORF9NT0RFX1VOS05PV04gID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0
cml4RWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDQ0MjUyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdGRUNvbG9yTWF0cml4RWxlbWVudF9oCiAjZGVmaW5l
IFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRl
ICJGRUNvbG9yTWF0cml4LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmlkbAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcg
KzI1LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNW
RyZTVkdfRklMVEVSUywgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQgOiBTVkdFbGVtZW50LAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlMs
IEdlbmVyYXRlQ29uc3RydWN0b3JdIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgewogICAgICAgICAvLyBD
b2xvciBNYXRyaXggVHlwZXMKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09M
T1JNQVRSSVhfVFlQRV9VTktOT1dOICAgICAgICAgID0gMDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIgogCiAj
aW5jbHVkZSAiQXR0ci5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNp
Zm5kZWYgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnRfaAogI2RlZmluZSBTVkdGRUNvbXBv
bmVudFRyYW5zZmVyRWxlbWVudF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiRkVDb21wb25l
bnRUcmFuc2Zlci5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuaWRsCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19G
SUxURVJTXSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsCisgICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQgOiBTVkdFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmlu
ZyBpbjE7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaCIK
IAogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZH
RkVDb21wb3NpdGVFbGVtZW50X2gKICNkZWZpbmUgU1ZHRkVDb21wb3NpdGVFbGVtZW50X2gKIAot
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBA
QAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19G
SUxURVJTLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQgOiBTVkdF
bGVtZW50LAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlMsIEdlbmVyYXRl
Q29uc3RydWN0b3JdIFNWR0ZFQ29tcG9zaXRlRWxlbWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgICAgIC8vIENvbXBvc2l0ZSBPcGVy
YXRvcnMKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJB
VE9SX1VOS05PV04gICAgPSAwOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDcgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHJldmlzaW9uIDQ0MjUy
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50X2gKICNkZWZpbmUgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50X2gKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0
aW9uYWw9U1ZHJlNWR19GSUxURVJTXSBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBTVkdF
bGVtZW50LAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmlt
YXRlZFN0cmluZyBpbjE7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51
bWJlciBzdXJmYWNlU2NhbGU7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50
TWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmgiCiAKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUu
aCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5oCShyZXZp
c2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZuZGVmIFNWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudF9oCiAjZGVmaW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudF9oCiAK
LSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIKICNp
bmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuaWRsCShyZXZpc2lvbiA0
NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRl
cmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZTVkdfRklMVEVSUywgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0g
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50IDogU1ZHRWxlbWVudCwKKyAgICBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVNWRyZGSUxURVJTLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQgOiBTVkdFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMgeyAgICAKICAgICAgICAgLy8gQ2hhbm5lbCBTZWxlY3RvcnMKICAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfVU5LTk9XTiA9IDA7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3RhbnRMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFudExpZ2h0RWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUy
KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVEaXN0YW50TGlnaHRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRGlzdGFudExpZ2h0U291cmNlLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFu
dExpZ2h0RWxlbWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlz
dGFudExpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBACiAjaWZu
ZGVmIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudF9oCiAjZGVmaW5lIFNWR0ZFRGlzdGFudExpZ2h0
RWxlbWVudF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVMaWdodEVsZW1l
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzdGFu
dExpZ2h0RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXN0YW50
TGlnaHRFbGVtZW50LmlkbAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURp
c3RhbnRMaWdodEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAK
IG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRF
UlNdIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeworICAgIGludGVyZmFj
ZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFRGlzdGFudExpZ2h0RWxlbWVudCA6IFNW
R0VsZW1lbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIg
YXppbXV0aDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGVs
ZXZhdGlvbjsKICAgICB9OwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAkocmV2aXNp
b24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50LmgiCiAKICNpbmNsdWRlICJB
dHRyLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgJKHJldmlzaW9uIDQ0MjUyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyAr
MjMsNyBAQAogI2lmbmRlZiBTVkdGRUZsb29kRWxlbWVudF9oCiAjZGVmaW5lIFNWR0ZFRmxvb2RF
bGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJTVkdGRUZsb29kLmgiCiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRUZsb29kRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVGbG9vZEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJ
TFRFUlNdIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwKKyAgICBpbnRlcmZhY2UgW0Nv
bmRpdGlvbmFsPVNWRyZGSUxURVJTXSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1lbnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICB9OwogCkluZGV4OiBXZWJDb3Jl
L3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVGdW5jQUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZF
RnVuY0FFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVGdW5j
QUVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVGdW5jQUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNBRWxl
bWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHRkVGdW5jQUVs
ZW1lbnRfaAogI2RlZmluZSBTVkdGRUZ1bmNBRWxlbWVudF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAjaW5jbHVkZSAiU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0FFbGVtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNBRWxlbWVudC5pZGwJKHJldmlzaW9u
IDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQUVsZW1lbnQuaWRsCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNlIFtD
b25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlNdIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9u
ZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeworICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9
U1ZHJkZJTFRFUlNdIFNWR0ZFRnVuY0FFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQgewogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5j
cHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIK
IAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUZ1bmNCRWxlbWVudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmgJKHJldmlzaW9u
IDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdGRUZ1bmNCRWxlbWVudF9oCiAjZGVmaW5l
IFNWR0ZFRnVuY0JFbGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5jQkVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZFRnVuY0JFbGVtZW50LmlkbAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNCRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1
LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZT
VkdfRklMVEVSU10gU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uRWxlbWVudCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZH
RkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7CiAg
ICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmNwcAkocmV2aXNpb24gNDQy
NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQogI2luY2x1ZGUgIlNWR0ZFRnVuY0dFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY0dFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHRkVGdW5jR0VsZW1lbnQuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRUZ1bmNHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3
IEBACiAjaWZuZGVmIFNWR0ZFRnVuY0dFbGVtZW50X2gKICNkZWZpbmUgU1ZHRkVGdW5jR0VsZW1l
bnRfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdGRUZ1bmNHRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVG
dW5jR0VsZW1lbnQuaWRsCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVu
Y0dFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUg
c3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19GSUxURVJTXSBTVkdG
RUZ1bmNHRWxlbWVudCA6IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsKKyAg
ICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZGSUxURVJTXSBTVkdGRUZ1bmNHRWxlbWVudCA6
IFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IHsKICAgICB9OwogCiB9CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUv
c3ZnL1NWR0ZFRnVuY1JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAi
U1ZHRkVGdW5jUkVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29y
ZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdG
RUZ1bmNSRWxlbWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRnVu
Y1JFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZH
RkVGdW5jUkVsZW1lbnRfaAogI2RlZmluZSBTVkdGRUZ1bmNSRWxlbWVudF9oCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRnVuY1JFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZ1bmNSRWxlbWVudC5pZGwJ
KHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGdW5jUkVsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50
ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlNdIFNWR0ZFRnVuY1JFbGVtZW50IDog
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQgeworICAgIGludGVyZmFjZSBbQ29u
ZGl0aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFRnVuY1JFbGVtZW50IDogU1ZHQ29tcG9uZW50VHJh
bnNmZXJGdW5jdGlvbkVsZW1lbnQgewogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsy
Miw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIk1hcHBlZEF0dHJp
YnV0ZS5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHJldmlz
aW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50X2gKICNkZWZpbmUgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50X2gKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyAr
MjUsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZH
JlNWR19GSUxURVJTXSBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQgOiBTVkdFbGVtZW50LAorICAg
IGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyB7IAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOwog
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9u
WDsKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3
ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJTVkdGRUltYWdlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFSW1hZ2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5k
ZWYgU1ZHRkVJbWFnZUVsZW1lbnRfaAogI2RlZmluZSBTVkdGRUltYWdlRWxlbWVudF9oCiAKLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJT
VkdVUklSZWZlcmVuY2UuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5pZGwJKHJldmlz
aW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAgaW50ZXJmYWNl
IFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlNdIFNWR0ZFSW1hZ2VFbGVtZW50IDogU1ZHRWxl
bWVudCwKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZGSUxURVJTXSBTVkdGRUltYWdl
RWxlbWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1ZHVVJJUmVmZXJlbmNlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0xhbmdTcGFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTGlnaHRFbGVtZW50LmgiCiAKICNpbmNsdWRlICJNYXBw
ZWRBdHRyaWJ1dGUuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuaAkocmV2aXNpb24gNDQy
NTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIFNWR0ZFTGlnaHRFbGVtZW50X2gKICNkZWZpbmUgU1ZH
RkVMaWdodEVsZW1lbnRfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0VsZW1l
bnQuaCIKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgogCkBAIC01Niw1ICs1Niw1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNZXJnZUVsZW1lbnQuaCIKIAog
I2luY2x1ZGUgIlNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVNZXJnZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxl
bWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHRkVNZXJnZUVs
ZW1lbnRfaAogI2RlZmluZSBTVkdGRU1lcmdlRWxlbWVudF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAjaW5jbHVkZSAiU1ZHRkVNZXJnZS5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZUVsZW1lbnQuaWRsCShy
ZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmlkbAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVy
ZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19GSUxURVJTXSBTVkdGRU1lcmdlRWxlbWVudCA6IFNW
R0VsZW1lbnQsCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZHRkVN
ZXJnZUVsZW1lbnQgOiBTVkdFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cyB7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFTWVyZ2VOb2RlRWxlbWVudC5oIgog
CiAjaW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1l
cmdlTm9kZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9k
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdG
RU1lcmdlTm9kZUVsZW1lbnRfaAogI2RlZmluZSBTVkdGRU1lcmdlTm9kZUVsZW1lbnRfaAogCi0j
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuaWRsCShyZXZpc2lv
biA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZh
Y2UgW0NvbmRpdGlvbmFsPVNWRyZTVkdfRklMVEVSU10gU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDog
U1ZHRWxlbWVudCB7CisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZH
RkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVPZmZzZXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1
ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQor
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0
RWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVt
ZW50LmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHRkVPZmZzZXRF
bGVtZW50X2gKICNkZWZpbmUgU1ZHRkVPZmZzZXRFbGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVS
UykKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKICNp
bmNsdWRlICJTVkdGRU9mZnNldC5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5p
ZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAg
IGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJlNWR19GSUxURVJTXSBTVkdGRU9mZnNldEVsZW1l
bnQgOiBTVkdFbGVtZW50LAorICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlNd
IFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmlu
ZyBpbjE7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBkeDsK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1
MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOSw3ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRVBvaW50TGlnaHRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U1ZHUG9pbnRMaWdodFNvdXJjZS5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVBvaW50TGln
aHRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVQb2ludExpZ2h0RWxl
bWVudC5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogI2lmbmRlZiBTVkdGRVBv
aW50TGlnaHRFbGVtZW50X2gKICNkZWZpbmUgU1ZHRkVQb2ludExpZ2h0RWxlbWVudF9oCiAKLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVMaWdodEVsZW1lbnQuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaWRsCShy
ZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFUG9pbnRMaWdodEVsZW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcgewogCi0gICAg
aW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlNdIFNWR0ZFUG9pbnRMaWdodEVs
ZW1lbnQgOiBTVkdFbGVtZW50IHsKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZGSUxU
RVJTXSBTVkdGRVBvaW50TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB4OwogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNW
R0FuaW1hdGVkTnVtYmVyIHo7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBA
QAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAi
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiTWFwcGVkQXR0cmli
dXRlLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
CShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50X2gKICNkZWZpbmUgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgi
CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaWRs
CShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKIG1vZHVsZSBzdmcg
ewogCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmU1ZHX0ZJTFRFUlNdIFNWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVtZW50LAorICAgIGludGVyZmFjZSBbQ29uZGl0
aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQgOiBTVkdFbGVt
ZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHN1cmZhY2VTY2FsZTsKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3
ICsxOSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJTVkdGRVNwb3RMaWdodEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTcG90TGlnaHRT
b3VyY2UuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHJldmlzaW9u
IDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIwLDcgKzIwLDcgQEAKICNpZm5kZWYgU1ZHRkVTcG90TGlnaHRFbGVtZW50X2gK
ICNkZWZpbmUgU1ZHRkVTcG90TGlnaHRFbGVtZW50X2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJTVkdGRUxpZ2h0RWxlbWVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVTcG90TGlnaHRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRVNwb3RMaWdodEVsZW1lbnQuaWRsCShyZXZpc2lvbiA0NDI1MikKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFU3BvdExpZ2h0RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1
LDcgKzI1LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFs
PVNWRyZTVkdfRklMVEVSU10gU1ZHRkVTcG90TGlnaHRFbGVtZW50IDogU1ZHRWxlbWVudCB7Cisg
ICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZHRkVTcG90TGlnaHRFbGVt
ZW50IDogU1ZHRWxlbWVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRl
ZE51bWJlciB4OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIg
eTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHo7CkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZH
RkVUaWxlRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5oIgpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHRkVUaWxlRWxl
bWVudF9oCiAjZGVmaW5lIFNWR0ZFVGlsZUVsZW1lbnRfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQog
I2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogI2luY2x1
ZGUgIlNWR0ZFVGlsZS5oIgogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmlkbAkocmV2aXNp
b24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiBtb2R1bGUgc3ZnIHsKIAotICAgIGludGVyZmFjZSBb
Q29uZGl0aW9uYWw9U1ZHJlNWR19GSUxURVJTXSBTVkdGRVRpbGVFbGVtZW50IDogU1ZHRWxlbWVu
dCwKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZGSUxURVJTXSBTVkdGRVRpbGVFbGVt
ZW50IDogU1ZHRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7CiAgICAgfTsKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI1MikK
KysrIFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgiCiAKICNpbmNsdWRlICJN
YXBwZWRBdHRyaWJ1dGUuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVHVyYnVsZW5jZUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJ
KHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAjaWZuZGVmIFNWR0ZFVHVyYnVsZW5j
ZUVsZW1lbnRfaAogI2RlZmluZSBTVkdGRVR1cmJ1bGVuY2VFbGVtZW50X2gKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdGRVR1cmJ1bGVuY2UuaCIKICNpbmNsdWRlICJTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVU
dXJidWxlbmNlRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvU1ZH
RkVUdXJidWxlbmNlRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAK
IAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZTVkdfRklM
VEVSUywgR2VuZXJhdGVDb25zdHJ1Y3Rvcl0gU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0Vs
ZW1lbnQsCisgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSUywgR2VuZXJhdGVD
b25zdHJ1Y3Rvcl0gU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAKICAgICAgICAgLy8gVHVyYnVsZW5jZSBU
eXBlcwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VO
S05PV04gICAgICA9IDA7CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMsNyArMjMsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0ci5o
IgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAK
ICNpZm5kZWYgU1ZHRmlsdGVyRWxlbWVudF9oCiAjZGVmaW5lIFNWR0ZpbHRlckVsZW1lbnRfaAog
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAjaW5j
bHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2luY2x1ZGUgIlNWR0xhbmdT
cGFjZS5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAKIAogbW9kdWxlIHN2ZyB7CiAKLSAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFs
PVNWRyZTVkdfRklMVEVSU10gU1ZHRmlsdGVyRWxlbWVudCA6IFNWR0VsZW1lbnQsCisgICAgaW50
ZXJmYWNlIFtDb25kaXRpb25hbD1TVkcmRklMVEVSU10gU1ZHRmlsdGVyRWxlbWVudCA6IFNWR0Vs
ZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTVkdVUklSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLApJbmRl
eDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUg
IlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiAjaW5jbHVkZSAiTWFw
cGVkQXR0cmlidXRlLmgiCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXNfaAogI2RlZmluZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXNfaAog
Ci0jaWYgRU5BQkxFKFNWRykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgog
CkluZGV4OiBXZWJDb3JlL3N2Zy9zdmd0YWdzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L3N2Z3RhZ3MuaW4JKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvc3ZndGFncy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBkZWZpbml0aW9uX3NyYwogZGVmcwogZGVz
YwogZWxsaXBzZQotI2lmIEVOQUJMRV9TVkdfRklMVEVSUworI2lmIEVOQUJMRV9GSUxURVJTCiBm
ZUJsZW5kCiBmZUNvbG9yTWF0cml4CiBmZUNvbXBvbmVudFRyYW5zZmVyCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiA0NDI1MikKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1ZGUgIlNWR1Jl
bmRlclRyZWVBc1RleHQuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNl
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VG
aWx0ZXIuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNv
dXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIFNW
R1Jlc291cmNlRmlsdGVyX2gKICNkZWZpbmUgU1ZHUmVzb3VyY2VGaWx0ZXJfaAogCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQogI2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVy
RWZmZWN0LmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNl
RmlsdGVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJv
L1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xOCw3ICsxOCw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNl
RmlsdGVyQ2cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jl
c291cmNlRmlsdGVyQ2cuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAK
QEAgLTUwLDQgKzUwLDQgQEAgdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3Jh
cAogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZUZpbHRlckNnLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW0JKHJldmlzaW9uIDQ0MjUy
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAogI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCkBAIC0xNDAsNCArMTQwLDQgQEAgdm9pZCBTVkdS
ZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcAogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgRU5BQkxFKEZJ
TFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Rpc3RhbnRMaWdo
dFNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RGlzdGFudExpZ2h0U291cmNlLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdEaXN0YW50TGlnaHRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdEaXN0YW50TGlnaHRTb3VyY2VfaAogI2RlZmluZSBT
VkdEaXN0YW50TGlnaHRTb3VyY2VfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNW
R0xpZ2h0U291cmNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ4LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNlbmRpZiAvLyBTVkdEaXN0YW50TGlnaHRTb3VyY2Vf
aApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcg
KzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2lu
Y2x1ZGUgIlNWR0ZFQ29udm9sdmVNYXRyaXguaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKQEAgLTE3NSw0ICsxNzUsNCBA
QCBUZXh0U3RyZWFtJiBGRUNvbnZvbHZlTWF0cml4OjpleHRlcm5hbFJlCiAKIH07IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAko
cmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBT
VkdGRUNvbnZvbHZlTWF0cml4X2gKICNkZWZpbmUgU1ZHRkVDb252b2x2ZU1hdHJpeF9oCiAKLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgpAQCAtOTAsNiArOTAsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFQ29udm9sdmVNYXRyaXhfaApJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VM
aWdodGluZy5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1
ZGUgIlNWR0xpZ2h0U291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaCIK
ICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCkBAIC0xMzMsNCArMTMzLDQgQEAgVGV4
dFN0cmVhbSYgRkVEaWZmdXNlTGlnaHRpbmc6OmV4dGVybmFsUgogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZp
c2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNl
TGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBTVkdG
RURpZmZ1c2VMaWdodGluZ19oCiAjZGVmaW5lIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nX2gKIAotI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVj
dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC03NCw2ICs3NCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHRkVEaWZmdXNlTGlnaHRpbmdfaApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3Bs
YWNlbWVudE1hcC5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcg
KzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2lu
Y2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFz
VGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC0xMTQsNCArMTE0LDQg
QEAgVGV4dFN0cmVhbSYgRkVEaXNwbGFjZW1lbnRNYXA6OmV4dGVybmFsUgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5o
CShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVE
aXNwbGFjZW1lbnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRl
ZiBTVkdGRURpc3BsYWNlbWVudE1hcF9oCiAjZGVmaW5lIFNWR0ZFRGlzcGxhY2VtZW50TWFwX2gK
IAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC02
OCw2ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHRkVEaXNw
bGFjZW1lbnRNYXBfaApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZs
b29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
Rmxvb2QuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFRmxv
b2QuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKQEAgLTc5LDQgKzc5LDQgQEAgVGV4dFN0cmVhbSYgRkVGbG9vZDo6ZXh0
ZXJuYWxSZXByZXNlbnRhdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRl
ZiBTVkdGRUZsb29kX2gKICNkZWZpbmUgU1ZHRkVGbG9vZF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRl
ICJTVkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtNTIsNiArNTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFRmxvb2RfaApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAJKHJldmlzaW9uIDQ0MjUy
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
Ci0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFR2F1c3NpYW5CbHVyLmgiCiAjaW5j
bHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCkBAIC03OSw0ICs3OSw0IEBAIFRleHRTdHJlYW0mIEZFR2F1c3NpYW5CbHVyOjpleHRlcm5h
bFJlcHIKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFu
Qmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVH
YXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDcg
QEAKICNpZm5kZWYgU1ZHRkVHYXVzc2lhbkJsdXJfaAogI2RlZmluZSBTVkdGRUdhdXNzaWFuQmx1
cl9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIApAQCAtNTIsNiArNTIsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFR2F1c3NpYW5CbHVyX2gKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24gNDQyNTIp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC04Miw0ICs4
Miw0IEBAIFRleHRTdHJlYW0mIEZFSW1hZ2U6OmV4dGVybmFsUmVwcmVzZW50YXQKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9uIDQ0MjUy
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgU1ZHRkVJbWFnZV9oCiAjZGVmaW5lIFNW
R0ZFSW1hZ2VfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VDbGllbnQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUhhbmRsZS5oIgpAQCAtNTQsNiArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAog
I2VuZGlmIC8vIFNWR0ZFSW1hZ2VfaApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcg
QEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUg
IlNWR0ZFTWVyZ2UuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKQEAgLTc2LDQgKzc2LDQgQEAgVGV4dFN0cmVhbSYgRkVN
ZXJnZTo6ZXh0ZXJuYWxSZXByZXNlbnRhdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBA
QAogI2lmbmRlZiBTVkdGRU1lcmdlX2gKICNkZWZpbmUgU1ZHRkVNZXJnZV9oCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00OCw2ICs0OCw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHRkVNZXJnZV9oCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCShyZXZp
c2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9s
b2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNb3JwaG9sb2d5Lmgi
CiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNl
RmlsdGVyLmgiCkBAIC0xMDUsNCArMTA1LDQgQEAgVGV4dFN0cmVhbSYgRkVNb3JwaG9sb2d5Ojpl
eHRlcm5hbFJlcHJlcwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
TW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIs
NyBAQAogI2lmbmRlZiBTVkdGRU1vcnBob2xvZ3lfaAogI2RlZmluZSBTVkdGRU1vcnBob2xvZ3lf
aAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1
ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKQEAgLTYxLDYgKzYxLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAKICNlbmRpZiAvLyBTVkdGRU1vcnBob2xvZ3lfaApJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCkBAIC03OSw0ICs3
OSw0IEBAIFRleHRTdHJlYW0mIEZFT2Zmc2V0OjpleHRlcm5hbFJlcHJlc2VudGEKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkocmV2aXNpb24gNDQy
NTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgU1ZHRkVPZmZzZXRfaAogI2RlZmlu
ZSBTVkdGRU9mZnNldF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMp
CisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIApAQCAtNTIsNiArNTIsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFT2Zmc2V0X2gKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJM
aWdodGluZy5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsy
MSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNs
dWRlICJTVkdGRVNwZWN1bGFyTGlnaHRpbmcuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNU
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKQEAgLTE0NSw0ICsxNDUsNCBA
QCBUZXh0U3RyZWFtJiBGRVNwZWN1bGFyTGlnaHRpbmc6OmV4dGVybmFsCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcu
aAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
U3BlY3VsYXJMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZu
ZGVmIFNWR0ZFU3BlY3VsYXJMaWdodGluZ19oCiAjZGVmaW5lIFNWR0ZFU3BlY3VsYXJMaWdodGlu
Z19oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJG
aWx0ZXJFZmZlY3QuaCIKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgpAQCAtNzcsNiArNzcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2VuZGlmIC8vIFNWR0ZFU3BlY3VsYXJMaWdo
dGluZ19oCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3Bw
CShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
aWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCiAjaW5j
bHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCkBAIC01NCw1ICs1NCw1IEBAIFRleHRTdHJlYW0mIEZFVGlsZTo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGkKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgJ
KHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBTVkdGRVRpbGVf
aAogI2RlZmluZSBTVkdGRVRpbGVfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZp
bHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKQEAgLTQ0LDYg
KzQ0LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
LSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNlbmRpZiAvLyBTVkdGRVRpbGVfaApJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNl
LmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVHVyYnVsZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFVHVy
YnVsZW5jZS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJT
VkdSZXNvdXJjZUZpbHRlci5oIgpAQCAtMTQzLDQgKzE0Myw0IEBAIFRleHRTdHJlYW0mIEZFVHVy
YnVsZW5jZTo6ZXh0ZXJuYWxSZXByZXMKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJM
RShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgU1ZHRkVUdXJidWxlbmNlX2gKICNkZWZpbmUgU1ZHRkVU
dXJidWxlbmNlX2gKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCkBAIC03NSw2ICs3NSw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHRkVUdXJidWxlbmNlX2gKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckVmZmVjdC5jcHAJ
KHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJFZmZlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRl
ICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGaWx0ZXJFZmZl
Y3QuaCIKIAogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKQEAgLTEzMCw0ICsxMzAs
NCBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyRWZmZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJFZmZlY3QuaAkocmV2aXNp
b24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckVmZmVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIFNWR0ZpbHRlckVm
ZmVjdF9oCiAjZGVmaW5lIFNWR0ZpbHRlckVmZmVjdF9oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIApAQCAt
OTQsNiArOTQsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zCiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykK
IAogI2VuZGlmIC8vIFNWR0ZpbHRlckVmZmVjdF9oCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNwcAkocmV2aXNpb24gNDQyNTIpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjEsNyArMjEsNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaWdodFNvdXJjZS5oIgogI2luY2x1ZGUgIlNW
R1JlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJTVkdTcG90TGlnaHRTb3VyY2UuaCIKQEAg
LTYyLDQgKzYyLDQgQEAgVGV4dFN0cmVhbSYgRGlzdGFudExpZ2h0U291cmNlOjpleHRlcm5hbAog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5o
CShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGln
aHRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogI2lmbmRlZiBTVkdM
aWdodFNvdXJjZV9oCiAjZGVmaW5lIFNWR0xpZ2h0U291cmNlX2gKIAotI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVS
UykKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01Myw2ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiAjZW5kaWYgLy8gU1ZHTGln
aHRTb3VyY2VfaApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdQb2ludExp
Z2h0U291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdQb2ludExpZ2h0U291cmNlLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdQb2ludExpZ2h0U291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDcgKzIzLDcgQEAKICNpZm5kZWYgU1ZHUG9pbnRMaWdodFNvdXJjZV9oCiAjZGVmaW5lIFNWR1Bv
aW50TGlnaHRTb3VyY2VfaAogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJT
KQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZsb2F0UG9p
bnQzRC5oIgogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNlLmgiCiAKQEAgLTQ2LDYgKzQ2LDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAv
LyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNlbmRpZiAvLyBTVkdQb2ludExpZ2h0U291cmNlX2gK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHU3BvdExpZ2h0U291cmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdTcG90TGlnaHRT
b3VyY2UuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR1Nwb3RMaWdodFNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAj
aWZuZGVmIFNWR1Nwb3RMaWdodFNvdXJjZV9oCiAjZGVmaW5lIFNWR1Nwb3RMaWdodFNvdXJjZV9o
CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmxvYXRQb2ludDNELmgiCiAjaW5jbHVk
ZSAiU1ZHTGlnaHRTb3VyY2UuaCIKIApAQCAtNTcsNiArNTcsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKIAogI2VuZGlmIC8vIFNWR1Nwb3RMaWdodFNvdXJjZV9oCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCShyZXZpc2lvbiA0
NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cu
aAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksNyBAQAogICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgogKi8KIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykK
KyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogI2luY2x1ZGUgIkJsb2NrRXhj
ZXB0aW9ucy5oIgogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgiCkBAIC04NSw0ICs4
NSw0IEBAIENJRmlsdGVyKiBnZXROb3JtYWxNYXAoQ0lJbWFnZSogYnVtcE1hcCwKICAgICBGRV9R
VUFSVFpfTUFQX1RPX1NVQlJFR0lPTl9QUkVQQVJFKGJib3gpOyBcCiAgICAgRkVfUVVBUlRaX01B
UF9UT19TVUJSRUdJT05fQVBQTFkoY3JvcFJlY3QpOwogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBl
cnNDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NW
R0ZFSGVscGVyc0NnLm1tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIx
LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1
ZGUgIlNWR0ZFSGVscGVyc0NnLmgiCiAKICNpbmNsdWRlICJDb2xvci5oIgpAQCAtMTU5LDQgKzE1
OSw0IEBAIENJRmlsdGVyKiBnZXROb3JtYWxNYXAoQ0lJbWFnZSogYnVtcE1hcCwKIAogfQogCi0j
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVO
QUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9TVkdGaWx0ZXJFZmZlY3RDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZpbHRlckVmZmVjdENnLm1tCShyZXZpc2lvbiA0NDI1
MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRmlsdGVyRWZmZWN0Q2cu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShGSUxURVJTKQogCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCiAK
QEAgLTM0LDQgKzM0LDQgQEAgQ0lGaWx0ZXIqIFNWR0ZpbHRlckVmZmVjdDo6Z2V0Q0lGaWx0ZXIo
YwogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQXJpdGhtZXRpY0ZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLmgJKHJl
dmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRo
bWV0aWNGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0
IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiBAaW50ZXJm
YWNlIFdLQXJpdGhtZXRpY0ZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAqaW5wdXRJ
bWFnZTsKQEAgLTM4LDQgKzM4LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRobWV0
aWNGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLQXJpdGhtZXRpY0ZpbHRlci5tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tBcml0aG1ldGlj
RmlsdGVyLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIHN0YXRpYyBDSUtlcm5lbCAqYXJpdGht
ZXRpY0ZpbHRlciA9IG5pbDsKIApAQCAtOTEsNCArOTEsNCBAQCBzdGF0aWMgQ0lLZXJuZWwgKmFy
aXRobWV0aWNGaWx0ZXIgPSBuaWw7CiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdl
Lmg+CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIEBpbnRlcmZhY2UgV0tDb21wb25lbnRNZXJnZUZp
bHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAqaW5wdXRGdW5jUjsKQEAgLTM2LDQgKzM2
LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxU
RVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0NvbXBvbmVudE1l
cmdlRmlsdGVyLm0JKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9jZy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tDb21wb25lbnRNZXJnZUZp
bHRlci5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVO
QUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiBzdGF0aWMgQ0lLZXJuZWwgKmNvbXBvbmVu
dE1lcmdlRmlsdGVyID0gbmlsOwogCkBAIC02Nyw0ICs2Nyw0IEBAIHN0YXRpYyBDSUtlcm5lbCAq
Y29tcG9uZW50TWVyZ2VGaWx0ZXIgPSAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VM
aWdodGluZ0ZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3Jl
SW1hZ2UuaD4KIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogQGludGVyZmFjZSBXS0RpZmZ1c2VMaWdo
dGluZ0ZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSVNhbXBsZXIgKmlucHV0Tm9ybWFsTWFwOwpA
QCAtMzgsNCArMzgsNCBAQAogfQogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJT
KQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGlu
Z0ZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
V0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubQkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdf
RklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogc3RhdGljIENJ
S2VybmVsICpkaWZmdXNlTGlnaHRpbmdGaWx0ZXIgPSBuaWw7CiBAaW1wbGVtZW50YXRpb24gV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIKQEAgLTk0LDQgKzk0LDQgQEAgc3RhdGljIENJS2VybmVsICpk
aWZmdXNlTGlnaHRpbmdGaWx0ZXIgPQogCiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzY3JldGVU
cmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVJbWFnZS5oPgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiBAaW50ZXJmYWNlIFdLRGlzY3JldGVU
cmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKQEAg
LTM1LDQgKzM1LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc2NyZXRlVHJhbnNmZXJG
aWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dL
RGlzY3JldGVUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tE
aXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIHN0YXRpYyBD
SUtlcm5lbCAqZGlzY3JldGVUcmFuc2ZlckZpbHRlciA9IG5pbDsKIApAQCAtNzAsNCArNzAsNCBA
QCBzdGF0aWMgQ0lLZXJuZWwgKmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgCiAKIEBlbmQKIAotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmgJKHJldmlz
aW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNl
bWVudE1hcEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBv
cnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
U1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIEBpbnRl
cmZhY2UgV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIgOiBDSUZpbHRlciB7CiAgICAgQ0lJbWFnZSAg
KmlucHV0SW1hZ2U7CkBAIC0zNyw0ICszNyw0IEBACiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJM
RShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tE
aXNwbGFjZW1lbnRNYXBGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLm0JKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRl
ci5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMp
CiAKIHN0YXRpYyBDSUtlcm5lbCAqZGlzcGxhY2VtZW50TWFwRmlsdGVyID0gbmlsOwogCkBAIC03
OCw0ICs3OCw0IEBAIHN0YXRpYyBDSUtlcm5lbCAqZGlzcGxhY2VtZW50TWFwRmlsdGVyID0KIAog
QGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3RhbnRMaWdodEZpbHRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50TGlnaHRGaWx0ZXIuaAko
cmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlz
dGFudExpZ2h0RmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2lt
cG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogQGlu
dGVyZmFjZSBXS0Rpc3RhbnRMaWdodEZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAq
IGlucHV0Tm9ybWFsTWFwOwpAQCAtMzMsNCArMzMsNCBAQAogfQogQGVuZAogCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS0Rpc3RhbnRMaWdodEZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50TGlnaHRGaWx0ZXIubQkocmV2aXNpb24gNDQyNTIpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzdGFudExpZ2h0RmlsdGVyLm0J
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2lt
cG9ydCAiV0tEaXN0YW50TGlnaHRGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogc3Rh
dGljIENJS2VybmVsICpkaXN0YW50TGlnaHRGaWx0ZXIgPSBuaWw7CiAKQEAgLTcwLDQgKzcwLDQg
QEAgc3RhdGljIENJS2VybmVsICpkaXN0YW50TGlnaHRGaWx0ZXIgPSBuaQogCiBAZW5kCiAKLSNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLmgJKHJldmlzaW9u
IDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0IDxR
dWFydHpDb3JlL0NvcmVJbWFnZS5oPgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19G
SUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiBAaW50ZXJmYWNl
IFdLR2FtbWFUcmFuc2ZlckZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAqaW5wdXRJ
bWFnZTsKQEAgLTM2LDQgKzM2LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykg
JiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dhbW1hVHJh
bnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIHN0YXRpYyBDSUtl
cm5lbCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9IG5pbDsKIApAQCAtODIsNCArODIsNCBAQCBzdGF0
aWMgQ0lLZXJuZWwgKmdhbW1hVHJhbnNmZXJGaWx0ZXIgPSBuCiAKIEBlbmQKIAotI2VuZGlmIC8v
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLSWRlbnRpdHlUcmFu
c2ZlckZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIEBpbnRlcmZh
Y2UgV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgewogICAgIENJSW1hZ2UgICpp
bnB1dEltYWdlOwpAQCAtMzMsNCArMzMsNCBAQAogCiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5B
QkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLSWRl
bnRpdHlUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDQ0MjUyKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgi
CiAjaW1wb3J0ICJXS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVS
UykKIAogQGltcGxlbWVudGF0aW9uIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlcgogKyAodm9pZClp
bml0aWFsaXplCkBAIC01Nyw0ICs1Nyw0IEBACiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tMaW5l
YXJUcmFuc2ZlckZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiA0NDI1MikKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29y
ZUltYWdlLmg+CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIEBpbnRlcmZhY2UgV0tMaW5lYXJUcmFu
c2ZlckZpbHRlciA6IENJRmlsdGVyIHsKICAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKQEAgLTM1
LDQgKzM1LDQgQEAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNW
R19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0xpbmVhclRyYW5zZmVyRmlsdGVy
Lm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0xpbmVh
clRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9XS0xpbmVhclRyYW5zZmVyRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tMaW5lYXJUcmFu
c2ZlckZpbHRlci5oIgogCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQor
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogCiBzdGF0aWMgQ0lLZXJuZWwgKmxp
bmVhclRyYW5zZmVyRmlsdGVyID0gbmlsOwogCkBAIC03Nyw0ICs3Nyw0IEBAIHN0YXRpYyBDSUtl
cm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSAKIAogQGVuZAogCi0jZW5kaWYgLy8gRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS05v
cm1hbE1hcEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tOb3JtYWxNYXBGaWx0ZXIuaAkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmlsdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDcgKzI1LDcgQEAKIAogI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KIAot
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKIAogQGludGVyZmFjZSBXS05vcm1hbE1hcEZpbHRlciA6IENJRmls
dGVyIHsKICAgICBDSUltYWdlICppbnB1dEltYWdlOwpAQCAtMzMsNCArMzMsNCBAQAogfQogQGVu
ZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS05vcm1hbE1hcEZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tOb3JtYWxNYXBGaWx0ZXIubQkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmls
dGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiV0tOb3JtYWxNYXBGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAog
c3RhdGljIENJS2VybmVsICpjb252b2x2ZUtlcm5lbCA9IG5pbDsKIHN0YXRpYyBDSUtlcm5lbCAq
bm9ybWFsTWFwS2VybmVsID0gbmlsOwpAQCAtMTA2LDQgKzEwNiw0IEBAIHN0YXRpYyBDSUtlcm5l
bCAqbm9ybWFsTWFwS2VybmVsID0gbmlsOwogCiBAZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLUG9pbnRM
aWdodEZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvV0tQb2ludExpZ2h0RmlsdGVyLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS1BvaW50TGlnaHRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjUsNyArMjUsNyBAQAogCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgogCi0j
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQogCiBAaW50ZXJmYWNlIFdLUG9pbnRMaWdodEZpbHRlciA6IENJRmls
dGVyIHsKICAgICBDSUltYWdlICAqaW5wdXROb3JtYWxNYXA7CkBAIC0zNSw0ICszNSw0IEBACiAK
IEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tQb2ludExpZ2h0RmlsdGVyLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1BvaW50TGlnaHRGaWx0ZXIubQkocmV2
aXNpb24gNDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLUG9pbnRM
aWdodEZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldLUG9pbnRMaWdodEZpbHRlci5oIgogCi0jaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQogCiBzdGF0aWMgQ0lLZXJuZWwgKnBvaW50TGlnaHRGaWx0ZXIgPSBuaWw7CiAKQEAgLTcw
LDQgKzcwLDQgQEAgc3RhdGljIENJS2VybmVsICpwb2ludExpZ2h0RmlsdGVyID0gbmlsOwogCiBA
ZW5kCiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tTcGVjdWxhckxpZ2h0aW5nRmls
dGVyLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUs
NyBAQAogCiAjaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgogCi0jaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQogCiBAaW50ZXJmYWNlIFdLU3BlY3VsYXJMaWdodGluZ0ZpbHRlciA6IENJRmlsdGVyIHsK
ICAgICBDSVNhbXBsZXIgKmlucHV0Tm9ybWFsTWFwOwpAQCAtMzksNCArMzksNCBAQAogfQogQGVu
ZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRl
ci5tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
V0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVy
LmgiCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIHN0YXRpYyBDSUtlcm5lbCAqc3BlY3VsYXJMaWdo
dGluZ0ZpbHRlciA9IG5pbDsKIApAQCAtOTMsNCArOTMsNCBAQCBzdGF0aWMgQ0lLZXJuZWwgKnNw
ZWN1bGFyTGlnaHRpbmdGaWx0ZXIgCiAKIEBlbmQKIAotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tTcG90TGlnaHRG
aWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dL
U3BvdExpZ2h0RmlsdGVyLmgJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CiAKLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCiAKIEBpbnRlcmZhY2UgV0tTcG90TGlnaHRGaWx0ZXIgOiBDSUZpbHRlciB7CiAg
ICAgQ0lJbWFnZSAgKmlucHV0TGlnaHRWZWN0b3JzOwpAQCAtMzUsNCArMzUsNCBAQAogfQogQGVu
ZAogCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlm
IC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tTcG90TGlnaHRGaWx0ZXIubQkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0Rmls
dGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiV0tTcG90TGlnaHRGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVO
QUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAog
c3RhdGljIENJS2VybmVsICpzcG90TGlnaHRGaWx0ZXIgPSBuaWw7CiAKQEAgLTgxLDQgKzgxLDQg
QEAgc3RhdGljIENJS2VybmVsICpzcG90TGlnaHRGaWx0ZXIgPSBuaWw7CiAKIEBlbmQKIAotI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNlbmRpZiAvLyBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
NDQyNTIpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLVGFibGVUcmFuc2Zl
ckZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAKICNpbXBvcnQgPFF1
YXJ0ekNvcmUvQ29yZUltYWdlLmg+CiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJ
TFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKIEBpbnRlcmZhY2Ug
V0tUYWJsZVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgewogICAgIENJSW1hZ2UgKmlucHV0SW1h
Z2U7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLVGFibGVUcmFuc2Zl
ckZpbHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
V0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0JKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS1RhYmxlVHJhbnNmZXJGaWx0ZXIubQkod29ya2luZyBjb3B5
KQpAQCAtMjYsNyArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXS1RhYmxl
VHJhbnNmZXJGaWx0ZXIuaCIKIAotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklMVEVS
UykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKIAogc3RhdGljIENJS2VybmVs
ICp0YWJsZVRyYW5zZmVyRmlsdGVyID0gbmlsOwogCkBAIC03Myw0ICs3Myw0IEBAIHN0YXRpYyBD
SUtlcm5lbCAqdGFibGVUcmFuc2ZlckZpbHRlciA9IG4KIAogQGVuZAogCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvbWFjL1NWR1Jlc291
cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvbWFjL1NWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLmgJKHJldmlzaW9uIDQ0
MjUyKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvbWFjL1NWR1Jlc291cmNlRmlsdGVyUGxhdGZv
cm1EYXRhTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgU1ZH
UmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWNfaAogI2RlZmluZSBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hY19oCiAKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRF
UlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNpbmNsdWRlICJTVkdS
ZXNvdXJjZUZpbHRlci5oIgogCkBAIC02MCw2ICs2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB9OwogfQogCi0jZW5kaWYgLy8gI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfRklM
VEVSUykKKyNlbmRpZiAvLyAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAKICNl
bmRpZiAvLyBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hY19oCkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvbWFjL1NWR1Jlc291cmNlRmlsdGVyUGxh
dGZvcm1EYXRhTWFjLm1tCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L21hYy9TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoU1ZHX0ZJTFRFUlMpCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCiAKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5oIgog
I2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+CkBAIC0xMjUsNCArMTI1LDQgQEAgQ0lJ
bWFnZSogU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYQogCiB9CiAKLSNlbmRpZiAvLyAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19GSUxURVJTKQorI2VuZGlmIC8vICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0
L1NWR1Jlc291cmNlRmlsdGVyUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL3F0L1NWR1Jlc291cmNlRmlsdGVyUXQuY3BwCShyZXZpc2lvbiA0NDI1MikKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlRmlsdGVyUXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMSw3ICsyMSw3IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3NraWEvU1ZHUmVzb3VyY2VG
aWx0ZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9za2lhL1NW
R1Jlc291cmNlRmlsdGVyU2tpYS5jcHAJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3Mvc2tpYS9TVkdSZXNvdXJjZUZpbHRlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOSw3ICsyOSw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShTVkdfRklMVEVSUykKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNWR1Jlc291cmNl
RmlsdGVyLmgiCiAKQEAgLTUyLDQgKzUyLDQgQEAgdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBw
bHlGaWx0ZXIoR3JhcAogCiB9CiAKLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0ZJTFRFUlMpCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4
OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gNDQyNTIpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDExIEBACisyMDA5LTA1LTI4ICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgorCisgICAg
ICAgIEFkZGVkIG5ldyBidWlsZCBmbGFnIC0tZmlsdGVycy4gTW9yZSBkZXRhaWxzIGluIFdlYkNv
cmUvQ2hhbmdlTG9nLgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWc6CisKIDIwMDktMDUtMjcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21h
Yy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lv
biA0NDI1MikKKysrIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgRU5BQkxFXzNEX1JFTkRFUklO
RyA9IDsKIEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORyA9IDsKIEVOQUJMRV9EQVRBQkFTRSA9IEVO
QUJMRV9EQVRBQkFTRTsKIEVOQUJMRV9ET01fU1RPUkFHRSA9IEVOQUJMRV9ET01fU1RPUkFHRTsK
K0VOQUJMRV9GSUxURVJTID0gOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gOwogRU5BQkxFX0lDT05E
QVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UiA9IEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSOwpAQCAtNDgsNCArNDksNCBAQCBFTkFCTEVf
V09SS0VSUyA9IEVOQUJMRV9XT1JLRVJTOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
M0RfUkVOREVSSU5HKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVf
SUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElP
TikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1Mp
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJM
RV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJT
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0pBVkFTQ1JJUFRf
REVCVUdHRVIpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfU1ZH
KSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxF
X1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdf
Rk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJM
RV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsK
SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDQ0MjUyKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEgQEAKKzIwMDktMDUtMjggIERpcmsgU2NodWx6ZSAgPGty
aXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4u
CisKKyAgICAgICAgQWRkZWQgbmV3IGJ1aWxkIGZsYWcgLS1maWx0ZXJzLiBNb3JlIGRldGFpbHMg
aW4gV2ViQ29yZS9DaGFuZ2VMb2cuCisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdlYmtpdDoK
KwogMjAwOS0wNS0yOCAgT2xpdmllciBET0xFICA8b2RvbGVAcGxleW8uY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IE1hY2llai4KSW5kZXg6IFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CShyZXZp
c2lvbiA0NDI1MikKKysrIFdlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIG15ICRzdmdTdXBwb3J0ID0gMTsKIG15ICRzdmdBbmlt
YXRpb25TdXBwb3J0ID0gMTsKIG15ICRzdmdBc0ltYWdlU3VwcG9ydCA9IDE7CiBteSAkc3ZnRE9N
T2JqQ0JpbmRpbmdzU3VwcG9ydCA9IGlzQXBwbGVNYWNXZWJLaXQoKTsKLW15ICRzdmdGaWx0ZXJz
U3VwcG9ydCA9IDA7CitteSAkZmlsdGVyc1N1cHBvcnQgPSAwOwogbXkgJHN2Z0ZvbnRzU3VwcG9y
dCA9IDE7CiBteSAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQgPSAxOwogbXkgJHN2Z1VzZVN1cHBv
cnQgPSAxOwpAQCAtODMsNiArODMsNyBAQCBVc2FnZTogJHByb2dyYW1OYW1lIFtvcHRpb25zXSBb
b3B0aW9ucyB0CiAgIC0tW25vLV1jaGFubmVsLW1lc3NhZ2luZyAgICAgICAgICBUb2dnbGUgTWVz
c2FnZUNoYW5uZWwgYW5kIE1lc3NhZ2VQb3J0IHN1cHBvcnQgKGRlZmF1bHQ6ICRjaGFubmVsTWVz
c2FnaW5nU3VwcG9ydCkKICAgLS1bbm8tXWRhdGFiYXNlICAgICAgICAgICAgICAgICAgIFRvZ2ds
ZSBEYXRhYmFzZSBTdXBwb3J0IChkZWZhdWx0OiAkZGF0YWJhc2VTdXBwb3J0KQogICAtLVtuby1d
ZG9tLXN0b3JhZ2UgICAgICAgICAgICAgICAgVG9nZ2xlIERPTSBTdG9yYWdlIFN1cHBvcnQgKGRl
ZmF1bHQ6ICRkb21TdG9yYWdlU3VwcG9ydCkKKyAgLS1bbm8tXWZpbHRlcnMgICAgICAgICAgICAg
ICAgICAgIFRvZ2dsZSBGaWx0ZXJzIHN1cHBvcnQgKGRlZmF1bHQ6ICRmaWx0ZXJzU3VwcG9ydCkK
ICAgLS1bbm8tXWdlb2xvY2F0aW9uICAgICAgICAgICAgICAgIFRvZ2dsZSBHZW9sb2NhdGlvbiBz
dXBwb3J0IChkZWZhdWx0OiAkZ2VvbG9jYXRpb25TdXBwb3J0KQogICAtLVtuby1dZ25vbWVrZXly
aW5nICAgICAgICAgICAgICAgVG9nZ2xlIEdOT01FIEtleXJpbmcgU3VwcG9ydCAoR1RLKyBwb3J0
IG9ubHkpIChkZWZhdWx0OiAkZ25vbWVLZXlyaW5nU3VwcG9ydCkKICAgLS1bbm8tXWljb24tZGF0
YWJhc2UgICAgICAgICAgICAgIFRvZ2dsZSBJY29uIGRhdGFiYXNlIHN1cHBvcnQgKGRlZmF1bHQ6
ICRpY29uRGF0YWJhc2VTdXBwb3J0KQpAQCAtOTIsNyArOTMsNiBAQCBVc2FnZTogJHByb2dyYW1O
YW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAgIC0tW25vLV1zdmctYW5pbWF0aW9uICAgICAgICAg
ICAgICBUb2dnbGUgU1ZHIGFuaW1hdGlvbiBzdXBwb3J0IChkZWZhdWx0OiAkc3ZnQW5pbWF0aW9u
U3VwcG9ydCwgaW1wbGllcyBTVkcgU3VwcG9ydCkKICAgLS1bbm8tXXN2Zy1hcy1pbWFnZSAgICAg
ICAgICAgICAgIFRvZ2dsZSBTVkcgYXMgSW1hZ2Ugc3VwcG9ydCAoZGVmYXVsdDogJHN2Z0FzSW1h
Z2VTdXBwb3J0LCBpbXBsaWVzIFNWRyBTdXBwb3J0KQogICAtLVtuby1dc3ZnLWRvbS1vYmpjLWJp
bmRpbmdzICAgICAgVG9nZ2xlIFNWRyBET00gT2JqZWN0aXZlLUMgYmluZGluZ3Mgc3VwcG9ydCAo
ZGVmYXVsdDogJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsIGltcGxpZXMgU1ZHIFN1cHBvcnQp
Ci0gIC0tW25vLV1zdmctZmlsdGVycyAgICAgICAgICAgICAgICBUb2dnbGUgU1ZHIGZpbHRlcnMg
c3VwcG9ydCAoZGVmYXVsdDogJHN2Z0ZpbHRlcnNTdXBwb3J0LCBpbXBsaWVzIFNWRyBTdXBwb3J0
KQogICAtLVtuby1dc3ZnLWZvbnRzICAgICAgICAgICAgICAgICAgVG9nZ2xlIFNWRyBmb250cyBz
dXBwb3J0IChkZWZhdWx0OiAkc3ZnRm9udHNTdXBwb3J0LCBpbXBsaWVzIFNWRyBTdXBwb3J0KQog
ICAtLVtuby1dc3ZnLWZvcmVpZ24tb2JqZWN0ICAgICAgICAgVG9nZ2xlIFNWRyBmb3JlaWduIG9i
amVjdCBzdXBwb3J0IChkZWZhdWx0OiAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsIGltcGxpZXMg
U1ZHIFN1cHBvcnQpCiAgIC0tW25vLV1zdmctdXNlICAgICAgICAgICAgICAgICAgICBUb2dnbGUg
U1ZHIHVzZSBlbGVtZW50IHN1cHBvcnQgKGRlZmF1bHQ6ICRzdmdVc2VTdXBwb3J0LCBpbXBsaWVz
IFNWRyBTdXBwb3J0KQpAQCAtMTExLDYgKzExMSw3IEBAIEdldE9wdGlvbnMoCiAgICAgICAgICAg
ICdjaGFubmVsLW1lc3NhZ2luZyEnID0+IFwkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQsCiAgICAg
ICAgICAgICdkYXRhYmFzZSEnID0+IFwkZGF0YWJhc2VTdXBwb3J0LAogICAgICAgICAgICAnZG9t
LXN0b3JhZ2UhJyA9PiBcJGRvbVN0b3JhZ2VTdXBwb3J0LAorICAgICAgICAgICAnZmlsdGVycyEn
ID0+IFwkZmlsdGVyc1N1cHBvcnQsCiAgICAgICAgICAgICdnZW9sb2NhdGlvbiEnID0+IFwkZ2Vv
bG9jYXRpb25TdXBwb3J0LAogICAgICAgICAgICAnZ25vbWVrZXlyaW5nIScgPT4gXCRnbm9tZUtl
eXJpbmdTdXBwb3J0LAogICAgICAgICAgICAnaWNvbi1kYXRhYmFzZSEnID0+IFwkaWNvbkRhdGFi
YXNlU3VwcG9ydCwKQEAgLTEyMCw3ICsxMjEsNiBAQCBHZXRPcHRpb25zKAogICAgICAgICAgICAn
c3ZnLWFuaW1hdGlvbiEnID0+IFwkc3ZnQW5pbWF0aW9uU3VwcG9ydCwKICAgICAgICAgICAgJ3N2
Zy1hcy1pbWFnZSEnID0+IFwkc3ZnQXNJbWFnZVN1cHBvcnQsCiAgICAgICAgICAgICdzdmctZG9t
LW9iamMtYmluZGluZ3MhJyA9PiBcJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQsCi0gICAgICAg
ICAgICdzdmctZmlsdGVycyEnID0+IFwkc3ZnRmlsdGVyc1N1cHBvcnQsCiAgICAgICAgICAgICdz
dmctZm9udHMhJyA9PiBcJHN2Z0ZvbnRzU3VwcG9ydCwKICAgICAgICAgICAgJ3N2Zy1mb3JlaWdu
LW9iamVjdCEnID0+IFwkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQsCiAgICAgICAgICAgICdzdmct
dXNlIScgPT4gXCRzdmdVc2VTdXBwb3J0LApAQCAtMTMzLDcgKzEzMyw3IEBAIEdldE9wdGlvbnMo
CiApOwogCiAkc3ZnU3VwcG9ydCA9ICRzdmdTdXBwb3J0IHx8ICRzdmdBbmltYXRpb25TdXBwb3J0
IHx8ICRzdmdBc0ltYWdlU3VwcG9ydAotICAgIHx8ICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0
IHx8ICRzdmdGaWx0ZXJzU3VwcG9ydCB8fCAkc3ZnRm9udHNTdXBwb3J0CisgICAgfHwgJHN2Z0RP
TU9iakNCaW5kaW5nc1N1cHBvcnQgfHwgJHN2Z0ZvbnRzU3VwcG9ydAogICAgIHx8ICRzdmdGb3Jl
aWduT2JqZWN0U3VwcG9ydCB8fCAkc3ZnVXNlU3VwcG9ydDsKIAogaWYgKCRzaG93SGVscCkgewpA
QCAtMTgwLDYgKzE4MCw3IEBAIGlmIChpc0d0aygpKSB7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0
b3Rvb2xzRmxhZygkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQsICJjaGFubmVsLW1lc3NhZ2luZyIp
OwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGRhdGFiYXNlU3VwcG9ydCwgImRh
dGFiYXNlIik7CiAgICAgcHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkZG9tU3RvcmFnZVN1
cHBvcnQsICJkb20tc3RvcmFnZSIpOworICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWco
JGZpbHRlcnNTdXBwb3J0LCAiZmlsdGVycyIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29s
c0ZsYWcoJGdlb2xvY2F0aW9uU3VwcG9ydCwgImdlb2xvY2F0aW9uIik7CiAgICAgcHVzaCBAb3B0
aW9ucywgYXV0b3Rvb2xzRmxhZygkZ25vbWVLZXlyaW5nU3VwcG9ydCwgImdub21la2V5cmluZyIp
OwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJGljb25EYXRhYmFzZVN1cHBvcnQs
ICJpY29uLWRhdGFiYXNlIik7CkBAIC0xODgsNyArMTg5LDYgQEAgaWYgKGlzR3RrKCkpIHsKICAg
ICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdTdXBwb3J0LCAic3ZnIik7CiAgICAg
cHVzaCBAb3B0aW9ucywgYXV0b3Rvb2xzRmxhZygkc3ZnQW5pbWF0aW9uU3VwcG9ydCwgInN2Zy1h
bmltYXRpb24iKTsKICAgICBwdXNoIEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdBc0ltYWdl
U3VwcG9ydCwgInN2Zy1hcy1pbWFnZSIpOwotICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0Zs
YWcoJHN2Z0ZpbHRlcnNTdXBwb3J0LCAic3ZnLWZpbHRlcnMiKTsKICAgICBwdXNoIEBvcHRpb25z
LCBhdXRvdG9vbHNGbGFnKCRzdmdGb250c1N1cHBvcnQsICJzdmctZm9udHMiKTsKICAgICBwdXNo
IEBvcHRpb25zLCBhdXRvdG9vbHNGbGFnKCRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCwgInN2Zy1m
b3JlaWduLW9iamVjdCIpOwogICAgIHB1c2ggQG9wdGlvbnMsIGF1dG90b29sc0ZsYWcoJHN2Z1Vz
ZVN1cHBvcnQsICJzdmctdXNlLWVsZW1lbnQiKTsKQEAgLTIxMyw2ICsyMTMsNyBAQCBpZiAoaXNB
cHBsZU1hY1dlYktpdCgpKSB7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfQ0hB
Tk5FTF9NRVNTQUdJTkciLCAkY2hhbm5lbE1lc3NhZ2luZ1N1cHBvcnQpOwogICAgIHB1c2ggQG9w
dGlvbnMsIG9wdGlvbigiRU5BQkxFX0RBVEFCQVNFIiwgJGRhdGFiYXNlU3VwcG9ydCk7CiAgICAg
cHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfRE9NX1NUT1JBR0UiLCAkZG9tU3RvcmFnZVN1
cHBvcnQpOworICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0ZJTFRFUlMiLCAkZmls
dGVyc1N1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX0dFT0xPQ0FU
SU9OIiwgJGdlb2xvY2F0aW9uU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJF
TkFCTEVfSUNPTkRBVEFCQVNFIiwgJGljb25EYXRhYmFzZVN1cHBvcnQpOwogICAgIHB1c2ggQG9w
dGlvbnMsIG9wdGlvbigiRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIiLCAkamF2YVNjcmlwdERl
YnVnZ2VyU3VwcG9ydCk7CkBAIC0yMjEsNyArMjIyLDYgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQo
KSkgewogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxFX1NWR19BTklNQVRJT04iLCAk
c3ZnQW5pbWF0aW9uU3VwcG9ydCk7CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVf
U1ZHX0FTX0lNQUdFIiwgJHN2Z0FzSW1hZ2VTdXBwb3J0KTsKICAgICBwdXNoIEBvcHRpb25zLCBv
cHRpb24oIkVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MiLCAkc3ZnRE9NT2JqQ0JpbmRpbmdz
U3VwcG9ydCk7Ci0gICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfU1ZHX0ZJTFRFUlMi
LCAkc3ZnRmlsdGVyc1N1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlvbigiRU5BQkxF
X1NWR19GT05UUyIsICRzdmdGb250c1N1cHBvcnQpOwogICAgIHB1c2ggQG9wdGlvbnMsIG9wdGlv
bigiRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCIsICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCk7
CiAgICAgcHVzaCBAb3B0aW9ucywgb3B0aW9uKCJFTkFCTEVfU1ZHX1VTRSIsICRzdmdVc2VTdXBw
b3J0KTsKQEAgLTM0NywxMiArMzQ3LDExIEBAIGlmICgkc3ZnU3VwcG9ydCkgewogICAgIHByaW50
ICJcbiBOT1RFOiBXZWJLaXQgaGFzIGJlZW4gYnVpbHQgd2l0aCBTVkcgc3VwcG9ydCBlbmFibGVk
LlxuIjsKICAgICBwcmludCAiICRsYXVuY2hlck5hbWUgd2lsbCBoYXZlIFNWRyB2aWV3aW5nIGNh
cGFiaWxpdGllcy5cbiI7CiB9Ci1pZiAoJHN2Z0FuaW1hdGlvblN1cHBvcnQgb3IgJHN2Z0FzSW1h
Z2VTdXBwb3J0IG9yICRzdmdET01PYmpDQmluZGluZ3NTdXBwb3J0IG9yICRzdmdGaWx0ZXJzU3Vw
cG9ydCBvciAkc3ZnRm9udHNTdXBwb3J0IG9yICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCBvciAk
c3ZnVXNlU3VwcG9ydCkgeworaWYgKCRzdmdBbmltYXRpb25TdXBwb3J0IG9yICRzdmdBc0ltYWdl
U3VwcG9ydCBvciAkc3ZnRE9NT2JqQ0JpbmRpbmdzU3VwcG9ydCBvciAkc3ZnRm9udHNTdXBwb3J0
IG9yICRzdmdGb3JlaWduT2JqZWN0U3VwcG9ydCBvciAkc3ZnVXNlU3VwcG9ydCkgewogICAgIHBy
aW50ICIgWW91ciBidWlsZCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIChvcHRpb25hbCkgU1ZHIGZl
YXR1cmVzOiBcbiI7CiAgICAgcHJpbnQgIiAgKiBCYXNpYyBTVkcgYW5pbWF0aW9uLlxuIiBpZiAk
c3ZnQW5pbWF0aW9uU3VwcG9ydDsKICAgICBwcmludCAiICAqIFNWRyBhcyBpbWFnZS5cbiIgaWYg
JHN2Z0FzSW1hZ2VTdXBwb3J0OwogICAgIHByaW50ICIgICogU1ZHIERPTSBPYmplY3RpdmUtQyBi
aW5kaW5ncy5cbiIgaWYgJHN2Z0RPTU9iakNCaW5kaW5nc1N1cHBvcnQ7Ci0gICAgcHJpbnQgIiAg
KiBTVkcgZmlsdGVycy5cbiIgaWYgJHN2Z0ZpbHRlcnNTdXBwb3J0OwogICAgIHByaW50ICIgICog
U1ZHIGZvbnRzLlxuIiBpZiAkc3ZnRm9udHNTdXBwb3J0OwogICAgIHByaW50ICIgICogU1ZHIGZv
cmVpZ24gb2JqZWN0LlxuIiBpZiAkc3ZnRm9yZWlnbk9iamVjdFN1cHBvcnQ7CiAgICAgcHJpbnQg
IiAgKiBTVkcgPHVzZT4gc3VwcG9ydC5cbiIgaWYgJHN2Z1VzZVN1cHBvcnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30777</attachid>
            <date>2009-05-29 09:37:56 -0700</date>
            <delta_ts>2009-05-31 11:33:06 -0700</delta_ts>
            <desc>feFloos need input effect</desc>
            <filename>filter3.patch</filename>
            <type>text/plain</type>
            <size>5891</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDI2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDUtMjkgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkcg
ZmlsdGVyIGZlRmxvb2QgbmVlZHMgYW4gaW5wdXQgZWZmZWN0LiBUaGlzIGNoYW5nZQorICAgICAg
ICBoZWxwcyBjcmVhdGluZyB0ZXN0IGNhc2VzLCBvbmNlIGZpbHRlcnMgYXJlIGFjdGl2YXRlZC4K
KworICAgICAgICAqIHN2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUZsb29kRWxlbWVudDo6U1ZHRkVGbG9vZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxv
b2RFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmlkbDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFRmxvb2Q6OkZFRmxvb2QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6Y3JlYXRl
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmg6CisKIDIwMDkt
MDUtMjkgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgSmFuIEFsb256by4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDQ0MjUzKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsOCBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJM
RShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFRmxvb2RFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJB
dHRyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgog
CkBAIC0zNiw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRkVGbG9vZEVsZW1l
bnQ6OlNWR0ZFRmxvb2RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFn
TmFtZSwgZG9jKQorICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAgICAsIG1f
ZmlsdGVyRWZmZWN0KDApCiB7CiB9CkBAIC00Niw3ICs0NSwxMSBAQCBTVkdGRUZsb29kRWxlbWVu
dDo6flNWR0ZFRmxvb2RFbGVtZW50KCkKIAogdm9pZCBTVkdGRUZsb29kRWxlbWVudDo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQogewotICAgIFNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7Cisg
ICAgY29uc3QgU3RyaW5nJiB2YWx1ZSA9IGF0dHItPnZhbHVlKCk7CisgICAgaWYgKGF0dHItPm5h
bWUoKSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAgICBzZXRJbjFCYXNlVmFsdWUodmFsdWUp
OworICAgIGVsc2UKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAogU1ZHRmlsdGVyRWZmZWN0KiBTVkdG
RUZsb29kRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNv
bnN0CkBAIC01NywxMiArNjAsMTcgQEAgU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUZsb29kRWxlbWVu
dDo6ZmlsdAogCiBib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBi
dWlsZGVyKQogeworICAgIEZpbHRlckVmZmVjdCogaW5wdXQgPSBidWlsZGVyLT5nZXRFZmZlY3RC
eUlkKGluMSgpKTsKKworICAgIGlmKCFpbnB1dCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBmaWx0ZXJTdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKTsK
IAogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kQ29sb3Io
KTsKICAgICBmbG9hdCBvcGFjaXR5ID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZsb29kT3Bh
Y2l0eSgpOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUZsb29kOjpjcmVhdGUoY29s
b3IsIG9wYWNpdHkpKTsKKyAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFRmxvb2Q6OmNyZWF0
ZShpbnB1dCwgY29sb3IsIG9wYWNpdHkpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2aXNpb24gNDQyNTMpCisrKyBXZWJDb3JlL3N2
Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAj
ZGVmaW5lIFNWR0ZFRmxvb2RFbGVtZW50X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQotI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IgogI2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUKIHsKQEAgLTQwLDYgKzQw
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVy
Kik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElP
TlMoU1ZHRkVGbG9vZEVsZW1lbnQsIFNWR05hbWVzOjpmZUZsb29kVGFnU3RyaW5nLCBTVkdOYW1l
czo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQorCiAgICAgICAgIG11dGFibGUgUmVm
UHRyPEZFRmxvb2Q+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFRmxvb2RFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUZs
b29kRWxlbWVudC5pZGwJKHJldmlzaW9uIDQ0MjUzKQorKysgV2ViQ29yZS9zdmcvU1ZHRkVGbG9v
ZEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw4ICsyNSwxMCBAQAogCiBtb2R1bGUg
c3ZnIHsKIAotICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9U1ZHJkZJTFRFUlNdIFNWR0ZFRmxv
b2RFbGVtZW50IDogU1ZHRWxlbWVudCwKKyAgICBpbnRlcmZhY2UgW0NvbmRpdGlvbmFsPVNWRyZG
SUxURVJTLCBHZW5lcmF0ZUNvbnN0cnVjdG9yXSBTVkdGRUZsb29kRWxlbWVudCA6IFNWR0VsZW1l
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKLSAgICB9OwogCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyAgICAgIGluMTsKKworICAgIH07
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJ
KHJldmlzaW9uIDQ0MjUzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZs
b29kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTYgKzI4LDE3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRkVGbG9vZDo6RkVGbG9vZChjb25zdCBDb2xvciYgZmxvb2RDb2xvciwgY29u
c3QgZmxvYXQmIGZsb29kT3BhY2l0eSkKK0ZFRmxvb2Q6OkZFRmxvb2QoRmlsdGVyRWZmZWN0KiBp
biwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGNvbnN0IGZsb2F0JiBmbG9vZE9wYWNpdHkpCiAg
ICAgOiBGaWx0ZXJFZmZlY3QoKQogICAgICwgbV9mbG9vZENvbG9yKGZsb29kQ29sb3IpCiAgICAg
LCBtX2Zsb29kT3BhY2l0eShmbG9vZE9wYWNpdHkpCisgICAgLCBtX2luKGluKQogewogfQogCi1Q
YXNzUmVmUHRyPEZFRmxvb2Q+IEZFRmxvb2Q6OmNyZWF0ZShjb25zdCBDb2xvciYgZmxvb2RDb2xv
ciwgY29uc3QgZmxvYXQmIGZsb29kT3BhY2l0eSkKK1Bhc3NSZWZQdHI8RkVGbG9vZD4gRkVGbG9v
ZDo6Y3JlYXRlKEZpbHRlckVmZmVjdCogaW4sIGNvbnN0IENvbG9yJiBmbG9vZENvbG9yLCBjb25z
dCBmbG9hdCYgZmxvb2RPcGFjaXR5KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVGbG9v
ZChmbG9vZENvbG9yLCBmbG9vZE9wYWNpdHkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZF
Rmxvb2QoaW4sIGZsb29kQ29sb3IsIGZsb29kT3BhY2l0eSkpOwogfQogCiBDb2xvciBGRUZsb29k
OjpmbG9vZENvbG9yKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5oCShyZXZpc2lvbiA0NDI1MykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZFRmxvb2QgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFRmxvb2Q+IGNyZWF0
ZShjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0Jik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZFRmxvb2Q+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBDb2xvciYsIGNvbnN0IGZsb2F0
Jik7CiAKICAgICAgICAgQ29sb3IgZmxvb2RDb2xvcigpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dEZsb29kQ29sb3IoY29uc3QgQ29sb3IgJik7CkBAIC00NCw4ICs0NCw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICBGRUZsb29kKGNvbnN0
IENvbG9yJiwgY29uc3QgZmxvYXQmKTsKKyAgICAgICAgRkVGbG9vZChGaWx0ZXJFZmZlY3QqLCBj
b25zdCBDb2xvciYsIGNvbnN0IGZsb2F0Jik7CiAKKyAgICAgICAgUmVmUHRyPEZpbHRlckVmZmVj
dD4gbV9pbjsKICAgICAgICAgQ29sb3IgbV9mbG9vZENvbG9yOwogICAgICAgICBmbG9hdCBtX2Zs
b29kT3BhY2l0eTsKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30811</attachid>
            <date>2009-05-31 00:13:59 -0700</date>
            <delta_ts>2009-05-31 11:10:41 -0700</delta_ts>
            <desc>independent filter system</desc>
            <filename>filter-5.patch</filename>
            <type>text/plain</type>
            <size>48607</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODMgQEAKKzIwMDktMDUtMzEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIFJlcGxhY2Ug
YWxsIG9jY3VycmVuY2VzIG9mIFNWR1Jlc291cmNlRmlsdGVyIGJ5IEZpbHRlci4gVGhpcyBpcyB0
aGUgbGFzdCAKKyAgICAgICAgc3RlcCBmb3IgYSBTVkcgaW5kZXBlbmRlbnQgZmlsdGVyIHN5c3Rl
bS4gRXZlcnkgb3RoZXIgcGFydCBvZiBXZWJDb3JlIGNhbgorICAgICAgICB1c2UgdGhlIGZpbHRl
ciBzeXN0ZW0gYnkgY3JlYXRpbmcgYSBuZXcgRmlsdGVyIG9iamVjdC4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6YXBwbHkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRUNvbG9yTWF0cml4OjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29t
cG9uZW50VHJhbnNmZXI6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjph
cHBseSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmFwcGx5KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKiBzdmcvRmlsdGVy
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvRmlsdGVyLmg6IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
RGlmZnVzZUxpZ2h0aW5nOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVu
dE1hcDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjphcHBseSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5C
bHVyOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lh
bkJsdXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVNZXJnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjphcHBseSk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RU1vcnBob2xvZ3k6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6YXBwbHkpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
U3BlY3VsYXJMaWdodGluZzo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OmFwcGx5KToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaDoKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVU
dXJidWxlbmNlOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
dXJidWxlbmNlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OmZpbHRlckVmZmVjdFN1YlJlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmg6IEFkZGVkLgorCiAyMDA5LTA1LTMwICBLZXZpbiBPbGxpdmllciAg
PGtldmlub0B0aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3IgcGxhdGZv
cm1zIHdpdGhvdXQgcGx1Z2lucyBzdXBwb3J0LgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NDI5NSkK
KysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTIzNTksNiArMjM1
OSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cCBcCkBAIC0yNjI2LDggKzI2MjcsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
c3ZnL0NvbG9yRGlzdGFuY2UuY3BwIFwKIAlXZWJDb3JlL3N2Zy9Db2xvckRpc3RhbmNlLmggXAog
CVdlYkNvcmUvc3ZnL0VsZW1lbnRUaW1lQ29udHJvbC5oIFwKLQlXZWJDb3JlL3N2Zy9GaWx0ZXIu
Y3BwIFwKLQlXZWJDb3JlL3N2Zy9GaWx0ZXIuaCBcCiAJV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRl
ci5oIFwKIAlXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmNwcCBcCiAJV2ViQ29yZS9zdmcvR3Jh
ZGllbnRBdHRyaWJ1dGVzLmggXApAQCAtMjk1OSw2ICsyOTU4LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oIFwKIAlXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAgXAogCVdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmggXAorCVdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCisJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJFZmZlY3QuY3BwIFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckVm
ZmVjdC5oIFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291cmNlLmNw
cCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2lu
ZyBjb3B5KQpAQCAtMTg2Niw2ICsxODY2LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NW
Rz0xKSB7CiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Zy5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwIFwKICAg
ICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcCBcCisgICAgICAg
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgXAogICAgICAgICBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJFZmZlY3QuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHTGlnaHRTb3VyY2UuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzQ0LDkgKzc0NCw3IEBACiAJCTRFMTk1OTJDMEEzOURB
Q0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5oICovOyB9OwogCQk0RTE5NTkyRDBBMzlEQUNDMDAyMjBGRTUgLyog
TWVkaWFRdWVyeUV4cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RTE5NTkyNzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5jcHAgKi87
IH07CiAJCTRFMTk1OTJFMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RTE5NTkyODBBMzlEQUND
MDAyMjBGRTUgLyogTWVkaWFRdWVyeUV4cC5oICovOyB9OwotCQk1MEE1REY3NTBFMUExM0M5MDAw
QTAzQUUgLyogRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MEE1REY3MzBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyLmggKi87IH07CiAJCTUw
QTVERjc2MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1REY3NDBFMUExM0M5MDAwQTAzQUUg
LyogRmlsdGVyQnVpbGRlci5oICovOyB9OwotCQk1MEE1RTQ3MjBFMUFFRjNBMDAwQTAzQUUgLyog
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUwQTVFNDcxMEUxQUVGM0EwMDBBMDNBRSAvKiBGaWx0ZXIuY3BwICovOyB9OwogCQk1MTAxODQ2
OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAv
KiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk3LDYg
Kzk5NSw5IEBACiAJCTdBQjZGODg4MEZCOUQyNzEwMDgwNUQwMiAvKiBKU09OT2JqZWN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUI2Rjg4NjBGQjlE
MjcxMDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovOyB9OwogCQk3QUVEM0UwNTBGQkIxRUFBMDBE
MkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FFRDNFMDMwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3BlY3Rv
ckZyb250ZW5kLmNwcCAqLzsgfTsKIAkJN0FFRDNFMDYwRkJCMUVBQTAwRDJCMDNDIC8qIEluc3Bl
Y3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUVEM0UwNDBGQkIxRUFBMDBEMkIwM0MgLyogSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsg
fTsKKwkJODQ1RTcyRjgwRkQyNjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODQ1RTcyRjcwRkQyNjFFRTAwQTg3RDc5
IC8qIEZpbHRlci5oICovOyB9OworCQk4NDVFNzJGQjBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmls
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0
NUU3MkY5MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwICovOyB9OworCQk4NDVFNzJG
QzBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NDVFNzJGQTBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmls
dGVyLmggKi87IH07CiAJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFw
cGxpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0
OUY3Nzc1MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLzsgfTsKIAkJ
ODRBODFGM0EwRkM3REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRBODFGMzkwRkM3REZDQzAwOTU1
MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICovOyB9OwogCQk4NEE4MUYzRDBGQzdERkYwMDA5NTUz
MDAgLyogU291cmNlQWxwaGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODRBODFGM0IwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCAq
LzsgfTsKQEAgLTU3MTIsOSArNTcxMyw3IEBACiAJCTRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAv
KiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRF
MTk1OTI3MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEUxOTU5MjgwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlF
eHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFeHAuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTBBNURGNzMwRTFBMTNDOTAwMEEwM0FFIC8q
IEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWx0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTBBNURGNzQwRTFBMTNDOTAwMEEwM0FFIC8qIEZp
bHRlckJ1aWxkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsdGVyQnVp
bGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MEE1RTQ3MTBFMUFFRjNBMDAw
QTAzQUUgLyogRmlsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZpbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY3MEIwODYw
MkEwMDRBODI1RiAvKiBDYWNoZWRQYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhY2hlZFBhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwMTg0Njgw
QjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ2FjaGVkUGFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VEZXRhaWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01OTg5LDYgKzU5ODgsOSBAQAogCQk3QUI2Rjg4NjBGQjlEMjcx
MDA4MDVEMDIgLyogSlNPTk9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU09OT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRUQzRTAzMEZC
QjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBRUQzRTA0MEZCQjFFQUEwMEQyQjAzQyAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDVFNzJGNzBGRDI2MUVFMDBBODdE
NzkgLyogRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZpbHRlci5o
OyBwYXRoID0gZmlsdGVycy9GaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
ODQ1RTcyRjkwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGaWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4NDVFNzJGQTBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NDlGNzc3NTBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBs
aWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cm9rZVN0eWxlQXBwbGll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NEE4MUYzOTBGQzdERkNDMDA5NTUz
MDAgLyogRmlsdGVyQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGaWx0ZXJCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODRB
ODFGM0IwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNvdXJjZUFscGhhLmNwcDsgcGF0aCA9IGZpbHRlcnMvU291
cmNlQWxwaGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE5MTQsNiArMTE5
MTYsNyBAQAogCQlBNzVFOEI3RjBFMURFMkIwMDA3RjI0ODEgLyogZmlsdGVycyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJODQ1RTcyRjcwRkQyNjFFRTAw
QTg3RDc5IC8qIEZpbHRlci5oICovLAogCQkJCTg0QTgxRjNGMEZDN0UwMjcwMDk1NTMwMCAvKiBT
b3VyY2VHcmFwaGljLmNwcCAqLywKIAkJCQk4NEE4MUY0MDBGQzdFMDI3MDA5NTUzMDAgLyogU291
cmNlR3JhcGhpYy5oICovLAogCQkJCTg0QTgxRjNCMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VB
bHBoYS5jcHAgKi8sCkBAIC0xMjU5NCw4ICsxMjU5Nyw2IEBACiAJCQkJQjIyMjc3Q0MwRDAwQkYx
RjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuaCAqLywKIAkJCQlFNDE1RjE4MzBEOUExQTgzMDAz
M0NFOTcgLyogRWxlbWVudFRpbWVDb250cm9sLmggKi8sCiAJCQkJRTQxNUYxMEMwRDlBMDU4NzAw
MzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5pZGwgKi8sCi0JCQkJNTBBNUU0NzEwRTFBRUYz
QTAwMEEwM0FFIC8qIEZpbHRlci5jcHAgKi8sCi0JCQkJNTBBNURGNzMwRTFBMTNDOTAwMEEwM0FF
IC8qIEZpbHRlci5oICovLAogCQkJCTUwQTVERjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJC
dWlsZGVyLmggKi8sCiAJCQkJQjIyMjc3Q0QwRDAwQkYxRjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0
cmlidXRlcy5oICovLAogCQkJCUIyMjI3N0NFMEQwMEJGMUYwMDcxQjc4MiAvKiBMaW5lYXJHcmFk
aWVudEF0dHJpYnV0ZXMuaCAqLywKQEAgLTEzMDY3LDYgKzEzMDY4LDggQEAKIAkJQjI1NTk4OUMw
RDAwRDhCODAwQkI4MjVDIC8qIGZpbHRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTg0NUU3MkY5MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIu
Y3BwICovLAorCQkJCTg0NUU3MkZBMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCAqLywK
IAkJCQlCMjU1OTg5RDBEMDBEOEI4MDBCQjgyNUMgLyogY2cgKi8sCiAJCQkJQjI1NTk4RDcwRDAw
RDhCOTAwQkI4MjVDIC8qIFNWR0Rpc3RhbnRMaWdodFNvdXJjZS5oICovLAogCQkJCUIyNTU5OEUw
MEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGRUNvbnZvbHZlTWF0cml4LmNwcCAqLywKQEAgLTE1Njc0
LDcgKzE1Njc3LDYgQEAKIAkJCQlCQ0RCQjhBQzBFMDg4Q0E1MDBDNjBGRjYgLyogRmlsZUxpc3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEIzRjczMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lz
dGVtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjY5RjBFODFEQUVCMDBCMjU5NjUgLyogRmls
bExheWVyLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MEE1REY3NTBFMUExM0M5MDAwQTAzQUUgLyog
RmlsdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MEE1REY3NjBFMUExM0M5MDAwQTAzQUUgLyog
RmlsdGVyQnVpbGRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDRkYwNEYwQTE1NEYwOTAwMEE0
MjM0IC8qIEZpeGVkVGFibGVMYXlvdXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDczQkFBMEMz
OTlCMUYwMDBGNTk3OSAvKiBGbG9hdENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTY5
NzYsNiArMTY5NzgsOCBAQAogCQkJCTg0QTgxRjQyMEZDN0UwMjcwMDk1NTMwMCAvKiBTb3VyY2VH
cmFwaGljLmggaW4gSGVhZGVycyAqLywKIAkJCQkwOEM5MjUxQTBGQ0M3QzRBMDA0ODBERUMgLyog
RmlsdGVyRWZmZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODIzNDFDNjBGQ0YzQTk1MDBENzVC
RDYgLyogV01MU2VsZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQ1RTcyRjgwRkQy
NjFFRTAwQTg3RDc5IC8qIEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODQ1RTcyRkMwRkQy
NjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzcwOCw3ICsx
NzcxMiw2IEBACiAJCQkJNTE0QjNGNzYwQzcyMjA1NTAwMDUzMERGIC8qIEZpbGVTeXN0ZW1NYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYwMzAwQjBDQzQyNTEyMDBDOEFDMjUgLyogRmlsZVN5
c3RlbVBPU0lYLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNUVCNjlFMEU4MURBRUIwMEIyNTk2
NSAvKiBGaWxsTGF5ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTBBNUU0NzIwRTFBRUYzQTAw
MEEwM0FFIC8qIEZpbHRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOENGRjA0RDBBMTU0RjA5
MDAwQTQyMzQgLyogRml4ZWRUYWJsZUxheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1
MzU2ODBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMkUyN0M5RjBCMEYyQjA5MDBGMTdDN0IgLyogRmxvYXRQb2ludDNELmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTkwMDEsNiArMTkwMDQsNyBAQAogCQkJCTg0QTgxRjQxMEZDN0UwMjcwMDk1NTMw
MCAvKiBTb3VyY2VHcmFwaGljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4QzkyNTE5MEZDQzdD
NEEwMDQ4MERFQyAvKiBGaWx0ZXJFZmZlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDgyMzQx
QzUwRkNGM0E5NTAwRDc1QkQ2IC8qIFdNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJODQ1RTcyRkIwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVu
ZC5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQmxlbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5B
QkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRkVCbGVuZC5oIgogCi0jaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRkVCbGVuZDo6c2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5
cGUKICAgICBtX21vZGUgPSBtb2RlOwogfQogCi12b2lkIEZFQmxlbmQ6OmFwcGx5KFNWR1Jlc291
cmNlRmlsdGVyKikKK3ZvaWQgRkVCbGVuZDo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiA0
NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKIAotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisj
aW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEJsZW5kTW9kZVR5cGUgYmxlbmRNb2Rl
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUpOwogICAg
ICAgICAKLSAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2
b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZFQ29sb3JNYXRyaXguaCIKIAot
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEZFQ29sb3JNYXRyaXg6
OnNldFZhbHVlcyhjb25zdCBWZWN0CiAgICAgbV92YWx1ZXMgPSB2YWx1ZXM7CiB9CiAKLXZvaWQg
RkVDb2xvck1hdHJpeDo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQordm9pZCBGRUNvbG9yTWF0
cml4OjphcHBseShGaWx0ZXIqKQogewogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjUsNyArMjUsNyBAQAogI2lmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgogCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNs
dWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25z
dCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRWYWx1ZXMo
Y29uc3QgVmVjdG9yPGZsb2F0PiYpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBhcHBseShTVkdS
ZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2
b2lkIGR1bXAoKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCShyZXZp
c2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVO
QUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZFQ29tcG9uZW50VHJhbnNmZXIuaCIKIAotI2luY2x1
ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtODUsNyArODUsNyBAQCB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6
OnNldEFscGhhRnVuY3RpCiAgICAgbV9hbHBoYUZ1bmMgPSBmdW5jOwogfQogCi12b2lkIEZFQ29t
cG9uZW50VHJhbnNmZXI6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKK3ZvaWQgRkVDb21wb25l
bnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShy
ZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNs
dWRlICJGaWx0ZXJFZmZlY3QuaCIKIAogI2luY2x1ZGUgIlNWR0ZFRGlzcGxhY2VtZW50TWFwLmgi
Ci0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc5LDcgKzc5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0
aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRBbHBoYUZ1bmN0aW9u
KGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKICAgICAgICAgCi0gICAgICAgIHZv
aWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIq
KTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuY3BwCShyZXZpc2lv
biA0NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoRklMVEVS
UykKICNpbmNsdWRlICJGRUNvbXBvc2l0ZS5oIgogCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0
ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgRkVDb21wb3NpdGU6OnNldEs0KGZsb2F0IGs0KQogICAgIG1fazQg
PSBrNDsKIH0KIAotdm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQor
dm9pZCBGRUNvbXBvc2l0ZTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDQ0
Mjk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3Qu
aCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VG
aWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgazQoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRLNChmbG9hdCk7CiAgICAgICAgIAotICAgICAgICB2b2lk
IGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3
ZWJraXQub3JnPgorICoKKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEZpbHRlcl9oCisjZGVmaW5lIEZpbHRlcl9o
CisKKyNpZiBFTkFCTEUoRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNs
dWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiU3Ry
aW5nSGFzaC5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBBdG9taWNTdHJp
bmc7CisgICAgY2xhc3MgRmlsdGVyRWZmZWN0OworCisgICAgY2xhc3MgRmlsdGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RmlsdGVyPiB7CisgICAgcHVibGljOgorCisgICAgICAgIHZvaWQgc2V0U291
cmNlSW1hZ2UoUGFzc093blB0cjxJbWFnZT4gaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9Cisg
ICAgICAgIEltYWdlKiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmlsdGVyRWZmZWN0U3ViUmVnaW9uKEZpbHRlckVmZmVjdCop
ID0gMDsKKworICAgIHByaXZhdGU6CisKKyAgICAgICAgT3duUHRyPEltYWdlPiBtX2ltYWdlOwor
ICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxU
RVJTKQorCisjZW5kaWYgLy8gRmlsdGVyX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMiw5ICsyMiw5IEBACiAjZGVmaW5lIEZpbHRlckVmZmVjdF9oCiAKICNpZiBFTkFC
TEUoRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgi
CiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
QEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgRmls
dGVyOworCiAgICAgY2xhc3MgRmlsdGVyRWZmZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8RmlsdGVy
RWZmZWN0PiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5GaWx0ZXJFZmZlY3QoKTsK
QEAgLTU2LDcgKzU4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UoKSB7IHJldHVybiBtX2VmZmVjdEJ1ZmZlci5nZXQoKTsgfQogICAgICAg
ICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihJbWFnZUJ1ZmZlciogZWZmZWN0QnVmZmVyKSB7IG1fZWZm
ZWN0QnVmZmVyLnNldChlZmZlY3RCdWZmZXIpOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGFw
cGx5KFNWR1Jlc291cmNlRmlsdGVyKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXBwbHko
RmlsdGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpID0gMDsKIAogICAgICAg
ICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlQWxwaGEuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0
LDcgQEAKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0
ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNDEsNyArNDEsNyBA
QCBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUFscGhhOjplZmZlY3ROCiAgICAgcmV0dXJuIHNf
ZWZmZWN0TmFtZTsKIH0KIAotdm9pZCBTb3VyY2VBbHBoYTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0
ZXIqKQordm9pZCBTb3VyY2VBbHBoYTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgJKHJldmlz
aW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFs
cGhhLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICNpbmNsdWRlICJGaWx0ZXJF
ZmZlY3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU1ZHUmVz
b3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0
aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlZmZlY3ROYW1lKCk7CiAKLSAgICAgICAgdm9pZCBhcHBs
eShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGR1bXAoKTsKICAgICAKICAgICBwcml2YXRlOgpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkocmV2aXNp
b24gNDQyOTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAi
U1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIApAQCAtNDEsNyArNDEsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcm
IFNvdXJjZUdyYXBoaWM6OmVmZmVjCiAgICAgcmV0dXJuIHNfZWZmZWN0TmFtZTsKIH0KIAotdm9p
ZCBTb3VyY2VHcmFwaGljOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCit2b2lkIFNvdXJjZUdy
YXBoaWM6OmFwcGx5KEZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gNDQyOTUpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVy
LmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUs
NyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEF0
b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwogCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyLmNwcAkocmV2aXNpb24gNDQyOTUpCisr
KyBXZWJDb3JlL3N2Zy9GaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAK
LS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3Vp
bmJvYkBnbWFpbC5jb20+Ci0gICAgCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIkZpbHRlci5oIgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLUZpbHRlcjo6RmlsdGVyKEZpbHRlckVmZmVjdCogZWZmZWN0KQotICAg
IDogbV9lZmZlY3QoZWZmZWN0KQotewotfQotCi1QYXNzUmVmUHRyPEZpbHRlcj4gRmlsdGVyOjpj
cmVhdGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QpCi17IAotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RmlsdGVyKGVmZmVjdCkpOwotfQotCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvRmlsdGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHJldmlzaW9uIDQ0Mjk1KQor
KysgV2ViQ29yZS9zdmcvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDYgKzAsMCBAQAot
LyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggQWxleCBNYXRoZXdzIDxwb3NzZXNzZWRwZW5ndWlu
Ym9iQGdtYWlsLmNvbT4KLSAgICAKLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBGaWx0ZXJfaAotI2RlZmluZSBGaWx0ZXJf
aAotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LSAgICBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxGaWx0ZXI+IHsKLSAgICBwdWJs
aWM6ICAgIAotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWx0ZXI+IGNyZWF0ZShGaWx0ZXJF
ZmZlY3QqKTsKLSAgICAgICAgCi0gICAgcHJpdmF0ZToKLSAgICAgICAgRmlsdGVyKEZpbHRlckVm
ZmVjdCopOwotICAgIAotICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2VmZmVjdDsKLSAg
ICB9OwotICAgIAotfSAvL25hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKLSNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCShyZXZpc2lvbiA0NDI5
NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFQ29udm9sdmVNYXRyaXguaCIKLSNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUg
IlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM0LDcg
KzEzNCw3IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2VydmVBbHBoYSgKICAgICBt
X3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAotdm9pZCBGRUNvbnZvbHZlTWF0
cml4OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCit2b2lkIEZFQ29udm9sdmVNYXRyaXg6OmFw
cGx5KEZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVDb252b2x2ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw3ICs2OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVzZXJ2ZUFscGhhKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKIAotICAgICAgICB2b2lkIGFwcGx5KFNWR1Jlc291
cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
ZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpZmZ1c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5o
IgogI2luY2x1ZGUgIlNWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVy
VHJlZUFzVGV4dC5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAi
RmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTEzLDcgKzExMyw3IEBAIHZv
aWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKEwKICAgICBtX2xpZ2h0U291cmNl
ID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KFNWR1Jl
c291cmNlRmlsdGVyKikKK3ZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OmFwcGx5KEZpbHRlciopCiB7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGln
aHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
RGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAi
Q29sb3IuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBMaWdo
dFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJj
ZShMaWdodFNvdXJjZSopOwogCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAg
ICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMp
IGNvbnN0OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaXNwbGFjZW1lbnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaCIKICNpbmNsdWRlICJTVkdS
ZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNs
dWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NSw3ICs3NSw3IEBA
IHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICBtX3NjYWxlID0g
c2NhbGU7CiB9CiAKLXZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KFNWR1Jlc291cmNlRmls
dGVyKikKK3ZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OmFwcGx5KEZpbHRlciopCiB7CiB9CiAKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwLmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBA
CiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJj
ZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2Fs
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKIAotICAgICAg
ICB2b2lkIGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgYXBwbHkoRmls
dGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDggKzIzLDggQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJT
KQogI2luY2x1ZGUgIlNWR0ZFRmxvb2QuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKICNpbmNsdWRl
ICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgRkVGbG9vZDo6
c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb28KICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3Bh
Y2l0eTsKIH0KIAotdm9pZCBGRUZsb29kOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCit2b2lk
IEZFRmxvb2Q6OmFwcGx5KEZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsy
NCw4IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJD
b2xvci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgot
I2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGZsb29k
T3BhY2l0eSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CiAK
LSAgICAgICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGFw
cGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3Bw
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVH
YXVzc2lhbkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVHYXVzc2lhbkJsdXIu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblko
ZmwKICAgICBtX3kgPSB5OwogfQogCi12b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShTVkdSZXNv
dXJjZUZpbHRlciopCit2b2lkIEZFR2F1c3NpYW5CbHVyOjphcHBseShGaWx0ZXIqKQogewogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFu
Qmx1ci5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0
LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgZmxvYXQgc3RkRGV2aWF0aW9uWSgpIGNvbnN0OwogICAgICAgICB2b2lk
IHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwogCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAog
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFSW1hZ2Uu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgRkVJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1h
Z2UKICAgICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCi12b2lkIEZF
SW1hZ2U6OmFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKikKK3ZvaWQgRkVJbWFnZTo6YXBwbHkoRmls
dGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIu
aCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw3
ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2Uq
KTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKKyAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1l
cmdlLmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVNZXJnZS5oIgogI2lu
Y2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRl
ci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5
LDcgKzQ5LDcgQEAgdm9pZCBGRU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0bwogICAg
IG1fbWVyZ2VJbnB1dHMgPSBtZXJnZUlucHV0czsKIH0KIAotdm9pZCBGRU1lcmdlOjphcHBseShT
VkdSZXNvdXJjZUZpbHRlciopCit2b2lkIEZFTWVyZ2U6OmFwcGx5KEZpbHRlciopCiB7CiB9CiAK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCShyZXZpc2lv
biA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdSZXNv
dXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMo
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVy
RWZmZWN0Kj4mIG1lcmdlSW5wdXRzKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZH
UmVzb3VyY2VGaWx0ZXIqKTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAg
dm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0OwogCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQsNyArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQog
I2luY2x1ZGUgIlNWR0ZFTW9ycGhvbG9neS5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1Rl
eHQuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBGRU1vcnBo
b2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1c1k7CiB9
CiAKLXZvaWQgRkVNb3JwaG9sb2d5OjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCit2b2lkIEZF
TW9ycGhvbG9neTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiA0NDI5NSkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDcgKzI0LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmls
dGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDYsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHJhZGl1c1ko
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZsb2F0KTsKIAotICAgICAgICB2b2lk
IGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0LDcgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJTVkdGRU9mZnNldC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIK
LSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBGRU9mZnNldDo6c2V0
RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjphcHBseShT
VkdSZXNvdXJjZUZpbHRlciopCit2b2lkIEZFT2Zmc2V0OjphcHBseShGaWx0ZXIqKQogewogfQog
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZp
c2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCi0jaW5jbHVkZSAiU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxv
YXQgZHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXREeShmbG9hdCk7CiAKLSAgICAgICAgdm9p
ZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciop
OwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJl
dmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgotI2luY2x1ZGUgIlNWR1Jl
c291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjpzZXRMaWdo
dFNvdXJjZSgKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAKLXZvaWQgRkVT
cGVjdWxhckxpZ2h0aW5nOjphcHBseShTVkdSZXNvdXJjZUZpbHRlciopCit2b2lkIEZFU3BlY3Vs
YXJMaWdodGluZzo6YXBwbHkoRmlsdGVyKikKIHsKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lv
biA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxp
Z2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpbmNsdWRlICJDb2xv
ci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIlNWR0xpZ2h0U291cmNl
LmgiCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAotICAgICAgICB2b2lk
IGFwcGx5KFNWR1Jlc291cmNlRmlsdGVyKik7CisgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKIApJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIy
LDcgKzIyLDcgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRl
ICJTVkdGRVRpbGUuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCi0jaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKKyNpbmNsdWRlICJGaWx0ZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNyw3ICszNyw3IEBAIFBhc3NSZWZQdHI8RkVUaWxlPiBGRVRpbGU6
OmNyZWF0ZShGaWx0ZXIKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFVGlsZShpbikpOwogfQog
Ci12b2lkIEZFVGlsZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQordm9pZCBGRVRpbGU6OmFw
cGx5KEZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVRpbGUuaAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpZiBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
LSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZFVGlsZT4gY3Jl
YXRlKEZpbHRlckVmZmVjdCopOwogCi0gICAgICAgIHZvaWQgYXBwbHkoU1ZHUmVzb3VyY2VGaWx0
ZXIqKTsKKyAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7
CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYg
dHMpIGNvbnN0OwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVUdXJidWxlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5j
bHVkZSAiU1ZHRkVUdXJidWxlbmNlLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5o
IgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCisjaW5jbHVkZSAiRmlsdGVyLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgRkVUdXJidWxl
bmNlOjpzZXRTdGl0Y2hUaWxlcyhib29sIHMKICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwog
fQogCi12b2lkIEZFVHVyYnVsZW5jZTo6YXBwbHkoU1ZHUmVzb3VyY2VGaWx0ZXIqKQordm9pZCBG
RVR1cmJ1bGVuY2U6OmFwcGx5KEZpbHRlciopCiB7CiB9CiAKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAkocmV2aXNpb24gNDQyOTUpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJTVkdSZXNvdXJjZUZp
bHRlci5oIgorI2luY2x1ZGUgIkZpbHRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHN0aXRjaFRp
bGVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMoYm9vbCk7CiAKLSAgICAg
ICAgdm9pZCBhcHBseShTVkdSZXNvdXJjZUZpbHRlciopOworICAgICAgICB2b2lkIGFwcGx5KEZp
bHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJu
YWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDcgQEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgorICoKKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKKyNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTVkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBGbG9hdFJlY3Qm
IGl0ZW1Cb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9k
ZSwgYm9vbCBmaWx0ZXJCQm94TW9kZSkKKyAgICA6IEZpbHRlcigpCisgICAgLCBtX2l0ZW1Cb3go
aXRlbUJveCkKKyAgICAsIG1fZmlsdGVyUmVjdChmaWx0ZXJSZWN0KQorICAgICwgbV9lZmZlY3RC
Qm94TW9kZShlZmZlY3RCQm94TW9kZSkKKyAgICAsIG1fZmlsdGVyQkJveE1vZGUoZmlsdGVyQkJv
eE1vZGUpCit7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyOjpmaWx0ZXJFZmZlY3RTdWJSZWdpb24oRmls
dGVyRWZmZWN0KikKK3sKK30KKworUGFzc1JlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3Jl
YXRlKGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0
LCBib29sIGVmZmVjdEJCb3hNb2RlLCBib29sIGZpbHRlckJCb3hNb2RlKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgU1ZHRmlsdGVyKGl0ZW1Cb3gsIGZpbHRlclJlY3QsIGVmZmVjdEJCb3hN
b2RlLCBmaWx0ZXJCQm94TW9kZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQu
b3JnPgorICoKKyAqICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR0ZpbHRlcl9oCisjZGVmaW5lIFNWR0ZpbHRlcl9o
CisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKKyNpbmNsdWRlICJGaWx0ZXIu
aCIKKyNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNs
YXNzIFNWR0ZpbHRlciA6IHB1YmxpYyBGaWx0ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3Qg
RmxvYXRSZWN0JiwgYm9vbCwgYm9vbCk7CisKKyAgICAgICAgdm9pZCBmaWx0ZXJFZmZlY3RTdWJS
ZWdpb24oRmlsdGVyRWZmZWN0Kik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBTVkdGaWx0ZXIo
Y29uc3QgRmxvYXRSZWN0JiBpdGVtQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QsIGJv
b2wgaXRlbUJCb3hNb2RlLCBib29sIGZpbHRlckJCb3hNb2RlKTsKKworICAgICAgICBGbG9hdFJl
Y3QgbV9pdGVtQm94OworICAgICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWN0OworICAgICAgICBi
b29sIG1fZWZmZWN0QkJveE1vZGU7CisgICAgICAgIGJvb2wgbV9maWx0ZXJCQm94TW9kZTsKKyAg
ICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKKworI2VuZGlmIC8vIFNWR0ZpbHRlcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30820</attachid>
            <date>2009-05-31 15:25:02 -0700</date>
            <delta_ts>2009-05-31 16:30:47 -0700</delta_ts>
            <desc>SVG filter system without subRegions</desc>
            <filename>filter-8.patch</filename>
            <type>text/plain</type>
            <size>68438</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDI5NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAzIEBACisyMDA5LTA1LTMxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Vi
S2l0IG5lZWRzIGNyb3NzLXBsYXRmb3JtIGZpbHRlciBzeXN0ZW0KKyAgICAgICAgW2h0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTk5MV0KKworICAgICAgICBNYWtlIHVz
ZSBvZiB0aGUgbmV3IGZpbHRlciBzeXN0ZW0gaW4gV2ViQ29yZSBmb3IgU1ZHLiBEZWxldGVkIE1h
YyBiaW5kaW5ncworICAgICAgICBhbmQgcmVwbGFjZSBpdCBieSBhIHBsYXRmb3JtIGluZGVwZW5k
ZW50IGNvZGUuIENhbGN1bGF0aW9uIG9mIHN1YlJlZ2lvbnMKKyAgICAgICAgaXMgbWlzc2luZyBi
dXQgbmVlZGVkIGZvciBhIGZpcnN0IGZpbHRlciBlZmZlY3QuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6fkZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldFNvdXJjZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRl
clNWR0NvbnRlbnQpOgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWlsZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJCdWlsZGVyOjpsYXN0RWZmZWN0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNW
R0ZFQmxlbmRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50Ojpi
dWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29s
b3JNYXRyaXhFbGVtZW50OjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUNvbG9yTWF0cml4RWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21w
b3NpdGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6U1ZHRkVDb21wb3NpdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9z
aXRlRWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVGbG9vZEVsZW1lbnQ6OlNWR0ZFRmxvb2RFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRmxvb2RF
bGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50Lmg6CisgICAg
ICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
SW1hZ2VFbGVtZW50OjpTVkdGRUltYWdlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJ
bWFnZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNZXJnZUVsZW1lbnQ6OlNWR0ZFTWVyZ2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFTWVyZ2VFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OlNWR0ZFT2Zmc2V0RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVPZmZzZXRFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpidWlsZCk6CisgICAgICAgICogc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpTVkdGRVRpbGVFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OlNW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVUdXJidWxlbmNl
RWxlbWVudDo6YnVpbGQpOgorICAgICAgICAqIHN2Zy9TVkdGRVR1cmJ1bGVuY2VFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyRWxlbWVudDo6Y2FudmFzUmVzb3VyY2UpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0ZXMp
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
Y29udGV4dEVsZW1lbnQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6U1ZHUmVzb3VyY2VG
aWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OmFkZEZpbHRlckVm
ZmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVyQkJveEZv
ckl0ZW1CQm94KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJl
RmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjphcHBseUZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6ZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6ZmlsdGVyQm91bmRpbmdCb3gpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OnNldEZpbHRlckJvdW5kaW5nQm94
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjppdGVtQm91bmRpbmdCb3gp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OnNldEl0ZW1Cb3VuZGluZ0Jv
eCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YnVpbGRlcik6CisKIDIw
MDktMDUtMzEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOaWtvbGFzIFppbW1lcm1hbm4uCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDQ0Mjk2KQor
KysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMjM5OSw5ICsyMzk5
LDYgQEAgRkVBVFVSRV9ERUZJTkVTX0pBVkFTQ1JJUFQgKz0gRU5BQkxFX1NWRwogV0VCQ09SRV9D
U1NfUFJPUEVSVFlfTkFNRVMgKz0gJChXZWJDb3JlKS9jc3MvU1ZHQ1NTUHJvcGVydHlOYW1lcy5p
biAKIFdFQkNPUkVfQ1NTX1ZBTFVFX0tFWVdPUkRTICs9ICQoV2ViQ29yZSkvY3NzL1NWR0NTU1Zh
bHVlS2V5d29yZHMuaW4KIAotd2ViY29yZWd0a19jcHBmbGFncyArPSBcCi0JLUkkKHNyY2Rpcikv
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2Fpcm8KLQogd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwK
IAlEZXJpdmVkU291cmNlcy9KU1NWR0VsZW1lbnRXcmFwcGVyRmFjdG9yeS5jcHAgXAogCURlcml2
ZWRTb3VyY2VzL1NWR0VsZW1lbnRGYWN0b3J5LmNwcCBcCkBAIC0yOTY3LDEwICsyOTY0LDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR1Bv
aW50TGlnaHRTb3VyY2UuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdTcG90
TGlnaHRTb3VyY2UuaAogCi13ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAotCVdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCi0KLQogIyBTVkcgRmVhdHVy
ZXMKIGlmIEVOQUJMRV9TVkdfVVNFCiBGRUFUVVJFX0RFRklORVNfSkFWQVNDUklQVCArPSBFTkFC
TEVfU1ZHX1VTRT0xCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDQ0Mjk2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBy
bwkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw2IEBAIElOQ0xVREVQQVRIICs9IFwKICAg
ICAkJFBXRC9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzIFwKICAgICAkJFBXRC9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zIFwKICAgICAkJFBXRC9wbGF0Zm9ybS9ncmFwaGljcy9xdCBcCi0g
ICAgJCRQV0Qvc3ZnL2dyYXBoaWNzL3F0IFwKICAgICAkJFBXRC9wYWdlL3F0IFwKICAgICAkJFBX
RC8uLi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQgXAogCkBAIC0xOTAzLDkgKzE5MDIsNiBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgcmVuZGVyaW5nL1NWR1Jl
bmRlclN1cHBvcnQuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1NWR1Jvb3RJbmxpbmVCb3guY3Bw
CiAKLVNPVVJDRVMgKz0gXAotICAgICAgICBzdmcvZ3JhcGhpY3MvcXQvU1ZHUmVzb3VyY2VGaWx0
ZXJRdC5jcHAKLQogCiAgICAgICAgICMgR0VORVJBVE9SIDUtQzoKICAgICAgICAgc3ZnbmFtZXNf
YS5vdXRwdXQgPSAkJEdFTkVSQVRFRF9TT1VSQ0VTX0RJUi9TVkdOYW1lcy5jcHAKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgx
NCwzMCArMTQ4MTQsNiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbHRlcg0KLQkJ
CQkJTmFtZT0iY2ciDQotCQkJCQk+DQotCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXGdyYXBoaWNzXGNnXFNWR1Jlc291cmNlRmlsdGVyQ2cuY3BwIg0KLQkJCQkJCT4NCi0J
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm98V2luMzIi
DQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxU
b29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJ
CU5hbWU9IlJlbGVhc2VfQ2Fpcm98V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQk8
L0ZpbGU+DQotCQkJCTwvRmlsdGVyPg0KLQkJCQk8RmlsdGVyDQogCQkJCQlOYW1lPSJmaWx0ZXJz
Ig0KIAkJCQkJPg0KIAkJCQkJPEZpbGUNCkBAIC0xNDk5MywzOCArMTQ5NjksNiBAQAogCQkJCQkJ
Pg0KIAkJCQkJPC9GaWxlPg0KIAkJCQk8L0ZpbHRlcj4NCi0JCQkJPEZpbHRlcg0KLQkJCQkJTmFt
ZT0iY2Fpcm8iDQotCQkJCQk+DQotCQkJCQk8RmlsZQ0KLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
c3ZnXGdyYXBoaWNzXGNhaXJvXFNWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwIg0KLQkJCQkJCT4N
Ci0JCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQot
CQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJCQk+DQotCQkJCQkJCTxUb29s
DQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCQkvPg0KLQkJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJ
CQkJCQk+DQotCQkJCQkJCTxUb29sDQotCQkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0K
LQkJCQkJCQkvPg0KLQkJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQotCQkJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0KLQkJCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCQkJPg0KLQkJCQkJCQk8VG9vbA0KLQkJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQkJLz4NCi0JCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPg0KLQkJCQkJPC9GaWxlPg0KLQkJCQk8L0ZpbHRlcj4NCiAJCQk8L0ZpbHRlcj4N
CiAJCTwvRmlsdGVyPg0KIAkJPEZpbHRlcg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA0NDI5NikKKysrIFdlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzExLDcgKzMzMTEs
NiBAQAogCQlCMjM3QzhBODBEMzQ0RDExMDAxM0Y3MDcgLyogU1ZHRm9udERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMzdDOEE2MEQzNDREMTEw
MDEzRjcwNyAvKiBTVkdGb250RGF0YS5oICovOyB9OwogCQlCMjQwNTU2NTBCNUJFNjQwMDAyQTI4
QzAgLyogRE9NU1ZHRWxlbWVudEluc3RhbmNlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNDA1NTYzMEI1QkU2NDAwMDJBMjhDMCAvKiBE
T01TVkdFbGVtZW50SW5zdGFuY2VJbnRlcm5hbC5oICovOyB9OwogCQlCMjQwNTU2NjBCNUJFNjQw
MDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVudEluc3RhbmNlTGlzdEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjQwNTU2NDBCNUJFNjQwMDAy
QTI4QzAgLyogRE9NU1ZHRWxlbWVudEluc3RhbmNlTGlzdEludGVybmFsLmggKi87IH07Ci0JCUIy
NTU5OTM1MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNnLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4OTkwRDAwRDhCODAw
QkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyQ2cubW0gKi87IH07CiAJCUIyNTU5OTQwMEQwMEQ4
QkEwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QTYwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZFSGVs
cGVyc0NnLmggKi87IH07CiAJCUIyNTU5OTQxMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUhlbHBl
cnNDZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NTU5OEE3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLzsgfTsKIAkJQjI1
NTk5NDcwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdENnLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUQwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZpbHRlckVmZmVjdENnLm1tICovOyB9OwpAQCAtMzM4Niw4ICszMzg1LDYgQEAK
IAkJQjI1NTk5OTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0xpZ2h0U291cmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThGQTBEMDBEOEI5MDBC
QjgyNUMgLyogU1ZHTGlnaHRTb3VyY2UuaCAqLzsgfTsKIAkJQjI1NTk5OTUwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR1BvaW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEZCMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdQb2ludExp
Z2h0U291cmNlLmggKi87IH07CiAJCUIyNTU5OTk2MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdTcG90
TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5OEZDMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdTcG90TGlnaHRTb3VyY2UuaCAqLzsg
fTsKLQkJQjI1NTk5OTcwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZv
cm1EYXRhTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OThGRTBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURh
dGFNYWMuaCAqLzsgfTsKLQkJQjI1NTk5OTgwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNl
RmlsdGVyUGxhdGZvcm1EYXRhTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjI1NTk4RkYwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjLm1tICovOyB9OwogCQlCMjU1OTlBMzBEMDBEOEJBMDBCQjgyNUMg
LyogU1ZHSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk5MEIwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ltYWdlLmNwcCAqLzsgfTsKIAkJ
QjI1NTk5QTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OTkwQzBEMDBEOEI5MDBCQjgyNUMgLyog
U1ZHSW1hZ2UuaCAqLzsgfTsKIAkJQjI1NTk5QTUwRDAwRDhCQTAwQkI4MjVDIC8qIEVtcHR5Q2xp
ZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1
NTk5MEQwRDAwRDhCOTAwQkI4MjVDIC8qIEVtcHR5Q2xpZW50cy5oICovOyB9OwpAQCAtODEyMyw3
ICs4MTIwLDYgQEAKIAkJQjIzN0M4QTYwRDM0NEQxMTAwMTNGNzA3IC8qIFNWR0ZvbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGb250RGF0YS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjQwNTU2MzBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZH
RWxlbWVudEluc3RhbmNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERPTVNWR0VsZW1lbnRJbnN0YW5jZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNDA1NTY0MEI1QkU2NDAwMDJBMjhDMCAvKiBET01TVkdFbGVtZW50SW5zdGFu
Y2VMaXN0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNW
R0VsZW1lbnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlCMjU1OTg5OTBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJDZy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdSZXNvdXJjZUZpbHRl
ckNnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThBNjBEMDBEOEI4MDBC
QjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0ZFSGVscGVyc0NnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5
OEE3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUhlbHBlcnNDZy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4QUQwRDAwRDhCODAwQkI4MjVDIC8qIFNWR0ZpbHRlckVm
ZmVjdENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNWR0Zp
bHRlckVmZmVjdENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE5OCw4ICs4
MTk0LDYgQEAKIAkJQjI1NTk4RkEwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0xpZ2h0U291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdMaWdodFNvdXJjZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThGQjBEMDBEOEI5MDBCQjgyNUMgLyogU1ZH
UG9pbnRMaWdodFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
UG9pbnRMaWdodFNvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThG
QzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHU3BvdExpZ2h0U291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdTcG90TGlnaHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQjI1NTk4RkUwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OThGRjBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0
Zm9ybURhdGFNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNTU5OTBCMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdJbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjU1OTkwQzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHSW1hZ2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ltYWdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OTBEMEQwMEQ4QjkwMEJCODI1QyAvKiBFbXB0eUNs
aWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVtcHR5Q2xpZW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMwMjUsOSArMTMwMTksNyBAQAogCQlC
MjU1OTg4NjBEMDBEOEI4MDBCQjgyNUMgLyogZ3JhcGhpY3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUIyNTU5ODhGMEQwMEQ4QjgwMEJCODI1QyAvKiBj
ZyAqLywKIAkJCQlCMjU1OTg5QzBEMDBEOEI4MDBCQjgyNUMgLyogZmlsdGVycyAqLywKLQkJCQlC
MjU1OThGRDBEMDBEOEI5MDBCQjgyNUMgLyogbWFjICovLAogCQkJCUIyNTU5OTBCMEQwMEQ4Qjkw
MEJCODI1QyAvKiBTVkdJbWFnZS5jcHAgKi8sCiAJCQkJQjI1NTk5MEMwRDAwRDhCOTAwQkI4MjVD
IC8qIFNWR0ltYWdlLmggKi8sCiAJCQkJQjI1NTk5MEUwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR1Bh
aW50U2VydmVyLmNwcCAqLywKQEAgLTEzMDU3LDE0ICsxMzA0OSw2IEBACiAJCQlwYXRoID0gZ3Jh
cGhpY3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlCMjU1OTg4RjBEMDBE
OEI4MDBCQjgyNUMgLyogY2cgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVu
ID0gKAotCQkJCUIyNTU5ODk5MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlckNn
Lm1tICovLAotCQkJKTsKLQkJCXBhdGggPSBjZzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07CiAJCUIyNTU5ODlDMEQwMEQ4QjgwMEJCODI1QyAvKiBmaWx0ZXJzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEzMTU3LDE1ICsxMzE0MSw2IEBA
CiAJCQlwYXRoID0gY2c7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlCMjU1
OThGRDBEMDBEOEI5MDBCQjgyNUMgLyogbWFjICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQlCMjU1OThGRTBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHUmVzb3Vy
Y2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMuaCAqLywKLQkJCQlCMjU1OThGRjBEMDBEOEI5MDBCQjgy
NUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW0gKi8sCi0JCQkpOwotCQkJ
cGF0aCA9IG1hYzsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUIyNzUzNTI5
MEIwNTM4MTQwMDJDRTY0RiAvKiBjZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkBAIC0xNjYxMCw3ICsxNjU4NSw2IEBACiAJCQkJQjI1NTk5QjMwRDAwRDhCQTAw
QkI4MjVDIC8qIFNWR1Jlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1OTlCNTBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VDbGlwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjU1OTlCNzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAotCQkJCUIyNTU5OTk3MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZUZpbHRlclBs
YXRmb3JtRGF0YU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI1NTk5QjgwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR1Jlc291cmNlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNTU5OUJB
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI1NTk5QkMwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE4NjY5LDggKzE4NjQzLDYgQEAKIAkJCQlCMjU1OTlCMjBEMDBEOEJBMDBC
QjgyNUMgLyogU1ZHUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjI1NTk5QjQwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlQ2xpcHBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCMjU1OTlCNjBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCi0JCQkJQjI1NTk5MzUwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlRmls
dGVyQ2cubW0gaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk5ODBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlC
MjU1OTlCOTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXJrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQjI1NTk5QkIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2Vy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1M0NBOUU4MEFFRUM2MDgwMDIzNzJEQyAvKiBTVkdS
b290SW5saW5lQm94LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkocmV2aXNpb24gNDQyOTYpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICNpbmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAot
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApA
QCAtMzQsMTQgKzM0LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZpbHRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4gewogICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+RmlsdGVyKCkgeyB9CiAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShQYXNzT3du
UHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KKyAgICAgICAgdm9pZCBzZXRT
b3VyY2VJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0K
ICAgICAgICAgSW1hZ2UqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZm
ZWN0KikgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRyPEltYWdlPiBtX2ltYWdl
OworICAgICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJl
dmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OnBy
ZXBhcmVUb1JlbmRlclNWR0NvCiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgaWYgKGZpbHRlcikg
ewogICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgZmls
dGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBib3VuZGluZ0JveCk7CisgICAg
ICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0LT5vYmpl
Y3RCb3VuZGluZ0JveCgpKTsKICAgICB9IGVsc2UgaWYgKCFmaWx0ZXJJZC5pc0VtcHR5KCkpCiAg
ICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRk
UGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVtZW50KTsKICNlbmRpZgpAQCAtMTUz
LDcgKzE1Myw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGUKIAog
I2lmIEVOQUJMRShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKLSAgICAgICAgZmlsdGVyLT5h
cHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgYm91bmRpbmdCb3gpOworICAgICAgICBmaWx0
ZXItPmFwcGx5RmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmplY3QtPm9iamVjdEJvdW5kaW5n
Qm94KCkpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCA9IHNhdmVkQ29udGV4dDsKICAgICB9
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9GaWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29y
ZS9zdmcvRmlsdGVyQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KTsKIAogICAgICAgICBGaWx0ZXJFZmZlY3Qq
IGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3Q7Ci0gICAgICAgIEZp
bHRlckVmZmVjdCogbGFzdEZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQo
KTsgfQorICAgICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RFZmZlY3QuZ2V0KCk7IH0KIAogICAgICAgICB2b2lkIGNsZWFyRWZmZWN0cygpOwogCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNv
cmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUs
NiBAQCBTVkdGRUJsZW5kRWxlbWVudDo6U1ZHRkVCbGVuZEVsZW1lbnQoY29uCiAgICAgLCBtX2lu
MSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQogICAgICwgbV9pbjIodGhpcywgU1ZHTmFtZXM6Omlu
MkF0dHIpCiAgICAgLCBtX21vZGUodGhpcywgU1ZHTmFtZXM6Om1vZGVBdHRyLCBGRUJMRU5EX01P
REVfTk9STUFMKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNjUsMjEgKzY0
LDE2IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUJsZW5kRWxlbWVudDo6ZmlsdGVy
RWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFQmxlbmRF
bGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IAotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFQmxl
bmRFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIEZpbHRlckVm
ZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7Ci0gICAgRmlsdGVy
RWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMigpKTsKKyAgICBGaWx0
ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5
SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmlsdGVyUmVzb3VyY2UtPmJ1
aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAKICAgICBpZighaW5wdXQxIHx8ICFpbnB1
dDIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwg
RkVCbGVuZDo6Y3JlYXRlKGlucHV0MSwgaW5wdXQyLCBzdGF0aWNfY2FzdDxCbGVuZE1vZGVUeXBl
PiAobW9kZSgpKSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQmxlbmQ6
OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8QmxlbmRNb2RlVHlwZT4obW9kZSgp
KSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmFkZEZpbHRlckVmZmVjdCh0aGlzLCBlZmZlY3QucmVs
ZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDE1ICszNiwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAg
ICAgICB2aXJ0dWFsIH5TVkdGRUJsZW5kRWxlbWVudCgpOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVh
bCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0
OwotICAgICAgICBib29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBi
b29sIGJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBB
TklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVsZW1lbnQsIFNWR05hbWVz
OjpmZUJsZW5kVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwg
aW4xKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVCbGVuZEVs
ZW1lbnQsIFNWR05hbWVzOjpmZUJsZW5kVGFnU3RyaW5nLCBTVkdOYW1lczo6aW4yQXR0clN0cmlu
ZywgU3RyaW5nLCBJbjIsIGluMikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFQmxlbmRFbGVtZW50LCBTVkdOYW1lczo6ZmVCbGVuZFRhZ1N0cmluZywgU1ZHTmFt
ZXM6Om1vZGVBdHRyU3RyaW5nLCBpbnQsIE1vZGUsIG1vZGUpCi0KLSAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8RkVCbGVuZD4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAkocmV2
aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDYgQEAgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6
OlNWR0ZFQ29sb3JNYXRyaQogICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKICAg
ICAsIG1fdHlwZSh0aGlzLCBTVkdOYW1lczo6dHlwZUF0dHIsIEZFQ09MT1JNQVRSSVhfVFlQRV9V
TktOT1dOKQogICAgICwgbV92YWx1ZXModGhpcywgU1ZHTmFtZXM6OnZhbHVlc0F0dHIsIFNWR051
bWJlckxpc3Q6OmNyZWF0ZShTVkdOYW1lczo6dmFsdWVzQXR0cikpCi0gICAgLCBtX2ZpbHRlckVm
ZmVjdCgwKQogewogfQogCkBAIC02NiwxNSArNjUsOSBAQCB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50OjpwYXJzZU1hcHBlCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVj
dCogU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRl
ciogZmlsdGVyKSBjb25zdAorYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQotewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQx
ID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKIAog
ICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg3LDcgKzgwLDggQEAg
Ym9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6YnVpbGQoRmlsdAogICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwO2kgPCBucjtpKyspCiAgICAgICAgIF92YWx1ZXMuYXBwZW5kKG51bWJlcnMt
PmdldEl0ZW0oaSwgZWMpKTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVDb2xvck1h
dHJpeDo6Y3JlYXRlKGlucHV0MSwgc3RhdGljX2Nhc3Q8Q29sb3JNYXRyaXhUeXBlPiAodHlwZSgp
KSwgX3ZhbHVlcykpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29sb3JN
YXRyaXg6OmNyZWF0ZShpbnB1dDEsIHN0YXRpY19jYXN0PENvbG9yTWF0cml4VHlwZT4gKHR5cGUo
KSksIF92YWx1ZXMpOworICAgIGZpbHRlclJlc291cmNlLT5hZGRGaWx0ZXJFZmZlY3QodGhpcywg
ZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUg
KzM2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVDb2xv
ck1hdHJpeEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRy
aWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0
KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9vbCBi
dWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNv
dXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlf
REVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1h
dHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkK
ICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LCBTVkdOYW1lczo6ZmVDb2xvck1hdHJpeFRhZ1N0cmluZywgU1ZHTmFtZXM6OnR5cGVB
dHRyU3RyaW5nLCBpbnQsIFR5cGUsIHR5cGUpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUNvbG9yTWF0cml4RWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29sb3JNYXRy
aXhUYWdTdHJpbmcsIFNWR05hbWVzOjp2YWx1ZXNBdHRyU3RyaW5nLCBTVkdOdW1iZXJMaXN0LCBW
YWx1ZXMsIHZhbHVlcykKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUNvbG9yTWF0cml4PiBt
X2ZpbHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCShyZXZpc2lv
biA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvYykKICAgICA6IFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyh0YWdOYW1lLCBkb2MpCiAgICAgLCBt
X2luMSh0aGlzLCBTVkdOYW1lczo6aW5BdHRyKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsK
IH0KIApAQCAtNTcsMTUgKzU2LDkgQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVu
dDo6cGFycwogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZp
bHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmJ1aWxkKFNW
R1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxl
bWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3Qq
IGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVj
dCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7CiAgICAgCiAgICAgaWYoIWlucHV0MSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtODYs
NyArNzksOCBAQCBib29sIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsCiAgICAg
ICAgICAgICBhbHBoYSA9IHN0YXRpY19jYXN0PFNWR0ZFRnVuY0FFbGVtZW50Kj4obiktPnRyYW5z
ZmVyRnVuY3Rpb24oKTsKICAgICB9CiAgICAgCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBG
RUNvbXBvbmVudFRyYW5zZmVyOjpjcmVhdGUoaW5wdXQxLCByZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFQ29tcG9uZW50VHJhbnNm
ZXI6OmNyZWF0ZShpbnB1dDEsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKKyAgICBmaWx0ZXJS
ZXNvdXJjZS0+YWRkRmlsdGVyRWZmZWN0KHRoaXMsIGVmZmVjdC5yZWxlYXNlKCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRy
YW5zZmVyRWxlbWVudC5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEzICszNSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgflNWR0ZFQ29tcG9uZW50VHJh
bnNmZXJFbGVtZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmli
dXRlKE1hcHBlZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCog
ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVp
bGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3Vy
Y2VGaWx0ZXIqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29t
cG9uZW50VHJhbnNmZXJUYWdTdHJpbmcsIFNWR05hbWVzOjppbkF0dHJTdHJpbmcsIFN0cmluZywg
SW4xLCBpbjEpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVDb21wb25lbnRUcmFuc2Zlcj4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDcgKzQwLDYgQEAgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpTVkdGRUNvbXBvc2l0ZUVsZQogICAg
ICwgbV9rMih0aGlzLCBTVkdOYW1lczo6azJBdHRyKQogICAgICwgbV9rMyh0aGlzLCBTVkdOYW1l
czo6azNBdHRyKQogICAgICwgbV9rNCh0aGlzLCBTVkdOYW1lczo6azRBdHRyKQotICAgICwgbV9m
aWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtODEsMjMgKzgwLDE3IEBAIHZvaWQgU1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpwYXJzZU1hcHBlZEEKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmls
dGVyRWZmZWN0KiBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciogZmlsdGVyKSBjb25zdAorYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OmJ1aWxk
KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6
OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1
dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKLSAgICBGaWx0ZXJFZmZlY3QqIGlu
cHV0MiA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4yKCkpOworICAgIEZpbHRlckVmZmVjdCog
aW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7
CisgICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBmaWx0ZXJSZXNvdXJjZS0+YnVpbGRlcigpLT5n
ZXRFZmZlY3RCeUlkKGluMigpKTsKICAgICAKICAgICBpZighaW5wdXQxIHx8ICFpbnB1dDIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBhZGRl
ZEVmZmVjdCA9IEZFQ29tcG9zaXRlOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19jYXN0
PENvbXBvc2l0ZU9wZXJhdGlvblR5cGU+IChfb3BlcmF0b3IoKSksCisgICAgUmVmUHRyPEZpbHRl
ckVmZmVjdD4gZWZmZWN0ID0gRkVDb21wb3NpdGU6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3Rh
dGljX2Nhc3Q8Q29tcG9zaXRlT3BlcmF0aW9uVHlwZT4gKF9vcGVyYXRvcigpKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrMSgpLCBrMigpLCBrMygpLCBrNCgpKTsK
LSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAg
ZmlsdGVyUmVzb3VyY2UtPmFkZEZpbHRlckVmZmVjdCh0aGlzLCBlZmZlY3QucmVsZWFzZSgpKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDggKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIH5TVkdGRUNvbXBvc2l0ZUVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAg
IHZpcnR1YWwgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIq
KSBjb25zdDsKLSAgICAgICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5n
LCBTdHJpbmcsIEluMSwgaW4xKQpAQCAtNDYsOCArNDUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQsIFNWR05hbWVzOjpmZUNvbXBvc2l0ZVRhZ1N0cmluZywgU1ZHTmFtZXM6OmsyQXR0clN0
cmluZywgZmxvYXQsIEsyLCBrMikKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJ
T05TKFNWR0ZFQ29tcG9zaXRlRWxlbWVudCwgU1ZHTmFtZXM6OmZlQ29tcG9zaXRlVGFnU3RyaW5n
LCBTVkdOYW1lczo6azNBdHRyU3RyaW5nLCBmbG9hdCwgSzMsIGszKQogICAgICAgICBBTklNQVRF
RF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVDb21wb3NpdGVFbGVtZW50LCBTVkdOYW1lczo6
ZmVDb21wb3NpdGVUYWdTdHJpbmcsIFNWR05hbWVzOjprNEF0dHJTdHJpbmcsIGZsb2F0LCBLNCwg
azQpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVDb21wb3NpdGU+IG1fZmlsdGVyRWZmZWN0
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw3ICs0NSw2IEBAIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6U1ZHRkVEaWZmdXMK
ICAgICAsIG1fc3VyZmFjZVNjYWxlKHRoaXMsIFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyLCAx
LjBmKQogICAgICwgbV9rZXJuZWxVbml0TGVuZ3RoWCh0aGlzLCBTVkdOYW1lczo6a2VybmVsVW5p
dExlbmd0aEF0dHIpCiAgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhZKHRoaXMsIFNWR05hbWVzOjpr
ZXJuZWxVbml0TGVuZ3RoQXR0cikKLSAgICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAg
LTcyLDE1ICs3MSw5IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU0K
ICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25z
dAorYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmls
dGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotYm9vbCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKEZp
bHRlckJ1aWxkZXIqIGJ1aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWls
ZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZp
bHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAg
IGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg4LDkgKzgxLDkgQEAgYm9v
bCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKAogICAgIFJlZlB0cjxSZW5kZXJT
dHlsZT4gZmlsdGVyU3R5bGUgPSBzdHlsZUZvclJlbmRlcmVyKCk7CiAgICAgQ29sb3IgY29sb3Ig
PSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOwogICAgIAotICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaWZmdXNlTGlnaHRpbmc6OmNyZWF0
ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNlU2NhbGUoKSwgZGlmZnVzZUNvbnN0YW50KCksIAorICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
aW5wdXQxLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgpLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgo
KSwga2VybmVsVW5pdExlbmd0aFkoKSwgZmluZExpZ2h0cygpKTsKLSAgICBidWlsZGVyLT5hZGQo
cmVzdWx0KCksIGFkZGVkRWZmZWN0LnJlbGVhc2UoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmFk
ZEZpbHRlckVmZmVjdCh0aGlzLCBlZmZlY3QucmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5o
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KCk7CiAKICAg
ICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSop
OwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jlc291
cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQsIFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZ1N0cmluZywg
U1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKQEAgLTUxLDggKzUwLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJB
VElPTlMoU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVEaWZmdXNlTGln
aHRpbmdUYWdTdHJpbmcsIFNWR0tlcm5lbFVuaXRMZW5ndGhZSWRlbnRpZmllciwgZmxvYXQsIEtl
cm5lbFVuaXRMZW5ndGhZLCBrZXJuZWxVbml0TGVuZ3RoWSkKIAogICAgICAgICBMaWdodFNvdXJj
ZSogZmluZExpZ2h0cygpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8
RkVEaWZmdXNlTGlnaHRpbmc+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVu
dE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBAIFNWR0ZFRGlz
cGxhY2VtZW50TWFwRWxlbWVudDo6U1ZHRkVEaXNwbGEKICAgICAsIG1feENoYW5uZWxTZWxlY3Rv
cih0aGlzLCBTVkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIsIENIQU5ORUxfQSkKICAgICAs
IG1feUNoYW5uZWxTZWxlY3Rvcih0aGlzLCBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIs
IENIQU5ORUxfQSkKICAgICAsIG1fc2NhbGUodGhpcywgU1ZHTmFtZXM6OnNjYWxlQXR0cikKLSAg
ICAsIG1fZmlsdGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTczLDI0ICs3MiwxOCBAQCB2b2lkIFNW
R0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6cGFyc2VNCiAgICAgICAgIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAK
LVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpmaWx0ZXJFZmZl
Y3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wgU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7
Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZH
RkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQot
ewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChpbjEo
KSk7Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDIgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MigpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVy
KCktPmdldEVmZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQyID0gZmls
dGVyUmVzb3VyY2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjIoKSk7CiAgICAgCiAgICAg
aWYoIWlucHV0MSB8fCAhaW5wdXQyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAog
ICAgIAotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGFkZGVkRWZmZWN0ID0gRkVEaXNwbGFjZW1l
bnRNYXA6OmNyZWF0ZShpbnB1dDEsIGlucHV0Miwgc3RhdGljX2Nhc3Q8Q2hhbm5lbFNlbGVjdG9y
VHlwZT4gKHhDaGFubmVsU2VsZWN0b3IoKSksIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdCA9IEZFRGlzcGxhY2VtZW50TWFwOjpjcmVhdGUoaW5wdXQxLCBpbnB1dDIsIHN0YXRpY19j
YXN0PENoYW5uZWxTZWxlY3RvclR5cGU+ICh4Q2hhbm5lbFNlbGVjdG9yKCkpLCAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDaGFubmVsU2VsZWN0
b3JUeXBlPiAoeUNoYW5uZWxTZWxlY3RvcigpKSwgc2NhbGUoKSk7Ci0gICAgYnVpbGRlci0+YWRk
KHJlc3VsdCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIGZpbHRlclJlc291cmNlLT5h
ZGRGaWx0ZXJFZmZlY3QodGhpcywgZWZmZWN0LnJlbGVhc2UoKSk7CiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
aAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHN0YXRpYyBDaGFubmVsU2VsZWN0b3JUeXBlIHN0cmluZ1RvQ2hhbm5lbChj
b25zdCBTdHJpbmcmKTsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJF
ZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopIGNvbnN0OwotICAgICAgICBi
b29sIGJ1aWxkKEZpbHRlckJ1aWxkZXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNW
R1Jlc291cmNlRmlsdGVyKik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQsIFNW
R05hbWVzOjpmZURpc3BsYWNlbWVudE1hcFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmlu
ZywgU3RyaW5nLCBJbjEsIGluMSkKQEAgLTQzLDggKzQyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1l
bnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05h
bWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywgaW50LCBYQ2hhbm5lbFNlbGVjdG9yLCB4
Q2hhbm5lbFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMo
U1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVEaXNwbGFjZW1lbnRNYXBU
YWdTdHJpbmcsIFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0clN0cmluZywgaW50LCBZQ2hh
bm5lbFNlbGVjdG9yLCB5Q2hhbm5lbFNlbGVjdG9yKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJU
WV9ERUNMQVJBVElPTlMoU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LCBTVkdOYW1lczo6ZmVE
aXNwbGFjZW1lbnRNYXBUYWdTdHJpbmcsIFNWR05hbWVzOjpzY2FsZUF0dHJTdHJpbmcsIGZsb2F0
LCBTY2FsZSwgc2NhbGUpCi0KLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVEaXNwbGFjZW1lbnRN
YXA+IG1fZmlsdGVyRWZmZWN0OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0Mjk3KQorKysgV2ViQ29y
ZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIFNWR0ZFRmxvb2RFbGVtZW50OjpTVkdGRUZsb29kRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDog
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKICAgICAs
IG1faW4xKHRoaXMsIFNWR05hbWVzOjppbkF0dHIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQog
ewogfQogCkBAIC01MiwxNSArNTEsOSBAQCB2b2lkIFNWR0ZFRmxvb2RFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVG
bG9vZEVsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25z
dAorYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
clJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwot
fQotCi1ib29sIFNWR0ZFRmxvb2RFbGVtZW50OjpidWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVy
KQotewotICAgIEZpbHRlckVmZmVjdCogaW5wdXQgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0ID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxkZXIo
KS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTcwLDcgKzYzLDggQEAgYm9vbCBTVkdGRUZsb29kRWxlbWVudDo6YnVpbGQo
RmlsdGVyQnVpbAogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmZs
b29kQ29sb3IoKTsKICAgICBmbG9hdCBvcGFjaXR5ID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCkt
PmZsb29kT3BhY2l0eSgpOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUZsb29kOjpj
cmVhdGUoaW5wdXQsIGNvbG9yLCBvcGFjaXR5KSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4g
ZWZmZWN0ID0gRkVGbG9vZDo6Y3JlYXRlKGlucHV0LCBjb2xvciwgb3BhY2l0eSk7CisgICAgZmls
dGVyUmVzb3VyY2UtPmFkZEZpbHRlckVmZmVjdCh0aGlzLCBlZmZlY3QucmVsZWFzZSgpKTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFRmxvb2RFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVGbG9vZEVsZW1lbnQuaAkocmV2
aXNpb24gNDQyOTcpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUZsb29kRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNiwxMyArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmly
dHVhbCB+U1ZHRkVGbG9vZEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmls
dGVyRWZmZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWls
ZChTVkdSZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURf
UFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFRmxvb2RFbGVtZW50LCBTVkdOYW1lczo6ZmVGbG9v
ZFRhZ1N0cmluZywgU1ZHTmFtZXM6OmluQXR0clN0cmluZywgU3RyaW5nLCBJbjEsIGluMSkKLQot
ICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUZsb29kPiBtX2ZpbHRlckVmZmVjdDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNiBAQCBTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OlNWR0ZFR2F1c3NpYW5CCiAgICAgLCBtX2luMSh0aGlzLCBT
VkdOYW1lczo6aW5BdHRyKQogICAgICwgbV9zdGREZXZpYXRpb25YKHRoaXMsIFNWR05hbWVzOjpz
dGREZXZpYXRpb25BdHRyKQogICAgICwgbV9zdGREZXZpYXRpb25ZKHRoaXMsIFNWR05hbWVzOjpz
dGREZXZpYXRpb25BdHRyKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNjcs
MjAgKzY2LDE1IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZU1hcHAKICAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAorYm9v
bCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXJSZXNvdXJjZSkKIHsKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsK
LX0KLQotYm9vbCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIq
IGJ1aWxkZXIpCi17Ci0gICAgRmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZl
Y3RCeUlkKGluMSgpKTsKKyAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNl
LT5idWlsZGVyKCktPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwogCiAgICAgaWYoIWlucHV0MSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYnVpbGRlci0+YWRkKHJlc3VsdCgpLCBGRUdhdXNz
aWFuQmx1cjo6Y3JlYXRlKGlucHV0MSwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCkp
KTsKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QgPSBGRUdhdXNzaWFuQmx1cjo6Y3Jl
YXRlKGlucHV0MSwgc3RkRGV2aWF0aW9uWCgpLCBzdGREZXZpYXRpb25ZKCkpOworICAgIGZpbHRl
clJlc291cmNlLT5hZGRGaWx0ZXJFZmZlY3QodGhpcywgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5oCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNSArNDAsMTIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlvbihmbG9hdCBzdGREZXZpYXRpb25YLCBm
bG9hdCBzdGREZXZpYXRpb25ZKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZm
ZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9v
bCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdS
ZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudCwgU1ZHTmFtZXM6OmZlR2F1
c3NpYW5CbHVyVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwg
aW4xKQogICAgICAgICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LCBTVkdOYW1lczo6ZmVHYXVzc2lhbkJsdXJUYWdTdHJpbmcsIFNWR1N0ZERl
dmlhdGlvblhBdHRySWRlbnRpZmllciwgZmxvYXQsIFN0ZERldmlhdGlvblgsIHN0ZERldmlhdGlv
blgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQsIFNWR05hbWVzOjpmZUdhdXNzaWFuQmx1clRhZ1N0cmluZywgU1ZHU3RkRGV2
aWF0aW9uWUF0dHJJZGVudGlmaWVyLCBmbG9hdCwgU3RkRGV2aWF0aW9uWSwgc3RkRGV2aWF0aW9u
WSkKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUdhdXNzaWFuQmx1cj4gbV9maWx0ZXJFZmZl
Y3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDYgQEAgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OlNWR0ZFSW1hZ2VFbGVtZW50KGNvbgogICAgICwgU1ZHTGFuZ1NwYWNlKCkKICAgICAs
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQoKQogICAgICwgbV9wcmVzZXJ2ZUFzcGVjdFJh
dGlvKHRoaXMsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6Y3JlYXRlKCkpCi0gICAgLCBtX2NhY2hlZEltYWdlKDApCi0gICAgLCBtX2Zp
bHRlckVmZmVjdCgwKQogewogfQogCkBAIC04MiwyNCArODAsMTcgQEAgdm9pZCBTVkdGRUltYWdl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIH0KIH0KIAotdm9pZCBTVkdGRUltYWdlRWxl
bWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGZpbmlzaGVkT2JqKQordm9pZCBT
VkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKQogewotICAg
IGlmIChmaW5pc2hlZE9iaiA9PSBtX2NhY2hlZEltYWdlICYmIG1fZmlsdGVyRWZmZWN0KQotICAg
ICAgICBtX2ZpbHRlckVmZmVjdC0+c2V0Q2FjaGVkSW1hZ2UobV9jYWNoZWRJbWFnZS5nZXQoKSk7
CiB9CiAKLVNWR0ZpbHRlckVmZmVjdCogU1ZHRkVJbWFnZUVsZW1lbnQ6OmZpbHRlckVmZmVjdChT
VkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgIHJldHVybiAwOwotfQotCi1ib29sIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChG
aWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZH
UmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJlc291cmNlKQogewogICAgIGlmKCFtX2NhY2hlZEltYWdl
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZF
SW1hZ2U6OmNyZWF0ZShtX2NhY2hlZEltYWdlLmdldCgpKSk7CisgICAgUmVmUHRyPEZpbHRlckVm
ZmVjdD4gZWZmZWN0ID0gRkVJbWFnZTo6Y3JlYXRlKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOworICAg
IGZpbHRlclJlc291cmNlLT5hZGRGaWx0ZXJFZmZlY3QodGhpcywgZWZmZWN0LnJlbGVhc2UoKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuaAkocmV2
aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxNyArNDcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciopOworICAgICAgICB2
aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdSZXNvdXJj
ZUZpbHRlciopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRl
eHRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6ZmVJbWFnZVRhZ1N0cmluZywgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
U3RyaW5nLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvKQogCiAgICAgICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBtX2NhY2hlZEltYWdlOwotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRUltYWdlPiBtX2Zp
bHRlckVmZmVjdDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFNWR0ZFTWVyZ2VFbGVtZW50OjpTVkdGRU1lcmdlRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jKQogICAgIDogU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKHRhZ05hbWUsIGRvYykKLSAgICAsIG1fZmls
dGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTQwLDE4ICszOSwxMiBAQCBTVkdGRU1lcmdlRWxlbWVu
dDo6flNWR0ZFTWVyZ2VFbGVtZW50KCkKIHsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRU1l
cmdlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0
Ci17Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWJvb2wg
U1ZHRkVNZXJnZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIpCitib29sIFNW
R0ZFTWVyZ2VFbGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2Up
CiB7CiAgICAgVmVjdG9yPEZpbHRlckVmZmVjdCo+IG1lcmdlSW5wdXRzOwogICAgIGZvciAoTm9k
ZSogbiA9IGZpcnN0Q2hpbGQoKTsgbiAhPSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAg
ICAgICBpZiAobi0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVNZXJnZU5vZGVUYWcpKSB7Ci0gICAg
ICAgICAgICBGaWx0ZXJFZmZlY3QqIG1lcmdlRWZmZWN0ID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJ
ZChzdGF0aWNfY2FzdDxTVkdGRU1lcmdlTm9kZUVsZW1lbnQqPihuKS0+aW4xKCkpOworICAgICAg
ICAgICAgRmlsdGVyRWZmZWN0KiBtZXJnZUVmZmVjdCA9IGZpbHRlclJlc291cmNlLT5idWlsZGVy
KCktPmdldEVmZmVjdEJ5SWQoc3RhdGljX2Nhc3Q8U1ZHRkVNZXJnZU5vZGVFbGVtZW50Kj4obikt
PmluMSgpKTsKICAgICAgICAgICAgIG1lcmdlSW5wdXRzLmFwcGVuZChtZXJnZUVmZmVjdCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC01OSw3ICs1Miw4IEBAIGJvb2wgU1ZHRkVNZXJnZUVsZW1lbnQ6
OmJ1aWxkKEZpbHRlckJ1aWwKICAgICBpZihtZXJnZUlucHV0cy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIGJ1aWxkZXItPmFkZChyZXN1bHQoKSwgRkVNZXJnZTo6Y3Jl
YXRlKG1lcmdlSW5wdXRzKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0ID0gRkVN
ZXJnZTo6Y3JlYXRlKG1lcmdlSW5wdXRzKTsKKyAgICBmaWx0ZXJSZXNvdXJjZS0+YWRkRmlsdGVy
RWZmZWN0KHRoaXMsIGVmZmVjdC5yZWxlYXNlKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRU1lcmdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR0ZFTWVyZ2VFbGVtZW50LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9z
dmcvU1ZHRkVNZXJnZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTEgKzM0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTVkdGRU1lcmdlRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICAgICAgdmlydHVhbCB+U1ZHRkVNZXJnZUVsZW1l
bnQoKTsKIAotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNW
R1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRl
ciopOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbXV0YWJsZSBSZWZQdHI8RkVNZXJnZT4gbV9m
aWx0ZXJFZmZlY3Q7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdSZXNvdXJjZUZpbHRl
ciopOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRU9m
ZnNldEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBAIFNWR0ZFT2Zm
c2V0RWxlbWVudDo6U1ZHRkVPZmZzZXRFbGVtZW50KGMKICAgICAsIG1faW4xKHRoaXMsIFNWR05h
bWVzOjppbkF0dHIpCiAgICAgLCBtX2R4KHRoaXMsIFNWR05hbWVzOjpkeEF0dHIpCiAgICAgLCBt
X2R5KHRoaXMsIFNWR05hbWVzOjpkeUF0dHIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdCgwKQogewog
fQogCkBAIC01NywyMCArNTYsMTUgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cgogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3QqIFNWR0ZFT2Zm
c2V0RWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0ZXIpIGNvbnN0
Citib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRl
clJlc291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwot
fQotCi1ib29sIFNWR0ZFT2Zmc2V0RWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRlciogYnVpbGRl
cikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQo
aW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3VyY2UtPmJ1aWxk
ZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFT2Zmc2V0OjpjcmVh
dGUoaW5wdXQxLCBkeCgpLCBkeSgpKSk7CisgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0
ID0gRkVPZmZzZXQ6OmNyZWF0ZShpbnB1dDEsIGR4KCksIGR5KCkpOworICAgIGZpbHRlclJlc291
cmNlLT5hZGRGaWx0ZXJFZmZlY3QodGhpcywgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCShyZXZpc2lvbiA0NDI5
NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxNSArMzUsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5T
VkdGRU9mZnNldEVsZW1lbnQoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRB
dHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgU1ZHRmlsdGVyRWZm
ZWN0KiBmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqKSBjb25zdDsKLSAgICAgICAgYm9v
bCBidWlsZChGaWx0ZXJCdWlsZGVyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBidWlsZChTVkdS
ZXNvdXJjZUZpbHRlciopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQU5JTUFURURfUFJPUEVS
VFlfREVDTEFSQVRJT05TKFNWR0ZFT2Zmc2V0RWxlbWVudCwgU1ZHTmFtZXM6OmZlT2Zmc2V0VGFn
U3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVPZmZzZXRFbGVtZW50LCBTVkdO
YW1lczo6ZmVPZmZzZXRUYWdTdHJpbmcsIFNWR05hbWVzOjpkeEF0dHJTdHJpbmcsIGZsb2F0LCBE
eCwgZHgpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRU9mZnNl
dEVsZW1lbnQsIFNWR05hbWVzOjpmZU9mZnNldFRhZ1N0cmluZywgU1ZHTmFtZXM6OmR5QXR0clN0
cmluZywgZmxvYXQsIER5LCBkeSkKLQotICAgICAgICBtdXRhYmxlIFJlZlB0cjxGRU9mZnNldD4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJKHJldmlzaW9u
IDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDYgQEAgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudDo6U1ZHRkVTcGVjdQogICAgICwgbV9zdXJmYWNlU2NhbGUodGhpcywgU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIsIDEuMGYpCiAgICAgLCBtX2tlcm5lbFVuaXRMZW5ndGhYKHRoaXMsIFNW
R05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikKICAgICAsIG1fa2VybmVsVW5pdExlbmd0aFko
dGhpcywgU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKQotICAgICwgbV9maWx0ZXJFZmZl
Y3QoMCkKIHsKIH0KIApAQCAtNzEsMTIgKzcwLDYgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpwYXJzZQogICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi1TVkdGaWx0ZXJFZmZlY3Qq
IFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OmZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZp
bHRlciogZmlsdGVyKSBjb25zdAotewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiAwOwotfQotCiBMaWdodFNvdXJjZSogU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6
ZmluZExpZ2h0cygpIGNvbnN0CiB7CiAgICAgTGlnaHRTb3VyY2UqIGxpZ2h0ID0gMDsKQEAgLTkz
LDkgKzg2LDkgQEAgTGlnaHRTb3VyY2UqIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbgogICAg
IHJldHVybiBsaWdodDsKIH0KIAotYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50Ojpi
dWlsZChGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKQorYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50OjpidWlsZChTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyUmVzb3VyY2UpCiB7Ci0gICAg
RmlsdGVyRWZmZWN0KiBpbnB1dDEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKGluMSgpKTsKKyAg
ICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGZpbHRlclJlc291cmNlLT5idWlsZGVyKCktPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOwogICAgIAogICAgIGlmKCFpbnB1dDEpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwNCw5ICs5Nyw5IEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dDo6YnVpbGQKICAgICAKICAgICBDb2xvciBjb2xvciA9IGZpbHRlclN0eWxlLT5zdmdTdHlsZSgp
LT5saWdodGluZ0NvbG9yKCk7CiAgICAgCi0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRF
ZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNl
U2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKKyAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBl
ZmZlY3QgPSBGRVNwZWN1bGFyTGlnaHRpbmc6OmNyZWF0ZShpbnB1dDEsIGNvbG9yLCBzdXJmYWNl
U2NhbGUoKSwgc3BlY3VsYXJDb25zdGFudCgpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhckV4cG9uZW50KCksIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtl
cm5lbFVuaXRMZW5ndGhZKCksIGZpbmRMaWdodHMoKSk7Ci0gICAgYnVpbGRlci0+YWRkKHJlc3Vs
dCgpLCBhZGRlZEVmZmVjdC5yZWxlYXNlKCkpOworICAgIGZpbHRlclJlc291cmNlLT5hZGRGaWx0
ZXJFZmZlY3QodGhpcywgZWZmZWN0LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmgJKHJldmlz
aW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCB+U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCgpOwogICAgICAgICAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVjdWxhckxpZ2h0aW5nVGFnU3Ry
aW5nLCBTVkdOYW1lczo6aW5BdHRyU3RyaW5nLCBTdHJpbmcsIEluMSwgaW4xKQpAQCAtNDksOCAr
NDgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RF
Q0xBUkFUSU9OUyhTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LCBTVkdOYW1lczo6ZmVTcGVj
dWxhckxpZ2h0aW5nVGFnU3RyaW5nLCBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0clN0cmluZywg
ZmxvYXQsIFN1cmZhY2VTY2FsZSwgc3VyZmFjZVNjYWxlKQogICAgICAgICBBTklNQVRFRF9QUk9Q
RVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCwgU1ZHTmFtZXM6
OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHS2VybmVsVW5pdExlbmd0aFhJZGVudGlm
aWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhYKQogICAgICAg
ICBBTklNQVRFRF9QUk9QRVJUWV9ERUNMQVJBVElPTlMoU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxl
bWVudCwgU1ZHTmFtZXM6OmZlU3BlY3VsYXJMaWdodGluZ1RhZ1N0cmluZywgU1ZHS2VybmVsVW5p
dExlbmd0aFlJZGVudGlmaWVyLCBmbG9hdCwgS2VybmVsVW5pdExlbmd0aFksIGtlcm5lbFVuaXRM
ZW5ndGhZKQotCi0gICAgICAgIG11dGFibGUgUmVmUHRyPEZFU3BlY3VsYXJMaWdodGluZz4gbV9m
aWx0ZXJFZmZlY3Q7CiAgICAgICAgIAogICAgICAgICBMaWdodFNvdXJjZSogZmluZExpZ2h0cygp
IGNvbnN0OwogICAgIH07CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkocmV2aXNpb24g
NDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdGRVRpbGVFbGVtZW50
OjpTVkdGRVRpbGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2MpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFt
ZSwgZG9jKQogICAgICwgbV9pbjEodGhpcywgU1ZHTmFtZXM6OmluQXR0cikKLSAgICAsIG1fZmls
dGVyRWZmZWN0KDApCiB7CiB9CiAKQEAgLTUyLDIwICs1MSwxNSBAQCB2b2lkIFNWR0ZFVGlsZUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLVNWR0ZpbHRl
ckVmZmVjdCogU1ZHRkVUaWxlRWxlbWVudDo6ZmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVy
KiBmaWx0ZXIpIGNvbnN0Citib29sIFNWR0ZFVGlsZUVsZW1lbnQ6OmJ1aWxkKFNWR1Jlc291cmNl
RmlsdGVyKiBmaWx0ZXJSZXNvdXJjZSkKIHsKLSAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
cmV0dXJuIDA7Ci19Ci0KLWJvb2wgU1ZHRkVUaWxlRWxlbWVudDo6YnVpbGQoRmlsdGVyQnVpbGRl
ciogYnVpbGRlcikKLXsKLSAgICBGaWx0ZXJFZmZlY3QqIGlucHV0MSA9IGJ1aWxkZXItPmdldEVm
ZmVjdEJ5SWQoaW4xKCkpOworICAgIEZpbHRlckVmZmVjdCogaW5wdXQxID0gZmlsdGVyUmVzb3Vy
Y2UtPmJ1aWxkZXIoKS0+Z2V0RWZmZWN0QnlJZChpbjEoKSk7CiAKICAgICBpZighaW5wdXQxKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIEZFVGls
ZTo6Y3JlYXRlKGlucHV0MSkpOworICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZF
VGlsZTo6Y3JlYXRlKGlucHV0MSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmFkZEZpbHRlckVmZmVj
dCh0aGlzLCBlZmZlY3QucmVsZWFzZSgpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9TVkdGRVRpbGVFbGVtZW50LmgJKHJldmlzaW9uIDQ0Mjk1KQorKysgV2ViQ29yZS9zdmcv
U1ZHRkVUaWxlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyArMzUsMTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGRVRpbGVFbGVtZW50KCk7CiAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0
ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZmZWN0KFNWR1Jl
c291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVyQnVpbGRlciop
OworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGRVRp
bGVFbGVtZW50LCBTVkdOYW1lczo6ZmVUaWxlVGFnU3RyaW5nLCBTVkdOYW1lczo6aW5BdHRyU3Ry
aW5nLCBTdHJpbmcsIEluMSwgaW4xKQotCi0gICAgICAgIG11dGFibGUgUmVmUHRyPEZFVGlsZT4g
bV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0Mjk1KQorKysg
V2ViQ29yZS9zdmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDYgQEAgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6U1ZHRkVUdXJidWxlbmNlRQog
ICAgICwgbV9zZWVkKHRoaXMsIFNWR05hbWVzOjpzZWVkQXR0cikKICAgICAsIG1fc3RpdGNoVGls
ZXModGhpcywgU1ZHTmFtZXM6OnN0aXRjaFRpbGVzQXR0ciwgU1ZHX1NUSVRDSFRZUEVfTk9TVElU
Q0gpCiAgICAgLCBtX3R5cGUodGhpcywgU1ZHTmFtZXM6OnR5cGVBdHRyLCBGRVRVUkJVTEVOQ0Vf
VFlQRV9UVVJCVUxFTkNFKQotICAgICwgbV9maWx0ZXJFZmZlY3QoMCkKIHsKIH0KIApAQCAtNzcs
MTcgKzc2LDExIEBAIHZvaWQgU1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6cGFyc2VNYXBwZWQKICAg
ICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShhdHRyKTsKIH0KIAotU1ZHRmlsdGVyRWZmZWN0KiBTVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50OjpmaWx0ZXJFZmZlY3QoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlcikgY29uc3QKK2Jvb2wg
U1ZHRkVUdXJidWxlbmNlRWxlbWVudDo6YnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIqIGZpbHRlclJl
c291cmNlKQogewotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQot
Ci1ib29sIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQ6OmJ1aWxkKEZpbHRlckJ1aWxkZXIqIGJ1aWxk
ZXIpCi17Ci0gICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYWRkZWRFZmZlY3QgPSBGRVR1cmJ1bGVu
Y2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxUdXJidWxhbmNlVHlwZT4gKHR5cGUoKSksIGJhc2VGcmVx
dWVuY3lYKCksIAorICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFVHVyYnVsZW5j
ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFR1cmJ1bGFuY2VUeXBlPiAodHlwZSgpKSwgYmFzZUZyZXF1
ZW5jeVgoKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUZy
ZXF1ZW5jeVkoKSwgbnVtT2N0YXZlcygpLCBzZWVkKCksIHN0aXRjaFRpbGVzKCkgPT0gU1ZHX1NU
SVRDSFRZUEVfU1RJVENIKTsKLSAgICBidWlsZGVyLT5hZGQocmVzdWx0KCksIGFkZGVkRWZmZWN0
LnJlbGVhc2UoKSk7CisgICAgZmlsdGVyUmVzb3VyY2UtPmFkZEZpbHRlckVmZmVjdCh0aGlzLCBl
ZmZlY3QucmVsZWFzZSgpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRkVUdXJidWxlbmNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ZFVHVyYnVsZW5jZUVsZW1lbnQuaAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJDb3JlL3N2Zy9T
VkdGRVR1cmJ1bGVuY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIH5TVkdGRVR1cmJ1bGVuY2VFbGVt
ZW50KCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBl
ZEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIFNWR0ZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KFNWR1Jlc291cmNlRmlsdGVyKikgY29uc3Q7Ci0gICAgICAgIGJvb2wgYnVpbGQoRmlsdGVy
QnVpbGRlciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgYnVpbGQoU1ZHUmVzb3VyY2VGaWx0ZXIq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9O
UyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3RyaW5n
LCBTVkdCYXNlRnJlcXVlbmN5WElkZW50aWZpZXIsIGZsb2F0LCBCYXNlRnJlcXVlbmN5WCwgYmFz
ZUZyZXF1ZW5jeVgpCkBAIC01NCw4ICs1Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQs
IFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR05hbWVzOjpzZWVkQXR0clN0cmlu
ZywgZmxvYXQsIFNlZWQsIHNlZWQpCiAgICAgICAgIEFOSU1BVEVEX1BST1BFUlRZX0RFQ0xBUkFU
SU9OUyhTVkdGRVR1cmJ1bGVuY2VFbGVtZW50LCBTVkdOYW1lczo6ZmVUdXJidWxlbmNlVGFnU3Ry
aW5nLCBTVkdOYW1lczo6c3RpdGNoVGlsZXNBdHRyU3RyaW5nLCBpbnQsIFN0aXRjaFRpbGVzLCBz
dGl0Y2hUaWxlcykKICAgICAgICAgQU5JTUFURURfUFJPUEVSVFlfREVDTEFSQVRJT05TKFNWR0ZF
VHVyYnVsZW5jZUVsZW1lbnQsIFNWR05hbWVzOjpmZVR1cmJ1bGVuY2VUYWdTdHJpbmcsIFNWR05h
bWVzOjp0eXBlQXR0clN0cmluZywgaW50LCBUeXBlLCB0eXBlKQotCi0gICAgICAgIG11dGFibGUg
UmVmUHRyPEZFVHVyYnVsZW5jZT4gbV9maWx0ZXJFZmZlY3Q7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0
Mjk1KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDkgQEAKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCiAKICNpbmNs
dWRlICJBdHRyLmgiCisjaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIk1hcHBl
ZEF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKQEAgLTEzMSwxOSArMTMzLDE4IEBAIFNWR1Jlc291
cmNlKiBTVkdGaWx0ZXJFbGVtZW50OjpjYW52YXNSZXMKICAgICBib29sIHByaW1pdGl2ZUJCb3hN
b2RlID0gcHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JK
RUNUQk9VTkRJTkdCT1g7CiAgICAgbV9maWx0ZXItPnNldEVmZmVjdEJvdW5kaW5nQm94TW9kZShw
cmltaXRpdmVCQm94TW9kZSk7CiAKLSAgICAvLyBUT0RPIDogdXNlIHN3aXRjaC9jYXNlIGluc3Rl
YWQ/Ci0gICAgbV9maWx0ZXItPmNsZWFyRWZmZWN0cygpOworICAgIG1fZmlsdGVyLT5idWlsZGVy
KCktPmNsZWFyRWZmZWN0cygpOwogICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hpbGQoKTsgbiAh
PSAwOyBuID0gbi0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBTVkdFbGVtZW50KiBlbGVtZW50
ID0gMDsKLSAgICAgICAgaWYgKG4tPmlzU1ZHRWxlbWVudCgpKQorICAgICAgICBpZiAobi0+aXNT
VkdFbGVtZW50KCkpIHsKICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdFbGVt
ZW50Kj4obik7Ci0gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQtPmlzRmlsdGVyRWZmZWN0
KCkpIHsKLSAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyog
ZmlsdGVyQXR0cmlidXRlcyA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcyo+KGVsZW1lbnQpOwotICAgICAgICAgICAgU1ZHRmlsdGVyRWZmZWN0KiBmaWx0
ZXJFZmZlY3QgPSBmaWx0ZXJBdHRyaWJ1dGVzLT5maWx0ZXJFZmZlY3QobV9maWx0ZXIuZ2V0KCkp
OwotICAgICAgICAgICAgaWYgKCFmaWx0ZXJFZmZlY3QpCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgICAgIG1fZmlsdGVyLT5hZGRGaWx0ZXJFZmZlY3QoZmlsdGVyRWZmZWN0
KTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50LT5pc0ZpbHRlckVmZmVjdCgpKSB7CisgICAgICAg
ICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBlZmZlY3RFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKj4o
ZWxlbWVudCk7CisgICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RFbGVtZW50LT5idWlsZChtX2Zp
bHRlci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9maWx0ZXItPmJ1aWxkZXIoKS0+
Y2xlYXJFZmZlY3RzKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCShy
ZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDggQEAKICNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaCIKIAorI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1
ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgotI2luY2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNs
dWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTcwLDE3
ICs2OSwxNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAgICAg
ICAgIHJldHVybiBTVkdTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KIAotdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5k
YXJkQXR0cmlidXRlcyhTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29uc3QKK3ZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0
ZXMoU1ZHUmVzb3VyY2VGaWx0ZXIqIHJlc291cmNlRmlsdGVyLCBGaWx0ZXJFZmZlY3QqIGZpbHRl
ckVmZmVjdCkgY29uc3QKIHsKICAgICBBU1NFUlQoZmlsdGVyRWZmZWN0KTsKICAgICBpZiAoIWZp
bHRlckVmZmVjdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGZpbHRlckVmZmVjdC0+
ZmlsdGVyKCkpOworICAgIEFTU0VSVChyZXNvdXJjZUZpbHRlcik7CiAKICAgICBmbG9hdCBfeCwg
X3ksIF93aWR0aCwgX2hlaWdodDsKIAotICAgIGlmIChmaWx0ZXJFZmZlY3QtPmZpbHRlcigpLT5l
ZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgeworICAgIGlmIChyZXNvdXJjZUZpbHRlci0+ZWZmZWN0
Qm91bmRpbmdCb3hNb2RlKCkpIHsKICAgICAgICAgX3ggPSB4KCkudmFsdWVBc1BlcmNlbnRhZ2Uo
KTsKICAgICAgICAgX3kgPSB5KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgX3dpZHRo
ID0gd2lkdGgoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwpAQCAtMTIxLDcgKzEyMCw2IEBAIHZvaWQg
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKICAgICB9CiAKICAgICBmaWx0ZXJF
ZmZlY3QtPnNldFN1YlJlZ2lvbihGbG9hdFJlY3QoX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQpKTsK
LSAgICBmaWx0ZXJFZmZlY3QtPnNldFJlc3VsdChyZXN1bHQoKSk7CiB9CiAKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CShyZXZpc2lvbiA0NDI5NSkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMyArMjUsMTMgQEAKIAogI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIu
aCIKKyNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZEVs
ZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgZXh0ZXJuIGNoYXIgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzSWRlbnRpZmllcltdOwogCi0gICAgY2xhc3Mg
U1ZHRmlsdGVyRWZmZWN0OwogICAgIGNsYXNzIFNWR1Jlc291cmNlRmlsdGVyOwogCiAgICAgY2xh
c3MgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIDogcHVibGljIFNWR1N0eWxl
ZEVsZW1lbnQgewpAQCAtNDIsMTMgKzQyLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzRmlsdGVyRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1
dGUqKTsKLSAgICAgICAgdmlydHVhbCBTVkdGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdChTVkdS
ZXNvdXJjZUZpbHRlciopIGNvbnN0ID0gMDsKKyAgICAgICAgdmlydHVhbCBib29sIGJ1aWxkKFNW
R1Jlc291cmNlRmlsdGVyKikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKFJlbmRlclN0eWxlKikgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHByb3RlY3RlZDoK
KyAgICAgICAgZnJpZW5kIGNsYXNzIFNWR1Jlc291cmNlRmlsdGVyOworICAgICAgICB2b2lkIHNl
dFN0YW5kYXJkQXR0cmlidXRlcyhTVkdSZXNvdXJjZUZpbHRlciosIEZpbHRlckVmZmVjdCopIGNv
bnN0OwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdGhpczsgfQotICAgICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRl
cyhTVkdGaWx0ZXJFZmZlY3QqKSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEFOSU1B
VEVEX1BST1BFUlRZX0RFQ0xBUkFUSU9OUyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlc0lkZW50aWZpZXIsIFNW
R05hbWVzOjp4QXR0clN0cmluZywgU1ZHTGVuZ3RoLCBYLCB4KQpJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gNDQyOTUpCisrKyBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAw
NSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICAgICAgICAgICAgICAgICAgMjAwOSBE
aXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQs
NjEgKzI1LDk0IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVk
ZSAiU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKIAorI2luY2x1ZGUgIkZpbHRlckJ1aWxkZXIuaCIKKyNp
bmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5j
bHVkZSAiU1ZHRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgotI2lu
Y2x1ZGUgIlNWR0ZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1Jlc291cmNl
RmlsdGVyOjpTVkdSZXNvdXJjZUZpbHRlcigpCi0gICAgOiBtX3BsYXRmb3JtRGF0YShjcmVhdGVQ
bGF0Zm9ybURhdGEoKSkKLSAgICAsIG1fZmlsdGVyQkJveE1vZGUoZmFsc2UpCisgICAgOiBtX2Zp
bHRlckJCb3hNb2RlKGZhbHNlKQogICAgICwgbV9lZmZlY3RCQm94TW9kZShmYWxzZSkKICAgICAs
IG1feEJCb3hNb2RlKGZhbHNlKQogICAgICwgbV95QkJveE1vZGUoZmFsc2UpCisgICAgLCBtX3Nh
dmVkQ29udGV4dCgwKQorICAgICwgbV9zb3VyY2VHcmFwaGljQnVmZmVyKDApCiB7CisgICAgbV9m
aWx0ZXJCdWlsZGVyLnNldChuZXcgRmlsdGVyQnVpbGRlcigpKTsKIH0KIAotdm9pZCBTVkdSZXNv
dXJjZUZpbHRlcjo6Y2xlYXJFZmZlY3RzKCkKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFkZEZp
bHRlckVmZmVjdChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGVmZmVjdEF0
dHJpYnV0ZXMsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpCiB7Ci0gICAgbV9lZmZl
Y3RzLmNsZWFyKCk7CisgICAgZWZmZWN0QXR0cmlidXRlcy0+c2V0U3RhbmRhcmRBdHRyaWJ1dGVz
KHRoaXMsIGVmZmVjdC5nZXQoKSk7CisgICAgYnVpbGRlcigpLT5hZGQoZWZmZWN0QXR0cmlidXRl
cy0+cmVzdWx0KCksIGVmZmVjdCk7CiB9CiAKLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFkZEZp
bHRlckVmZmVjdChTVkdGaWx0ZXJFZmZlY3QqIGVmZmVjdCkKK0Zsb2F0UmVjdCBTVkdSZXNvdXJj
ZUZpbHRlcjo6ZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJCb3gp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGVmZmVjdCk7CisgICAgRmxvYXRSZWN0IGZpbHRlckJCb3gg
PSBmaWx0ZXJSZWN0KCk7CiAKLSAgICBpZiAoZWZmZWN0KSB7Ci0gICAgICAgIEFTU0VSVChlZmZl
Y3QtPmZpbHRlcigpID09IHRoaXMpOwotICAgICAgICBtX2VmZmVjdHMuYXBwZW5kKGVmZmVjdCk7
Ci0gICAgfQorICAgIGlmIChmaWx0ZXJCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgZmlsdGVy
QkJveCA9IEZsb2F0UmVjdChpdGVtQkJveC54KCkgKyBmaWx0ZXJCQm94LngoKSAqIGl0ZW1CQm94
LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbUJCb3gueSgpICsg
ZmlsdGVyQkJveC55KCkgKiBpdGVtQkJveC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWx0ZXJCQm94LndpZHRoKCkgKiBpdGVtQkJveC53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlckJCb3guaGVpZ2h0KCkgKiBpdGVtQkJveC5o
ZWlnaHQoKSk7CisKKyAgICByZXR1cm4gZmlsdGVyQkJveDsKIH0KIAotRmxvYXRSZWN0IFNWR1Jl
c291cmNlRmlsdGVyOjpmaWx0ZXJCQm94Rm9ySXRlbUJCb3goY29uc3QgRmxvYXRSZWN0JiBpdGVt
QkJveCkgY29uc3QKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhp
Y3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpdGVtUmVjdCkKIHsKLSAgICBG
bG9hdFJlY3QgZmlsdGVyQkJveCA9IGZpbHRlclJlY3QoKTsKKyAgICAvLyBEcmF3IHRoZSBjb250
ZW50IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIGl0J3MgY2hpbGRzIHRvIGEgaW1hZ2VCdWZm
ZXIgdG8gZ2V0IHRoZSBTb3VyY2VHcmFwaGljLgorICAgIC8vIFRoZSBzaXplIG9mIHRoZSBTb3Vy
Y2VHcmFwaGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQsIHRoZSBmaWx0ZXIg
aXMgYXBsaWVkIHRvLgorICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoaXRlbVJlY3Qu
d2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291
cmNlR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisgICAg
CisgICAgaWYgKCFzb3VyY2VHcmFwaGljLmdldCgpKQorICAgICAgICByZXR1cm47CiAKLSAgICBm
bG9hdCB4T2Zmc2V0ID0gMC4wZjsKLSAgICBmbG9hdCB5T2Zmc2V0ID0gMC4wZjsKKyAgICBHcmFw
aGljc0NvbnRleHQqIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4
dCgpOworICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT50cmFuc2xhdGUoLWl0ZW1SZWN0LngoKSwg
LWl0ZW1SZWN0LnkoKSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChGbG9h
dFJlY3QoMCwgMCwgaXRlbVJlY3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X3NvdXJjZUdyYXBoaWNCdWZmZXIuc2V0KHNvdXJjZUdyYXBoaWMucmVsZWFzZSgpKTsKKyAgICBt
X3NhdmVkQ29udGV4dCA9IGNvbnRleHQ7CiAKLSAgICBpZiAoIWVmZmVjdEJvdW5kaW5nQm94TW9k
ZSgpKSB7Ci0gICAgICAgIHhPZmZzZXQgPSBpdGVtQkJveC54KCk7Ci0gICAgICAgIHlPZmZzZXQg
PSBpdGVtQkJveC55KCk7Ci0gICAgfQorICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4
dDsKK30KIAotICAgIGlmIChmaWx0ZXJCb3VuZGluZ0JveE1vZGUoKSkgewotICAgICAgICBmaWx0
ZXJCQm94ID0gRmxvYXRSZWN0KHhPZmZzZXQgKyBmaWx0ZXJCQm94LngoKSAqIGl0ZW1CQm94Lndp
ZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeU9mZnNldCArIGZpbHRlckJC
b3gueSgpICogaXRlbUJCb3guaGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsdGVyQkJveC53aWR0aCgpICogaXRlbUJCb3gud2lkdGgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWx0ZXJCQm94LmhlaWdodCgpICogaXRlbUJCb3guaGVpZ2h0KCkp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh4Qm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAg
ICAgICBmaWx0ZXJCQm94LnNldFgoeE9mZnNldCArIGZpbHRlckJCb3gueCgpKTsKK3ZvaWQgU1ZH
UmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNv
bnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit7CisgICAgaWYgKCFtX3NhdmVkQ29udGV4dCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94Rm9y
SXRlbUJCb3goaXRlbVJlY3QpOworCisgICAgc2V0RmlsdGVyQm91bmRpbmdCb3goZmlsdGVyUmVj
dCk7CisgICAgc2V0SXRlbUJvdW5kaW5nQm94KGl0ZW1SZWN0KTsKIAotICAgICAgICBpZiAoeUJv
dW5kaW5nQm94TW9kZSgpKQotICAgICAgICAgICAgZmlsdGVyQkJveC5zZXRZKHlPZmZzZXQgKyBm
aWx0ZXJCQm94LnkoKSk7CisgICAgY29udGV4dCA9IG1fc2F2ZWRDb250ZXh0OworICAgIG1fc2F2
ZWRDb250ZXh0ID0gMDsKKworICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IG1fZmlsdGVy
QnVpbGRlci0+bGFzdEVmZmVjdCgpOworCisgICAgaWYgKGxhc3RFZmZlY3QgJiYgIWZpbHRlclJl
Y3QuaXNFbXB0eSgpKSB7CisgICAgICAgIFJlZlB0cjxGaWx0ZXI+IGZpbHRlciA9IFNWR0ZpbHRl
cjo6Y3JlYXRlKG1faXRlbUJCb3gsIG1fZmlsdGVyQkJveCwgbV9lZmZlY3RCQm94TW9kZSwgbV9m
aWx0ZXJCQm94TW9kZSk7CisgICAgICAgIGZpbHRlci0+c2V0U291cmNlSW1hZ2UobV9zb3VyY2VH
cmFwaGljQnVmZmVyLT5pbWFnZSgpKTsKKyAgICAgICAgbGFzdEVmZmVjdC0+YXBwbHkoZmlsdGVy
LmdldCgpKTsKKworICAgICAgICBjb250ZXh0LT5jbGlwKGZpbHRlclJlY3QpOworCisgICAgICAg
IGlmIChsYXN0RWZmZWN0LT5yZXN1bHRJbWFnZSgpKQorICAgICAgICAgICAgY29udGV4dC0+ZHJh
d0ltYWdlKGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCktPmltYWdlKCksIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZmlsdGVyQkJveDsKKyAgICBtX3NvdXJjZUdyYXBoaWNCdWZmZXIuY2xlYXIoKTsKIH0K
IAogVGV4dFN0cmVhbSYgU1ZHUmVzb3VyY2VGaWx0ZXI6OmV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0CkBAIC0xMDIsOCArMTM2LDYgQEAgVGV4dFN0cmVhbSYgU1ZH
UmVzb3VyY2VGaWx0ZXI6OmV4dGVybmFsUgogICAgICAgICB0cyA8PCAiIFtib3VuZGluZyBib3gg
bW9kZT0iIDw8IGZpbHRlckJvdW5kaW5nQm94TW9kZSgpIDw8ICJdIjsKICAgICBpZiAoZWZmZWN0
Qm91bmRpbmdCb3hNb2RlKCkpIC8vIGRlZmF1bHQgaXMgZmFsc2UKICAgICAgICAgdHMgPDwgIiBb
ZWZmZWN0IGJvdW5kaW5nIGJveCBtb2RlPSIgPDwgZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkgPDwg
Il0iOwotICAgIGlmIChtX2VmZmVjdHMuc2l6ZSgpID4gMCkKLSAgICAgICAgdHMgPDwgIiBbZWZm
ZWN0cz0iIDw8IG1fZWZmZWN0cyA8PCAiXSI7CiAKICAgICByZXR1cm4gdHM7CiB9CkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDQ0Mjk1KQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAg
ICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAg
ICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAy
MDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNCwyMSArMjUsMjMgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQog
I2luY2x1ZGUgIlNWR1Jlc291cmNlLmgiCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCiAK
KyNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIEZpbHRlcjsKK2NsYXNzIEZpbHRlckJ1aWxkZXI7CitjbGFzcyBGaWx0ZXJFZmZl
Y3Q7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7Ci1jbGFzcyBTVkdGaWx0ZXJFZmZlY3Q7Ci0gICAg
Ci1jbGFzcyBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSB7Ci1wdWJsaWM6Ci0gICAgdmly
dHVhbCB+U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEoKSB7fQotfTsKK2NsYXNzIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczsKIAogY2xhc3MgU1ZHUmVzb3VyY2VGaWx0
ZXIgOiBwdWJsaWMgU1ZHUmVzb3VyY2UgewogcHVibGljOgpAQCAtNjEsMjQgKzY0LDI0IEBAIHB1
YmxpYzoKICAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVy
UmVjdDsgfQogICAgIHZvaWQgc2V0RmlsdGVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsg
bV9maWx0ZXJSZWN0ID0gcmVjdDsgfQogCi0gICAgRmxvYXRSZWN0IGZpbHRlckJCb3hGb3JJdGVt
QkJveChjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdDsKKyAgICBGbG9hdFJlY3QgZmls
dGVyQm91bmRpbmdCb3goKSB7IHJldHVybiBtX2ZpbHRlckJCb3g7IH0KKyAgICB2b2lkIHNldEZp
bHRlckJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2ZpbHRlckJCb3ggPSBy
ZWN0OyB9CisKKyAgICBGbG9hdFJlY3QgaXRlbUJvdW5kaW5nQm94KCkgeyByZXR1cm4gbV9pdGVt
QkJveDsgfQorICAgIHZvaWQgc2V0SXRlbUJvdW5kaW5nQm94KGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgeyBtX2l0ZW1CQm94ID0gcmVjdDsgfQogCi0gICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKLSAg
ICB2b2lkIGFkZEZpbHRlckVmZmVjdChTVkdGaWx0ZXJFZmZlY3QqKTsKKyAgICBGbG9hdFJlY3Qg
ZmlsdGVyQkJveEZvckl0ZW1CQm94KGNvbnN0IEZsb2F0UmVjdCYgaXRlbUJCb3gpIGNvbnN0Owog
CiAgICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mKSBjb25zdDsKIAotICAgIC8vIFRvIGJlIGltcGxlbWVudGVkIGluIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUuCi0gICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25z
dCBGbG9hdFJlY3QmIGJib3gpOwotICAgIHZvaWQgYXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0
KiYsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCk7Ci0gICAgCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQ
bGF0Zm9ybURhdGEqIHBsYXRmb3JtRGF0YSgpIHsgcmV0dXJuIG1fcGxhdGZvcm1EYXRhLmdldCgp
OyB9Ci0gICAgY29uc3QgVmVjdG9yPFNWR0ZpbHRlckVmZmVjdCo+JiBlZmZlY3RzKCkgeyByZXR1
cm4gbV9lZmZlY3RzOyB9CisgICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dCom
LCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lkIGFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4
dComLCBjb25zdCBGbG9hdFJlY3QmKTsKKworICAgIHZvaWQgYWRkRmlsdGVyRWZmZWN0KFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyosIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
Pik7CisKKyAgICBGaWx0ZXJCdWlsZGVyKiBidWlsZGVyKCkgeyByZXR1cm4gbV9maWx0ZXJCdWls
ZGVyLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZv
cm1EYXRhKiBjcmVhdGVQbGF0Zm9ybURhdGEoKTsKLSAgICAKLSAgICBPd25QdHI8U1ZHUmVzb3Vy
Y2VGaWx0ZXJQbGF0Zm9ybURhdGE+IG1fcGxhdGZvcm1EYXRhOwogCiAgICAgYm9vbCBtX2ZpbHRl
ckJCb3hNb2RlIDogMTsKICAgICBib29sIG1fZWZmZWN0QkJveE1vZGUgOiAxOwpAQCAtODcsNyAr
OTAsMTMgQEAgcHJpdmF0ZToKICAgICBib29sIG1feUJCb3hNb2RlIDogMTsKIAogICAgIEZsb2F0
UmVjdCBtX2ZpbHRlclJlY3Q7Ci0gICAgVmVjdG9yPFNWR0ZpbHRlckVmZmVjdCo+IG1fZWZmZWN0
czsKKworICAgIEZsb2F0UmVjdCBtX2ZpbHRlckJCb3g7CisgICAgRmxvYXRSZWN0IG1faXRlbUJC
b3g7CisKKyAgICBPd25QdHI8RmlsdGVyQnVpbGRlcj4gbV9maWx0ZXJCdWlsZGVyOworICAgIEdy
YXBoaWNzQ29udGV4dCogbV9zYXZlZENvbnRleHQ7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBt
X3NvdXJjZUdyYXBoaWNCdWZmZXI7CiB9OwogCiBTVkdSZXNvdXJjZUZpbHRlciogZ2V0RmlsdGVy
QnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30822</attachid>
            <date>2009-05-31 16:59:27 -0700</date>
            <delta_ts>2009-05-31 22:37:24 -0700</delta_ts>
            <desc>Rename FilterBuilder to SVGFilterBuilder</desc>
            <filename>filter-9.patch</filename>
            <type>text/plain</type>
            <size>26832</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMDktMDUtMzEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEEgc2hvcnQg
Y2xlYW4tdXAuIEZpbHRlckJ1aWxkZXIgaXMgU1ZHIHNwZWNpZmljLiBNb3ZlIGl0CisgICAgICAg
IHRvIHN2Zy9ncmFwaGljcy9maWx0ZXJzIGFuZCByZW5hbWUgaXQgdG8gU1ZHRmlsdGVyQnVpbGRl
ci4gCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
c3ZnL0ZpbHRlckJ1aWxkZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9GaWx0ZXJCdWls
ZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmVzb3VyY2VGaWx0ZXI6OlNWR1Jlc291cmNlRmlsdGVyKToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlRmlsdGVyOjpidWlsZGVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWls
ZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxk
ZXI6OmFkZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJCdWlsZGVyOjpnZXRFZmZlY3RC
eUlkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cyk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6Omxhc3RFZmZlY3QpOgorCiAy
MDA5LTA1LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTWFyayBSb3dlLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA0NDI5OSkKKysrIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI2MjQsOCArMjYyNCw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvQ29sb3JEaXN0YW5jZS5jcHAgXAogCVdlYkNv
cmUvc3ZnL0NvbG9yRGlzdGFuY2UuaCBcCiAJV2ViQ29yZS9zdmcvRWxlbWVudFRpbWVDb250cm9s
LmggXAotCVdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaCBcCi0JV2ViQ29yZS9zdmcvRmlsdGVy
QnVpbGRlci5jcHAgXAogCVdlYkNvcmUvc3ZnL0dyYWRpZW50QXR0cmlidXRlcy5oIFwKIAlXZWJD
b3JlL3N2Zy9MaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCBcCiAJV2ViQ29yZS9zdmcvUGF0dGVy
bkF0dHJpYnV0ZXMuaCBcCkBAIC0yOTU3LDYgKzI5NTUsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmggXAogCVdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCiAJV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCisJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmggXAorCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAgXAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyRWZmZWN0LmNwcCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJFZmZlY3QuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJj
ZS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUucHJvCShyZXZpc2lvbiA0NDI5OSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTE3MTksNyArMTcxOSw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9TVkc9MSkgewogICAgICAgICByZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGVEZWZzLmNw
cCBcCiAgICAgICAgIHN2Zy9TVkdab29tRXZlbnQuY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1Bv
aW50ZXJFdmVudHNIaXRSdWxlcy5jcHAgXAotICAgICAgICBzdmcvRmlsdGVyQnVpbGRlci5jcHAg
XAogICAgICAgICBzdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCBcCiAgICAgICAgIHN2Zy9T
VkdJbWFnZUxvYWRlci5jcHAgXAogICAgICAgICBzdmcvQ29sb3JEaXN0YW5jZS5jcHAgXApAQCAt
MTg2Niw2ICsxODY1LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAg
ICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAgXAogICAgICAgICBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCisgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckJ1aWxkZXIuY3BwIFwKICAgICAgICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyRWZmZWN0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0xpZ2h0U291
cmNlLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAgXApJbmRleDogV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDQ0Mjk5KQor
KysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDggQEAKIAkJMDgxOEFFRTMwRURCODZCQzAwNjQ3QjY2IC8qIFdNTEV2
ZW50SGFuZGxpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwODE4QUVFMTBFREI4NkJDMDA2NDdCNjYgLyogV01MRXZlbnRIYW5kbGluZ0Vs
ZW1lbnQuaCAqLzsgfTsKIAkJMDgxRDgxMzEwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODFEODEyRjBFRTBFNzREMDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
MDgxRDgxMzIwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRpbWVyRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxRDgxMzAwRUUwRTc0RDAwRDcz
Njg5IC8qIFdNTFRpbWVyRWxlbWVudC5oICovOyB9OworCQkwODFFQkYzQTBGRDM0RjQxMDBEQTc1
NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODFFQkYzODBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVp
bGRlci5jcHAgKi87IH07CisJCTA4MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJC
dWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
ODFFQkYzOTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVpbGRlci5oICovOyB9OwogCQkw
ODIwM0E5RjBFRDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNzRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODIwM0E5RDBFRDhDMzUzMDBC
OEI2MUEgLyogV01MQWNjZXNzRWxlbWVudC5jcHAgKi87IH07CiAJCTA4MjAzQUEwMEVEOEMzNTMw
MEI4QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwODIwM0E5RTBFRDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNz
RWxlbWVudC5oICovOyB9OwogCQkwODIzNDFDNTBGQ0YzQTk1MDBENzVCRDYgLyogV01MU2VsZWN0
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODIzNDFDMzBGQ0YzQTk0MDBENzVCRDYgLyogV01MU2VsZWN0RWxlbWVudC5jcHAgKi87IH07
CkBAIC03NDQsNyArNzQ2LDYgQEAKIAkJNEUxOTU5MkMwQTM5REFDQzAwMjIwRkU1IC8qIE1lZGlh
UXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRFMTk1OTI2MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgg
Ki87IH07CiAJCTRFMTk1OTJEMEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI3MEEz
OURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsKIAkJNEUxOTU5MkUwQTM5
REFDQzAwMjIwRkU1IC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFMTk1OTI4MEEzOURBQ0MwMDIyMEZFNSAvKiBNZWRpYVF1
ZXJ5RXhwLmggKi87IH07Ci0JCTUwQTVERjc2MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWls
ZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MEE1
REY3NDBFMUExM0M5MDAwQTAzQUUgLyogRmlsdGVyQnVpbGRlci5oICovOyB9OwogCQk1MTAxODQ2
OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hl
ZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0QTgy
NUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CiAJCTUxMTZEOTc3MENGMTc3QkQwMEMyQjg0RCAv
KiBEYXRhYmFzZURldGFpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMTZEOTc1MENGMTc3QkQwMEMyQjg0RCAvKiBEYXRhYmFzZURldGFpbHMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk5LDcg
KzEwMDAsNiBAQAogCQk4NDVFNzJGQjBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0NUU3MkY5MEZE
MjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwICovOyB9OwogCQk4NDVFNzJGQzBGRDI2MjM5
MDBBODdENzkgLyogU1ZHRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NDVFNzJGQTBGRDI2MjM5MDBBODdENzkgLyogU1ZHRmlsdGVyLmggKi87
IH07CiAJCTg0OUY3Nzc2MEVGRUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0OUY3Nzc1MEVG
RUM2MjAwMDkwODQ5RCAvKiBTdHJva2VTdHlsZUFwcGxpZXIuaCAqLzsgfTsKLQkJODRBODFGM0Ew
RkM3REZDQzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRBODFGMzkwRkM3REZDQzAwOTU1MzAwIC8qIEZp
bHRlckJ1aWxkZXIuY3BwICovOyB9OwogCQk4NEE4MUYzRDBGQzdERkYwMDA5NTUzMDAgLyogU291
cmNlQWxwaGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODRBODFGM0IwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmNwcCAqLzsgfTsKIAkJ
ODRBODFGM0UwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NEE4MUYzQzBGQzdERkYwMDA5NTUzMDAg
LyogU291cmNlQWxwaGEuaCAqLzsgfTsKIAkJODRBODFGNDEwRkM3RTAyNzAwOTU1MzAwIC8qIFNv
dXJjZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODRBODFGM0YwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuY3BwICovOyB9
OwpAQCAtNDk1MCw2ICs0OTUwLDggQEAKIAkJMDgxOEFFRTEwRURCODZCQzAwNjQ3QjY2IC8qIFdN
TEV2ZW50SGFuZGxpbmdFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4MUQ4MTJGMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MVGltZXJFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgxRDgxMzAwRUUwRTc0RDAwRDczNjg5IC8qIFdNTFRp
bWVyRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxUaW1lckVs
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDgxRUJGMzgwRkQzNEY0MTAw
REE3NTU5IC8qIFNWR0ZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZpbHRlckJ1aWxkZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDgyMDNBOUQwRUQ4QzM1MzAwQjhCNjFBIC8qIFdNTEFj
Y2Vzc0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01M
QWNjZXNzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MjAzQTlF
MEVEOEMzNTMwMEI4QjYxQSAvKiBXTUxBY2Nlc3NFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdNTEFjY2Vzc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDgyMzQxQzMwRkNGM0E5NDAwRDc1QkQ2IC8qIFdNTFNlbGVjdEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV01MU2VsZWN0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NzEwLDcgKzU3MTIsNiBAQAogCQk0
RTE5NTkyNjBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFRdWVyeUV2YWx1YXRvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0RTE5NTkyNzBBMzlEQUNDMDAyMjBGRTUgLyogTWVkaWFR
dWVyeUV4cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFR
dWVyeUV4cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRFMTk1OTI4MEEzOURB
Q0MwMDIyMEZFNSAvKiBNZWRpYVF1ZXJ5RXhwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUw
QTVERjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckJ1aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENhY2hlZFBhZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkUGFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTAxODQ2ODBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRQYWdlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTExNkQ5NzUwQ0YxNzdCRDAwQzJCODREIC8qIERh
dGFiYXNlRGV0YWlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFz
ZURldGFpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5ODksNyArNTk5MCw2
IEBACiAJCTg0NUU3MkY5MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRmlsdGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJODQ1RTcyRkEwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0ZpbHRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGaWx0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODQ5Rjc3NzUwRUZFQzYyMDAwOTA4NDlEIC8qIFN0cm9rZVN0
eWxlQXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJva2VTdHls
ZUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODRBODFGMzkwRkM3REZD
QzAwOTU1MzAwIC8qIEZpbHRlckJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRmlsdGVyQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTg0QTgxRjNCMEZDN0RGRjAwMDk1NTMwMCAvKiBTb3VyY2VBbHBoYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTb3VyY2VBbHBoYS5jcHA7IHBhdGggPSBmaWx0
ZXJzL1NvdXJjZUFscGhhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODRBODFG
M0MwRkM3REZGMDAwOTU1MzAwIC8qIFNvdXJjZUFscGhhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFNvdXJjZUFscGhhLmg7IHBhdGggPSBmaWx0ZXJzL1NvdXJjZUFscGhhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg0QTgxRjNGMEZDN0UwMjcwMDk1NTMwMCAv
KiBTb3VyY2VHcmFwaGljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNvdXJjZUdyYXBoaWMuY3BwOyBwYXRoID0gZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNTg0LDE0ICsxMjU4NCwxMiBAQAogCQlCMjIy
NzdDQTBEMDBCRjFFMDA3MUI3ODIgLyogc3ZnICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQk4NEE4MUYzOTBGQzdERkNDMDA5NTUzMDAgLyogRmlsdGVyQnVp
bGRlci5jcHAgKi8sCiAJCQkJRTQ2RTk3ODYwREFBRDYxQjAwNzFFODk0IC8qIGFuaW1hdGlvbiAq
LywKIAkJCQlCMjU1OTg4NjBEMDBEOEI4MDBCQjgyNUMgLyogZ3JhcGhpY3MgKi8sCiAJCQkJQjIy
Mjc3Q0IwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovLAogCQkJCUIyMjI3
N0NDMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmggKi8sCiAJCQkJRTQxNUYxODMw
RDlBMUE4MzAwMzNDRTk3IC8qIEVsZW1lbnRUaW1lQ29udHJvbC5oICovLAogCQkJCUU0MTVGMTBD
MEQ5QTA1ODcwMDMzQ0U5NyAvKiBFbGVtZW50VGltZUNvbnRyb2wuaWRsICovLAotCQkJCTUwQTVE
Rjc0MEUxQTEzQzkwMDBBMDNBRSAvKiBGaWx0ZXJCdWlsZGVyLmggKi8sCiAJCQkJQjIyMjc3Q0Qw
RDAwQkYxRjAwNzFCNzgyIC8qIEdyYWRpZW50QXR0cmlidXRlcy5oICovLAogCQkJCUIyMjI3N0NF
MEQwMEJGMUYwMDcxQjc4MiAvKiBMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMuaCAqLywKIAkJCQlC
MjIyNzdEQjBEMDBCRjFGMDA3MUI3ODIgLyogUGF0dGVybkF0dHJpYnV0ZXMuaCAqLywKQEAgLTEz
MDUyLDggKzEzMDUwLDYgQEAKIAkJQjI1NTk4OUMwRDAwRDhCODAwQkI4MjVDIC8qIGZpbHRlcnMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTg0NUU3MkY5
MEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuY3BwICovLAotCQkJCTg0NUU3MkZBMEZEMjYy
MzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCAqLywKIAkJCQlCMjU1OTg5RDBEMDBEOEI4MDBCQjgy
NUMgLyogY2cgKi8sCiAJCQkJQjI1NTk4RDcwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0Rpc3RhbnRM
aWdodFNvdXJjZS5oICovLAogCQkJCUIyNTU5OEUwMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGRUNv
bnZvbHZlTWF0cml4LmNwcCAqLywKQEAgLTEzMDgwLDYgKzEzMDc2LDEwIEBACiAJCQkJQjI1NTk4
RjQwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ZFVGlsZS5oICovLAogCQkJCUIyNTU5OEY1MEQwMEQ4
QjkwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuY3BwICovLAogCQkJCUIyNTU5OEY2MEQwMEQ4
QjkwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuaCAqLywKKwkJCQk4NDVFNzJGOTBGRDI2MjM5
MDBBODdENzkgLyogU1ZHRmlsdGVyLmNwcCAqLywKKwkJCQk4NDVFNzJGQTBGRDI2MjM5MDBBODdE
NzkgLyogU1ZHRmlsdGVyLmggKi8sCisJCQkJMDgxRUJGMzgwRkQzNEY0MTAwREE3NTU5IC8qIFNW
R0ZpbHRlckJ1aWxkZXIuY3BwICovLAorCQkJCTA4MUVCRjM5MEZEMzRGNDEwMERBNzU1OSAvKiBT
VkdGaWx0ZXJCdWlsZGVyLmggKi8sCiAJCQkJQjI1NTk4RjcwRDAwRDhCOTAwQkI4MjVDIC8qIFNW
R0ZpbHRlckVmZmVjdC5jcHAgKi8sCiAJCQkJQjI1NTk4RjgwRDAwRDhCOTAwQkI4MjVDIC8qIFNW
R0ZpbHRlckVmZmVjdC5oICovLAogCQkJCUIyNTU5OEY5MEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdM
aWdodFNvdXJjZS5jcHAgKi8sCkBAIC0xNTY1Miw3ICsxNTY1Miw2IEBACiAJCQkJQkNEQkI4QUMw
RTA4OENBNTAwQzYwRkY2IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3
MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
RUI2OUYwRTgxREFFQjAwQjI1OTY1IC8qIEZpbGxMYXllci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NTBBNURGNzYwRTFBMTNDOTAwMEEwM0FFIC8qIEZpbHRlckJ1aWxkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE4Q0ZGMDRGMEExNTRGMDkwMDBBNDIzNCAvKiBGaXhlZFRhYmxlTGF5b3V0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzA3M0JBQTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJz
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2OTBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRQb2ludC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjk1NCw2ICsxNjk1Myw3IEBACiAJCQkJMDgy
MzQxQzYwRkNGM0E5NTAwRDc1QkQ2IC8qIFdNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0NUU3MkY4MEZEMjYxRUUwMEE4N0Q3OSAvKiBGaWx0ZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTg0NUU3MkZDMEZEMjYyMzkwMEE4N0Q3OSAvKiBTVkdGaWx0ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA4MUVCRjNCMEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE4OTcxLDEyICsxODk3MSwxMiBAQAogCQkJCTI5QTgxMjQ4MEZC
QjlDQTkwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFY
T2JqZWN0Q2FjaGVNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQk4NEE4MUYzQTBGQzdERkNDMDA5
NTUzMDAgLyogRmlsdGVyQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NEE4MUYzRDBG
QzdERkYwMDA5NTUzMDAgLyogU291cmNlQWxwaGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODRB
ODFGNDEwRkM3RTAyNzAwOTU1MzAwIC8qIFNvdXJjZUdyYXBoaWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDhDOTI1MTkwRkNDN0M0QTAwNDgwREVDIC8qIEZpbHRlckVmZmVjdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwODIzNDFDNTBGQ0YzQTk1MDBENzVCRDYgLyogV01MU2VsZWN0RWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDVFNzJGQjBGRDI2MjM5MDBBODdENzkgLyogU1ZH
RmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA4MUVCRjNBMEZEMzRGNDEwMERBNzU1OSAv
KiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9zdmcv
RmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRl
ci5jcHAJKHJldmlzaW9uIDQ0Mjk4KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVpbGRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsODUgKzAsMCBAQAotCi0vKgotICogIENvcHlyaWdodCAoQykg
MjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0gKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gKiAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNpbmNsdWRl
ICJGaWx0ZXJCdWlsZGVyLmgiCi0KLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNvdXJjZUFscGhhLmgiCi0jaW5jbHVkZSAi
U291cmNlR3JhcGhpYy5oIgotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUZpbHRlckJ1aWxkZXI6
OkZpbHRlckJ1aWxkZXIoKQotewotICAgIG1fYnVpbHRpbkVmZmVjdHMuYWRkKFNvdXJjZUdyYXBo
aWM6OmVmZmVjdE5hbWUoKS5pbXBsKCksIFNvdXJjZUdyYXBoaWM6OmNyZWF0ZSgpKTsKLSAgICBt
X2J1aWx0aW5FZmZlY3RzLmFkZChTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpLmltcGwoKSwgU291
cmNlQWxwaGE6OmNyZWF0ZSgpKTsKLX0KLQotdm9pZCBGaWx0ZXJCdWlsZGVyOjphZGQoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQotewotICAgIGlm
IChpZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9sYXN0RWZmZWN0ID0gZWZmZWN0LmdldCgpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQXRvbWljU3RyaW5nSW1wbCogaWRJbXBsID0g
aWQuaW1wbCgpOwotICAgIEFTU0VSVChpZEltcGwpOwotCi0gICAgaWYgKG1fYnVpbHRpbkVmZmVj
dHMuY29udGFpbnMoaWRJbXBsKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9sYXN0RWZmZWN0
ID0gZWZmZWN0LmdldCgpOwotICAgIG1fbmFtZWRFZmZlY3RzLnNldChpZEltcGwsIG1fbGFzdEVm
ZmVjdCk7Ci19Ci0KLUZpbHRlckVmZmVjdCogRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWN0QnlJZChj
b25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdAotewotICAgIGJvb2wgaWRJc0VtcHR5ID0gaWQu
aXNFbXB0eSgpOwotCi0gICAgaWYgKGlkSXNFbXB0eSAmJiBtX2xhc3RFZmZlY3QpCi0gICAgICAg
IHJldHVybiBtX2xhc3RFZmZlY3QuZ2V0KCk7Ci0KLSAgICBBdG9taWNTdHJpbmdJbXBsKiBpZElt
cGwgPSBpZC5pbXBsKCk7Ci0KLSAgICBpZiAobV9idWlsdGluRWZmZWN0cy5jb250YWlucyhpZElt
cGwpKQotICAgICAgICByZXR1cm4gbV9idWlsdGluRWZmZWN0cy5nZXQoaWRJbXBsKS5nZXQoKTsK
LQotICAgIGlmIChpZElzRW1wdHkgJiYgIW1fbGFzdEVmZmVjdCkKLSAgICAgICAgcmV0dXJuIG1f
YnVpbHRpbkVmZmVjdHMuZ2V0KFNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUoKS5pbXBsKCkpLmdl
dCgpOwotCi0gICAgcmV0dXJuIG1fbmFtZWRFZmZlY3RzLmdldChpZEltcGwpLmdldCgpOwotfQot
Ci12b2lkIEZpbHRlckJ1aWxkZXI6OmNsZWFyRWZmZWN0cygpCi17Ci0gICAgbV9sYXN0RWZmZWN0
ID0gMDsKLSAgICBtX25hbWVkRWZmZWN0cy5jbGVhcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6
IFdlYkNvcmUvc3ZnL0ZpbHRlckJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9G
aWx0ZXJCdWlsZGVyLmgJKHJldmlzaW9uIDQ0Mjk5KQorKysgV2ViQ29yZS9zdmcvRmlsdGVyQnVp
bGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDU1ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0
IChDKSAyMDA4IEFsZXggTWF0aGV3cyA8cG9zc2Vzc2VkcGVuZ3VpbmJvYkBnbWFpbC5jb20+Ci0g
ICAgCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
LSovCi0KLSNpZm5kZWYgRmlsdGVyQnVpbGRlcl9oCi0jZGVmaW5lIEZpbHRlckJ1aWxkZXJfaAot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVS
UykKLSNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi0gICAgY2xhc3MgRmlsdGVyQnVpbGRlciA6
IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckJ1aWxkZXI+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAg
IEZpbHRlckJ1aWxkZXIoKTsKLQotICAgICAgICB2b2lkIGFkZChjb25zdCBBdG9taWNTdHJpbmcm
IGlkLCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3QpOwotCi0gICAgICAgIEZpbHRlckVmZmVj
dCogZ2V0RWZmZWN0QnlJZChjb25zdCBBdG9taWNTdHJpbmcmIGlkKSBjb25zdDsKLSAgICAgICAg
RmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0RWZmZWN0Lmdl
dCgpOyB9Ci0KLSAgICAgICAgdm9pZCBjbGVhckVmZmVjdHMoKTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+LCBSZWZQdHI8RmlsdGVyRWZm
ZWN0PiA+IG1fYnVpbHRpbkVmZmVjdHM7Ci0gICAgICAgIEhhc2hNYXA8UmVmUHRyPEF0b21pY1N0
cmluZ0ltcGw+LCBSZWZQdHI8RmlsdGVyRWZmZWN0PiA+IG1fbmFtZWRFZmZlY3RzOwotCi0gICAg
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fbGFzdEVmZmVjdDsKLSAgICB9OwotICAgIAotfSAv
L25hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKLSNlbmRpZgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ0
Mjk5KQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCiAKICNpbmNs
dWRlICJBdHRyLmgiCi0jaW5jbHVkZSAiRmlsdGVyQnVpbGRlci5oIgorI2luY2x1ZGUgIlNWR0Zp
bHRlckJ1aWxkZXIuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oIgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDQ0Mjk5KQorKysgV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDcgKzI0LDcgQEAKICNkZWZpbmUgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
X2gKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIkZpbHRl
ckJ1aWxkZXIuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXJCdWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZH
UmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRFbGVtZW50LmgiCiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHJldmlzaW9uIDQ0
Mjk5KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTIgQEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKICNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgogCi0jaW5jbHVkZSAiRmls
dGVyQnVpbGRlci5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXIuaCIKKyNpbmNsdWRlICJTVkdGaWx0ZXJC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCkBAIC00NCw3ICs0NCw3IEBA
IFNWR1Jlc291cmNlRmlsdGVyOjpTVkdSZXNvdXJjZUZpbHRlcigpCiAgICAgLCBtX3NhdmVkQ29u
dGV4dCgwKQogICAgICwgbV9zb3VyY2VHcmFwaGljQnVmZmVyKDApCiB7Ci0gICAgbV9maWx0ZXJC
dWlsZGVyLnNldChuZXcgRmlsdGVyQnVpbGRlcigpKTsKKyAgICBtX2ZpbHRlckJ1aWxkZXIuc2V0
KG5ldyBTVkdGaWx0ZXJCdWlsZGVyKCkpOwogfQogCiB2b2lkIFNWR1Jlc291cmNlRmlsdGVyOjph
ZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiBlZmZl
Y3RBdHRyaWJ1dGVzLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZmZWN0KQpJbmRleDogV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCShyZXZpc2lvbiA0NDI5OSkKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDkgKzM4LDkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRmlsdGVyOwot
Y2xhc3MgRmlsdGVyQnVpbGRlcjsKIGNsYXNzIEZpbHRlckVmZmVjdDsKIGNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKK2NsYXNzIFNWR0ZpbHRlckJ1aWxkZXI7CiBjbGFzcyBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM7CiAKIGNsYXNzIFNWR1Jlc291cmNlRmlsdGVyIDogcHVibGlj
IFNWR1Jlc291cmNlIHsKQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRG
aWx0ZXJFZmZlY3QoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiwgUGFzc1Jl
ZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKIAotICAgIEZpbHRlckJ1aWxkZXIqIGJ1aWxkZXIoKSB7IHJl
dHVybiBtX2ZpbHRlckJ1aWxkZXIuZ2V0KCk7IH0KKyAgICBTVkdGaWx0ZXJCdWlsZGVyKiBidWls
ZGVyKCkgeyByZXR1cm4gbV9maWx0ZXJCdWlsZGVyLmdldCgpOyB9CiAgICAgCiBwcml2YXRlOgog
CkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fZmlsdGVyQkJveDsK
ICAgICBGbG9hdFJlY3QgbV9pdGVtQkJveDsKIAotICAgIE93blB0cjxGaWx0ZXJCdWlsZGVyPiBt
X2ZpbHRlckJ1aWxkZXI7CisgICAgT3duUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IG1fZmlsdGVyQnVp
bGRlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWRDb250ZXh0OwogICAgIE93blB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VHcmFwaGljQnVmZmVyOwogfTsKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKworLyoKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCisjaW5jbHVkZSAi
U1ZHRmlsdGVyQnVpbGRlci5oIgorCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlICJTb3VyY2VBbHBoYS5oIgorI2luY2x1ZGUg
IlNvdXJjZUdyYXBoaWMuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdGaWx0ZXJCdWls
ZGVyOjpTVkdGaWx0ZXJCdWlsZGVyKCkKK3sKKyAgICBtX2J1aWx0aW5FZmZlY3RzLmFkZChTb3Vy
Y2VHcmFwaGljOjplZmZlY3ROYW1lKCkuaW1wbCgpLCBTb3VyY2VHcmFwaGljOjpjcmVhdGUoKSk7
CisgICAgbV9idWlsdGluRWZmZWN0cy5hZGQoU291cmNlQWxwaGE6OmVmZmVjdE5hbWUoKS5pbXBs
KCksIFNvdXJjZUFscGhhOjpjcmVhdGUoKSk7Cit9CisKK3ZvaWQgU1ZHRmlsdGVyQnVpbGRlcjo6
YWRkKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCkK
K3sKKyAgICBpZiAoaWQuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fbGFzdEVmZmVjdCA9IGVmZmVj
dC5nZXQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEF0b21pY1N0cmluZ0ltcGwq
IGlkSW1wbCA9IGlkLmltcGwoKTsKKyAgICBBU1NFUlQoaWRJbXBsKTsKKworICAgIGlmIChtX2J1
aWx0aW5FZmZlY3RzLmNvbnRhaW5zKGlkSW1wbCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
bGFzdEVmZmVjdCA9IGVmZmVjdC5nZXQoKTsKKyAgICBtX25hbWVkRWZmZWN0cy5zZXQoaWRJbXBs
LCBtX2xhc3RFZmZlY3QpOworfQorCitGaWx0ZXJFZmZlY3QqIFNWR0ZpbHRlckJ1aWxkZXI6Omdl
dEVmZmVjdEJ5SWQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCkgY29uc3QKK3sKKyAgICBib29sIGlk
SXNFbXB0eSA9IGlkLmlzRW1wdHkoKTsKKworICAgIGlmIChpZElzRW1wdHkgJiYgbV9sYXN0RWZm
ZWN0KQorICAgICAgICByZXR1cm4gbV9sYXN0RWZmZWN0LmdldCgpOworCisgICAgQXRvbWljU3Ry
aW5nSW1wbCogaWRJbXBsID0gaWQuaW1wbCgpOworCisgICAgaWYgKG1fYnVpbHRpbkVmZmVjdHMu
Y29udGFpbnMoaWRJbXBsKSkKKyAgICAgICAgcmV0dXJuIG1fYnVpbHRpbkVmZmVjdHMuZ2V0KGlk
SW1wbCkuZ2V0KCk7CisKKyAgICBpZiAoaWRJc0VtcHR5ICYmICFtX2xhc3RFZmZlY3QpCisgICAg
ICAgIHJldHVybiBtX2J1aWx0aW5FZmZlY3RzLmdldChTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1l
KCkuaW1wbCgpKS5nZXQoKTsKKworICAgIHJldHVybiBtX25hbWVkRWZmZWN0cy5nZXQoaWRJbXBs
KS5nZXQoKTsKK30KKwordm9pZCBTVkdGaWx0ZXJCdWlsZGVyOjpjbGVhckVmZmVjdHMoKQorewor
ICAgIG1fbGFzdEVmZmVjdCA9IDA7CisgICAgbV9uYW1lZEVmZmVjdHMuY2xlYXIoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1
aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckJ1aWxkZXIuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyQnVpbGRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAwOCBBbGV4IE1hdGhld3MgPHBvc3Nlc3NlZHBlbmd1aW5ib2JA
Z21haWwuY29tPgorICAgIAorICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFNWR0ZpbHRlckJ1aWxkZXJfaAorI2RlZmluZSBT
VkdGaWx0ZXJCdWlsZGVyX2gKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNW
RykgJiYgRU5BQkxFKEZJTFRFUlMpCisjaW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNs
YXNzIFNWR0ZpbHRlckJ1aWxkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxTVkdGaWx0ZXJCdWlsZGVy
PiB7CisgICAgcHVibGljOgorICAgICAgICBTVkdGaWx0ZXJCdWlsZGVyKCk7CisKKyAgICAgICAg
dm9pZCBhZGQoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0KTsKKworICAgICAgICBGaWx0ZXJFZmZlY3QqIGdldEVmZmVjdEJ5SWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBpZCkgY29uc3Q7CisgICAgICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdEVmZmVjdC5nZXQoKTsgfQorCisgICAgICAgIHZvaWQgY2xlYXJF
ZmZlY3RzKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBIYXNoTWFwPFJlZlB0cjxBdG9taWNT
dHJpbmdJbXBsPiwgUmVmUHRyPEZpbHRlckVmZmVjdD4gPiBtX2J1aWx0aW5FZmZlY3RzOworICAg
ICAgICBIYXNoTWFwPFJlZlB0cjxBdG9taWNTdHJpbmdJbXBsPiwgUmVmUHRyPEZpbHRlckVmZmVj
dD4gPiBtX25hbWVkRWZmZWN0czsKKworICAgICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBtX2xh
c3RFZmZlY3Q7CisgICAgfTsKKyAgICAKK30gLy9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30830</attachid>
            <date>2009-06-01 04:12:07 -0700</date>
            <delta_ts>2009-06-01 14:40:44 -0700</delta_ts>
            <desc>remove old SVG filter code</desc>
            <filename>filter-10.patch</filename>
            <type>text/plain</type>
            <size>190890</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzUgQEAKKzIwMDktMDYtMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1v
dmUgbGFzdCBwaWVjZXMgb2YgdGhlIG9sZCBTVkcgZmlsdGUgc3lzdGVtLiBUaGV5IGFyZSBub3QK
KyAgICAgICAgdXNhYmxlIHdpdGggb3VyIGN1cnJlbnQgZmlsdGVyIHN5c3RlbS4gVGhlIG5ldyBm
aWx0ZXIgZWZmZWN0cworICAgICAgICB3aWxsIHJlcGxhY2UgdGhlIGZ1bmN0aW9uYWxpdHkgc3Rl
cCBieSBzdGVwLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9jYWlybzogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2Fpcm8vU1ZHUmVz
b3VyY2VGaWx0ZXJDYWlyby5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Nn
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9jZy9TVkdSZXNvdXJjZUZpbHRlckNn
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0
ZXJDZy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXJFZmZlY3QuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlckVmZmVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L2NnOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVs
cGVyc0NnLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZH
RkVIZWxwZXJzQ2cubW06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvU1ZHRmlsdGVyRWZmZWN0Q2cubW06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVsOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQXJpdGhtZXRpY0ZpbHRlci5oOiBSZW1vdmVk
LgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQXJpdGhtZXRpY0ZpbHRlci5t
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQ29tcG9uZW50
TWVyZ2VGaWx0ZXIuY2lrZXJuZWw6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvY2cvV0tDb21wb25lbnRNZXJnZUZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubTogUmVtb3ZlZC4K
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRl
ci5jaWtlcm5lbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9X
S0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm06IFJlbW92ZWQuCisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2Vy
bmVsOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzY3Jl
dGVUcmFuc2ZlckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5tOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsOiBS
ZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzcGxhY2VtZW50
TWFwRmlsdGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
V0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9XS0Rpc3RhbnRMaWdodEZpbHRlci5jaWtlcm5lbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3RhbnRMaWdodEZpbHRlci5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzdGFudExpZ2h0
RmlsdGVyLm06IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tH
YW1tYVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tOiBSZW1v
dmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLSWRlbnRpdHlUcmFuc2Zl
ckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWw6IFJlbW92ZWQuCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5o
OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJh
bnNmZXJGaWx0ZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS05vcm1hbE1hcEZpbHRlci5jaWtlcm5lbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS05vcm1hbE1hcEZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmlsdGVyLm06IFJlbW92ZWQuCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tQb2ludExpZ2h0RmlsdGVyLmNpa2Vy
bmVsOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLUG9pbnRM
aWdodEZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLUG9pbnRMaWdodEZpbHRlci5tOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5jaWtlcm5lbDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFy
TGlnaHRpbmdGaWx0ZXIubTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9XS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0RmlsdGVyLm06IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dL
VGFibGVUcmFuc2ZlckZpbHRlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL2NnL1dLVGFibGVUcmFuc2ZlckZpbHRlci5tOiBSZW1vdmVkLgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9tYWM6IFJlbW92ZWQuCisgICAgICAgICogc3ZnL2dyYXBoaWNzL21hYy9TVkdS
ZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW06IFJlbW92ZWQu
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL3F0OiBSZW1vdmVkLgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9xdC9TVkdSZXNvdXJjZUZpbHRlclF0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3Mvc2tpYTogUmVtb3ZlZC4KKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mvc2tpYS9TVkdS
ZXNvdXJjZUZpbHRlclNraWEuY3BwOiBSZW1vdmVkLgorCiAyMDA5LTA2LTAxICBEcmV3IFdpbHNv
biAgPGF0d2lsc29uQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuICBMYW5kZWQgKGFuZCB0d2Vha2VkKSBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTI5NTYsOCArMjk1Niw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmggXAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAgXAotCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyRWZmZWN0LmNwcCBcCi0JV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJF
ZmZlY3QuaCBcCiAJV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdMaWdodFNvdXJjZS5j
cHAgXAogCVdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHTGlnaHRTb3VyY2UuaCBcCiAJ
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdQb2ludExpZ2h0U291cmNlLmggXApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJv
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkK
QEAgLTE4NjYsNyArMTg2Niw2IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9TVkc9MSkgewog
ICAgICAgICBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwIFwKICAgICAg
ICAgc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwIFwKLSAgICAgICAgc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyRWZmZWN0LmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0xpZ2h0U291cmNlLmNwcCBcCiAgICAgICAgIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5j
cHAgXAogICAgICAgICBzdmcvZ3JhcGhpY3MvU1ZHUGFpbnRTZXJ2ZXIuY3BwIFwKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk0
MSwxNCArMTQ5NDEsNiBAQAogCQkJCQkJPg0KIAkJCQkJPC9GaWxlPg0KIAkJCQkJPEZpbGUNCi0J
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzXFNWR0ZpbHRlckVmZmVj
dC5jcHAiDQotCQkJCQkJPg0KLQkJCQkJPC9GaWxlPg0KLQkJCQkJPEZpbGUNCi0JCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHN2Z1xncmFwaGljc1xmaWx0ZXJzXFNWR0ZpbHRlckVmZmVjdC5oIg0KLQkJ
CQkJCT4NCi0JCQkJCTwvRmlsZT4NCi0JCQkJCTxGaWxlDQogCQkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdmdcZ3JhcGhpY3NcZmlsdGVyc1xTVkdMaWdodFNvdXJjZS5jcHAiDQogCQkJCQkJPg0KIAkJ
CQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzExLDUwICszMzExLDYgQEAKIAkJQjIzN0M4
QTgwRDM0NEQxMTAwMTNGNzA3IC8qIFNWR0ZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjM3QzhBNjBEMzQ0RDExMDAxM0Y3MDcgLyogU1ZH
Rm9udERhdGEuaCAqLzsgfTsKIAkJQjI0MDU1NjUwQjVCRTY0MDAwMkEyOEMwIC8qIERPTVNWR0Vs
ZW1lbnRJbnN0YW5jZUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjQwNTU2MzBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVudElu
c3RhbmNlSW50ZXJuYWwuaCAqLzsgfTsKIAkJQjI0MDU1NjYwQjVCRTY0MDAwMkEyOEMwIC8qIERP
TVNWR0VsZW1lbnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI0MDU1NjQwQjVCRTY0MDAwMkEyOEMwIC8qIERPTVNW
R0VsZW1lbnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oICovOyB9OwotCQlCMjU1OTk0MDBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBl
cnNDZy5oICovOyB9OwotCQlCMjU1OTk0MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJz
Q2cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1
OThBNzBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gKi87IH07Ci0JCUIyNTU5
OTQ3MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEFEMEQwMEQ4QjgwMEJCODI1
QyAvKiBTVkdGaWx0ZXJFZmZlY3RDZy5tbSAqLzsgfTsKLQkJQjI1NTk5NDgwRDAwRDhCQTAwQkI4
MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUUwRDAwRDhCOTAwQkI4MjVDIC8qIFdL
QXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCAqLzsgfTsKLQkJQjI1NTk5NDkwRDAwRDhCQTAwQkI4
MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QUYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRp
Y0ZpbHRlci5oICovOyB9OwotCQlCMjU1OTk0QTBEMDBEOEJBMDBCQjgyNUMgLyogV0tBcml0aG1l
dGljRmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OThCMDBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi87IH07
Ci0JCUIyNTU5OTRCMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNp
a2VybmVsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MjU1OThCMTBEMDBEOEI5MDBCQjgyNUMgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5jaWtlcm5l
bCAqLzsgfTsKLQkJQjI1NTk5NEMwRDAwRDhCQTAwQkI4MjVDIC8qIFdLQ29tcG9uZW50TWVyZ2VG
aWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NTU5OEIyMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi87IH07
Ci0JCUIyNTU5OTREMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThCMzBE
MDBEOEI5MDBCQjgyNUMgLyogV0tDb21wb25lbnRNZXJnZUZpbHRlci5tICovOyB9OwotCQlCMjU1
OTk0RTBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEI0
MEQwMEQ4QjkwMEJCODI1QyAvKiBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5jaWtlcm5lbCAqLzsg
fTsKLQkJQjI1NTk5NEYwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThC
NTBEMDBEOEI5MDBCQjgyNUMgLyogV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaCAqLzsgfTsKLQkJ
QjI1NTk5NTAwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThCNjBEMDBE
OEI5MDBCQjgyNUMgLyogV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubSAqLzsgfTsKLQkJQjI1NTk5
NTEwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4Qjcw
RDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsg
fTsKLQkJQjI1NTk5NTIwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4
QjgwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oICovOyB9Owot
CQlCMjU1OTk1MzBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThCOTBE
MDBEOEI5MDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0gKi87IH07Ci0JCUIy
NTU5OTU0MEQwMEQ4QkEwMEJCODI1QyAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5l
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4
QkEwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsICov
OyB9OwotCQlCMjU1OTk1NTBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5
OEJCMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5oICovOyB9Owot
CQlCMjU1OTk1NjBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEJDMEQw
MEQ4QjkwMEJCODI1QyAvKiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tICovOyB9OwotCQlCMjU1
OTk1NzBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaXN0YW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEJEMEQw
MEQ4QjkwMEJCODI1QyAvKiBXS0Rpc3RhbnRMaWdodEZpbHRlci5jaWtlcm5lbCAqLzsgfTsKLQkJ
QjI1NTk5NTgwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThCRTBEMDBEOEI5
MDBCQjgyNUMgLyogV0tEaXN0YW50TGlnaHRGaWx0ZXIuaCAqLzsgfTsKLQkJQjI1NTk5NTkwRDAw
RDhCQTAwQkI4MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThCRjBEMDBEOEI5MDBCQjgyNUMgLyog
V0tEaXN0YW50TGlnaHRGaWx0ZXIubSAqLzsgfTsKLQkJQjI1NTk5NUEwRDAwRDhCQTAwQkI4MjVD
IC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QzAwRDAwRDhCOTAwQkI4MjVDIC8qIFdL
R2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAqLzsgfTsKLQkJQjI1NTk5NUIwRDAwRDhCQTAw
QkI4MjVDIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QzEwRDAwRDhCOTAwQkI4MjVDIC8qIFdLR2Ft
bWFUcmFuc2ZlckZpbHRlci5oICovOyB9OwotCQlCMjU1OTk1QzBEMDBEOEJBMDBCQjgyNUMgLyog
V0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCMjU1OThDMjBEMDBEOEI5MDBCQjgyNUMgLyogV0tHYW1tYVRyYW5zZmVy
RmlsdGVyLm0gKi87IH07Ci0JCUIyNTU5OTVEMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNTU5OEMzMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0lkZW50aXR5VHJhbnNmZXJGaWx0
ZXIuaCAqLzsgfTsKLQkJQjI1NTk5NUUwRDAwRDhCQTAwQkI4MjVDIC8qIFdLSWRlbnRpdHlUcmFu
c2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI1NTk4QzQwRDAwRDhCOTAwQkI4MjVDIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5t
ICovOyB9OwotCQlCMjU1OTk1RjBEMDBEOEJBMDBCQjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI1NTk4QzUwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07Ci0JCUIyNTU5OTYwMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0xpbmVhclRy
YW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjU1OThDNjBEMDBEOEI5MDBCQjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5o
ICovOyB9OwotCQlCMjU1OTk2MTBEMDBEOEJBMDBCQjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZp
bHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1
NTk4QzcwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIubSAqLzsgfTsK
LQkJQjI1NTk5NjIwRDAwRDhCQTAwQkI4MjVDIC8qIFdLTm9ybWFsTWFwRmlsdGVyLmNpa2VybmVs
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThD
ODBEMDBEOEI5MDBCQjgyNUMgLyogV0tOb3JtYWxNYXBGaWx0ZXIuY2lrZXJuZWwgKi87IH07Ci0J
CUIyNTU5OTYzMEQwMEQ4QkEwMEJCODI1QyAvKiBXS05vcm1hbE1hcEZpbHRlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4QzkwRDAwRDhCOTAw
QkI4MjVDIC8qIFdLTm9ybWFsTWFwRmlsdGVyLmggKi87IH07Ci0JCUIyNTU5OTY0MEQwMEQ4QkEw
MEJCODI1QyAvKiBXS05vcm1hbE1hcEZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4Q0EwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTm9ybWFs
TWFwRmlsdGVyLm0gKi87IH07Ci0JCUIyNTU5OTY1MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1BvaW50
TGlnaHRGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNTU5OENCMEQwMEQ4QjkwMEJCODI1QyAvKiBXS1BvaW50TGlnaHRGaWx0
ZXIuY2lrZXJuZWwgKi87IH07Ci0JCUIyNTU5OTY2MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1BvaW50
TGlnaHRGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5OENDMEQwMEQ4QjkwMEJCODI1QyAvKiBXS1BvaW50TGlnaHRGaWx0ZXIuaCAqLzsg
fTsKLQkJQjI1NTk5NjcwRDAwRDhCQTAwQkI4MjVDIC8qIFdLUG9pbnRMaWdodEZpbHRlci5tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4Q0QwRDAw
RDhCOTAwQkI4MjVDIC8qIFdLUG9pbnRMaWdodEZpbHRlci5tICovOyB9OwotCQlCMjU1OTk2ODBE
MDBEOEJBMDBCQjgyNUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThDRTBEMDBE
OEI5MDBCQjgyNUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsICovOyB9Owot
CQlCMjU1OTk2OTBEMDBEOEJBMDBCQjgyNUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThDRjBE
MDBEOEI5MDBCQjgyNUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmggKi87IH07Ci0JCUIy
NTU5OTZBMEQwMEQ4QkEwMEJCODI1QyAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEQwMEQwMEQ4
QjkwMEJCODI1QyAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubSAqLzsgfTsKLQkJQjI1NTk5
NkIwRDAwRDhCQTAwQkI4MjVDIC8qIFdLU3BvdExpZ2h0RmlsdGVyLmNpa2VybmVsIGluIFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThEMTBEMDBEOEI5
MDBCQjgyNUMgLyogV0tTcG90TGlnaHRGaWx0ZXIuY2lrZXJuZWwgKi87IH07Ci0JCUIyNTU5OTZD
MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1Nwb3RMaWdodEZpbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4RDIwRDAwRDhCOTAwQkI4MjVDIC8q
IFdLU3BvdExpZ2h0RmlsdGVyLmggKi87IH07Ci0JCUIyNTU5OTZEMEQwMEQ4QkEwMEJCODI1QyAv
KiBXS1Nwb3RMaWdodEZpbHRlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjI1NTk4RDMwRDAwRDhCOTAwQkI4MjVDIC8qIFdLU3BvdExpZ2h0RmlsdGVy
Lm0gKi87IH07Ci0JCUIyNTU5OTZFMEQwMEQ4QkEwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyNTU5OEQ0MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWwgKi87IH07Ci0JCUIyNTU5OTZGMEQwMEQ4QkEwMEJCODI1QyAvKiBXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNTU5OEQ1MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCAq
LzsgfTsKLQkJQjI1NTk5NzAwRDAwRDhCQTAwQkI4MjVDIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRl
ci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4
RDYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5tICovOyB9OwogCQlC
MjU1OTk3MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRGlzdGFudExpZ2h0U291cmNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThENzBEMDBEOEI5
MDBCQjgyNUMgLyogU1ZHRGlzdGFudExpZ2h0U291cmNlLmggKi87IH07CiAJCUIyNTU5OTdBMEQw
MEQ4QkEwMEJCODI1QyAvKiBTVkdGRUNvbnZvbHZlTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEUwMEQwMEQ4QjkwMEJCODI1QyAv
KiBTVkdGRUNvbnZvbHZlTWF0cml4LmNwcCAqLzsgfTsKIAkJQjI1NTk5N0IwRDAwRDhCQTAwQkI4
MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEUxMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGRUNvbnZv
bHZlTWF0cml4LmggKi87IH07CkBAIC0zMzc5LDggKzMzMzUsNiBAQAogCQlCMjU1OTk4RTBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHRkVUaWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjU1OThGNDBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHRkVUaWxlLmgg
Ki87IH07CiAJCUIyNTU5OThGMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4RjUw
RDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ZFVHVyYnVsZW5jZS5jcHAgKi87IH07CiAJCUIyNTU5OTkw
MEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEY2MEQwMEQ4QjkwMEJCODI1QyAvKiBT
VkdGRVR1cmJ1bGVuY2UuaCAqLzsgfTsKLQkJQjI1NTk5OTEwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R0ZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OThGNzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0LmNwcCAq
LzsgfTsKLQkJQjI1NTk5OTIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4RjgwRDAw
RDhCOTAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdC5oICovOyB9OwogCQlCMjU1OTk5MzBEMDBE
OEJBMDBCQjgyNUMgLyogU1ZHTGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk4RjkwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0xp
Z2h0U291cmNlLmNwcCAqLzsgfTsKIAkJQjI1NTk5OTQwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0xp
Z2h0U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjU1OThGQTBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHTGlnaHRTb3VyY2UuaCAqLzsgfTsKIAkJ
QjI1NTk5OTUwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR1BvaW50TGlnaHRTb3VyY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OEZCMEQwMEQ4Qjkw
MEJCODI1QyAvKiBTVkdQb2ludExpZ2h0U291cmNlLmggKi87IH07CkBAIC04MTE5LDUwICs4MDcz
LDYgQEAKIAkJQjIzN0M4QTYwRDM0NEQxMTAwMTNGNzA3IC8qIFNWR0ZvbnREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdGb250RGF0YS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjQwNTU2MzBCNUJFNjQwMDAyQTI4QzAgLyogRE9NU1ZHRWxlbWVu
dEluc3RhbmNlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERP
TVNWR0VsZW1lbnRJbnN0YW5jZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNDA1NTY0MEI1QkU2NDAwMDJBMjhDMCAvKiBET01TVkdFbGVtZW50SW5zdGFuY2VMaXN0
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR0VsZW1l
bnRJbnN0YW5jZUxpc3RJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
MjU1OThBNjBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFSGVscGVyc0NnLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUIyNTU5OEE3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTVkdGRUhlbHBlcnND
Zy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QUQwRDAwRDhCODAwQkI4
MjVDIC8qIFNWR0ZpbHRlckVmZmVjdENnLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFNWR0ZpbHRlckVmZmVjdENnLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OThBRTBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmNp
a2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJu
ZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEFGMEQwMEQ4QjkwMEJCODI1
QyAvKiBXS0FyaXRobWV0aWNGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQXJpdGhtZXRpY0ZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
MjU1OThCMDBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLm0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0FyaXRobWV0aWNGaWx0ZXIubTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QjEwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQ29t
cG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLQ29t
cG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUIyNTU5OEIyMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEIzMEQwMEQ4QjkwMEJCODI1QyAv
KiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7
IHBhdGggPSBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUIyNTU5OEI0MEQwMEQ4QjkwMEJCODI1QyAvKiBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRl
ci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tEaWZmdXNlTGlnaHRpbmdGaWx0
ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEI1MEQwMEQ4
QjkwMEJCODI1QyAvKiBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QjYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlmZnVzZUxp
Z2h0aW5nRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0Rp
ZmZ1c2VMaWdodGluZ0ZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1
OThCNzBEMDBEOEI5MDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuY2lrZXJu
ZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEI4MEQwMEQ4QjkwMEJCODI1
QyAvKiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMjU1OThCOTBEMDBEOEI5MDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVy
RmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QkEw
RDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmNpa2VybmVsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5lbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QkIwRDAwRDhCOTAwQkI4MjVDIC8qIFdL
RGlzcGxhY2VtZW50TWFwRmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlCMjU1OThCQzBEMDBEOEI5MDBCQjgyNUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLRGlzcGxhY2VtZW50TWFwRmls
dGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEJEMEQwMEQ4QjkwMEJC
ODI1QyAvKiBXS0Rpc3RhbnRMaWdodEZpbHRlci5jaWtlcm5lbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gV0tEaXN0YW50TGlnaHRGaWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyNTU5OEJFMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0Rpc3RhbnRMaWdodEZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEaXN0YW50TGlnaHRGaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QkYwRDAwRDhCOTAwQkI4
MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9i
amM7IHBhdGggPSBXS0Rpc3RhbnRMaWdodEZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OThDMDBEMDBEOEI5MDBCQjgyNUMgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVy
LmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIu
Y2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEMxMEQwMEQ4Qjkw
MEJCODI1QyAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLR2FtbWFUcmFuc2ZlckZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlCMjU1OThDMjBEMDBEOEI5MDBCQjgyNUMgLyogV0tHYW1tYVRyYW5zZmVyRmls
dGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBXS0dhbW1hVHJhbnNm
ZXJGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QzMwRDAwRDhC
OTAwQkI4MjVDIC8qIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OEM0MEQwMEQ4QjkwMEJCODI1QyAvKiBXS0lkZW50aXR5
VHJhbnNmZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
SWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
MjU1OThDNTBEMDBEOEI5MDBCQjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QzYwRDAwRDhCOTAwQkI4MjVD
IC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI1NTk4QzcwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIu
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLTGluZWFyVHJhbnNmZXJG
aWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4QzgwRDAwRDhCOTAw
QkI4MjVDIC8qIFdLTm9ybWFsTWFwRmlsdGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXS05vcm1hbE1hcEZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQjI1NTk4QzkwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTm9ybWFsTWFwRmlsdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS05vcm1hbE1hcEZpbHRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThDQTBEMDBEOEI5MDBCQjgyNUMgLyogV0tO
b3JtYWxNYXBGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdL
Tm9ybWFsTWFwRmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OENC
MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1BvaW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFdLUG9pbnRMaWdodEZpbHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4Q0MwRDAwRDhCOTAwQkI4MjVDIC8qIFdLUG9pbnRMaWdo
dEZpbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQb2ludExpZ2h0
RmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OENEMEQwMEQ4Qjkw
MEJCODI1QyAvKiBXS1BvaW50TGlnaHRGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IFdLUG9pbnRMaWdodEZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjU1OThDRTBEMDBEOEI5MDBCQjgyNUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmls
dGVyLmNpa2VybmVsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS1NwZWN1bGFyTGlnaHRpbmdG
aWx0ZXIuY2lrZXJuZWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyNTU5OENGMEQw
MEQ4QjkwMEJCODI1QyAvKiBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThEMDBEMDBEOEI5MDBCQjgyNUMgLyogV0tTcGVj
dWxhckxpZ2h0aW5nRmlsdGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGgg
PSBXS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJQjI1NTk4RDEwRDAwRDhCOTAwQkI4MjVDIC8qIFdLU3BvdExpZ2h0RmlsdGVyLmNpa2VybmVs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4RDIwRDAwRDhCOTAwQkI4MjVDIC8qIFdL
U3BvdExpZ2h0RmlsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Nw
b3RMaWdodEZpbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThEMzBE
MDBEOEI5MDBCQjgyNUMgLyogV0tTcG90TGlnaHRGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMub2JqYzsgcGF0aCA9IFdLU3BvdExpZ2h0RmlsdGVyLm07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUIyNTU5OEQ0MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJG
aWx0ZXIuY2lrZXJuZWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdLVGFibGVUcmFuc2ZlckZp
bHRlci5jaWtlcm5lbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQjI1NTk4RDUwRDAw
RDhCOTAwQkI4MjVDIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUIyNTU5OEQ2MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdLVGFibGVU
cmFuc2ZlckZpbHRlci5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThENzBE
MDBEOEI5MDBCQjgyNUMgLyogU1ZHRGlzdGFudExpZ2h0U291cmNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdEaXN0YW50TGlnaHRTb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4RTAwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ZFQ29udm9s
dmVNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZF
Q29udm9sdmVNYXRyaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjU1OThF
MTBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHRkVDb252b2x2ZU1hdHJpeC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHRkVDb252b2x2ZU1hdHJpeC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODE4Nyw4ICs4MDk3LDYgQEAKIAkJQjI1NTk4RjQwRDAwRDhCOTAw
QkI4MjVDIC8qIFNWR0ZFVGlsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHRkVUaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEY1MEQwMEQ4
QjkwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0ZFVHVyYnVsZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIyNTU5OEY2MEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGRVR1cmJ1bGVuY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0ZFVHVyYnVsZW5jZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThGNzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZH
RmlsdGVyRWZmZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdGaWx0ZXJFZmZlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjU1OThG
ODBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTVkdGaWx0ZXJFZmZlY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjI1NTk4RjkwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0xpZ2h0U291cmNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMaWdodFNvdXJjZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNTU5OEZBMEQwMEQ4QjkwMEJCODI1QyAv
KiBTVkdMaWdodFNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TGlnaHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk4RkIwRDAw
RDhCOTAwQkI4MjVDIC8qIFNWR1BvaW50TGlnaHRTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNWR1BvaW50TGlnaHRTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzMDQ4LDcgKzEyOTU2LDYgQEAKIAkJQjI1NTk4OUMwRDAwRDhCODAwQkI4
MjVDIC8qIGZpbHRlcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAotCQkJCUIyNTU5ODlEMEQwMEQ4QjgwMEJCODI1QyAvKiBjZyAqLywKIAkJCQlCMjU1OThENzBE
MDBEOEI5MDBCQjgyNUMgLyogU1ZHRGlzdGFudExpZ2h0U291cmNlLmggKi8sCiAJCQkJQjI1NTk4
RTAwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR0ZFQ29udm9sdmVNYXRyaXguY3BwICovLAogCQkJCUIy
NTU5OEUxMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGRUNvbnZvbHZlTWF0cml4LmggKi8sCkBAIC0x
MzA3OCw4ICsxMjk4NSw2IEBACiAJCQkJODQ1RTcyRkEwRkQyNjIzOTAwQTg3RDc5IC8qIFNWR0Zp
bHRlci5oICovLAogCQkJCTA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0ZXJCdWls
ZGVyLmNwcCAqLywKIAkJCQkwODFFQkYzOTBGRDM0RjQxMDBEQTc1NTkgLyogU1ZHRmlsdGVyQnVp
bGRlci5oICovLAotCQkJCUIyNTU5OEY3MEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZl
Y3QuY3BwICovLAotCQkJCUIyNTU5OEY4MEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdGaWx0ZXJFZmZl
Y3QuaCAqLywKIAkJCQlCMjU1OThGOTBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHTGlnaHRTb3VyY2Uu
Y3BwICovLAogCQkJCUIyNTU5OEZBMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdMaWdodFNvdXJjZS5o
ICovLAogCQkJCUIyNTU5OEZCMEQwMEQ4QjkwMEJCODI1QyAvKiBTVkdQb2ludExpZ2h0U291cmNl
LmggKi8sCkBAIC0xMzA4OCw1NyArMTI5OTMsNiBAQAogCQkJcGF0aCA9IGZpbHRlcnM7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlCMjU1OTg5RDBEMDBEOEI4MDBCQjgyNUMg
LyogY2cgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUIy
NTU5OEE2MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5oICovLAotCQkJCUIyNTU5
OEE3MEQwMEQ4QjgwMEJCODI1QyAvKiBTVkdGRUhlbHBlcnNDZy5tbSAqLywKLQkJCQlCMjU1OThB
RDBEMDBEOEI4MDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0Q2cubW0gKi8sCi0JCQkJQjI1NTk4
QUUwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5jaWtlcm5lbCAqLywKLQkJ
CQlCMjU1OThBRjBEMDBEOEI5MDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmggKi8sCi0J
CQkJQjI1NTk4QjAwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRpY0ZpbHRlci5tICovLAot
CQkJCUIyNTU5OEIxMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNp
a2VybmVsICovLAotCQkJCUIyNTU5OEIyMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0NvbXBvbmVudE1l
cmdlRmlsdGVyLmggKi8sCi0JCQkJQjI1NTk4QjMwRDAwRDhCOTAwQkI4MjVDIC8qIFdLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIubSAqLywKLQkJCQlCMjU1OThCNDBEMDBEOEI5MDBCQjgyNUMgLyogV0tE
aWZmdXNlTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwgKi8sCi0JCQkJQjI1NTk4QjUwRDAwRDhCOTAw
QkI4MjVDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmggKi8sCi0JCQkJQjI1NTk4QjYwRDAw
RDhCOTAwQkI4MjVDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0gKi8sCi0JCQkJQjI1NTk4
QjcwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCAq
LywKLQkJCQlCMjU1OThCODBEMDBEOEI5MDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLmggKi8sCi0JCQkJQjI1NTk4QjkwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFu
c2ZlckZpbHRlci5tICovLAotCQkJCUIyNTU5OEJBMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0Rpc3Bs
YWNlbWVudE1hcEZpbHRlci5jaWtlcm5lbCAqLywKLQkJCQlCMjU1OThCQjBEMDBEOEI5MDBCQjgy
NUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCAqLywKLQkJCQlCMjU1OThCQzBEMDBEOEI5
MDBCQjgyNUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubSAqLywKLQkJCQlCMjU1OThCRDBE
MDBEOEI5MDBCQjgyNUMgLyogV0tEaXN0YW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwgKi8sCi0JCQkJ
QjI1NTk4QkUwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLmggKi8sCi0J
CQkJQjI1NTk4QkYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLm0gKi8s
Ci0JCQkJQjI1NTk4QzAwRDAwRDhCOTAwQkI4MjVDIC8qIFdLR2FtbWFUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbCAqLywKLQkJCQlCMjU1OThDMTBEMDBEOEI5MDBCQjgyNUMgLyogV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmggKi8sCi0JCQkJQjI1NTk4QzIwRDAwRDhCOTAwQkI4MjVDIC8qIFdLR2FtbWFU
cmFuc2ZlckZpbHRlci5tICovLAotCQkJCUIyNTU5OEMzMEQwMEQ4QjkwMEJCODI1QyAvKiBXS0lk
ZW50aXR5VHJhbnNmZXJGaWx0ZXIuaCAqLywKLQkJCQlCMjU1OThDNDBEMDBEOEI5MDBCQjgyNUMg
LyogV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLm0gKi8sCi0JCQkJQjI1NTk4QzUwRDAwRDhCOTAw
QkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgKi8sCi0JCQkJQjI1NTk4
QzYwRDAwRDhCOTAwQkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaCAqLywKLQkJCQlC
MjU1OThDNzBEMDBEOEI5MDBCQjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tICovLAot
CQkJCUIyNTU5OEM4MEQwMEQ4QjkwMEJCODI1QyAvKiBXS05vcm1hbE1hcEZpbHRlci5jaWtlcm5l
bCAqLywKLQkJCQlCMjU1OThDOTBEMDBEOEI5MDBCQjgyNUMgLyogV0tOb3JtYWxNYXBGaWx0ZXIu
aCAqLywKLQkJCQlCMjU1OThDQTBEMDBEOEI5MDBCQjgyNUMgLyogV0tOb3JtYWxNYXBGaWx0ZXIu
bSAqLywKLQkJCQlCMjU1OThDQjBEMDBEOEI5MDBCQjgyNUMgLyogV0tQb2ludExpZ2h0RmlsdGVy
LmNpa2VybmVsICovLAotCQkJCUIyNTU5OENDMEQwMEQ4QjkwMEJCODI1QyAvKiBXS1BvaW50TGln
aHRGaWx0ZXIuaCAqLywKLQkJCQlCMjU1OThDRDBEMDBEOEI5MDBCQjgyNUMgLyogV0tQb2ludExp
Z2h0RmlsdGVyLm0gKi8sCi0JCQkJQjI1NTk4Q0UwRDAwRDhCOTAwQkI4MjVDIC8qIFdLU3BlY3Vs
YXJMaWdodGluZ0ZpbHRlci5jaWtlcm5lbCAqLywKLQkJCQlCMjU1OThDRjBEMDBEOEI5MDBCQjgy
NUMgLyogV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLmggKi8sCi0JCQkJQjI1NTk4RDAwRDAwRDhC
OTAwQkI4MjVDIC8qIFdLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5tICovLAotCQkJCUIyNTU5OEQx
MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbCAqLywKLQkJCQlC
MjU1OThEMjBEMDBEOEI5MDBCQjgyNUMgLyogV0tTcG90TGlnaHRGaWx0ZXIuaCAqLywKLQkJCQlC
MjU1OThEMzBEMDBEOEI5MDBCQjgyNUMgLyogV0tTcG90TGlnaHRGaWx0ZXIubSAqLywKLQkJCQlC
MjU1OThENDBEMDBEOEI5MDBCQjgyNUMgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVs
ICovLAotCQkJCUIyNTU5OEQ1MEQwMEQ4QjkwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0
ZXIuaCAqLywKLQkJCQlCMjU1OThENjBEMDBEOEI5MDBCQjgyNUMgLyogV0tUYWJsZVRyYW5zZmVy
RmlsdGVyLm0gKi8sCi0JCQkpOwotCQkJcGF0aCA9IGNnOwotCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKLQkJfTsKIAkJQjI3NTM1MjkwQjA1MzgxNDAwMkNFNjRGIC8qIGNnICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2NDg2LDcgKzE2MzQwLDYgQEAK
IAkJCQlCMjIyNzlFOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVGdW5jUkVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyNTU5OTgzMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdGRUdhdXNzaWFu
Qmx1ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjc5RUMwRDAwQkYyMjAwNzFCNzgyIC8qIFNW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5NDAwRDAw
RDhCQTAwQkI4MjVDIC8qIFNWR0ZFSGVscGVyc0NnLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjU1
OTk4NTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjIyMjc5RUYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0ZFSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjIyNzlGMjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVMaWdodEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMTY1MDQsNyArMTYzNTcsNiBAQAogCQkJCUIyMjI3QTA2MEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MjU1OTk5MDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVUdXJidWxlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCMjIyN0EwOTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVUdXJidWxlbmNlRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5OTIwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0Zp
bHRlckVmZmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBMEMwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZpbHRlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTBGMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUIyMjI3QTEyMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaXRUb1ZpZXdC
b3guaCBpbiBIZWFkZXJzICovLApAQCAtMTY3NjgsMjAgKzE2NjIwLDYgQEAKIAkJCQk5MzMwOUUy
MDA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODgzREYyODBGM0QwNDVEMDBGMTlCRjYgLyogVmlzaWJsZVNlbGVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTQ0NjEzQjYwQ0Q2MzQ0RTAwRkFEQTc1IC8qIFZvaWRDYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5NDkwRDAwRDhCQTAwQkI4MjVDIC8qIFdLQXJpdGhtZXRp
Y0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5NEMwRDAwRDhCQTAwQkI4MjVDIC8q
IFdLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyNTU5OTRGMEQw
MEQ4QkEwMEJCODI1QyAvKiBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJQjI1NTk5NTIwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5NTUwRDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlz
cGxhY2VtZW50TWFwRmlsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjU1OTk1ODBEMDBEOEJB
MDBCQjgyNUMgLyogV0tEaXN0YW50TGlnaHRGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUIy
NTU5OTVCMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUIyNTU5OTVEMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0lkZW50aXR5VHJhbnNm
ZXJGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyNTU5OTYwMEQwMEQ4QkEwMEJCODI1QyAv
KiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlCMjU1OTk2MzBE
MDBEOEJBMDBCQjgyNUMgLyogV0tOb3JtYWxNYXBGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUIyNTU5OTY2MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1BvaW50TGlnaHRGaWx0ZXIuaCBpbiBIZWFk
ZXJzICovLAotCQkJCUIyNTU5OTY5MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1NwZWN1bGFyTGlnaHRp
bmdGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUIyNTU5OTZDMEQwMEQ4QkEwMEJCODI1QyAv
KiBXS1Nwb3RMaWdodEZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjI1NTk5NkYwRDAwRDhC
QTAwQkI4MjVDIC8qIFdLVGFibGVUcmFuc2ZlckZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDg4Qzk3NTIwRUNCNkUyODAwMDUzNEJBIC8qIFdNTEFFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkwODIwM0FBMDBFRDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNzRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDgwMDgxOTcwRUQzQjJERDAwQzUzQkMwIC8qIFdNTEFuY2hvckVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTcwMTksMTkgKzE2ODU3LDYgQEAKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQlGRTZGRDQ4OTBGNjc2RTU3
MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaWRsIGluIFJlc291cmNlcyAqLywKLQkJCQlCMjU1OTk0
ODBEMDBEOEJBMDBCQjgyNUMgLyogV0tBcml0aG1ldGljRmlsdGVyLmNpa2VybmVsIGluIFJlc291
cmNlcyAqLywKLQkJCQlCMjU1OTk0QjBEMDBEOEJBMDBCQjgyNUMgLyogV0tDb21wb25lbnRNZXJn
ZUZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NEUwRDAwRDhCQTAw
QkI4MjVDIC8qIFdLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAq
LywKLQkJCQlCMjU1OTk1MTBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaXNjcmV0ZVRyYW5zZmVyRmls
dGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKLQkJCQlCMjU1OTk1NDBEMDBEOEJBMDBCQjgy
NUMgLyogV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuY2lrZXJuZWwgaW4gUmVzb3VyY2VzICovLAot
CQkJCUIyNTU5OTU3MEQwMEQ4QkEwMEJCODI1QyAvKiBXS0Rpc3RhbnRMaWdodEZpbHRlci5jaWtl
cm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NUEwRDAwRDhCQTAwQkI4MjVDIC8qIFdL
R2FtbWFUcmFuc2ZlckZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5
NUYwRDAwRDhCQTAwQkI4MjVDIC8qIFdLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwgaW4g
UmVzb3VyY2VzICovLAotCQkJCUIyNTU5OTYyMEQwMEQ4QkEwMEJCODI1QyAvKiBXS05vcm1hbE1h
cEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NjUwRDAwRDhCQTAw
QkI4MjVDIC8qIFdLUG9pbnRMaWdodEZpbHRlci5jaWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0J
CQkJQjI1NTk5NjgwRDAwRDhCQTAwQkI4MjVDIC8qIFdLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5j
aWtlcm5lbCBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NkIwRDAwRDhCQTAwQkI4MjVDIC8q
IFdLU3BvdExpZ2h0RmlsdGVyLmNpa2VybmVsIGluIFJlc291cmNlcyAqLywKLQkJCQlCMjU1OTk2
RTBEMDBEOEJBMDBCQjgyNUMgLyogV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmNpa2VybmVsIGluIFJl
c291cmNlcyAqLywKIAkJCQk0NkY5RDVERDBCMEQ2MDE3MDAyOEVFMzYgLyogYWxpYXNDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQk0NkQ0RjI0OTBBRjk3RTgxMDAzNTM4NUEgLyogY2Vs
bEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTQ2RDRGMjRBMEFGOTdFODEwMDM1Mzg1
QSAvKiBjb250ZXh0TWVudUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLApAQCAtMTg1NDksNyAr
MTgzNzQsNiBAQAogCQkJCUIyMjI3OUU4MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRUZ1bmNSRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjU1OTk4MjBEMDBEOEJBMDBCQjgyNUMgLyog
U1ZHRkVHYXVzc2lhbkJsdXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RUIwRDAwQkYy
MjAwNzFCNzgyIC8qIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
LQkJCQlCMjU1OTk0MTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVIZWxwZXJzQ2cubW0gaW4gU291
cmNlcyAqLywKIAkJCQlCMjU1OTk4NDBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRkVJbWFnZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzlFRTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRkVJbWFn
ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjc5RjEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR0ZFTGlnaHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTg1NjcsOCArMTgz
OTEsNiBAQAogCQkJCUIyMjI3QTA1MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGRVRpbGVFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNTU5OThGMEQwMEQ4QkEwMEJCODI1QyAvKiBTVkdG
RVR1cmJ1bGVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBMDgwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0ZFVHVyYnVsZW5jZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1
NTk5OTEwRDAwRDhCQTAwQkI4MjVDIC8qIFNWR0ZpbHRlckVmZmVjdC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlCMjU1OTk0NzBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHRmlsdGVyRWZmZWN0Q2cubW0g
aW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EwQjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHRmlsdGVy
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0EwRTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyMjI3QTExMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdGaXRUb1ZpZXdCb3guY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0xODgwNSwyMCArMTg2MjcsNiBAQAogCQkJCTcyODRBREREMEU2RkVC
MzEwMDJFRUZCRCAvKiBVc2VyU3R5bGVTaGVldExvYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5MzMwOUUxRjA5OUU2NDkyMDA1NkU1ODEgLyogVmlzaWJsZVBvc2l0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4ODNERjI3MEYzRDA0NUQwMEYxOUJGNiAvKiBWaXNpYmxlU2VsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTRBMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0Fy
aXRobWV0aWNGaWx0ZXIubSBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTREMEQwMEQ4QkEwMEJC
ODI1QyAvKiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyLm0gaW4gU291cmNlcyAqLywKLQkJCQlCMjU1
OTk1MDBEMDBEOEJBMDBCQjgyNUMgLyogV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIubSBpbiBTb3Vy
Y2VzICovLAotCQkJCUIyNTU5OTUzMEQwMEQ4QkEwMEJCODI1QyAvKiBXS0Rpc2NyZXRlVHJhbnNm
ZXJGaWx0ZXIubSBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTU2MEQwMEQ4QkEwMEJCODI1QyAv
KiBXS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5tIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1NTk5NTkw
RDAwRDhCQTAwQkI4MjVDIC8qIFdLRGlzdGFudExpZ2h0RmlsdGVyLm0gaW4gU291cmNlcyAqLywK
LQkJCQlCMjU1OTk1QzBEMDBEOEJBMDBCQjgyNUMgLyogV0tHYW1tYVRyYW5zZmVyRmlsdGVyLm0g
aW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk1RTBEMDBEOEJBMDBCQjgyNUMgLyogV0tJZGVudGl0
eVRyYW5zZmVyRmlsdGVyLm0gaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk2MTBEMDBEOEJBMDBC
QjgyNUMgLyogV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5tIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1
NTk5NjQwRDAwRDhCQTAwQkI4MjVDIC8qIFdLTm9ybWFsTWFwRmlsdGVyLm0gaW4gU291cmNlcyAq
LywKLQkJCQlCMjU1OTk2NzBEMDBEOEJBMDBCQjgyNUMgLyogV0tQb2ludExpZ2h0RmlsdGVyLm0g
aW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk2QTBEMDBEOEJBMDBCQjgyNUMgLyogV0tTcGVjdWxh
ckxpZ2h0aW5nRmlsdGVyLm0gaW4gU291cmNlcyAqLywKLQkJCQlCMjU1OTk2RDBEMDBEOEJBMDBC
QjgyNUMgLyogV0tTcG90TGlnaHRGaWx0ZXIubSBpbiBTb3VyY2VzICovLAotCQkJCUIyNTU5OTcw
MEQwMEQ4QkEwMEJCODI1QyAvKiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIubSBpbiBTb3VyY2VzICov
LAogCQkJCTA4OEM5NzUxMEVDQjZFMjgwMDA1MzRCQSAvKiBXTUxBRWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwODIwM0E5RjBFRDhDMzUzMDBCOEI2MUEgLyogV01MQWNjZXNzRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODAwODE5NjBFRDNCMkREMDBDNTNCQzAgLyogV01M
QW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVyQ2Fpcm8uY3BwCShyZXZpc2lv
biA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2NhaXJvL1NWR1Jlc291cmNlRmlsdGVy
Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBN
QSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5o
IgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEqIFNWR1Jlc291cmNlRmlsdGVyOjpjcmVh
dGVQbGF0Zm9ybURhdGEoKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250
ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQot
dm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNv
bnN0IEZsb2F0UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cv
U1ZHUmVzb3VyY2VGaWx0ZXJDZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5jcHAJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3VyY2VGaWx0ZXJDZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA2IERh
dmUgTWFjTGFjaGxhbiAoZG1hY2xhY2hAbWFjLmNvbSkKLSAqICAgICAgICAgICAgICAgMjAwNiBS
b2IgQnVpcyA8YnVpc0BrZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRl
ZC5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEqIFNWR1Jlc291cmNlRmlsdGVyOjpj
cmVhdGVQbGF0Zm9ybURhdGEoKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkIFNWR1Jlc291
cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJl
Y3QmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgU1ZHUmVzb3VyY2VGaWx0
ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvY2cvU1ZHUmVzb3Vy
Y2VGaWx0ZXJDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9jZy9TVkdS
ZXNvdXJjZUZpbHRlckNnLm1tCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2NnL1NWR1Jlc291cmNlRmlsdGVyQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTQzICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgICAgICAgICAgKEMpIDIwMDcgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotI2luY2x1ZGUgIlNWR1Jlc291cmNl
RmlsdGVyLmgiCi0KLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgotCi0jaW5jbHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9y
bURhdGFNYWMuaCIKLQotI2luY2x1ZGUgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+Ci0KLS8vIFNl
dHRpbmcgdG8gYSB2YWx1ZSA+IDAgYWxsb3dzIHRvIGR1bXAgdGhlIG91dHB1dCBpbWFnZSBhcyBK
UEVHLgotI2RlZmluZSBERUJVR19PVVRQVVRfSU1BR0UgMAotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhKiBTVkdSZXNvdXJjZUZpbHRlcjo6Y3Jl
YXRlUGxhdGZvcm1EYXRhKCkKLXsKLSAgICByZXR1cm4gbmV3IFNWR1Jlc291cmNlRmlsdGVyUGxh
dGZvcm1EYXRhTWFjKHRoaXMpOwotfQotCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJl
RmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCkK
LXsKLSAgICBpZiAoYmJveC5pc0VtcHR5KCkgfHwgbV9lZmZlY3RzLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqIHBsYXRm
b3JtID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMqPihwbGF0
Zm9ybURhdGEoKSk7Ci0gICAgCi0gICAgQ0dDb250ZXh0UmVmIGNnQ29udGV4dCA9IGNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpOwotCi0gICAgLy8gVXNlIG9mIENHQmVnaW4vRW5kVHJhbnNwYXJl
bmN5TGF5ZXIgYXJvdW5kIHRoaXMgY2FsbCBjYXVzZXMgb3ZlciByZWxlYXNlCi0gICAgLy8gb2Yg
Y2dDb250ZXh0IGR1ZSB0byBpdCBiZWluZyBjcmVhdGVkIG9uIGFuIGF1dG9yZWxlYXNlIHBvb2ws
IGFuZCByZWxlYXNlZAotICAgIC8vIGFmdGVyIENHRW5kVHJhbnNwYXJlbmN5TGF5ZXIuIENyZWF0
ZSBsb2NhbCBwb29sIHRvIGZpeC4KLSAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQyNT4KLSAgICAvLyA8aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njk0Nz4KLSAgICAvLyA8cmRhcjovL3Byb2JsZW0vNDY0NzczNT4KLSAgICBOU0F1
dG9yZWxlYXNlUG9vbCogZmlsdGVyQ29udGV4dFBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFs
bG9jXSBpbml0XTsKLSAgICBwbGF0Zm9ybS0+bV9maWx0ZXJDSUNvbnRleHQgPSBbQ0lDb250ZXh0
IGNvbnRleHRXaXRoQ0dDb250ZXh0OmNnQ29udGV4dCBvcHRpb25zOm5pbF07Ci0gICAgW2ZpbHRl
ckNvbnRleHRQb29sIGRyYWluXTsKLQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0ID0gZmlsdGVy
QkJveEZvckl0ZW1CQm94KGJib3gpOwotCi0gICAgLy8gVE9ETzogRW5zdXJlIHRoZSBzaXplIGlz
IG5vdCBncmVhdGVyIHRoYW4gdGhlIG5lYXJlc3QgPHN2Zz4gc2l6ZSBhbmQvb3IgdGhlIHdpbmRv
dyBzaXplLgotICAgIC8vIFRoaXMgaXMgYWxzbyBuZWVkZWQgZm9yIG1hc2tpbmcgJiBncmFkaWVu
dHMtb24tc3Ryb2tlLW9mLXRleHQuIEZpbGUgYSBidWcgb24gdGhpcy4KLSAgICBmbG9hdCB3aWR0
aCA9IGZpbHRlclJlY3Qud2lkdGgoKTsKLSAgICBmbG9hdCBoZWlnaHQgPSBmaWx0ZXJSZWN0Lmhl
aWdodCgpOwotCi0gICAgcGxhdGZvcm0tPm1fZmlsdGVyQ0dMYXllciA9IFtwbGF0Zm9ybS0+bV9m
aWx0ZXJDSUNvbnRleHQuZ2V0KCkgY3JlYXRlQ0dMYXllcldpdGhTaXplOkNHU2l6ZU1ha2Uod2lk
dGgsIGhlaWdodCkgaW5mbzpOVUxMXTsKLQotICAgIGNvbnRleHQgPSBuZXcgR3JhcGhpY3NDb250
ZXh0KENHTGF5ZXJHZXRDb250ZXh0KHBsYXRmb3JtLT5tX2ZpbHRlckNHTGF5ZXIpKTsKLSAgICBj
b250ZXh0LT5zYXZlKCk7Ci0KLSAgICBjb250ZXh0LT50cmFuc2xhdGUoLWZpbHRlclJlY3QueCgp
LCAtZmlsdGVyUmVjdC55KCkpOwotfQotCi0jaWZuZGVmIE5ERUJVRwotLy8gRXh0cmVtbHkgaGVs
cGZ1bCBkZWJ1Z2dpbmcgdXRpbGl0aWVzIGZvciBhbnkgcGFpbnQgc2VydmVyIC8gcmVzb3VyY2Ug
dGhhdCBjcmVhdGVzCi0vLyBpbnRlcm5hbCBpbWFnZSBidWZmZXJzIChpZS4gZ3JhZGllbnRzIG9u
IHRleHQsIG1hc2tzLCBmaWx0ZXJzLi4uKQotdm9pZCBkdW1wQ0lPdXRwdXRJbWFnZShDSUltYWdl
KiBvdXRwdXRJbWFnZSwgTlNTdHJpbmcqIGZpbGVOYW1lKQotewotICAgIENHU2l6ZSBleHRlbnRT
aXplID0gW291dHB1dEltYWdlIGV4dGVudF0uc2l6ZTsKLSAgICBOU0ltYWdlKiBpbWFnZSA9IFtb
W05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoU2l6ZTpOU01ha2VTaXplKGV4dGVudFNpemUud2lkdGgs
IGV4dGVudFNpemUuaGVpZ2h0KV0gYXV0b3JlbGVhc2VdOwotICAgIFtpbWFnZSBhZGRSZXByZXNl
bnRhdGlvbjpbTlNDSUltYWdlUmVwIGltYWdlUmVwV2l0aENJSW1hZ2U6b3V0cHV0SW1hZ2VdXTsK
LQotICAgIE5TRGF0YSogaW1hZ2VEYXRhID0gW2ltYWdlIFRJRkZSZXByZXNlbnRhdGlvbl07Ci0g
ICAgTlNCaXRtYXBJbWFnZVJlcCogaW1hZ2VSZXAgPSBbTlNCaXRtYXBJbWFnZVJlcCBpbWFnZVJl
cFdpdGhEYXRhOmltYWdlRGF0YV07Ci0gICAgaW1hZ2VEYXRhID0gW2ltYWdlUmVwIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TSlBFR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKLQotICAgIFtp
bWFnZURhdGEgd3JpdGVUb0ZpbGU6ZmlsZU5hbWUgYXRvbWljYWxseTpZRVNdOwotfQotCi12b2lk
IGR1bXBDR091dHB1dEltYWdlKENHSW1hZ2UqIG91dHB1dEltYWdlLCBOU1N0cmluZyogZmlsZU5h
bWUpCi17Ci0gICAgaWYgKENJSW1hZ2UqIGNpT3V0cHV0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdp
dGhDR0ltYWdlOm91dHB1dEltYWdlXSkKLSAgICAgICAgZHVtcENJT3V0cHV0SW1hZ2UoY2lPdXRw
dXRJbWFnZSwgZmlsZU5hbWUpOwotfQotI2VuZGlmCi0KLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6
OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
YmJveCkKLXsKLSAgICBpZiAoYmJveC5pc0VtcHR5KCkgfHwgbV9lZmZlY3RzLmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMq
IHBsYXRmb3JtID0gc3RhdGljX2Nhc3Q8U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMq
PihwbGF0Zm9ybURhdGEoKSk7Ci0gICAgCi0gICAgLy8gYWN0dWFsbHkgYXBwbHkgdGhlIGZpbHRl
ciBlZmZlY3RzCi0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENH
TGF5ZXI6cGxhdGZvcm0tPm1fZmlsdGVyQ0dMYXllcl07Ci0gICAgTlNBcnJheSogZmlsdGVyU3Rh
Y2sgPSBwbGF0Zm9ybS0+Z2V0Q0lGaWx0ZXJTdGFjayhpbnB1dEltYWdlLCBiYm94KTsKLSAgICBp
ZiAoW2ZpbHRlclN0YWNrIGNvdW50XSkgewotICAgICAgICBDSUltYWdlKiBvdXRwdXRJbWFnZSA9
IFtbZmlsdGVyU3RhY2sgbGFzdE9iamVjdF0gdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOwot
Ci0gICAgICAgIGlmIChvdXRwdXRJbWFnZSkgewotI2lmIERFQlVHX09VVFBVVF9JTUFHRSA+IDAK
LSAgICAgICAgICAgIGR1bXBPdXRwdXRJbWFnZShvdXRwdXRJbWFnZSk7Ci0jZW5kaWYKLQotICAg
ICAgICAgICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goYmJv
eCk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGRlc3RPcmlnaW4gPSBmaWx0ZXJSZWN0LmxvY2F0
aW9uKCk7Ci0gICAgICAgICAgICBmaWx0ZXJSZWN0LnNldExvY2F0aW9uKEZsb2F0UG9pbnQoMC4w
ZiwgMC4wZikpOwotCi0gICAgICAgICAgICBbcGxhdGZvcm0tPm1fZmlsdGVyQ0lDb250ZXh0Lmdl
dCgpIGRyYXdJbWFnZTpvdXRwdXRJbWFnZSBhdFBvaW50OkNHUG9pbnQoZGVzdE9yaWdpbikgZnJv
bVJlY3Q6ZmlsdGVyUmVjdF07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDR0xheWVyUmVsZWFz
ZShwbGF0Zm9ybS0+bV9maWx0ZXJDR0xheWVyKTsKLSAgICBwbGF0Zm9ybS0+bV9maWx0ZXJDR0xh
eWVyID0gMDsKLQotICAgIHBsYXRmb3JtLT5tX2ZpbHRlckNJQ29udGV4dCA9IDA7Ci0KLSAgICBk
ZWxldGUgY29udGV4dDsKLSAgICBjb250ZXh0ID0gMDsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5B
QkxFKFNWRykgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyRWZmZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAg
ICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Ci0gICAgICAgICAg
ICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNpbmNsdWRl
ICJTVkdGaWx0ZXJFZmZlY3QuaCIKLQotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIK
LSNpbmNsdWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LVNWR0ZpbHRlckVmZmVjdDo6U1ZHRmlsdGVyRWZmZWN0KFNWR1Jlc291cmNlRmlsdGVyKiBmaWx0
ZXIpCi0gICAgOiBtX2ZpbHRlcihmaWx0ZXIpCi0gICAgLCBtX3hCQm94TW9kZShmYWxzZSkKLSAg
ICAsIG1feUJCb3hNb2RlKGZhbHNlKQotICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQotICAg
ICwgbV9oZWlnaHRCQm94TW9kZShmYWxzZSkKLXsKLX0KLQotRmxvYXRSZWN0IFNWR0ZpbHRlckVm
ZmVjdDo6cHJpbWl0aXZlQkJveEZvckZpbHRlckJCb3goY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJC
Qm94LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdAotewotICAgIEZsb2F0UmVjdCBz
dWJSZWdpb25CQm94ID0gc3ViUmVnaW9uKCk7Ci0gICAgRmxvYXRSZWN0IHVzZUJCb3ggPSBmaWx0
ZXJCQm94OwotCi0gICAgQVNTRVJUKG1fZmlsdGVyKTsKLSAgICBpZiAoIW1fZmlsdGVyKQotICAg
ICAgICByZXR1cm4gRmxvYXRSZWN0KCk7Ci0KLSAgICBpZiAobV9maWx0ZXItPmVmZmVjdEJvdW5k
aW5nQm94TW9kZSgpKSB7Ci0gICAgICAgIGlmICghbV9maWx0ZXItPmZpbHRlckJvdW5kaW5nQm94
TW9kZSgpKQotICAgICAgICAgICAgdXNlQkJveCA9IGl0ZW1CQm94OwotCi0gICAgICAgIHN1YlJl
Z2lvbkJCb3ggPSBGbG9hdFJlY3QodXNlQkJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVz
ZUJCb3gud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VCQm94
LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWlnaHQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94Lndp
ZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViUmVnaW9uQkJveC5o
ZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICh4
Qm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFgodXNlQkJv
eC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVzZUJCb3gud2lkdGgoKSk7Ci0KLSAgICAgICAg
aWYgKHlCb3VuZGluZ0JveE1vZGUoKSkKLSAgICAgICAgICAgIHN1YlJlZ2lvbkJCb3guc2V0WSh1
c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWlnaHQoKSk7Ci0KLSAg
ICAgICAgaWYgKHdpZHRoQm91bmRpbmdCb3hNb2RlKCkpCi0gICAgICAgICAgICBzdWJSZWdpb25C
Qm94LnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIHVzZUJCb3gud2lkdGgoKSk7Ci0K
LSAgICAgICAgaWYgKGhlaWdodEJvdW5kaW5nQm94TW9kZSgpKQotICAgICAgICAgICAgc3ViUmVn
aW9uQkJveC5zZXRIZWlnaHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0
KCkpOwotICAgIH0KLQotICAgIHJldHVybiBzdWJSZWdpb25CQm94OwotfQotCi1GbG9hdFJlY3Qg
U1ZHRmlsdGVyRWZmZWN0OjpzdWJSZWdpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX3N1YlJl
Z2lvbjsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFZmZlY3Q6OnNldFN1YlJlZ2lvbihjb25zdCBGbG9h
dFJlY3QmIHN1YlJlZ2lvbikKLXsKLSAgICBtX3N1YlJlZ2lvbiA9IHN1YlJlZ2lvbjsKLX0KLQot
U3RyaW5nIFNWR0ZpbHRlckVmZmVjdDo6aW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2luOwot
fQotCi12b2lkIFNWR0ZpbHRlckVmZmVjdDo6c2V0SW4oY29uc3QgU3RyaW5nJiBpbikKLXsKLSAg
ICBtX2luID0gaW47Ci19Ci0KLVN0cmluZyBTVkdGaWx0ZXJFZmZlY3Q6OnJlc3VsdCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcmVzdWx0OwotfQotCi12b2lkIFNWR0ZpbHRlckVmZmVjdDo6c2V0
UmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQotewotICAgIG1fcmVzdWx0ID0gcmVzdWx0Owot
fQotCi1TVkdSZXNvdXJjZUZpbHRlciogU1ZHRmlsdGVyRWZmZWN0OjpmaWx0ZXIoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2ZpbHRlcjsKLX0KLQotdm9pZCBTVkdGaWx0ZXJFZmZlY3Q6OnNldEZp
bHRlcihTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKQotewotICAgIG1fZmlsdGVyID0gZmlsdGVy
OwotfQotCi1UZXh0U3RyZWFtJiBTVkdGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0Ci17Ci0gICAgaWYgKCFpbigpLmlzRW1wdHkoKSkKLSAg
ICAgICAgdHMgPDwgIltpbj1cIiIgPDwgaW4oKSA8PCAiXCJdIjsKLSAgICBpZiAoIXJlc3VsdCgp
LmlzRW1wdHkoKSkKLSAgICAgICAgdHMgPDwgIiBbcmVzdWx0PVwiIiA8PCByZXN1bHQoKSA8PCAi
XCJdIjsKLSAgICBpZiAoIXN1YlJlZ2lvbigpLmlzRW1wdHkoKSkKLSAgICAgICAgdHMgPDwgIiBb
c3VicmVnaW9uPVwiIiA8PCBzdWJSZWdpb24oKSA8PCAiXCJdIjsKLSAgICByZXR1cm4gdHM7Ci19
Ci0KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNWR0ZpbHRl
ckVmZmVjdCYgZSkKLXsKLSAgICByZXR1cm4gZS5leHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0Zp
bHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXJFZmZlY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw5OSArMCww
IEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtvbGFz
IFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDQs
IDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAgIDIwMDUgRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgot
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYgU1ZHRmlsdGVyRWZmZWN0X2gK
LSNkZWZpbmUgU1ZHRmlsdGVyRWZmZWN0X2gKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQotI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCi0KLSNpZiBQTEFURk9STShDSSkKLSNpZmRlZiBfX09CSkNfXwotQGNsYXNzIENJRmlsdGVy
OwotI2Vsc2UKLWNsYXNzIENJRmlsdGVyOwotI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1jbGFzcyBTVkdSZXNvdXJjZUZpbHRlcjsKLWNsYXNzIFRleHRTdHJlYW07Ci0K
LWNsYXNzIFNWR0ZpbHRlckVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFNWR0ZpbHRlckVmZmVj
dD4gewotcHVibGljOgotICAgIFNWR0ZpbHRlckVmZmVjdChTVkdSZXNvdXJjZUZpbHRlciopOwot
ICAgIHZpcnR1YWwgflNWR0ZpbHRlckVmZmVjdCgpIHsgfQotCi0gICAgYm9vbCB4Qm91bmRpbmdC
b3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV94QkJveE1vZGU7IH0KLSAgICB2b2lkIHNldFhCb3Vu
ZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX3hCQm94TW9kZSA9IGJib3hNb2RlOyB9Ci0K
LSAgICBib29sIHlCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBtX3lCQm94TW9kZTsg
fQotICAgIHZvaWQgc2V0WUJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1feUJCb3hN
b2RlID0gYmJveE1vZGU7IH0KLQotICAgIGJvb2wgd2lkdGhCb3VuZGluZ0JveE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX3dpZHRoQkJveE1vZGU7IH0KLSAgICB2b2lkIHNldFdpZHRoQm91bmRpbmdC
b3hNb2RlKGJvb2wgYmJveE1vZGUpIHsgbV93aWR0aEJCb3hNb2RlID0gYmJveE1vZGU7IH0KLQot
ICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHRC
Qm94TW9kZTsgfQotICAgIHZvaWQgc2V0SGVpZ2h0Qm91bmRpbmdCb3hNb2RlKGJvb2wgYmJveE1v
ZGUpIHsgbV9oZWlnaHRCQm94TW9kZSA9IGJib3hNb2RlOyB9Ci0KLSAgICBGbG9hdFJlY3QgcHJp
bWl0aXZlQkJveEZvckZpbHRlckJCb3goY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJCQm94LCBjb25z
dCBGbG9hdFJlY3QmIGl0ZW1CQm94KSBjb25zdDsKLQotICAgIEZsb2F0UmVjdCBzdWJSZWdpb24o
KSBjb25zdDsKLSAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QmKTsKLQotICAg
IFN0cmluZyBpbigpIGNvbnN0OwotICAgIHZvaWQgc2V0SW4oY29uc3QgU3RyaW5nJik7Ci0KLSAg
ICBTdHJpbmcgcmVzdWx0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRSZXN1bHQoY29uc3QgU3RyaW5n
Jik7Ci0KLSAgICBTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyKCkgY29uc3Q7Ci0gICAgdm9pZCBz
ZXRGaWx0ZXIoU1ZHUmVzb3VyY2VGaWx0ZXIqKTsKLQotICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYg
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7Ci0KLSNpZiBQTEFURk9S
TShDSSkKLSAgICB2aXJ0dWFsIENJRmlsdGVyKiBnZXRDSUZpbHRlcihjb25zdCBGbG9hdFJlY3Qm
IGJib3gpIGNvbnN0OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgU1ZHUmVzb3VyY2VGaWx0ZXIq
IG1fZmlsdGVyOwotCi0gICAgYm9vbCBtX3hCQm94TW9kZSA6IDE7Ci0gICAgYm9vbCBtX3lCQm94
TW9kZSA6IDE7Ci0gICAgYm9vbCBtX3dpZHRoQkJveE1vZGUgOiAxOwotICAgIGJvb2wgbV9oZWln
aHRCQm94TW9kZSA6IDE7Ci0KLSAgICBGbG9hdFJlY3QgbV9zdWJSZWdpb247Ci0gCi0gICAgU3Ry
aW5nIG1faW47Ci0gICAgU3RyaW5nIG1fcmVzdWx0OwotfTsKLQotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgU1ZHRmlsdGVyRWZmZWN0Jik7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQot
Ci0jZW5kaWYgLy8gU1ZHRmlsdGVyRWZmZWN0X2gKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvU1ZHRkVIZWxwZXJzQ2cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0NnLmgJKHJldmlzaW9uIDQ0MzIxKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotCi0gICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxF
KEZJTFRFUlMpCi0KLSNpbmNsdWRlICJCbG9ja0V4Y2VwdGlvbnMuaCIKLSNpbmNsdWRlICJTVkdG
RURpc3BsYWNlbWVudE1hcC5oIgotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCi0jaW5j
bHVkZSAiU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMuaCIKLSNpbmNsdWRlIDxRdWFy
dHpDb3JlL0NvcmVJbWFnZS5oPgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0KLWNsYXNz
IENvbG9yOwotY2xhc3MgTGlnaHRTb3VyY2U7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lW
ZWN0b3IqIGdldFZlY3RvckZvckNoYW5uZWwoQ2hhbm5lbFNlbGVjdG9yVHlwZSBjaGFubmVsKTsK
LUNJQ29sb3IqIGNpQ29sb3IoY29uc3QgQ29sb3ImIGMpOwotCi0vLyBMaWdodGluZwotQ0lGaWx0
ZXIqIGdldFBvaW50TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3JtYWxzLCBDSVZlY3RvciogbGln
aHRQb3NpdGlvbiwgZmxvYXQgc3VyZmFjZVNjYWxlKTsKLUNJRmlsdGVyKiBnZXRMaWdodFZlY3Rv
cnMoQ0lGaWx0ZXIqIG5vcm1hbHMsIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodCwgZmxvYXQgc3Vy
ZmFjZVNjYWxlKTsKLUNJRmlsdGVyKiBnZXROb3JtYWxNYXAoQ0lJbWFnZSogYnVtcE1hcCwgZmxv
YXQgc2NhbGUpOwotCi19OwotCi0vLyBNYWNyb3MgdXNlZCBieSB0aGUgU1ZHRkUqQ2cgY2xhc3Nl
cwotI2RlZmluZSBGRV9RVUFSVFpfU0VUVVBfSU5QVVQobmFtZSkgXAotICAgIFNWR1Jlc291cmNl
RmlsdGVyUGxhdGZvcm1EYXRhTWFjKiBmaWx0ZXJQbGF0Zm9ybURhdGEgPSBzdGF0aWNfY2FzdDxT
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyo+KHN2Z0ZpbHRlci0+cGxhdGZvcm1EYXRh
KCkpOyBcCi0gICAgQ0lJbWFnZSogaW5wdXRJbWFnZSA9IGZpbHRlclBsYXRmb3JtRGF0YS0+aW5w
dXRJbWFnZSh0aGlzKTsgXAotICAgIEZFX1FVQVJUWl9DSEVDS19JTlBVVChpbnB1dEltYWdlKSBc
Ci0gICAgQ0lGaWx0ZXIqIGZpbHRlcjsgXAotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsgXAotICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpuYW1lXTsgXAotICAg
IFtmaWx0ZXIgc2V0RGVmYXVsdHNdOyBcCi0gICAgW2ZpbHRlciBzZXRWYWx1ZTppbnB1dEltYWdl
IGZvcktleTpAImlucHV0SW1hZ2UiXTsKLQotI2RlZmluZSBGRV9RVUFSVFpfQ0hFQ0tfSU5QVVQo
aW5wdXQpIFwKLSAgICBpZiAoIWlucHV0KSBcCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSNkZWZp
bmUgRkVfUVVBUlRaX09VVFBVVF9SRVRVUk4gXAotICAgIGZpbHRlclBsYXRmb3JtRGF0YS0+c2V0
T3V0cHV0SW1hZ2UodGhpcywgW2ZpbHRlciB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl0pOyBc
Ci0gICAgcmV0dXJuIGZpbHRlcjsgXAotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7IFwK
LSAgICByZXR1cm4gbmlsOwotCi0jZGVmaW5lIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OX1BS
RVBBUkUoYmJveCkgXAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0ID0gc3ZnRmlsdGVyLT5maWx0
ZXJCQm94Rm9ySXRlbUJCb3goYmJveCk7IFwKLSAgICBGbG9hdFJlY3QgY3JvcFJlY3QgPSBwcmlt
aXRpdmVCQm94Rm9yRmlsdGVyQkJveChmaWx0ZXJSZWN0LCBiYm94KTsgXAotICAgIGNyb3BSZWN0
LmludGVyc2VjdChmaWx0ZXJSZWN0KTsgXAotICAgIGNyb3BSZWN0Lm1vdmUoLWZpbHRlclJlY3Qu
eCgpLCAtZmlsdGVyUmVjdC55KCkpOwotCi0jZGVmaW5lIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVH
SU9OX0FQUExZKGNyb3BSZWN0KSBcCi0gICAgeyBcCi0gICAgICAgIENJRmlsdGVyKiBjcm9wID0g
W0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lDcm9wIl07IFwKLSAgICAgICAgW2Nyb3Agc2V0
RGVmYXVsdHNdOyBcCi0gICAgICAgIGlmIChDSUltYWdlKiBjdXJyZW50RmlsdGVyT3V0cHV0SW1h
Z2UgPSBbZmlsdGVyIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSkgeyBcCi0gICAgICAgICAg
ICBbY3JvcCBzZXRWYWx1ZTpjdXJyZW50RmlsdGVyT3V0cHV0SW1hZ2UgZm9yS2V5OkAiaW5wdXRJ
bWFnZSJdOyBcCi0gICAgICAgICAgICBbY3JvcCBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0
aFg6Y3JvcFJlY3QueCgpIFk6Y3JvcFJlY3QueSgpIFo6Y3JvcFJlY3Qud2lkdGgoKSBXOmNyb3BS
ZWN0LmhlaWdodCgpXSBmb3JLZXk6QCJpbnB1dFJlY3RhbmdsZSJdOyBcCi0gICAgICAgICAgICBm
aWx0ZXIgPSBjcm9wOyBcCi0gICAgICAgIH0gXAotICAgIH0KLQotI2RlZmluZSBGRV9RVUFSVFpf
TUFQX1RPX1NVQlJFR0lPTihiYm94KSBcCi0gICAgRkVfUVVBUlRaX01BUF9UT19TVUJSRUdJT05f
UFJFUEFSRShiYm94KTsgXAotICAgIEZFX1FVQVJUWl9NQVBfVE9fU1VCUkVHSU9OX0FQUExZKGNy
b3BSZWN0KTsKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdGRUhlbHBlcnNDZy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1NWR0ZFSGVscGVyc0Nn
Lm1tCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
U1ZHRkVIZWxwZXJzQ2cubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTYyICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUu
b3JnPgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNp
bmNsdWRlICJTVkdGRUhlbHBlcnNDZy5oIgotCi0jaW5jbHVkZSAiQ29sb3IuaCIKLSNpbmNsdWRl
ICJTVkdEaXN0YW50TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlICJTVkdMaWdodFNvdXJjZS5oIgot
I2luY2x1ZGUgIlNWR1BvaW50TGlnaHRTb3VyY2UuaCIKLSNpbmNsdWRlICJTVkdTcG90TGlnaHRT
b3VyY2UuaCIKLQotI2ltcG9ydCAiV0tEaXN0YW50TGlnaHRGaWx0ZXIuaCIKLSNpbXBvcnQgIldL
Tm9ybWFsTWFwRmlsdGVyLmgiCi0jaW1wb3J0ICJXS1BvaW50TGlnaHRGaWx0ZXIuaCIKLSNpbXBv
cnQgIldLU3BvdExpZ2h0RmlsdGVyLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNJVmVjdG9yKiBnZXRWZWN0b3JGb3JDaGFubmVsKENo
YW5uZWxTZWxlY3RvclR5cGUgY2hhbm5lbCkKLXsKLSAgICBzd2l0Y2ggKGNoYW5uZWwpIHsKLSAg
ICBjYXNlIENIQU5ORUxfVU5LTk9XTjoKLSAgICAgICAgcmV0dXJuIG5pbDsgICAgCi0gICAgY2Fz
ZSBDSEFOTkVMX1I6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MS4wZiBZ
OjAuMGYgWjowLjBmIFc6MC4wZl07Ci0gICAgY2FzZSBDSEFOTkVMX0c6Ci0gICAgICAgIHJldHVy
biBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjEuMGYgWjowLjBmIFc6MC4wZl07Ci0gICAg
Y2FzZSBDSEFOTkVMX0I6Ci0gICAgICAgIHJldHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4w
ZiBZOjAuMGYgWjoxLjBmIFc6MC4wZl07Ci0gICAgY2FzZSBDSEFOTkVMX0E6Ci0gICAgICAgIHJl
dHVybiBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MC4wZiBZOjAuMGYgWjowLjBmIFc6MS4wZl07Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIFtDSVZlY3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6
MC4wZiBaOjAuMGYgVzowLjBmXTsKLSAgICB9Ci19Ci0KLUNJQ29sb3IqIGNpQ29sb3IoY29uc3Qg
Q29sb3ImIGMpCi17Ci0gICAgQ0dDb2xvclJlZiBjb2xvckNHID0gY3JlYXRlQ0dDb2xvcihjKTsK
LSAgICBDSUNvbG9yKiBjb2xvckNJID0gW0NJQ29sb3IgY29sb3JXaXRoQ0dDb2xvcjpjb2xvckNH
XTsKLSAgICBDR0NvbG9yUmVsZWFzZShjb2xvckNHKTsKLSAgICByZXR1cm4gY29sb3JDSTsKLX0K
LQotLy8gTGlnaHRpbmcKLUNJRmlsdGVyKiBnZXRQb2ludExpZ2h0VmVjdG9ycyhDSUZpbHRlciog
bm9ybWFscywgQ0lWZWN0b3IqIGxpZ2h0UG9zaXRpb24sIGZsb2F0IHN1cmZhY2VTY2FsZSkKLXsK
LSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
LSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS1BvaW50TGlnaHQiXTsK
LSAgICBpZiAoIWZpbHRlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBbZmlsdGVyIHNldERl
ZmF1bHRzXTsKLSAgICBbZmlsdGVyIHNldFZhbHVlOltub3JtYWxzIHZhbHVlRm9yS2V5OkAib3V0
cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJdOwotICAgIFtmaWx0ZXIgc2V0VmFs
dWU6bGlnaHRQb3NpdGlvbiBmb3JLZXk6QCJpbnB1dExpZ2h0UG9zaXRpb24iXTsKLSAgICBbZmls
dGVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c3VyZmFjZVNjYWxlXSBmb3JL
ZXk6QCJpbnB1dFN1cmZhY2VTY2FsZSJdOwotICAgIHJldHVybiBmaWx0ZXI7Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICByZXR1cm4gbmlsOwotfQotCi1DSUZpbHRlciogZ2V0
TGlnaHRWZWN0b3JzKENJRmlsdGVyKiBub3JtYWxzLCBjb25zdCBMaWdodFNvdXJjZSogbGlnaHQs
IGZsb2F0IHN1cmZhY2VTY2FsZSkKLXsKLSAgICBbV0tEaXN0YW50TGlnaHRGaWx0ZXIgY2xhc3Nd
OwotICAgIFtXS1BvaW50TGlnaHRGaWx0ZXIgY2xhc3NdOwotICAgIFtXS1Nwb3RMaWdodEZpbHRl
ciBjbGFzc107Ci0KLSAgICBDSUZpbHRlciogZmlsdGVyID0gbmlsOwotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKLQotICAgIHN3aXRjaCAobGlnaHQtPnR5cGUoKSkgewotICAgIGNh
c2UgTFNfRElTVEFOVDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IERpc3RhbnRMaWdodFNvdXJjZSog
ZGxpZ2h0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgRGlzdGFudExpZ2h0U291cmNlKj4obGlnaHQpOwot
Ci0gICAgICAgIGZpbHRlciA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLRGlzdGFudExp
Z2h0Il07Ci0gICAgICAgIGlmICghZmlsdGVyKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAgICAgW2ZpbHRlciBzZXREZWZhdWx0c107Ci0KLSAgICAgICAgZmxvYXQgYXppbXV0aCA9IGRs
aWdodC0+YXppbXV0aCgpOwotICAgICAgICBmbG9hdCBlbGV2YXRpb24gPSBkbGlnaHQtPmVsZXZh
dGlvbigpOwotICAgICAgICBhemltdXRoID0gZGVnMnJhZChhemltdXRoKTsKLSAgICAgICAgZWxl
dmF0aW9uID0gZGVnMnJhZChlbGV2YXRpb24pOwotICAgICAgICBmbG9hdCBMeCA9IGNvc2YoYXpp
bXV0aCkqY29zZihlbGV2YXRpb24pOwotICAgICAgICBmbG9hdCBMeSA9IHNpbmYoYXppbXV0aCkq
Y29zZihlbGV2YXRpb24pOwotICAgICAgICBmbG9hdCBMeiA9IHNpbmYoZWxldmF0aW9uKTsKLQot
ICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltub3JtYWxzIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1h
Z2UiXSBmb3JLZXk6QCJpbnB1dE5vcm1hbE1hcCJdOwotICAgICAgICBbZmlsdGVyIHNldFZhbHVl
OltDSVZlY3RvciB2ZWN0b3JXaXRoWDpMeCBZOkx5IFo6THpdIGZvcktleTpAImlucHV0TGlnaHRE
aXJlY3Rpb24iXTsKLSAgICAgICAgcmV0dXJuIGZpbHRlcjsKLSAgICB9Ci0gICAgY2FzZSBMU19Q
T0lOVDoKLSAgICB7Ci0gICAgICAgIGNvbnN0IFBvaW50TGlnaHRTb3VyY2UqIHBsaWdodCA9IHN0
YXRpY19jYXN0PGNvbnN0IFBvaW50TGlnaHRTb3VyY2UqPihsaWdodCk7Ci0gICAgICAgIHJldHVy
biBnZXRQb2ludExpZ2h0VmVjdG9ycyhub3JtYWxzLCBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6cGxp
Z2h0LT5wb3NpdGlvbigpLngoKSBZOnBsaWdodC0+cG9zaXRpb24oKS55KCkgWjpwbGlnaHQtPnBv
c2l0aW9uKCkueigpXSwgc3VyZmFjZVNjYWxlKTsKLSAgICB9Ci0gICAgY2FzZSBMU19TUE9UOgot
ICAgIHsKLSAgICAgICAgY29uc3QgU3BvdExpZ2h0U291cmNlKiBzbGlnaHQgPSBzdGF0aWNfY2Fz
dDxjb25zdCBTcG90TGlnaHRTb3VyY2UqPihsaWdodCk7Ci0gICAgICAgIGZpbHRlciA9IFtDSUZp
bHRlciBmaWx0ZXJXaXRoTmFtZTpAIldLU3BvdExpZ2h0Il07Ci0gICAgICAgIGlmICghZmlsdGVy
KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICBDSUZpbHRlciogcG9pbnRMaWdo
dEZpbHRlciA9IGdldFBvaW50TGlnaHRWZWN0b3JzKG5vcm1hbHMsIFtDSVZlY3RvciB2ZWN0b3JX
aXRoWDpzbGlnaHQtPnBvc2l0aW9uKCkueCgpIFk6c2xpZ2h0LT5wb3NpdGlvbigpLnkoKSBaOnNs
aWdodC0+cG9zaXRpb24oKS56KCldLCBzdXJmYWNlU2NhbGUpOwotICAgICAgICBpZiAoIXBvaW50
TGlnaHRGaWx0ZXIpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBbZmlsdGVyIHNl
dERlZmF1bHRzXTsKLQotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltwb2ludExpZ2h0RmlsdGVy
IHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXSBmb3JLZXk6QCJpbnB1dExpZ2h0VmVjdG9ycyJd
OwotICAgICAgICBbZmlsdGVyIHNldFZhbHVlOltDSVZlY3RvciB2ZWN0b3JXaXRoWDpzbGlnaHQt
PmRpcmVjdGlvbigpLngoKSBZOnNsaWdodC0+ZGlyZWN0aW9uKCkueSgpIFo6c2xpZ2h0LT5kaXJl
Y3Rpb24oKS56KCldIGZvcktleTpAImlucHV0TGlnaHREaXJlY3Rpb24iXTsKLSAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OnNsaWdodC0+c3BlY3VsYXJF
eHBvbmVudCgpXSBmb3JLZXk6QCJpbnB1dFNwZWN1bGFyRXhwb25lbnQiXTsKLSAgICAgICAgW2Zp
bHRlciBzZXRWYWx1ZTpbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OmRlZzJyYWQoc2xpZ2h0LT5s
aW1pdGluZ0NvbmVBbmdsZSgpKV0gZm9yS2V5OkAiaW5wdXRMaW1pdGluZ0NvbmVBbmdsZSJdOwot
ICAgICAgICByZXR1cm4gZmlsdGVyOwotICAgIH0KLSAgICB9Ci0KLSAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLUNJRmlsdGVyKiBnZXROb3JtYWxN
YXAoQ0lJbWFnZSogYnVtcE1hcCwgZmxvYXQgc2NhbGUpCi17Ci0gICAgW1dLTm9ybWFsTWFwRmls
dGVyIGNsYXNzXTsKLSAgICBDSUZpbHRlciogZmlsdGVyOwotICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKLSAgICBmaWx0ZXIgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJXS05v
cm1hbE1hcCJdOwotICAgIFtmaWx0ZXIgc2V0RGVmYXVsdHNdOwotCi0gICAgW2ZpbHRlciBzZXRW
YWx1ZTpidW1wTWFwIGZvcktleTpAImlucHV0SW1hZ2UiXTsKLSAgICBbZmlsdGVyIHNldFZhbHVl
OltOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6c2NhbGVdIGZvcktleTpAImlucHV0U3VyZmFjZVNj
YWxlIl07Ci0gICAgcmV0dXJuIGZpbHRlcjsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwotICAgIHJldHVybiBuaWw7Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVO
QUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9TVkdG
aWx0ZXJFZmZlY3RDZy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1NWR0ZpbHRlckVmZmVjdENnLm1tCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvU1ZHRmlsdGVyRWZmZWN0Q2cubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzcgKzAsMCBAQAotLyoKLSAgICBDb3B5cmlnaHQgKEMpIDIwMDYgTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAgICBhaW50IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJMRShT
VkcpICYmIEVOQUJMRShGSUxURVJTKQotCi0jaW5jbHVkZSAiU1ZHRmlsdGVyRWZmZWN0LmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotQ0lGaWx0ZXIqIFNWR0ZpbHRlckVmZmVjdDo6Z2V0Q0lG
aWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBiYm94KSBjb25zdAotewotICAgIHJldHVybiBuaWw7Ci19
Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJu
ZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRo
bWV0aWNGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS0FyaXRobWV0aWNGaWx0ZXIuY2lrZXJuZWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVu
dCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1rZXJuZWwgdmVj
NCBhcml0aG1ldGljQ29tcG9zaXRlKHNhbXBsZXIgaW4xLCBzYW1wbGVyIGluMiwgZmxvYXQgazEs
IGZsb2F0IGsyLCBmbG9hdCBrMywgZmxvYXQgazQpCi17Ci0gICAgdmVjNCB2aW4xID0gc2FtcGxl
KGluMSwgc2FtcGxlckNvb3JkKGluMSkpOwotICAgIHZlYzQgdmluMiA9IHNhbXBsZShpbjIsIHNh
bXBsZXJDb29yZChpbjIpKTsKLSAgICB2ZWM0IHJlcyA9IGsxKnZpbjEqdmluMiArIGsyKnZpbjEg
KyBrMyp2aW4yICsgdmVjNChrNCk7Ci0gICAgcmV0dXJuIHJlczsKLX0KSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRobWV0aWNGaWx0ZXIuaAko
cmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQXJp
dGhtZXRpY0ZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5h
Yy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KLQotI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotCi1AaW50ZXJmYWNlIFdLQXJpdGhtZXRp
Y0ZpbHRlciA6IENJRmlsdGVyIHsKLSAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKLSAgICBDSUlt
YWdlICAqaW5wdXRCYWNrZ3JvdW5kSW1hZ2U7Ci0gICAgTlNOdW1iZXIgKmlucHV0SzE7Ci0gICAg
TlNOdW1iZXIgKmlucHV0SzI7Ci0gICAgTlNOdW1iZXIgKmlucHV0SzM7Ci0gICAgTlNOdW1iZXIg
KmlucHV0SzQ7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0FyaXRobWV0
aWNGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLQXJpdGhtZXRpY0ZpbHRlci5tCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tBcml0aG1ldGljRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAg
LTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSBPbGl2ZXIgSHVudCA8b2po
MTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldLQXJpdGhtZXRpY0ZpbHRlci5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCi0KLXN0YXRpYyBDSUtlcm5lbCAqYXJpdGhtZXRpY0ZpbHRlciA9IG5p
bDsKLQotQGltcGxlbWVudGF0aW9uIFdLQXJpdGhtZXRpY0ZpbHRlcgotKyAodm9pZClpbml0aWFs
aXplCi17Ci0gICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpAIldLQXJpdGhtZXRpY0Zp
bHRlciIgIAotICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgotICAgICAgICAg
ICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVj
dHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQgQXJpdGhtZXRpYyBGaWx0
ZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29y
eVZpZGVvLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwg
a0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdv
cmllcywKLSAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBd
LCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRy
aWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIG5pbF0sIEAiaW5wdXRLMSIsICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0
dHJpYnV0ZU1pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0
dHJpYnV0ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEsyIiwg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZU1pbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVE
ZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91
YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAotICAgICAgICAgICAgICAgICAgICAgICAg
IGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEszIiwgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAg
ICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtD
SUF0dHJpYnV0ZU1pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50
aXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtD
SUF0dHJpYnV0ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEs0
IiwKLSAgICAgICAgICAgICAgICAgICAgIG5pbF1dOwotfQotCi0rIChDSUZpbHRlciAqKWZpbHRl
cldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChpZClpbml0Ci17Ci0gICAgaWYgKCFhcml0aG1l
dGljRmlsdGVyKSB7Ci0gICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxl
Rm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKLSAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBb
YnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLQXJpdGhtZXRpY0ZpbHRlciIgb2ZUeXBlOkAiY2lr
ZXJuZWwiXTsKLSAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENv
bnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGUgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJy
b3I6MF07Ci0gICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhT
dHJpbmc6Y29kZV07Ci0gICAgICAgIGFyaXRobWV0aWNGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0
QXRJbmRleDowXSByZXRhaW5dOwotICAgIH0KLSAgICByZXR1cm4gW3N1cGVyIGluaXRdOwotfQot
Ci0tIChDSUltYWdlICopb3V0cHV0SW1hZ2UKLXsKLSAgICByZXR1cm4gW3NlbGYgYXBwbHk6YXJp
dGhtZXRpY0ZpbHRlciwgaW5wdXRJbWFnZSwgaW5wdXRCYWNrZ3JvdW5kSW1hZ2UsIGlucHV0SzEs
IGlucHV0SzIsIGlucHV0SzMsCi0gICAgICAgIGlucHV0SzQsIG5pbF07Ci19Ci0KLUBlbmQKLQot
I2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmNpa2VybmVsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tDb21wb25lbnRN
ZXJnZUZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL2NnL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIuY2lrZXJuZWwJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIg
SHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVU
SE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1rZXJuZWwg
dmVjNCBtZXJnZUNvbXBvbmVudHMoc2FtcGxlciBmdW5jUiwgc2FtcGxlciBmdW5jRywgc2FtcGxl
ciBmdW5jQiwgc2FtcGxlciBmdW5jQSkKLXsKLSAgICBmbG9hdCByID0gc2FtcGxlKGZ1bmNSLCBz
YW1wbGVyQ29vcmQoZnVuY1IpKS5yOwotICAgIGZsb2F0IGcgPSBzYW1wbGUoZnVuY0csIHNhbXBs
ZXJDb29yZChmdW5jRykpLmc7Ci0gICAgZmxvYXQgYiA9IHNhbXBsZShmdW5jQiwgc2FtcGxlckNv
b3JkKGZ1bmNCKSkuYjsKLSAgICBmbG9hdCBhID0gc2FtcGxlKGZ1bmNBLCBzYW1wbGVyQ29vcmQo
ZnVuY0EpKS5hOwotICAgIHJldHVybiB2ZWM0KHIsIGcsIGIsIGEpOwotfQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0NvbXBvbmVudE1lcmdl
RmlsdGVyLmgJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9jZy9XS0NvbXBvbmVudE1lcmdlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVu
dC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJ
bWFnZS5oPgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLUBpbnRlcmZh
Y2UgV0tDb21wb25lbnRNZXJnZUZpbHRlciA6IENJRmlsdGVyIHsKLSAgICBDSUltYWdlICAqaW5w
dXRGdW5jUjsKLSAgICBDSUltYWdlICAqaW5wdXRGdW5jRzsKLSAgICBDSUltYWdlICAqaW5wdXRG
dW5jQjsKLSAgICBDSUltYWdlICAqaW5wdXRGdW5jQTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQ29tcG9uZW50TWVyZ2VGaWx0ZXIubQkocmV2
aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLQ29tcG9u
ZW50TWVyZ2VGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnku
YWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tDb21wb25l
bnRNZXJnZUZpbHRlci5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0K
LXN0YXRpYyBDSUtlcm5lbCAqY29tcG9uZW50TWVyZ2VGaWx0ZXIgPSBuaWw7Ci0KLUBpbXBsZW1l
bnRhdGlvbiBXS0NvbXBvbmVudE1lcmdlRmlsdGVyCi0rICh2b2lkKWluaXRpYWxpemUKLXsKLSAg
ICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tDb21wb25lbnRNZXJnZSIKLSAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKLSAgICAgICAgICAgICAgICAgY2xhc3NB
dHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAg
ICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IENvbXBvbmVudCBNZXJnZSIsIGtDSUF0dHJpYnV0
ZUZpbHRlckRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJyYXlX
aXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNx
dWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAotICAgICAgICAg
ICAgICAgICAgICAgbmlsXV07Ci19Ci0KLSsgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5T
U3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVs
ZWFzZV07Ci19Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBpZiAoIWNvbXBvbmVudE1lcmdlRmlsdGVy
KSB7Ci0gICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6
W3NlbGYgY2xhc3NdXTsKLSAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBh
dGhGb3JSZXNvdXJjZTpAIldLQ29tcG9uZW50TWVyZ2VGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVs
Il07Ci0gICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50
c09mRmlsZTprZXJuZWxGaWxlIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOjBd
OwotICAgICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5n
OmNvZGVdOwotICAgICAgICBjb21wb25lbnRNZXJnZUZpbHRlciA9IFtba2VybmVscyBvYmplY3RB
dEluZGV4OjBdIHJldGFpbl07Ci0gICAgfQotICAgIHJldHVybiBbc3VwZXIgaW5pdF07Ci19Ci0K
LS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQotewotICAgIHJldHVybiBbc2VsZiBhcHBseTpjb21w
b25lbnRNZXJnZUZpbHRlciwgW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEZ1bmNS
XSwgCi0gICAgICAgIFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jR10sIFtD
SVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5wdXRGdW5jQl0sIFtDSVNhbXBsZXIgc2FtcGxl
cldpdGhJbWFnZTogaW5wdXRGdW5jQV0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1dEZ1bmNSIGRlZmlu
aXRpb25dLCBuaWxdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaWZm
dXNlTGlnaHRpbmdGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5jaWtlcm5lbAkocmV2aXNp
b24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxp
Z2h0aW5nRmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQota2VybmVsIHZlYzQgZGlmZnVzZUxpZ2h0aW5nKHNhbXBs
ZXIgbm9ybWFsVmVjdG9ycywgc2FtcGxlciBsaWdodFZlY3RvcnMsIF9fY29sb3IgbGlnaHRpbmdD
b2xvciwgCi0gICAgZmxvYXQgc3VyZmFjZVNjYWxlLCBmbG9hdCBkaWZmdXNlQ29uc3RhbnQsIGZs
b2F0IGtlcm5lbExlbmd0aFgsIGZsb2F0IGtlcm5lbExlbmd0aFkpCi17Ci0gICAgdmVjMiBwb3Mg
PSBzYW1wbGVyQ29vcmQobGlnaHRWZWN0b3JzKTsKLSAgICB2ZWMyIHBvc24gPSBzYW1wbGVyQ29v
cmQobm9ybWFsVmVjdG9ycyk7Ci0gICAgdmVjNCBsNCA9IHNhbXBsZShsaWdodFZlY3RvcnMsIHBv
cyk7Ci0gICAgdmVjMyBsID0gbDQueHl6OwotICAgIGwgPSBub3JtYWxpemUobCk7Ci0gICAgdmVj
MyBuID0gc2FtcGxlKG5vcm1hbFZlY3RvcnMsIHBvc24pLnh5ejsKLSAgICBmbG9hdCBubCA9IGRv
dChsLCBuKSAqIGRpZmZ1c2VDb25zdGFudDsKLSAgICB2ZWM0IHJlcyA9IHZlYzQobGlnaHRpbmdD
b2xvci5yICogbmwsIGxpZ2h0aW5nQ29sb3IuZyAqIG5sLCBsaWdodGluZ0NvbG9yLmIgKiBubCwg
MS4wKTsKLSAgICByZXMueHl6ICo9IGw0Lnc7Ci0gICAgcmV0dXJuIHJlczsKLX0KSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlmZnVzZUxp
Z2h0aW5nRmlsdGVyLmgJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29y
ZUltYWdlLmg+Ci0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotQGludGVy
ZmFjZSBXS0RpZmZ1c2VMaWdodGluZ0ZpbHRlciA6IENJRmlsdGVyIHsKLSAgICBDSVNhbXBsZXIg
KmlucHV0Tm9ybWFsTWFwOwotICAgIENJU2FtcGxlciAqaW5wdXRMaWdodFZlY3RvcnM7Ci0gICAg
Q0lDb2xvciAgICppbnB1dExpZ2h0aW5nQ29sb3I7Ci0gICAgTlNOdW1iZXIgICppbnB1dFN1cmZh
Y2VTY2FsZTsKLSAgICBOU051bWJlciAgKmlucHV0RGlmZnVzZUNvbnN0YW50OwotICAgIE5TTnVt
YmVyICAqaW5wdXRLZXJuZWxVbml0TGVuZ3RoWDsKLSAgICBOU051bWJlciAgKmlucHV0S2VybmVs
VW5pdExlbmd0aFk7Ci19Ci1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaWZmdXNl
TGlnaHRpbmdGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyLm0JKHJldmlzaW9uIDQ0MzIxKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0RpZmZ1c2VMaWdodGluZ0ZpbHRlci5tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tEaWZmdXNlTGlnaHRpbmdGaWx0ZXIuaCIKLQotI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQotCi1zdGF0aWMgQ0lLZXJuZWwgKmRpZmZ1
c2VMaWdodGluZ0ZpbHRlciA9IG5pbDsKLUBpbXBsZW1lbnRhdGlvbiBXS0RpZmZ1c2VMaWdodGlu
Z0ZpbHRlcgotCi0rICh2b2lkKWluaXRpYWxpemUKLXsKLSAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJG
aWx0ZXJOYW1lOkAiV0tEaWZmdXNlTGlnaHRpbmciICAKLSAgICAgICAgICAgICAgICAgICAgIGNv
bnN0cnVjdG9yOnNlbGYKLSAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAg
IEAiV2ViS2l0IERpZmZ1c2UgTGlnaHRpbmciLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0
ZWdvcnlTdHlsaXplLCBrQ0lDYXRlZ29yeVZpZGVvLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGtDSUNhdGVnb3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmlsXSwg
a0NJQXR0cmlidXRlRmlsdGVyQ2F0ZWdvcmllcywKLSAgICAgICAgICAgICAgICAgICAgIFtOU0Rp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBbQ0lDb2xvciBjb2xvcldpdGhSZWQ6MS4wZiBncmVlbjoxLjBmIGJsdWU6MS4wZiBh
bHBoYToxLjBmXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0
LCBuaWxdLCBAImlucHV0TGlnaHRpbmdDb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlTWlu
LAotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEu
MF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U3VyZmFjZVNjYWxlIiwK
LSAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Rz
QW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBrQ0lB
dHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVU
eXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF0sIEAiaW5wdXREaWZmdXNlQ29uc3RhbnQiLAotICAgICAgICAgICAgICAgICAgICAgW05TRGlj
dGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAg
ICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZU1pbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBd
LCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dEtlcm5lbFVuaXRMZW5ndGhY
IiwKLSAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVsdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxLjBdLCBr
Q0lBdHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lBdHRyaWJ1
dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
IG5pbF0sIEAiaW5wdXRLZXJuZWxVbml0TGVuZ3RoWSIsCi0gICAgICAgICAgICAgICAgICAgICBu
aWxdXTsKLX0KLQotKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
Ci17Ci0gICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLX0KLQot
LSAoaWQpaW5pdAotewotICAgIGlmICghZGlmZnVzZUxpZ2h0aW5nRmlsdGVyKSB7Ci0gICAgICAg
IE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3Nd
XTsKLSAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJj
ZTpAIldLRGlmZnVzZUxpZ2h0aW5nRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAg
ICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2Vy
bmVsRmlsZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAg
TlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAg
ICAgICAgZGlmZnVzZUxpZ2h0aW5nRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0g
cmV0YWluXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0XTsKLX0KLQotLSAoQ0lJbWFn
ZSAqKW91dHB1dEltYWdlCi17Ci0gICAgcmV0dXJuIFtzZWxmIGFwcGx5OmRpZmZ1c2VMaWdodGlu
Z0ZpbHRlciwgaW5wdXROb3JtYWxNYXAsIGlucHV0TGlnaHRWZWN0b3JzLCBpbnB1dExpZ2h0aW5n
Q29sb3IsIGlucHV0U3VyZmFjZVNjYWxlLCBpbnB1dERpZmZ1c2VDb25zdGFudCwKLSAgICAgICAg
aW5wdXRLZXJuZWxVbml0TGVuZ3RoWCwgaW5wdXRLZXJuZWxVbml0TGVuZ3RoWSwgbmlsXTsKLX0K
LQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRl
ci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gNDQzMjEpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzY3JldGVUcmFuc2ZlckZpbHRlci5j
aWtlcm5lbAkod29ya2luZyBjb3B5KQpAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLWtlcm5lbCB2ZWM0IGRpc2NyZXRlVHJhbnNmZXIoc2FtcGxlciBpbWFnZSwgc2Ft
cGxlciB0YWJsZSwgdmVjNCByZ2JhU2VsZWN0b3IsIGZsb2F0IG1heEluZGV4KQotewotICAgIHZl
YzQgQyA9IHNhbXBsZShpbWFnZSwgc2FtcGxlckNvb3JkKGltYWdlKSk7Ci0gICAgZmxvYXQgayA9
IGZsb29yKGRvdChyZ2JhU2VsZWN0b3IsIEMpICogbWF4SW5kZXgpOwotICAgIHZlYzQgcmVzID0g
c2FtcGxlKHRhYmxlLCB2ZWMyKGsrMC4wLCAwLjApKTsKLSAgICByZXR1cm4gcmVzOwotfQpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlz
Y3JldGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVu
dCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxR
dWFydHpDb3JlL0NvcmVJbWFnZS5oPgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRF
UlMpCi0KLUBpbnRlcmZhY2UgV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgewot
ICAgIENJSW1hZ2UgICppbnB1dEltYWdlOwotICAgIENJSW1hZ2UgICppbnB1dFRhYmxlOwotICAg
IENJVmVjdG9yICppbnB1dFNlbGVjdG9yOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIubQkocmV2aXNp
b24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzY3JldGVU
cmFuc2ZlckZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5h
Yy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXS0Rpc2NyZXRl
VHJhbnNmZXJGaWx0ZXIuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQot
Ci1zdGF0aWMgQ0lLZXJuZWwgKmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7Ci0KLUBpbXBs
ZW1lbnRhdGlvbiBXS0Rpc2NyZXRlVHJhbnNmZXJGaWx0ZXIKLSsgKHZvaWQpaW5pdGlhbGl6ZQot
ewotICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0Rpc2NyZXRlVHJhbnNmZXIi
Ci0gICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCi0gICAgICAgICAgICAgICAg
IGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBEaXNjcmV0ZSBUcmFuc2ZlciIsIGtD
SUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgW05TQXJy
YXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRl
Z29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLAot
ICAgICAgICAgICAgICAgICAgICAgbmlsXV07Ci19Ci0KLSsgKENJRmlsdGVyICopZmlsdGVyV2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBpZiAoIWRpc2NyZXRlVHJh
bnNmZXJGaWx0ZXIpIHsKLSAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5k
bGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOwotICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9
IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tEaXNjcmV0ZVRyYW5zZmVyRmlsdGVyIiBvZlR5
cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJu
ZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAgZGlzY3JldGVUcmFuc2ZlckZpbHRlciA9IFtb
a2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07Ci0gICAgfQotICAgIHJldHVybiBbc3Vw
ZXIgaW5pdF07Ci19Ci0KLS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQotewotICAgIENJU2FtcGxl
ciAqaW5wdXRTYW1wbGVyID0gW0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dEltYWdl
XTsKLSAgICBDSVNhbXBsZXIgKnRhYmxlU2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJ
bWFnZTogaW5wdXRUYWJsZSBrZXlzQW5kVmFsdWVzOmtDSVNhbXBsZXJGaWx0ZXJNb2RlLCBrQ0lT
YW1wbGVyRmlsdGVyTmVhcmVzdCwga0NJU2FtcGxlcldyYXBNb2RlLCBrQ0lTYW1wbGVyV3JhcENs
YW1wLCBuaWxdOwotICAgIE5TQXJyYXkgKmFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Rz
OmlucHV0U2FtcGxlciwgdGFibGVTYW1wbGVyLCBpbnB1dFNlbGVjdG9yLCAKLSAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6W2lucHV0VGFibGUgZXh0ZW50XS5zaXplLndpZHRoIC0g
MS4wZl0sIEAiZGVmaW5pdGlvbiIsIFtpbnB1dFNhbXBsZXIgZGVmaW5pdGlvbl0sIG5pbF07Ci0g
ICAgcmV0dXJuIFtzZWxmIGFwcGx5OmRpc2NyZXRlVHJhbnNmZXJGaWx0ZXIgYXJndW1lbnRzOmFy
Z3Mgb3B0aW9uczpuaWxdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tE
aXNwbGFjZW1lbnRNYXBGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5jaWtlcm5lbAkocmV2
aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzcGxh
Y2VtZW50TWFwRmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLSAKLS8qCi0gKiBQZXJmb3JtcyB0aGUgdHJhbnNmb3Jt
YXRpb246Ci0gKiBQJyh4LHkpIDwtIFAoIHggKyBzY2FsZSAqIChYQyh4LHkpIC0gLjUpLCB5ICsg
c2NhbGUgKiAoWUMoeCx5KSAtIC41KSkKLSAqCi0gKiB4L3ljaGFubmVsIGFyZ3VtZW50cyBhcmUg
dXNlZCB0byBzZWxlY3QgdGhlIGFwcHJvcHJpYXRlIGNoYW5uZWwgZm9yIHggYW5kCi0gKiB5IGRp
c3BsYWNlbWVudC4gIEhlbmNlIGVhY2ggdmVjdG9yIHNob3VsZCBoYXZlIG9ubHkgb25lIG5vbi16
ZXJvIGVsZW1lbnQsCi0gKiB3aGljaCBzaG91bGQgaGF2ZSB0aGUgdmFsdWUgMS4wLgotICoKLSAq
LwotCi1rZXJuZWwgdmVjNCBkaXNwbGFjZW1lbnRNYXAoc2FtcGxlciBpbWFnZSwgc2FtcGxlciBt
YXAsIHZlYzQgeGNoYW5uZWwsIHZlYzQgeWNoYW5uZWwsIGZsb2F0IHNjYWxlKQotewotICAgIHZl
YzIgc2FtcGxlUG9zID0gc2FtcGxlckNvb3JkKGltYWdlKTsKLSAgICB2ZWM0IFhDWUMgPSBzYW1w
bGUobWFwLCBzYW1wbGVyQ29vcmQobWFwKSk7Ci0gICAgZmxvYXQgeGMgPSBkb3QoWENZQywgeGNo
YW5uZWwpOwotICAgIGZsb2F0IHljID0gZG90KFhDWUMsIHljaGFubmVsKTsKLSAgICBzYW1wbGVQ
b3MueCArPSBzY2FsZSooeGMtMC41KTsKLSAgICBzYW1wbGVQb3MueSArPSBzY2FsZSooeWMtMC41
KTsKLSAgICByZXR1cm4gc2FtcGxlKGltYWdlLCBzYW1wbGVQb3MpOwotfQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXNwbGFjZW1lbnRN
YXBGaWx0ZXIuaAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNDAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1
ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0Nv
cmVJbWFnZS5oPgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLUBpbnRl
cmZhY2UgV0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIgOiBDSUZpbHRlciB7Ci0gICAgQ0lJbWFnZSAg
KmlucHV0SW1hZ2U7Ci0gICAgQ0lJbWFnZSAgKmlucHV0RGlzcGxhY2VtZW50TWFwOwotICAgIENJ
VmVjdG9yICppbnB1dFhDaGFubmVsU2VsZWN0b3I7Ci0gICAgQ0lWZWN0b3IgKmlucHV0WUNoYW5u
ZWxTZWxlY3RvcjsKLSAgICBOU051bWJlciAqaW5wdXRTY2FsZTsKLX0KLQotQGVuZAotCi0jZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzcGxhY2VtZW50TWFwRmlsdGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3BsYWNlbWVudE1hcEZpbHRl
ci5tCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cv
V0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMSw4MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNh
bnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAi
V0tEaXNwbGFjZW1lbnRNYXBGaWx0ZXIuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQotCi1zdGF0aWMgQ0lLZXJuZWwgKmRpc3BsYWNlbWVudE1hcEZpbHRlciA9IG5pbDsK
LQotQGltcGxlbWVudGF0aW9uIFdLRGlzcGxhY2VtZW50TWFwRmlsdGVyCi0KLSsgKHZvaWQpaW5p
dGlhbGl6ZQotewotICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS0Rpc3BsYWNl
bWVudE1hcEZpbHRlciIgIAotICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3I6c2VsZgot
ICAgICAgICAgICAgICAgICBjbGFzc0F0dHJpYnV0ZXM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgQCJXZWJLaXQgRGlzcGxh
Y2VtZW50IE1hcCBGaWx0ZXIiLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJEaXNwbGF5TmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgIFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6a0NJQ2F0ZWdvcnlTdHls
aXplLCBrQ0lDYXRlZ29yeVZpZGVvLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUNhdGVn
b3J5U3RpbGxJbWFnZSwga0NJQ2F0ZWdvcnlOb25TcXVhcmVQaXhlbHMsbmlsXSwga0NJQXR0cmli
dXRlRmlsdGVyQ2F0ZWdvcmllcywKLSAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkg
ZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICBb
Q0lWZWN0b3IgdmVjdG9yV2l0aFg6MS4wZiBZOjAuMGYgWjowLjBmIFc6MC4wZl0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlRGVmYXVsdCwgbmlsXSwgQCJpbnB1dFhDaGFu
bmVsU2VsZWN0b3IiLCAgIAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtDSVZl
Y3RvciB2ZWN0b3JXaXRoWDowLjBmIFk6MS4wZiBaOjAuMGYgVzowLjBmXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ0lBdHRyaWJ1dGVEZWZhdWx0LCBuaWxdLCBAImlucHV0WUNoYW5uZWxT
ZWxlY3RvciIsICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlRGVmYXVs
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTow
LjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lB
dHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIG5pbF0sIEAiaW5wdXRTY2FsZSIsCi0gICAgICAgICAgICAgICAgICAgICBuaWxdXTsK
LX0KLQotKyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0g
ICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQp
aW5pdAotewotICAgIGlmICghZGlzcGxhY2VtZW50TWFwRmlsdGVyKSB7Ci0gICAgICAgIE5TQnVu
ZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKLSAg
ICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldL
RGlzcGxhY2VtZW50TWFwRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0
cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmls
ZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJh
eSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAg
ZGlzcGxhY2VtZW50TWFwRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWlu
XTsKLSAgICB9Ci0gICAgcmV0dXJuIFtzdXBlciBpbml0XTsKLX0KLQotLSAoQ0lJbWFnZSAqKW91
dHB1dEltYWdlCi17Ci0gICAgcmV0dXJuIFtzZWxmIGFwcGx5OmRpc3BsYWNlbWVudE1hcEZpbHRl
ciwgaW5wdXRJbWFnZSwgaW5wdXREaXNwbGFjZW1lbnRNYXAsIGlucHV0WENoYW5uZWxTZWxlY3Rv
ciwgaW5wdXRZQ2hhbm5lbFNlbGVjdG9yLCBpbnB1dFNjYWxlLCBuaWxdOwotfQotCi1AZW5kCi0K
LSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50TGlnaHRGaWx0ZXIuY2lrZXJuZWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0Rpc3RhbnRMaWdo
dEZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLRGlzdGFudExpZ2h0RmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQg
PG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQota2VybmVsIHZlYzQg
ZGlzdGFudExpZ2h0R2VuZXJhdG9yKHNhbXBsZXIgaW1hZ2UsIHZlYzMgZGlyZWN0aW9uKQotewot
ICAgIHJldHVybiB2ZWM0KGRpcmVjdGlvbi54LCBkaXJlY3Rpb24ueSwgZGlyZWN0aW9uLnosIDEu
MCk7Ci19CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzdGFudExp
Z2h0RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS0Rpc3RhbnRMaWdodEZpbHRlci5oCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50TGlnaHRGaWx0ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMSwzNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1
dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpD
b3JlL0NvcmVJbWFnZS5oPgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0K
LUBpbnRlcmZhY2UgV0tEaXN0YW50TGlnaHRGaWx0ZXIgOiBDSUZpbHRlciB7Ci0gICAgQ0lJbWFn
ZSAgKiBpbnB1dE5vcm1hbE1hcDsKLSAgICBDSVZlY3RvciAqIGlucHV0TGlnaHREaXJlY3Rpb247
Ci19Ci1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tEaXN0YW50TGlnaHRGaWx0ZXIu
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLRGlzdGFu
dExpZ2h0RmlsdGVyLm0JKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9XS0Rpc3RhbnRMaWdodEZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0gCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBv
cnQgIldLRGlzdGFudExpZ2h0RmlsdGVyLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKLQotc3RhdGljIENJS2VybmVsICpkaXN0YW50TGlnaHRGaWx0ZXIgPSBuaWw7Ci0K
LUBpbXBsZW1lbnRhdGlvbiBXS0Rpc3RhbnRMaWdodEZpbHRlcgotCi0rICh2b2lkKWluaXRpYWxp
emUKLXsKLSAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tEaXN0YW50TGlnaHQi
Ci0gICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCi0gICAgICAgICAgICAgICAg
IGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBEaXN0YW50IExpZ2h0Iiwga0NJQXR0
cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBh
cnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5
Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCi0gICAg
ICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVBvc2l0aW9uMywg
a0NJQXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0
TGlnaHREaXJlY3Rpb24iLAotICAgICAgICAgICAgICAgICAgICAgbmlsXV07Ci19Ci0KLSsgKENJ
RmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAgIHJldHVybiBb
W1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKGlkKWluaXQKLXsKLSAg
ICBpZiAoIWRpc3RhbnRMaWdodEZpbHRlcikgewotICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0g
W05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07Ci0gICAgICAgIE5TU3RyaW5n
ICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0Rpc3RhbnRMaWdodEZp
bHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKLSAgICAgICAgTlNTdHJpbmcgKmNvZGUgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5lbEZpbGUgZW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmcgZXJyb3I6MF07Ci0gICAgICAgIE5TQXJyYXkgKmtlcm5lbHMgPSBbQ0lL
ZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07Ci0gICAgICAgIGRpc3RhbnRMaWdodEZpbHRl
ciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07Ci0gICAgfQotICAgIHJldHVy
biBbc3VwZXIgaW5pdF07Ci19Ci0KLS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQotewotICAgIHJl
dHVybiBbc2VsZiBhcHBseTpkaXN0YW50TGlnaHRGaWx0ZXIsIFtDSVNhbXBsZXIgc2FtcGxlcldp
dGhJbWFnZTppbnB1dE5vcm1hbE1hcF0sIGlucHV0TGlnaHREaXJlY3Rpb24sIG5pbF07Ci19Ci0K
LUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lr
ZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dh
bW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuY2lrZXJuZWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBP
bGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi1r
ZXJuZWwgdmVjNCBnYW1tYVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIGZsb2F0IGFtcGxpdHVkZSwg
ZmxvYXQgZXhwb25lbnQsIGZsb2F0IG9mZnNldCkKLXsKLSAgICB2ZWM0IEMgPSBzYW1wbGUoaW1h
Z2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOwotICAgIHJldHVybiBhbXBsaXR1ZGUgKiBwb3coQywg
dmVjNChleHBvbmVudCkpICsgb2Zmc2V0OwotfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9jZy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lv
biA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tHYW1tYVRyYW5z
ZmVyRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56
Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQot
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIEFVVEhPUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgotCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLUBpbnRlcmZhY2UgV0tHYW1tYVRyYW5zZmVy
RmlsdGVyIDogQ0lGaWx0ZXIgewotICAgIENJSW1hZ2UgICppbnB1dEltYWdlOwotICAgIE5TTnVt
YmVyICppbnB1dEFtcGxpdHVkZTsKLSAgICBOU051bWJlciAqaW5wdXRFeHBvbmVudDsKLSAgICBO
U051bWJlciAqaW5wdXRPZmZzZXQ7Ci19Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS0dhbW1hVHJhbnNmZXJGaWx0ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL2NnL1dLR2FtbWFUcmFuc2ZlckZpbHRlci5tCShyZXZpc2lvbiA0NDMyMSkK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tHYW1tYVRyYW5zZmVyRmlsdGVy
Lm0JKHdvcmtpbmcgY29weSkKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNiBPbGl2ZXIgSHVudCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLR2FtbWFUcmFuc2ZlckZpbHRlci5o
IgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLXN0YXRpYyBDSUtlcm5l
bCAqZ2FtbWFUcmFuc2ZlckZpbHRlciA9IG5pbDsKLQotQGltcGxlbWVudGF0aW9uIFdLR2FtbWFU
cmFuc2ZlckZpbHRlcgotKyAodm9pZClpbml0aWFsaXplCi17Ci0gICAgW0NJRmlsdGVyIHJlZ2lz
dGVyRmlsdGVyTmFtZTpAIldLR2FtbWFUcmFuc2ZlciIKLSAgICAgICAgICAgICAgICAgICAgIGNv
bnN0cnVjdG9yOnNlbGYKLSAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rp
b25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAg
IEAiV2ViS2l0IEdhbW1hIFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVn
b3J5U3R5bGl6ZSwga0NJQ2F0ZWdvcnlWaWRlbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lDYXRlZ29yeVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtD
SUF0dHJpYnV0ZUZpbHRlckNhdGVnb3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0
aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVmYXVs
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTox
LjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lB
dHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIG5pbF0sIEAiaW5wdXRBbXBsaXR1ZGUiLAotICAgICAgICAgICAgICAgICAgICAgW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAg
ICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURl
ZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3Vi
bGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
a0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBuaWxdLCBAImlucHV0RXhwb25lbnQiLAotICAgICAgICAgICAgICAgICAgICAg
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAg
ICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0
ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhE
b3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBuaWxdLCBAImlucHV0T2Zmc2V0IiwKLSAgICAgICAgICAgICAgICAgICAg
IG5pbF1dOwotfQotCi0rIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5h
bWUKLXsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotfQot
Ci0tIChpZClpbml0Ci17Ci0gICAgaWYgKCFnYW1tYVRyYW5zZmVyRmlsdGVyKSB7Ci0gICAgICAg
IE5TQnVuZGxlICpidW5kbGUgPSBbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3Nd
XTsKLSAgICAgICAgTlNTdHJpbmcgKmtlcm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJj
ZTpAIldLR2FtbWFUcmFuc2ZlckZpbHRlciIgb2ZUeXBlOkAiY2lrZXJuZWwiXTsKLSAgICAgICAg
TlNTdHJpbmcgKmNvZGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZGaWxlOmtlcm5l
bEZpbGUgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6MF07Ci0gICAgICAgIE5T
QXJyYXkgKmtlcm5lbHMgPSBbQ0lLZXJuZWwga2VybmVsc1dpdGhTdHJpbmc6Y29kZV07Ci0gICAg
ICAgIGdhbW1hVHJhbnNmZXJGaWx0ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRh
aW5dOwotICAgIH0KLSAgICByZXR1cm4gW3N1cGVyIGluaXRdOwotfQotCi0tIChDSUltYWdlICop
b3V0cHV0SW1hZ2UKLXsKLSAgICBDSVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtDSVNhbXBsZXIg
c2FtcGxlcldpdGhJbWFnZTogaW5wdXRJbWFnZV07Ci0gICAgcmV0dXJuIFtzZWxmIGFwcGx5Omdh
bW1hVHJhbnNmZXJGaWx0ZXIsIGlucHV0U2FtcGxlciwgaW5wdXRBbXBsaXR1ZGUsIGlucHV0RXhw
b25lbnQsIGlucHV0T2Zmc2V0LCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRp
b25dLCBuaWxdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUo
RklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tJZGVudGl0
eVRyYW5zZmVyRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9jZy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24gNDQzMjEpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8K
LQotI2ltcG9ydCA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KLQotI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShGSUxURVJTKQotCi1AaW50ZXJmYWNlIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlciA6
IENJRmlsdGVyIHsKLSAgICBDSUltYWdlICAqaW5wdXRJbWFnZTsKLX0KLQotQGVuZAotCi0jZW5k
aWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLSWRlbnRpdHlUcmFuc2ZlckZpbHRlci5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tJZGVudGl0eVRyYW5zZmVyRmls
dGVyLm0JKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS0lkZW50aXR5VHJhbnNmZXJGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50
LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiV0tJZGVudGl0eVRyYW5zZmVyRmlsdGVyLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKLQotQGltcGxlbWVudGF0aW9uIFdLSWRlbnRpdHlUcmFuc2ZlckZpbHRlcgot
KyAodm9pZClpbml0aWFsaXplCi17Ci0gICAgW0NJRmlsdGVyIHJlZ2lzdGVyRmlsdGVyTmFtZTpA
IldLSWRlbnRpdHlUcmFuc2ZlciIKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNl
bGYKLSAgICAgICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlv
bmFyeVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IElk
ZW50aXR5IFRyYW5zZmVyIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6
ZSwga0NJQ2F0ZWdvcnlWaWRlbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29y
eVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0
ZUZpbHRlckNhdGVnb3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICBuaWxdXTsKLX0KLQotKyAo
Q0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQpaW5pdAotewot
ICAgIHJldHVybiBbc3VwZXIgaW5pdF07Ci19Ci0KLS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQot
ewotICAgIHJldHVybiBpbnB1dEltYWdlOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuY2lrZXJu
ZWwJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9X
S0xpbmVhclRyYW5zZmVyRmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRl
bnQuY2FudGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQota2VybmVsIHZlYzQgbGluZWFyVHJhbnNm
ZXIoc2FtcGxlciBpbWFnZSwgZmxvYXQgc2xvcGUsIGZsb2F0IGludGVyY2VwdCkKLXsKLSAgICB2
ZWM0IEMgPSBzYW1wbGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOwotICAgIHJldHVybiBz
bG9wZSAqIEMgKyBpbnRlcmNlcHQ7Ci19CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIuaAkocmV2aXNpb24g
NDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+Ci0KLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotQGludGVyZmFjZSBXS0xpbmVhclRyYW5zZmVy
RmlsdGVyIDogQ0lGaWx0ZXIgewotICAgIENJSW1hZ2UgICppbnB1dEltYWdlOwotICAgIE5TTnVt
YmVyICppbnB1dFNsb3BlOwotICAgIE5TTnVtYmVyICppbnB1dEludGVyY2VwdDsKLX0KLQotQGVu
ZAotCi0jZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTGluZWFyVHJhbnNm
ZXJGaWx0ZXIubQkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLTGluZWFyVHJhbnNmZXJGaWx0ZXIubQkod29ya2luZyBjb3B5KQpAQCAtMSw4MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVk
ZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2lt
cG9ydCAiV0tMaW5lYXJUcmFuc2ZlckZpbHRlci5oIgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKEZJTFRFUlMpCi0KLXN0YXRpYyBDSUtlcm5lbCAqbGluZWFyVHJhbnNmZXJGaWx0ZXIgPSBu
aWw7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS0xpbmVhclRyYW5zZmVyRmlsdGVyCi0rICh2b2lkKWlu
aXRpYWxpemUKLXsKLSAgICBbQ0lGaWx0ZXIgcmVnaXN0ZXJGaWx0ZXJOYW1lOkAiV0tMaW5lYXJU
cmFuc2ZlciIKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKLSAgICAgICAg
ICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmpl
Y3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IExpbmVhciBUcmFuc2Zl
ciIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAg
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5
VmlkZW8sCi0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBr
Q0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29y
aWVzLAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJ
QXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U2xv
cGUiLAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlSWRlbnRp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJ
QXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0SW50
ZXJzZWN0aW9uIiwKLSAgICAgICAgICAgICAgICAgICAgIG5pbF1dOwotfQotCi0rIChDSUZpbHRl
ciAqKWZpbHRlcldpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW1tbc2Vs
ZiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwotfQotCi0tIChpZClpbml0Ci17Ci0gICAgaWYg
KCFsaW5lYXJUcmFuc2ZlckZpbHRlcikgewotICAgICAgICBOU0J1bmRsZSAqYnVuZGxlID0gW05T
QnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07Ci0gICAgICAgIE5TU3RyaW5nICpr
ZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS0xpbmVhclRyYW5zZmVyRmls
dGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtl
cm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAgbGluZWFyVHJhbnNmZXJGaWx0
ZXIgPSBbW2tlcm5lbHMgb2JqZWN0QXRJbmRleDowXSByZXRhaW5dOwotICAgIH0KLSAgICByZXR1
cm4gW3N1cGVyIGluaXRdOwotfQotCi0tIChDSUltYWdlICopb3V0cHV0SW1hZ2UKLXsKLSAgICBD
SVNhbXBsZXIgKmlucHV0U2FtcGxlciA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTogaW5w
dXRJbWFnZV07Ci0gICAgcmV0dXJuIFtzZWxmIGFwcGx5OmxpbmVhclRyYW5zZmVyRmlsdGVyLCBp
bnB1dFNhbXBsZXIsIGlucHV0U2xvcGUsIGlucHV0SW50ZXJjZXB0LCBAImRlZmluaXRpb24iLCBb
aW5wdXRTYW1wbGVyIGRlZmluaXRpb25dLCBuaWxdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBF
TkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvY2cvV0tOb3JtYWxNYXBGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS05vcm1hbE1hcEZpbHRlci5jaWtlcm5lbAko
cmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTm9y
bWFsTWFwRmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVy
YnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotLy9UT0RPOiBXZSBjdXJyZW50bHkgaWdub3JlIHRoZSBp
bnB1dCBrZXJuZWwgbGVuZ3Rocwota2VybmVsIHZlYzQgY29udm9sdmUzeDMoc2FtcGxlciBpbWFn
ZSwgIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsCi0JCQl2ZWMzIG0wLCB2ZWMzIG0xLCB2ZWMz
IG0yKQotewotICAgIHZlYzQgY29sb3VyID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApOwotICAg
IHZlYzIgcG9zPSBzYW1wbGVyQ29vcmQoaW1hZ2UpOwotICAgIGNvbG91ciA9ICBzYW1wbGUoaW1h
Z2UsIHBvcyArIHZlYzIoLTEuMCwgLTEuMCkpICptMC54OwotICAgIGNvbG91ciArPSBzYW1wbGUo
aW1hZ2UsIHBvcyArIHZlYzIoLTEuMCwgIDAuMCkpICptMC55OwotICAgIGNvbG91ciArPSBzYW1w
bGUoaW1hZ2UsIHBvcyArIHZlYzIoLTEuMCwgIDEuMCkpICptMC56OwotICAgIGNvbG91ciArPSBz
YW1wbGUoaW1hZ2UsIHBvcyArIHZlYzIoIDAuMCwgLTEuMCkpICptMS54OwotICAgIGNvbG91ciAr
PSBzYW1wbGUoaW1hZ2UsIHBvcykgKiBtMS55OwotICAgIGNvbG91ciArPSBzYW1wbGUoaW1hZ2Us
IHBvcyArIHZlYzIoIDAuMCwgIDEuMCkpKm0xLno7Ci0gICAgY29sb3VyICs9IHNhbXBsZShpbWFn
ZSwgcG9zICsgdmVjMiggMS4wLCAtMS4wKSkqbTIueDsKLSAgICBjb2xvdXIgKz0gc2FtcGxlKGlt
YWdlLCBwb3MgKyB2ZWMyKCAxLjAsICAwLjApKSptMi55OwotICAgIGNvbG91ciArPSBzYW1wbGUo
aW1hZ2UsIHBvcyArIHZlYzIoIDEuMCwgIDEuMCkpKm0yLno7Ci0gICAgcmV0dXJuIGNvbG91ciAv
IGRpdmlzb3IgKyBiaWFzOwotfQotCi1rZXJuZWwgdmVjNCBtZXJnZU5vcm1hbHMoc2FtcGxlciBO
eCwgc2FtcGxlciBOeSwgc2FtcGxlciBzcmMsIGZsb2F0IHN1cmZhY2VTY2FsZSkKLXsKLSAgICB2
ZWMzIE4gPSB2ZWMzKHN1cmZhY2VTY2FsZSAqIHNhbXBsZShOeCwgc2FtcGxlckNvb3JkKE54KSku
YSwgLXN1cmZhY2VTY2FsZSAqIHNhbXBsZShOeSwgc2FtcGxlckNvb3JkKE55KSkuYSwgMS4wKTsK
LSAgICBOID0gbm9ybWFsaXplKE4pOwotICAgIHJldHVybiB2ZWM0KE4ueCwgTi55LCBOLnosIHNh
bXBsZShzcmMsIHNhbXBsZXJDb29yZChzcmMpKS5hKTsKLX0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tOb3JtYWxNYXBGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmlsdGVyLmgJKHJldmlzaW9u
IDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS05vcm1hbE1hcEZp
bHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUvQ29yZUltYWdlLmg+Ci0KLSNpZiBFTkFCTEUoU1ZHKSAm
JiBFTkFCTEUoRklMVEVSUykKLQotQGludGVyZmFjZSBXS05vcm1hbE1hcEZpbHRlciA6IENJRmls
dGVyIHsKLSAgICBDSUltYWdlICppbnB1dEltYWdlOwotICAgIE5TTnVtYmVyICppbnB1dFN1cmZh
Y2VTY2FsZTsKLX0KLUBlbmQKLQotI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS05vcm1hbE1hcEZp
bHRlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tO
b3JtYWxNYXBGaWx0ZXIubQkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL2NnL1dLTm9ybWFsTWFwRmlsdGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTEsMTA5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9y
dCAiV0tOb3JtYWxNYXBGaWx0ZXIuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQotCi1zdGF0aWMgQ0lLZXJuZWwgKmNvbnZvbHZlS2VybmVsID0gbmlsOwotc3RhdGljIENJ
S2VybmVsICpub3JtYWxNYXBLZXJuZWwgPSBuaWw7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS05vcm1h
bE1hcEZpbHRlcgotCi0rICh2b2lkKWluaXRpYWxpemUKLXsKLSAgICBbQ0lGaWx0ZXIgcmVnaXN0
ZXJGaWx0ZXJOYW1lOkAiV0tOb3JtYWxNYXAiCi0gICAgICAgICAgICAgICAgICAgICBjb25zdHJ1
Y3RvcjpzZWxmCi0gICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICBAIldl
YktpdCBOb3JtYWwgTWFwIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOiBrQ0lDYXRlZ29yeUJsdXIs
IGtDSUNhdGVnb3J5VmlkZW8sCi0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlT
dGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscywgbmlsXSwga0NJQXR0cmlidXRl
RmlsdGVyQ2F0ZWdvcmllcywgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9u
YXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MC4wXSwga0NJQXR0cmlidXRlTWluLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtD
SUF0dHJpYnV0ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U3VyZmFjZVNjYWxlIiwKLSAgICAg
ICAgICAgICAgICAgICAgIG5pbF1dOwotfQotCi0rIChDSUZpbHRlciAqKWZpbHRlcldpdGhOYW1l
OihOU1N0cmluZyAqKW5hbWUKLXsKLSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdF0gYXV0
b3JlbGVhc2VdOwotfQotCi0tIChpZClpbml0Ci17Ci0gICAgaWYgKCFub3JtYWxNYXBLZXJuZWwp
IHsKLSAgICAgICAgTlNCdW5kbGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpb
c2VsZiBjbGFzc11dOwotICAgICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0
aEZvclJlc291cmNlOkAiV0tOb3JtYWxNYXBGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07Ci0g
ICAgICAgIE5TU3RyaW5nICpjb2RlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmls
ZTprZXJuZWxGaWxlIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOjBdOwotICAg
ICAgICBOU0FycmF5ICprZXJuZWxzID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVd
OwotICAgICAgICBjb252b2x2ZUtlcm5lbCA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJl
dGFpbl07Ci0gICAgICAgIG5vcm1hbE1hcEtlcm5lbCA9IFtba2VybmVscyBvYmplY3RBdEluZGV4
OjFdIHJldGFpbl07Ci0gICAgfQotICAgIHJldHVybiBbc3VwZXIgaW5pdF07Ci19Ci0KLS0gKE5T
QXJyYXkgKil4Q29udm9sdmVBcmdzV2l0aEJ1bXBNYXA6KENJU2FtcGxlciAqKWJ1bXBNYXAgewot
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOgotICAgICAgICBidW1wTWFwLAot
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0OjRdLAotICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEZsb2F0OjBdLAotICAgICAgICBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MSBZOjIg
WjoxXSwKLSAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjAgWTowIFo6MF0sCi0gICAgICAg
IFtDSVZlY3RvciB2ZWN0b3JXaXRoWDotMSBZOi0yIFo6LTFdLAotICAgICAgICBuaWxdOwotfQot
Ci0tIChOU0FycmF5ICopeUNvbnZvbHZlQXJnc1dpdGhCdW1wTWFwOihDSVNhbXBsZXIgKilidW1w
TWFwIHsKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czogCi0gICAgICAgIGJ1
bXBNYXAsCi0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6NF0sCi0gICAgICAgIFtO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6MF0sCi0gICAgICAgIFtDSVZlY3RvciB2ZWN0b3JXaXRo
WDoxIFk6MCBaOi0xXSwKLSAgICAgICAgW0NJVmVjdG9yIHZlY3RvcldpdGhYOjIgWTowIFo6LTJd
LAotICAgICAgICBbQ0lWZWN0b3IgdmVjdG9yV2l0aFg6MSBZOjAgWjotMV0sCi0gICAgICAgIG5p
bF07Ci19Ci0KLS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQotewotICAgIENJU2FtcGxlciAqaW1h
Z2UgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1hZ2U6aW5wdXRJbWFnZV07Ci0gICAgTlNEaWN0
aW9uYXJ5ICphcHBseU9wdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
c0FuZEtleXM6W2ltYWdlIGRlZmluaXRpb25dLCBrQ0lBcHBseU9wdGlvbkRlZmluaXRpb24sIG5p
bF07Ci0gICAgCi0gICAgQ0lJbWFnZSAqY29udm9sdmVYID0gW3NlbGYgYXBwbHk6Y29udm9sdmVL
ZXJuZWwgYXJndW1lbnRzOltzZWxmIHhDb252b2x2ZUFyZ3NXaXRoQnVtcE1hcDppbWFnZV0gb3B0
aW9uczphcHBseU9wdGlvbnNdOwotICAgIENJSW1hZ2UgKmNvbnZvbHZlWSA9IFtzZWxmIGFwcGx5
OmNvbnZvbHZlS2VybmVsIGFyZ3VtZW50czpbc2VsZiB5Q29udm9sdmVBcmdzV2l0aEJ1bXBNYXA6
aW1hZ2VdIG9wdGlvbnM6YXBwbHlPcHRpb25zXTsKLSAgICBDSVNhbXBsZXIgKnNhbXBsZXJYID0g
W0NJU2FtcGxlciBzYW1wbGVyV2l0aEltYWdlOmNvbnZvbHZlWF07Ci0gICAgQ0lTYW1wbGVyICpz
YW1wbGVyWSA9IFtDSVNhbXBsZXIgc2FtcGxlcldpdGhJbWFnZTpjb252b2x2ZVldOwotICAgIAot
ICAgIE5TQXJyYXkgKm5vcm1hbE1hcEFyZ3MgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOnNh
bXBsZXJYLCBzYW1wbGVyWSwgaW1hZ2UsIGlucHV0U3VyZmFjZVNjYWxlLCBuaWxdOwotICAgIHJl
dHVybiBbc2VsZiBhcHBseTpub3JtYWxNYXBLZXJuZWwgYXJndW1lbnRzOm5vcm1hbE1hcEFyZ3Mg
b3B0aW9uczphcHBseU9wdGlvbnNdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZH
KSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
Y2cvV0tQb2ludExpZ2h0RmlsdGVyLmNpa2VybmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tQb2ludExpZ2h0RmlsdGVyLmNpa2VybmVsCShyZXZpc2lv
biA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tQb2ludExpZ2h0
RmlsdGVyLmNpa2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5h
Yy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCi0gKi8KLQota2VybmVsIHZlYzQgZ2VuUG9pbnRMaWdodChzYW1wbGVyIG5vcm1h
bE1hcCwgdmVjMyBsaWdodFBvcywgZmxvYXQgc3VyZmFjZVNjYWxlKQotewotCXZlYzIgcG9zID0g
c2FtcGxlckNvb3JkKG5vcm1hbE1hcCk7Ci0JdmVjMyBQID0gdmVjMyhwb3MueCwgcG9zLnksIHN1
cmZhY2VTY2FsZSAqIHNhbXBsZShub3JtYWxNYXAsIHBvcykuYSk7Ci0JdmVjMyBMID0gbGlnaHRQ
b3MgLSBQOwotCUwgPSBub3JtYWxpemUoTCk7Ci0JcmV0dXJuIHZlYzQoTC54LCBMLnksIEwueiwg
MS4wKTsKLX0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tQb2ludExp
Z2h0RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS1BvaW50TGlnaHRGaWx0ZXIuaAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLUG9pbnRMaWdodEZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgPFF1YXJ0ekNvcmUv
Q29yZUltYWdlLmg+Ci0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotQGlu
dGVyZmFjZSBXS1BvaW50TGlnaHRGaWx0ZXIgOiBDSUZpbHRlciB7Ci0gICAgQ0lJbWFnZSAgKmlu
cHV0Tm9ybWFsTWFwOwotICAgIENJVmVjdG9yICppbnB1dExpZ2h0UG9zaXRpb247Ci0gICAgTlNO
dW1iZXIgKmlucHV0U3VyZmFjZVNjYWxlOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUo
U1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvY2cvV0tQb2ludExpZ2h0RmlsdGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9jZy9XS1BvaW50TGlnaHRGaWx0ZXIubQkocmV2aXNpb24gNDQzMjEpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLUG9pbnRMaWdodEZpbHRlci5tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDczICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tQb2ludExpZ2h0RmlsdGVyLmgiCi0KLSNpZiBFTkFC
TEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotc3RhdGljIENJS2VybmVsICpwb2ludExpZ2h0
RmlsdGVyID0gbmlsOwotCi1AaW1wbGVtZW50YXRpb24gV0tQb2ludExpZ2h0RmlsdGVyCi0KLSsg
KHZvaWQpaW5pdGlhbGl6ZQotewotICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJX
S1BvaW50TGlnaHQiCi0gICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCi0gICAg
ICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBQb2ludCBMaWdo
dCIsIGtDSUF0dHJpYnV0ZUZpbHRlckRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAg
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5
VmlkZW8sCi0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBr
Q0lDYXRlZ29yeU5vblNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29y
aWVzLAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVQ
b3NpdGlvbjMsIGtDSUF0dHJpYnV0ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmls
XSwgQCJpbnB1dExpZ2h0UG9zaXRpb24iLAotICAgICAgICAgICAgICAgICAgICAgbmlsXV07Ci19
Ci0KLSsgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKGlkKWlu
aXQKLXsKLSAgICBpZiAoIXBvaW50TGlnaHRGaWx0ZXIpIHsKLSAgICAgICAgTlNCdW5kbGUgKmJ1
bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOwotICAgICAgICBO
U1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tQb2ludExp
Z2h0RmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0cmluZyAqY29kZSA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZSBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJheSAqa2VybmVscyA9
IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAgcG9pbnRMaWdodEZp
bHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFpbl07Ci0gICAgfQotICAgIHJl
dHVybiBbc3VwZXIgaW5pdF07Ci19Ci0KLS0gKENJSW1hZ2UgKilvdXRwdXRJbWFnZQotewotICAg
IHJldHVybiBbc2VsZiBhcHBseTpwb2ludExpZ2h0RmlsdGVyLCBpbnB1dE5vcm1hbE1hcCwgaW5w
dXRMaWdodFBvc2l0aW9uLCBpbnB1dFN1cmZhY2VTY2FsZSwgbmlsXTsKLX0KLQotQGVuZAotCi0j
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5jaWtlcm5lbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJM
aWdodGluZ0ZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5jaWtlcm5lbAkod29y
a2luZyBjb3B5KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IE9s
aXZlciBIdW50IDxvamgxNkBzdHVkZW50LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S
Ci0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0gCi1r
ZXJuZWwgdmVjNCBiYXNpYyhzYW1wbGVyIGlucHV0Tm9ybWFsVmVjdG9ycywgc2FtcGxlciBpbnB1
dExpZ2h0VmVjdG9ycywgX19jb2xvciBpbnB1dExpZ2h0aW5nQ29sb3IsIGZsb2F0IGlucHV0U3Vy
ZmFjZVNjYWxlLCBmbG9hdCBpbnB1dFNwZWN1bGFyQ29uc3RhbnQsCi0gICAgICAgIGZsb2F0IGlu
cHV0U3BlY3VsYXJFeHBvbmVudCwgZmxvYXQgaW5wdXRLZXJuZWxVbml0TGVuZ3RoWCwgZmxvYXQg
aW5wdXRLZXJuZWxVbml0TGVuZ3RoWSkKLXsKLSAgICB2ZWMyIHBvcyA9IHNhbXBsZXJDb29yZChp
bnB1dExpZ2h0VmVjdG9ycyk7Ci0gICAgdmVjMiBwb3NuID0gc2FtcGxlckNvb3JkKGlucHV0Tm9y
bWFsVmVjdG9ycyk7Ci0gICAgdmVjMyBsID0gc2FtcGxlKGlucHV0TGlnaHRWZWN0b3JzLCBwb3Mp
Lnh5ejsKLSAgICB2ZWMzIG4gPSBzYW1wbGUoaW5wdXROb3JtYWxWZWN0b3JzLCBwb3NuKS54eXo7
Ci0gICAgdmVjMyBoID0gbCt2ZWMzKDAuMCwgMC4wLCAxLjApOwotICAgIGggPSBub3JtYWxpemUo
aCk7Ci0gICAgZmxvYXQgbmggPSBpbnB1dFNwZWN1bGFyQ29uc3RhbnQqcG93KChkb3QobiwgaCkp
LCBpbnB1dFNwZWN1bGFyRXhwb25lbnQpOwotICAgIHZlYzQgcmVzID0gaW5wdXRMaWdodGluZ0Nv
bG9yICogbmg7Ci0gICAgcmVzLmEgPSBtYXgocmVzLnIsIHJlcy5nKTsKLSAgICByZXMuYSA9IG1h
eChyZXMuYSwgcmVzLmIpOwotICAgIHJldHVybiByZXM7Ci19CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL2NnL1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tTcGVjdWxhckxpZ2h0aW5nRmls
dGVyLmgJKHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9j
Zy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0MiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
Ci0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5o
PgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLUBpbnRlcmZhY2UgV0tT
cGVjdWxhckxpZ2h0aW5nRmlsdGVyIDogQ0lGaWx0ZXIgewotICAgIENJU2FtcGxlciAqaW5wdXRO
b3JtYWxNYXA7Ci0gICAgQ0lTYW1wbGVyICppbnB1dExpZ2h0VmVjdG9yczsKLSAgICBDSUNvbG9y
ICAqaW5wdXRMaWdodGluZ0NvbG9yOwotICAgIE5TTnVtYmVyICppbnB1dFN1cmZhY2VTY2FsZTsK
LSAgICBOU051bWJlciAqaW5wdXRTcGVjdWxhckNvbnN0YW50OwotICAgIE5TTnVtYmVyICppbnB1
dFNwZWN1bGFyRXhwb25lbnQ7Ci0gICAgTlNOdW1iZXIgKmlucHV0S2VybmVsVW5pdExlbmd0aFg7
Ci0gICAgTlNOdW1iZXIgKmlucHV0S2VybmVsVW5pdExlbmd0aFk7Ci19Ci1AZW5kCi0KLSNlbmRp
ZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvY2cvV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1NwZWN1bGFyTGlnaHRpbmdGaWx0
ZXIubQkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLU3BlY3VsYXJMaWdodGluZ0ZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDk2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV0tT
cGVjdWxhckxpZ2h0aW5nRmlsdGVyLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKLQotc3RhdGljIENJS2VybmVsICpzcGVjdWxhckxpZ2h0aW5nRmlsdGVyID0gbmlsOwot
Ci1AaW1wbGVtZW50YXRpb24gV0tTcGVjdWxhckxpZ2h0aW5nRmlsdGVyCi0KLSsgKHZvaWQpaW5p
dGlhbGl6ZQotewotICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS1NwZWN1bGFy
TGlnaHRpbmciICAKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yOnNlbGYKLSAgICAg
ICAgICAgICAgICAgY2xhc3NBdHRyaWJ1dGVzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhP
YmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgIEAiV2ViS2l0IFNwZWN1bGFyIExp
Z2h0aW5nIiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6ZSwga0NJQ2F0
ZWdvcnlWaWRlbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29yeVN0aWxsSW1h
Z2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0ZUZpbHRlckNh
dGVnb3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlX
aXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgW0NJQ29sb3IgY29s
b3JXaXRoUmVkOjEuMGYgZ3JlZW46MS4wZiBibHVlOjEuMGYgYWxwaGE6MS4wZl0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlRGVmYXVsdCwgbmlsXSwgIEAiaW5wdXRMaWdo
dGluZ0NvbG9yIiwKLSAgICAgICAgICAgICAgICAgICAgIFtOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3RzQW5kS2V5czoKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTowLjBdLCBrQ0lBdHRyaWJ1dGVNaW4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlRGVm
YXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJs
ZToxLjBdLCBrQ0lBdHRyaWJ1dGVJZGVudGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBr
Q0lBdHRyaWJ1dGVUeXBlU2NhbGFyLCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIG5pbF0sIEAiaW5wdXRTdXJmYWNlU2NhbGUiLAotICAgICAgICAgICAgICAgICAg
ICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAg
ICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJp
YnV0ZU1pbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZToxLjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJp
YnV0ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dFNwZWN1bGFy
Q29uc3RhbnQiLAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5
V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOjAuMF0sIGtDSUF0dHJpYnV0ZU1pbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZToxMjguMF0sIGtDSUF0dHJpYnV0ZU1p
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTox
LjBdLCBrQ0lBdHRyaWJ1dGVEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051
bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0dHJpYnV0ZUlkZW50aXR5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVTY2FsYXIsIGtDSUF0dHJpYnV0ZVR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwgQCJpbnB1dFNwZWN1bGFyRXhwb25l
bnQiLAotICAgICAgICAgICAgICAgICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9i
amVjdHNBbmRLZXlzOgotICAgICAgICAgICAgICAgICAgICAgICAgIGtDSUF0dHJpYnV0ZVR5cGVP
ZmZzZXQsIGtDSUF0dHJpYnV0ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmlsXSwg
QCJpbnB1dEtlcm5lbFVuaXRMZW5ndGgiLAotICAgICAgICAgICAgICAgICAgICAgbmlsXV07Ci19
Ci0KLSsgKENJRmlsdGVyICopZmlsdGVyV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQotewotICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07Ci19Ci0KLS0gKGlkKWlu
aXQKLXsKLSAgICBpZiAoIXNwZWN1bGFyTGlnaHRpbmdGaWx0ZXIpIHsKLSAgICAgICAgTlNCdW5k
bGUgKmJ1bmRsZSA9IFtOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbc2VsZiBjbGFzc11dOwotICAg
ICAgICBOU1N0cmluZyAqa2VybmVsRmlsZSA9IFtidW5kbGUgcGF0aEZvclJlc291cmNlOkAiV0tT
cGVjdWxhckxpZ2h0aW5nRmlsdGVyIiBvZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0
cmluZyAqY29kZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmls
ZSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJh
eSAqa2VybmVscyA9IFtDSUtlcm5lbCBrZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAg
c3BlY3VsYXJMaWdodGluZ0ZpbHRlciA9IFtba2VybmVscyBvYmplY3RBdEluZGV4OjBdIHJldGFp
bl07Ci0gICAgfQotICAgIHJldHVybiBbc3VwZXIgaW5pdF07Ci19Ci0KLS0gKENJSW1hZ2UgKilv
dXRwdXRJbWFnZQotewotICAgIHJldHVybiBbc2VsZiBhcHBseTpzcGVjdWxhckxpZ2h0aW5nRmls
dGVyLCBpbnB1dE5vcm1hbE1hcCwgaW5wdXRMaWdodFZlY3RvcnMsIGlucHV0TGlnaHRpbmdDb2xv
ciwgaW5wdXRTdXJmYWNlU2NhbGUsIGlucHV0U3BlY3VsYXJDb25zdGFudCwKLSAgICAgICAgaW5w
dXRTcGVjdWxhckV4cG9uZW50LCBpbnB1dEtlcm5lbFVuaXRMZW5ndGhYLCBpbnB1dEtlcm5lbFVu
aXRMZW5ndGhZLCBuaWxdOwotfQotCi1AZW5kCi0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tT
cG90TGlnaHRGaWx0ZXIuY2lrZXJuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5jaWtlcm5lbAkocmV2aXNpb24gNDQzMjEp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0RmlsdGVyLmNp
a2VybmVsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2FudGVyYnVyeS5hYy5uej4uICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQota2VybmVsIHZlYzQgc3BvdExpZ2h0RmlsdGVyKHNhbXBsZXIgbGlnaHRWZWN0b3Jz
LCB2ZWMzIGxpZ2h0RGlyZWN0aW9uLCBmbG9hdCBzcGVjdWxhckV4cG9uZW50LCBmbG9hdCBjb3ND
dXRvZmZBbmdsZSkKLXsKLSAgICB2ZWMyIHBvcyA9IHNhbXBsZXJDb29yZChsaWdodFZlY3RvcnMp
OwotICAgIHZlYzMgbCA9IHNhbXBsZShsaWdodFZlY3RvcnMsIHBvcykueHl6OwotICAgIGZsb2F0
IHNsID0gLWRvdChsaWdodERpcmVjdGlvbiwgbCk7Ci0gICAgc2wgPSBtYXgoc2wsIDAuMCk7Ci0g
ICAgc2wgPSBwb3coc2wsIHNwZWN1bGFyRXhwb25lbnQpICogc2lnbihzbCAtIGNvc0N1dG9mZkFu
Z2xlKTsKLSAgICByZXR1cm4gdmVjNChsLngsIGwueSwgbC56LCBzbCk7Ci19CkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0RmlsdGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1Nwb3RMaWdodEZpbHRlci5o
CShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tT
cG90TGlnaHRGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW1wb3J0IDxRdWFydHpDb3JlL0NvcmVJbWFnZS5oPgotCi0jaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCi0KLUBpbnRlcmZhY2UgV0tTcG90TGlnaHRGaWx0
ZXIgOiBDSUZpbHRlciB7Ci0gICAgQ0lJbWFnZSAgKmlucHV0TGlnaHRWZWN0b3JzOwotICAgIENJ
VmVjdG9yICppbnB1dExpZ2h0RGlyZWN0aW9uOwotICAgIE5TTnVtYmVyICppbnB1dFNwZWN1bGFy
RXhwb25lbnQ7Ci0gICAgTlNOdW1iZXIgKmlucHV0TGltaXRpbmdDb25lQW5nbGU7Ci19Ci1AZW5k
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tTcG90TGlnaHRGaWx0ZXIubQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLU3BvdExpZ2h0RmlsdGVyLm0J
KHJldmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1Nw
b3RMaWdodEZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAotICovCi0gCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldLU3BvdExpZ2h0Rmls
dGVyLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotc3RhdGljIENJ
S2VybmVsICpzcG90TGlnaHRGaWx0ZXIgPSBuaWw7Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS1Nwb3RM
aWdodEZpbHRlcgotCi0rICh2b2lkKWluaXRpYWxpemUKLXsKLSAgICBbQ0lGaWx0ZXIgcmVnaXN0
ZXJGaWx0ZXJOYW1lOkAiV0tTcG90TGlnaHQiCi0gICAgICAgICAgICAgICAgICAgICBjb25zdHJ1
Y3RvcjpzZWxmCi0gICAgICAgICAgICAgICAgIGNsYXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICBAIldl
YktpdCBTcG90IExpZ2h0Iiwga0NJQXR0cmlidXRlRmlsdGVyRGlzcGxheU5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOmtDSUNhdGVnb3J5U3R5bGl6
ZSwga0NJQ2F0ZWdvcnlWaWRlbywKLSAgICAgICAgICAgICAgICAgICAgICAgICBrQ0lDYXRlZ29y
eVN0aWxsSW1hZ2UsIGtDSUNhdGVnb3J5Tm9uU3F1YXJlUGl4ZWxzLG5pbF0sIGtDSUF0dHJpYnV0
ZUZpbHRlckNhdGVnb3JpZXMsCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRp
Y3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAga0NJ
QXR0cmlidXRlVHlwZVBvc2l0aW9uMywga0NJQXR0cmlidXRlVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBuaWxdLCBAImlucHV0TGlnaHREaXJlY3Rpb24iLAotICAgICAgICAgICAgICAg
ICAgICAgW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgotICAgICAg
ICAgICAgICAgICAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOjEuMF0sIGtDSUF0
dHJpYnV0ZURlZmF1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhEb3VibGU6MS4wXSwga0NJQXR0cmlidXRlSWRlbnRpdHksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAga0NJQXR0cmlidXRlVHlwZVNjYWxhciwga0NJQXR0cmlidXRlVHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBuaWxdLCBAImlucHV0U3BlY3VsYXJFeHBvbmVudCIsCi0gICAg
ICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtl
eXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlwZUFuZ2xlLCBrQ0lB
dHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF0sIEAiaW5wdXRMaW1p
dGluZ0NvbmVBbmdsZSIsCi0gICAgICAgICAgICAgICAgICAgICBuaWxdXTsKLX0KLQotKyAoQ0lG
aWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0dXJuIFtb
W3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQpaW5pdAotewotICAg
IGlmICghc3BvdExpZ2h0RmlsdGVyKSB7Ci0gICAgICAgIE5TQnVuZGxlICpidW5kbGUgPSBbTlNC
dW5kbGUgYnVuZGxlRm9yQ2xhc3M6W3NlbGYgY2xhc3NdXTsKLSAgICAgICAgTlNTdHJpbmcgKmtl
cm5lbEZpbGUgPSBbYnVuZGxlIHBhdGhGb3JSZXNvdXJjZTpAIldLU3BvdExpZ2h0RmlsdGVyIiBv
ZlR5cGU6QCJjaWtlcm5lbCJdOwotICAgICAgICBOU1N0cmluZyAqY29kZSA9IFtOU1N0cmluZyBz
dHJpbmdXaXRoQ29udGVudHNPZkZpbGU6a2VybmVsRmlsZSBlbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZyBlcnJvcjowXTsKLSAgICAgICAgTlNBcnJheSAqa2VybmVscyA9IFtDSUtlcm5lbCBr
ZXJuZWxzV2l0aFN0cmluZzpjb2RlXTsKLSAgICAgICAgc3BvdExpZ2h0RmlsdGVyID0gW1trZXJu
ZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKLSAgICB9Ci0gICAgcmV0dXJuIFtzdXBlciBp
bml0XTsKLX0KLQotLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCi17Ci0gICAgZmxvYXQgY29zY3V0
b2ZmID0gY29zZihbaW5wdXRMaW1pdGluZ0NvbmVBbmdsZSBmbG9hdFZhbHVlXSk7Ci0gICAgaWYg
KGNvc2N1dG9mZiA8IDApIAotICAgICAgICBjb3NjdXRvZmYgPSAtY29zY3V0b2ZmOwotICAgIHJl
dHVybiBbc2VsZiBhcHBseTpzcG90TGlnaHRGaWx0ZXIsIGlucHV0TGlnaHRWZWN0b3JzLCBpbnB1
dExpZ2h0RGlyZWN0aW9uLCBpbnB1dFNwZWN1bGFyRXhwb25lbnQsIFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6Y29zY3V0b2ZmXSwgbmlsXTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL2NnL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dLVGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5l
bAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2NnL1dL
VGFibGVUcmFuc2ZlckZpbHRlci5jaWtlcm5lbAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IE9saXZlciBIdW50IDxvamgxNkBzdHVkZW50
LmNhbnRlcmJ1cnkuYWMubno+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLS8qIEZvciBzb21lIHJlYXNvbiBDSSBpcyBp
Z25vcmluZyB0aGUgcmVxdWVzdCB0byBpbnRlcnBvbGF0ZSB0aGUgY29sb3VyIHJldHVybmVkCi0g
KiB3aGVuIHdlIHNhbXBsZSB0aGUgbG9va3VwIHRhYmxlLiAgVGhlcmVmb3JlIGl0IGlzIG5lY2Vz
c2FyeSB0byBpbXBsZW1lbnQgdGhlCi0gKiBibGVuZCBvcGVyYXRpb24gb3Vyc2VsdmVzLgotICov
Ci1rZXJuZWwgdmVjNCB0YWJsZVRyYW5zZmVyKHNhbXBsZXIgaW1hZ2UsIHNhbXBsZXIgdGFibGUs
IHZlYzQgcmdiYVNlbGVjdG9yLCBmbG9hdCBtYXhJbmRleCkKLXsKLSAgICB2ZWM0IEMgPSBzYW1w
bGUoaW1hZ2UsIHNhbXBsZXJDb29yZChpbWFnZSkpOwotICAgIGZsb2F0IGsgPSBkb3QocmdiYVNl
bGVjdG9yLCBDKSAqIG1heEluZGV4OwotICAgIGZsb2F0IHQgPSBmcmFjdChrKTsKLSAgICBrID0g
Zmxvb3Ioayk7Ci0gICAgdmVjNCByZXMgPSBzYW1wbGUodGFibGUsIHZlYzIoaywgMC4wKSkqKDEu
MC10KStzYW1wbGUodGFibGUsIHZlYzIoaysxLjAsIDAuMCkpKih0KTsKLSAgICByZXR1cm4gcmVz
OwotfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1RhYmxlVHJhbnNm
ZXJGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLVGFibGVUcmFuc2ZlckZpbHRlci5oCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBPbGl2ZXIgSHVu
dCA8b2poMTZAc3R1ZGVudC5jYW50ZXJidXJ5LmFjLm56Pi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9S
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgotICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW1wb3J0IDxR
dWFydHpDb3JlL0NvcmVJbWFnZS5oPgotCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRF
UlMpCi0KLUBpbnRlcmZhY2UgV0tUYWJsZVRyYW5zZmVyRmlsdGVyIDogQ0lGaWx0ZXIgewotICAg
IENJSW1hZ2UgKmlucHV0SW1hZ2U7Ci0gICAgQ0lJbWFnZSAqaW5wdXRUYWJsZTsKLSAgICBDSVZl
Y3RvciAqaW5wdXRTZWxlY3RvcjsKLX0KLQotQGVuZAotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvY2cvV0tUYWJsZVRyYW5zZmVyRmlsdGVyLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9jZy9XS1RhYmxlVHJhbnNmZXJGaWx0
ZXIubQkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL2Nn
L1dLVGFibGVUcmFuc2ZlckZpbHRlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDc2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYgT2xpdmVyIEh1bnQgPG9qaDE2QHN0dWRlbnQuY2Fu
dGVyYnVyeS5hYy5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJX
S1RhYmxlVHJhbnNmZXJGaWx0ZXIuaCIKLQotI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxU
RVJTKQotCi1zdGF0aWMgQ0lLZXJuZWwgKnRhYmxlVHJhbnNmZXJGaWx0ZXIgPSBuaWw7Ci0KLUBp
bXBsZW1lbnRhdGlvbiBXS1RhYmxlVHJhbnNmZXJGaWx0ZXIKLSsgKHZvaWQpaW5pdGlhbGl6ZQot
ewotICAgIFtDSUZpbHRlciByZWdpc3RlckZpbHRlck5hbWU6QCJXS1RhYmxlVHJhbnNmZXIiCi0g
ICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcjpzZWxmCi0gICAgICAgICAgICAgICAgIGNs
YXNzQXR0cmlidXRlczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6
Ci0gICAgICAgICAgICAgICAgICAgICBAIldlYktpdCBUYWJsZSBUcmFuc2ZlciIsIGtDSUF0dHJp
YnV0ZUZpbHRlckRpc3BsYXlOYW1lLAotICAgICAgICAgICAgICAgICAgICAgW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czprQ0lDYXRlZ29yeVN0eWxpemUsIGtDSUNhdGVnb3J5VmlkZW8sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAga0NJQ2F0ZWdvcnlTdGlsbEltYWdlLCBrQ0lDYXRlZ29yeU5v
blNxdWFyZVBpeGVscyxuaWxdLCBrQ0lBdHRyaWJ1dGVGaWx0ZXJDYXRlZ29yaWVzLCAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAga0NJQXR0cmlidXRlVHlw
ZUdyYWRpZW50LCBrQ0lBdHRyaWJ1dGVUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5p
bF0sIEAiaW5wdXRUYWJsZSIsICAgCi0gICAgICAgICAgICAgICAgICAgICBuaWxdXTsKLX0KLQot
KyAoQ0lGaWx0ZXIgKilmaWx0ZXJXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lCi17Ci0gICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKLX0KLQotLSAoaWQpaW5pdAot
ewotICAgIGlmICghdGFibGVUcmFuc2ZlckZpbHRlcikgewotICAgICAgICBOU0J1bmRsZSAqYnVu
ZGxlID0gW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltzZWxmIGNsYXNzXV07Ci0gICAgICAgIE5T
U3RyaW5nICprZXJuZWxGaWxlID0gW2J1bmRsZSBwYXRoRm9yUmVzb3VyY2U6QCJXS1RhYmxlVHJh
bnNmZXJGaWx0ZXIiIG9mVHlwZTpAImNpa2VybmVsIl07Ci0gICAgICAgIE5TU3RyaW5nICpjb2Rl
ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhDb250ZW50c09mRmlsZTprZXJuZWxGaWxlIGVuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOjBdOwotICAgICAgICBOU0FycmF5ICprZXJuZWxz
ID0gW0NJS2VybmVsIGtlcm5lbHNXaXRoU3RyaW5nOmNvZGVdOwotICAgICAgICB0YWJsZVRyYW5z
ZmVyRmlsdGVyID0gW1trZXJuZWxzIG9iamVjdEF0SW5kZXg6MF0gcmV0YWluXTsKLSAgICB9Ci0g
ICAgcmV0dXJuIFtzdXBlciBpbml0XTsKLX0KLQotLSAoQ0lJbWFnZSAqKW91dHB1dEltYWdlCi17
Ci0gICAgQ0lTYW1wbGVyICppbnB1dFNhbXBsZXIgPSBbQ0lTYW1wbGVyIHNhbXBsZXJXaXRoSW1h
Z2U6IGlucHV0SW1hZ2VdOwotICAgIENJU2FtcGxlciAqdGFibGVTYW1wbGVyID0gW0NJU2FtcGxl
ciBzYW1wbGVyV2l0aEltYWdlOiBpbnB1dFRhYmxlIGtleXNBbmRWYWx1ZXM6a0NJU2FtcGxlckZp
bHRlck1vZGUsIGtDSVNhbXBsZXJGaWx0ZXJMaW5lYXIsIGtDSVNhbXBsZXJXcmFwTW9kZSwga0NJ
U2FtcGxlcldyYXBDbGFtcCwgbmlsXTsKLSAgICBOU0FycmF5ICphcmdzID0gW05TQXJyYXkgYXJy
YXlXaXRoT2JqZWN0czppbnB1dFNhbXBsZXIsIHRhYmxlU2FtcGxlciwgaW5wdXRTZWxlY3Rvciwg
Ci0gICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOltpbnB1dFRhYmxlIGV4dGVudF0u
c2l6ZS53aWR0aCAtIDEuMGZdLCBAImRlZmluaXRpb24iLCBbaW5wdXRTYW1wbGVyIGRlZmluaXRp
b25dLCBuaWxdOwotICAgIHJldHVybiBbc2VsZiBhcHBseTp0YWJsZVRyYW5zZmVyRmlsdGVyIGFy
Z3VtZW50czphcmdzIG9wdGlvbnM6bmlsXTsKLX0KLQotQGVuZAotCi0jZW5kaWYgLy8gRU5BQkxF
KFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9tYWMv
U1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMuaAkocmV2
aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0
ZXJQbGF0Zm9ybURhdGFNYWMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2NSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWNfaAotI2RlZmluZSBT
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hY19oCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBF
TkFCTEUoRklMVEVSUykKLQotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyLmgiCi0KLSNpbmNs
dWRlIDxBcHBsaWNhdGlvblNlcnZpY2VzL0FwcGxpY2F0aW9uU2VydmljZXMuaD4KLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0KLUBjbGFzcyBDSUltYWdlOwotQGNsYXNzIENJRmlsdGVyOwot
QGNsYXNzIENJQ29udGV4dDsKLUBjbGFzcyBOU0FycmF5OwotQGNsYXNzIE5TTXV0YWJsZURpY3Rp
b25hcnk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBTVkdSZXNvdXJjZUZpbHRl
clBsYXRmb3JtRGF0YU1hYyA6IHB1YmxpYyBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YSB7
Ci0gICAgcHVibGljOgotICAgICAgICBTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyhT
VkdSZXNvdXJjZUZpbHRlciopOwotICAgICAgICB2aXJ0dWFsIH5TVkdSZXNvdXJjZUZpbHRlclBs
YXRmb3JtRGF0YU1hYygpOwotICAgICAgICAKLSAgICAgICAgQ0lJbWFnZSogaW1hZ2VGb3JOYW1l
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEltYWdlRm9yTmFtZShDSUlt
YWdlKiwgY29uc3QgU3RyaW5nJik7Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldE91dHB1dElt
YWdlKGNvbnN0IFNWR0ZpbHRlckVmZmVjdCosIENJSW1hZ2UqKTsKLSAgICAgICAgQ0lJbWFnZSog
aW5wdXRJbWFnZShjb25zdCBTVkdGaWx0ZXJFZmZlY3QqKTsKLSAgICAgICAgCi0gICAgICAgIE5T
QXJyYXkqIGdldENJRmlsdGVyU3RhY2soQ0lJbWFnZSogaW5wdXRJbWFnZSwgY29uc3QgRmxvYXRS
ZWN0JiBiYm94KTsKLSAgICAgICAgCi0gICAgICAgIFJldGFpblB0cjxDSUNvbnRleHQ+IG1fZmls
dGVyQ0lDb250ZXh0OwotICAgICAgICBDR0xheWVyUmVmIG1fZmlsdGVyQ0dMYXllcjsKLSAgICAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1faW1hZ2VzQnlOYW1lOwotICAgICAg
ICBTVkdSZXNvdXJjZUZpbHRlciogbV9maWx0ZXI7Ci0gICAgfTsKLX0KLQotI2VuZGlmIC8vICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLQotI2VuZGlmIC8vIFNWR1Jlc291cmNl
RmlsdGVyUGxhdGZvcm1EYXRhTWFjX2gKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL21hYy9T
VkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9tYWMvU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGFNYWMubW0JKHJl
dmlzaW9uIDQ0MzIxKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvbWFjL1NWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyOCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKLQotI2luY2x1ZGUgIlNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjLmgiCi0j
aW5jbHVkZSA8UXVhcnR6Q29yZS9Db3JlSW1hZ2UuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1zdGF0aWMgY29uc3QgY2hhciogY29uc3QgU1ZHUHJldmlvdXNGaWx0ZXJPdXRwdXROYW1lID0g
Il9fcHJldmlvdXNPdXRwdXRfXyI7Ci0KLVNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFj
OjpTVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYyhTVkdSZXNvdXJjZUZpbHRlciogZmls
dGVyKQotICAgIDogbV9maWx0ZXJDR0xheWVyKDApCi0gICAgLCBtX2ltYWdlc0J5TmFtZShBZG9w
dE5TLCBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKQotICAgICwgbV9maWx0ZXIo
ZmlsdGVyKQotewotfQotCi1TVkdSZXNvdXJjZUZpbHRlclBsYXRmb3JtRGF0YU1hYzo6flNWR1Jl
c291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjKCkKLXsKLSAgICBBU1NFUlQoIW1fZmlsdGVyQ0dM
YXllcik7Ci0gICAgQVNTRVJUKCFtX2ZpbHRlckNJQ29udGV4dCk7Ci19Ci0KLSAgICAKLU5TQXJy
YXkqIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjOjpnZXRDSUZpbHRlclN0YWNrKENJ
SW1hZ2UqIGlucHV0SW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgYmJveCkKLXsKLSAgICBOU011dGFi
bGVBcnJheSogZmlsdGVyRWZmZWN0cyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgCi0g
ICAgc2V0SW1hZ2VGb3JOYW1lKGlucHV0SW1hZ2UsICJTb3VyY2VHcmFwaGljIik7IC8vIGlucHV0
Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBtX2ZpbHRlci0+ZWZmZWN0
cygpLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIENJRmlsdGVyKiBmaWx0ZXIgPSBtX2ZpbHRlci0+
ZWZmZWN0cygpW2ldLT5nZXRDSUZpbHRlcihiYm94KTsKLSAgICAgICAgaWYgKGZpbHRlcikKLSAg
ICAgICAgICAgIFtmaWx0ZXJFZmZlY3RzIGFkZE9iamVjdDpmaWx0ZXJdOwotICAgIH0KLSAgICAK
LSAgICBbbV9pbWFnZXNCeU5hbWUuZ2V0KCkgcmVtb3ZlQWxsT2JqZWN0c107IC8vIGNsZWFuIHVw
IGJlZm9yZSBuZXh0IHRpbWUuCi0gICAgCi0gICAgcmV0dXJuIGZpbHRlckVmZmVjdHM7Ci19Ci0g
ICAgCi1zdGF0aWMgaW5saW5lIENJSW1hZ2UqIGFscGhhSW1hZ2VGb3JJbWFnZShDSUltYWdlKiBp
bWFnZSkKLXsKLSAgICBDSUZpbHRlciogb25seUFscGhhID0gW0NJRmlsdGVyIGZpbHRlcldpdGhO
YW1lOkAiQ0lDb2xvck1hdHJpeCJdOwotICAgIENHRmxvYXQgemVyb1s0XSA9IHswLCAwLCAwLCAw
fTsKLSAgICBbb25seUFscGhhIHNldERlZmF1bHRzXTsKLSAgICBbb25seUFscGhhIHNldFZhbHVl
OmltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKLSAgICBbb25seUFscGhhIHNldFZhbHVlOltD
SVZlY3RvciB2ZWN0b3JXaXRoVmFsdWVzOnplcm8gY291bnQ6NF0gZm9yS2V5OkAiaW5wdXRSVmVj
dG9yIl07Ci0gICAgW29ubHlBbHBoYSBzZXRWYWx1ZTpbQ0lWZWN0b3IgdmVjdG9yV2l0aFZhbHVl
czp6ZXJvIGNvdW50OjRdIGZvcktleTpAImlucHV0R1ZlY3RvciJdOwotICAgIFtvbmx5QWxwaGEg
c2V0VmFsdWU6W0NJVmVjdG9yIHZlY3RvcldpdGhWYWx1ZXM6emVybyBjb3VudDo0XSBmb3JLZXk6
QCJpbnB1dEJWZWN0b3IiXTsKLSAgICByZXR1cm4gW29ubHlBbHBoYSB2YWx1ZUZvcktleTpAIm91
dHB1dEltYWdlIl07Ci19Ci0KLUNJSW1hZ2UqIFNWR1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRh
TWFjOjppbWFnZUZvck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIHJldHVy
biBbbV9pbWFnZXNCeU5hbWUuZ2V0KCkgb2JqZWN0Rm9yS2V5Om5hbWVdOwotfQotCi12b2lkIFNW
R1Jlc291cmNlRmlsdGVyUGxhdGZvcm1EYXRhTWFjOjpzZXRJbWFnZUZvck5hbWUoQ0lJbWFnZSog
aW1hZ2UsIGNvbnN0IFN0cmluZyYgbmFtZSkKLXsKLSAgICBbbV9pbWFnZXNCeU5hbWUuZ2V0KCkg
c2V0VmFsdWU6aW1hZ2UgZm9yS2V5Om5hbWVdOwotfQotCi12b2lkIFNWR1Jlc291cmNlRmlsdGVy
UGxhdGZvcm1EYXRhTWFjOjpzZXRPdXRwdXRJbWFnZShjb25zdCBTVkdGaWx0ZXJFZmZlY3QqIGZp
bHRlckVmZmVjdCwgQ0lJbWFnZSogb3V0cHV0KQotewotICAgIGlmICghZmlsdGVyRWZmZWN0LT5y
ZXN1bHQoKS5pc0VtcHR5KCkpCi0gICAgICAgIHNldEltYWdlRm9yTmFtZShvdXRwdXQsIGZpbHRl
ckVmZmVjdC0+cmVzdWx0KCkpOwotICAgIAotICAgIHNldEltYWdlRm9yTmFtZShvdXRwdXQsIFNW
R1ByZXZpb3VzRmlsdGVyT3V0cHV0TmFtZSk7Ci19Ci0KLUNJSW1hZ2UqIFNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhTWFjOjppbnB1dEltYWdlKGNvbnN0IFNWR0ZpbHRlckVmZmVjdCogZmls
dGVyRWZmZWN0KQotewotICAgIGlmIChmaWx0ZXJFZmZlY3QtPmluKCkuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIENJSW1hZ2UqIGluSW1hZ2UgPSBpbWFnZUZvck5hbWUoU1ZHUHJldmlvdXNGaWx0ZXJP
dXRwdXROYW1lKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghaW5JbWFnZSkKLSAgICAgICAgICAg
IGluSW1hZ2UgPSBpbWFnZUZvck5hbWUoIlNvdXJjZUdyYXBoaWMiKTsKLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBpbkltYWdlOwotICAgIH0gZWxzZSBpZiAoZmlsdGVyRWZmZWN0LT5pbigpID09
ICJTb3VyY2VBbHBoYSIpIHsKLSAgICAgICAgQ0lJbWFnZSogc291cmNlQWxwaGEgPSBpbWFnZUZv
ck5hbWUoZmlsdGVyRWZmZWN0LT5pbigpKTsKLSAgICAgICAgCi0gICAgICAgIGlmICghc291cmNl
QWxwaGEpIHsKLSAgICAgICAgICAgIENJSW1hZ2UqIHNvdXJjZUdyYXBoaWMgPSBpbWFnZUZvck5h
bWUoIlNvdXJjZUdyYXBoaWMiKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFzb3Vy
Y2VHcmFwaGljKQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIHNvdXJjZUFscGhhID0gYWxwaGFJbWFnZUZvckltYWdlKHNvdXJjZUdyYXBoaWMp
OwotICAgICAgICAgICAgc2V0SW1hZ2VGb3JOYW1lKHNvdXJjZUFscGhhLCAiU291cmNlQWxwaGEi
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHNvdXJjZUFscGhhOwotICAg
IH0KLSAgICAKLSAgICByZXR1cm4gaW1hZ2VGb3JOYW1lKGZpbHRlckVmZmVjdC0+aW4oKSk7Ci19
Ci0gICAgCi0KLX0KLQotI2VuZGlmIC8vICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVS
UykKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlRmlsdGVyUXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1Jlc291cmNlRmlsdGVy
UXQuY3BwCShyZXZpc2lvbiA0NDMyMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3F0L1NWR1Jl
c291cmNlRmlsdGVyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0g
ICAgQ29weXJpZ2h0IChDKSAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3Jn
PgotCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0Ci0KLSAgICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
ICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWludCB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKLSNpbmNs
dWRlICJTVkdSZXNvdXJjZUZpbHRlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHUmVzb3VyY2VGaWx0ZXJQbGF0Zm9ybURhdGEqIFNW
R1Jlc291cmNlRmlsdGVyOjpjcmVhdGVQbGF0Zm9ybURhdGEoKQotewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBh
cmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKLX0KLQotdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIo
R3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpCi17Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLQotLy8gdmltOnRz
PTQ6bm9ldApJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mvc2tpYS9TVkdSZXNvdXJjZUZpbHRl
clNraWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL3NraWEvU1ZHUmVz
b3VyY2VGaWx0ZXJTa2lhLmNwcAkocmV2aXNpb24gNDQzMjEpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9za2lhL1NWR1Jlc291cmNlRmlsdGVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKEZJTFRFUlMpCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJTVkdS
ZXNvdXJjZUZpbHRlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVNWR1Jlc291cmNlRmls
dGVyUGxhdGZvcm1EYXRhKiBTVkdSZXNvdXJjZUZpbHRlcjo6Y3JlYXRlUGxhdGZvcm1EYXRhKCkK
LXsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZp
bHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotfQotCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjphcHBseUZpbHRlcihHcmFw
aGljc0NvbnRleHQqJiwgY29uc3QgRmxvYXRSZWN0JikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30842</attachid>
            <date>2009-06-01 14:45:01 -0700</date>
            <delta_ts>2009-06-10 11:54:14 -0700</delta_ts>
            <desc>subRegion Code + feFlood</desc>
            <filename>filter-11.patch</filename>
            <type>text/plain</type>
            <size>4629</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDMzMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMDktMDYtMDEgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJL
aXQgbmVlZHMgY3Jvc3MtcGxhdGZvcm0gZmlsdGVyIHN5c3RlbQorICAgICAgICBbaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5OTkxXQorCisgICAgICAgIEFkZGVkIHN1
YlJlZ2lvbiBjb2RlIHRvIFNWR0ZpbHRlciBhbmQgdGhlIGZpcnN0IGZpbHRlciBlZmZlY3Q6IGZl
Rmxvb2QuCisgICAgICAgIFdlIHBhc3MgdGhlIGZpbHRlclJlZ2lvbnMgdGVzdCBvZiBiYXRpayBh
Z2Fpbi4KKworICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9vZCk6CisgICAgICAgIChXZWJDb3JlOjpG
RUZsb29kOjphcHBseSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y2FsY3VsYXRlRWZmZWN0U3ViUmVn
aW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckJ1aWxkZXI6OmdldEVmZmVjdEJ5SWQpOgor
CiAyMDA5LTA2LTAxICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCShyZXZpc2lvbiA0NDMzMSkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDE2ICsyMywyMCBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5j
bHVkZSAiU1ZHRkVGbG9vZC5oIgorCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCisjaW5j
bHVkZSA8d3RmL093blB0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFRmxvb2Q6OkZF
Rmxvb2QoRmlsdGVyRWZmZWN0KiBpbiwgY29uc3QgQ29sb3ImIGZsb29kQ29sb3IsIGNvbnN0IGZs
b2F0JiBmbG9vZE9wYWNpdHkpCiAgICAgOiBGaWx0ZXJFZmZlY3QoKQorICAgICwgbV9pbihpbikK
ICAgICAsIG1fZmxvb2RDb2xvcihmbG9vZENvbG9yKQogICAgICwgbV9mbG9vZE9wYWNpdHkoZmxv
b2RPcGFjaXR5KQotICAgICwgbV9pbihpbikKIHsKIH0KIApAQCAtNjEsOCArNjUsMjMgQEAgdm9p
ZCBGRUZsb29kOjpzZXRGbG9vZE9wYWNpdHkoZmxvYXQgZmxvbwogICAgIG1fZmxvb2RPcGFjaXR5
ID0gZmxvb2RPcGFjaXR5OwogfQogCi12b2lkIEZFRmxvb2Q6OmFwcGx5KEZpbHRlciopCit2b2lk
IEZFRmxvb2Q6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogeworICAgIGZpbHRlci0+Y2FsY3VsYXRl
RWZmZWN0U3ViUmVnaW9uKHRoaXMpOworCisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6
ZShzdWJSZWdpb24oKS53aWR0aCgpLCBzdWJSZWdpb24oKS5oZWlnaHQoKSk7CisgICAgT3duUHRy
PEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6
ZSwgZmFsc2UpKTsKKworICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ29sb3IgY29sb3IgPSBDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGZs
b29kQ29sb3IoKS5yZ2IoKSwgZmxvb2RPcGFjaXR5KCkpKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJD
b250ZXh0LT50cmFuc2xhdGUoLXN1YlJlZ2lvbigpLngoKSwgLXN1YlJlZ2lvbigpLnkoKSk7Cisg
ICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJlY3Qoc3ViUmVnaW9uKCksIGNvbG9yKTsKKworICAgIHNl
dEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVGbG9v
ZDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
Y3BwCShyZXZpc2lvbiA0NDMzMSkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsMzQgQEAgU1ZHRmlsdGVyOjpT
VkdGaWx0ZXIoY29uc3QgRmxvYXRSZWN0JiBpdAogewogfQogCi12b2lkIFNWR0ZpbHRlcjo6Y2Fs
Y3VsYXRlRWZmZWN0U3ViUmVnaW9uKEZpbHRlckVmZmVjdCopCit2b2lkIFNWR0ZpbHRlcjo6Y2Fs
Y3VsYXRlRWZmZWN0U3ViUmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0KQogeworICAgIEZsb2F0
UmVjdCBzdWJSZWdpb25CQm94ID0gZWZmZWN0LT5zdWJSZWdpb24oKTsKKyAgICBGbG9hdFJlY3Qg
dXNlQkJveCA9IG1fZmlsdGVyUmVjdDsKKyAKKyAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkgewor
ICAgICAgICBpZiAoIW1fZmlsdGVyQkJveE1vZGUpCisgICAgICAgICAgICB1c2VCQm94ID0gbV9p
dGVtQm94OworCisgICAgICAgIHN1YlJlZ2lvbkJCb3ggPSBGbG9hdFJlY3Qoc3ViUmVnaW9uQkJv
eC54KCkgKiB1c2VCQm94LndpZHRoKCkgKyB1c2VCQm94LngoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJSZWdpb25CQm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkgKyB1c2VC
Qm94LnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJSZWdpb25CQm94Lndp
ZHRoKCkgKiB1c2VCQm94LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGlmIChlZmZlY3QtPnhCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIHN1
YlJlZ2lvbkJCb3guc2V0WCh1c2VCQm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICogdXNlQkJv
eC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT55Qm91bmRpbmdCb3hNb2RlKCkpCisg
ICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFkodXNlQkJveC55KCkgKyBzdWJSZWdpb25CQm94
LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPndpZHRoQm91
bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNldFdpZHRoKHN1YlJl
Z2lvbkJCb3gud2lkdGgoKSAqIHVzZUJCb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVj
dC0+aGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBzdWJSZWdpb25CQm94LnNl
dEhlaWdodChzdWJSZWdpb25CQm94LmhlaWdodCgpICogdXNlQkJveC5oZWlnaHQoKSk7CisgICAg
fQorCisgICAgZWZmZWN0LT5zZXRTdWJSZWdpb24oc3ViUmVnaW9uQkJveCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGl0ZW1C
b3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9kZSwgYm9v
bCBmaWx0ZXJCQm94TW9kZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyQnVpbGRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAkocmV2aXNpb24gNDQzMzEpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlckJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw3ICs2NSw3IEBAIEZpbHRlckVmZmVjdCogU1ZHRmlsdGVyQnVpbGRlcjo6Z2V0RWZmZWMK
IAogICAgIEF0b21pY1N0cmluZ0ltcGwqIGlkSW1wbCA9IGlkLmltcGwoKTsKIAotICAgIGlmICht
X2J1aWx0aW5FZmZlY3RzLmNvbnRhaW5zKGlkSW1wbCkpCisgICAgaWYgKCFpZElzRW1wdHkgJiYg
bV9idWlsdGluRWZmZWN0cy5jb250YWlucyhpZEltcGwpKQogICAgICAgICByZXR1cm4gbV9idWls
dGluRWZmZWN0cy5nZXQoaWRJbXBsKS5nZXQoKTsKIAogICAgIGlmIChpZElzRW1wdHkgJiYgIW1f
bGFzdEVmZmVjdCkK
</data>
<flag name="review"
          id="15656"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31136</attachid>
            <date>2009-06-10 11:54:14 -0700</date>
            <delta_ts>2009-06-11 00:04:17 -0700</delta_ts>
            <desc>subRegion Code</desc>
            <filename>filter-3.patch</filename>
            <type>text/plain</type>
            <size>67447</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDU3OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTAyIEBACisyMDA5LTA2LTEwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3ViUmVnaW9uIGNhbGN1bGF0aW9uIHRvIFNWRyBmaWx0ZXIuIFRoZSB0d28gZmlsdGVyIHBy
aW1pdGl2ZXMKKyAgICAgICAgZmVPZmZzZXQgYW5kIGZlRmxvb2QgaGVscCB0byB0ZXN0IHRoZSBu
ZXcgc3ViUmVnaW9uIGNvZGUuCisKKyAgICAgICAgVGVzdHM6IHN2Zy9maWx0ZXJzL3N1YlJlZ2lv
bi1vbmUtZWZmZWN0LnN2ZworICAgICAgICAgICAgICAgc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLXR3
by1lZmZlY3RzLnN2ZworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJs
ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQmxlbmQ6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0
UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9uZW50VHJhbnNmZXI6OmNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0ZTo6Y2FsY3VsYXRlVW5p
dGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpzb3VyY2VJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpGaWx0ZXJFZmZlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldFVuaXRlRWZm
ZWN0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnVuaXRlRWZmZWN0UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc1gpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNYKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6aGFzWSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEhhc1kpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEhhc1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckVmZmVjdDo6aGFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0
SGFzSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0RWZmZWN0QnVm
ZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmFwcGx5KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5k
ZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFuZGFyZEF0dHJpYnV0
ZXMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252
b2x2ZU1hdHJpeDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4Lmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVEaWZmdXNlTGlnaHRpbmc6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVGbG9vZDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZFRmxvb2Q6OmFwcGx5KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUZsb29kLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJs
dXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lh
bkJsdXIuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVN
ZXJnZTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU1lcmdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6Y2FsY3Vs
YXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjphcHBseSk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVT
cGVjdWxhckxpZ2h0aW5nOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRp
bGU6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVUaWxlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
dXJidWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRl
VW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1
cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24p
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyOjplZmZlY3RCb3VuZGluZ0JveE1vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyOjpmaWx0ZXJSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyOjpzb3VyY2VJbWFnZVJlY3QpOgorCiAyMDA5LTA2LTEwICBUYWtlc2hpIFlvc2hpbm8gIDx0
eW9zaGlub0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEp1c3RpbiBHYXJjaWEu
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3Bw
CShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTUgQEAgdm9pZCBGRUJsZW5k
OjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAgIG1fbW9kZSA9IG1vZGU7CiB9CiAKK0Zs
b2F0UmVjdCBGRUJsZW5kOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIp
Cit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHVuaXRlRWZmZWN0UmVjdC51bml0ZShtX2luMi0+Y2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcikpOworICAgIHNldFVuaXRlRWZmZWN0UmVjdCh1
bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRo
aXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRUJsZW5kOjphcHBseShG
aWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
QmxlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVCbGVuZC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAgICAgICAgIEJsZW5kTW9kZVR5cGUgYmxlbmRNb2RlKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUpOwotICAgICAgICAKKwor
ICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKIApJbmRleDog
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4
LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDE0IEBAIHZv
aWQgRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0IFZlY3QKICAgICBtX3ZhbHVlcyA9IHZh
bHVlczsKIH0KIAorRmxvYXRSZWN0IEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0
UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0g
bV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZl
Y3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJS
ZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFQ29sb3JN
YXRyaXg6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDQ0NDIzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNyArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
Y29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VmFs
dWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRSZWN0
IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShG
aWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAJ
KHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
Q29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2ICs4NSwxNCBAQCB2
b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3RpCiAgICAgbV9hbHBoYUZ1bmMg
PSBmdW5jOwogfQogCitGbG9hdFJlY3QgRkVDb21wb25lbnRUcmFuc2Zlcjo6Y2FsY3VsYXRlVW5p
dGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVj
dFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKyAgICBzZXRV
bml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVm
ZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQg
RkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRBbHBoYUZ1bmN0aW9uKGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxv
YXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBh
cHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAkocmV2aXNpb24g
NDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxNSBAQCB2b2lkIEZFQ29tcG9zaXRlOjpz
ZXRLNChmbG9hdCBrNCkKICAgICBtX2s0ID0gazQ7CiB9CiAKK0Zsb2F0UmVjdCBGRUNvbXBvc2l0
ZTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0
UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmls
dGVyKTsKKyAgICB1bml0ZUVmZmVjdFJlY3QudW5pdGUobV9pbjItPmNhbGN1bGF0ZVVuaXRlRWZm
ZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0
KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1
cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVDb21wb3NpdGU6OmFwcGx5KEZpbHRlciopCiB7
CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b3NpdGUuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgZmxvYXQgazQoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRLNChmbG9hdCk7Ci0gICAgICAgIAorCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVV
bml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAg
ICAgICAgIHZvaWQgZHVtcCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsOCBAQAog
I2RlZmluZSBGaWx0ZXJfaAogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0jaW5jbHVkZSAiSW1hZ2Uu
aCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0z
NiwxMyArMzcsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB+RmlsdGVyKCkgeyB9CiAKLSAgICAgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShQYXNz
UmVmUHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KLSAgICAgICAgSW1hZ2Uq
IHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAgICAgICB2b2lkIHNl
dFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUltYWdlKSB7IG1fc291
cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQorICAgICAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1h
Z2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAKKyAgICAgICAgdmlydHVhbCBG
bG9hdFJlY3Qgc291cmNlSW1hZ2VSZWN0KCkgPSAwOworICAgICAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBmaWx0ZXJSZWdpb24oKSA9IDA7CisKKyAgICAgICAgLy8gU1ZHIHNwZWNpZmljCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KikgPSAw
OworICAgICAgICB2aXJ0dWFsIGJvb2wgZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkgPSAwOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOworICAgICAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDEwIEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KCkKICAgICAsIG1feUJCb3hNb2Rl
KGZhbHNlKQogICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQogICAgICwgbV9oZWlnaHRCQm94
TW9kZShmYWxzZSkKKyAgICAsIG1faGFzWChmYWxzZSkKKyAgICAsIG1faGFzWShmYWxzZSkKKyAg
ICAsIG1faGFzV2lkdGgoZmFsc2UpCisgICAgLCBtX2hhc0hlaWdodChmYWxzZSkKIHsKIH0KIApJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ4LDEzICs0OSwyOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9o
ZWlnaHRCQm94TW9kZTsgfQogICAgICAgICB2b2lkIHNldEhlaWdodEJvdW5kaW5nQm94TW9kZShi
b29sIGJib3hNb2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94TW9kZTsgfQogCisgICAgICAg
IHZvaWQgc2V0VW5pdGVFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdW5pdGVSZWN0KSB7IG1f
dW5pdGVFZmZlY3RSZWN0ID0gdW5pdGVSZWN0OyB9CisgICAgICAgIEZsb2F0UmVjdCB1bml0ZUVm
ZmVjdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3VuaXRlRWZmZWN0UmVjdDsgfQorCiAgICAgICAg
IEZsb2F0UmVjdCBzdWJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3N1YlJlZ2lvbjsgfQogICAg
ICAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIHN1YlJlZ2lvbikgeyBtX3N1
YlJlZ2lvbiA9IHN1YlJlZ2lvbjsgfQogCisgICAgICAgIGJvb2wgaGFzWCgpIHsgcmV0dXJuIG1f
aGFzWDsgfQorICAgICAgICB2b2lkIHNldEhhc1goYm9vbCB2YWx1ZSkgeyBtX2hhc1ggPSB2YWx1
ZTsgfQorCisgICAgICAgIGJvb2wgaGFzWSgpIHsgcmV0dXJuIG1faGFzWTsgfQorICAgICAgICB2
b2lkIHNldEhhc1koYm9vbCB2YWx1ZSkgeyBtX2hhc1kgPSB2YWx1ZTsgfQorCisgICAgICAgIGJv
b2wgaGFzV2lkdGgoKSB7IHJldHVybiBtX2hhc1dpZHRoOyB9CisgICAgICAgIHZvaWQgc2V0SGFz
V2lkdGgoYm9vbCB2YWx1ZSkgeyBtX2hhc1dpZHRoID0gdmFsdWU7IH0KKworICAgICAgICBib29s
IGhhc0hlaWdodCgpIHsgcmV0dXJuIG1faGFzSGVpZ2h0OyB9CisgICAgICAgIHZvaWQgc2V0SGFz
SGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2YWx1ZTsgfQorCiAgICAgICAgIC8v
IFRoZSByZXN1bHQgaXMgYm91bmRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgZmlsdGVyIHByaW1pdGl2
ZSB0byBzYXZlIHJlc291cmNlcwogICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UoKSB7
IHJldHVybiBtX2VmZmVjdEJ1ZmZlci5nZXQoKTsgfQotICAgICAgICB2b2lkIHNldEVmZmVjdEJ1
ZmZlcihJbWFnZUJ1ZmZlciogZWZmZWN0QnVmZmVyKSB7IG1fZWZmZWN0QnVmZmVyLnNldChlZmZl
Y3RCdWZmZXIpOyB9CisgICAgICAgIHZvaWQgc2V0RWZmZWN0QnVmZmVyKFBhc3NPd25QdHI8SW1h
Z2VCdWZmZXI+IGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVjdEJ1ZmZlciA9IGVmZmVjdEJ1ZmZlcjsg
fQogCisgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChG
aWx0ZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShGaWx0ZXIqKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOwogCkBAIC02OSw3ICs4NiwxMyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93aWR0aEJCb3hNb2RlIDogMTsKICAgICAg
ICAgYm9vbCBtX2hlaWdodEJCb3hNb2RlIDogMTsKIAorICAgICAgICBib29sIG1faGFzWCA6IDE7
CisgICAgICAgIGJvb2wgbV9oYXNZIDogMTsKKyAgICAgICAgYm9vbCBtX2hhc1dpZHRoIDogMTsK
KyAgICAgICAgYm9vbCBtX2hhc0hlaWdodCA6IDE7CisKICAgICAgICAgRmxvYXRSZWN0IG1fc3Vi
UmVnaW9uOworICAgICAgICBGbG9hdFJlY3QgbV91bml0ZUVmZmVjdFJlY3Q7CiAKICAgICAgICAg
bXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZWZmZWN0QnVmZmVyOwogICAgIH07CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAko
cmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgp
OwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBm
aWx0ZXIpIHsgcmV0dXJuIGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCk7IH0KICAgICAgICAgdm9p
ZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3Bw
CShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsMjQgQEAgY29uc3Qg
QXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlYwogICAgIHJldHVybiBzX2VmZmVjdE5h
bWU7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6YXBwbHkoRmlsdGVyKikKK0Zsb2F0UmVjdCBT
b3VyY2VHcmFwaGljOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCiB7
CisgICAgc2V0U3ViUmVnaW9uKGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCkpOworICAgIHJldHVy
biBmaWx0ZXItPmZpbHRlclJlZ2lvbigpOworfQorCit2b2lkIFNvdXJjZUdyYXBoaWM6OmFwcGx5
KEZpbHRlciogZmlsdGVyKQoreworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoc3Vi
UmVnaW9uKCkud2lkdGgoKSwgc3ViUmVnaW9uKCkuaGVpZ2h0KCkpOworICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZh
bHNlKSk7CisKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNv
bnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2UoZmlsdGVyLT5zb3VyY2VJbWFn
ZSgpLT5pbWFnZSgpLCBJbnRQb2ludCgwLCAwKSk7CisKKyAgICBzZXRFZmZlY3RCdWZmZXIoZmls
dGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFNvdXJjZUdyYXBoaWM6OmR1bXAoKQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAKICNp
ZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAotI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBl
ZmZlY3ROYW1lKCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVj
dChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAko
cmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6
cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICNpZiBFTkFCTEUoRklMVEVSUykKICAgICBpZiAoZmlsdGVy
KSB7CiAgICAgICAgIGZpbHRlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQpOwotICAgICAgICBm
aWx0ZXItPnByZXBhcmVGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIG9iamVjdC0+b2JqZWN0Qm91
bmRpbmdCb3goKSk7CisgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8uY29u
dGV4dCwgb2JqZWN0KTsKICAgICB9IGVsc2UgaWYgKCFmaWx0ZXJJZC5pc0VtcHR5KCkpCiAgICAg
ICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS0+YWRkUGVu
ZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVtZW50KTsKICNlbmRpZgpAQCAtMTUyLDcg
KzE1Miw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGUKIAogI2lm
IEVOQUJMRShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKLSAgICAgICAgZmlsdGVyLT5hcHBs
eUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsK
KyAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0KTsK
ICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQgPSBzYXZlZENvbnRleHQ7CiAgICAgfQogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzksNiAr
NzksMTUgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZQogCiAgICAg
ZmxvYXQgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQ7CiAKKyAgICBpZiAodGhpcy0+aGFzQXR0cmli
dXRlKFNWR05hbWVzOjp4QXR0cikpCisgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzWCh0cnVl
KTsKKyAgICBpZiAodGhpcy0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjp5QXR0cikpCisgICAgICAg
IGZpbHRlckVmZmVjdC0+c2V0SGFzWSh0cnVlKTsKKyAgICBpZiAodGhpcy0+aGFzQXR0cmlidXRl
KFNWR05hbWVzOjp3aWR0aEF0dHIpKQorICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhhc1dpZHRo
KHRydWUpOworICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OmhlaWdodEF0dHIp
KQorICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhhc0hlaWdodCh0cnVlKTsKKwogICAgIGlmIChy
ZXNvdXJjZUZpbHRlci0+ZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkpIHsKICAgICAgICAgX3ggPSB4
KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgX3kgPSB5KCkudmFsdWVBc1BlcmNlbnRh
Z2UoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJ
KHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw1MCArNjYsNTYgQEAgRmxvYXRSZWN0IFNWR1Jl
c291cmNlRmlsdGVyOjpmaWx0ZXJCQm94RgogICAgIHJldHVybiBmaWx0ZXJCQm94OwogfQogCi12
b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit2b2lkIFNWR1Jlc291cmNlRmlsdGVy
OjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9i
amVjdCogb2JqZWN0KQogeworICAgIG1faXRlbUJCb3ggPSBvYmplY3QtPm9iamVjdEJvdW5kaW5n
Qm94KCk7CisKKyAgICAvLyBwcmVwYXJlIEZpbHRlcnMKKyAgICBtX2ZpbHRlckJCb3ggPSBmaWx0
ZXJCQm94Rm9ySXRlbUJCb3gobV9pdGVtQkJveCk7CisgICAgbV9maWx0ZXIgPSBTVkdGaWx0ZXI6
OmNyZWF0ZShtX2l0ZW1CQm94LCBtX2ZpbHRlckJCb3gsIG1fZWZmZWN0QkJveE1vZGUsIG1fZmls
dGVyQkJveE1vZGUpOworCisgICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gbV9maWx0ZXJC
dWlsZGVyLT5sYXN0RWZmZWN0KCk7CisgICAgaWYgKGxhc3RFZmZlY3QpCisgICAgICAgIGxhc3RF
ZmZlY3QtPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChtX2ZpbHRlci5nZXQoKSk7CisKICAgICAv
LyBEcmF3IHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIGl0J3MgY2hpbGRz
IHRvIGEgaW1hZ2VCdWZmZXIgdG8gZ2V0IHRoZSBTb3VyY2VHcmFwaGljLgotICAgIC8vIFRoZSBz
aXplIG9mIHRoZSBTb3VyY2VHcmFwaGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1l
bnQsIHRoZSBmaWx0ZXIgaXMgYXBsaWVkIHRvLgotICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IElu
dFNpemUoaXRlbVJlY3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpOworICAgIC8vIFRoZSBz
aXplIG9mIHRoZSBTb3VyY2VHcmFwaGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1l
bnQsIHRoZSBmaWx0ZXIgaXMgYXBwbGllZCB0by4KKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJ
bnRTaXplKG1faXRlbUJCb3gud2lkdGgoKSwgbV9pdGVtQkJveC5oZWlnaHQoKSk7CiAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBzb3VyY2VHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVy
U2l6ZSwgZmFsc2UpKTsKICAgICAKICAgICBpZiAoIXNvdXJjZUdyYXBoaWMuZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEdyYXBoaWNzQ29udGV4dCogc291cmNlR3JhcGhpY0NvbnRleHQg
PSBzb3VyY2VHcmFwaGljLT5jb250ZXh0KCk7Ci0gICAgc291cmNlR3JhcGhpY0NvbnRleHQtPnRy
YW5zbGF0ZSgtaXRlbVJlY3QueCgpLCAtaXRlbVJlY3QueSgpKTsKLSAgICBzb3VyY2VHcmFwaGlj
Q29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBpdGVtUmVjdC53aWR0aCgpLCBpdGVt
UmVjdC5oZWlnaHQoKSkpOworICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT50cmFuc2xhdGUoLW1f
aXRlbUJCb3gueCgpLCAtbV9pdGVtQkJveC55KCkpOworICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0
LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIG1faXRlbUJCb3gud2lkdGgoKSwgbV9pdGVtQkJv
eC5oZWlnaHQoKSkpOwogICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5zZXQoc291cmNlR3JhcGhp
Yy5yZWxlYXNlKCkpOwogICAgIG1fc2F2ZWRDb250ZXh0ID0gY29udGV4dDsKIAogICAgIGNvbnRl
eHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsKIH0KIAotdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6
YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBp
dGVtUmVjdCkKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29u
dGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlmICgh
bV9zYXZlZENvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJS
ZWN0ID0gZmlsdGVyQkJveEZvckl0ZW1CQm94KGl0ZW1SZWN0KTsKLQotICAgIHNldEZpbHRlckJv
dW5kaW5nQm94KGZpbHRlclJlY3QpOwotICAgIHNldEl0ZW1Cb3VuZGluZ0JveChpdGVtUmVjdCk7
Ci0KICAgICBjb250ZXh0ID0gbV9zYXZlZENvbnRleHQ7CiAgICAgbV9zYXZlZENvbnRleHQgPSAw
OwogCiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gbV9maWx0ZXJCdWlsZGVyLT5sYXN0
RWZmZWN0KCk7CiAKLSAgICBpZiAobGFzdEVmZmVjdCAmJiAhZmlsdGVyUmVjdC5pc0VtcHR5KCkp
IHsKLSAgICAgICAgUmVmUHRyPEZpbHRlcj4gZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUobV9p
dGVtQkJveCwgbV9maWx0ZXJCQm94LCBtX2VmZmVjdEJCb3hNb2RlLCBtX2ZpbHRlckJCb3hNb2Rl
KTsKLSAgICAgICAgZmlsdGVyLT5zZXRTb3VyY2VJbWFnZShtX3NvdXJjZUdyYXBoaWNCdWZmZXIt
PmltYWdlKCkpOwotICAgICAgICBsYXN0RWZmZWN0LT5hcHBseShmaWx0ZXIuZ2V0KCkpOwotCi0g
ICAgICAgIGNvbnRleHQtPmNsaXAoZmlsdGVyUmVjdCk7Ci0KLSAgICAgICAgaWYgKGxhc3RFZmZl
Y3QtPnJlc3VsdEltYWdlKCkpCi0gICAgICAgICAgICBjb250ZXh0LT5kcmF3SW1hZ2UobGFzdEVm
ZmVjdC0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGFzdEVmZmVjdC0+c3ViUmVnaW9uKCkpOworICAgIGlmIChsYXN0RWZmZWN0ICYmICFtX2Zp
bHRlckJCb3guaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZmlsdGVyLT5zZXRTb3VyY2VJbWFnZSht
X3NvdXJjZUdyYXBoaWNCdWZmZXIucmVsZWFzZSgpKTsKKyAgICAgICAgbGFzdEVmZmVjdC0+YXBw
bHkobV9maWx0ZXIuZ2V0KCkpOworCisgICAgICAgIC8vIENsaXAgdGhlIGZpbHRlckVmZmVjdHMg
dG8gdGhlIGZpbHRlciByZWdpb24KKyAgICAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWN0ID0gbV9m
aWx0ZXJCQm94OworICAgICAgICBkcmF3aW5nUmVjdC5pbnRlcnNlY3QobGFzdEVmZmVjdC0+c3Vi
UmVnaW9uKCkpOworCisgICAgICAgIGNvbnRleHQtPmNsaXAobV9maWx0ZXJCQm94KTsKKyAgICAg
ICAgaWYgKGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCkgJiYgIWRyYXdpbmdSZWN0LmlzRW1wdHko
KSkKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShsYXN0RWZmZWN0LT5yZXN1bHRJbWFn
ZSgpLT5pbWFnZSgpLCBsYXN0RWZmZWN0LT5zdWJSZWdpb24oKSk7CiAgICAgfQogCiAgICAgbV9z
b3VyY2VHcmFwaGljQnVmZmVyLmNsZWFyKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDEzIEBA
CiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUg
IkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCi0gICAgdm9pZCBwcmVwYXJl
RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGFw
cGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2b2lk
IHByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFJlbmRlck9iamVjdCopOwor
ICAgIHZvaWQgYXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFJlbmRlck9iamVj
dCopOwogCiAgICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzKiwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsKIApAQCAtOTcsNiArOTks
NyBAQCBwcml2YXRlOgogICAgIE93blB0cjxTVkdGaWx0ZXJCdWlsZGVyPiBtX2ZpbHRlckJ1aWxk
ZXI7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4dDsKICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IG1fc291cmNlR3JhcGhpY0J1ZmZlcjsKKyAgICBSZWZQdHI8RmlsdGVyPiBtX2Zp
bHRlcjsKIH07CiAKIFNWR1Jlc291cmNlRmlsdGVyKiBnZXRGaWx0ZXJCeUlkKERvY3VtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM0LDYgKzEzNCwxNSBAQCB2b2lkIEZFQ29udm9sdmVNYXRyaXg6OnNl
dFByZXNlcnZlQWxwaGEoCiAgICAgbV9wcmVzZXJ2ZUFscGhhID0gcHJlc2VydmVBbHBoYTsgCiB9
CiAKK0Zsb2F0UmVjdCBGRUNvbnZvbHZlTWF0cml4OjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3Qo
RmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4t
PmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHVuaXRlRWZmZWN0UmVjdC51
bml0ZShtX2luMi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcikpOworICAgIHNldFVu
aXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZm
ZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBG
RUNvbnZvbHZlTWF0cml4OjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgJKHJldmlzaW9u
IDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0
cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQ
cmVzZXJ2ZUFscGhhKGJvb2wpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVm
ZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAg
IHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3BwCShyZXZpc2lvbiA0NDQyMykK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDE0IEBAIHZvaWQgRkVEaWZmdXNlTGlnaHRp
bmc6OnNldExpZ2h0U291cmNlKEwKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9
CiAKK0Zsb2F0UmVjdCBGRURpZmZ1c2VMaWdodGluZzo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0
KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2lu
LT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJl
Y3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lv
bih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVEaWZmdXNlTGln
aHRpbmc6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiA0NDQyMykK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwogICAgICAgICB2b2lk
IHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1
bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIq
KTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5jcHAJKHJldmlz
aW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNl
bWVudE1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDE1IEBAIHZvaWQgRkVEaXNw
bGFjZW1lbnRNYXA6OnNldFNjYWxlKGZsb2F0IHMKICAgICBtX3NjYWxlID0gc2NhbGU7CiB9CiAK
K0Zsb2F0UmVjdCBGRURpc3BsYWNlbWVudE1hcDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZp
bHRlciogZmlsdGVyKQoreworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5j
YWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKyAgICB1bml0ZUVmZmVjdFJlY3QudW5p
dGUobV9pbjItPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0
ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVj
dFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVE
aXNwbGFjZW1lbnRNYXA6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lv
biA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1l
bnRNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGZsb2F0IHNjYWxlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U2NhbGUo
ZmxvYXQgc2NhbGUpOwogCisgICAgICAgIHZvaWQgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KCk7
CisKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsK
ICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAg
ICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNv
bnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3Bw
CShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVG
bG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3Jn
PgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjQsOSBAQAogCiAjaWYgRU5BQkxFKFNWRykg
JiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVGbG9vZC5oIgorCiAjaW5jbHVkZSAi
RmlsdGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MSw4ICs2NCwyNiBA
QCB2b2lkIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShmbG9hdCBmbG9vCiAgICAgbV9mbG9vZE9w
YWNpdHkgPSBmbG9vZE9wYWNpdHk7CiB9CiAKK0Zsb2F0UmVjdCBGRUZsb29kOjpjYWxjdWxhdGVV
bml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0
KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3Vi
UmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRUZsb29k
OjphcHBseShGaWx0ZXIqKQogeworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoc3Vi
UmVnaW9uKCkud2lkdGgoKSwgc3ViUmVnaW9uKCkuaGVpZ2h0KCkpOworICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZh
bHNlKSk7CisKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIENvbG9yIGNvbG9yID0gQ29sb3IoY29sb3JXaXRoT3ZlcnJpZGVBbHBoYShmbG9vZENv
bG9yKCkucmdiKCksIGZsb29kT3BhY2l0eSgpKSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0
ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRlckNvbnRleHQt
PmZpbGxSZWN0KEZsb2F0UmVjdCgwLmYsIDAuZiwgc3ViUmVnaW9uKCkud2lkdGgoKSwgc3ViUmVn
aW9uKCkuaGVpZ2h0KCkpLCBjb2xvcik7CisKKyAgICBzZXRFZmZlY3RCdWZmZXIoZmlsdGVyR3Jh
cGhpYy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJKHJldmlzaW9uIDQ0NDIzKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBmbG9v
ZE9wYWNpdHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRGbG9vZE9wYWNpdHkoZmxvYXQpOwog
CisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAg
ICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAg
ICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25z
dDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVHYXVz
c2lhbkJsdXIuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSwx
NCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpzZXRTdGREZXZpYXRpb25ZKGZsCiAgICAgbV95ID0g
eTsKIH0KIAorRmxvYXRSZWN0IEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJl
Y3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1f
aW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHNldFVuaXRlRWZmZWN0
UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVn
aW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRUdhdXNzaWFu
Qmx1cjo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDQ0NDIzKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQg
c3RkRGV2aWF0aW9uWSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxv
YXQpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVy
Kik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwog
ICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRz
KSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdl
LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMyBAQCB2b2lkIEZFSW1h
Z2U6OnNldENhY2hlZEltYWdlKENhY2hlZEltYWdlCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFk
ZENsaWVudCh0aGlzKTsKIH0KIAorRmxvYXRSZWN0IEZFSW1hZ2U6OmNhbGN1bGF0ZVVuaXRlRWZm
ZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QoZmlsdGVy
LT5maWx0ZXJSZWdpb24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24o
dGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFSW1hZ2U6OmFwcGx5
KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICAgICAgCisKKyAg
ICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAg
ICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZp
c2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDI2IEBAIHZvaWQgRkVNZXJnZTo6c2V0TWVy
Z2VJbnB1dHMoY29uc3QgVmVjdG8KICAgICBtX21lcmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7CiB9
CiAKK0Zsb2F0UmVjdCBGRU1lcmdlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBm
aWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdDsKKyAgICBpZiAobV9tZXJn
ZUlucHV0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZm
ZWN0UmVjdCk7CisgICAgICAgIHNldFN1YlJlZ2lvbihGbG9hdFJlY3QoKSk7CisgICAgICAgIHJl
dHVybiBzdWJSZWdpb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5pdGVFZmZlY3RSZWN0ID0g
bV9tZXJnZUlucHV0c1swXS0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisKKyAg
ICBpZiAobV9tZXJnZUlucHV0cy5zaXplKCkgPiAxKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAx
OyBpIDwgbV9tZXJnZUlucHV0cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHVuaXRlRWZmZWN0
UmVjdC51bml0ZShtX21lcmdlSW5wdXRzW2ldLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmls
dGVyKSk7CisgICAgfQorCisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVn
aW9uKCkpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAg
IHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRU1lcmdlOjphcHBseShGaWx0ZXIqKQog
ewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHJl
dmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMoKSBjb25z
dDsKICAgICAgICAgdm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0
Kj4mIG1lcmdlSW5wdXRzKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0
ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsK
ICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gNDQ0MjMpCisr
KyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTcyLDYgKzcyLDE0IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZ
KGZsb2F0IHJhZGkKICAgICBtX3JhZGl1c1kgPSByYWRpdXNZOwogfQogCitGbG9hdFJlY3QgRkVN
b3JwaG9sb2d5OjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7Cisg
ICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0
UmVjdChmaWx0ZXIpOworICAgIHNldFVuaXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOwor
ICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBz
dWJSZWdpb24oKTsKK30KKwogdm9pZCBGRU1vcnBob2xvZ3k6OmFwcGx5KEZpbHRlciopCiB7CiB9
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5
LmgJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdDsKICAgICAgICAgdm9pZCBz
ZXRSYWRpdXNZKGZsb2F0KTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZl
Y3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2
b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFT2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcg
QEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1t
ZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2Vp
ZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6
ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw4ICsyNCwxMCBA
QAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVP
ZmZzZXQuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisKICNpbmNsdWRlICJG
aWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJTVkdSZW5k
ZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsOCArNjQsMzQg
QEAgdm9pZCBGRU9mZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12
b2lkIEZFT2Zmc2V0OjphcHBseShGaWx0ZXIqKQorRmxvYXRSZWN0IEZFT2Zmc2V0OjpjYWxjdWxh
dGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRl
RWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAg
IHNldFVuaXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3Vs
YXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwor
dm9pZCBGRU9mZnNldDo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CisgICAgbV9pbi0+YXBwbHko
ZmlsdGVyKTsKKyAgICBpZiAoIW1faW4tPnJlc3VsdEltYWdlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoc3ViUmVnaW9uKCkud2lkdGgoKSwg
c3ViUmVnaW9uKCkuaGVpZ2h0KCkpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3Jh
cGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisKKyAgICBpZiAo
IWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBk
c3RSZWN0ID0gRmxvYXRSZWN0KGR4KCkgKyBtX2luLT5zdWJSZWdpb24oKS54KCkgLSBzdWJSZWdp
b24oKS54KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHkoKSArIG1faW4t
PnN1YlJlZ2lvbigpLnkoKSAtIHN1YlJlZ2lvbigpLnkoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2luLT5zdWJSZWdpb24oKS53aWR0aCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1faW4tPnN1YlJlZ2lvbigpLmhlaWdodCgpKTsKKworICAgIEdy
YXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsK
KyAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2UobV9pbi0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2Uo
KSwgZHN0UmVjdCk7CisgICAgc2V0RWZmZWN0QnVmZmVyKGZpbHRlckdyYXBoaWMucmVsZWFzZSgp
KTsKIH0KIAogdm9pZCBGRU9mZnNldDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0RHkoZmxvYXQpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVV
bml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAg
ICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJldmlzaW9u
IDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGln
aHRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDE0IEBAIHZvaWQgRkVTcGVj
dWxhckxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZSgKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRT
b3VyY2U7CiB9CiAKK0Zsb2F0UmVjdCBGRVNwZWN1bGFyTGlnaHRpbmc6OmNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RS
ZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5p
dGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZl
Y3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZF
U3BlY3VsYXJMaWdodGluZzo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAkocmV2
aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3Vs
YXJMaWdodGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAorICAgICAgICBG
bG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lk
IGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVh
bSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCShyZXZpc2lvbiA0NDQy
MykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsOCArMjEsMTIgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFVGlsZS5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVB
c1RleHQuaCIKKwogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVB
c1RleHQuaCIKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDYgKzQxLDE0IEBAIFBhc3NS
ZWZQdHI8RkVUaWxlPiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXIKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEZFVGlsZShpbikpOwogfQogCitGbG9hdFJlY3QgRkVUaWxlOjpjYWxjdWxhdGVVbml0ZUVm
ZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZl
Y3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVn
aW9uKCkpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAg
IHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRVRpbGU6OmFwcGx5KEZpbHRlciopCiB7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHJldmlz
aW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJF
ZmZlY3QqKTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZp
bHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAo
KTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFt
JiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVy
YnVsZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVR1cmJ1bGVuY2UuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYg
KzEwNiwxMyBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMoYm9vbCBzCiAgICAg
bV9zdGl0Y2hUaWxlcyA9IHN0aXRjaDsKIH0KIAorRmxvYXRSZWN0IEZFVHVyYnVsZW5jZTo6Y2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIHNldFVuaXRlRWZm
ZWN0UmVjdChmaWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVm
ZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQg
RkVUdXJidWxlbmNlOjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiA0NDQyMykKKysr
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IHN0aXRjaFRpbGVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMoYm9vbCk7
CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZp
bHRlcik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgp
OwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
IHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw0MiBAQCBTVkdGaWx0ZXI6
OlNWR0ZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGl0CiB7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyOjpj
YWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KikKK3ZvaWQgU1ZHRmlsdGVyOjpj
YWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiB7CisgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbkJCb3ggPSBlZmZlY3QtPnN1YlJlZ2lvbigpOworICAgIEZsb2F0UmVj
dCB1c2VCQm94ID0gZWZmZWN0LT51bml0ZUVmZmVjdFJlY3QoKTsKKworICAgIEZsb2F0UmVjdCBu
ZXdTdWJSZWdpb24gPSBzdWJSZWdpb25CQm94OworCisgICAgaWYgKG1fZWZmZWN0QkJveE1vZGUp
IHsKKyAgICAgICAgbmV3U3ViUmVnaW9uID0gdXNlQkJveDsKKworICAgICAgICBpZiAoZWZmZWN0
LT5oYXNYKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WChtX2l0ZW1Cb3gueCgpICsg
c3ViUmVnaW9uQkJveC54KCkgKiBtX2l0ZW1Cb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVm
ZmVjdC0+aGFzWSgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFkobV9pdGVtQm94Lnko
KSArIHN1YlJlZ2lvbkJCb3gueSgpICogbV9pdGVtQm94LmhlaWdodCgpKTsKKworICAgICAgICBp
ZiAoZWZmZWN0LT5oYXNXaWR0aCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRo
KHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIG1faXRlbUJveC53aWR0aCgpKTsKKworICAgICAgICBp
ZiAoZWZmZWN0LT5oYXNIZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWln
aHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIG1faXRlbUJveC5oZWlnaHQoKSk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgaWYgKGVmZmVjdC0+eEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAg
ICAgbmV3U3ViUmVnaW9uLnNldFgodXNlQkJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVz
ZUJCb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+eUJvdW5kaW5nQm94TW9kZSgp
KQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFkodXNlQkJveC55KCkgKyBzdWJSZWdpb25C
Qm94LnkoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPndpZHRo
Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0V2lkdGgoc3Vi
UmVnaW9uQkJveC53aWR0aCgpICogdXNlQkJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZm
ZWN0LT5oZWlnaHRCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5z
ZXRIZWlnaHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAg
IH0KKworICAgIGVmZmVjdC0+c2V0U3ViUmVnaW9uKG5ld1N1YlJlZ2lvbik7CiB9CiAKIFBhc3NS
ZWZQdHI8U1ZHRmlsdGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGl0ZW1C
b3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9kZSwgYm9v
bCBmaWx0ZXJCQm94TW9kZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGaWx0
ZXI+IGNyZWF0ZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sLCBib29s
KTsKIAorICAgICAgICBib29sIGVmZmVjdEJvdW5kaW5nQm94TW9kZSgpIHsgcmV0dXJuIG1fZWZm
ZWN0QkJveE1vZGU7IH0KKworICAgICAgICBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgeyByZXR1
cm4gbV9maWx0ZXJSZWN0OyB9CisgICAgICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSB7
IHJldHVybiBtX2l0ZW1Cb3g7IH0KICAgICAgICAgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdp
b24oRmlsdGVyRWZmZWN0Kik7CiAKICAgICBwcml2YXRlOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ1
NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MyBAQAorMjAwOS0wNi0xMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZv
ciB0aGUgbmV3IHN1YlJnaW9uLWNvZGUgb24gU1ZHIGZpbHRlcnMuCisKKyAgICAgICAgKiBzdmcv
ZmlsdGVyczogQWRkZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZl
Y3Quc3ZnOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVj
dHMuc3ZnOiBBZGRlZC4KKwogMjAwOS0wNi0xMCAgVGFrZXNoaSBZb3NoaW5vICA8dHlvc2hpbm9A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKdXN0aW4gR2FyY2lhLgpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3ZnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi1vbmUtZWZmZWN0LnN2Zwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi1vbmUtZWZm
ZWN0LnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTcgQEAKKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iYm9keSIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAi
PgorICAgIDxkZWZzPgorICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAqIHtz
dHJva2U6YmxhY2s7IHN0cm9rZS13aWR0aDowLjI7fQorICAgICAgPC9zdHlsZT4KKworICAgICAg
ICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9
IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdp
ZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzAyIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0i
MTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2Jq
ZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUi
IHdpZHRoPSI1MCUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAg
ICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9
IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdp
ZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8
ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNCIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEw
MCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUwJSIgd2lk
dGg9IjUwJSIgaGVpZ2h0PSIyNSUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxm
aWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA1IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAw
JSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0
Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3aWR0
aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZp
bHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDYiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAl
IiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RC
b3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lk
dGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDciIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIx
MDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMTIuNSUiIHk9IjEyLjUl
IiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKworICAg
ICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wOCIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRo
PSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxm
aWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA5IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRp
bmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSI1
MCUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8xMCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94
Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSI1MCUiIGhlaWdo
dD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8xMSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAg
ICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFl
ZmZlY3RfMTIiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iMjUlIiB5PSIyNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgor
ICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8x
MyIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAg
ICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xNCIg
cHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNl
dCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTUwJSIgaGVpZ2h0PSIxNTAlIiAvPgorICAgICAg
ICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgx
MCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgor
ICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQi
IC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41
OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0
ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUs
MTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2Ut
ZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIg
eT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUw
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBG
aWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0
XzAyKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6
NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSIyNSIgaGVpZ2h0
PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUs
MCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDMpO3N0cm9rZTpub25lOyIvPgorICAgIDwv
Zz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMCwgMTApIj4KKyAgICAgICAgPHJl
Y3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigx
NTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5
PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7
c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9
IjUwIiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMTIuNSIgc3R5bGU9ImZpbGw6cmdiKDAs
MCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8
IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFl
ZmZlY3RfMDQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0i
dHJhbnNsYXRlKDQxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hh
cnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwt
b3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3LjUiIHdpZHRoPSIy
NSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7
c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDUpO3N0cm9rZTpub25lOyIv
PgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUxMCwgMTApIj4KKyAg
ICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAs
MjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAg
IDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDYpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDYxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjMxLjI1IiB5PSIzMS4y
NSIgd2lkdGg9IjEyLjUiIGhlaWdodD0iMTIuNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2Zp
bGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDcp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIv
PgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5
bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5
OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0
aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDAp
O2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA4KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+
CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTAsIDIxMCkiPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1
MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5
PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iMjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAg
ICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVy
XzFlZmZlY3RfMDkpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9y
bT0idHJhbnNsYXRlKDIxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1k
YXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhl
aWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheToz
O2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9
IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAu
NDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAg
ICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMCk7c3Ryb2tlOm5vbmU7
Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzEwLCAyMTApIj4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8
cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAg
ICAgICAgPHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisK
KyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwo
I2ZpbHRlcl8xZWZmZWN0XzExKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0
cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtz
dHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9
IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNo
YXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIzNy41IiB5PSIz
Ny41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxs
LW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIg
LS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEyKTtz
dHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1
MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+
CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHls
ZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6
MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13
aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1
LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8
L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MTAsIDIxMCkiPgorICAgICAgICA8
cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdi
KDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIw
IiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwy
MDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVj
dCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNzUiIGhlaWdodD0iNzUiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzE0KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+Cis8L3N2Zz4KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLXR3by1lZmZlY3RzLnN2Zwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZm
ZWN0cy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjI2IEBACis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9ImJvZHkiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAw
Ij4KKyAgICA8ZGVmcz4KKyAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgKiB7
c3Ryb2tlOmJsYWNrOyBzdHJva2Utd2lkdGg6MC4yO30KKyAgICAgIDwvc3R5bGU+CisKKyAgICAg
ICAgPCEtLSBIaWVyIG1pdCBmbG9vZD8gLS0+CisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8x
ZWZmZWN0XzAxIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAg
ICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAw
JSIgaGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wMiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAor
ICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5k
aW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0i
NTAlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUw
JSIgd2lkdGg9Ijc1JSIgaGVpZ2h0PSI3NSUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAg
ICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzAzIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0
aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHdpZHRoPSIxMDAlIiAv
PgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA0IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0i
MTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2Jq
ZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHk9IjAlIiBoZWlnaHQ9IjUw
JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIyNSUiIC8+CisgICAgICAgIDwvZmlsdGVy
PgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA1IiB4PSItNTAlIiB5PSIt
NTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRp
dmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjAl
IiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wNiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAg
ICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAg
ICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAg
ICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA3IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0
aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0y
NSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9
IjAlIiB5PSIwJSIgd2lkdGg9Ijc1JSIvPgorICAgICAgICA8L2ZpbHRlcj4KKworCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA4IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSIt
MjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAg
ICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDkiIHByaW1pdGl2ZVVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIg
d2lkdGg9IjUwJSIgaGVpZ2h0PSI3NSUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUl
IiB5PSIyNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4K
KworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMCIgcHJpbWl0aXZlVW5pdHM9
Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUi
IGhlaWdodD0iNTAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAgICAgIDwvZmls
dGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzExIiBwcmltaXRpdmVV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAg
ICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRl
ciBpZD0iZmlsdGVyXzFlZmZlY3RfMTIiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0Jv
eCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIy
NSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVy
PgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzEzIiBwcmltaXRpdmVVbml0
cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9
Ii0yNSUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZz
ZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI3NSUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8
L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xNCIgcHJpbWl0
aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIt
MjUlIiB5PSItMjUlIiB3aWR0aD0iMTUwJSIgaGVpZ2h0PSIxNTAlIiAvPgorICAgICAgICAgICAg
PGZlT2Zmc2V0IHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIyMDAlIiBoZWlnaHQ9IjIwMCUiIC8+
CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIg
aGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5
OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFj
aXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13
aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1
LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAxKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8
L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTAsIDEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iMjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iMzcuNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmls
bDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDIpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDIxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTow
LjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAu
NDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmls
bDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDMpO3N0cm9rZTpub25l
OyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMCwgMTApIj4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8
cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigy
MDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAg
ICAgIDxyZWN0IHg9IjAiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxs
OnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAg
ICAgIDxyZWN0IHg9IjM3LjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAvPgor
CisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJs
KCNmaWx0ZXJfMWVmZmVjdF8wNCk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcg
dHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtz
dHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFy
cmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFj
aXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDUpO3N0cm9r
ZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUxMCwg
MTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAg
ICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+
CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9
ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAv
PgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6
dXJsKCNmaWx0ZXJfMWVmZmVjdF8wNik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAg
PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIg
eT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUw
KTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFz
aGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0i
MTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyNSIg
eT0iMjUiIHdpZHRoPSIzNy41IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7
ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmls
dGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8w
Nyk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBo
ZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wOCk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJm
aWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+Cisg
ICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5
bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
Lz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVy
OnVybCgjZmlsdGVyXzFlZmZlY3RfMDkpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAg
IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tl
LWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5
PSIyNSIgd2lkdGg9IjYwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIg
eT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2Zp
bGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTAp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDMxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsi
Lz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0
eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0
eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9
IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lk
dGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0
PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUs
MCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTEpO3N0cm9rZTpub25lOyIvPgorICAgIDwv
Zz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxMCwgMjEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAi
IHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIw
MCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0
IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMzcuNSIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmls
bDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisg
ICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0
aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNm
aWx0ZXJfMWVmZmVjdF8xMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoNTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2
MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFy
cmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIu
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1v
cGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSI1MCIgeT0i
NTAiIHdpZHRoPSIzNy41IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtm
aWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0
ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEz
KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0
ZSg2MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNzUiIGhl
aWdodD0iNzUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xNCk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorPC9zdmc+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31152</attachid>
            <date>2009-06-11 00:04:17 -0700</date>
            <delta_ts>2009-06-11 03:17:29 -0700</delta_ts>
            <desc>subRegion Code</desc>
            <filename>filter-3.patch</filename>
            <type>text/plain</type>
            <size>67997</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA1IEBACisyMDA5LTA2LTEwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3ViUmVnaW9uIGNhbGN1bGF0aW9uIHRvIFNWRyBmaWx0ZXIuIFRoZSBzb3VyY2VJbnB1dCBp
cyBjbGlwcGVkCisgICAgICAgIHRvIHRoZSBmaWx0ZXIgcmVnaW9uIG5vdyAoYWNjb3JkaW5nIHRv
IHRoZSBzcGVjKS4gU1ZHRkVJbWFnZSBuZWVkZWQgYSAKKyAgICAgICAgY29ycmVjdGlvbiwgdG8g
YXZvaWQgYW4gQVNTRVJULiBUaGUgdHdvIGZpbHRlciBwcmltaXRpdmVzIGZlT2Zmc2V0IGFuZCAK
KyAgICAgICAgZmVGbG9vZCBoZWxwIHRvIHRlc3QgdGhlIG5ldyBzdWJSZWdpb24gY29kZS4KKwor
ICAgICAgICBUZXN0czogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3ZnCisgICAg
ICAgICAgICAgICBzdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVCbGVuZDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xv
ck1hdHJpeDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb21wb25lbnRUcmFuc2Zlcjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNvdXJjZUlt
YWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0VW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6dW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdDo6aGFzWCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNl
dEhhc1gpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNZKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0SGFzWSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6Omhhc1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0
SGFzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNIZWlnaHQpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRFZmZlY3RCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUFscGhhOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VHcmFwaGljOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlR3JhcGhpYzo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBw
b3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OnByZXBhcmVUb1JlbmRl
clNWR0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVu
ZGVyU1ZHQ29udGVudCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291
cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNl
RmlsdGVyOjphcHBseUZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNl
RmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1h
dHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpjYWxjdWxhdGVV
bml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29u
dm9sdmVNYXRyaXguaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1
c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6Y2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50
TWFwOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpjYWxjdWxh
dGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBwbHkpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVJ
bWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWxjdWxhdGVVbml0
ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3k6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmNhbGN1
bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6YXBwbHkp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6CisgICAgICAg
ICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcu
aDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAq
IHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVR1cmJ1
bGVuY2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y2FsY3VsYXRl
RWZmZWN0U3ViUmVnaW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6ZWZmZWN0Qm91bmRpbmdCb3hNb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6ZmlsdGVyUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlcjo6c291cmNlSW1hZ2VSZWN0KToKKwogMjAwOS0wNi0xMCAgUGV0
ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQmxlbmQuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTUgQEAg
dm9pZCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAgIG1fbW9kZSA9IG1v
ZGU7CiB9CiAKK0Zsb2F0UmVjdCBGRUJsZW5kOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmls
dGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNh
bGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHVuaXRlRWZmZWN0UmVjdC51bml0
ZShtX2luMi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcikpOworICAgIHNldFVuaXRl
RWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0
U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRUJs
ZW5kOjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEJsZW5kTW9kZVR5cGUgYmxlbmRN
b2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5cGUpOwot
ICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZp
bHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAo
KTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYg
KzYxLDE0IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0IFZlY3QKICAgICBt
X3ZhbHVlcyA9IHZhbHVlczsKIH0KIAorRmxvYXRSZWN0IEZFQ29sb3JNYXRyaXg6OmNhbGN1bGF0
ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVF
ZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAg
c2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxh
dGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2
b2lkIEZFQ29sb3JNYXRyaXg6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9u
IDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRy
aXguaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICAgICAgCisKKyAgICAg
ICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAg
dm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2
ICs4NSwxNCBAQCB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3RpCiAgICAg
bV9hbHBoYUZ1bmMgPSBmdW5jOwogfQogCitGbG9hdFJlY3QgRkVDb21wb25lbnRUcmFuc2Zlcjo6
Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0UmVj
dCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVy
KTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXIt
PmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7
Cit9CisKIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9uZW50VHJhbnNmZXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw3ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRBbHBo
YUZ1bmN0aW9uKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLSAgICAgICAgCisK
KyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNw
cAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxNSBAQCB2b2lkIEZF
Q29tcG9zaXRlOjpzZXRLNChmbG9hdCBrNCkKICAgICBtX2s0ID0gazQ7CiB9CiAKK0Zsb2F0UmVj
dCBGRUNvbXBvc2l0ZTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQor
eworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVm
ZmVjdFJlY3QoZmlsdGVyKTsKKyAgICB1bml0ZUVmZmVjdFJlY3QudW5pdGUobV9pbjItPmNhbGN1
bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5p
dGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlz
KTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVDb21wb3NpdGU6OmFwcGx5
KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyAr
NTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgZmxvYXQgazQoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBzZXRLNChmbG9hdCk7Ci0gICAgICAgIAorCisgICAgICAgIEZsb2F0UmVj
dCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHko
RmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjEs
NyArMjEsOCBAQAogI2RlZmluZSBGaWx0ZXJfaAogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0jaW5j
bHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFnZUJ1
ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CkBAIC0zNiwxMyArMzcsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCB+RmlsdGVyKCkgeyB9CiAKLSAgICAgICAgdm9pZCBzZXRTb3Vy
Y2VJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0KLSAg
ICAgICAgSW1hZ2UqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQorICAg
ICAgICB2b2lkIHNldFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJjZUlt
YWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQorICAgICAgICBJbWFnZUJ1ZmZl
ciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAKKyAgICAg
ICAgdmlydHVhbCBGbG9hdFJlY3Qgc291cmNlSW1hZ2VSZWN0KCkgPSAwOworICAgICAgICB2aXJ0
dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSA9IDA7CisKKyAgICAgICAgLy8gU1ZHIHNwZWNp
ZmljCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVy
RWZmZWN0KikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgZWZmZWN0Qm91bmRpbmdCb3hNb2Rl
KCkgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwor
ICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDEwIEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KCkKICAgICAs
IG1feUJCb3hNb2RlKGZhbHNlKQogICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQogICAgICwg
bV9oZWlnaHRCQm94TW9kZShmYWxzZSkKKyAgICAsIG1faGFzWChmYWxzZSkKKyAgICAsIG1faGFz
WShmYWxzZSkKKyAgICAsIG1faGFzV2lkdGgoZmFsc2UpCisgICAgLCBtX2hhc0hlaWdodChmYWxz
ZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
IAorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ4LDEzICs0OSwyOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9oZWlnaHRCQm94TW9kZTsgfQogICAgICAgICB2b2lkIHNldEhlaWdodEJvdW5k
aW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94TW9kZTsg
fQogCisgICAgICAgIHZvaWQgc2V0VW5pdGVFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdW5p
dGVSZWN0KSB7IG1fdW5pdGVFZmZlY3RSZWN0ID0gdW5pdGVSZWN0OyB9CisgICAgICAgIEZsb2F0
UmVjdCB1bml0ZUVmZmVjdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3VuaXRlRWZmZWN0UmVjdDsg
fQorCiAgICAgICAgIEZsb2F0UmVjdCBzdWJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX3N1YlJl
Z2lvbjsgfQogICAgICAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIHN1YlJl
Z2lvbikgeyBtX3N1YlJlZ2lvbiA9IHN1YlJlZ2lvbjsgfQogCisgICAgICAgIGJvb2wgaGFzWCgp
IHsgcmV0dXJuIG1faGFzWDsgfQorICAgICAgICB2b2lkIHNldEhhc1goYm9vbCB2YWx1ZSkgeyBt
X2hhc1ggPSB2YWx1ZTsgfQorCisgICAgICAgIGJvb2wgaGFzWSgpIHsgcmV0dXJuIG1faGFzWTsg
fQorICAgICAgICB2b2lkIHNldEhhc1koYm9vbCB2YWx1ZSkgeyBtX2hhc1kgPSB2YWx1ZTsgfQor
CisgICAgICAgIGJvb2wgaGFzV2lkdGgoKSB7IHJldHVybiBtX2hhc1dpZHRoOyB9CisgICAgICAg
IHZvaWQgc2V0SGFzV2lkdGgoYm9vbCB2YWx1ZSkgeyBtX2hhc1dpZHRoID0gdmFsdWU7IH0KKwor
ICAgICAgICBib29sIGhhc0hlaWdodCgpIHsgcmV0dXJuIG1faGFzSGVpZ2h0OyB9CisgICAgICAg
IHZvaWQgc2V0SGFzSGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2YWx1ZTsgfQor
CiAgICAgICAgIC8vIFRoZSByZXN1bHQgaXMgYm91bmRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgZmls
dGVyIHByaW1pdGl2ZSB0byBzYXZlIHJlc291cmNlcwogICAgICAgICBJbWFnZUJ1ZmZlciogcmVz
dWx0SW1hZ2UoKSB7IHJldHVybiBtX2VmZmVjdEJ1ZmZlci5nZXQoKTsgfQotICAgICAgICB2b2lk
IHNldEVmZmVjdEJ1ZmZlcihJbWFnZUJ1ZmZlciogZWZmZWN0QnVmZmVyKSB7IG1fZWZmZWN0QnVm
ZmVyLnNldChlZmZlY3RCdWZmZXIpOyB9CisgICAgICAgIHZvaWQgc2V0RWZmZWN0QnVmZmVyKFBh
c3NPd25QdHI8SW1hZ2VCdWZmZXI+IGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVjdEJ1ZmZlciA9IGVm
ZmVjdEJ1ZmZlcjsgfQogCisgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdChGaWx0ZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBseShGaWx0
ZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOwogCkBAIC02OSw3ICs4
NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93aWR0aEJCb3hNb2Rl
IDogMTsKICAgICAgICAgYm9vbCBtX2hlaWdodEJCb3hNb2RlIDogMTsKIAorICAgICAgICBib29s
IG1faGFzWCA6IDE7CisgICAgICAgIGJvb2wgbV9oYXNZIDogMTsKKyAgICAgICAgYm9vbCBtX2hh
c1dpZHRoIDogMTsKKyAgICAgICAgYm9vbCBtX2hhc0hlaWdodCA6IDE7CisKICAgICAgICAgRmxv
YXRSZWN0IG1fc3ViUmVnaW9uOworICAgICAgICBGbG9hdFJlY3QgbV91bml0ZUVmZmVjdFJlY3Q7
CiAKICAgICAgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZWZmZWN0QnVmZmVyOwog
ICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYg
ZWZmZWN0TmFtZSgpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJl
Y3QoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCk7IH0K
ICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAg
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEs
MjQgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlYwogICAgIHJldHVy
biBzX2VmZmVjdE5hbWU7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6YXBwbHkoRmlsdGVyKikK
K0Zsb2F0UmVjdCBTb3VyY2VHcmFwaGljOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVy
KiBmaWx0ZXIpCiB7CisgICAgc2V0U3ViUmVnaW9uKGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCkp
OworICAgIHJldHVybiBmaWx0ZXItPmZpbHRlclJlZ2lvbigpOworfQorCit2b2lkIFNvdXJjZUdy
YXBoaWM6OmFwcGx5KEZpbHRlciogZmlsdGVyKQoreworICAgIEludFNpemUgYnVmZmVyU2l6ZSA9
IEludFNpemUoc3ViUmVnaW9uKCkud2lkdGgoKSwgc3ViUmVnaW9uKCkuaGVpZ2h0KCkpOworICAg
IE93blB0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1
ZmZlclNpemUsIGZhbHNlKSk7CisKKyAgICBpZiAoIWZpbHRlckdyYXBoaWMuZ2V0KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IGZpbHRl
ckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5kcmF3SW1hZ2UoZmlsdGVy
LT5zb3VyY2VJbWFnZSgpLT5pbWFnZSgpLCBJbnRQb2ludCgwLCAwKSk7CisKKyAgICBzZXRFZmZl
Y3RCdWZmZXIoZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFNvdXJjZUdyYXBo
aWM6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlR3JhcGhpYy5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDgg
KzI0LDggQEAKICNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIK
IAotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5j
bHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2
ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBlZmZlY3ROYW1lKCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVu
aXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAg
ICAgICAgdm9pZCBkdW1wKCk7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJT
dXBwb3J0LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQgU1ZH
UmVuZGVyQmFzZTo6cHJlcGFyZVRvUmVuZGVyU1ZHQ28KICNpZiBFTkFCTEUoRklMVEVSUykKICAg
ICBpZiAoZmlsdGVyKSB7CiAgICAgICAgIGZpbHRlci0+YWRkQ2xpZW50KHN0eWxlZEVsZW1lbnQp
OwotICAgICAgICBmaWx0ZXItPnByZXBhcmVGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIG9iamVj
dC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7CisgICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihw
YWludEluZm8uY29udGV4dCwgb2JqZWN0KTsKICAgICB9IGVsc2UgaWYgKCFmaWx0ZXJJZC5pc0Vt
cHR5KCkpCiAgICAgICAgIHN2Z0VsZW1lbnQtPmRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lv
bnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlcklkLCBzdHlsZWRFbGVtZW50KTsKICNlbmRp
ZgpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZH
Q29udGUKIAogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKLSAgICAgICAg
ZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0LT5vYmplY3RCb3Vu
ZGluZ0JveCgpKTsKKyAgICAgICAgZmlsdGVyLT5hcHBseUZpbHRlcihwYWludEluZm8uY29udGV4
dCwgb2JqZWN0KTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQgPSBzYXZlZENvbnRleHQ7CiAg
ICAgfQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksNiArNzksMTUgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZQogCiAgICAgZmxvYXQgX3gsIF95LCBfd2lkdGgsIF9oZWlnaHQ7CiAKKyAgICBpZiAodGhp
cy0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjp4QXR0cikpCisgICAgICAgIGZpbHRlckVmZmVjdC0+
c2V0SGFzWCh0cnVlKTsKKyAgICBpZiAodGhpcy0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjp5QXR0
cikpCisgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzWSh0cnVlKTsKKyAgICBpZiAodGhpcy0+
aGFzQXR0cmlidXRlKFNWR05hbWVzOjp3aWR0aEF0dHIpKQorICAgICAgICBmaWx0ZXJFZmZlY3Qt
PnNldEhhc1dpZHRoKHRydWUpOworICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6
OmhlaWdodEF0dHIpKQorICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhhc0hlaWdodCh0cnVlKTsK
KwogICAgIGlmIChyZXNvdXJjZUZpbHRlci0+ZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkpIHsKICAg
ICAgICAgX3ggPSB4KCkudmFsdWVBc1BlcmNlbnRhZ2UoKTsKICAgICAgICAgX3kgPSB5KCkudmFs
dWVBc1BlcmNlbnRhZ2UoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNl
RmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJj
ZUZpbHRlci5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Niw1MCArNjYsNjAgQEAgRmxv
YXRSZWN0IFNWR1Jlc291cmNlRmlsdGVyOjpmaWx0ZXJCQm94RgogICAgIHJldHVybiBmaWx0ZXJC
Qm94OwogfQogCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNz
Q29udGV4dComIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit2b2lkIFNWR1Jl
c291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNv
bnN0IFJlbmRlck9iamVjdCogb2JqZWN0KQogeworICAgIG1faXRlbUJCb3ggPSBvYmplY3QtPm9i
amVjdEJvdW5kaW5nQm94KCk7CisgICAgbV9maWx0ZXJCQm94ID0gZmlsdGVyQkJveEZvckl0ZW1C
Qm94KG1faXRlbUJCb3gpOworCisgICAgLy8gY2xpcCBzb3VyY2VJbWFnZSB0byBmaWx0ZXJSZWdp
b24KKyAgICBGbG9hdFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBtX2l0ZW1CQm94OworICAgIGNs
aXBwZWRTb3VyY2VSZWN0LmludGVyc2VjdChtX2ZpbHRlckJCb3gpOworCisgICAgLy8gcHJlcGFy
ZSBGaWx0ZXJzCisgICAgbV9maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShtX2l0ZW1CQm94LCBt
X2ZpbHRlckJCb3gsIG1fZWZmZWN0QkJveE1vZGUsIG1fZmlsdGVyQkJveE1vZGUpOworCisgICAg
RmlsdGVyRWZmZWN0KiBsYXN0RWZmZWN0ID0gbV9maWx0ZXJCdWlsZGVyLT5sYXN0RWZmZWN0KCk7
CisgICAgaWYgKGxhc3RFZmZlY3QpCisgICAgICAgIGxhc3RFZmZlY3QtPmNhbGN1bGF0ZVVuaXRl
RWZmZWN0UmVjdChtX2ZpbHRlci5nZXQoKSk7CisKICAgICAvLyBEcmF3IHRoZSBjb250ZW50IG9m
IHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIGl0J3MgY2hpbGRzIHRvIGEgaW1hZ2VCdWZmZXIgdG8g
Z2V0IHRoZSBTb3VyY2VHcmFwaGljLgotICAgIC8vIFRoZSBzaXplIG9mIHRoZSBTb3VyY2VHcmFw
aGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQsIHRoZSBmaWx0ZXIgaXMgYXBs
aWVkIHRvLgotICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoaXRlbVJlY3Qud2lkdGgo
KSwgaXRlbVJlY3QuaGVpZ2h0KCkpOworICAgIC8vIFRoZSBzaXplIG9mIHRoZSBTb3VyY2VHcmFw
aGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQsIHRoZSBmaWx0ZXIgaXMgYXBw
bGllZCB0by4KKyAgICBJbnRTaXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKGNsaXBwZWRTb3VyY2VS
ZWN0LndpZHRoKCksIGNsaXBwZWRTb3VyY2VSZWN0LmhlaWdodCgpKTsKICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IHNvdXJjZUdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBm
YWxzZSkpOwogICAgIAogICAgIGlmICghc291cmNlR3JhcGhpYy5nZXQoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJj
ZUdyYXBoaWMtPmNvbnRleHQoKTsKLSAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+dHJhbnNsYXRl
KC1pdGVtUmVjdC54KCksIC1pdGVtUmVjdC55KCkpOwotICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0
LT5jbGVhclJlY3QoRmxvYXRSZWN0KDAsIDAsIGl0ZW1SZWN0LndpZHRoKCksIGl0ZW1SZWN0Lmhl
aWdodCgpKSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPnRyYW5zbGF0ZSgtbV9pdGVtQkJv
eC54KCksIC1tX2l0ZW1CQm94LnkoKSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFy
UmVjdChGbG9hdFJlY3QoMCwgMCwgbV9pdGVtQkJveC53aWR0aCgpLCBtX2l0ZW1CQm94LmhlaWdo
dCgpKSk7CiAgICAgbV9zb3VyY2VHcmFwaGljQnVmZmVyLnNldChzb3VyY2VHcmFwaGljLnJlbGVh
c2UoKSk7CiAgICAgbV9zYXZlZENvbnRleHQgPSBjb250ZXh0OwogCiAgICAgY29udGV4dCA9IHNv
dXJjZUdyYXBoaWNDb250ZXh0OwogfQogCi12b2lkIFNWR1Jlc291cmNlRmlsdGVyOjphcHBseUZp
bHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1SZWN0
KQordm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYg
Y29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3NhdmVk
Q29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGZpbHRlclJlY3QgPSBm
aWx0ZXJCQm94Rm9ySXRlbUJCb3goaXRlbVJlY3QpOwotCi0gICAgc2V0RmlsdGVyQm91bmRpbmdC
b3goZmlsdGVyUmVjdCk7Ci0gICAgc2V0SXRlbUJvdW5kaW5nQm94KGl0ZW1SZWN0KTsKLQogICAg
IGNvbnRleHQgPSBtX3NhdmVkQ29udGV4dDsKICAgICBtX3NhdmVkQ29udGV4dCA9IDA7CiAKICAg
ICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBtX2ZpbHRlckJ1aWxkZXItPmxhc3RFZmZlY3Qo
KTsKIAotICAgIGlmIChsYXN0RWZmZWN0ICYmICFmaWx0ZXJSZWN0LmlzRW1wdHkoKSkgewotICAg
ICAgICBSZWZQdHI8RmlsdGVyPiBmaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShtX2l0ZW1CQm94
LCBtX2ZpbHRlckJCb3gsIG1fZWZmZWN0QkJveE1vZGUsIG1fZmlsdGVyQkJveE1vZGUpOwotICAg
ICAgICBmaWx0ZXItPnNldFNvdXJjZUltYWdlKG1fc291cmNlR3JhcGhpY0J1ZmZlci0+aW1hZ2Uo
KSk7Ci0gICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KGZpbHRlci5nZXQoKSk7Ci0KLSAgICAgICAg
Y29udGV4dC0+Y2xpcChmaWx0ZXJSZWN0KTsKLQotICAgICAgICBpZiAobGFzdEVmZmVjdC0+cmVz
dWx0SW1hZ2UoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShsYXN0RWZmZWN0LT5y
ZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0
RWZmZWN0LT5zdWJSZWdpb24oKSk7CisgICAgaWYgKGxhc3RFZmZlY3QgJiYgIW1fZmlsdGVyQkJv
eC5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9maWx0ZXItPnNldFNvdXJjZUltYWdlKG1fc291cmNl
R3JhcGhpY0J1ZmZlci5yZWxlYXNlKCkpOworICAgICAgICBsYXN0RWZmZWN0LT5hcHBseShtX2Zp
bHRlci5nZXQoKSk7CisKKyAgICAgICAgLy8gQ2xpcCB0aGUgZmlsdGVyRWZmZWN0cyB0byB0aGUg
ZmlsdGVyIHJlZ2lvbgorICAgICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlY3QgPSBtX2ZpbHRlckJC
b3g7CisgICAgICAgIGRyYXdpbmdSZWN0LmludGVyc2VjdChsYXN0RWZmZWN0LT5zdWJSZWdpb24o
KSk7CisKKyAgICAgICAgY29udGV4dC0+Y2xpcChtX2ZpbHRlckJCb3gpOworICAgICAgICBpZiAo
bGFzdEVmZmVjdC0+cmVzdWx0SW1hZ2UoKSAmJiAhZHJhd2luZ1JlY3QuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCktPmlt
YWdlKCksIGxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpKTsKICAgICB9CiAKICAgICBtX3NvdXJjZUdy
YXBoaWNCdWZmZXIuY2xlYXIoKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291
cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3Vy
Y2VGaWx0ZXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdS
ZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMSArMjksMTMgQEAKICNpbmNs
dWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw4
ICs3Niw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihUZXh0U3RyZWFtJikgY29uc3Q7CiAKLSAgICB2b2lkIHByZXBhcmVGaWx0ZXIo
R3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgYXBwbHlGaWx0
ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHZvaWQgcHJlcGFy
ZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgdm9p
ZCBhcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29uc3QgUmVuZGVyT2JqZWN0Kik7CiAK
ICAgICB2b2lkIGFkZEZpbHRlckVmZmVjdChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMqLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4pOwogCkBAIC05Nyw2ICs5OSw3IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFNWR0ZpbHRlckJ1aWxkZXI+IG1fZmlsdGVyQnVpbGRlcjsKICAg
ICBHcmFwaGljc0NvbnRleHQqIG1fc2F2ZWRDb250ZXh0OwogICAgIE93blB0cjxJbWFnZUJ1ZmZl
cj4gbV9zb3VyY2VHcmFwaGljQnVmZmVyOworICAgIFJlZlB0cjxGaWx0ZXI+IG1fZmlsdGVyOwog
fTsKIAogU1ZHUmVzb3VyY2VGaWx0ZXIqIGdldEZpbHRlckJ5SWQoRG9jdW1lbnQqLCBjb25zdCBB
dG9taWNTdHJpbmcmKTsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVD
b252b2x2ZU1hdHJpeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzQsNiArMTM0LDE1IEBAIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6c2V0UHJlc2Vy
dmVBbHBoYSgKICAgICBtX3ByZXNlcnZlQWxwaGEgPSBwcmVzZXJ2ZUFscGhhOyAKIH0KIAorRmxv
YXRSZWN0IEZFQ29udm9sdmVNYXRyaXg6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIq
IGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3Vs
YXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKG1f
aW4yLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKSk7CisgICAgc2V0VW5pdGVFZmZl
Y3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJS
ZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFQ29udm9s
dmVNYXRyaXg6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAkocmV2aXNpb24gNDQ0MjMp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAko
d29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByZXNlcnZl
QWxwaGEoYm9vbCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVj
dChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RURpZmZ1c2VMaWdodGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExMyw2ICsxMTMsMTQgQEAgdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0
TGlnaHRTb3VyY2UoTAogICAgIG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAorRmxv
YXRSZWN0IEZFRGlmZnVzZUxpZ2h0aW5nOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVy
KiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1
bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHNldFVuaXRlRWZmZWN0UmVjdCh1bml0
ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMp
OworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6
YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDQ0NDIzKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29u
c3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0TGln
aHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5p
dGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcAkocmV2aXNpb24gNDQ0
MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFw
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsMTUgQEAgdm9pZCBGRURpc3BsYWNlbWVu
dE1hcDo6c2V0U2NhbGUoZmxvYXQgcwogICAgIG1fc2NhbGUgPSBzY2FsZTsKIH0KIAorRmxvYXRS
ZWN0IEZFRGlzcGxhY2VtZW50TWFwOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBm
aWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1bGF0
ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHVuaXRlRWZmZWN0UmVjdC51bml0ZShtX2lu
Mi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcikpOworICAgIHNldFVuaXRlRWZmZWN0
UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVn
aW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9pZCBGRURpc3BsYWNl
bWVudE1hcDo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHJldmlzaW9uIDQ0NDIz
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgZmxvYXQgc2NhbGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTY2FsZShmbG9hdCBz
Y2FsZSk7CiAKKyAgICAgICAgdm9pZCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoKTsKKworICAg
ICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAg
ICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHJldmlz
aW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAg
ICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CisgICAg
ICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yMyw3ICsyNCw5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUZsb29kLmgiCisKICNpbmNsdWRlICJGaWx0ZXIu
aCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJUcmVl
QXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYxLDggKzY0LDI2IEBAIHZvaWQg
RkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb28KICAgICBtX2Zsb29kT3BhY2l0eSA9
IGZsb29kT3BhY2l0eTsKIH0KIAorRmxvYXRSZWN0IEZFRmxvb2Q6OmNhbGN1bGF0ZVVuaXRlRWZm
ZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QoZmlsdGVy
LT5maWx0ZXJSZWdpb24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24o
dGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFRmxvb2Q6OmFwcGx5
KEZpbHRlciopCiB7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShzdWJSZWdpb24o
KS53aWR0aCgpLCBzdWJSZWdpb24oKS5oZWlnaHQoKSk7CisgICAgT3duUHRyPEltYWdlQnVmZmVy
PiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsK
KworICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Q29sb3IgY29sb3IgPSBDb2xvcihjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29sb3IoKS5y
Z2IoKSwgZmxvb2RPcGFjaXR5KCkpKTsKKyAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRl
eHQgPSBmaWx0ZXJHcmFwaGljLT5jb250ZXh0KCk7CisgICAgZmlsdGVyQ29udGV4dC0+ZmlsbFJl
Y3QoRmxvYXRSZWN0KDAuZiwgMC5mLCBzdWJSZWdpb24oKS53aWR0aCgpLCBzdWJSZWdpb24oKS5o
ZWlnaHQoKSksIGNvbG9yKTsKKworICAgIHNldEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJl
bGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVGbG9vZDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGZsb29kT3BhY2l0
eSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZsb29kT3BhY2l0eShmbG9hdCk7CiAKKyAgICAg
ICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAg
dm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1
ci5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUdhdXNzaWFuQmx1ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDE0IEBAIHZv
aWQgRkVHYXVzc2lhbkJsdXI6OnNldFN0ZERldmlhdGlvblkoZmwKICAgICBtX3kgPSB5OwogfQog
CitGbG9hdFJlY3QgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0
ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVu
aXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhp
cyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFR2F1c3NpYW5CbHVyOjph
cHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdGREZXZp
YXRpb25ZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7CiAK
KyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCShy
ZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgRkVJbWFnZTo6RkVJbWFnZShD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZwogICAgIDogRmlsdGVyRWZmZWN0KCkKICAgICAsIG1fY2Fj
aGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCiB7CisgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRo
aXMpOwogfQogCiBQYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZShDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UpCkBAIC02NCw2ICs2NSwxMyBAQCB2b2lkIEZFSW1hZ2U6OnNldENhY2hl
ZEltYWdlKENhY2hlZEltYWdlCiAgICAgICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlz
KTsKIH0KIAorRmxvYXRSZWN0IEZFSW1hZ2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0
ZXIqIGZpbHRlcikKK3sKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QoZmlsdGVyLT5maWx0ZXJSZWdp
b24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAg
cmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFSW1hZ2U6OmFwcGx5KEZpbHRlciopCiB7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2
aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRS
ZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBs
eShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiA0NDQyMykK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDI2IEBAIHZvaWQgRkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMoY29u
c3QgVmVjdG8KICAgICBtX21lcmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7CiB9CiAKK0Zsb2F0UmVj
dCBGRU1lcmdlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7Cisg
ICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdDsKKyAgICBpZiAobV9tZXJnZUlucHV0cy5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7Cisg
ICAgICAgIHNldFN1YlJlZ2lvbihGbG9hdFJlY3QoKSk7CisgICAgICAgIHJldHVybiBzdWJSZWdp
b24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdW5pdGVFZmZlY3RSZWN0ID0gbV9tZXJnZUlucHV0
c1swXS0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisKKyAgICBpZiAobV9tZXJn
ZUlucHV0cy5zaXplKCkgPiAxKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbV9tZXJn
ZUlucHV0cy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgIHVuaXRlRWZmZWN0UmVjdC51bml0ZSht
X21lcmdlSW5wdXRzW2ldLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKSk7CisgICAg
fQorCisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOworICAg
IGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJS
ZWdpb24oKTsKK30KKwogdm9pZCBGRU1lcmdlOjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHJldmlzaW9uIDQ0NDIz
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGNv
bnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMoKSBjb25zdDsKICAgICAgICAg
dm9pZCBzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0b3I8RmlsdGVyRWZmZWN0Kj4mIG1lcmdlSW5w
dXRzKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0
UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9p
ZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4
dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU1vcnBob2xvZ3kuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDE0IEBAIHZvaWQgRkVNb3JwaG9sb2d5OjpzZXRSYWRpdXNZKGZsb2F0IHJhZGkK
ICAgICBtX3JhZGl1c1kgPSByYWRpdXNZOwogfQogCitGbG9hdFJlY3QgRkVNb3JwaG9sb2d5Ojpj
YWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0
IHVuaXRlRWZmZWN0UmVjdCA9IG1faW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIp
OworICAgIHNldFVuaXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+
Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsK
K30KKwogdm9pZCBGRU1vcnBob2xvZ3k6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9u
IDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3ku
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGZsb2F0IHJhZGl1c1koKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZs
b2F0KTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRl
ciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsK
ICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0
cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zm
c2V0LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFT2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1t
ZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxi
dWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdl
YmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw4ICsyNCwxMCBAQAogCiAjaWYgRU5B
QkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVPZmZzZXQuaCIKLSNp
bmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisKICNpbmNsdWRlICJGaWx0ZXIuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsOCArNjQsMzQgQEAgdm9pZCBGRU9m
ZnNldDo6c2V0RHkoZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0
OjphcHBseShGaWx0ZXIqKQorRmxvYXRSZWN0IEZFT2Zmc2V0OjpjYWxjdWxhdGVVbml0ZUVmZmVj
dFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9
IG1faW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHNldFVuaXRlRWZm
ZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3Vi
UmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwordm9pZCBGRU9mZnNl
dDo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CisgICAgbV9pbi0+YXBwbHkoZmlsdGVyKTsKKyAg
ICBpZiAoIW1faW4tPnJlc3VsdEltYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEludFNp
emUgYnVmZmVyU2l6ZSA9IEludFNpemUoc3ViUmVnaW9uKCkud2lkdGgoKSwgc3ViUmVnaW9uKCku
aGVpZ2h0KCkpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CisKKyAgICBpZiAoIWZpbHRlckdyYXBo
aWMuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBkc3RSZWN0ID0gRmxv
YXRSZWN0KGR4KCkgKyBtX2luLT5zdWJSZWdpb24oKS54KCkgLSBzdWJSZWdpb24oKS54KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHkoKSArIG1faW4tPnN1YlJlZ2lvbigp
LnkoKSAtIHN1YlJlZ2lvbigpLnkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2luLT5zdWJSZWdpb24oKS53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1faW4tPnN1YlJlZ2lvbigpLmhlaWdodCgpKTsKKworICAgIEdyYXBoaWNzQ29udGV4
dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJD
b250ZXh0LT5kcmF3SW1hZ2UobV9pbi0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwgZHN0UmVjdCk7
CisgICAgc2V0RWZmZWN0QnVmZmVyKGZpbHRlckdyYXBoaWMucmVsZWFzZSgpKTsKIH0KIAogdm9p
ZCBGRU9mZnNldDo6ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFT2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRU9mZnNldC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVPZmZzZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IGR5KCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0RHkoZmxvYXQpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJl
Y3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
ZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysg
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDE0IEBAIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5n
OjpzZXRMaWdodFNvdXJjZSgKICAgICBtX2xpZ2h0U291cmNlID0gbGlnaHRTb3VyY2U7CiB9CiAK
K0Zsb2F0UmVjdCBGRVNwZWN1bGFyTGlnaHRpbmc6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChG
aWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+
Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0
KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24o
dGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFU3BlY3VsYXJMaWdo
dGluZzo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaAkocmV2aXNpb24gNDQ0MjMp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAorICAgICAgICBGbG9hdFJlY3QgY2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRl
ciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjEsOCArMjEsMTIgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2lu
Y2x1ZGUgIlNWR0ZFVGlsZS5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKwog
I2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKKwor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDYgKzQxLDE0IEBAIFBhc3NSZWZQdHI8RkVUaWxl
PiBGRVRpbGU6OmNyZWF0ZShGaWx0ZXIKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZFVGlsZShp
bikpOwogfQogCitGbG9hdFJlY3QgRkVUaWxlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmls
dGVyKiBmaWx0ZXIpCit7CisgICAgbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRl
cik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOworICAg
IGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJS
ZWdpb24oKTsKK30KKwogdm9pZCBGRVRpbGU6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmgJKHJldmlzaW9uIDQ0NDIzKQor
KysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRpbGU+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKIAor
ICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAg
VGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVu
Y2UuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVUdXJidWxlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiwxMyBAQCB2
b2lkIEZFVHVyYnVsZW5jZTo6c2V0U3RpdGNoVGlsZXMoYm9vbCBzCiAgICAgbV9zdGl0Y2hUaWxl
cyA9IHN0aXRjaDsKIH0KIAorRmxvYXRSZWN0IEZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRlVW5pdGVF
ZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIHNldFVuaXRlRWZmZWN0UmVjdChmaWx0
ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lv
bih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVUdXJidWxlbmNl
OjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHN0aXRjaFRpbGVz
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMoYm9vbCk7CiAKKyAgICAgICAg
RmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcik7CiAgICAg
ICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBU
ZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsK
SW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJKHJldmlz
aW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw0MiBAQCBTVkdGaWx0ZXI6OlNWR0ZpbHRlcihj
b25zdCBGbG9hdFJlY3QmIGl0CiB7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxhdGVFZmZl
Y3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KikKK3ZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxhdGVFZmZl
Y3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiB7CisgICAgRmxvYXRSZWN0IHN1YlJl
Z2lvbkJCb3ggPSBlZmZlY3QtPnN1YlJlZ2lvbigpOworICAgIEZsb2F0UmVjdCB1c2VCQm94ID0g
ZWZmZWN0LT51bml0ZUVmZmVjdFJlY3QoKTsKKworICAgIEZsb2F0UmVjdCBuZXdTdWJSZWdpb24g
PSBzdWJSZWdpb25CQm94OworCisgICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpIHsKKyAgICAgICAg
bmV3U3ViUmVnaW9uID0gdXNlQkJveDsKKworICAgICAgICBpZiAoZWZmZWN0LT5oYXNYKCkpCisg
ICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WChtX2l0ZW1Cb3gueCgpICsgc3ViUmVnaW9uQkJv
eC54KCkgKiBtX2l0ZW1Cb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGFzWSgp
KQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFkobV9pdGVtQm94LnkoKSArIHN1YlJlZ2lv
bkJCb3gueSgpICogbV9pdGVtQm94LmhlaWdodCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5o
YXNXaWR0aCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJC
b3gud2lkdGgoKSAqIG1faXRlbUJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5o
YXNIZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWlnaHQoc3ViUmVnaW9u
QkJveC5oZWlnaHQoKSAqIG1faXRlbUJveC5oZWlnaHQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgaWYgKGVmZmVjdC0+eEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgbmV3U3ViUmVn
aW9uLnNldFgodXNlQkJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVzZUJCb3gud2lkdGgo
KSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+eUJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAg
ICAgbmV3U3ViUmVnaW9uLnNldFkodXNlQkJveC55KCkgKyBzdWJSZWdpb25CQm94LnkoKSAqIHVz
ZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPndpZHRoQm91bmRpbmdCb3hN
b2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0V2lkdGgoc3ViUmVnaW9uQkJveC53
aWR0aCgpICogdXNlQkJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5oZWlnaHRC
b3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWlnaHQoc3Vi
UmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgIH0KKworICAgIGVm
ZmVjdC0+c2V0U3ViUmVnaW9uKG5ld1N1YlJlZ2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRmls
dGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGl0ZW1Cb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9kZSwgYm9vbCBmaWx0ZXJCQm94
TW9kZSkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAkocmV2
aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShj
b25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sLCBib29sKTsKIAorICAgICAg
ICBib29sIGVmZmVjdEJvdW5kaW5nQm94TW9kZSgpIHsgcmV0dXJuIG1fZWZmZWN0QkJveE1vZGU7
IH0KKworICAgICAgICBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgeyByZXR1cm4gbV9maWx0ZXJS
ZWN0OyB9CisgICAgICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSB7IHJldHVybiBtX2l0
ZW1Cb3g7IH0KICAgICAgICAgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZm
ZWN0Kik7CiAKICAgICBwcml2YXRlOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ2MDIpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0w
Ni0xMCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGUgbmV3IHN1
YlJnaW9uLWNvZGUgb24gU1ZHIGZpbHRlcnMuCisKKyAgICAgICAgKiBzdmcvZmlsdGVyczogQWRk
ZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3ZnOiBBZGRl
ZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnOiBBZGRl
ZC4KKwogMjAwOS0wNi0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGdtYWlsLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0
ZXJzL3N1YlJlZ2lvbi1vbmUtZWZmZWN0LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTk3IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2
ZyIgaWQ9ImJvZHkiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj4KKyAgICA8ZGVmcz4KKyAgICAg
IDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgKiB7c3Ryb2tlOmJsYWNrOyBzdHJva2Ut
d2lkdGg6MC4yO30KKyAgICAgIDwvc3R5bGU+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVy
XzFlZmZlY3RfMDEiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+Cisg
ICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIx
MDAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wMiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAg
ICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9
Ijc1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVy
XzFlZmZlY3RfMDMiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+Cisg
ICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUw
JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFl
ZmZlY3RfMDQiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAg
ICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI1MCUiIGhlaWdodD0iMjUl
IiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVm
ZmVjdF8wNSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAg
IGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAg
ICAgICAgIDxmZU9mZnNldCB4PSIyNSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUi
IC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZm
ZWN0XzA2IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAg
aGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAg
ICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEw
MCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8x
ZWZmZWN0XzA3IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAg
ICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IHg9IjEyLjUlIiB5PSIxMi41JSIgd2lkdGg9IjI1JSIgaGVpZ2h0
PSIyNSUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisKKyAgICAgICAgPGZpbHRlciBpZD0iZmls
dGVyXzFlZmZlY3RfMDgiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAg
ICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAl
IiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVm
ZmVjdF8wOSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAg
IDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9Ijc1JSIgLz4K
KyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MTAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVP
ZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAg
PC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTEiIHByaW1p
dGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0i
NTAlIiB5PSI1MCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmls
dGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzEyIiBwcmltaXRpdmVV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIg
eT0iMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisK
KyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTMiIHByaW1pdGl2ZVVuaXRzPSJv
YmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1
JSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAg
ICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIg
d2lkdGg9IjE1MCUiIGhlaWdodD0iMTUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9k
ZWZzPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsIDEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwx
NTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0t
IEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZl
Y3RfMDEpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDExMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJh
eTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3Bh
Y2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIg
aGVpZ2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtz
dHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8
cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wMik7c3Ryb2tlOm5vbmU7Ii8+
CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEwLCAxMCkiPgorICAg
ICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0
IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzAzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zv
cm09InRyYW5zbGF0ZSgzMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1k
YXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6Mztm
aWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSI1MCIgeT0iMzcuNSIgd2lkdGg9
IjI1IiBoZWlnaHQ9IjEyLjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6
MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAg
ICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA0KTtzdHJva2U6bm9u
ZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDEwKSI+
CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAg
ICAgICA8cmVjdCB4PSIzNy41IiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxl
PSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+
CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUi
IHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1
cmwoI2ZpbHRlcl8xZWZmZWN0XzA1KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8
ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5
PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTAp
O3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNo
YXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIx
Mi41IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxs
LW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIg
LS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA2KTtz
dHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2
MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0i
ZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40
IiAvPgorICAgICAgICA8cmVjdCB4PSIzMS4yNSIgeT0iMzEuMjUiIHdpZHRoPSIxMi41IiBoZWln
aHQ9IjEyLjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAs
MjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA3KTtzdHJva2U6bm9uZTsiLz4KKyAg
ICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCwgMjEwKSI+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0i
MjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAw
LDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAg
IDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJf
MWVmZmVjdF8wOCk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3Jt
PSJ0cmFuc2xhdGUoMTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0
aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRh
c2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVp
Z2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7
ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lk
dGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+Cisg
ICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9
ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA5KTtzdHJva2U6
bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTAsIDIx
MCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAg
ICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmls
bDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAv
PgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5
bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
Lz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVy
OnVybCgjZmlsdGVyXzFlZmZlY3RfMTApO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAg
IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tl
LWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5
PSI1MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVy
IC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMSk7
c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUo
NDEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIv
PgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5
bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5
OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMzcuNSIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWln
aHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Ut
d2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4
PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1
NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAg
PC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTEwLCAyMTApIj4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIy
MCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAs
MjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJl
Y3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAg
ICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0
ZXJfMWVmZmVjdF8xMyk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoNjEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tl
LWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIg
aGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5
OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIg
d2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFj
aXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgor
ICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xNCk7c3Ryb2tl
Om5vbmU7Ii8+CisgICAgPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVy
cy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2
Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9zdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIyNiBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmciIGlkPSJib2R5IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+CisgICAgPGRlZnM+CisgICAg
ICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICAgICoge3N0cm9rZTpibGFjazsgc3Ryb2tl
LXdpZHRoOjAuMjt9CisgICAgICA8L3N0eWxlPgorCisgICAgICAgIDwhLS0gSGllciBtaXQgZmxv
b2Q/IC0tPgorICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMSIgeD0iLTUwJSIg
eT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJp
bWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4
PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4K
KyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MDIiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWln
aHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI3NSUiIC8+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI3NSUiIGhlaWdo
dD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8wMyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAg
ICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4K
KyAgICAgICAgICAgIDxmZU9mZnNldCB3aWR0aD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wNCIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAg
ICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCB5PSIwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iMjUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wNSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAor
ICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5k
aW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgPC9m
aWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDYiIHg9Ii01MCUi
IHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHBy
aW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQg
d2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUi
IHk9IjAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8wNyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAg
ICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4K
KyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWln
aHQ9IjUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSI3
NSUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wOCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAg
ICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjUwJSIgaGVp
Z2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZp
bHRlcl8xZWZmZWN0XzA5IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0i
NzUlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3aWR0aD0iNTAl
IiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBp
ZD0iZmlsdGVyXzFlZmZlY3RfMTAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8Zmls
dGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5n
Qm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+
CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0
XzEyIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZl
T2Zmc2V0IC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUlIiB5PSIyNSUiIHdpZHRoPSI1
MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8xMyIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94
Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjUwJSIgeT0iNTAlIiB3
aWR0aD0iNzUlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9
IjE1MCUiIGhlaWdodD0iMTUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItNTAlIiB5
PSItNTAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4K
KyAgICA8L2RlZnM+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCwgMTApIj4KKyAg
ICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAs
MjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAvPgorCisgICAg
ICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0
ZXJfMWVmZmVjdF8wMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoMTEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2Ut
ZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7
ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lk
dGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5PSI1MCIg
d2lkdGg9IjM3LjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwt
b3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIg
LS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAyKTtz
dHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgy
MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0i
ZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40
IiAvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5
bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
IC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIx
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRl
cjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAg
ICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1k
YXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1v
cGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIzNy41IiB5
PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDQp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDQxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIv
PgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTow
LjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6
MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRo
OjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDAp
O2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA1KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+
CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTAsIDEwKSI+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUw
LDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0i
MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0
cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIw
IiB5PSIwIiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtm
aWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7
ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZp
bHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3Rf
MDYpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNs
YXRlKDYxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhl
aWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1
OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0
eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVp
Z2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tl
LXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iMzcuNSIg
aGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ry
b2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJl
Y3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDcpO3N0cm9rZTpub25lOyIvPgor
ICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAg
IDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDgpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDExMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0
cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0i
NjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hh
cnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEy
LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIzNy41
IiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCww
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBG
aWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0
XzA5KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIg
aGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5
OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYw
IiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9w
YWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI2MCIgaGVp
Z2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tl
LXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhl
aWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAs
MjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEwKTtzdHJva2U6bm9uZTsiLz4KKyAg
ICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDIxMCkiPgorICAgICAg
ICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6
cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9
IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIw
MCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8
cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzExKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zv
cm09InRyYW5zbGF0ZSg0MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2Ut
ZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBo
ZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6
MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3
LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwt
b3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAt
LT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTIpO3N0
cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUx
MCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxl
PSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTow
LjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iMzcuNSIgaGVp
Z2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMyk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1IiBzdHlsZT0iZmls
bDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAg
ICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMTQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKzwvc3ZnPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31157</attachid>
            <date>2009-06-11 03:17:29 -0700</date>
            <delta_ts>2009-06-12 11:20:14 -0700</delta_ts>
            <desc>subRegion Code</desc>
            <filename>filter-3.patch</filename>
            <type>text/plain</type>
            <size>68530</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYwMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA3IEBACisyMDA5LTA2LTEwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgc3ViUmVnaW9uIGNhbGN1bGF0aW9uIHRvIFNWRyBmaWx0ZXIuIEV2ZXJ5IGZpbHRlciBlZmZl
Y3QgaXMKKyAgICAgICAgY2xpcHBlZCB0byB0aGUgZmlsdGVyIHJlZ2lvbiAoYWNjb3JkaW5nIHRv
IHRoZSBzcGVjKS4gVGhpcyBtYWtlcworICAgICAgICBJbWFnZUJ1ZmZlcnMgZm9yIGZpbHRlciBl
ZmZlY3RzIHNtYWxsZXIgYW5kIHdlIGp1c3QgbmVlZCB0byB0YWtlCisgICAgICAgIGNhcmUgYWJv
dXQgYmlnIGZpbHRlciByZWdpb25zLgorICAgICAgICBTVkdGRUltYWdlIG5lZWRlZCBhIGNvcnJl
Y3Rpb24sIHRvIGF2b2lkIGFuIEFTU0VSVC4gVGhlIHR3byBmaWx0ZXIKKyAgICAgICAgZWZmZWN0
cyBmZU9mZnNldCBhbmQgZmVGbG9vZCBoZWxwIHRvIHRlc3QgdGhlIG5ldyBzdWJSZWdpb24gY29k
ZS4KKworICAgICAgICBUZXN0czogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3Zn
CisgICAgICAgICAgICAgICBzdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RkVCbGVuZDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RkVDb2xvck1hdHJpeDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRTb3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNv
dXJjZUltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0VW5pdGVFZmZlY3RSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6aGFzWCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3Q6OnNldEhhc1gpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNZKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0SGFzWSk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6Omhhc1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6c2V0SGFzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpoYXNIZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNIZWlnaHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRFZmZlY3RCdWZmZXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUFscGhhOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VHcmFwaGljOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlR3JhcGhpYzo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OnByZXBhcmVU
b1JlbmRlclNWR0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6Zmlu
aXNoUmVuZGVyU1ZHQ29udGVudCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1Jlc291cmNlRmlsdGVyOjpwcmVwYXJlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jl
c291cmNlRmlsdGVyOjphcHBseUZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jl
c291cmNlRmlsdGVyLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252
b2x2ZU1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpjYWxj
dWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RURpZmZ1c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGlu
Zzo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxh
Y2VtZW50TWFwOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUZsb29kOjpj
YWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBw
bHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KToKKyAg
ICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWxjdWxh
dGVVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
SW1hZ2UuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGRU1vcnBob2xvZ3k6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6
OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6
YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y2FsY3VsYXRlVW5pdGVFZmZl
Y3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGln
aHRpbmcuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
RVR1cmJ1bGVuY2U6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y2Fs
Y3VsYXRlRWZmZWN0U3ViUmVnaW9uKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6ZWZmZWN0Qm91bmRpbmdC
b3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6ZmlsdGVyUmVnaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c291cmNlSW1hZ2VSZWN0KToKKwogMjAwOS0wNi0x
MCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVCbGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEs
MTUgQEAgdm9pZCBGRUJsZW5kOjpzZXRCbGVuZE1vZGUoQmxlbmRNb2RlVHlwZQogICAgIG1fbW9k
ZSA9IG1vZGU7CiB9CiAKK0Zsb2F0UmVjdCBGRUJsZW5kOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJl
Y3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IG1f
aW4tPmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHVuaXRlRWZmZWN0UmVj
dC51bml0ZShtX2luMi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcikpOworICAgIHNl
dFVuaXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2FsY3VsYXRl
RWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9p
ZCBGRUJsZW5kOjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3
LDcgKzQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEJsZW5kTW9kZVR5cGUg
YmxlbmRNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZVR5
cGUpOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RS
ZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lk
IGR1bXAoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbG9yTWF0cml4LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYxLDYgKzYxLDE0IEBAIHZvaWQgRkVDb2xvck1hdHJpeDo6c2V0VmFsdWVzKGNvbnN0IFZlY3QK
ICAgICBtX3ZhbHVlcyA9IHZhbHVlczsKIH0KIAorRmxvYXRSZWN0IEZFQ29sb3JNYXRyaXg6OmNh
bGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3Qg
dW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7
CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5j
YWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOwor
fQorCiB2b2lkIEZFQ29sb3JNYXRyaXg6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJl
dmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29s
b3JNYXRyaXguaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICAgICAgY29uc3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICAgICAgCisK
KyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21w
b25lbnRUcmFuc2Zlci5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NSw2ICs4NSwxNCBAQCB2b2lkIEZFQ29tcG9uZW50VHJhbnNmZXI6OnNldEFscGhhRnVuY3Rp
CiAgICAgbV9hbHBoYUZ1bmMgPSBmdW5jOwogfQogCitGbG9hdFJlY3QgRkVDb21wb25lbnRUcmFu
c2Zlcjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZs
b2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3Qo
ZmlsdGVyKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBm
aWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVn
aW9uKCk7Cit9CisKIHZvaWQgRkVDb21wb25lbnRUcmFuc2Zlcjo6YXBwbHkoRmlsdGVyKikKIHsK
IH0KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRy
YW5zZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9uZW50VHJhbnNmZXIuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OCw3ICs3OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uIGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBz
ZXRBbHBoYUZ1bmN0aW9uKGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLSAgICAg
ICAgCisKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIq
KTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9z
aXRlLmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5NywxNSBAQCB2
b2lkIEZFQ29tcG9zaXRlOjpzZXRLNChmbG9hdCBrNCkKICAgICBtX2s0ID0gazQ7CiB9CiAKK0Zs
b2F0UmVjdCBGRUNvbXBvc2l0ZTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmls
dGVyKQoreworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVV
bml0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKyAgICB1bml0ZUVmZmVjdFJlY3QudW5pdGUobV9pbjIt
PmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJl
Y3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lv
bih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVDb21wb3NpdGU6
OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb21wb3NpdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgZmxvYXQgazQoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRLNChmbG9hdCk7Ci0gICAgICAgIAorCisgICAgICAgIEZs
b2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
YXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogCkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjEsNyArMjEsOCBAQAogI2RlZmluZSBGaWx0ZXJfaAogCiAjaWYgRU5BQkxFKEZJTFRFUlMp
Ci0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJ
bWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CkBAIC0zNiwxMyArMzcsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+RmlsdGVyKCkgeyB9CiAKLSAgICAgICAgdm9pZCBz
ZXRTb3VyY2VJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7
IH0KLSAgICAgICAgSW1hZ2UqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsg
fQorICAgICAgICB2b2lkIHNldFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IHNv
dXJjZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQorICAgICAgICBJbWFn
ZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAK
KyAgICAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc291cmNlSW1hZ2VSZWN0KCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSA9IDA7CisKKyAgICAgICAgLy8gU1ZH
IHNwZWNpZmljCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24o
RmlsdGVyRWZmZWN0KikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgZWZmZWN0Qm91bmRpbmdC
b3hNb2RlKCkgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEltYWdlPiBtX2lt
YWdlOworICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CiAgICAgfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDEwIEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KCkK
ICAgICAsIG1feUJCb3hNb2RlKGZhbHNlKQogICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQog
ICAgICwgbV9oZWlnaHRCQm94TW9kZShmYWxzZSkKKyAgICAsIG1faGFzWChmYWxzZSkKKyAgICAs
IG1faGFzWShmYWxzZSkKKyAgICAsIG1faGFzV2lkdGgoZmFsc2UpCisgICAgLCBtX2hhc0hlaWdo
dChmYWxzZSkKIHsKIH0KIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKIAorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQ4LDEzICs0OSwyOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9oZWlnaHRCQm94TW9kZTsgfQogICAgICAgICB2b2lkIHNldEhlaWdo
dEJvdW5kaW5nQm94TW9kZShib29sIGJib3hNb2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94
TW9kZTsgfQogCisgICAgICAgIHZvaWQgc2V0VW5pdGVFZmZlY3RSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgdW5pdGVSZWN0KSB7IG1fdW5pdGVFZmZlY3RSZWN0ID0gdW5pdGVSZWN0OyB9CisgICAgICAg
IEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3VuaXRlRWZmZWN0
UmVjdDsgfQorCiAgICAgICAgIEZsb2F0UmVjdCBzdWJSZWdpb24oKSBjb25zdCB7IHJldHVybiBt
X3N1YlJlZ2lvbjsgfQogICAgICAgICB2b2lkIHNldFN1YlJlZ2lvbihjb25zdCBGbG9hdFJlY3Qm
IHN1YlJlZ2lvbikgeyBtX3N1YlJlZ2lvbiA9IHN1YlJlZ2lvbjsgfQogCisgICAgICAgIGJvb2wg
aGFzWCgpIHsgcmV0dXJuIG1faGFzWDsgfQorICAgICAgICB2b2lkIHNldEhhc1goYm9vbCB2YWx1
ZSkgeyBtX2hhc1ggPSB2YWx1ZTsgfQorCisgICAgICAgIGJvb2wgaGFzWSgpIHsgcmV0dXJuIG1f
aGFzWTsgfQorICAgICAgICB2b2lkIHNldEhhc1koYm9vbCB2YWx1ZSkgeyBtX2hhc1kgPSB2YWx1
ZTsgfQorCisgICAgICAgIGJvb2wgaGFzV2lkdGgoKSB7IHJldHVybiBtX2hhc1dpZHRoOyB9Cisg
ICAgICAgIHZvaWQgc2V0SGFzV2lkdGgoYm9vbCB2YWx1ZSkgeyBtX2hhc1dpZHRoID0gdmFsdWU7
IH0KKworICAgICAgICBib29sIGhhc0hlaWdodCgpIHsgcmV0dXJuIG1faGFzSGVpZ2h0OyB9Cisg
ICAgICAgIHZvaWQgc2V0SGFzSGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2YWx1
ZTsgfQorCiAgICAgICAgIC8vIFRoZSByZXN1bHQgaXMgYm91bmRlZCBieSB0aGUgc2l6ZSBvZiB0
aGUgZmlsdGVyIHByaW1pdGl2ZSB0byBzYXZlIHJlc291cmNlcwogICAgICAgICBJbWFnZUJ1ZmZl
ciogcmVzdWx0SW1hZ2UoKSB7IHJldHVybiBtX2VmZmVjdEJ1ZmZlci5nZXQoKTsgfQotICAgICAg
ICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihJbWFnZUJ1ZmZlciogZWZmZWN0QnVmZmVyKSB7IG1fZWZm
ZWN0QnVmZmVyLnNldChlZmZlY3RCdWZmZXIpOyB9CisgICAgICAgIHZvaWQgc2V0RWZmZWN0QnVm
ZmVyKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVjdEJ1ZmZl
ciA9IGVmZmVjdEJ1ZmZlcjsgfQogCisgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGNhbGN1bGF0
ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhcHBs
eShGaWx0ZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkdW1wKCkgPSAwOwogCkBAIC02
OSw3ICs4NiwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV93aWR0aEJC
b3hNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX2hlaWdodEJCb3hNb2RlIDogMTsKIAorICAgICAg
ICBib29sIG1faGFzWCA6IDE7CisgICAgICAgIGJvb2wgbV9oYXNZIDogMTsKKyAgICAgICAgYm9v
bCBtX2hhc1dpZHRoIDogMTsKKyAgICAgICAgYm9vbCBtX2hhc0hlaWdodCA6IDE7CisKICAgICAg
ICAgRmxvYXRSZWN0IG1fc3ViUmVnaW9uOworICAgICAgICBGbG9hdFJlY3QgbV91bml0ZUVmZmVj
dFJlY3Q7CiAKICAgICAgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fZWZmZWN0QnVm
ZmVyOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291
cmNlQWxwaGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0
cmluZyYgZWZmZWN0TmFtZSgpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVm
ZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGZpbHRlci0+c291cmNlSW1hZ2VSZWN0
KCk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7
CiAgICAgCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1NvdXJjZUdyYXBoaWMuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
OCArNDEsMjkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlYwogICAg
IHJldHVybiBzX2VmZmVjdE5hbWU7CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6YXBwbHkoRmls
dGVyKikKK0Zsb2F0UmVjdCBTb3VyY2VHcmFwaGljOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3Qo
RmlsdGVyKiBmaWx0ZXIpCiB7CisgICAgRmxvYXRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gZmls
dGVyLT5zb3VyY2VJbWFnZVJlY3QoKTsKKyAgICBpZiAoZmlsdGVyLT5zb3VyY2VJbWFnZVJlY3Qo
KS54KCkgPCBmaWx0ZXItPmZpbHRlclJlZ2lvbigpLngoKSkKKyAgICAgICAgY2xpcHBlZFNvdXJj
ZVJlY3Quc2V0WChmaWx0ZXItPmZpbHRlclJlZ2lvbigpLngoKSk7CisgICAgaWYgKGZpbHRlci0+
c291cmNlSW1hZ2VSZWN0KCkueSgpIDwgZmlsdGVyLT5maWx0ZXJSZWdpb24oKS55KCkpCisgICAg
ICAgIGNsaXBwZWRTb3VyY2VSZWN0LnNldFkoZmlsdGVyLT5maWx0ZXJSZWdpb24oKS55KCkpOwor
ICAgIHNldFN1YlJlZ2lvbihjbGlwcGVkU291cmNlUmVjdCk7CisgICAgcmV0dXJuIGZpbHRlci0+
ZmlsdGVyUmVnaW9uKCk7Cit9CisKK3ZvaWQgU291cmNlR3JhcGhpYzo6YXBwbHkoRmlsdGVyKiBm
aWx0ZXIpCit7CisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6ZShzdWJSZWdpb24oKS53
aWR0aCgpLCBzdWJSZWdpb24oKS5oZWlnaHQoKSk7CisgICAgT3duUHRyPEltYWdlQnVmZmVyPiBm
aWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6ZSwgZmFsc2UpKTsKKwor
ICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3Jh
cGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOwor
ICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZShmaWx0ZXItPnNvdXJjZUltYWdlKCktPmltYWdl
KCksIEludFBvaW50KDAsIDApKTsKKworICAgIHNldEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGlj
LnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgU291cmNlR3JhcGhpYzo6ZHVtcCgpCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHJl
dmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJj
ZUdyYXBoaWMuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQAogI2lmIEVOQUJMRShG
SUxURVJTKQogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogCi0jaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGVmZmVjdE5hbWUo
KTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciop
OwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAg
ICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA0
NDQyMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9S
ZW5kZXJTVkdDbwogI2lmIEVOQUJMRShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKICAgICAg
ICAgZmlsdGVyLT5hZGRDbGllbnQoc3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGZpbHRlci0+cHJl
cGFyZUZpbHRlcihwYWludEluZm8uY29udGV4dCwgb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgp
KTsKKyAgICAgICAgZmlsdGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmpl
Y3QpOwogICAgIH0gZWxzZSBpZiAoIWZpbHRlcklkLmlzRW1wdHkoKSkKICAgICAgICAgc3ZnRWxl
bWVudC0+ZG9jdW1lbnQoKS0+YWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3Vy
Y2UoZmlsdGVySWQsIHN0eWxlZEVsZW1lbnQpOwogI2VuZGlmCkBAIC0xNTIsNyArMTUyLDcgQEAg
dm9pZCBTVkdSZW5kZXJCYXNlOjpmaW5pc2hSZW5kZXJTVkdDb250ZQogCiAjaWYgRU5BQkxFKEZJ
TFRFUlMpCiAgICAgaWYgKGZpbHRlcikgewotICAgICAgICBmaWx0ZXItPmFwcGx5RmlsdGVyKHBh
aW50SW5mby5jb250ZXh0LCBvYmplY3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOworICAgICAgICBm
aWx0ZXItPmFwcGx5RmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmplY3QpOwogICAgICAgICBw
YWludEluZm8uY29udGV4dCA9IHNhdmVkQ29udGV4dDsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
LmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxNSBAQCB2
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlCiAKICAgICBmbG9hdCBfeCwg
X3ksIF93aWR0aCwgX2hlaWdodDsKIAorICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFt
ZXM6OnhBdHRyKSkKKyAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIYXNYKHRydWUpOworICAgIGlm
ICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnlBdHRyKSkKKyAgICAgICAgZmlsdGVyRWZm
ZWN0LT5zZXRIYXNZKHRydWUpOworICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6
OndpZHRoQXR0cikpCisgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFzV2lkdGgodHJ1ZSk7Cisg
ICAgaWYgKHRoaXMtPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0cikpCisgICAgICAg
IGZpbHRlckVmZmVjdC0+c2V0SGFzSGVpZ2h0KHRydWUpOworCiAgICAgaWYgKHJlc291cmNlRmls
dGVyLT5lZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgewogICAgICAgICBfeCA9IHgoKS52YWx1ZUFz
UGVyY2VudGFnZSgpOwogICAgICAgICBfeSA9IHkoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24g
NDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY2LDUwICs2Niw2MCBAQCBGbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0
ZXI6OmZpbHRlckJCb3hGCiAgICAgcmV0dXJuIGZpbHRlckJCb3g7CiB9CiAKLXZvaWQgU1ZHUmVz
b3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiBpdGVtUmVjdCkKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVG
aWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiB7CisgICAgbV9pdGVtQkJveCA9IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKKyAg
ICBtX2ZpbHRlckJCb3ggPSBmaWx0ZXJCQm94Rm9ySXRlbUJCb3gobV9pdGVtQkJveCk7CisKKyAg
ICAvLyBjbGlwIHNvdXJjZUltYWdlIHRvIGZpbHRlclJlZ2lvbgorICAgIEZsb2F0UmVjdCBjbGlw
cGVkU291cmNlUmVjdCA9IG1faXRlbUJCb3g7CisgICAgY2xpcHBlZFNvdXJjZVJlY3QuaW50ZXJz
ZWN0KG1fZmlsdGVyQkJveCk7CisKKyAgICAvLyBwcmVwYXJlIEZpbHRlcnMKKyAgICBtX2ZpbHRl
ciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKG1faXRlbUJCb3gsIG1fZmlsdGVyQkJveCwgbV9lZmZlY3RC
Qm94TW9kZSwgbV9maWx0ZXJCQm94TW9kZSk7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZl
Y3QgPSBtX2ZpbHRlckJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKKyAgICBpZiAobGFzdEVmZmVjdCkK
KyAgICAgICAgbGFzdEVmZmVjdC0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KG1fZmlsdGVyLmdl
dCgpKTsKKwogICAgIC8vIERyYXcgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBh
bmQgaXQncyBjaGlsZHMgdG8gYSBpbWFnZUJ1ZmZlciB0byBnZXQgdGhlIFNvdXJjZUdyYXBoaWMu
Ci0gICAgLy8gVGhlIHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgbXVzdCBtYXRjaCB0aGUgc2l6
ZSBvZiB0aGUgZWxlbWVudCwgdGhlIGZpbHRlciBpcyBhcGxpZWQgdG8uCi0gICAgSW50U2l6ZSBi
dWZmZXJTaXplID0gSW50U2l6ZShpdGVtUmVjdC53aWR0aCgpLCBpdGVtUmVjdC5oZWlnaHQoKSk7
CisgICAgLy8gVGhlIHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgbXVzdCBtYXRjaCB0aGUgc2l6
ZSBvZiB0aGUgZWxlbWVudCwgdGhlIGZpbHRlciBpcyBhcHBsaWVkIHRvLgorICAgIEludFNpemUg
YnVmZmVyU2l6ZSA9IEludFNpemUoY2xpcHBlZFNvdXJjZVJlY3Qud2lkdGgoKSwgY2xpcHBlZFNv
dXJjZVJlY3QuaGVpZ2h0KCkpOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhp
YyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CiAgICAgCiAgICAgaWYg
KCFzb3VyY2VHcmFwaGljLmdldCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0Nv
bnRleHQqIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4dCgpOwot
ICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT50cmFuc2xhdGUoLWl0ZW1SZWN0LngoKSwgLWl0ZW1S
ZWN0LnkoKSk7Ci0gICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJlY3Qo
MCwgMCwgaXRlbVJlY3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBzb3VyY2VH
cmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKC1tX2l0ZW1CQm94LngoKSwgLW1faXRlbUJCb3gueSgp
KTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdCgwLCAwLCBt
X2l0ZW1CQm94LndpZHRoKCksIG1faXRlbUJCb3guaGVpZ2h0KCkpKTsKICAgICBtX3NvdXJjZUdy
YXBoaWNCdWZmZXIuc2V0KHNvdXJjZUdyYXBoaWMucmVsZWFzZSgpKTsKICAgICBtX3NhdmVkQ29u
dGV4dCA9IGNvbnRleHQ7CiAKICAgICBjb250ZXh0ID0gc291cmNlR3JhcGhpY0NvbnRleHQ7CiB9
CiAKLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dCom
IGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgaXRlbVJlY3QpCit2b2lkIFNWR1Jlc291cmNlRmls
dGVyOjphcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJP
YmplY3QqIG9iamVjdCkKIHsKICAgICBpZiAoIW1fc2F2ZWRDb250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBGbG9hdFJlY3QgZmlsdGVyUmVjdCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChp
dGVtUmVjdCk7Ci0KLSAgICBzZXRGaWx0ZXJCb3VuZGluZ0JveChmaWx0ZXJSZWN0KTsKLSAgICBz
ZXRJdGVtQm91bmRpbmdCb3goaXRlbVJlY3QpOwotCiAgICAgY29udGV4dCA9IG1fc2F2ZWRDb250
ZXh0OwogICAgIG1fc2F2ZWRDb250ZXh0ID0gMDsKIAogICAgIEZpbHRlckVmZmVjdCogbGFzdEVm
ZmVjdCA9IG1fZmlsdGVyQnVpbGRlci0+bGFzdEVmZmVjdCgpOwogCi0gICAgaWYgKGxhc3RFZmZl
Y3QgJiYgIWZpbHRlclJlY3QuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFJlZlB0cjxGaWx0ZXI+IGZp
bHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKG1faXRlbUJCb3gsIG1fZmlsdGVyQkJveCwgbV9lZmZl
Y3RCQm94TW9kZSwgbV9maWx0ZXJCQm94TW9kZSk7Ci0gICAgICAgIGZpbHRlci0+c2V0U291cmNl
SW1hZ2UobV9zb3VyY2VHcmFwaGljQnVmZmVyLT5pbWFnZSgpKTsKLSAgICAgICAgbGFzdEVmZmVj
dC0+YXBwbHkoZmlsdGVyLmdldCgpKTsKLQotICAgICAgICBjb250ZXh0LT5jbGlwKGZpbHRlclJl
Y3QpOwotCi0gICAgICAgIGlmIChsYXN0RWZmZWN0LT5yZXN1bHRJbWFnZSgpKQotICAgICAgICAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGxhc3RFZmZlY3QtPnJlc3VsdEltYWdlKCktPmltYWdlKCks
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpKTsK
KyAgICBpZiAobGFzdEVmZmVjdCAmJiAhbV9maWx0ZXJCQm94LmlzRW1wdHkoKSkgeworICAgICAg
ICBtX2ZpbHRlci0+c2V0U291cmNlSW1hZ2UobV9zb3VyY2VHcmFwaGljQnVmZmVyLnJlbGVhc2Uo
KSk7CisgICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KG1fZmlsdGVyLmdldCgpKTsKKworICAgICAg
ICAvLyBDbGlwIHRoZSBmaWx0ZXJFZmZlY3RzIHRvIHRoZSBmaWx0ZXIgcmVnaW9uCisgICAgICAg
IEZsb2F0UmVjdCBkcmF3aW5nUmVjdCA9IG1fZmlsdGVyQkJveDsKKyAgICAgICAgZHJhd2luZ1Jl
Y3QuaW50ZXJzZWN0KGxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpKTsKKworICAgICAgICBjb250ZXh0
LT5jbGlwKG1fZmlsdGVyQkJveCk7CisgICAgICAgIGlmIChsYXN0RWZmZWN0LT5yZXN1bHRJbWFn
ZSgpICYmICFkcmF3aW5nUmVjdC5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250ZXh0LT5kcmF3
SW1hZ2UobGFzdEVmZmVjdC0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwgbGFzdEVmZmVjdC0+c3Vi
UmVnaW9uKCkpOwogICAgIH0KIAogICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCShyZXZpc2lvbiA0
NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDggKzc2LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
KSBjb25zdDsKIAotICAgIHZvaWQgcHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29u
c3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBhcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4
dComLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGx5RmlsdGVyKEdyYXBoaWNz
Q29udGV4dComLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIHZvaWQgYWRkRmlsdGVyRWZm
ZWN0KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyosIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0Pik7CiAKQEAgLTk3LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U1ZH
RmlsdGVyQnVpbGRlcj4gbV9maWx0ZXJCdWlsZGVyOwogICAgIEdyYXBoaWNzQ29udGV4dCogbV9z
YXZlZENvbnRleHQ7CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUdyYXBoaWNCdWZm
ZXI7CisgICAgUmVmUHRyPEZpbHRlcj4gbV9maWx0ZXI7CiB9OwogCiBTVkdSZXNvdXJjZUZpbHRl
ciogZ2V0RmlsdGVyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOwpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVDb252b2x2ZU1hdHJpeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsMTUg
QEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpzZXRQcmVzZXJ2ZUFscGhhKAogICAgIG1fcHJlc2Vy
dmVBbHBoYSA9IHByZXNlcnZlQWxwaGE7IAogfQogCitGbG9hdFJlY3QgRkVDb252b2x2ZU1hdHJp
eDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0
UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmls
dGVyKTsKKyAgICB1bml0ZUVmZmVjdFJlY3QudW5pdGUobV9pbjItPmNhbGN1bGF0ZVVuaXRlRWZm
ZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0
KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1
cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVDb252b2x2ZU1hdHJpeDo6YXBwbHkoRmlsdGVy
KikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2
ZU1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVDb252b2x2ZU1hdHJpeC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2
ICs2OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwcmVzZXJ2ZUFscGhh
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJlc2VydmVBbHBoYShib29sKTsKIAorICAgICAg
ICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2
b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0
cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4
OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxp
Z2h0aW5nLmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzEx
MywxNCBAQCB2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodFNvdXJjZShMCiAgICAgbV9s
aWdodFNvdXJjZSA9IGxpZ2h0U291cmNlOwogfQogCitGbG9hdFJlY3QgRkVEaWZmdXNlTGlnaHRp
bmc6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9h
dFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZp
bHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmls
dGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lv
bigpOworfQorCiB2b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjphcHBseShGaWx0ZXIqKQogewogfQpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaWZmdXNl
TGlnaHRpbmcuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRT
b3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdodFNvdXJjZSop
OwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAg
ICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1l
bnRNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaXNwbGFjZW1lbnRNYXAuY3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NSw2ICs3NSwxNSBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpzZXRTY2FsZShmbG9hdCBz
CiAgICAgbV9zY2FsZSA9IHNjYWxlOwogfQogCitGbG9hdFJlY3QgRkVEaXNwbGFjZW1lbnRNYXA6
OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJl
Y3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRl
cik7CisgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKG1faW4yLT5jYWxjdWxhdGVVbml0ZUVmZmVj
dFJlY3QoZmlsdGVyKSk7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVjdCk7
CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJu
IHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjphcHBseShGaWx0ZXIq
KQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNl
bWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzY2FsZSgpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsKIAorICAgICAgICB2b2lk
IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdCgpOworCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxh
dGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
LDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBOaWtv
bGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAgICAgICAgICAgIDIwMDUg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAgICAgICAgIDIwMDkgRGly
ayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDcg
KzI0LDkgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUg
IlNWR0ZFRmxvb2QuaCIKKwogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjEsOCArNjQsMjYgQEAgdm9pZCBGRUZsb29kOjpzZXRGbG9vZE9wYWNp
dHkoZmxvYXQgZmxvbwogICAgIG1fZmxvb2RPcGFjaXR5ID0gZmxvb2RPcGFjaXR5OwogfQogCitG
bG9hdFJlY3QgRkVGbG9vZDo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVy
KQoreworICAgIHNldFVuaXRlRWZmZWN0UmVjdChmaWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAg
ICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3Vi
UmVnaW9uKCk7Cit9CisKIHZvaWQgRkVGbG9vZDo6YXBwbHkoRmlsdGVyKikKIHsKKyAgICBJbnRT
aXplIGJ1ZmZlclNpemUgPSBJbnRTaXplKHN1YlJlZ2lvbigpLndpZHRoKCksIHN1YlJlZ2lvbigp
LmhlaWdodCgpKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShidWZmZXJTaXplLCBmYWxzZSkpOworCisgICAgaWYgKCFmaWx0ZXJHcmFw
aGljLmdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2xvciBjb2xvciA9IENvbG9yKGNv
bG9yV2l0aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigpLnJnYigpLCBmbG9vZE9wYWNpdHkoKSkp
OworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVyQ29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNv
bnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5maWxsUmVjdChGbG9hdFJlY3QoMC5mLCAwLmYs
IHN1YlJlZ2lvbigpLndpZHRoKCksIHN1YlJlZ2lvbigpLmhlaWdodCgpKSwgY29sb3IpOworCisg
ICAgc2V0RWZmZWN0QnVmZmVyKGZpbHRlckdyYXBoaWMucmVsZWFzZSgpKTsKIH0KIAogdm9pZCBG
RUZsb29kOjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVG
bG9vZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVG
bG9vZC5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZmxvb2RPcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgc2V0Rmxvb2RPcGFjaXR5KGZsb2F0KTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRl
VW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwog
ICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAkocmV2aXNpb24gNDQ0MjMp
CisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTQgQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6c2V0
U3RkRGV2aWF0aW9uWShmbAogICAgIG1feSA9IHk7CiB9CiAKK0Zsb2F0UmVjdCBGRUdhdXNzaWFu
Qmx1cjo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZs
b2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3Qo
ZmlsdGVyKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICBm
aWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVn
aW9uKCk7Cit9CisKIHZvaWQgRkVHYXVzc2lhbkJsdXI6OmFwcGx5KEZpbHRlciopCiB7CiB9Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1
ci5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHN0ZERldmlhdGlvblkoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRTdGREZXZpYXRpb25ZKGZsb2F0KTsKIAorICAgICAgICBGbG9hdFJlY3QgY2Fs
Y3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRl
ciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxS
ZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQCBGRUltYWdlOjpGRUltYWdlKENhY2hlZEltYWdlKiBjYWNoZWRJbWFn
CiAgICAgOiBGaWx0ZXJFZmZlY3QoKQogICAgICwgbV9jYWNoZWRJbWFnZShjYWNoZWRJbWFnZSkK
IHsKKyAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAKIFBhc3NSZWZQdHI8
RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlKENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSkKQEAgLTY0
LDYgKzY1LDEzIEBAIHZvaWQgRkVJbWFnZTo6c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UKICAg
ICAgICAgbV9jYWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCitGbG9hdFJlY3QgRkVJ
bWFnZTo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIHNl
dFVuaXRlRWZmZWN0UmVjdChmaWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBmaWx0ZXItPmNh
bGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9
CisKIHZvaWQgRkVJbWFnZTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFnZShDYWNoZWRJ
bWFnZSopOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZl
Y3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2
b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVNZXJnZS5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRU1lcmdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksMjYg
QEAgdm9pZCBGRU1lcmdlOjpzZXRNZXJnZUlucHV0cyhjb25zdCBWZWN0bwogICAgIG1fbWVyZ2VJ
bnB1dHMgPSBtZXJnZUlucHV0czsKIH0KIAorRmxvYXRSZWN0IEZFTWVyZ2U6OmNhbGN1bGF0ZVVu
aXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZl
Y3RSZWN0OworICAgIGlmIChtX21lcmdlSW5wdXRzLmlzRW1wdHkoKSkgeworICAgICAgICBzZXRV
bml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAgICAgICAgc2V0U3ViUmVnaW9uKEZs
b2F0UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworICAgIH0gZWxzZQorICAg
ICAgICB1bml0ZUVmZmVjdFJlY3QgPSBtX21lcmdlSW5wdXRzWzBdLT5jYWxjdWxhdGVVbml0ZUVm
ZmVjdFJlY3QoZmlsdGVyKTsKKworICAgIGlmIChtX21lcmdlSW5wdXRzLnNpemUoKSA+IDEpIHsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBtX21lcmdlSW5wdXRzLnNpemUoKTsgaSsrKQor
ICAgICAgICAgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKG1fbWVyZ2VJbnB1dHNbaV0tPmNhbGN1
bGF0ZVVuaXRlRWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICB9CisKKyAgICBzZXRVbml0ZUVmZmVj
dFJlY3QoZmlsdGVyLT5maWx0ZXJSZWdpb24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZl
Y3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZF
TWVyZ2U6OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVj
dCo+JiBtZXJnZUlucHV0cygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNv
bnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpOwotICAgICAgICAKKworICAg
ICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAg
ICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3ku
Y3BwCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVNb3JwaG9sb2d5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsMTQgQEAgdm9pZCBG
RU1vcnBob2xvZ3k6OnNldFJhZGl1c1koZmxvYXQgcmFkaQogICAgIG1fcmFkaXVzWSA9IHJhZGl1
c1k7CiB9CiAKK0Zsb2F0UmVjdCBGRU1vcnBob2xvZ3k6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVj
dChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9p
bi0+Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RS
ZWN0KHVuaXRlRWZmZWN0UmVjdCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdp
b24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFTW9ycGhvbG9n
eTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVNb3JwaG9sb2d5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgcmFkaXVzWSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldFJhZGl1c1koZmxvYXQpOwogCisgICAgICAgIEZsb2F0
UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBw
bHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCShyZXZpc2lvbiA0NDQy
MykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAgICAgICAg
ICAgICAgICAgIDIwMDUgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KKyAgICAgICAgICAg
ICAgICAgIDIwMDkgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKQEAgLTIzLDggKzI0LDEwIEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklM
VEVSUykKICNpbmNsdWRlICJTVkdGRU9mZnNldC5oIgotI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVB
c1RleHQuaCIKKwogI2luY2x1ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dC5oIgorI2luY2x1ZGUgIlNWR1JlbmRlclRyZWVBc1RleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02MSw4ICs2NCwzNCBAQCB2b2lkIEZFT2Zmc2V0OjpzZXREeShmbG9hdCBkeSkK
ICAgICBtX2R5ID0gZHk7CiB9CiAKLXZvaWQgRkVPZmZzZXQ6OmFwcGx5KEZpbHRlciopCitGbG9h
dFJlY3QgRkVPZmZzZXQ6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikK
K3sKKyAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0ID0gbV9pbi0+Y2FsY3VsYXRlVW5pdGVF
ZmZlY3RSZWN0KGZpbHRlcik7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KHVuaXRlRWZmZWN0UmVj
dCk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0
dXJuIHN1YlJlZ2lvbigpOworfQorCit2b2lkIEZFT2Zmc2V0OjphcHBseShGaWx0ZXIqIGZpbHRl
cikKIHsKKyAgICBtX2luLT5hcHBseShmaWx0ZXIpOworICAgIGlmICghbV9pbi0+cmVzdWx0SW1h
Z2UoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBidWZmZXJTaXplID0gSW50U2l6
ZShzdWJSZWdpb24oKS53aWR0aCgpLCBzdWJSZWdpb24oKS5oZWlnaHQoKSk7CisgICAgT3duUHRy
PEltYWdlQnVmZmVyPiBmaWx0ZXJHcmFwaGljKEltYWdlQnVmZmVyOjpjcmVhdGUoYnVmZmVyU2l6
ZSwgZmFsc2UpKTsKKworICAgIGlmICghZmlsdGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBGbG9hdFJlY3QoZHgoKSArIG1faW4tPnN1
YlJlZ2lvbigpLngoKSAtIHN1YlJlZ2lvbigpLngoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkeSgpICsgbV9pbi0+c3ViUmVnaW9uKCkueSgpIC0gc3ViUmVnaW9uKCkueSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW4tPnN1YlJlZ2lvbigpLndp
ZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbi0+c3ViUmVnaW9u
KCkuaGVpZ2h0KCkpOworCisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmls
dGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRlckNvbnRleHQtPmRyYXdJbWFnZShtX2lu
LT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCBkc3RSZWN0KTsKKyAgICBzZXRFZmZlY3RCdWZmZXIo
ZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIEZFT2Zmc2V0OjpkdW1wKCkKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmgJKHJldmlzaW9u
IDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgZmxvYXQgZHkoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXREeShmbG9hdCk7CiAKKyAgICAg
ICAgRmxvYXRSZWN0IGNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAg
dm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRT
dHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRl
eDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nLmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2
ICsxMjUsMTQgQEAgdm9pZCBGRVNwZWN1bGFyTGlnaHRpbmc6OnNldExpZ2h0U291cmNlKAogICAg
IG1fbGlnaHRTb3VyY2UgPSBsaWdodFNvdXJjZTsKIH0KIAorRmxvYXRSZWN0IEZFU3BlY3VsYXJM
aWdodGluZzo6Y2FsY3VsYXRlVW5pdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAg
IEZsb2F0UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBtX2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJl
Y3QoZmlsdGVyKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RSZWN0KTsKKyAg
ICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3Vi
UmVnaW9uKCk7Cit9CisKIHZvaWQgRkVTcGVjdWxhckxpZ2h0aW5nOjphcHBseShGaWx0ZXIqKQog
ewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGln
aHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
U3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBMaWdodFNvdXJj
ZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNvdXJjZShMaWdo
dFNvdXJjZSopOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3Qo
RmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVt
cCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJl
YW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVU
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZF
VGlsZS5jcHAJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSwxMiBAQAogCiAjaWYg
RU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVUaWxlLmgiCi0j
aW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisj
aW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMzcsNiArNDEsMTQgQEAgUGFzc1JlZlB0cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRl
cgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKGluKSk7CiB9CiAKK0Zsb2F0UmVjdCBG
RVRpbGU6OmNhbGN1bGF0ZVVuaXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikKK3sKKyAgICBt
X2luLT5jYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKyAgICBzZXRVbml0ZUVmZmVj
dFJlY3QoZmlsdGVyLT5maWx0ZXJSZWdpb24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZl
Y3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZF
VGlsZTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVUaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVRpbGUuaAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVGlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEZFVGlsZT4gY3JlYXRlKEZpbHRlckVmZmVjdCopOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxj
dWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVy
Kik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJl
cHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHJldmlzaW9uIDQ0NDIz
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDEzIEBAIHZvaWQgRkVUdXJidWxlbmNlOjpzZXRT
dGl0Y2hUaWxlcyhib29sIHMKICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwogfQogCitGbG9h
dFJlY3QgRkVUdXJidWxlbmNlOjpjYWxjdWxhdGVVbml0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0
ZXIpCit7CisgICAgc2V0VW5pdGVFZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOwor
ICAgIGZpbHRlci0+Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBz
dWJSZWdpb24oKTsKK30KKwogdm9pZCBGRVR1cmJ1bGVuY2U6OmFwcGx5KEZpbHRlciopCiB7CiB9
CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNl
LmgJKHJldmlzaW9uIDQ0NDIzKQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RVR1cmJ1bGVuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIGJvb2wgc3RpdGNoVGlsZXMoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRTdGl0Y2hUaWxlcyhib29sKTsKIAorICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRlVW5p
dGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIq
KTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVw
cmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAkocmV2aXNpb24gNDQ0MjMpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDggKzMzLDQ1IEBAIFNWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgaXQKIHsK
IH0KIAotdm9pZCBTVkdGaWx0ZXI6OmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbihGaWx0ZXJFZmZl
Y3QqKQordm9pZCBTVkdGaWx0ZXI6OmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbihGaWx0ZXJFZmZl
Y3QqIGVmZmVjdCkKIHsKKyAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uQkJveCA9IGVmZmVjdC0+c3Vi
UmVnaW9uKCk7CisgICAgRmxvYXRSZWN0IHVzZUJCb3ggPSBlZmZlY3QtPnVuaXRlRWZmZWN0UmVj
dCgpOworCisgICAgRmxvYXRSZWN0IG5ld1N1YlJlZ2lvbiA9IHN1YlJlZ2lvbkJCb3g7CisKKyAg
ICBpZiAobV9lZmZlY3RCQm94TW9kZSkgeworICAgICAgICBuZXdTdWJSZWdpb24gPSB1c2VCQm94
OworCisgICAgICAgIGlmIChlZmZlY3QtPmhhc1goKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lv
bi5zZXRYKG1faXRlbUJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIG1faXRlbUJveC53aWR0
aCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5oYXNZKCkpCisgICAgICAgICAgICBuZXdTdWJS
ZWdpb24uc2V0WShtX2l0ZW1Cb3gueSgpICsgc3ViUmVnaW9uQkJveC55KCkgKiBtX2l0ZW1Cb3gu
aGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPmhhc1dpZHRoKCkpCisgICAgICAgICAg
ICBuZXdTdWJSZWdpb24uc2V0V2lkdGgoc3ViUmVnaW9uQkJveC53aWR0aCgpICogbV9pdGVtQm94
LndpZHRoKCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPmhhc0hlaWdodCgpKQorICAgICAgICAg
ICAgbmV3U3ViUmVnaW9uLnNldEhlaWdodChzdWJSZWdpb25CQm94LmhlaWdodCgpICogbV9pdGVt
Qm94LmhlaWdodCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZWZmZWN0LT54Qm91bmRp
bmdCb3hNb2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WCh1c2VCQm94LngoKSAr
IHN1YlJlZ2lvbkJCb3gueCgpICogdXNlQkJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZm
ZWN0LT55Qm91bmRpbmdCb3hNb2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WSh1
c2VCQm94LnkoKSArIHN1YlJlZ2lvbkJCb3gueSgpICogdXNlQkJveC5oZWlnaHQoKSk7CisKKyAg
ICAgICAgaWYgKGVmZmVjdC0+d2lkdGhCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5l
d1N1YlJlZ2lvbi5zZXRXaWR0aChzdWJSZWdpb25CQm94LndpZHRoKCkgKiB1c2VCQm94LndpZHRo
KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPmhlaWdodEJvdW5kaW5nQm94TW9kZSgpKQorICAg
ICAgICAgICAgbmV3U3ViUmVnaW9uLnNldEhlaWdodChzdWJSZWdpb25CQm94LmhlaWdodCgpICog
dXNlQkJveC5oZWlnaHQoKSk7CisgICAgfQorCisgICAgLy8gY2xpcCBldmVyeSBmaWx0ZXIgZWZm
ZWN0IHRvIHRoZSBmaWx0ZXIgcmVnaW9uCisgICAgbmV3U3ViUmVnaW9uLmludGVyc2VjdChtX2Zp
bHRlclJlY3QpOworCisgICAgZWZmZWN0LT5zZXRTdWJSZWdpb24obmV3U3ViUmVnaW9uKTsKIH0K
IAogUGFzc1JlZlB0cjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEZsb2F0UmVj
dCYgaXRlbUJveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWN0LCBib29sIGVmZmVjdEJCb3hN
b2RlLCBib29sIGZpbHRlckJCb3hNb2RlKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oCShyZXZpc2lvbiA0NDQyMykKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGJv
b2wsIGJvb2wpOwogCisgICAgICAgIGJvb2wgZWZmZWN0Qm91bmRpbmdCb3hNb2RlKCkgeyByZXR1
cm4gbV9lZmZlY3RCQm94TW9kZTsgfQorCisgICAgICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24o
KSB7IHJldHVybiBtX2ZpbHRlclJlY3Q7IH0KKyAgICAgICAgRmxvYXRSZWN0IHNvdXJjZUltYWdl
UmVjdCgpIHsgcmV0dXJuIG1faXRlbUJveDsgfQogICAgICAgICB2b2lkIGNhbGN1bGF0ZUVmZmVj
dFN1YlJlZ2lvbihGaWx0ZXJFZmZlY3QqKTsKIAogICAgIHByaXZhdGU6CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA0NDYwMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDA5LTA2LTEwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
dGVzdHMgZm9yIHRoZSBuZXcgc3ViUmdpb24tY29kZSBvbiBTVkcgZmlsdGVycy4KKworICAgICAg
ICAqIHN2Zy9maWx0ZXJzOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvZmlsdGVycy9zdWJSZWdpb24t
b25lLWVmZmVjdC5zdmc6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10
d28tZWZmZWN0cy5zdmc6IEFkZGVkLgorCiAyMDA5LTA2LTEwICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3ZnCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi1vbmUtZWZmZWN0LnN2Zwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi1vbmUtZWZm
ZWN0LnN2ZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTcgQEAKKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBpZD0iYm9keSIgd2lkdGg9IjgwMCIgaGVpZ2h0PSI2MDAi
PgorICAgIDxkZWZzPgorICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgICAqIHtz
dHJva2U6YmxhY2s7IHN0cm9rZS13aWR0aDowLjI7fQorICAgICAgPC9zdHlsZT4KKworICAgICAg
ICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9
IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdp
ZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzAyIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0i
MTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2Jq
ZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUi
IHdpZHRoPSI1MCUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAg
ICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9
IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdp
ZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8
ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNCIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEw
MCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUwJSIgd2lk
dGg9IjUwJSIgaGVpZ2h0PSIyNSUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxm
aWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA1IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAw
JSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0
Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3aWR0
aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZp
bHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDYiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAl
IiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RC
b3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lk
dGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDciIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIx
MDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMTIuNSUiIHk9IjEyLjUl
IiB3aWR0aD0iMjUlIiBoZWlnaHQ9IjI1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKworICAg
ICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wOCIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRo
PSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxm
aWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA5IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRp
bmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSI1
MCUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8xMCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94
Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSI1MCUiIGhlaWdo
dD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8xMSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAg
ICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFl
ZmZlY3RfMTIiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iMjUlIiB5PSIyNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgor
ICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8x
MyIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAg
ICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xNCIg
cHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNl
dCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTUwJSIgaGVpZ2h0PSIxNTAlIiAvPgorICAgICAg
ICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgx
MCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgor
ICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQi
IC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41
OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0
ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUs
MTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2Ut
ZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIg
eT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUw
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBG
aWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0
XzAyKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6
NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSIyNSIgaGVpZ2h0
PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUs
MCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDMpO3N0cm9rZTpub25lOyIvPgorICAgIDwv
Zz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMCwgMTApIj4KKyAgICAgICAgPHJl
Y3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigx
NTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5
PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7
c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9
IjUwIiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMTIuNSIgc3R5bGU9ImZpbGw6cmdiKDAs
MCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8
IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFl
ZmZlY3RfMDQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0i
dHJhbnNsYXRlKDQxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hh
cnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwt
b3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3LjUiIHdpZHRoPSIy
NSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7
c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDUpO3N0cm9rZTpub25lOyIv
PgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUxMCwgMTApIj4KKyAg
ICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAs
MjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAg
IDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDYpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDYxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjMxLjI1IiB5PSIzMS4y
NSIgd2lkdGg9IjEyLjUiIGhlaWdodD0iMTIuNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2Zp
bGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDcp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIv
PgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5
bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5
OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0
aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDAp
O2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA4KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+
CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTAsIDIxMCkiPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1
MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5
PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iMjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAg
ICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVy
XzFlZmZlY3RfMDkpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9y
bT0idHJhbnNsYXRlKDIxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1k
YXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhl
aWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheToz
O2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9
IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAu
NDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAg
ICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMCk7c3Ryb2tlOm5vbmU7
Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzEwLCAyMTApIj4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8
cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAg
ICAgICAgPHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisK
KyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwo
I2ZpbHRlcl8xZWZmZWN0XzExKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0
cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtz
dHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9
IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNo
YXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIzNy41IiB5PSIz
Ny41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxs
LW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIg
LS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEyKTtz
dHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1
MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+
CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHls
ZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6
MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13
aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1
LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8
L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MTAsIDIxMCkiPgorICAgICAgICA8
cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdi
KDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIw
IiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwy
MDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVj
dCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNzUiIGhlaWdodD0iNzUiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzE0KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+Cis8L3N2Zz4KSW5kZXg6IExh
eW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLXR3by1lZmZlY3RzLnN2Zwko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZm
ZWN0cy5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjI2IEBACis8c3ZnIHhtbG5zPSJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9ImJvZHkiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAw
Ij4KKyAgICA8ZGVmcz4KKyAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgKiB7
c3Ryb2tlOmJsYWNrOyBzdHJva2Utd2lkdGg6MC4yO30KKyAgICAgIDwvc3R5bGU+CisKKyAgICAg
ICAgPCEtLSBIaWVyIG1pdCBmbG9vZD8gLS0+CisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8x
ZWZmZWN0XzAxIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAg
ICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAw
JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAw
JSIgaGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wMiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAor
ICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5k
aW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0i
NTAlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSI1MCUiIHk9IjUw
JSIgd2lkdGg9Ijc1JSIgaGVpZ2h0PSI3NSUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAg
ICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzAzIiB4PSItNTAlIiB5PSItNTAlIiB3aWR0
aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHdpZHRoPSIxMDAlIiAv
PgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA0IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0i
MTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2Jq
ZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHk9IjAlIiBoZWlnaHQ9IjUw
JSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIyNSUiIC8+CisgICAgICAgIDwvZmlsdGVy
PgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA1IiB4PSItNTAlIiB5PSIt
NTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRp
dmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjAl
IiB5PSIwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wNiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAg
ICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAg
ICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAg
ICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA3IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0
aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRpdmVVbml0cz0i
b2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0y
NSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9
IjAlIiB5PSIwJSIgd2lkdGg9Ijc1JSIvPgorICAgICAgICA8L2ZpbHRlcj4KKworCisgICAgICAg
IDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA4IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91
bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjAlIiB5PSIwJSIgd2lkdGg9IjEw
MCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSIt
MjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAg
ICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDkiIHByaW1pdGl2ZVVuaXRzPSJvYmpl
Y3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIg
d2lkdGg9IjUwJSIgaGVpZ2h0PSI3NSUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUl
IiB5PSIyNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4K
KworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMCIgcHJpbWl0aXZlVW5pdHM9
Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUi
IGhlaWdodD0iNTAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAgICAgIDwvZmls
dGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzExIiBwcmltaXRpdmVV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAg
ICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRl
ciBpZD0iZmlsdGVyXzFlZmZlY3RfMTIiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0Jv
eCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIy
NSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVy
PgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzEzIiBwcmltaXRpdmVVbml0
cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9
Ii0yNSUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZz
ZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI3NSUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8
L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xNCIgcHJpbWl0
aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIt
MjUlIiB5PSItMjUlIiB3aWR0aD0iMTUwJSIgaGVpZ2h0PSIxNTAlIiAvPgorICAgICAgICAgICAg
PGZlT2Zmc2V0IHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIyMDAlIiBoZWlnaHQ9IjIwMCUiIC8+
CisgICAgICAgIDwvZmlsdGVyPgorICAgIDwvZGVmcz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJh
bnNsYXRlKDEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIg
aGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5
OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFj
aXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13
aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1
LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAxKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8
L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMTAsIDEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iMjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iMzcuNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmls
bDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDIpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDIxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTow
LjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAu
NDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmls
bDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDMpO3N0cm9rZTpub25l
OyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMxMCwgMTApIj4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8
cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigy
MDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAg
ICAgIDxyZWN0IHg9IjAiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxs
OnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAg
ICAgIDxyZWN0IHg9IjM3LjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iMjUiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAvPgor
CisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJs
KCNmaWx0ZXJfMWVmZmVjdF8wNCk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcg
dHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtz
dHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFy
cmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFj
aXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDUpO3N0cm9r
ZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUxMCwg
MTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAg
ICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+
CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9
ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAv
PgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6
dXJsKCNmaWx0ZXJfMWVmZmVjdF8wNik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAg
PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIg
eT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUw
KTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFz
aGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0i
MTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyNSIg
eT0iMjUiIHdpZHRoPSIzNy41IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7
ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmls
dGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8w
Nyk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBo
ZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wOCk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJm
aWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+Cisg
ICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5
bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
Lz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVy
OnVybCgjZmlsdGVyXzFlZmZlY3RfMDkpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAg
IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tl
LWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5
PSIyNSIgd2lkdGg9IjYwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIg
eT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2Zp
bGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTAp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDMxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsi
Lz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0
eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0
eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9
IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lk
dGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0
PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUs
MCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTEpO3N0cm9rZTpub25lOyIvPgorICAgIDwv
Zz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQxMCwgMjEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAi
IHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIw
MCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0
IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMzcuNSIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmls
bDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisg
ICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0
aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNm
aWx0ZXJfMWVmZmVjdF8xMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJh
bnNmb3JtPSJ0cmFuc2xhdGUoNTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1
IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ry
b2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2
MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFy
cmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIu
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1v
cGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSI1MCIgeT0i
NTAiIHdpZHRoPSIzNy41IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtm
aWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0
ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEz
KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0
ZSg2MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNzUiIGhl
aWdodD0iNzUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhl
aWdodD0iMTAwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xNCk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorPC9zdmc+Cg==
</data>
<flag name="review"
          id="15884"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31203</attachid>
            <date>2009-06-12 11:20:14 -0700</date>
            <delta_ts>2009-06-12 16:23:48 -0700</delta_ts>
            <desc>subRegion Code</desc>
            <filename>filter-4.patch</filename>
            <type>text/plain</type>
            <size>61625</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYyMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTggQEAKKzIwMDktMDYtMTIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBzdWJSZWdpb24gY2FsY3VsYXRpb24gdG8gU1ZHIGZpbHRlci4gRXZlcnkgZmlsdGVyIGVmZmVj
dCBpcworICAgICAgICBjbGlwcGVkIHRvIHRoZSBmaWx0ZXIgcmVnaW9uIChhY2NvcmRpbmcgdG8g
dGhlIHNwZWMpLiBUaGlzIG1ha2VzCisgICAgICAgIEltYWdlQnVmZmVycyBmb3IgZmlsdGVyIGVm
ZmVjdHMgc21hbGxlciBhbmQgd2UganVzdCBuZWVkIHRvIHRha2UKKyAgICAgICAgY2FyZSBhYm91
dCBiaWcgZmlsdGVyIHJlZ2lvbnMuCisgICAgICAgIFNWR0ZFSW1hZ2UgbmVlZGVkIGEgY29ycmVj
dGlvbiwgdG8gYXZvaWQgYW4gQVNTRVJULiBUaGUgdHdvIGZpbHRlcgorICAgICAgICBlZmZlY3Rz
IGZlT2Zmc2V0IGFuZCBmZUZsb29kIGhlbHAgdG8gdGVzdCB0aGUgbmV3IHN1YlJlZ2lvbiBjb2Rl
LgorCisgICAgICAgIFRlc3RzOiBzdmcvZmlsdGVycy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcK
KyAgICAgICAgICAgICAgIHN2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RkVCbGVuZDo6Y2FsY3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgIChXZWJDb3JlOjpG
RUNvbG9yTWF0cml4OjpjYWxjdWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29tcG9uZW50VHJhbnNmZXI6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFQ29tcG9zaXRlOjpjYWxjdWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzZXRT
b3VyY2VJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OkZpbHRlckVmZmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OmNoaWxkRWZmZWN0c1VuaXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRVbml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0Ojp1bml0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0
OjpoYXNYKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0SGFzWCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc1kpOgorICAgICAgICAoV2ViQ29yZTo6Rmls
dGVyRWZmZWN0OjpzZXRIYXNZKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aGFz
V2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNXaWR0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc0hlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEhhc0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnNldEVmZmVjdEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VBbHBoYS5oOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmNh
bGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VHcmFwaGljOjpjYWxj
dWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmFwcGx5
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlbnQpOgorICAgICAg
ICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRTdGFu
ZGFyZEF0dHJpYnV0ZXMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIpOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFQ29udm9sdmVNYXRyaXg6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgIChXZWJD
b3JlOjpGRURpZmZ1c2VMaWdodGluZzo6Y2FsY3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFRGlzcGxhY2VtZW50TWFwOjpjYWxjdWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUZsb29kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZFRmxvb2Q6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9v
ZDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaDoK
KyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpjYWxj
dWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRU1lcmdlOjpjYWxjdWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmg6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBo
b2xvZ3k6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjphcHBseSk6
CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVPZmZzZXQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFT2Zmc2V0OjpjYWxjdWxhdGVFZmZlY3RSZWN0KToKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkZFU3BlY3VsYXJMaWdodGluZzo6Y2FsY3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICog
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
VGlsZTo6Y2FsY3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVUaWxlLmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJi
dWxlbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6Y2FsY3VsYXRlRWZm
ZWN0UmVjdCk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNl
Lmg6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6Y2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6ZWZmZWN0Qm91bmRpbmdCb3hNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZpbHRlcjo6ZmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6c291
cmNlSW1hZ2VSZWN0KToKKwogMjAwOS0wNi0xMiAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCShyZXZpc2lvbiA0NDYwNCkK
KysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDcgKzQ3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEJs
ZW5kTW9kZVR5cGUgYmxlbmRNb2RlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0QmxlbmRNb2Rl
KEJsZW5kTW9kZVR5cGUpOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRl
RWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gY2hpbGRFZmZlY3RzVW5pdGUoZmls
dGVyLCBtX2luLmdldCgpLCBtX2luMi5nZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0
ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkocmV2aXNpb24gNDQ2MDQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICBjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZXMoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRW
YWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJl
Y3QgY2FsY3VsYXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gY2hpbGRFZmZl
Y3RzVW5pdGUoZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRl
ciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCShyZXZpc2lv
biA0NDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gYWxwaGFGdW5jdGlv
bigpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEFscGhhRnVuY3Rpb24oY29uc3QgQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbiYpOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3Vs
YXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gY2hpbGRFZmZlY3RzVW5pdGUo
ZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGR1bXAoKTsKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFQ29tcG9zaXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGZsb2F0IGs0KCkgY29u
c3Q7CiAgICAgICAgIHZvaWQgc2V0SzQoZmxvYXQpOwotICAgICAgICAKKworICAgICAgICBGbG9h
dFJlY3QgY2FsY3VsYXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gY2hpbGRF
ZmZlY3RzVW5pdGUoZmlsdGVyLCBtX2luLmdldCgpLCBtX2luMi5nZXQoKSk7IH0KICAgICAgICAg
dm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHJldmlzaW9uIDQ0NjA0KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw3ICsyMSw4IEBACiAjZGVmaW5lIEZpbHRlcl9oCiAKICNpZiBFTkFCTEUoRklM
VEVSUykKLSNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1
ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTM2LDEzICszNywxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAotICAgICAgICB2
b2lkIHNldFNvdXJjZUltYWdlKFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKSB7IG1faW1hZ2UgPSBp
bWFnZTsgfQotICAgICAgICBJbWFnZSogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX2ltYWdlLmdl
dCgpOyB9CisgICAgICAgIHZvaWQgc2V0U291cmNlSW1hZ2UoUGFzc093blB0cjxJbWFnZUJ1ZmZl
cj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IHNvdXJjZUltYWdlOyB9CisgICAgICAg
IEltYWdlQnVmZmVyKiBzb3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7
IH0KIAorICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpID0gMDsKKworICAgICAgICAv
LyBTVkcgc3BlY2lmaWMKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUVmZmVjdFN1YlJl
Z2lvbihGaWx0ZXJFZmZlY3QqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBlZmZlY3RCb3Vu
ZGluZ0JveE1vZGUoKSA9IDA7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWZQdHI8SW1hZ2U+
IG1faW1hZ2U7CisgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAkocmV2aXNpb24gNDQ2MDQp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksMTAgQEAgRmlsdGVyRWZmZWN0OjpGaWx0ZXJFZmZl
Y3QoKQogICAgICwgbV95QkJveE1vZGUoZmFsc2UpCiAgICAgLCBtX3dpZHRoQkJveE1vZGUoZmFs
c2UpCiAgICAgLCBtX2hlaWdodEJCb3hNb2RlKGZhbHNlKQorICAgICwgbV9oYXNYKGZhbHNlKQor
ICAgICwgbV9oYXNZKGZhbHNlKQorICAgICwgbV9oYXNXaWR0aChmYWxzZSkKKyAgICAsIG1faGFz
SGVpZ2h0KGZhbHNlKQogewogfQogCkBAIC0zNiw2ICs0MCwyMyBAQCBGaWx0ZXJFZmZlY3Q6On5G
aWx0ZXJFZmZlY3QoKQogewogfQogCitGbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpjaGlsZEVmZmVj
dHNVbml0ZShGaWx0ZXIqIGZpbHRlciwgRmlsdGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBp
bjIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdCA9IGluLT5jYWxjdWxhdGVFZmZl
Y3RSZWN0KGZpbHRlcik7CisgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKGluMi0+Y2FsY3VsYXRl
RWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3QodW5pdGVFZmZlY3RS
ZWN0KTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICBy
ZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKK0Zsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmNoaWxkRWZm
ZWN0c1VuaXRlKEZpbHRlciogZmlsdGVyLCBGaWx0ZXJFZmZlY3QqIGluKQoreworICAgIEZsb2F0
UmVjdCB1bml0ZUVmZmVjdFJlY3QgPSBpbi0+Y2FsY3VsYXRlRWZmZWN0UmVjdChmaWx0ZXIpOwor
ICAgIHNldFVuaXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgIGZpbHRlci0+Y2Fs
Y3VsYXRlRWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30K
KwogVGV4dFN0cmVhbSYgRmlsdGVyRWZmZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdAogewogICAgIHJldHVybiB0czsKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgJKHJldmlzaW9uIDQ0NjA0
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBA
IC00OCwxMyArNDksMzIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGhlaWdo
dEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0QkJveE1vZGU7IH0KICAg
ICAgICAgdm9pZCBzZXRIZWlnaHRCb3VuZGluZ0JveE1vZGUoYm9vbCBiYm94TW9kZSkgeyBtX2hl
aWdodEJCb3hNb2RlID0gYmJveE1vZGU7IH0KIAorICAgICAgICB2b2lkIHNldFVuaXRlRWZmZWN0
UmVjdChjb25zdCBGbG9hdFJlY3QmIHVuaXRlUmVjdCkgeyBtX3VuaXRlRWZmZWN0UmVjdCA9IHVu
aXRlUmVjdDsgfQorICAgICAgICBGbG9hdFJlY3QgdW5pdGVFZmZlY3RSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV91bml0ZUVmZmVjdFJlY3Q7IH0KKwogICAgICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9zdWJSZWdpb247IH0KICAgICAgICAgdm9pZCBzZXRTdWJSZWdp
b24oY29uc3QgRmxvYXRSZWN0JiBzdWJSZWdpb24pIHsgbV9zdWJSZWdpb24gPSBzdWJSZWdpb247
IH0KIAorICAgICAgICBib29sIGhhc1goKSB7IHJldHVybiBtX2hhc1g7IH0KKyAgICAgICAgdm9p
ZCBzZXRIYXNYKGJvb2wgdmFsdWUpIHsgbV9oYXNYID0gdmFsdWU7IH0KKworICAgICAgICBib29s
IGhhc1koKSB7IHJldHVybiBtX2hhc1k7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNZKGJvb2wgdmFs
dWUpIHsgbV9oYXNZID0gdmFsdWU7IH0KKworICAgICAgICBib29sIGhhc1dpZHRoKCkgeyByZXR1
cm4gbV9oYXNXaWR0aDsgfQorICAgICAgICB2b2lkIHNldEhhc1dpZHRoKGJvb2wgdmFsdWUpIHsg
bV9oYXNXaWR0aCA9IHZhbHVlOyB9CisKKyAgICAgICAgYm9vbCBoYXNIZWlnaHQoKSB7IHJldHVy
biBtX2hhc0hlaWdodDsgfQorICAgICAgICB2b2lkIHNldEhhc0hlaWdodChib29sIHZhbHVlKSB7
IG1faGFzSGVpZ2h0ID0gdmFsdWU7IH0KKwogICAgICAgICAvLyBUaGUgcmVzdWx0IGlzIGJvdW5k
ZWQgYnkgdGhlIHNpemUgb2YgdGhlIGZpbHRlciBwcmltaXRpdmUgdG8gc2F2ZSByZXNvdXJjZXMK
ICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlKCkgeyByZXR1cm4gbV9lZmZlY3RCdWZm
ZXIuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBzZXRFZmZlY3RCdWZmZXIoSW1hZ2VCdWZmZXIqIGVm
ZmVjdEJ1ZmZlcikgeyBtX2VmZmVjdEJ1ZmZlci5zZXQoZWZmZWN0QnVmZmVyKTsgfQorICAgICAg
ICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBlZmZlY3RCdWZm
ZXIpIHsgbV9lZmZlY3RCdWZmZXIgPSBlZmZlY3RCdWZmZXI7IH0KKworICAgICAgICBGbG9hdFJl
Y3QgY2hpbGRFZmZlY3RzVW5pdGUoRmlsdGVyKiwgRmlsdGVyRWZmZWN0KiwgRmlsdGVyRWZmZWN0
Kik7CisgICAgICAgIEZsb2F0UmVjdCBjaGlsZEVmZmVjdHNVbml0ZShGaWx0ZXIqLCBGaWx0ZXJF
ZmZlY3QqKTsKIAorICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBjYWxjdWxhdGVFZmZlY3RSZWN0
KEZpbHRlciopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5KEZpbHRlciopID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKQEAgLTY5LDcgKzg5LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dpZHRoQkJveE1vZGUgOiAxOwogICAg
ICAgICBib29sIG1faGVpZ2h0QkJveE1vZGUgOiAxOwogCisgICAgICAgIGJvb2wgbV9oYXNYIDog
MTsKKyAgICAgICAgYm9vbCBtX2hhc1kgOiAxOworICAgICAgICBib29sIG1faGFzV2lkdGggOiAx
OworICAgICAgICBib29sIG1faGFzSGVpZ2h0IDogMTsKKwogICAgICAgICBGbG9hdFJlY3QgbV9z
dWJSZWdpb247CisgICAgICAgIEZsb2F0UmVjdCBtX3VuaXRlRWZmZWN0UmVjdDsKIAogICAgICAg
ICBtdXRhYmxlIE93blB0cjxJbWFnZUJ1ZmZlcj4gbV9lZmZlY3RCdWZmZXI7CiAgICAgfTsKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5o
CShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlZmZlY3ROYW1l
KCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0
ZXIpIHsgcmV0dXJuIGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCk7IH0KICAgICAgICAgdm9pZCBh
cHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCShy
ZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsMjkgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlYwogICAgIHJldHVybiBzX2VmZmVjdE5hbWU7
CiB9CiAKLXZvaWQgU291cmNlR3JhcGhpYzo6YXBwbHkoRmlsdGVyKikKK0Zsb2F0UmVjdCBTb3Vy
Y2VHcmFwaGljOjpjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQogeworICAgIEZs
b2F0UmVjdCBjbGlwcGVkU291cmNlUmVjdCA9IGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCk7Cisg
ICAgaWYgKGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCkueCgpIDwgZmlsdGVyLT5maWx0ZXJSZWdp
b24oKS54KCkpCisgICAgICAgIGNsaXBwZWRTb3VyY2VSZWN0LnNldFgoZmlsdGVyLT5maWx0ZXJS
ZWdpb24oKS54KCkpOworICAgIGlmIChmaWx0ZXItPnNvdXJjZUltYWdlUmVjdCgpLnkoKSA8IGZp
bHRlci0+ZmlsdGVyUmVnaW9uKCkueSgpKQorICAgICAgICBjbGlwcGVkU291cmNlUmVjdC5zZXRZ
KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkueSgpKTsKKyAgICBzZXRTdWJSZWdpb24oY2xpcHBlZFNv
dXJjZVJlY3QpOworICAgIHJldHVybiBmaWx0ZXItPmZpbHRlclJlZ2lvbigpOworfQorCit2b2lk
IFNvdXJjZUdyYXBoaWM6OmFwcGx5KEZpbHRlciogZmlsdGVyKQoreworICAgIEludFJlY3QgYnVm
ZmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3ViUmVnaW9uKCkpOworICAgIE93blB0cjxJbWFn
ZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6
ZSgpLCBmYWxzZSkpOworCisgICAgaWYgKCFmaWx0ZXJHcmFwaGljLmdldCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBHcmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBmaWx0ZXJHcmFw
aGljLT5jb250ZXh0KCk7CisgICAgZmlsdGVyQ29udGV4dC0+ZHJhd0ltYWdlKGZpbHRlci0+c291
cmNlSW1hZ2UoKS0+aW1hZ2UoKSwgSW50UG9pbnQoKSk7CisKKyAgICBzZXRFZmZlY3RCdWZmZXIo
ZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQogCiB2b2lkIFNvdXJjZUdyYXBoaWM6OmR1bXAo
KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5oCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDggKzI0LDggQEAK
ICNpZiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIAotI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNSw2ICszNSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBlZmZlY3ROYW1lKCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJlY3Qo
RmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVt
cCgpOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJl
dmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OnBy
ZXBhcmVUb1JlbmRlclNWR0NvCiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgaWYgKGZpbHRlcikg
ewogICAgICAgICBmaWx0ZXItPmFkZENsaWVudChzdHlsZWRFbGVtZW50KTsKLSAgICAgICAgZmls
dGVyLT5wcmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmplY3QtPm9iamVjdEJvdW5k
aW5nQm94KCkpOworICAgICAgICBmaWx0ZXItPnByZXBhcmVGaWx0ZXIocGFpbnRJbmZvLmNvbnRl
eHQsIG9iamVjdCk7CiAgICAgfSBlbHNlIGlmICghZmlsdGVySWQuaXNFbXB0eSgpKQogICAgICAg
ICBzdmdFbGVtZW50LT5kb2N1bWVudCgpLT5hY2Nlc3NTVkdFeHRlbnNpb25zKCktPmFkZFBlbmRp
bmdSZXNvdXJjZShmaWx0ZXJJZCwgc3R5bGVkRWxlbWVudCk7CiAjZW5kaWYKQEAgLTE1Miw3ICsx
NTIsNyBAQCB2b2lkIFNWR1JlbmRlckJhc2U6OmZpbmlzaFJlbmRlclNWR0NvbnRlCiAKICNpZiBF
TkFCTEUoRklMVEVSUykKICAgICBpZiAoZmlsdGVyKSB7Ci0gICAgICAgIGZpbHRlci0+YXBwbHlG
aWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKSk7Cisg
ICAgICAgIGZpbHRlci0+YXBwbHlGaWx0ZXIocGFpbnRJbmZvLmNvbnRleHQsIG9iamVjdCk7CiAg
ICAgICAgIHBhaW50SW5mby5jb250ZXh0ID0gc2F2ZWRDb250ZXh0OwogICAgIH0KICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5
LDE1IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGUKIAogICAgIGZs
b2F0IF94LCBfeSwgX3dpZHRoLCBfaGVpZ2h0OwogCisgICAgaWYgKHRoaXMtPmhhc0F0dHJpYnV0
ZShTVkdOYW1lczo6eEF0dHIpKQorICAgICAgICBmaWx0ZXJFZmZlY3QtPnNldEhhc1godHJ1ZSk7
CisgICAgaWYgKHRoaXMtPmhhc0F0dHJpYnV0ZShTVkdOYW1lczo6eUF0dHIpKQorICAgICAgICBm
aWx0ZXJFZmZlY3QtPnNldEhhc1kodHJ1ZSk7CisgICAgaWYgKHRoaXMtPmhhc0F0dHJpYnV0ZShT
VkdOYW1lczo6d2lkdGhBdHRyKSkKKyAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIYXNXaWR0aCh0
cnVlKTsKKyAgICBpZiAodGhpcy0+aGFzQXR0cmlidXRlKFNWR05hbWVzOjpoZWlnaHRBdHRyKSkK
KyAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIYXNIZWlnaHQodHJ1ZSk7CisKICAgICBpZiAocmVz
b3VyY2VGaWx0ZXItPmVmZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7CiAgICAgICAgIF94ID0geCgp
LnZhbHVlQXNQZXJjZW50YWdlKCk7CiAgICAgICAgIF95ID0geSgpLnZhbHVlQXNQZXJjZW50YWdl
KCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShy
ZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNTAgKzY2LDU1IEBAIEZsb2F0UmVjdCBTVkdSZXNv
dXJjZUZpbHRlcjo6ZmlsdGVyQkJveEYKICAgICByZXR1cm4gZmlsdGVyQkJveDsKIH0KIAotdm9p
ZCBTVkdSZXNvdXJjZUZpbHRlcjo6cHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIGl0ZW1SZWN0KQordm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6
cHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBjb25zdCBSZW5kZXJPYmpl
Y3QqIG9iamVjdCkKIHsKKyAgICBtX2l0ZW1CQm94ID0gb2JqZWN0LT5vYmplY3RCb3VuZGluZ0Jv
eCgpOworICAgIG1fZmlsdGVyQkJveCA9IGZpbHRlckJCb3hGb3JJdGVtQkJveChtX2l0ZW1CQm94
KTsKKworICAgIC8vIGNsaXAgc291cmNlSW1hZ2UgdG8gZmlsdGVyUmVnaW9uCisgICAgRmxvYXRS
ZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gbV9pdGVtQkJveDsKKyAgICBjbGlwcGVkU291cmNlUmVj
dC5pbnRlcnNlY3QobV9maWx0ZXJCQm94KTsKKworICAgIC8vIHByZXBhcmUgRmlsdGVycworICAg
IG1fZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUobV9pdGVtQkJveCwgbV9maWx0ZXJCQm94LCBt
X2VmZmVjdEJCb3hNb2RlLCBtX2ZpbHRlckJCb3hNb2RlKTsKKworICAgIEZpbHRlckVmZmVjdCog
bGFzdEVmZmVjdCA9IG1fZmlsdGVyQnVpbGRlci0+bGFzdEVmZmVjdCgpOworICAgIGlmIChsYXN0
RWZmZWN0KQorICAgICAgICBsYXN0RWZmZWN0LT5jYWxjdWxhdGVFZmZlY3RSZWN0KG1fZmlsdGVy
LmdldCgpKTsKKwogICAgIC8vIERyYXcgdGhlIGNvbnRlbnQgb2YgdGhlIGN1cnJlbnQgZWxlbWVu
dCBhbmQgaXQncyBjaGlsZHMgdG8gYSBpbWFnZUJ1ZmZlciB0byBnZXQgdGhlIFNvdXJjZUdyYXBo
aWMuCi0gICAgLy8gVGhlIHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgbXVzdCBtYXRjaCB0aGUg
c2l6ZSBvZiB0aGUgZWxlbWVudCwgdGhlIGZpbHRlciBpcyBhcGxpZWQgdG8uCi0gICAgSW50U2l6
ZSBidWZmZXJTaXplID0gSW50U2l6ZShpdGVtUmVjdC53aWR0aCgpLCBpdGVtUmVjdC5oZWlnaHQo
KSk7CisgICAgLy8gVGhlIHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgbXVzdCBtYXRjaCB0aGUg
c2l6ZSBvZiB0aGUgZWxlbWVudCwgdGhlIGZpbHRlciBpcyBhcHBsaWVkIHRvLgorICAgIEludFNp
emUgYnVmZmVyU2l6ZSA9IEludFNpemUoY2xpcHBlZFNvdXJjZVJlY3Qud2lkdGgoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QuaGVpZ2h0KCkpOwogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlR3Jh
cGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7CiAgICAgCiAgICAg
aWYgKCFzb3VyY2VHcmFwaGljLmdldCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGlj
c0NvbnRleHQqIHNvdXJjZUdyYXBoaWNDb250ZXh0ID0gc291cmNlR3JhcGhpYy0+Y29udGV4dCgp
OwotICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT50cmFuc2xhdGUoLWl0ZW1SZWN0LngoKSwgLWl0
ZW1SZWN0LnkoKSk7Ci0gICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChGbG9hdFJl
Y3QoMCwgMCwgaXRlbVJlY3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpKTsKKyAgICBzb3Vy
Y2VHcmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKC1tX2l0ZW1CQm94LngoKSwgLW1faXRlbUJCb3gu
eSgpKTsKKyAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+Y2xlYXJSZWN0KEZsb2F0UmVjdChGbG9h
dFBvaW50KCksIG1faXRlbUJCb3guc2l6ZSgpKSk7CiAgICAgbV9zb3VyY2VHcmFwaGljQnVmZmVy
LnNldChzb3VyY2VHcmFwaGljLnJlbGVhc2UoKSk7CiAgICAgbV9zYXZlZENvbnRleHQgPSBjb250
ZXh0OwogCiAgICAgY29udGV4dCA9IHNvdXJjZUdyYXBoaWNDb250ZXh0OwogfQogCi12b2lkIFNW
R1Jlc291cmNlRmlsdGVyOjphcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiBjb250ZXh0LCBj
b25zdCBGbG9hdFJlY3QmIGl0ZW1SZWN0KQordm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlG
aWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QpCiB7CiAgICAgaWYgKCFtX3NhdmVkQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
RmxvYXRSZWN0IGZpbHRlclJlY3QgPSBmaWx0ZXJCQm94Rm9ySXRlbUJCb3goaXRlbVJlY3QpOwot
Ci0gICAgc2V0RmlsdGVyQm91bmRpbmdCb3goZmlsdGVyUmVjdCk7Ci0gICAgc2V0SXRlbUJvdW5k
aW5nQm94KGl0ZW1SZWN0KTsKLQogICAgIGNvbnRleHQgPSBtX3NhdmVkQ29udGV4dDsKICAgICBt
X3NhdmVkQ29udGV4dCA9IDA7CiAKICAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBtX2Zp
bHRlckJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKIAotICAgIGlmIChsYXN0RWZmZWN0ICYmICFmaWx0
ZXJSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8RmlsdGVyPiBmaWx0ZXIgPSBTVkdG
aWx0ZXI6OmNyZWF0ZShtX2l0ZW1CQm94LCBtX2ZpbHRlckJCb3gsIG1fZWZmZWN0QkJveE1vZGUs
IG1fZmlsdGVyQkJveE1vZGUpOwotICAgICAgICBmaWx0ZXItPnNldFNvdXJjZUltYWdlKG1fc291
cmNlR3JhcGhpY0J1ZmZlci0+aW1hZ2UoKSk7Ci0gICAgICAgIGxhc3RFZmZlY3QtPmFwcGx5KGZp
bHRlci5nZXQoKSk7Ci0KLSAgICAgICAgY29udGV4dC0+Y2xpcChmaWx0ZXJSZWN0KTsKKyAgICBp
ZiAobGFzdEVmZmVjdCAmJiAhbV9maWx0ZXJCQm94LmlzRW1wdHkoKSAmJiAhbGFzdEVmZmVjdC0+
c3ViUmVnaW9uKCkuaXNFbXB0eSgpKSB7CisgICAgICAgIG1fZmlsdGVyLT5zZXRTb3VyY2VJbWFn
ZShtX3NvdXJjZUdyYXBoaWNCdWZmZXIucmVsZWFzZSgpKTsKKyAgICAgICAgbGFzdEVmZmVjdC0+
YXBwbHkobV9maWx0ZXIuZ2V0KCkpOwogCiAgICAgICAgIGlmIChsYXN0RWZmZWN0LT5yZXN1bHRJ
bWFnZSgpKQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGxhc3RFZmZlY3QtPnJlc3Vs
dEltYWdlKCktPmltYWdlKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RFZmZl
Y3QtPnN1YlJlZ2lvbigpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShsYXN0RWZm
ZWN0LT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCBsYXN0RWZmZWN0LT5zdWJSZWdpb24oKSk7CiAg
ICAgfQogCiAgICAgbV9zb3VyY2VHcmFwaGljQnVmZmVyLmNsZWFyKCk7CkluZGV4OiBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTEgKzI5LDEzIEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNzQsOCArNzYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYpIGNvbnN0OwogCi0g
ICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJlY3Qm
KTsKLSAgICB2b2lkIGFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComLCBjb25zdCBGbG9hdFJl
Y3QmKTsKKyAgICB2b2lkIHByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNvbnN0IFJl
bmRlck9iamVjdCopOworICAgIHZvaWQgYXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYsIGNv
bnN0IFJlbmRlck9iamVjdCopOwogCiAgICAgdm9pZCBhZGRGaWx0ZXJFZmZlY3QoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKiwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+KTsK
IApAQCAtOTcsNiArOTksNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxTVkdGaWx0ZXJCdWlsZGVy
PiBtX2ZpbHRlckJ1aWxkZXI7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBtX3NhdmVkQ29udGV4dDsK
ICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlR3JhcGhpY0J1ZmZlcjsKKyAgICBSZWZQ
dHI8RmlsdGVyPiBtX2ZpbHRlcjsKIH07CiAKIFNWR1Jlc291cmNlRmlsdGVyKiBnZXRGaWx0ZXJC
eUlkKERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJik7CkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRyaXguaAkocmV2aXNpb24g
NDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFQ29udm9sdmVNYXRy
aXguaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgcHJlc2VydmVBbHBoYSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBy
ZXNlcnZlQWxwaGEoYm9vbCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJl
Y3QoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGNoaWxkRWZmZWN0c1VuaXRlKGZpbHRlciwgbV9p
bi5nZXQoKSwgbV9pbjIuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAg
ICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nLmgJKHJldmlzaW9uIDQ0NjA0
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpZmZ1c2VMaWdodGluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgY29uc3QgTGlnaHRTb3VyY2UqIGxpZ2h0U291cmNlKCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgc2V0TGlnaHRTb3VyY2UoTGlnaHRTb3VyY2UqKTsKIAorICAgICAgICBGbG9hdFJlY3QgY2Fs
Y3VsYXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gY2hpbGRFZmZlY3RzVW5p
dGUoZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwog
ICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCShyZXZpc2lvbiA0NDYw
NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGZsb2F0IHNjYWxlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U2NhbGUoZmxvYXQg
c2NhbGUpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciog
ZmlsdGVyKSB7IHJldHVybiBjaGlsZEVmZmVjdHNVbml0ZShmaWx0ZXIsIG1faW4uZ2V0KCksIG1f
aW4yLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lk
IGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0
U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVGbG9vZC5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUZsb29kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBC
dWlzIDxidWlzQGtkZS5vcmc+CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3Jp
dEB3ZWJraXQub3JnPgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMyw3ICsyNCw5IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRUZsb29kLmgi
CisKICNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTYxLDggKzY0LDI2IEBAIHZvaWQgRkVGbG9vZDo6c2V0Rmxvb2RPcGFjaXR5KGZsb2F0IGZsb28K
ICAgICBtX2Zsb29kT3BhY2l0eSA9IGZsb29kT3BhY2l0eTsKIH0KIAorRmxvYXRSZWN0IEZFRmxv
b2Q6OmNhbGN1bGF0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgc2V0VW5pdGVF
ZmZlY3RSZWN0KGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOworICAgIGZpbHRlci0+Y2FsY3VsYXRl
RWZmZWN0U3ViUmVnaW9uKHRoaXMpOworICAgIHJldHVybiBzdWJSZWdpb24oKTsKK30KKwogdm9p
ZCBGRUZsb29kOjphcHBseShGaWx0ZXIqKQogeworICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3Qoc3ViUmVnaW9uKCkpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gZmls
dGVyR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBmYWxzZSkp
OworCisgICAgaWYgKCFmaWx0ZXJHcmFwaGljKQorICAgICAgICByZXR1cm47CisKKyAgICBDb2xv
ciBjb2xvciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoZmxvb2RDb2xvcigpLnJnYigpLCBmbG9v
ZE9wYWNpdHkoKSk7CisgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVy
R3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRlckNvbnRleHQtPmZpbGxSZWN0KEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIHN1YlJlZ2lvbigpLnNpemUoKSksIGNvbG9yKTsKKworICAgIHNldEVm
ZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQgRkVGbG9vZDo6
ZHVtcCgpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxvb2QuaAko
cmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRmxv
b2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGZsb2F0IGZsb29kT3BhY2l0eSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEZs
b29kT3BhY2l0eShmbG9hdCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJl
Y3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
ZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVHYXVzc2lhbkJsdXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRUdhdXNzaWFuQmx1ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgc3RkRGV2aWF0
aW9uWSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFN0ZERldmlhdGlvblkoZmxvYXQpOwogCisg
ICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKSB7IHJl
dHVybiBjaGlsZEVmZmVjdHNVbml0ZShmaWx0ZXIsIG1faW4uZ2V0KCkpOyB9CiAgICAgICAgIHZv
aWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3Ry
ZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6
IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAkocmV2aXNpb24g
NDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoQ2FjaGVkSW1h
Z2UqIGNhY2hlZEltYWcKICAgICA6IEZpbHRlckVmZmVjdCgpCiAgICAgLCBtX2NhY2hlZEltYWdl
KGNhY2hlZEltYWdlKQogeworICAgIG1fY2FjaGVkSW1hZ2UtPmFkZENsaWVudCh0aGlzKTsKIH0K
IAogUGFzc1JlZlB0cjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGUoQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKQpAQCAtNjQsNiArNjUsMTMgQEAgdm9pZCBGRUltYWdlOjpzZXRDYWNoZWRJbWFnZShD
YWNoZWRJbWFnZQogICAgICAgICBtX2NhY2hlZEltYWdlLT5hZGRDbGllbnQodGhpcyk7CiB9CiAK
K0Zsb2F0UmVjdCBGRUltYWdlOjpjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQor
eworICAgIHNldFVuaXRlRWZmZWN0UmVjdChmaWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBm
aWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVn
aW9uKCk7Cit9CisKIHZvaWQgRkVJbWFnZTo6YXBwbHkoRmlsdGVyKikKIHsKIH0KSW5kZXg6IFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCShyZXZpc2lvbiA0NDYwNCkK
KysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDYWNo
ZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRDYWNoZWRJbWFn
ZShDYWNoZWRJbWFnZSopOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgY2FsY3VsYXRl
RWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAg
ICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRp
b24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDI0IEBAIHZvaWQgRkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMoY29uc3QgVmVjdG8KICAgICBtX21l
cmdlSW5wdXRzID0gbWVyZ2VJbnB1dHM7CiB9CiAKK0Zsb2F0UmVjdCBGRU1lcmdlOjpjYWxjdWxh
dGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIEZsb2F0UmVjdCB1bml0ZUVmZmVj
dFJlY3Q7CisgICAgaWYgKG1fbWVyZ2VJbnB1dHMuaXNFbXB0eSgpKSB7CisgICAgICAgIHNldFVu
aXRlRWZmZWN0UmVjdCh1bml0ZUVmZmVjdFJlY3QpOworICAgICAgICBzZXRTdWJSZWdpb24oRmxv
YXRSZWN0KCkpOworICAgICAgICByZXR1cm4gc3ViUmVnaW9uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIHVuaXRlRWZmZWN0UmVjdCA9IG1fbWVyZ2VJbnB1dHNbMF0tPmNhbGN1bGF0ZUVmZmVjdFJl
Y3QoZmlsdGVyKTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbV9tZXJnZUlucHV0cy5zaXpl
KCk7IGkrKykKKyAgICAgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKG1fbWVyZ2VJbnB1dHNbaV0t
PmNhbGN1bGF0ZUVmZmVjdFJlY3QoZmlsdGVyKSk7CisKKyAgICBzZXRVbml0ZUVmZmVjdFJlY3Qo
ZmlsdGVyLT5maWx0ZXJSZWdpb24oKSk7CisgICAgZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJS
ZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJlZ2lvbigpOworfQorCiB2b2lkIEZFTWVyZ2U6
OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTWVyZ2UuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFTWVyZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBt
ZXJnZUlucHV0cygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IFZl
Y3RvcjxGaWx0ZXJFZmZlY3QqPiYgbWVyZ2VJbnB1dHMpOwotICAgICAgICAKKworICAgICAgICBG
bG9hdFJlY3QgY2FsY3VsYXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBhcHBs
eShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTW9ycGhvbG9neS5oCShyZXZpc2lvbiA0
NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBmbG9hdCByYWRpdXNZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UmFkaXVzWShmbG9h
dCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0
ZXIpIHsgcmV0dXJuIGNoaWxkRWZmZWN0c1VuaXRlKGZpbHRlciwgbV9pbi5nZXQoKSk7IH0KICAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAg
IFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0
OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHAJ
KHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU9m
ZnNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3Jn
PgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4K
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsOCArMjQsMTAgQEAKIAogI2lmIEVOQUJMRShTVkcp
ICYmIEVOQUJMRShGSUxURVJTKQogI2luY2x1ZGUgIlNWR0ZFT2Zmc2V0LmgiCi0jaW5jbHVkZSAi
U1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgorCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTYxLDggKzY0LDI2IEBAIHZvaWQgRkVPZmZzZXQ6OnNl
dER5KGZsb2F0IGR5KQogICAgIG1fZHkgPSBkeTsKIH0KIAotdm9pZCBGRU9mZnNldDo6YXBwbHko
RmlsdGVyKikKK3ZvaWQgRkVPZmZzZXQ6OmFwcGx5KEZpbHRlciogZmlsdGVyKQogeworICAgIG1f
aW4tPmFwcGx5KGZpbHRlcik7CisgICAgaWYgKCFtX2luLT5yZXN1bHRJbWFnZSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHN1
YlJlZ2lvbigpKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgZmFsc2UpKTsKKworICAgIGlmICghZmls
dGVyR3JhcGhpYykKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IGRzdFJlY3QgPSBG
bG9hdFJlY3QoZHgoKSArIG1faW4tPnN1YlJlZ2lvbigpLngoKSAtIHN1YlJlZ2lvbigpLngoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkeSgpICsgbV9pbi0+c3ViUmVnaW9u
KCkueSgpIC0gc3ViUmVnaW9uKCkueSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1faW4tPnN1YlJlZ2lvbigpLndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9pbi0+c3ViUmVnaW9uKCkuaGVpZ2h0KCkpOworCisgICAgR3JhcGhpY3NDb250
ZXh0KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRl
ckNvbnRleHQtPmRyYXdJbWFnZShtX2luLT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCBkc3RSZWN0
KTsKKyAgICBzZXRFZmZlY3RCdWZmZXIoZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQogCiB2
b2lkIEZFT2Zmc2V0OjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVPZmZzZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFT2Zmc2V0LmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRU9mZnNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZmxvYXQgZHkoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXREeShmbG9hdCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJlY3Qo
RmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIGNoaWxkRWZmZWN0c1VuaXRlKGZpbHRlciwgbV9pbi5n
ZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1w
KCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVh
bSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNw
ZWN1bGFyTGlnaHRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBM
aWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRMaWdodFNv
dXJjZShMaWdodFNvdXJjZSopOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxjdWxhdGVFZmZlY3RS
ZWN0KEZpbHRlciogZmlsdGVyKSB7IHJldHVybiBjaGlsZEVmZmVjdHNVbml0ZShmaWx0ZXIsIG1f
aW4uZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
ZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRT
dHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVGlsZS5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw5IEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNpbmNsdWRlICJTVkdGRVRpbGUuaCIK
LSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisKICNpbmNsdWRlICJGaWx0ZXIuaCIK
KyNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMzcsNiArMzgsMTQgQEAgUGFzc1JlZlB0cjxGRVRpbGU+IEZFVGlsZTo6Y3JlYXRlKEZp
bHRlcgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKGluKSk7CiB9CiAKK0Zsb2F0UmVj
dCBGRVRpbGU6OmNhbGN1bGF0ZUVmZmVjdFJlY3QoRmlsdGVyKiBmaWx0ZXIpCit7CisgICAgbV9p
bi0+Y2FsY3VsYXRlRWZmZWN0UmVjdChmaWx0ZXIpOworICAgIHNldFVuaXRlRWZmZWN0UmVjdChm
aWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBmaWx0ZXItPmNhbGN1bGF0ZUVmZmVjdFN1YlJl
Z2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisKIHZvaWQgRkVUaWxlOjph
cHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGRVRpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFVGlsZS5oCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVUaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RkVUaWxl
PiBjcmVhdGUoRmlsdGVyRWZmZWN0Kik7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVm
ZmVjdFJlY3QoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAg
IHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9u
KFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRkVUdXJidWxlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDYsNiArMTA2LDEzIEBAIHZvaWQgRkVUdXJidWxlbmNlOjpzZXRTdGl0Y2hUaWxlcyhi
b29sIHMKICAgICBtX3N0aXRjaFRpbGVzID0gc3RpdGNoOwogfQogCitGbG9hdFJlY3QgRkVUdXJi
dWxlbmNlOjpjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIHNldFVu
aXRlRWZmZWN0UmVjdChmaWx0ZXItPmZpbHRlclJlZ2lvbigpKTsKKyAgICBmaWx0ZXItPmNhbGN1
bGF0ZUVmZmVjdFN1YlJlZ2lvbih0aGlzKTsKKyAgICByZXR1cm4gc3ViUmVnaW9uKCk7Cit9CisK
IHZvaWQgRkVUdXJidWxlbmNlOjphcHBseShGaWx0ZXIqKQogewogfQpJbmRleDogV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVR1cmJ1bGVuY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVHVyYnVsZW5jZS5oCShyZXZpc2lvbiA0NDYw
NCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUdXJidWxlbmNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIHN0aXRjaFRpbGVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RpdGNoVGlsZXMo
Ym9vbCk7CiAKKyAgICAgICAgRmxvYXRSZWN0IGNhbGN1bGF0ZUVmZmVjdFJlY3QoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAg
ICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBj
b25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJ
KHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw0NSBAQCBTVkdGaWx0ZXI6OlNWR0Zp
bHRlcihjb25zdCBGbG9hdFJlY3QmIGl0CiB7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxh
dGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KikKK3ZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxh
dGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QpCiB7CisgICAgRmxvYXRSZWN0
IHN1YlJlZ2lvbkJCb3ggPSBlZmZlY3QtPnN1YlJlZ2lvbigpOworICAgIEZsb2F0UmVjdCB1c2VC
Qm94ID0gZWZmZWN0LT51bml0ZUVmZmVjdFJlY3QoKTsKKworICAgIEZsb2F0UmVjdCBuZXdTdWJS
ZWdpb24gPSBzdWJSZWdpb25CQm94OworCisgICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpIHsKKyAg
ICAgICAgbmV3U3ViUmVnaW9uID0gdXNlQkJveDsKKworICAgICAgICBpZiAoZWZmZWN0LT5oYXNY
KCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WChtX2l0ZW1Cb3gueCgpICsgc3ViUmVn
aW9uQkJveC54KCkgKiBtX2l0ZW1Cb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+
aGFzWSgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFkobV9pdGVtQm94LnkoKSArIHN1
YlJlZ2lvbkJCb3gueSgpICogbV9pdGVtQm94LmhlaWdodCgpKTsKKworICAgICAgICBpZiAoZWZm
ZWN0LT5oYXNXaWR0aCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJl
Z2lvbkJCb3gud2lkdGgoKSAqIG1faXRlbUJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZm
ZWN0LT5oYXNIZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWlnaHQoc3Vi
UmVnaW9uQkJveC5oZWlnaHQoKSAqIG1faXRlbUJveC5oZWlnaHQoKSk7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaWYgKGVmZmVjdC0+eEJvdW5kaW5nQm94TW9kZSgpKQorICAgICAgICAgICAgbmV3
U3ViUmVnaW9uLnNldFgodXNlQkJveC54KCkgKyBzdWJSZWdpb25CQm94LngoKSAqIHVzZUJCb3gu
d2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+eUJvdW5kaW5nQm94TW9kZSgpKQorICAg
ICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFkodXNlQkJveC55KCkgKyBzdWJSZWdpb25CQm94Lnko
KSAqIHVzZUJCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPndpZHRoQm91bmRp
bmdCb3hNb2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0V2lkdGgoc3ViUmVnaW9u
QkJveC53aWR0aCgpICogdXNlQkJveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5o
ZWlnaHRCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWln
aHQoc3ViUmVnaW9uQkJveC5oZWlnaHQoKSAqIHVzZUJCb3guaGVpZ2h0KCkpOworICAgIH0KKwor
ICAgIC8vIGNsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbgorICAg
IG5ld1N1YlJlZ2lvbi5pbnRlcnNlY3QobV9maWx0ZXJSZWN0KTsKKworICAgIGVmZmVjdC0+c2V0
U3ViUmVnaW9uKG5ld1N1YlJlZ2lvbik7CiB9CiAKIFBhc3NSZWZQdHI8U1ZHRmlsdGVyPiBTVkdG
aWx0ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIGl0ZW1Cb3gsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9kZSwgYm9vbCBmaWx0ZXJCQm94TW9kZSkKSW5k
ZXg6IFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAkocmV2aXNpb24gNDQ2
MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGlj
OgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGaWx0ZXI+IGNyZWF0ZShjb25zdCBGbG9h
dFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBib29sLCBib29sKTsKIAorICAgICAgICBib29sIGVm
ZmVjdEJvdW5kaW5nQm94TW9kZSgpIHsgcmV0dXJuIG1fZWZmZWN0QkJveE1vZGU7IH0KKworICAg
ICAgICBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgeyByZXR1cm4gbV9maWx0ZXJSZWN0OyB9Cisg
ICAgICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSB7IHJldHVybiBtX2l0ZW1Cb3g7IH0K
ICAgICAgICAgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0Kik7CiAK
ICAgICBwcml2YXRlOgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDQ2MjIpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wNi0xMiAgRGly
ayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3RzIGZvciB0aGUgbmV3IHN1YlJnaW9uLWNv
ZGUgb24gU1ZHIGZpbHRlcnMuCisKKyAgICAgICAgKiBzdmcvZmlsdGVyczogQWRkZWQuCisgICAg
ICAgICogc3ZnL2ZpbHRlcnMvc3ViUmVnaW9uLW9uZS1lZmZlY3Quc3ZnOiBBZGRlZC4KKyAgICAg
ICAgKiBzdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnOiBBZGRlZC4KKwogMjAw
OS0wNi0xMSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJl
Z2lvbi1vbmUtZWZmZWN0LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVy
cy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTk3IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9ImJv
ZHkiIHdpZHRoPSI4MDAiIGhlaWdodD0iNjAwIj4KKyAgICA8ZGVmcz4KKyAgICAgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgICAgKiB7c3Ryb2tlOmJsYWNrOyBzdHJva2Utd2lkdGg6MC4y
O30KKyAgICAgIDwvc3R5bGU+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MDEiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWln
aHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgor
ICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8w
MiIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdo
dD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAg
IDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9Ijc1JSIgLz4K
KyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MDMiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWln
aHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAg
ICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDQi
IHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9
IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI1MCUiIGhlaWdodD0iMjUlIiAvPgorICAg
ICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNSIg
eD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0i
MTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxm
ZU9mZnNldCB4PSIyNSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAg
ICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA2IiB4
PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIx
MDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZl
T2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+Cisg
ICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA3
IiB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0
PSIxMDAlIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAg
PGZlT2Zmc2V0IHg9IjEyLjUlIiB5PSIxMi41JSIgd2lkdGg9IjI1JSIgaGVpZ2h0PSIyNSUiIC8+
CisgICAgICAgIDwvZmlsdGVyPgorCisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZl
Y3RfMDgiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAg
ICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wOSIg
cHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNl
dCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAg
PC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTAiIHByaW1p
dGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0i
MCUiIHk9IjAlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+
CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTEiIHByaW1pdGl2ZVVuaXRz
PSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1
MCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisg
ICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzEyIiBwcmltaXRpdmVVbml0cz0ib2Jq
ZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3
aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTMiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9
IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZp
bHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGlu
Z0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjE1
MCUiIGhlaWdodD0iMTUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorCisg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1k
YXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwt
b3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAt
LT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDEpO3N0
cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEx
MCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgor
ICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQi
IC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIz
Ny41IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lk
dGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSww
KTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9n
PgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEwLCAxMCkiPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1
MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9
IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtz
dHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjI1IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUw
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBG
aWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0
XzAzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgzMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6
NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNp
dHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSI1MCIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWln
aHQ9IjEyLjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAs
MjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA0KTtzdHJva2U6bm9uZTsiLz4KKyAg
ICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDEwKSI+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0i
MCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwy
MDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVj
dCB4PSIzNy41IiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzA1KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zv
cm09InRyYW5zbGF0ZSg1MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1k
YXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6Mztm
aWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0
aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6
MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAg
ICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA2KTtzdHJva2U6bm9u
ZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MTAsIDEwKSI+
CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAg
ICAgICA8cmVjdCB4PSIzMS4yNSIgeT0iMzEuMjUiIHdpZHRoPSIxMi41IiBoZWlnaHQ9IjEyLjUi
IHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDow
LjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5
PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2Zp
bHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA3KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisK
KyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1
NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIw
IiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ry
b2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7
ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmls
dGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8w
OCk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoMTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhl
aWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1
OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIg
c3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFj
aXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBo
ZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0
cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdi
KDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA5KTtzdHJva2U6bm9uZTsiLz4K
KyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTAsIDIxMCkiPgorICAg
ICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0
IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAw
LDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAg
ICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6
cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAg
ICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmls
dGVyXzFlZmZlY3RfMTApO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5z
Zm9ybT0idHJhbnNsYXRlKDMxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9r
ZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAi
IGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5PSI1MCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5
OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAg
ICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMSk7c3Ryb2tlOm5v
bmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDEwLCAyMTAp
Ij4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAg
ICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6
cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4K
KyAgICAgICAgPHJlY3QgeD0iMzcuNSIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBz
dHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41
OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0
ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0i
MjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1
LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAi
IHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJv
a2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIu
NSIgeT0iMTIuNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1
MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0g
RmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVj
dF8xMyk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFu
c2xhdGUoNjEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAi
IGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJh
eTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2
MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1v
cGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9Ijc1
IiBoZWlnaHQ9Ijc1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtz
dHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8
cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xNCk7c3Ryb2tlOm5vbmU7Ii8+
CisgICAgPC9nPgorPC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zdWJSZWdp
b24tdHdvLWVmZmVjdHMuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJz
L3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIyNCBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJi
b2R5IiB3aWR0aD0iODAwIiBoZWlnaHQ9IjYwMCI+CisgICAgPGRlZnM+CisgICAgICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorICAgICAgICoge3N0cm9rZTpibGFjazsgc3Ryb2tlLXdpZHRoOjAu
Mjt9CisgICAgICA8L3N0eWxlPgorICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8w
MSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdo
dD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAg
IDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+Cisg
ICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmls
dGVyXzFlZmZlY3RfMDIiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjUwJSIgaGVp
Z2h0PSI3NSUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRo
PSI3NSUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8Zmls
dGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUi
IAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJv
dW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB3aWR0aD0iMTAwJSIgLz4KKyAgICAg
ICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wNCIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAor
ICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5k
aW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB5PSIwJSIgaGVpZ2h0PSI1MCUiIC8+Cisg
ICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAg
ICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lk
dGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9
Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUi
IHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgLz4K
KyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MDYiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWln
aHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgICAgICA8ZmVP
ZmZzZXQgeD0iMCUiIHk9IjAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8Zmls
dGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUi
IAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJv
dW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0
aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0i
MCUiIHdpZHRoPSI3NSUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wOCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94
Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWln
aHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lk
dGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxm
aWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA5IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRp
bmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSI1
MCUiIGhlaWdodD0iNzUlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUl
IiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAg
ICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RC
b3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiBoZWlnaHQ9
IjUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKwor
ICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMSIgcHJpbWl0aXZlVW5pdHM9Im9i
amVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICAgICAg
PGZlT2Zmc2V0IC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZp
bHRlcl8xZWZmZWN0XzEyIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUlIiB5PSIy
NSUiIHdpZHRoPSI1MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAg
ICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMyIgcHJpbWl0aXZlVW5pdHM9Im9iamVj
dEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3
aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjUw
JSIgeT0iNTAlIiB3aWR0aD0iNzUlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+
CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRz
PSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0i
LTI1JSIgd2lkdGg9IjE1MCUiIGhlaWdodD0iMTUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNl
dCB4PSItNTAlIiB5PSItNTAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIiAvPgorICAgICAg
ICA8L2ZpbHRlcj4KKyAgICA8L2RlZnM+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgx
MCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0i
NTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgor
ICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQi
IC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41
OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
IiAvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0
ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisg
ICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUs
MTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2Ut
ZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIg
eT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUw
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9
IjUwIiB5PSI1MCIgd2lkdGg9IjM3LjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdiKDE1
MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiIC8+CisKKyAgICAgICAg
PCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIg
aGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8x
ZWZmZWN0XzAyKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09
InRyYW5zbGF0ZSgyMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNo
YXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxs
LW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhl
aWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tl
LXdpZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAs
MjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAzKTtzdHJva2U6bm9uZTsiLz4KKyAg
ICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDEwKSI+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0i
MCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwy
MDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCww
LDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVj
dCB4PSIzNy41IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAg
ICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVy
XzFlZmZlY3RfMDQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9y
bT0idHJhbnNsYXRlKDQxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0
aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRh
c2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2Zp
bGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUw
IiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtz
dHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7
c3Ryb2tlLXdpZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6
cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA1KTtzdHJva2U6bm9uZTsi
Lz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTAsIDEwKSI+Cisg
ICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0i
ZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJl
Y3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAw
LDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAg
ICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmls
dGVyXzFlZmZlY3RfMDYpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5z
Zm9ybT0idHJhbnNsYXRlKDYxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tl
LWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhl
aWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheToz
O2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdp
ZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0
eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iMzcuNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3Bh
Y2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4K
KyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDcpO3N0cm9r
ZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLCAy
MTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAg
ICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZp
bGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIg
Lz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIy
NSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRo
OjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUi
IHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7
ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDgpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4K
KworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMCwgMjEwKSI+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUw
LDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9
IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7
c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9
IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2Io
MCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8
cmVjdCB4PSIzNy41IiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAg
ICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2Zp
bHRlcl8xZWZmZWN0XzA5KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFu
c2Zvcm09InRyYW5zbGF0ZSgyMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUi
IHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJv
a2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYw
IiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJy
YXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdp
ZHRoPSI2MCIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0
eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+Cisg
ICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9
ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEwKTtzdHJva2U6
bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDIx
MCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAg
ICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmls
bDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAv
PgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5
bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
Lz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0
eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIx
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRl
cjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzExKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAg
ICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUs
MTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIg
d2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9r
ZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41
IiB5PSIxMi41IiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUw
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9
IjM3LjUiIHk9IjM3LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1
MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8
IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFl
ZmZlY3RfMTIpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0i
dHJhbnNsYXRlKDUxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9
IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNo
YXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdo
dD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2Zp
bGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTow
LjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0
aD0iMzcuNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFj
aXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgor
ICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMyk7c3Ryb2tl
Om5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAy
MTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAg
ICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZp
bGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIg
Lz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1
IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6
MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRo
OjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUi
IHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7
ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4K
Kzwvc3ZnPgo=
</data>
<flag name="review"
          id="15909"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31219</attachid>
            <date>2009-06-12 16:23:48 -0700</date>
            <delta_ts>2009-06-12 16:29:30 -0700</delta_ts>
            <desc>subRegion Code</desc>
            <filename>filter-5.patch</filename>
            <type>text/plain</type>
            <size>59504</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NDYzNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsOTQgQEAKKzIwMDktMDYtMTIgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBzdWJSZWdpb24gY2FsY3VsYXRpb24gdG8gU1ZHIGZpbHRlci4gRXZlcnkgZmlsdGVyIGVmZmVj
dCBpcworICAgICAgICBjbGlwcGVkIHRvIHRoZSBmaWx0ZXIgcmVnaW9uIChhY2NvcmRpbmcgdG8g
dGhlIHNwZWMpLiBUaGlzIG1ha2VzCisgICAgICAgIEltYWdlQnVmZmVycyBmb3IgZmlsdGVyIGVm
ZmVjdHMgc21hbGxlciBhbmQgd2UganVzdCBuZWVkIHRvIHRha2UKKyAgICAgICAgY2FyZSBhYm91
dCBiaWcgZmlsdGVyIHJlZ2lvbnMuCisgICAgICAgIFNWR0ZFSW1hZ2UgbmVlZGVkIGEgY29ycmVj
dGlvbiwgdG8gYXZvaWQgYW4gQVNTRVJULiBUaGUgdHdvIGZpbHRlcgorICAgICAgICBlZmZlY3Rz
IGZlT2Zmc2V0IGFuZCBmZUZsb29kIGhlbHAgdG8gdGVzdCB0aGUgbmV3IHN1YlJlZ2lvbiBjb2Rl
LgorCisgICAgICAgIFRlc3RzOiBzdmcvZmlsdGVycy9zdWJSZWdpb24tb25lLWVmZmVjdC5zdmcK
KyAgICAgICAgICAgICAgIHN2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10d28tZWZmZWN0cy5zdmcKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oOgorICAgICAgICAo
V2ViQ29yZTo6RkVCbGVuZDo6dW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oOgorICAgICAgICAoV2Vi
Q29yZTo6RkVDb2xvck1hdHJpeDo6dW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5oOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb21wb25lbnRUcmFuc2Zlcjo6dW5pdGVDaGlsZEVmZmVjdFN1YnJl
Z2lvbnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29tcG9zaXRlOjp1bml0ZUNoaWxkRWZmZWN0U3VicmVn
aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzb3VyY2VJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpG
aWx0ZXJFZmZlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bmlvbk9mQ2hp
bGRFZmZlY3RTdWJSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y2Fs
Y3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0VW5pb25P
ZkNoaWxkRWZmZWN0U3VicmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OnVuaW9uT2ZDaGlsZEVmZmVjdFN1YnJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0OjpoYXNYKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6c2V0SGFzWCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc1kpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNZKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVj
dDo6aGFzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpzZXRIYXNXaWR0
aCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6Omhhc0hlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OnNldEhhc0hlaWdodCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXJFZmZlY3Q6OnNldEVmZmVjdEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OnVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmg6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VBbHBoYTo6Y2FsY3VsYXRlRWZmZWN0UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdy
YXBoaWM6OmNhbGN1bGF0ZUVmZmVjdFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3Jh
cGhpYzo6YXBwbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5oOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlckJhc2U6OnByZXBhcmVUb1JlbmRlclNWR0NvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyQmFzZTo6ZmluaXNoUmVuZGVyU1ZHQ29udGVu
dCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnNldFN0YW5kYXJkQXR0cmlidXRlcyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jl
c291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjpw
cmVwYXJlRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlRmlsdGVyOjphcHBs
eUZpbHRlcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmg6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVDb252b2x2ZU1hdHJpeC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6dW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lv
bnMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6dW5pdGVDaGlsZEVmZmVj
dFN1YnJlZ2lvbnMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxh
Y2VtZW50TWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6dW5pdGVD
aGlsZEVmZmVjdFN1YnJlZ2lvbnMpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6YXBwbHkpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6dW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNZXJnZTo6dW5pdGVFZmZlY3RSZWN0KToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRU1lcmdlLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVNb3JwaG9sb2d5Lmg6CisgICAgICAgIChXZWJDb3JlOjpGRU1v
cnBob2xvZ3k6OnVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKToKKyAgICAgICAgKiBzdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRU9mZnNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNl
dDo6YXBwbHkpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6dW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5o
OgorICAgICAgICAoV2ViQ29yZTo6RkVTcGVjdWxhckxpZ2h0aW5nOjp1bml0ZUVmZmVjdFJlY3Qp
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGRVRpbGU6OnVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuaDoKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpj
YWxjdWxhdGVFZmZlY3RTdWJSZWdpb24pOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjplZmZlY3RCb3VuZGlu
Z0JveE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpmaWx0ZXJSZWdpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpzb3VyY2VJbWFnZVJlY3QpOgorCiAyMDA5LTA2
LTEyICBQZXRlciBLYXN0aW5nICA8cGthc3RpbmdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUJsZW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQmxlbmQuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBCbGVuZE1vZGVUeXBlIGJsZW5kTW9kZSgp
IGNvbnN0OwogICAgICAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGVUeXBlKTsKLSAgICAg
ICAgCisKKyAgICAgICAgRmxvYXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZpbHRl
ciogZmlsdGVyKSB7IHJldHVybiB1bmlvbk9mQ2hpbGRFZmZlY3RTdWJSZWdpb25zKGZpbHRlciwg
bV9pbi5nZXQoKSwgbV9pbjIuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNyArNDcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29u
c3QgVmVjdG9yPGZsb2F0PiYgdmFsdWVzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0VmFsdWVz
KGNvbnN0IFZlY3RvcjxmbG9hdD4mKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRSZWN0IHVu
aXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZpbHRlciogZmlsdGVyKSB7IHJldHVybiB1bmlvbk9m
Q2hpbGRFZmZlY3RTdWJSZWdpb25zKGZpbHRlciwgbV9pbi5nZXQoKSk7IH0KICAgICAgICAgdm9p
ZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb21wb25lbnRUcmFuc2Zlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
IGFscGhhRnVuY3Rpb24oKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRBbHBoYUZ1bmN0aW9uKGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mKTsKLSAgICAgICAgCisKKyAgICAgICAgRmxv
YXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZpbHRlciogZmlsdGVyKSB7IHJldHVy
biB1bmlvbk9mQ2hpbGRFZmZlY3RTdWJSZWdpb25zKGZpbHRlciwgbV9pbi5nZXQoKSk7IH0KICAg
ICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBkdW1wKCk7CiAKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCShy
ZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvc2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBmbG9hdCBrNCgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEs0KGZs
b2F0KTsKLSAgICAgICAgCisKKyAgICAgICAgRmxvYXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJy
ZWdpb25zKEZpbHRlciogZmlsdGVyKSB7IHJldHVybiB1bmlvbk9mQ2hpbGRFZmZlY3RTdWJSZWdp
b25zKGZpbHRlciwgbV9pbi5nZXQoKSwgbV9pbjIuZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBw
bHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsOCBAQAogI2RlZmluZSBGaWx0ZXJfaAogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0j
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CkBAIC0zNiwxMyArMzcsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+RmlsdGVyKCkgeyB9CiAKLSAgICAgICAgdm9pZCBzZXRT
b3VyY2VJbWFnZShQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkgeyBtX2ltYWdlID0gaW1hZ2U7IH0K
LSAgICAgICAgSW1hZ2UqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQor
ICAgICAgICB2b2lkIHNldFNvdXJjZUltYWdlKFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+IHNvdXJj
ZUltYWdlKSB7IG1fc291cmNlSW1hZ2UgPSBzb3VyY2VJbWFnZTsgfQorICAgICAgICBJbWFnZUJ1
ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdldCgpOyB9CiAKKyAg
ICAgICAgdmlydHVhbCBGbG9hdFJlY3Qgc291cmNlSW1hZ2VSZWN0KCkgPSAwOworICAgICAgICB2
aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSA9IDA7CisKKyAgICAgICAgLy8gU1ZHIHNw
ZWNpZmljCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmls
dGVyRWZmZWN0KikgPSAwOworICAgICAgICB2aXJ0dWFsIGJvb2wgZWZmZWN0Qm91bmRpbmdCb3hN
b2RlKCkgPSAwOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdl
OworICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IG1fc291cmNlSW1hZ2U7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDEwIEBAIEZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KCkKICAg
ICAsIG1feUJCb3hNb2RlKGZhbHNlKQogICAgICwgbV93aWR0aEJCb3hNb2RlKGZhbHNlKQogICAg
ICwgbV9oZWlnaHRCQm94TW9kZShmYWxzZSkKKyAgICAsIG1faGFzWChmYWxzZSkKKyAgICAsIG1f
aGFzWShmYWxzZSkKKyAgICAsIG1faGFzV2lkdGgoZmFsc2UpCisgICAgLCBtX2hhc0hlaWdodChm
YWxzZSkKIHsKIH0KIApAQCAtMzYsNiArNDAsMjUgQEAgRmlsdGVyRWZmZWN0Ojp+RmlsdGVyRWZm
ZWN0KCkKIHsKIH0KIAorRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6dW5pb25PZkNoaWxkRWZmZWN0
U3ViUmVnaW9ucyhGaWx0ZXIqIGZpbHRlciwgRmlsdGVyRWZmZWN0KiBpbikKK3sKKyAgICByZXR1
cm4gaW4tPmNhbGN1bGF0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKK30KKworRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6dW5pb25PZkNoaWxkRWZmZWN0U3ViUmVnaW9ucyhGaWx0ZXIqIGZpbHRlciwgRmls
dGVyRWZmZWN0KiBpbiwgRmlsdGVyRWZmZWN0KiBpbjIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRl
RWZmZWN0UmVjdCA9IGluLT5jYWxjdWxhdGVFZmZlY3RSZWN0KGZpbHRlcik7CisgICAgdW5pdGVF
ZmZlY3RSZWN0LnVuaXRlKGluMi0+Y2FsY3VsYXRlRWZmZWN0UmVjdChmaWx0ZXIpKTsKKyAgICBy
ZXR1cm4gdW5pdGVFZmZlY3RSZWN0OworfQorCitGbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpjYWxj
dWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKQoreworICAgIHNldFVuaW9uT2ZDaGlsZEVm
ZmVjdFN1YnJlZ2lvbnModW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMoZmlsdGVyKSk7CisgICAg
ZmlsdGVyLT5jYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24odGhpcyk7CisgICAgcmV0dXJuIHN1YlJl
Z2lvbigpOworfQorCiBUZXh0U3RyZWFtJiBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRzOwpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaAkocmV2
aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJJbWFn
ZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAorI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTQ4LDEzICs0OSwzMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGJvb2wgaGVpZ2h0Qm91bmRpbmdCb3hNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHRCQm94
TW9kZTsgfQogICAgICAgICB2b2lkIHNldEhlaWdodEJvdW5kaW5nQm94TW9kZShib29sIGJib3hN
b2RlKSB7IG1faGVpZ2h0QkJveE1vZGUgPSBiYm94TW9kZTsgfQogCisgICAgICAgIHZvaWQgc2V0
VW5pb25PZkNoaWxkRWZmZWN0U3VicmVnaW9ucyhjb25zdCBGbG9hdFJlY3QmIHVuaXRlUmVjdCkg
eyBtX3VuaW9uT2ZDaGlsZEVmZmVjdFN1YnJlZ2lvbnMgPSB1bml0ZVJlY3Q7IH0KKyAgICAgICAg
RmxvYXRSZWN0IHVuaW9uT2ZDaGlsZEVmZmVjdFN1YnJlZ2lvbnMoKSBjb25zdCB7IHJldHVybiBt
X3VuaW9uT2ZDaGlsZEVmZmVjdFN1YnJlZ2lvbnM7IH0KKwogICAgICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdWJSZWdpb247IH0KICAgICAgICAgdm9pZCBzZXRT
dWJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBzdWJSZWdpb24pIHsgbV9zdWJSZWdpb24gPSBzdWJS
ZWdpb247IH0KIAorICAgICAgICBib29sIGhhc1goKSB7IHJldHVybiBtX2hhc1g7IH0KKyAgICAg
ICAgdm9pZCBzZXRIYXNYKGJvb2wgdmFsdWUpIHsgbV9oYXNYID0gdmFsdWU7IH0KKworICAgICAg
ICBib29sIGhhc1koKSB7IHJldHVybiBtX2hhc1k7IH0KKyAgICAgICAgdm9pZCBzZXRIYXNZKGJv
b2wgdmFsdWUpIHsgbV9oYXNZID0gdmFsdWU7IH0KKworICAgICAgICBib29sIGhhc1dpZHRoKCkg
eyByZXR1cm4gbV9oYXNXaWR0aDsgfQorICAgICAgICB2b2lkIHNldEhhc1dpZHRoKGJvb2wgdmFs
dWUpIHsgbV9oYXNXaWR0aCA9IHZhbHVlOyB9CisKKyAgICAgICAgYm9vbCBoYXNIZWlnaHQoKSB7
IHJldHVybiBtX2hhc0hlaWdodDsgfQorICAgICAgICB2b2lkIHNldEhhc0hlaWdodChib29sIHZh
bHVlKSB7IG1faGFzSGVpZ2h0ID0gdmFsdWU7IH0KKwogICAgICAgICAvLyBUaGUgcmVzdWx0IGlz
IGJvdW5kZWQgYnkgdGhlIHNpemUgb2YgdGhlIGZpbHRlciBwcmltaXRpdmUgdG8gc2F2ZSByZXNv
dXJjZXMKICAgICAgICAgSW1hZ2VCdWZmZXIqIHJlc3VsdEltYWdlKCkgeyByZXR1cm4gbV9lZmZl
Y3RCdWZmZXIuZ2V0KCk7IH0KLSAgICAgICAgdm9pZCBzZXRFZmZlY3RCdWZmZXIoSW1hZ2VCdWZm
ZXIqIGVmZmVjdEJ1ZmZlcikgeyBtX2VmZmVjdEJ1ZmZlci5zZXQoZWZmZWN0QnVmZmVyKTsgfQor
ICAgICAgICB2b2lkIHNldEVmZmVjdEJ1ZmZlcihQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBlZmZl
Y3RCdWZmZXIpIHsgbV9lZmZlY3RCdWZmZXIgPSBlZmZlY3RCdWZmZXI7IH0KKworICAgICAgICBG
bG9hdFJlY3QgdW5pb25PZkNoaWxkRWZmZWN0U3ViUmVnaW9ucyhGaWx0ZXIqLCBGaWx0ZXJFZmZl
Y3QqLCBGaWx0ZXJFZmZlY3QqKTsKKyAgICAgICAgRmxvYXRSZWN0IHVuaW9uT2ZDaGlsZEVmZmVj
dFN1YlJlZ2lvbnMoRmlsdGVyKiwgRmlsdGVyRWZmZWN0Kik7CiAKKyAgICAgICAgdmlydHVhbCBG
bG9hdFJlY3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0
dXJuIGZpbHRlci0+ZmlsdGVyUmVnaW9uKCk7IH0KKyAgICAgICAgdmlydHVhbCBGbG9hdFJlY3Qg
Y2FsY3VsYXRlRWZmZWN0UmVjdChGaWx0ZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFwcGx5
KEZpbHRlciopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKQEAgLTY5
LDcgKzkwLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX3dpZHRoQkJv
eE1vZGUgOiAxOwogICAgICAgICBib29sIG1faGVpZ2h0QkJveE1vZGUgOiAxOwogCisgICAgICAg
IGJvb2wgbV9oYXNYIDogMTsKKyAgICAgICAgYm9vbCBtX2hhc1kgOiAxOworICAgICAgICBib29s
IG1faGFzV2lkdGggOiAxOworICAgICAgICBib29sIG1faGFzSGVpZ2h0IDogMTsKKwogICAgICAg
ICBGbG9hdFJlY3QgbV9zdWJSZWdpb247CisgICAgICAgIEZsb2F0UmVjdCBtX3VuaW9uT2ZDaGls
ZEVmZmVjdFN1YnJlZ2lvbnM7CiAKICAgICAgICAgbXV0YWJsZSBPd25QdHI8SW1hZ2VCdWZmZXI+
IG1fZWZmZWN0QnVmZmVyOwogICAgIH07CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwogCisgICAgICAgIEZsb2F0UmVjdCBjYWxj
dWxhdGVFZmZlY3RSZWN0KEZpbHRlciogZmlsdGVyKSB7IHJldHVybiBmaWx0ZXItPnNvdXJjZUlt
YWdlUmVjdCgpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7CiAgICAgICAgIHZvaWQg
ZHVtcCgpOwogICAgIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDggKzQxLDI5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgU291cmNlR3JhcGhpYzo6ZWZm
ZWMKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCi12b2lkIFNvdXJjZUdyYXBoaWM6OmFw
cGx5KEZpbHRlciopCitGbG9hdFJlY3QgU291cmNlR3JhcGhpYzo6Y2FsY3VsYXRlRWZmZWN0UmVj
dChGaWx0ZXIqIGZpbHRlcikKIHsKKyAgICBGbG9hdFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBm
aWx0ZXItPnNvdXJjZUltYWdlUmVjdCgpOworICAgIGlmIChmaWx0ZXItPnNvdXJjZUltYWdlUmVj
dCgpLngoKSA8IGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkueCgpKQorICAgICAgICBjbGlwcGVkU291
cmNlUmVjdC5zZXRYKGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkueCgpKTsKKyAgICBpZiAoZmlsdGVy
LT5zb3VyY2VJbWFnZVJlY3QoKS55KCkgPCBmaWx0ZXItPmZpbHRlclJlZ2lvbigpLnkoKSkKKyAg
ICAgICAgY2xpcHBlZFNvdXJjZVJlY3Quc2V0WShmaWx0ZXItPmZpbHRlclJlZ2lvbigpLnkoKSk7
CisgICAgc2V0U3ViUmVnaW9uKGNsaXBwZWRTb3VyY2VSZWN0KTsKKyAgICByZXR1cm4gZmlsdGVy
LT5maWx0ZXJSZWdpb24oKTsKK30KKwordm9pZCBTb3VyY2VHcmFwaGljOjphcHBseShGaWx0ZXIq
IGZpbHRlcikKK3sKKyAgICBJbnRSZWN0IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHN1
YlJlZ2lvbigpKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VC
dWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0LnNpemUoKSwgZmFsc2UpKTsKKworICAgIGlmICghZmls
dGVyR3JhcGhpYy5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3NDb250ZXh0
KiBmaWx0ZXJDb250ZXh0ID0gZmlsdGVyR3JhcGhpYy0+Y29udGV4dCgpOworICAgIGZpbHRlckNv
bnRleHQtPmRyYXdJbWFnZShmaWx0ZXItPnNvdXJjZUltYWdlKCktPmltYWdlKCksIEludFBvaW50
KCkpOworCisgICAgc2V0RWZmZWN0QnVmZmVyKGZpbHRlckdyYXBoaWMucmVsZWFzZSgpKTsKIH0K
IAogdm9pZCBTb3VyY2VHcmFwaGljOjpkdW1wKCkKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaAkocmV2aXNpb24gNDQ2MDQpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw4ICsyNCw4IEBACiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVk
ZSAiRmlsdGVyRWZmZWN0LmgiCiAKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIkZpbHRlci5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAg
ICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZWZmZWN0TmFtZSgpOwogCisgICAgICAgIEZs
b2F0UmVjdCBjYWxjdWxhdGVFZmZlY3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5
KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNyArMTIw
LDcgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpwcmVwYXJlVG9SZW5kZXJTVkdDbwogI2lmIEVOQUJM
RShGSUxURVJTKQogICAgIGlmIChmaWx0ZXIpIHsKICAgICAgICAgZmlsdGVyLT5hZGRDbGllbnQo
c3R5bGVkRWxlbWVudCk7Ci0gICAgICAgIGZpbHRlci0+cHJlcGFyZUZpbHRlcihwYWludEluZm8u
Y29udGV4dCwgb2JqZWN0LT5vYmplY3RCb3VuZGluZ0JveCgpKTsKKyAgICAgICAgZmlsdGVyLT5w
cmVwYXJlRmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmplY3QpOwogICAgIH0gZWxzZSBpZiAo
IWZpbHRlcklkLmlzRW1wdHkoKSkKICAgICAgICAgc3ZnRWxlbWVudC0+ZG9jdW1lbnQoKS0+YWNj
ZXNzU1ZHRXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UoZmlsdGVySWQsIHN0eWxlZEVs
ZW1lbnQpOwogI2VuZGlmCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTVkdSZW5kZXJCYXNlOjpm
aW5pc2hSZW5kZXJTVkdDb250ZQogCiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgaWYgKGZpbHRl
cikgewotICAgICAgICBmaWx0ZXItPmFwcGx5RmlsdGVyKHBhaW50SW5mby5jb250ZXh0LCBvYmpl
Y3QtPm9iamVjdEJvdW5kaW5nQm94KCkpOworICAgICAgICBmaWx0ZXItPmFwcGx5RmlsdGVyKHBh
aW50SW5mby5jb250ZXh0LCBvYmplY3QpOwogICAgICAgICBwYWludEluZm8uY29udGV4dCA9IHNh
dmVkQ29udGV4dDsKICAgICB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gNDQ2MDQp
CisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxNSBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlCiAKICAgICBmbG9hdCBfeCwgX3ksIF93aWR0aCwgX2hlaWdodDsK
IAorICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OnhBdHRyKSkKKyAgICAgICAg
ZmlsdGVyRWZmZWN0LT5zZXRIYXNYKHRydWUpOworICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUo
U1ZHTmFtZXM6OnlBdHRyKSkKKyAgICAgICAgZmlsdGVyRWZmZWN0LT5zZXRIYXNZKHRydWUpOwor
ICAgIGlmICh0aGlzLT5oYXNBdHRyaWJ1dGUoU1ZHTmFtZXM6OndpZHRoQXR0cikpCisgICAgICAg
IGZpbHRlckVmZmVjdC0+c2V0SGFzV2lkdGgodHJ1ZSk7CisgICAgaWYgKHRoaXMtPmhhc0F0dHJp
YnV0ZShTVkdOYW1lczo6aGVpZ2h0QXR0cikpCisgICAgICAgIGZpbHRlckVmZmVjdC0+c2V0SGFz
SGVpZ2h0KHRydWUpOworCiAgICAgaWYgKHJlc291cmNlRmlsdGVyLT5lZmZlY3RCb3VuZGluZ0Jv
eE1vZGUoKSkgewogICAgICAgICBfeCA9IHgoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwogICAgICAg
ICBfeSA9IHkoKS52YWx1ZUFzUGVyY2VudGFnZSgpOwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDUw
ICs2Niw1NSBAQCBGbG9hdFJlY3QgU1ZHUmVzb3VyY2VGaWx0ZXI6OmZpbHRlckJCb3hGCiAgICAg
cmV0dXJuIGZpbHRlckJCb3g7CiB9CiAKLXZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVG
aWx0ZXIoR3JhcGhpY3NDb250ZXh0KiYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpdGVtUmVj
dCkKK3ZvaWQgU1ZHUmVzb3VyY2VGaWx0ZXI6OnByZXBhcmVGaWx0ZXIoR3JhcGhpY3NDb250ZXh0
KiYgY29udGV4dCwgY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CisgICAgbV9pdGVtQkJv
eCA9IG9iamVjdC0+b2JqZWN0Qm91bmRpbmdCb3goKTsKKyAgICBtX2ZpbHRlckJCb3ggPSBmaWx0
ZXJCQm94Rm9ySXRlbUJCb3gobV9pdGVtQkJveCk7CisKKyAgICAvLyBjbGlwIHNvdXJjZUltYWdl
IHRvIGZpbHRlclJlZ2lvbgorICAgIEZsb2F0UmVjdCBjbGlwcGVkU291cmNlUmVjdCA9IG1faXRl
bUJCb3g7CisgICAgY2xpcHBlZFNvdXJjZVJlY3QuaW50ZXJzZWN0KG1fZmlsdGVyQkJveCk7CisK
KyAgICAvLyBwcmVwYXJlIEZpbHRlcnMKKyAgICBtX2ZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRl
KG1faXRlbUJCb3gsIG1fZmlsdGVyQkJveCwgbV9lZmZlY3RCQm94TW9kZSwgbV9maWx0ZXJCQm94
TW9kZSk7CisKKyAgICBGaWx0ZXJFZmZlY3QqIGxhc3RFZmZlY3QgPSBtX2ZpbHRlckJ1aWxkZXIt
Pmxhc3RFZmZlY3QoKTsKKyAgICBpZiAobGFzdEVmZmVjdCkKKyAgICAgICAgbGFzdEVmZmVjdC0+
Y2FsY3VsYXRlRWZmZWN0UmVjdChtX2ZpbHRlci5nZXQoKSk7CisKICAgICAvLyBEcmF3IHRoZSBj
b250ZW50IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgYW5kIGl0J3MgY2hpbGRzIHRvIGEgaW1hZ2VC
dWZmZXIgdG8gZ2V0IHRoZSBTb3VyY2VHcmFwaGljLgotICAgIC8vIFRoZSBzaXplIG9mIHRoZSBT
b3VyY2VHcmFwaGljIG11c3QgbWF0Y2ggdGhlIHNpemUgb2YgdGhlIGVsZW1lbnQsIHRoZSBmaWx0
ZXIgaXMgYXBsaWVkIHRvLgotICAgIEludFNpemUgYnVmZmVyU2l6ZSA9IEludFNpemUoaXRlbVJl
Y3Qud2lkdGgoKSwgaXRlbVJlY3QuaGVpZ2h0KCkpOwotICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4g
c291cmNlR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclNpemUsIGZhbHNlKSk7Cisg
ICAgLy8gVGhlIHNpemUgb2YgdGhlIFNvdXJjZUdyYXBoaWMgaXMgY2xpcHBlZCB0byB0aGUgc2l6
ZSBvZiB0aGUgZmlsdGVyUmVnaW9uLgorICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2lu
Z0ludFJlY3QoY2xpcHBlZFNvdXJjZVJlY3QpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc291
cmNlR3JhcGhpYyhJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBmYWxzZSkp
OwogICAgIAogICAgIGlmICghc291cmNlR3JhcGhpYy5nZXQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBo
aWMtPmNvbnRleHQoKTsKLSAgICBzb3VyY2VHcmFwaGljQ29udGV4dC0+dHJhbnNsYXRlKC1pdGVt
UmVjdC54KCksIC1pdGVtUmVjdC55KCkpOwotICAgIHNvdXJjZUdyYXBoaWNDb250ZXh0LT5jbGVh
clJlY3QoRmxvYXRSZWN0KDAsIDAsIGl0ZW1SZWN0LndpZHRoKCksIGl0ZW1SZWN0LmhlaWdodCgp
KSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPnRyYW5zbGF0ZSgtbV9pdGVtQkJveC54KCks
IC1tX2l0ZW1CQm94LnkoKSk7CisgICAgc291cmNlR3JhcGhpY0NvbnRleHQtPmNsZWFyUmVjdChG
bG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2l0ZW1CQm94LnNpemUoKSkpOwogICAgIG1fc291cmNl
R3JhcGhpY0J1ZmZlci5zZXQoc291cmNlR3JhcGhpYy5yZWxlYXNlKCkpOwogICAgIG1fc2F2ZWRD
b250ZXh0ID0gY29udGV4dDsKIAogICAgIGNvbnRleHQgPSBzb3VyY2VHcmFwaGljQ29udGV4dDsK
IH0KIAotdm9pZCBTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlGaWx0ZXIoR3JhcGhpY3NDb250ZXh0
KiYgY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBpdGVtUmVjdCkKK3ZvaWQgU1ZHUmVzb3VyY2VG
aWx0ZXI6OmFwcGx5RmlsdGVyKEdyYXBoaWNzQ29udGV4dComIGNvbnRleHQsIGNvbnN0IFJlbmRl
ck9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV9zYXZlZENvbnRleHQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWN0ID0gZmlsdGVyQkJveEZvckl0ZW1CQm94
KGl0ZW1SZWN0KTsKLQotICAgIHNldEZpbHRlckJvdW5kaW5nQm94KGZpbHRlclJlY3QpOwotICAg
IHNldEl0ZW1Cb3VuZGluZ0JveChpdGVtUmVjdCk7Ci0KICAgICBjb250ZXh0ID0gbV9zYXZlZENv
bnRleHQ7CiAgICAgbV9zYXZlZENvbnRleHQgPSAwOwogCiAgICAgRmlsdGVyRWZmZWN0KiBsYXN0
RWZmZWN0ID0gbV9maWx0ZXJCdWlsZGVyLT5sYXN0RWZmZWN0KCk7CiAKLSAgICBpZiAobGFzdEVm
ZmVjdCAmJiAhZmlsdGVyUmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPEZpbHRlcj4g
ZmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUobV9pdGVtQkJveCwgbV9maWx0ZXJCQm94LCBtX2Vm
ZmVjdEJCb3hNb2RlLCBtX2ZpbHRlckJCb3hNb2RlKTsKLSAgICAgICAgZmlsdGVyLT5zZXRTb3Vy
Y2VJbWFnZShtX3NvdXJjZUdyYXBoaWNCdWZmZXItPmltYWdlKCkpOwotICAgICAgICBsYXN0RWZm
ZWN0LT5hcHBseShmaWx0ZXIuZ2V0KCkpOwotCi0gICAgICAgIGNvbnRleHQtPmNsaXAoZmlsdGVy
UmVjdCk7CisgICAgaWYgKGxhc3RFZmZlY3QgJiYgIW1fZmlsdGVyQkJveC5pc0VtcHR5KCkgJiYg
IWxhc3RFZmZlY3QtPnN1YlJlZ2lvbigpLmlzRW1wdHkoKSkgeworICAgICAgICBtX2ZpbHRlci0+
c2V0U291cmNlSW1hZ2UobV9zb3VyY2VHcmFwaGljQnVmZmVyLnJlbGVhc2UoKSk7CisgICAgICAg
IGxhc3RFZmZlY3QtPmFwcGx5KG1fZmlsdGVyLmdldCgpKTsKIAogICAgICAgICBpZiAobGFzdEVm
ZmVjdC0+cmVzdWx0SW1hZ2UoKSkKLSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShsYXN0
RWZmZWN0LT5yZXN1bHRJbWFnZSgpLT5pbWFnZSgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsYXN0RWZmZWN0LT5zdWJSZWdpb24oKSk7CisgICAgICAgICAgICBjb250ZXh0LT5kcmF3
SW1hZ2UobGFzdEVmZmVjdC0+cmVzdWx0SW1hZ2UoKS0+aW1hZ2UoKSwgbGFzdEVmZmVjdC0+c3Vi
UmVnaW9uKCkpOwogICAgIH0KIAogICAgIG1fc291cmNlR3JhcGhpY0J1ZmZlci5jbGVhcigpOwpJ
bmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHUmVzb3VyY2VGaWx0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdSZXNvdXJjZUZpbHRlci5oCShyZXZpc2lvbiA0
NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR1Jlc291cmNlRmlsdGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJSZW5k
ZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCIKIAogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0LDggKzc2LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0m
KSBjb25zdDsKIAotICAgIHZvaWQgcHJlcGFyZUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwgY29u
c3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBhcHBseUZpbHRlcihHcmFwaGljc0NvbnRleHQqJiwg
Y29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBwcmVwYXJlRmlsdGVyKEdyYXBoaWNzQ29udGV4
dComLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFwcGx5RmlsdGVyKEdyYXBoaWNz
Q29udGV4dComLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKIAogICAgIHZvaWQgYWRkRmlsdGVyRWZm
ZWN0KFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyosIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0Pik7CiAKQEAgLTk3LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8U1ZH
RmlsdGVyQnVpbGRlcj4gbV9maWx0ZXJCdWlsZGVyOwogICAgIEdyYXBoaWNzQ29udGV4dCogbV9z
YXZlZENvbnRleHQ7CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUdyYXBoaWNCdWZm
ZXI7CisgICAgUmVmUHRyPEZpbHRlcj4gbV9maWx0ZXI7CiB9OwogCiBTVkdSZXNvdXJjZUZpbHRl
ciogZ2V0RmlsdGVyQnlJZChEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYpOwpJbmRleDog
V2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUNvbnZvbHZlTWF0cml4
LmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUNvbnZvbHZlTWF0cml4LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHByZXNlcnZlQWxwaGEoKSBjb25zdDsKICAgICAg
ICAgdm9pZCBzZXRQcmVzZXJ2ZUFscGhhKGJvb2wpOwogCisgICAgICAgIEZsb2F0UmVjdCB1bml0
ZUNoaWxkRWZmZWN0U3VicmVnaW9ucyhGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gdW5pb25PZkNo
aWxkRWZmZWN0U3ViUmVnaW9ucyhmaWx0ZXIsIG1faW4uZ2V0KCksIG1faW4yLmdldCgpKTsgfQog
ICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAg
ICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29u
c3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRURp
ZmZ1c2VMaWdodGluZy5oCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVEaWZmdXNlTGlnaHRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiAr
NTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBs
aWdodFNvdXJjZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291
cmNlKik7CiAKKyAgICAgICAgRmxvYXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZp
bHRlciogZmlsdGVyKSB7IHJldHVybiB1bmlvbk9mQ2hpbGRFZmZlY3RTdWJSZWdpb25zKGZpbHRl
ciwgbV9pbi5nZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAg
dm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24o
VGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRURpc3BsYWNlbWVudE1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRkVEaXNwbGFjZW1lbnRNYXAuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBX
ZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFRGlzcGxhY2VtZW50TWFwLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDYgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBm
bG9hdCBzY2FsZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFNjYWxlKGZsb2F0IHNjYWxlKTsK
IAorICAgICAgICBGbG9hdFJlY3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMoRmlsdGVyKiBm
aWx0ZXIpIHsgcmV0dXJuIHVuaW9uT2ZDaGlsZEVmZmVjdFN1YlJlZ2lvbnMoZmlsdGVyLCBtX2lu
LmdldCgpLCBtX2luMi5nZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAg
ICAgICAgdm9pZCBkdW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50
YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGRUZsb29kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFRmxvb2QuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVGbG9vZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiAr
Miw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogICAgICAgICAgICAgICAgICAgMjAwNSBFcmlj
IFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgorICAgICAgICAgICAgICAgICAgMjAwOSBEaXJrIFNj
aHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjMsNyArMjQs
OSBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZH
RkVGbG9vZC5oIgorCiAjaW5jbHVkZSAiRmlsdGVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyVHJlZUFzVGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02Myw2ICs2NiwxNyBAQCB2b2lkIEZFRmxvb2Q6OnNldEZsb29kT3BhY2l0eShm
bG9hdCBmbG9vCiAKIHZvaWQgRkVGbG9vZDo6YXBwbHkoRmlsdGVyKikKIHsKKyAgICBJbnRSZWN0
IGJ1ZmZlclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHN1YlJlZ2lvbigpKTsKKyAgICBPd25QdHI8
SW1hZ2VCdWZmZXI+IGZpbHRlckdyYXBoaWMoSW1hZ2VCdWZmZXI6OmNyZWF0ZShidWZmZXJSZWN0
LnNpemUoKSwgZmFsc2UpKTsKKworICAgIGlmICghZmlsdGVyR3JhcGhpYykKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ29sb3IgY29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhhKGZsb29kQ29s
b3IoKS5yZ2IoKSwgZmxvb2RPcGFjaXR5KCkpOworICAgIEdyYXBoaWNzQ29udGV4dCogZmlsdGVy
Q29udGV4dCA9IGZpbHRlckdyYXBoaWMtPmNvbnRleHQoKTsKKyAgICBmaWx0ZXJDb250ZXh0LT5m
aWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzdWJSZWdpb24oKS5zaXplKCkpLCBjb2xv
cik7CisKKyAgICBzZXRFZmZlY3RCdWZmZXIoZmlsdGVyR3JhcGhpYy5yZWxlYXNlKCkpOwogfQog
CiB2b2lkIEZFRmxvb2Q6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUdhdXNzaWFuQmx1ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVHYXVzc2lhbkJsdXIuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFR2F1c3NpYW5CbHVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBzdGRE
ZXZpYXRpb25ZKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3RkRGV2aWF0aW9uWShmbG9hdCk7
CiAKKyAgICAgICAgRmxvYXRSZWN0IHVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25zKEZpbHRlciog
ZmlsdGVyKSB7IHJldHVybiB1bmlvbk9mQ2hpbGRFZmZlY3RTdWJSZWdpb25zKGZpbHRlciwgbV9p
bi5nZXQoKSk7IH0KICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFSW1hZ2UuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAgRkVJ
bWFnZTo6RkVJbWFnZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZwogICAgIDogRmlsdGVyRWZmZWN0
KCkKICAgICAsIG1fY2FjaGVkSW1hZ2UoY2FjaGVkSW1hZ2UpCiB7CisgICAgbV9jYWNoZWRJbWFn
ZS0+YWRkQ2xpZW50KHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEZFSW1hZ2U+IEZFSW1hZ2U6OmNy
ZWF0ZShDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UpCkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsK
LSAgICAgICAgCisKICAgICAgICAgdm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICAgICAgdm9pZCBk
dW1wKCk7CiAgICAgICAgIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0
cmVhbSYgdHMpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU1lcmdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZFTWVyZ2UuY3BwCShyZXZpc2lvbiA0NDYwNCkKKysrIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVNZXJnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDIwIEBAIHZv
aWQgRkVNZXJnZTo6c2V0TWVyZ2VJbnB1dHMoY29uc3QgVmVjdG8KICAgICBtX21lcmdlSW5wdXRz
ID0gbWVyZ2VJbnB1dHM7CiB9CiAKK0Zsb2F0UmVjdCBGRU1lcmdlOjp1bml0ZUVmZmVjdFJlY3Qo
RmlsdGVyKiBmaWx0ZXIpCit7CisgICAgRmxvYXRSZWN0IHVuaXRlRWZmZWN0UmVjdDsKKyAgICBp
ZiAobV9tZXJnZUlucHV0cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsK
KyAgICBlbHNlCisgICAgICAgIHVuaXRlRWZmZWN0UmVjdCA9IG1fbWVyZ2VJbnB1dHNbMF0tPmNh
bGN1bGF0ZUVmZmVjdFJlY3QoZmlsdGVyKTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbV9t
ZXJnZUlucHV0cy5zaXplKCk7IGkrKykKKyAgICAgICAgdW5pdGVFZmZlY3RSZWN0LnVuaXRlKG1f
bWVyZ2VJbnB1dHNbaV0tPmNhbGN1bGF0ZUVmZmVjdFJlY3QoZmlsdGVyKSk7CisKKyAgICByZXR1
cm4gdW5pdGVFZmZlY3RSZWN0OworfQorCiB2b2lkIEZFTWVyZ2U6OmFwcGx5KEZpbHRlciopCiB7
CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2UuaAkocmV2
aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFTWVyZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgY29uc3QgVmVjdG9yPEZpbHRlckVmZmVjdCo+JiBtZXJnZUlucHV0cygpIGNvbnN0
OwogICAgICAgICB2b2lkIHNldE1lcmdlSW5wdXRzKGNvbnN0IFZlY3RvcjxGaWx0ZXJFZmZlY3Qq
PiYgbWVyZ2VJbnB1dHMpOwotICAgICAgICAKKworICAgICAgICBGbG9hdFJlY3QgdW5pdGVFZmZl
Y3RSZWN0KEZpbHRlciopOwogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2
b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihU
ZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFTW9ycGhvbG9neS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRkVNb3JwaG9sb2d5LmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGRU1vcnBob2xvZ3kuaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGZsb2F0IHJhZGl1c1koKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRSYWRpdXNZKGZsb2F0KTsKIAorICAgICAgICBGbG9hdFJl
Y3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lvbnMoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIHVu
aW9uT2ZDaGlsZEVmZmVjdFN1YlJlZ2lvbnMoZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAg
ICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAgICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4
dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7Cklu
ZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0LmNwcAkocmV2
aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFT2Zmc2V0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CiAgICAgICAgICAgICAgICAgICAyMDA1IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Cisg
ICAgICAgICAgICAgICAgICAyMDA5IERpcmsgU2NodWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogCiAg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yMyw4ICsyNCwxMCBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiU1ZHRkVPZmZzZXQuaCIKLSNpbmNsdWRlICJTVkdS
ZW5kZXJUcmVlQXNUZXh0LmgiCisKICNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsOCArNjQsMjYgQEAgdm9pZCBGRU9mZnNldDo6c2V0RHko
ZmxvYXQgZHkpCiAgICAgbV9keSA9IGR5OwogfQogCi12b2lkIEZFT2Zmc2V0OjphcHBseShGaWx0
ZXIqKQordm9pZCBGRU9mZnNldDo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CisgICAgbV9pbi0+
YXBwbHkoZmlsdGVyKTsKKyAgICBpZiAoIW1faW4tPnJlc3VsdEltYWdlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEludFJlY3QgYnVmZmVyUmVjdCA9IGVuY2xvc2luZ0ludFJlY3Qoc3ViUmVn
aW9uKCkpOworICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gZmlsdGVyR3JhcGhpYyhJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGJ1ZmZlclJlY3Quc2l6ZSgpLCBmYWxzZSkpOworCisgICAgaWYgKCFmaWx0ZXJH
cmFwaGljKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgZHN0UmVjdCA9IEZsb2F0
UmVjdChkeCgpICsgbV9pbi0+c3ViUmVnaW9uKCkueCgpIC0gc3ViUmVnaW9uKCkueCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR5KCkgKyBtX2luLT5zdWJSZWdpb24oKS55
KCkgLSBzdWJSZWdpb24oKS55KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9pbi0+c3ViUmVnaW9uKCkud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2luLT5zdWJSZWdpb24oKS5oZWlnaHQoKSk7CisKKyAgICBHcmFwaGljc0NvbnRleHQq
IGZpbHRlckNvbnRleHQgPSBmaWx0ZXJHcmFwaGljLT5jb250ZXh0KCk7CisgICAgZmlsdGVyQ29u
dGV4dC0+ZHJhd0ltYWdlKG1faW4tPnJlc3VsdEltYWdlKCktPmltYWdlKCksIGRzdFJlY3QpOwor
ICAgIHNldEVmZmVjdEJ1ZmZlcihmaWx0ZXJHcmFwaGljLnJlbGVhc2UoKSk7CiB9CiAKIHZvaWQg
RkVPZmZzZXQ6OmR1bXAoKQpJbmRleDogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RU9mZnNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVPZmZzZXQuaAkocmV2aXNpb24gNDQ2MDQpCisrKyBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZFT2Zmc2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBmbG9hdCBkeSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dER5KGZsb2F0KTsKIAorICAgICAgICBGbG9hdFJlY3QgdW5pdGVDaGlsZEVmZmVjdFN1YnJlZ2lv
bnMoRmlsdGVyKiBmaWx0ZXIpIHsgcmV0dXJuIHVuaW9uT2ZDaGlsZEVmZmVjdFN1YlJlZ2lvbnMo
ZmlsdGVyLCBtX2luLmdldCgpKTsgfQogICAgICAgICB2b2lkIGFwcGx5KEZpbHRlciopOwogICAg
ICAgICB2b2lkIGR1bXAoKTsKICAgICAgICAgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihUZXh0U3RyZWFtJiB0cykgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZFU3BlY3VsYXJMaWdodGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nLmgJKHJldmlzaW9uIDQ0NjA0
KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVNwZWN1bGFyTGlnaHRpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwogICAgICAgICB2
b2lkIHNldExpZ2h0U291cmNlKExpZ2h0U291cmNlKik7CiAKKyAgICAgICAgRmxvYXRSZWN0IHVu
aXRlRWZmZWN0UmVjdChGaWx0ZXIqIGZpbHRlcikgeyByZXR1cm4gdW5pb25PZkNoaWxkRWZmZWN0
U3ViUmVnaW9ucyhmaWx0ZXIsIG1faW4uZ2V0KCkpOyB9CiAgICAgICAgIHZvaWQgYXBwbHkoRmls
dGVyKik7CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5h
bFJlcHJlc2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVUaWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFVGlsZS5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRVRpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw4ICsyMSw5IEBACiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoRklMVEVSUykKICNp
bmNsdWRlICJTVkdGRVRpbGUuaCIKLSNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCisK
ICNpbmNsdWRlICJGaWx0ZXIuaCIKKyNpbmNsdWRlICJTVkdSZW5kZXJUcmVlQXNUZXh0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzcsNiArMzgsMTIgQEAgUGFzc1JlZlB0cjxGRVRp
bGU+IEZFVGlsZTo6Y3JlYXRlKEZpbHRlcgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxl
KGluKSk7CiB9CiAKK0Zsb2F0UmVjdCBGRVRpbGU6OnVuaXRlQ2hpbGRFZmZlY3RTdWJyZWdpb25z
KEZpbHRlciogZmlsdGVyKQoreworICAgIG1faW4tPmNhbGN1bGF0ZUVmZmVjdFJlY3QoZmlsdGVy
KTsKKyAgICByZXR1cm4gZmlsdGVyLT5maWx0ZXJSZWdpb24oKTsKK30KKwogdm9pZCBGRVRpbGU6
OmFwcGx5KEZpbHRlciopCiB7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFVGlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRkVUaWxlLmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGRVRpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGRVRp
bGU+IGNyZWF0ZShGaWx0ZXJFZmZlY3QqKTsKIAorICAgICAgICBGbG9hdFJlY3QgdW5pdGVDaGls
ZEVmZmVjdFN1YnJlZ2lvbnMoRmlsdGVyKik7CiAgICAgICAgIHZvaWQgYXBwbHkoRmlsdGVyKik7
CiAgICAgICAgIHZvaWQgZHVtcCgpOwogICAgICAgICBUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFRleHRTdHJlYW0mIHRzKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4
ICszMyw0NSBAQCBTVkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBGbG9hdFJlY3QmIGl0CiB7CiB9
CiAKLXZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0
KikKK3ZvaWQgU1ZHRmlsdGVyOjpjYWxjdWxhdGVFZmZlY3RTdWJSZWdpb24oRmlsdGVyRWZmZWN0
KiBlZmZlY3QpCiB7CisgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbkJCb3ggPSBlZmZlY3QtPnN1YlJl
Z2lvbigpOworICAgIEZsb2F0UmVjdCB1c2VCQm94ID0gZWZmZWN0LT51bmlvbk9mQ2hpbGRFZmZl
Y3RTdWJyZWdpb25zKCk7CisKKyAgICBGbG9hdFJlY3QgbmV3U3ViUmVnaW9uID0gc3ViUmVnaW9u
QkJveDsKKworICAgIGlmIChtX2VmZmVjdEJCb3hNb2RlKSB7CisgICAgICAgIG5ld1N1YlJlZ2lv
biA9IHVzZUJCb3g7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGFzWCgpKQorICAgICAgICAgICAg
bmV3U3ViUmVnaW9uLnNldFgobV9pdGVtQm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICogbV9p
dGVtQm94LndpZHRoKCkpOworCisgICAgICAgIGlmIChlZmZlY3QtPmhhc1koKSkKKyAgICAgICAg
ICAgIG5ld1N1YlJlZ2lvbi5zZXRZKG1faXRlbUJveC55KCkgKyBzdWJSZWdpb25CQm94LnkoKSAq
IG1faXRlbUJveC5oZWlnaHQoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGFzV2lkdGgoKSkK
KyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRXaWR0aChzdWJSZWdpb25CQm94LndpZHRoKCkg
KiBtX2l0ZW1Cb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGFzSGVpZ2h0KCkp
CisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHN1YlJlZ2lvbkJCb3guaGVpZ2h0
KCkgKiBtX2l0ZW1Cb3guaGVpZ2h0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChlZmZl
Y3QtPnhCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRYKHVz
ZUJCb3gueCgpICsgc3ViUmVnaW9uQkJveC54KCkgKiB1c2VCQm94LndpZHRoKCkpOworCisgICAg
ICAgIGlmIChlZmZlY3QtPnlCb3VuZGluZ0JveE1vZGUoKSkKKyAgICAgICAgICAgIG5ld1N1YlJl
Z2lvbi5zZXRZKHVzZUJCb3gueSgpICsgc3ViUmVnaW9uQkJveC55KCkgKiB1c2VCQm94LmhlaWdo
dCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT53aWR0aEJvdW5kaW5nQm94TW9kZSgpKQorICAg
ICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIHVz
ZUJCb3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGVpZ2h0Qm91bmRpbmdCb3hN
b2RlKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHN1YlJlZ2lvbkJCb3gu
aGVpZ2h0KCkgKiB1c2VCQm94LmhlaWdodCgpKTsKKyAgICB9CisKKyAgICAvLyBjbGlwIGV2ZXJ5
IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciByZWdpb24KKyAgICBuZXdTdWJSZWdpb24uaW50
ZXJzZWN0KG1fZmlsdGVyUmVjdCk7CisKKyAgICBlZmZlY3QtPnNldFN1YlJlZ2lvbihuZXdTdWJS
ZWdpb24pOwogfQogCiBQYXNzUmVmUHRyPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoY29u
c3QgRmxvYXRSZWN0JiBpdGVtQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QsIGJvb2wg
ZWZmZWN0QkJveE1vZGUsIGJvb2wgZmlsdGVyQkJveE1vZGUpCkluZGV4OiBXZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmgJKHJldmlzaW9uIDQ0NjA0KQorKysgV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxv
YXRSZWN0JiwgYm9vbCwgYm9vbCk7CiAKKyAgICAgICAgYm9vbCBlZmZlY3RCb3VuZGluZ0JveE1v
ZGUoKSB7IHJldHVybiBtX2VmZmVjdEJCb3hNb2RlOyB9CisKKyAgICAgICAgRmxvYXRSZWN0IGZp
bHRlclJlZ2lvbigpIHsgcmV0dXJuIG1fZmlsdGVyUmVjdDsgfQorICAgICAgICBGbG9hdFJlY3Qg
c291cmNlSW1hZ2VSZWN0KCkgeyByZXR1cm4gbV9pdGVtQm94OyB9CiAgICAgICAgIHZvaWQgY2Fs
Y3VsYXRlRWZmZWN0U3ViUmVnaW9uKEZpbHRlckVmZmVjdCopOwogCiAgICAgcHJpdmF0ZToKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDQ0NjM0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDYtMTIgIERpcmsgU2NodWx6ZSAgPGtyaXRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCB0ZXN0cyBmb3IgdGhlIG5ldyBzdWJSZ2lvbi1jb2RlIG9uIFNWRyBmaWx0ZXJz
LgorCisgICAgICAgICogc3ZnL2ZpbHRlcnM6IEFkZGVkLgorICAgICAgICAqIHN2Zy9maWx0ZXJz
L3N1YlJlZ2lvbi1vbmUtZWZmZWN0LnN2ZzogQWRkZWQuCisgICAgICAgICogc3ZnL2ZpbHRlcnMv
c3ViUmVnaW9uLXR3by1lZmZlY3RzLnN2ZzogQWRkZWQuCisKIDIwMDktMDYtMTIgIEd1c3Rhdm8g
Tm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFu
IEFsb256by4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi1vbmUtZWZm
ZWN0LnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zdWJSZWdpb24t
b25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9z
dWJSZWdpb24tb25lLWVmZmVjdC5zdmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTk3IEBACis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9ImJvZHkiIHdpZHRoPSI4
MDAiIGhlaWdodD0iNjAwIj4KKyAgICA8ZGVmcz4KKyAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CisgICAgICAgKiB7c3Ryb2tlOmJsYWNrOyBzdHJva2Utd2lkdGg6MC4yO30KKyAgICAgIDwv
c3R5bGU+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDEiIHg9Ii01MCUi
IHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHBy
aW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQg
eD0iMCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICA8L2Zp
bHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMiIgeD0iLTUwJSIg
eT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJp
bWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4
PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgPC9m
aWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDMiIHg9Ii01MCUi
IHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHBy
aW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQg
eD0iMCUiIHk9IjAlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0
ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDQiIHg9Ii01MCUiIHk9
Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHByaW1p
dGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0i
NTAlIiB5PSI1MCUiIHdpZHRoPSI1MCUiIGhlaWdodD0iMjUlIiAvPgorICAgICAgICA8L2ZpbHRl
cj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wNSIgeD0iLTUwJSIgeT0i
LTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0
aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIy
NSUiIHk9IjI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVy
PgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA2IiB4PSItNTAlIiB5PSIt
NTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmltaXRp
dmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0y
NSUiIHk9Ii0yNSUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmls
dGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzA3IiB4PSItNTAlIiB5
PSItNTAlIiB3aWR0aD0iMTAwJSIgCisgICAgICAgICAgICAgICAgaGVpZ2h0PSIxMDAlIiBwcmlt
aXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9
IjEyLjUlIiB5PSIxMi41JSIgd2lkdGg9IjI1JSIgaGVpZ2h0PSIyNSUiIC8+CisgICAgICAgIDwv
ZmlsdGVyPgorCisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDgiIHByaW1p
dGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0i
MCUiIHk9IjAlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICA8L2ZpbHRl
cj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wOSIgcHJpbWl0aXZlVW5p
dHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5
PSItMjUlIiB3aWR0aD0iNTAlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisK
KyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTAiIHByaW1pdGl2ZVVuaXRzPSJv
YmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiB3
aWR0aD0iNTAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTEiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSIx
MDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0
ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0XzEyIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdC
b3giPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3aWR0aD0iNTAlIiBo
ZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0i
ZmlsdGVyXzFlZmZlY3RfMTMiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+Cisg
ICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmls
dGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAg
ICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjE1MCUiIGhlaWdodD0i
MTUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisgICAgPC9kZWZzPgorCisgICAgPGcgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1k
YXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6Mztm
aWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7
c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDEpO3N0cm9rZTpub25lOyIv
PgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExMCwgMTApIj4KKyAg
ICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAs
MjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAg
IDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0i
ZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgor
CisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJs
KCNmaWx0ZXJfMWVmZmVjdF8wMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcg
dHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0i
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtz
dHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFy
cmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+Cisg
ICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9
ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAzKTtzdHJva2U6
bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDEw
KSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAg
ICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgor
ICAgICAgICA8cmVjdCB4PSI1MCIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjEyLjUiIHN0
eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIx
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRl
cjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA0KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAg
ICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1k
YXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIzNy41IiB5
PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtm
aWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0
ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA1
KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0
ZSg1MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsi
Lz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHls
ZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6
MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13
aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9
IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1
LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA2KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8
L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MTAsIDEwKSI+CisgICAgICAgIDxy
ZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIg
eT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDAp
O3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4
PSIzMS4yNSIgeT0iMzEuMjUiIHdpZHRoPSIxMi41IiBoZWlnaHQ9IjEyLjUiIHN0eWxlPSJmaWxs
OnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAg
ICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRo
PSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2Zp
bHRlcl8xZWZmZWN0XzA3KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFu
c2Zvcm09InRyYW5zbGF0ZSgxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9r
ZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAi
IGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJh
eTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5
OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAg
ICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8wOCk7c3Ryb2tlOm5v
bmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEwLCAyMTAp
Ij4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAg
ICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6
cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4K
KyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjM3LjUi
IHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDow
LjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5
PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2Zp
bHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA5KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisK
KyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4
PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwy
NTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIy
MCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0
cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIy
NSIgeT0iMjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTAp
O2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZp
bHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3Rf
MTApO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNs
YXRlKDMxMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBo
ZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6
NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAi
IHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3Bh
Y2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5PSI1MCIgd2lkdGg9IjUwIiBoZWln
aHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Ut
d2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4
PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1
NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAg
PC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDEwLCAyMTApIj4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIy
MCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAs
MjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJl
Y3QgeD0iMzcuNSIgeT0iMzcuNSIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpy
Z2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAg
ICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0
ZXJfMWVmZmVjdF8xMik7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoNTEwLCAyMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3
aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tl
LWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIg
aGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5
OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIg
d2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFj
aXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgor
ICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMyk7c3Ryb2tl
Om5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAy
MTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAi
IHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAg
ICAgICA8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZp
bGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIg
Lz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1
IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6
MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIg
eT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtm
aWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xNCk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgor
PC9zdmc+CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9zdWJSZWdpb24tdHdvLWVmZmVj
dHMuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9maWx0ZXJzL3N1YlJlZ2lvbi10
d28tZWZmZWN0cy5zdmcJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvZmlsdGVycy9z
dWJSZWdpb24tdHdvLWVmZmVjdHMuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyNCBAQAor
PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJib2R5IiB3aWR0aD0i
ODAwIiBoZWlnaHQ9IjYwMCI+CisgICAgPGRlZnM+CisgICAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorICAgICAgICoge3N0cm9rZTpibGFjazsgc3Ryb2tlLXdpZHRoOjAuMjt9CisgICAgICA8
L3N0eWxlPgorICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8wMSIgeD0iLTUwJSIg
eT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJp
bWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4
PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4K
KyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3Rf
MDIiIHg9Ii01MCUiIHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWln
aHQ9IjEwMCUiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAg
ICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjUwJSIgaGVpZ2h0PSI3NSUiIC8+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iNTAlIiB5PSI1MCUiIHdpZHRoPSI3NSUiIGhlaWdo
dD0iNzUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8wMyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAg
ICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4K
KyAgICAgICAgICAgIDxmZU9mZnNldCB3aWR0aD0iMTAwJSIgLz4KKyAgICAgICAgICAgIDxmZU9m
ZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wNCIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAgICAg
ICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCB5PSIwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgICAgICA8
ZmVPZmZzZXQgeD0iMjUlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8wNSIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAor
ICAgICAgICAgICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5k
aW5nQm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAl
IiBoZWlnaHQ9IjEwMCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgLz4KKyAgICAgICAgPC9m
aWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMDYiIHg9Ii01MCUi
IHk9Ii01MCUiIHdpZHRoPSIxMDAlIiAKKyAgICAgICAgICAgICAgICBoZWlnaHQ9IjEwMCUiIHBy
aW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQg
d2lkdGg9IjUwJSIgaGVpZ2h0PSI1MCUiIC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUi
IHk9IjAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0
ZXJfMWVmZmVjdF8wNyIgeD0iLTUwJSIgeT0iLTUwJSIgd2lkdGg9IjEwMCUiIAorICAgICAgICAg
ICAgICAgIGhlaWdodD0iMTAwJSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4K
KyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iNTAlIiBoZWln
aHQ9IjUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSI3
NSUiLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKworICAgICAgICA8ZmlsdGVyIGlkPSJmaWx0ZXJf
MWVmZmVjdF8wOCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICAgICAg
ICAgIDxmZU9mZnNldCB4PSIwJSIgeT0iMCUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIC8+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9IjUwJSIgaGVp
Z2h0PSI1MCUiIC8+CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZp
bHRlcl8xZWZmZWN0XzA5IiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAg
ICAgICAgICAgPGZlT2Zmc2V0IHg9Ii0yNSUiIHk9Ii0yNSUiIHdpZHRoPSI1MCUiIGhlaWdodD0i
NzUlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjI1JSIgeT0iMjUlIiB3aWR0aD0iNTAl
IiBoZWlnaHQ9IjUwJSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAgPGZpbHRlciBp
ZD0iZmlsdGVyXzFlZmZlY3RfMTAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+
CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMCUiIHk9IjAlIiBoZWlnaHQ9IjUwJSIgLz4KKyAg
ICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8Zmls
dGVyIGlkPSJmaWx0ZXJfMWVmZmVjdF8xMSIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5n
Qm94Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IC8+
CisgICAgICAgIDwvZmlsdGVyPgorCisgICAgICAgIDxmaWx0ZXIgaWQ9ImZpbHRlcl8xZWZmZWN0
XzEyIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgICAgICAgICAgPGZl
T2Zmc2V0IC8+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iMjUlIiB5PSIyNSUiIHdpZHRoPSI1
MCUiIGhlaWdodD0iNTAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4KKworICAgICAgICA8ZmlsdGVy
IGlkPSJmaWx0ZXJfMWVmZmVjdF8xMyIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94
Ij4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItMjUlIiB5PSItMjUlIiB3aWR0aD0iMTAwJSIg
aGVpZ2h0PSIxMDAlIiAvPgorICAgICAgICAgICAgPGZlT2Zmc2V0IHg9IjUwJSIgeT0iNTAlIiB3
aWR0aD0iNzUlIiBoZWlnaHQ9Ijc1JSIgLz4KKyAgICAgICAgPC9maWx0ZXI+CisKKyAgICAgICAg
PGZpbHRlciBpZD0iZmlsdGVyXzFlZmZlY3RfMTQiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCI+CisgICAgICAgICAgICA8ZmVPZmZzZXQgeD0iLTI1JSIgeT0iLTI1JSIgd2lkdGg9
IjE1MCUiIGhlaWdodD0iMTUwJSIgLz4KKyAgICAgICAgICAgIDxmZU9mZnNldCB4PSItNTAlIiB5
PSItNTAlIiB3aWR0aD0iMjAwJSIgaGVpZ2h0PSIyMDAlIiAvPgorICAgICAgICA8L2ZpbHRlcj4K
KyAgICA8L2RlZnM+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMCwgMTApIj4KKyAg
ICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJm
aWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVj
dCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigyMDAs
MjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAg
IDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpy
Z2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7IiAvPgorCisgICAg
ICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0i
NTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigwLDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0
ZXJfMWVmZmVjdF8wMSk7c3Ryb2tlOm5vbmU7Ii8+CisgICAgPC9nPgorCisgICAgPGcgdHJhbnNm
b3JtPSJ0cmFuc2xhdGUoMTEwLCAxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2Ut
ZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVp
Z2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwyMDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7
ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAgPHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lk
dGg9IjI1IiBoZWlnaHQ9IjM3LjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjUwIiB5PSI1MCIg
d2lkdGg9IjM3LjUiIGhlaWdodD0iMzcuNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwt
b3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIg
LS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIg
c3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAyKTtz
dHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgy
MTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0i
ZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40
IiAvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7
Ii8+CisgICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5
bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsi
IC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIx
MjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRl
cjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzAzKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAg
ICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwx
NTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1k
YXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1v
cGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIzNy41IiB5
PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjI1IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZpbHRl
ciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDQp
O3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRl
KDQxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdo
dD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIv
PgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxl
PSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTow
LjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUw
IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6
MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1
MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRo
OjAuNTsiIC8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDAp
O2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzA1KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+
CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MTAsIDEwKSI+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUw
LDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMCIgeT0i
MCIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0
cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIw
IiB5PSIwIiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtm
aWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjI1
IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7
ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIgLz4KKworICAgICAgICA8IS0tIEZp
bHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3Rf
MDYpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNs
YXRlKDYxMCwgMTApIj4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhl
aWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1
OyIvPgorICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0
eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0
eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVp
Z2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tl
LXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iMzcuNSIg
aGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ry
b2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJl
Y3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2Io
MCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMDcpO3N0cm9rZTpub25lOyIvPgor
ICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJn
YigwLDAsMTUwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAg
IDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMDgpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRy
YW5zZm9ybT0idHJhbnNsYXRlKDExMCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIy
NSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0
cm9rZS1kYXNoYXJyYXk6NTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0i
NjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hh
cnJheTozO2ZpbGwtb3BhY2l0eTowLjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEy
LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMCwwLDE1MCk7Zmls
bC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAgICAgICA8cmVjdCB4PSIzNy41
IiB5PSIzNy41IiB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCww
KTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBG
aWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0
XzA5KTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5z
bGF0ZSgyMTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIg
aGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5
OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYw
IiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9w
YWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI2MCIgaGVp
Z2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tl
LXdpZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhl
aWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9r
ZS13aWR0aDowLjU7Ii8+CisKKyAgICAgICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0
IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAs
MjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRlcl8xZWZmZWN0XzEwKTtzdHJva2U6bm9uZTsiLz4KKyAg
ICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMTAsIDIxMCkiPgorICAgICAg
ICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6
cmdiKDE1MCwyNTUsMTUwKTtzdHJva2UtZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9
IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBoZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIw
MCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8
cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdi
KDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKyAgICAgICAg
PHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJn
YigxNTAsMCwwKTtmaWxsLW9wYWNpdHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisKKyAgICAg
ICAgPCEtLSBGaWx0ZXIgLS0+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIxMjUiIHdpZHRoPSI1
MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMjU1LDApO2ZpbHRlcjp1cmwoI2ZpbHRl
cl8xZWZmZWN0XzExKTtzdHJva2U6bm9uZTsiLz4KKyAgICA8L2c+CisKKyAgICA8ZyB0cmFuc2Zv
cm09InRyYW5zbGF0ZSg0MTAsIDIxMCkiPgorICAgICAgICA8cmVjdCB4PSIyNSIgeT0iMjUiIHdp
ZHRoPSI1MCIgaGVpZ2h0PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDE1MCwyNTUsMTUwKTtzdHJva2Ut
ZGFzaGFycmF5OjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9IjYwIiBo
ZWlnaHQ9IjYwIiBzdHlsZT0iZmlsbDpyZ2IoMjAwLDIwMCwyMDApO3N0cm9rZS1kYXNoYXJyYXk6
MztmaWxsLW9wYWNpdHk6MC40IiAvPgorICAgICAgICA8cmVjdCB4PSIxMi41IiB5PSIxMi41IiB3
aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxlPSJmaWxsOnJnYigwLDAsMTUwKTtmaWxsLW9wYWNp
dHk6MC40O3N0cm9rZS13aWR0aDowLjU7Ii8+CisgICAgICAgIDxyZWN0IHg9IjM3LjUiIHk9IjM3
LjUiIHdpZHRoPSIyNSIgaGVpZ2h0PSIyNSIgc3R5bGU9ImZpbGw6cmdiKDE1MCwwLDApO2ZpbGwt
b3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKworICAgICAgICA8IS0tIEZpbHRlciAt
LT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9IjUwIiBz
dHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgjZmlsdGVyXzFlZmZlY3RfMTIpO3N0
cm9rZTpub25lOyIvPgorICAgIDwvZz4KKworICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUx
MCwgMjEwKSI+CisgICAgICAgIDxyZWN0IHg9IjI1IiB5PSIyNSIgd2lkdGg9IjUwIiBoZWlnaHQ9
IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDI1NSwxNTApO3N0cm9rZS1kYXNoYXJyYXk6NTsiLz4K
KyAgICAgICAgPHJlY3QgeD0iMjAiIHk9IjIwIiB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHN0eWxl
PSJmaWxsOnJnYigyMDAsMjAwLDIwMCk7c3Ryb2tlLWRhc2hhcnJheTozO2ZpbGwtb3BhY2l0eTow
LjQiIC8+CisgICAgICAgIDxyZWN0IHg9IjEyLjUiIHk9IjEyLjUiIHdpZHRoPSI1MCIgaGVpZ2h0
PSI1MCIgc3R5bGU9ImZpbGw6cmdiKDAsMCwxNTApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdp
ZHRoOjAuNTsiLz4KKyAgICAgICAgPHJlY3QgeD0iNTAiIHk9IjUwIiB3aWR0aD0iMzcuNSIgaGVp
Z2h0PSIzNy41IiBzdHlsZT0iZmlsbDpyZ2IoMTUwLDAsMCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJv
a2Utd2lkdGg6MC41OyIvPgorCisgICAgICAgIDwhLS0gRmlsdGVyIC0tPgorICAgICAgICA8cmVj
dCB4PSIyNSIgeT0iMTI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxsOnJnYigw
LDI1NSwwKTtmaWx0ZXI6dXJsKCNmaWx0ZXJfMWVmZmVjdF8xMyk7c3Ryb2tlOm5vbmU7Ii8+Cisg
ICAgPC9nPgorCisgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNjEwLCAyMTApIj4KKyAgICAg
ICAgPHJlY3QgeD0iMjUiIHk9IjI1IiB3aWR0aD0iNTAiIGhlaWdodD0iNTAiIHN0eWxlPSJmaWxs
OnJnYigxNTAsMjU1LDE1MCk7c3Ryb2tlLWRhc2hhcnJheTo1OyIvPgorICAgICAgICA8cmVjdCB4
PSIyMCIgeT0iMjAiIHdpZHRoPSI2MCIgaGVpZ2h0PSI2MCIgc3R5bGU9ImZpbGw6cmdiKDIwMCwy
MDAsMjAwKTtzdHJva2UtZGFzaGFycmF5OjM7ZmlsbC1vcGFjaXR5OjAuNCIgLz4KKyAgICAgICAg
PHJlY3QgeD0iMTIuNSIgeT0iMTIuNSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1IiBzdHlsZT0iZmls
bDpyZ2IoMCwwLDE1MCk7ZmlsbC1vcGFjaXR5OjAuNDtzdHJva2Utd2lkdGg6MC41OyIvPgorICAg
ICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgc3R5bGU9ImZp
bGw6cmdiKDE1MCwwLDApO2ZpbGwtb3BhY2l0eTowLjQ7c3Ryb2tlLXdpZHRoOjAuNTsiLz4KKwor
ICAgICAgICA8IS0tIEZpbHRlciAtLT4KKyAgICAgICAgPHJlY3QgeD0iMjUiIHk9IjEyNSIgd2lk
dGg9IjUwIiBoZWlnaHQ9IjUwIiBzdHlsZT0iZmlsbDpyZ2IoMCwyNTUsMCk7ZmlsdGVyOnVybCgj
ZmlsdGVyXzFlZmZlY3RfMTQpO3N0cm9rZTpub25lOyIvPgorICAgIDwvZz4KKzwvc3ZnPgo=
</data>
<flag name="review"
          id="15924"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>