<?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>22981</bug_id>
          
          <creation_ts>2008-12-23 20:51:48 -0800</creation_ts>
          <short_desc>SVG-as-image redraw broken: svg-as-background-5.html LayoutTest fails</short_desc>
          <delta_ts>2011-04-04 13:28:03 -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>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>103334</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-12-23 20:51:48 -0800</bug_when>
    <thetext>Following on from bug 21910, this layout test continues to fail:
LayoutTests/fast/backgrounds/svg-as-background-5.html

The reason is that the SVG content loads slowly, and has one resource load failure (for the JS file), so the first time SVGImage draws, the SVG has not finished loading yet. After that, layout within the SVG fails to cause repaints, because the SVGImage&apos;s FrameView has no associated platform widget, and the EmptyChromeClient does nothing with repaints. Thus the repaints get thrown on the floor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103340</commentid>
    <comment_count>1</comment_count>
      <attachid>26235</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-12-23 21:45:58 -0800</bug_when>
    <thetext>Created attachment 26235
Strawman patch

Maybe something like this. We could enhance ImageObserver to have a new method like imageChangedInRect(const IntRect&amp;) if we want to restrict redraws to a subset of the image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103480</commentid>
    <comment_count>2</comment_count>
      <attachid>26257</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-12-26 11:13:31 -0800</bug_when>
    <thetext>Created attachment 26257
Patch, testcases, changelog

        Reviewed by NOBODY (OOPS!).

        https://bugs.webkit.org/show_bug.cgi?id=22981

        Repaints inside of an SVGImage were thrown on the floor,
        which broke incremental painting due to loading, or SVG animation.
        Fix this by assigning the SVGImage a ChromeClient subclass that passes
        along repaints via a new method on ImageObserver, which also takes
        a rect parameter for the changed rect, allowing incremental repaints.
        Fix RenderImage::imageChanged to take advantage of this changedRect to
        only repaint the changed parts of the image.
        
        Tests: fast/backgrounds/animated-svg-as-background.html
               fast/backgrounds/animated-svg-as-mask.html
               fast/images/animated-svg-as-image.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103482</commentid>
    <comment_count>3</comment_count>
      <attachid>26257</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-26 11:46:46 -0800</bug_when>
    <thetext>Comment on attachment 26257
Patch, testcases, changelog

&gt; -        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this));
&gt; +        // FIXME: what rect to use?
&gt; +        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this), IntRect(0, 0, -1, -1));

Seems clear that passing no specific rect is the right thing to do. Why is there any doubt?

&gt; +    virtual void changedInRect(const Image* image, const IntRect&amp; rect);

Please omit the names &quot;image&quot; and &quot;rect&quot; here.

&gt; +// Returns a rect produced by mapping and scaling r from the bounds of srcRect to the bounds of destRect
&gt; +static IntRect mapRect(const IntRect&amp; r, const IntRect&amp; srcRect, const IntRect&amp; destRect)
&gt; +{
&gt; +    float widthMult = (float)destRect.width() / (float)srcRect.width();
&gt; +    float heightMult = (float)destRect.height() / (float)srcRect.height();
&gt; +
&gt; +    FloatRect mappedRect(destRect.x() + (r.x() - srcRect.x()) * widthMult,
&gt; +                         destRect.y() + (r.y() - srcRect.y()) * heightMult,
&gt; +                         r.width() * widthMult,
&gt; +                         r.height() * heightMult);
&gt; +    
&gt; +    return enclosingIntRect(mappedRect);
&gt; +}

Seems weak to be converting back and forth to int like this. Formatting here is also a bit strange. Use of float vs. double seems a bit arbitrary, perhaps driven by the type FloatRect. I&apos;m not fond of the &quot;mult&quot; abbreviation here, nor of the use of C-style casts to convert an int to a float.

&gt; +    virtual void chromeDestroyed()
&gt; +    {
&gt; +        // There is no setClient() on Chrome, so we can&apos;t clear its client explicitly. We have to wait for
&gt; +        // this callback.
&gt; +        delete this;
&gt; +    }

We could add a setClient() on Chrome if we like. We could also consider making the SVGImage itself be the ChromeClient, using private inheritance perhaps?

I&apos;m going to say r=me because I had enough comments that it seems worth revising another round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103506</commentid>
    <comment_count>4</comment_count>
      <attachid>26262</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-12-26 17:07:14 -0800</bug_when>
    <thetext>Created attachment 26262
Revised patch

(In reply to comment #3)
&gt; (From update of attachment 26257 [review])
&gt; &gt; -        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this));
&gt; &gt; +        // FIXME: what rect to use?
&gt; &gt; +        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this), IntRect(0, 0, -1, -1));
&gt; 
&gt; Seems clear that passing no specific rect is the right thing to do. Why is
&gt; there any doubt?

Removed.

&gt; &gt; +    virtual void changedInRect(const Image* image, const IntRect&amp; rect);

Done.

&gt; &gt; +// Returns a rect produced by mapping and scaling r from the bounds of srcRect to the bounds of destRect
&gt; &gt; +static IntRect mapRect(const IntRect&amp; r, const IntRect&amp; srcRect, const IntRect&amp; destRect)
&gt; &gt; +{
&gt; &gt; +    float widthMult = (float)destRect.width() / (float)srcRect.width();
&gt; &gt; +    float heightMult = (float)destRect.height() / (float)srcRect.height();
&gt; &gt; +
&gt; &gt; +    FloatRect mappedRect(destRect.x() + (r.x() - srcRect.x()) * widthMult,
&gt; &gt; +                         destRect.y() + (r.y() - srcRect.y()) * heightMult,
&gt; &gt; +                         r.width() * widthMult,
&gt; &gt; +                         r.height() * heightMult);
&gt; &gt; +    
&gt; &gt; +    return enclosingIntRect(mappedRect);
&gt; &gt; +}
&gt; 
&gt; Seems weak to be converting back and forth to int like this. Formatting here is
&gt; also a bit strange. Use of float vs. double seems a bit arbitrary, perhaps
&gt; driven by the type FloatRect. I&apos;m not fond of the &quot;mult&quot; abbreviation here, nor
&gt; of the use of C-style casts to convert an int to a float.

I tidied this up a bit, but I think at least the width and height computations need
to do float-int conversions. As for double vs. float, all of the coordinate math I could
find uses floats. Much of it uses C-style cases too.

&gt; &gt; +    virtual void chromeDestroyed()
&gt; &gt; +    {
&gt; &gt; +        // There is no setClient() on Chrome, so we can&apos;t clear its client explicitly. We have to wait for
&gt; &gt; +        // this callback.
&gt; &gt; +        delete this;
&gt; &gt; +    }
&gt; 
&gt; We could add a setClient() on Chrome if we like.

That would require adding null checks on m_client in lots of places (the contract, for
now, seems to be that Chrome::m_client is never null).

&gt; We could also consider making the SVGImage itself be the ChromeClient, using
&gt; private inheritance perhaps?

I think that will result in lifetime issues. ChromeClient is not refcounted,
but SVGImage is, and the image gets destroyed before the Chrome.

So without fairly significant Chrome work, this seems the simplest solution for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>103603</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-12-28 10:38:02 -0800</bug_when>
    <thetext>&gt; I think that will result in lifetime issues. ChromeClient is not refcounted,
&gt; but SVGImage is, and the image gets destroyed before the Chrome.

I guess I could manually refcount the SVGImage on behalf of Chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104107</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 10:31:09 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; As for double vs. float, all of the coordinate math I could
&gt; find uses floats. Much of it uses C-style cases too.

Switching from float to double and figuring out when to use which is going to be an important future topic.

But the C-style casts are not in doubt. They are deprecated and should never be used anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104109</commentid>
    <comment_count>7</comment_count>
      <attachid>26262</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-02 10:44:49 -0800</bug_when>
    <thetext>Comment on attachment 26262
Revised patch

&gt; -        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this));
&gt; +        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this), IntRect(0, 0, -1, -1));

I think using this special value for IntRect as a signal is ugly. At the call site programmers have no way to know what the -1/-1 size means. Even if I look in the the header file, I have to follow the thread of calls all the way to CachedResourceClient::imageChanged; in many cases the caller is calling another function that forwards a rectangle a couple of levels, and so won&apos;t see the comment.

A named constant would be better, unknownChangedRect perhaps or entireImageChangedRect. Even better would be a design that didn&apos;t use a magic value. We typically refer to that as &quot;in-band signaling&quot; and sometimes go out of our way to avoid it. For example, you could have two separate imageChanged functions, one with and one without a rect. But given all the affected classes, I guess you don&apos;t want that.

If you do want to preserve the in-band signaling but don&apos;t want to use the named constant, an economical way to do it would be to make the argument a const IntRect* = 0 and use the null pointer to mean unknown/entire-image. This means that you can&apos;t make the mistake of using the special rectangle as a rectangle, because it will do a null dereference. I also think that the value 0 is a more clear way to say &quot;I don&apos;t have a rectangle&quot;.

And you could have a default argument so we wouldn&apos;t ever have to specify IntRect(0, 0, -1, -1) explicitly. Perhaps you omitted it to help you remember to specify the rectangle whenever possible. That&apos;s an argument against a default argument.

&gt; +        if (rect.width() != -1 &amp;&amp; rect.height() != -1) {

I find it a little strange that this checks both the width and height, but neither x nor y. Why not just width, or all four? Maybe if you had entireImageChangedRect, you could also have isEntireImageChangedRect function or use if (rect == entireImageChangedRect). Either would be clearer than the check for -1.

&gt; +    virtual void chromeDestroyed()
&gt; +    {
&gt; +        // There is no setClient() on Chrome, so we can&apos;t clear its client explicitly. We have to wait for
&gt; +        // this callback.
&gt; +        delete this;
&gt; +    }

Can the image outlast the chrome client? If not, why not? If so, then you need to set m_image-&gt;m_chromeClient to 0 here to make sure the image doesn&apos;t access a deleted chrome client object.

Can the chrome client outlast the image? If not, why not? If so, then I think you need some null checks on m_image and you need ~SVGImage to clear out m_chromeClient-&gt;m_image to make sure the chrome client object doesn&apos;t access the deleted image.

I&apos;m going to say r=me, but I&apos;m worried about those lifetime issues, and I&apos;d like to hear what you have to say about them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104135</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-01-02 11:34:12 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 26262 [review])
&gt; &gt; -        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this));
&gt; &gt; +        curr-&gt;first-&gt;imageChanged(static_cast&lt;WrappedImagePtr&gt;(this), IntRect(0, 0, -1, -1));
&gt; 
&gt; I think using this special value for IntRect as a signal is ugly. At the call
&gt; site programmers have no way to know what the -1/-1 size means. Even if I look
&gt; in the the header file, I have to follow the thread of calls all the way to
&gt; CachedResourceClient::imageChanged; in many cases the caller is calling another
&gt; function that forwards a rectangle a couple of levels, and so won&apos;t see the
&gt; comment.
&gt; 
&gt; A named constant would be better, unknownChangedRect perhaps or
&gt; entireImageChangedRect. Even better would be a design that didn&apos;t use a magic
&gt; value. We typically refer to that as &quot;in-band signaling&quot; and sometimes go out
&gt; of our way to avoid it. For example, you could have two separate imageChanged
&gt; functions, one with and one without a rect. But given all the affected classes,
&gt; I guess you don&apos;t want that.
&gt; 
&gt; If you do want to preserve the in-band signaling but don&apos;t want to use the
&gt; named constant, an economical way to do it would be to make the argument a
&gt; const IntRect* = 0 and use the null pointer to mean unknown/entire-image. This
&gt; means that you can&apos;t make the mistake of using the special rectangle as a
&gt; rectangle, because it will do a null dereference. I also think that the value 0
&gt; is a more clear way to say &quot;I don&apos;t have a rectangle&quot;.

I like the IntRect* approach, and the ability to provide a default argument.

&gt; &gt; +    virtual void chromeDestroyed()
&gt; &gt; +    {
&gt; &gt; +        // There is no setClient() on Chrome, so we can&apos;t clear its client explicitly. We have to wait for
&gt; &gt; +        // this callback.
&gt; &gt; +        delete this;
&gt; &gt; +    }
&gt; 
&gt; Can the image outlast the chrome client? If not, why not? If so, then you need
&gt; to set m_image-&gt;m_chromeClient to 0 here to make sure the image doesn&apos;t access
&gt; a deleted chrome client object.

The image cannot outlast the chrome client; the image owns the Page, which owns
the Chrome (neither are ref-counted). So in ~SVGImage, the Page is destroyed,
which destroys the Chrome, which calls chromeDestroyed() on its client.

&gt; Can the chrome client outlast the image? If not, why not?

Same as above. The lifetimes of the Page, and the Chrome are all controlled by
SVGImage, which destroys the Page in its destructor. So I think we&apos;re guaranteed
to have deterministic teardown (unless future changes make Page or Chrome
ref-counted).

&gt; you need some null checks on m_image and you need ~SVGImage to clear out
&gt; m_chromeClient-&gt;m_image to make sure the chrome client object doesn&apos;t access
&gt; the deleted image.

I can manually clear the FrameView, Frame and Page own/refptrs in ~SVGImage,
have chromeDestroyed() clear the SVGImageChromeClient m_image, and then assert in ~SVGImage
that the chromeClient&apos;s image was cleared, before deleting m_chromeClient there.
That&apos;s a little cleaner (no &quot;delete this&quot;), and add some future-proofing.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104164</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-01-02 13:04:43 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/fast/backgrounds/animated-svg-as-background.html
	A	LayoutTests/fast/backgrounds/animated-svg-as-mask.html
	A	LayoutTests/fast/backgrounds/resources/animated-rect-fixed-size.svg
	A	LayoutTests/fast/backgrounds/resources/animated-rect-relative-size.svg
	M	LayoutTests/fast/backgrounds/svg-as-background-5.html
	A	LayoutTests/fast/canvas/canvas-as-image-incremental-repaint.html
	A	LayoutTests/fast/canvas/canvas-as-image.html
	A	LayoutTests/fast/images/animated-svg-as-image.html
	A	LayoutTests/fast/images/resources/animated-rect-fixed-size.svg
	A	LayoutTests/fast/images/resources/animated-rect-relative-size.svg
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-background-expected.checksum
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-background-expected.png
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-background-expected.txt
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-mask-expected.checksum
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-mask-expected.png
	A	LayoutTests/platform/mac/fast/backgrounds/animated-svg-as-mask-expected.txt
	M	LayoutTests/platform/mac/fast/backgrounds/svg-as-background-5-expected.checksum
	M	LayoutTests/platform/mac/fast/backgrounds/svg-as-background-5-expected.png
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-expected.checksum
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-expected.png
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-expected.txt
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-incremental-repaint-expected.checksum
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-incremental-repaint-expected.png
	A	LayoutTests/platform/mac/fast/canvas/canvas-as-image-incremental-repaint-expected.txt
	A	LayoutTests/platform/mac/fast/images/animated-svg-as-image-expected.checksum
	A	LayoutTests/platform/mac/fast/images/animated-svg-as-image-expected.png
	A	LayoutTests/platform/mac/fast/images/animated-svg-as-image-expected.txt
	M	WebCore/ChangeLog
	M	WebCore/css/CSSCanvasValue.cpp
	M	WebCore/loader/CachedImage.cpp
	M	WebCore/loader/CachedImage.h
	M	WebCore/loader/CachedResourceClient.h
	M	WebCore/platform/graphics/ImageObserver.h
	M	WebCore/rendering/RenderBox.cpp
	M	WebCore/rendering/RenderBox.h
	M	WebCore/rendering/RenderImage.cpp
	M	WebCore/rendering/RenderImage.h
	M	WebCore/rendering/RenderListMarker.cpp
	M	WebCore/rendering/RenderListMarker.h
	M	WebCore/rendering/RenderObject.cpp
	M	WebCore/rendering/RenderObject.h
	M	WebCore/rendering/RenderSVGImage.cpp
	M	WebCore/rendering/RenderSVGImage.h
	M	WebCore/rendering/RenderScrollbarPart.cpp
	M	WebCore/rendering/RenderScrollbarPart.h
	M	WebCore/rendering/RenderTableCol.cpp
	M	WebCore/rendering/RenderTableCol.h
	M	WebCore/rendering/RenderTableRow.cpp
	M	WebCore/rendering/RenderTableRow.h
	M	WebCore/rendering/RenderTableSection.cpp
	M	WebCore/rendering/RenderTableSection.h
	M	WebCore/svg/graphics/SVGImage.cpp
	M	WebCore/svg/graphics/SVGImage.h
Committed r39555
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379015</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 13:28:03 -0700</bug_when>
    <thetext>Looks like this caused bug 57052.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26235</attachid>
            <date>2008-12-23 21:45:58 -0800</date>
            <delta_ts>2008-12-26 11:13:31 -0800</delta_ts>
            <desc>Strawman patch</desc>
            <filename>22981_partial.txt</filename>
            <type>text/plain</type>
            <size>2931</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAppbmRleCBhNWFjZDFmLi43OWNhNjg0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01MCw5ICs1MCwzNCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIFJlcGFpbnRpbmdDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJv
bWVDbGllbnQgeworcHVibGljOgorICAgIFJlcGFpbnRpbmdDaHJvbWVDbGllbnQoU1ZHSW1hZ2Uq
IGltYWdlKQorICAgICAgICA6IG1faW1hZ2UoaW1hZ2UpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBjaHJvbWVEZXN0cm95ZWQoKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcGFpbnQoY29uc3QgSW50UmVjdCYgciwgYm9v
bCBjb250ZW50Q2hhbmdlZCwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSwgYm9vbCByZXBhaW50Q29u
dGVudE9ubHkgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGlmIChtX2ltYWdlLT5pbWFnZU9ic2Vy
dmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmFuaW1hdGlvbkFk
dmFuY2VkKG1faW1hZ2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBTVkdJbWFnZSogbV9pbWFn
ZTsKK307CisKKworCiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIp
CiAgICAgOiBJbWFnZShvYnNlcnZlcikKICAgICAsIG1fZG9jdW1lbnQoMCkKKyAgICAsIG1fY2hy
b21lQ2xpZW50KDApCiAgICAgLCBtX3BhZ2UoMCkKICAgICAsIG1fZnJhbWUoMCkKICAgICAsIG1f
ZnJhbWVWaWV3KDApCkBAIC0xODcsMTYgKzIxMiwxOCBAQCBib29sIFNWR0ltYWdlOjpkYXRhQ2hh
bmdlZChib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCiAg
ICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewotICAgICAgICBzdGF0aWMgQ2hyb21lQ2xpZW50KiBk
dW1teUNocm9tZUNsaWVudCA9IG5ldyBFbXB0eUNocm9tZUNsaWVudDsKKy8vICAgICAgICBzdGF0
aWMgQ2hyb21lQ2xpZW50KiBkdW1teUNocm9tZUNsaWVudCA9IG5ldyBSZXBhaW50aW5nQ2hyb21l
Q2xpZW50OwogICAgICAgICBzdGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGR1bW15RnJhbWVMb2Fk
ZXJDbGllbnQgPSAgbmV3IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgICAgIHN0YXRpYyBF
ZGl0b3JDbGllbnQqIGR1bW15RWRpdG9yQ2xpZW50ID0gbmV3IEVtcHR5RWRpdG9yQ2xpZW50Owog
ICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1lbnVDbGllbnQg
PSBuZXcgRW1wdHlDb250ZXh0TWVudUNsaWVudDsKICAgICAgICAgc3RhdGljIERyYWdDbGllbnQq
IGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdDbGllbnQ7CiAgICAgICAgIHN0YXRpYyBJ
bnNwZWN0b3JDbGllbnQqIGR1bW15SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVjdG9y
Q2xpZW50OwogCisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbmV3IFJlcGFpbnRpbmdDaHJvbWVD
bGllbnQodGhpcyk7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5k
cyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UnbGwgbGVhayB0aGlzIEZyYW1lIChhbmQgYXNzb2NpYXRl
ZCBET00gJiByZW5kZXIgdHJlZXMpLgogICAgICAgICAvLyBUaGUgQ2FjaGUgY29kZSBkb2VzIG5v
dCBrbm93IGFib3V0IENhY2hlZEltYWdlcyBob2xkaW5nIEZyYW1lcyBhbmQgd29uJ3Qga25vdyB0
byBicmVhayB0aGUgY3ljbGUuCi0gICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoZHVtbXlDaHJv
bWVDbGllbnQsIGR1bW15Q29udGV4dE1lbnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1t
eURyYWdDbGllbnQsIGR1bW15SW5zcGVjdG9yQ2xpZW50KSk7CisgICAgICAgIG1fcGFnZS5zZXQo
bmV3IFBhZ2UobV9jaHJvbWVDbGllbnQsIGR1bW15Q29udGV4dE1lbnVDbGllbnQsIGR1bW15RWRp
dG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5zcGVjdG9yQ2xpZW50KSk7CiAgICAg
ICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAg
ICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFBsdWdpbnNFbmFibGVkKGZhbHNlKTsKIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaCBiL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZGYzZjgwMS4uNzhjOTYwMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAorKysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7CiAgICAgY2xhc3MgUGFnZTsKKyAgICBjbGFz
cyBSZXBhaW50aW5nQ2hyb21lQ2xpZW50OwogICAgIAogICAgIGNsYXNzIFNWR0ltYWdlIDogcHVi
bGljIEltYWdlIHsKICAgICBwdWJsaWM6CkBAIC03MSw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsK
ICAgICAgICAgCiAgICAgICAgIFNWR0RvY3VtZW50KiBtX2RvY3VtZW50OworICAgICAgICBSZXBh
aW50aW5nQ2hyb21lQ2xpZW50KiBtX2Nocm9tZUNsaWVudDsKICAgICAgICAgT3duUHRyPFBhZ2U+
IG1fcGFnZTsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogICAgICAgICBSZWZQdHI8
RnJhbWVWaWV3PiBtX2ZyYW1lVmlldzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26257</attachid>
            <date>2008-12-26 11:13:31 -0800</date>
            <delta_ts>2008-12-26 17:07:14 -0800</delta_ts>
            <desc>Patch, testcases, changelog</desc>
            <filename>22981_patch.txt</filename>
            <type>text/plain</type>
            <size>45491</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMWNjODE5Li5lNDJjNzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIwMDgtMTIt
MjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTgxCisKKyAgICAgICAgQWRkIHRlc3RjYXNlcyB0aGF0IHRl
c3QgcmVkcmF3IG9mIGFuaW1hdGVkIFNWRy1hcy1pbWFnZSwKKyAgICAgICAgYW5kIGFuaW1hdGVk
IFNWRy1hcy1iYWNrZ3JvdW5kLgorICAgICAgICAKKyAgICAgICAgRml4IGZhc3QvYmFja2dyb3Vu
ZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sIHRvIHVzZSBhIHRpbWVvdXQsCisgICAgICAgIHNp
bmNlIHRoZSBTVkcgbG9hZGluZyBkZWxheWVkLCBhbmQgdGhlcmUgaXMgbm8gd2F5IGZyb20gSlMg
dG8ga25vdworICAgICAgICB3aGVuIGl0IGhhcyBwYWludGVkLgorICAgICAgICAKKyAgICAgICAg
KiBmYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1maXhlZC1zaXplLnN2ZzogQWRkZWQuCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZzogQWRkZWQuCisgICAgICAgICog
ZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01Lmh0bWw6CisgICAgICAgICogZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LWZpeGVkLXNpemUuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1z
aXplLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMv
YW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNr
Z3JvdW5kLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
YmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0OiBBZGRl
ZAorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1tYXNrLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFzay1leHBlY3RlZC5wbmc6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1tYXNrLWV4cGVjdGVkLnR4dDogQWRkZWQKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9i
YWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1iYWNrZ3JvdW5kLTUtZXhw
ZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1z
dmctYXMtaW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWlt
YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKKzIwMDgtMTItMjYgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTgxCiAKICAgICAgICAgVXBkYXRlIG1vcmUgc3ZnLWFzLWltYWdl
IHRlc3QgcmVzdWx0cyBhZmZlY3RlZCBieSB0aGUgZml4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyY2E5NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tn
cm91bmQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIGRpdiB7CisgICAgICBiYWNrZ3JvdW5k
OiByZWQ7CisgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKHJlc291cmNlcy9hbmltYXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3Zn
KTsKKyAgICAgIGhlaWdodDogNjAwcHg7CisgICAgICB3aWR0aDogODAwcHg7CisgICAgfQorICA8
L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAgZnVuY3Rpb24gcGFnZUxvYWRl
ZCgpIAorICAgIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0sIDQwMCk7ICAgIC8vIGVtcGlyaWNhbGx5
IGRldGVybWluZWQgZGVsYXkuIFNWRyBhbmltYXRpb24gaGFzIDEwMG1zIGR1cmF0aW9uLgorICAg
IH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGFnZUxvYWRlZCwgZmFs
c2UpOworICA8L3NjcmlwdD4KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0nbWFy
Z2luOiAwcHgnPgorPGRpdj4mbmJzcDs8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjFiODZkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFz
ay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgZGl2
IHsKKyAgICBiYWNrZ3JvdW5kOiBsaW1lOworICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJl
cGVhdDsKKyAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChyZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1yZWxhdGl2ZS1zaXplLnN2Zyk7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICB3aWR0aDogODAw
cHg7CisgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIAorICAgIGZ1bmN0
aW9uIHBhZ2VMb2FkZWQoKSAKKyAgICB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICB9LCA0MDApOyAgICAv
LyBlbXBpcmljYWxseSBkZXRlcm1pbmVkIGRlbGF5LiBTVkcgYW5pbWF0aW9uIGhhcyAxMDBtcyBk
dXJhdGlvbi4KKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHBh
Z2VMb2FkZWQsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KKzxkaXY+Jm5ic3A7PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL3Jlc291cmNlcy9h
bmltYXRlZC1yZWN0LWZpeGVkLXNpemUuc3ZnIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5k
cy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hMWYxMmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2
ZwpAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJo
dHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisK
KzwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09LS0+Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBX
ZWIgQ29uc29ydGl1bSwgKE1hc3NhY2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3Rp
dHV0ZSBvZiBUZWNobm9sb2d5LCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAg
ICAgID0tLT4KKzwhLS09ICBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5p
dmVyc2l0eSkuIEFsbCBSaWdodHMgICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRw
Oi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEt
LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0tLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9v
dCIgd2lkdGg9IjQ4MHB4IiBoZWlnaHQ9IjQ4MHB4IiB2aWV3Qm94PSIwIDAgNDgwIDM2MCIgdmVy
c2lvbj0iMS4xIiBiYXNlUHJvZmlsZT0idGlueSI+CisgICA8U1ZHVGVzdENhc2UgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvMDIvc3ZnL3Rlc3RzdWl0ZS9kZXNjcmlwdGlvbi8iPgorICAg
PC9TVkdUZXN0Q2FzZT4KKyAgIDx0aXRsZSBpZD0idGVzdC10aXRsZSI+YW5pbWF0ZS1lbGVtLTE0
LXQ8L3RpdGxlPgorICAgPGRlc2MgaWQ9InRlc3QtZGVzYyI+VGVzdCBwb3NzaWJsZSB2YWx1ZXMg
Zm9yICdrZXlUaW1lcyc8L2Rlc2M+CisgICA8ZyBpZD0idGVzdC1ib2R5LWNvbnRlbnQiPgorICAg
ICAgPGcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9
IjEzLjUiIHN0cm9rZS13aWR0aD0iMyIgPgorICAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoMTUwLDE0MCkiPgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iLTE0MCIg
eT0iMTQwIj5UaW1lIChzKTo8L3RleHQ+CisgICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2
IiB4PSIyOTAiIHk9IjE0MCI+MDwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5lIHgxPSIzMDAiIHkx
PSIwIiB4Mj0iMzAwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODAwMDAiIC8+Cisg
ICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIyMCIgeT0iMTQwIj42PC90ZXh0Pgor
ICAgICAgICAgICAgPGxpbmUgeDE9IjMwIiB5MT0iMCIgeDI9IjMwIiB5Mj0iMTAwIiBmaWxsPSJu
b25lIiBzdHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjNDRBQUZGIiBzdHJva2U9IiM4ODAwODgiIHN0
cm9rZS13aWR0aD0iNCIgPgorICAgICAgICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
d2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42
IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMiIGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9y
ZWN0PgorICAgICAgICAgPC9nPgorICAgICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRl
c3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25l
IiBzdHJva2U9IiMwMDAwMDAiLz4KKzwvc3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2JhY2tncm91bmRzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3Zn
IGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1y
ZWxhdGl2ZS1zaXplLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODMx
ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFw
aGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+
Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgKE1hc3Nh
Y2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBJ
bnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09ICBJbmZv
cm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBSaWdodHMg
ICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgdmlld0JveD0iMCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9
InRpbnkiPgorICAgPFNWR1Rlc3RDYXNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAy
L3N2Zy90ZXN0c3VpdGUvZGVzY3JpcHRpb24vIj4KKyAgIDwvU1ZHVGVzdENhc2U+CisgICA8dGl0
bGUgaWQ9InRlc3QtdGl0bGUiPmFuaW1hdGUtZWxlbS0xNC10PC90aXRsZT4KKyAgIDxkZXNjIGlk
PSJ0ZXN0LWRlc2MiPlRlc3QgcG9zc2libGUgdmFsdWVzIGZvciAna2V5VGltZXMnPC9kZXNjPgor
ICAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50Ij4KKyAgICAgIDxnIHhtbDpzcGFjZT0icHJlc2Vy
dmUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMy41IiBzdHJva2Utd2lkdGg9IjMi
ID4KKyAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MCwxNDApIj4KKyAgICAgICAg
ICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMzYiIHg9Ii0xNDAiIHk9IjE0MCI+VGltZSAocyk6PC90ZXh0
PgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iMjkwIiB5PSIxNDAiPjA8L3Rl
eHQ+CisgICAgICAgICAgICA8bGluZSB4MT0iMzAwIiB5MT0iMCIgeDI9IjMwMCIgeTI9IjEwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAvPgorICAgICAgICAgICAgPHRleHQgZm9udC1z
aXplPSIzNiIgeD0iMjAiIHk9IjE0MCI+NjwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5lIHgxPSIz
MCIgeTE9IjAiIHgyPSIzMCIgeTI9IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAv
PgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI4MCIg
ZmlsbD0iIzQ0QUFGRiIgc3Ryb2tlPSIjODgwMDg4IiBzdHJva2Utd2lkdGg9IjQiID4KKyAgICAg
ICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0
ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMi
IGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9nPgorICAg
ICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdp
ZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiLz4KKzwv
c3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1i
YWNrZ3JvdW5kLTUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJh
Y2tncm91bmQtNS5odG1sCmluZGV4IDViYzc4ZWYuLjk0NDgyMTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sCkBAIC05
LDYgKzksMTggQEAgZGl2IHsKICAgd2lkdGg6IDgwMHB4OwogfQogPC9zdHlsZT4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworCisgICAgLy8gVGVzdCBpbWFnZSBkb2VzIG5vdCBsb2FkIGltbWVkaWF0ZWx5LCBzbyBo
YXZlIHRvIGRlbGF5LgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rp
b24oKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICB9LCAyNTApOworICAgIH0sIGZhbHNlKTsKKzwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KIDxkaXY+Jm5ic3A7PC9k
aXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMt
aW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLXN2Zy1hcy1pbWFn
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMjJiYTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1h
Z2UuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIGltZyB7CisgICAgICBtYXJnaW46IDEwcHg7
CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAgZnVuY3Rp
b24gcGFnZUxvYWRlZCgpIAorICAgIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0sIDQwMCk7ICAgIC8v
IGVtcGlyaWNhbGx5IGRldGVybWluZWQgZGVsYXkuIFNWRyBhbmltYXRpb24gaGFzIDEwMG1zIGR1
cmF0aW9uLgorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGFn
ZUxvYWRlZCwgZmFsc2UpOworICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbWFn
ZXMgc2hvdWxkIHJlZHJhdyBjb3JyZWN0bHkgd2hlbiBTVkcgYW5pbWF0aW9uIHJ1bnM8L3A+Cisg
IDxpbWcgaGVpZ2h0PSIyNTBweCIgd2lkdGg9IjM1MHB4IiBib3JkZXI9IjIiIHNyYz0icmVzb3Vy
Y2VzL2FuaW1hdGVkLXJlY3QtZml4ZWQtc2l6ZS5zdmciPjxicj4KKyAgPGltZyBoZWlnaHQ9IjI1
MHB4IiB3aWR0aD0iMzUwcHgiIGJvcmRlcj0iMiIgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1yZWxhdGl2ZS1zaXplLnN2ZyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2
ZyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LWZpeGVk
LXNpemUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZjEyZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0
ZWQtcmVjdC1maXhlZC1zaXplLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFRE
IFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RU
RC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+Cis8IS0tPSAgQ29weXJp
Z2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgKE1hc3NhY2h1c2V0dHMgICAgICAg
ICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBJbnN0aXR1dCBOYXRpb25h
bCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09ICBJbmZvcm1hdGlxdWUgZXQgZW4g
QXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBSaWdodHMgICAgICA9LS0+Cis8IS0t
PSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLy4gICAg
ICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjQ4MHB4IiBoZWlnaHQ9IjQ4MHB4IiB2aWV3
Qm94PSIwIDAgNDgwIDM2MCIgdmVyc2lvbj0iMS4xIiBiYXNlUHJvZmlsZT0idGlueSI+CisgICA8
U1ZHVGVzdENhc2UgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDIvc3ZnL3Rlc3RzdWl0
ZS9kZXNjcmlwdGlvbi8iPgorICAgPC9TVkdUZXN0Q2FzZT4KKyAgIDx0aXRsZSBpZD0idGVzdC10
aXRsZSI+YW5pbWF0ZS1lbGVtLTE0LXQ8L3RpdGxlPgorICAgPGRlc2MgaWQ9InRlc3QtZGVzYyI+
VGVzdCBwb3NzaWJsZSB2YWx1ZXMgZm9yICdrZXlUaW1lcyc8L2Rlc2M+CisgICA8ZyBpZD0idGVz
dC1ib2R5LWNvbnRlbnQiPgorICAgICAgPGcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZm9udC1mYW1p
bHk9IkFyaWFsIiBmb250LXNpemU9IjEzLjUiIHN0cm9rZS13aWR0aD0iMyIgPgorICAgICAgICAg
PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUwLDE0MCkiPgorICAgICAgICAgICAgPHRleHQgZm9u
dC1zaXplPSIzNiIgeD0iLTE0MCIgeT0iMTQwIj5UaW1lIChzKTo8L3RleHQ+CisgICAgICAgICAg
ICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIyOTAiIHk9IjE0MCI+MDwvdGV4dD4KKyAgICAgICAg
ICAgIDxsaW5lIHgxPSIzMDAiIHkxPSIwIiB4Mj0iMzAwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBz
dHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIy
MCIgeT0iMTQwIj42PC90ZXh0PgorICAgICAgICAgICAgPGxpbmUgeDE9IjMwIiB5MT0iMCIgeDI9
IjMwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjNDRBQUZG
IiBzdHJva2U9IiM4ODAwODgiIHN0cm9rZS13aWR0aD0iNCIgPgorICAgICAgICAgICAgICAgPGFu
aW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgdmFsdWVzPSIz
MDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMiIGZpbGw9ImZyZWV6
ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9nPgorICAgICAgPC9nPgorICAg
PC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhl
aWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiLz4KKzwvc3ZnPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1y
ZWxhdGl2ZS1zaXplLnN2ZyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmlt
YXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjA4MzFlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZwpAQCAtMCwwICsxLDMx
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2
ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09LS0+Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwg
KE1hc3NhY2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9s
b2d5LCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09
ICBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBS
aWdodHMgICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9D
b25zb3J0aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0t
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVBy
b2ZpbGU9InRpbnkiPgorICAgPFNWR1Rlc3RDYXNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwLzAyL3N2Zy90ZXN0c3VpdGUvZGVzY3JpcHRpb24vIj4KKyAgIDwvU1ZHVGVzdENhc2U+Cisg
ICA8dGl0bGUgaWQ9InRlc3QtdGl0bGUiPmFuaW1hdGUtZWxlbS0xNC10PC90aXRsZT4KKyAgIDxk
ZXNjIGlkPSJ0ZXN0LWRlc2MiPlRlc3QgcG9zc2libGUgdmFsdWVzIGZvciAna2V5VGltZXMnPC9k
ZXNjPgorICAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50Ij4KKyAgICAgIDxnIHhtbDpzcGFjZT0i
cHJlc2VydmUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMy41IiBzdHJva2Utd2lk
dGg9IjMiID4KKyAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MCwxNDApIj4KKyAg
ICAgICAgICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMzYiIHg9Ii0xNDAiIHk9IjE0MCI+VGltZSAocyk6
PC90ZXh0PgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iMjkwIiB5PSIxNDAi
PjA8L3RleHQ+CisgICAgICAgICAgICA8bGluZSB4MT0iMzAwIiB5MT0iMCIgeDI9IjMwMCIgeTI9
IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAvPgorICAgICAgICAgICAgPHRleHQg
Zm9udC1zaXplPSIzNiIgeD0iMjAiIHk9IjE0MCI+NjwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5l
IHgxPSIzMCIgeTE9IjAiIHgyPSIzMCIgeTI9IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgw
MDAwIiAvPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMwMCIgaGVpZ2h0
PSI4MCIgZmlsbD0iIzQ0QUFGRiIgc3Ryb2tlPSIjODgwMDg4IiBzdHJva2Utd2lkdGg9IjQiID4K
KyAgICAgICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJk
aXNjcmV0ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0i
MTAwbXMiIGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9n
PgorICAgICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9
IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAi
Lz4KKzwvc3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9i
YWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1leHBlY3RlZC5jaGVja3N1bSBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1iYWNrZ3JvdW5kLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjVhZDRiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1leHBlY3Rl
ZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACitmN2RjMzZjNDkzYzU4ZmRjODQ1OTE5NWY5YzE3NjVm
OQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLWV4
cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2Fu
aW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lMTZhYWNmCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJh
Y2tncm91bmQtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5p
bWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNiNWUyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQ6ICIgIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2stZXhwZWN0ZWQuY2hlY2tz
dW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1z
dmctYXMtbWFzay1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYzVmN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2stZXhwZWN0ZWQuY2hlY2tz
dW0KQEAgLTAsMCArMSBAQAorOTE4MWY3YWVhZDQ4N2QwNDM0YTY4ZTNhYjZjNGY3NjUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFzay1leHBlY3RlZC5wbmcgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMt
bWFzay1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVk
ZWIxMgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnBuZyBkaWZm
ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRz
L2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTIyNTgyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQt
c3ZnLWFzLW1hc2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgODAweDYwMCBbYmdjb2xvcj0jMDBGRjAwXQorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDR4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ6ICIgIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFz
LWJhY2tncm91bmQtNS1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1iYWNrZ3JvdW5kLTUtZXhwZWN0ZWQuY2hlY2tzdW0K
aW5kZXggZmU3MzA5OC4uMWNmNDYwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS1leHBlY3RlZC5jaGVja3N1
bQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMt
YmFja2dyb3VuZC01LWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0xICsxIEBACi1kZmI5YWE0ZjBkNGRl
OWVhMTA2NzdhOTEwNzUwY2M3NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzA5ODRlNjRl
OTViNWQyOGM5YWYzNDEyNDViOGYxN2M5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFz
LWJhY2tncm91bmQtNS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLnBuZwppbmRleCAzM2I0
N2E4Li43ZjU1ZDQwIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLnBuZyBhbmQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dy
b3VuZC01LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQuY2hlY2tz
dW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFz
LWltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjEyZjkxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0w
LDAgKzEgQEAKK2QwMmExYTAxNTI2ZWY0OTJlNzA3N2VlMzk5MTI4Y2YxClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
aW1hZ2VzL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNThmOGI0CkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL2Fu
aW1hdGVkLXN2Zy1hcy1pbWFnZS1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRl
ZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjk4ZWE0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzcxeDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzcxOiAiSW1hZ2VzIHNob3VsZCBy
ZWRyYXcgY29ycmVjdGx5IHdoZW4gU1ZHIGFuaW1hdGlvbiBydW5zIgorICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzg0eDU0OAorICAgICAgICBSZW5kZXJJbWFn
ZSB7SU1HfSBhdCAoMTAsMTApIHNpemUgMzU0eDI1NCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAw
MDApXQorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzNzQsMjc0KSBzaXplIDB4MAorICAgICAg
ICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMTAsMjg0KSBzaXplIDM1NHgyNTQgW2JvcmRlcjogKDJw
eCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhMjZjOC4uMTBmNjM4
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3NCBAQAorMjAwOC0xMi0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODEKKworICAg
ICAgICBSZXBhaW50cyBpbnNpZGUgb2YgYW4gU1ZHSW1hZ2Ugd2VyZSB0aHJvd24gb24gdGhlIGZs
b29yLAorICAgICAgICB3aGljaCBicm9rZSBpbmNyZW1lbnRhbCBwYWludGluZyBkdWUgdG8gbG9h
ZGluZywgb3IgU1ZHIGFuaW1hdGlvbi4KKyAgICAgICAgRml4IHRoaXMgYnkgYXNzaWduaW5nIHRo
ZSBTVkdJbWFnZSBhIENocm9tZUNsaWVudCBzdWJjbGFzcyB0aGF0IHBhc3NlcworICAgICAgICBh
bG9uZyByZXBhaW50cyB2aWEgYSBuZXcgbWV0aG9kIG9uIEltYWdlT2JzZXJ2ZXIsIHdoaWNoIGFs
c28gdGFrZXMKKyAgICAgICAgYSByZWN0IHBhcmFtZXRlciBmb3IgdGhlIGNoYW5nZWQgcmVjdCwg
YWxsb3dpbmcgaW5jcmVtZW50YWwgcmVwYWludHMuCisgICAgICAgIEZpeCBSZW5kZXJJbWFnZTo6
aW1hZ2VDaGFuZ2VkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgY2hhbmdlZFJlY3QgdG8KKyAg
ICAgICAgb25seSByZXBhaW50IHRoZSBjaGFuZ2VkIHBhcnRzIG9mIHRoZSBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIFRlc3RzOiBmYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNr
Z3JvdW5kLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3Zn
LWFzLW1hc2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFz
LWltYWdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVzaXplZCk6CisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphZGRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2VydmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmFuaW1hdGlv
bkFkdmFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xp
ZW50OjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OmludHJpbnNpY1NpemVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
OjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbWFnZUNoYW5nZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFy
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNoYW5n
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ29sOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlQ2hyb21lQ2xpZW50OjpTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZUNocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpTVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDA4LTEyLTI2ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA0MWY3MWUxLi44ZGQxYTZh
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC00OCwxNCArNDgsMTUgQEAgdm9pZCBDU1NDYW52
YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
RmxvYXRSZWN0JgogewogICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgSW50U2l6ZT46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fY2xpZW50cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8UmVuZGVy
T2JqZWN0KiwgSW50U2l6ZT46OmNvbnN0X2l0ZXJhdG9yIGN1cnIgPSBtX2NsaWVudHMuYmVnaW4o
KTsgY3VyciAhPSBlbmQ7ICsrY3VycikKLSAgICAgICAgY3Vyci0+Zmlyc3QtPmltYWdlQ2hhbmdl
ZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKKyAgICAgICAgY3Vyci0+Zmly
c3QtPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpLCBlbmNs
b3NpbmdJbnRSZWN0KGNoYW5nZWRSZWN0KSk7CiB9CiAKIHZvaWQgQ1NTQ2FudmFzVmFsdWU6OmNh
bnZhc1Jlc2l6ZWQoSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSGFzaE1hcDxS
ZW5kZXJPYmplY3QqLCBJbnRTaXplPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVu
ZCgpOwogICAgIGZvciAoSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBJbnRTaXplPjo6Y29uc3RfaXRl
cmF0b3IgY3VyciA9IG1fY2xpZW50cy5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAg
ICAgICBjdXJyLT5maXJzdC0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0
cj4odGhpcykpOworICAgICAgICAvLyBGSVhNRTogd2hhdCByZWN0IHRvIHVzZT8KKyAgICAgICAg
Y3Vyci0+Zmlyc3QtPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRo
aXMpLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSkpOwogfQogCiBJbnRTaXplIENTU0NhbnZhc1ZhbHVl
OjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdl
LmNwcAppbmRleCBlNzM5OWZjLi5kMmZiMWU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9D
YWNoZWRJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNs
aWVudCogYykKICAgICB9CiAKICAgICBpZiAobV9pbWFnZSAmJiAhbV9pbWFnZS0+cmVjdCgpLmlz
RW1wdHkoKSkKLSAgICAgICAgYy0+aW1hZ2VDaGFuZ2VkKHRoaXMpOworICAgICAgICBjLT5pbWFn
ZUNoYW5nZWQodGhpcywgSW50UmVjdCgwLCAwLCAtMSwgLTEpKTsKIAogICAgIGlmICghbV9sb2Fk
aW5nKQogICAgICAgICBjLT5ub3RpZnlGaW5pc2hlZCh0aGlzKTsKQEAgLTIxNiwxMSArMjE2LDEx
IEBAIEludFJlY3QgQ2FjaGVkSW1hZ2U6OmltYWdlUmVjdChmbG9hdCBtdWx0aXBsaWVyKSBjb25z
dAogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQogCi12b2lkIENh
Y2hlZEltYWdlOjpub3RpZnlPYnNlcnZlcnMoKQordm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2Jz
ZXJ2ZXJzKGNvbnN0IEludFJlY3QmIGNoYW5nZVJlY3QpCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VD
bGllbnRXYWxrZXIgdyhtX2NsaWVudHMpOwogICAgIHdoaWxlIChDYWNoZWRSZXNvdXJjZUNsaWVu
dCogYyA9IHcubmV4dCgpKQotICAgICAgICBjLT5pbWFnZUNoYW5nZWQodGhpcyk7CisgICAgICAg
IGMtPmltYWdlQ2hhbmdlZCh0aGlzLCBjaGFuZ2VSZWN0KTsKIH0KIAogdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXIoKQpAQCAtMjg3LDcgKzI4Nyw5IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRhdGEoUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBub3RpZnlPYnNlcnZl
cnMoKTsKKyAgICAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBvbmx5IHJlZHJhdyB0aGUgZGVj
b2RlZCBiYW5kIG9mIHRoZSBpbWFnZSwgYnV0IHdpdGggdGhlIGN1cnJlbnQgZGVzaWduCisgICAg
ICAgIC8vIChkZWNvZGluZyBkZWxheWVkIHVudGlsIHBhaW50aW5nKSB0aGF0IHNlZW1zIGhhcmQu
CisgICAgICAgIG5vdGlmeU9ic2VydmVycyhJbnRSZWN0KDAsIDAsIC0xLCAtMSkpOwogCiAgICAg
ICAgIGlmIChtX2ltYWdlKQogICAgICAgICAgICAgc2V0RW5jb2RlZFNpemUobV9pbWFnZS0+ZGF0
YSgpID8gbV9pbWFnZS0+ZGF0YSgpLT5zaXplKCkgOiAwKTsKQEAgLTMwMyw3ICszMDUsNyBAQCB2
b2lkIENhY2hlZEltYWdlOjplcnJvcigpCiB7CiAgICAgY2xlYXIoKTsKICAgICBtX2Vycm9yT2Nj
dXJyZWQgPSB0cnVlOwotICAgIG5vdGlmeU9ic2VydmVycygpOworICAgIG5vdGlmeU9ic2VydmVy
cyhJbnRSZWN0KDAsIDAsIC0xLCAtMSkpOwogICAgIG1fbG9hZGluZyA9IGZhbHNlOwogICAgIGNo
ZWNrTm90aWZ5KCk7CiB9CkBAIC0zNjgsNyArMzcwLDEzIEBAIGJvb2wgQ2FjaGVkSW1hZ2U6OnNo
b3VsZFBhdXNlQW5pbWF0aW9uKGNvbnN0IEltYWdlKiBpbWFnZSkKIHZvaWQgQ2FjaGVkSW1hZ2U6
OmFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKiBpbWFnZSkKIHsKICAgICBpZiAoaW1hZ2Ug
PT0gbV9pbWFnZSkKLSAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKCk7CisgICAgICAgIG5vdGlmeU9i
c2VydmVycyhtX2ltYWdlLT5yZWN0KCkpOworfQorCit2b2lkIENhY2hlZEltYWdlOjpjaGFuZ2Vk
SW5SZWN0KGNvbnN0IEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBp
ZiAoaW1hZ2UgPT0gbV9pbWFnZSkKKyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKHJlY3QpOwogfQog
CiB9IC8vbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0NhY2hl
ZEltYWdlLmggYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oCmluZGV4IGYyNGUyZmIuLjAy
YjBmMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmgKKysrIGIvV2Vi
Q29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuaApAQCAtODUsMTEgKzg1LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYXVzZUFuaW1hdGlvbihjb25zdCBJbWFnZSopOwogICAg
IHZpcnR1YWwgdm9pZCBhbmltYXRpb25BZHZhbmNlZChjb25zdCBJbWFnZSopOworICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VkSW5SZWN0KGNvbnN0IEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYg
cmVjdCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZSgpOwogICAgIHNpemVfdCBt
YXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpOwotICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKCk7Cisg
ICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCYgY2hhbmdlUmVjdCk7CiAgICAg
dm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZChUaW1lcjxDYWNoZWRJbWFnZT4qKTsK
IAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUNs
aWVudC5oCmluZGV4IDFkOGQ0NWUuLmI4MzczMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVy
L0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3Vy
Y2VDbGllbnQuaApAQCAtNTYsOCArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9CiAKICAgICAgICAgLy8gQ2FsbGVk
IHdoZW5ldmVyIGEgZnJhbWUgb2YgYW4gaW1hZ2UgY2hhbmdlcywgZWl0aGVyIGJlY2F1c2Ugd2Ug
Z290IG1vcmUgZGF0YSBmcm9tIHRoZSBuZXR3b3JrIG9yCi0gICAgICAgIC8vIGJlY2F1c2Ugd2Ug
YXJlIGFuaW1hdGluZy4KLSAgICAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJ
bWFnZSopIHsgfTsKKyAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgYW5pbWF0aW5nLiBSZWN0IGlz
IHRoZSBjaGFuZ2VkIHJlY3Qgb2YgdGhlIGltYWdlIGlmIGtub3duLCBvciAoMCwgMCwgLTEsIC0x
KSBvdGhlcndpc2UuCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1h
Z2UqLCBjb25zdCBJbnRSZWN0JikgeyB9OwogICAgICAgICAKICAgICAgICAgLy8gQ2FsbGVkIHRv
IGZpbmQgb3V0IGlmIHRoaXMgY2xpZW50IHdhbnRzIHRvIGFjdHVhbGx5IGRpc3BsYXkgdGhlIGlt
YWdlLiAgVXNlZCB0byB0ZWxsIHdoZW4gd2UKICAgICAgICAgLy8gY2FuIGhhbHQgYW5pbWF0aW9u
LiAgQ29udGVudCBub2RlcyB0aGF0IGhvbGQgaW1hZ2UgcmVmcyBmb3IgZXhhbXBsZSB3b3VsZCBu
b3QgcmVuZGVyIHRoZSBpbWFnZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2Vy
dmVyLmgKaW5kZXggNGJlODNiZC4uOGI2OTNkOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZU9ic2VydmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgSW1hZ2U7CitjbGFzcyBJbnRSZWN0OwogCiAvLyBJbnRlcmZhY2UgZm9yIG5vdGlm
aWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIGltYWdlLCBpbmNsdWRpbmcgZGVjb2RpbmcsCiAv
LyBkcmF3aW5nLCBhbmQgYW5pbWF0aW5nLgpAQCAtNDEsNiArNDIsOCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGF1c2VBbmltYXRpb24oY29uc3QgSW1hZ2UqKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKikgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0
JikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNzM5YzBiOC4uZDdk
NDFlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NTgsNyArNTU4LDcgQEAgSW50U2l6
ZSBSZW5kZXJCb3g6OmNhbGN1bGF0ZUJhY2tncm91bmRTaXplKGNvbnN0IEZpbGxMYXllciogYmdM
YXllciwgaW50IHNjYWxlZFcKICAgICAgICAgcmV0dXJuIGJnLT5pbWFnZVNpemUodGhpcywgc3R5
bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKFdy
YXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYgKGlzSW5saW5l
RmxvdygpIHx8CiAgICAgICAgIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2UoKSAmJiBzdHls
ZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8fApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAppbmRleCAyNmUyMTJhLi5lMWY2ODA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAt
MTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludEJveERlY29y
YXRpb25zKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBp
bWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBD
YWxsZWQgd2hlbiBhIHBvc2l0aW9uZWQgb2JqZWN0IG1vdmVzIGJ1dCBkb2Vzbid0IGNoYW5nZSBz
aXplLiAgQSBzaW1wbGlmaWVkIGxheW91dCBpcyBkb25lCiAgICAgLy8gdGhhdCBqdXN0IHVwZGF0
ZXMgdGhlIG9iamVjdCdzIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCmluZGV4
IDBjYTNhZjcuLjIxYjFhMzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTIwNCw3
ICsyMDQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSog
bmV3SW1hZ2UpCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKICAgICAgICAgbV9jYWNoZWRJbWFn
ZS0+YWRkQ2xpZW50KHRoaXMpOwogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpKQotICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCkpOwor
ICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCksIEludFJlY3QoMCwg
MCwgLTEsIC0xKSk7CiAgICAgfQogfQogCkBAIC0yNTIsMTMgKzI1MiwyNyBAQCBib29sIFJlbmRl
ckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSAvKiA9
IDAgKi8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hh
bmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UpCisvLyBSZXR1cm5zIGEgcmVjdCBwcm9kdWNl
ZCBieSBtYXBwaW5nIGFuZCBzY2FsaW5nIHIgZnJvbSB0aGUgYm91bmRzIG9mIHNyY1JlY3QgdG8g
dGhlIGJvdW5kcyBvZiBkZXN0UmVjdAorc3RhdGljIEludFJlY3QgbWFwUmVjdChjb25zdCBJbnRS
ZWN0JiByLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkK
K3sKKyAgICBmbG9hdCB3aWR0aE11bHQgPSAoZmxvYXQpZGVzdFJlY3Qud2lkdGgoKSAvIChmbG9h
dClzcmNSZWN0LndpZHRoKCk7CisgICAgZmxvYXQgaGVpZ2h0TXVsdCA9IChmbG9hdClkZXN0UmVj
dC5oZWlnaHQoKSAvIChmbG9hdClzcmNSZWN0LmhlaWdodCgpOworCisgICAgRmxvYXRSZWN0IG1h
cHBlZFJlY3QoZGVzdFJlY3QueCgpICsgKHIueCgpIC0gc3JjUmVjdC54KCkpICogd2lkdGhNdWx0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RSZWN0LnkoKSArIChyLnkoKSAtIHNyY1Jl
Y3QueSgpKSAqIGhlaWdodE11bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgci53aWR0aCgp
ICogd2lkdGhNdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHIuaGVpZ2h0KCkgKiBoZWln
aHRNdWx0KTsKKyAgICAKKyAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChtYXBwZWRSZWN0KTsK
K30KKwordm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJ
bWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ry
b3llZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8
fCBoYXNNYXNrKCkpCi0gICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1h
Z2UpOworICAgICAgICBSZW5kZXJSZXBsYWNlZDo6aW1hZ2VDaGFuZ2VkKG5ld0ltYWdlLCByZWN0
KTsKICAgICAKICAgICBpZiAobmV3SW1hZ2UgIT0gaW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI5OSwxMCArMzEzLDE4IEBAIHZvaWQgUmVuZGVySW1hZ2U6Omlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoc2hvdWxkUmVwYWludCkKLSAgICAgICAgLy8gRklYTUU6IFdlIGFsd2F5cyBqdXN0
IGRvIGEgY29tcGxldGUgcmVwYWludCwgc2luY2Ugd2UgYWx3YXlzIHBhc3MgaW4gdGhlIGZ1bGwg
aW1hZ2UKLSAgICAgICAgLy8gcmVjdCBhdCB0aGUgbW9tZW50IGFueXdheS4KLSAgICAgICAgcmVw
YWludFJlY3RhbmdsZShjb250ZW50Qm94KCkpOworICAgIGlmIChzaG91bGRSZXBhaW50KSB7Cisg
ICAgICAgIEludFJlY3QgcmVwYWludFJlY3Q7CisgICAgICAgIGlmIChyZWN0LndpZHRoKCkgIT0g
LTEgJiYgcmVjdC5oZWlnaHQoKSAhPSAtMSkgeworICAgICAgICAgICAgLy8gVGhlIGltYWdlIGNo
YW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwK
KyAgICAgICAgICAgIC8vIHNvIG1hcCB0byB0aGUgY29udGVudHNCb3ggdXNpbmcgdGhlIGltYWdl
IHJlY3QKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0gbWFwUmVjdChyZWN0LCBtX2NhY2hlZElt
YWdlLT5pbWFnZSgpLT5yZWN0KCksIGNvbnRlbnRCb3goKSk7CisgICAgICAgICAgICByZXBhaW50
UmVjdC5pbnRlcnNlY3QoY29udGVudEJveCgpKTsgIC8vIGd1YXJkIGFnYWluc3QgdG9vLWxhcmdl
IGNoYW5nZWQgcmVjdHMKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXBhaW50UmVjdCA9
IGNvbnRlbnRCb3goKTsKKyAgICAgICAgCisgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVwYWlu
dFJlY3QpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cmVzZXRBbmltYXRpb24oKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNDc3ZmRlYi4uNmEwNDk1OSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50
IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiAgICAgYm9vbCBzZXRJbWFn
ZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDApOwogCkBAIC04MSw3ICs4
MSw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11
bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5p
bWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KICAgICB2aXJ0dWFsIFdyYXBwZWRJ
bWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2Vk
KGltYWdlUHRyKCkpOyB9CisgICAgLy8gRklYTUU6IGJhZCBpbWFnZSByZWN0PworICAgIHZpcnR1
YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2VkKGltYWdlUHRyKCks
IEludFJlY3QoMCwgMCwgLTEsIC0xKSk7IH0KIAogcHJpdmF0ZToKICAgICBpbnQgY2FsY0FzcGVj
dFJhdGlvV2lkdGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxpc3RNYXJrZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAK
aW5kZXggYjJmYjUxYy4uN2U0MTFmMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGlzdE1hcmtlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtl
ci5jcHAKQEAgLTY1Niw3ICs2NTYsNyBAQCB2b2lkIFJlbmRlckxpc3RNYXJrZXI6OmxheW91dCgp
CiAgICAgc2V0TmVlZHNMYXlvdXQoZmFsc2UpOwogfQogCi12b2lkIFJlbmRlckxpc3RNYXJrZXI6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbykKK3ZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6
aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBvLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICAv
LyBBIGxpc3QgbWFya2VyIGNhbid0IGhhdmUgYSBiYWNrZ3JvdW5kIG9yIGJvcmRlciBpbWFnZSwg
c28gbm8gbmVlZCB0byBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZC4KICAgICBpZiAobyAhPSBt
X2ltYWdlLT5kYXRhKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
TWFya2VyLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKaW5kZXggM2M1
MjI0Yy4uNjhhYzdlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1h
cmtlci5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaApAQCAtNDcs
NyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwogICAgIHZpcnR1
YWwgdm9pZCBjYWxjUHJlZldpZHRocygpOwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBl
ZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICB2aXJ0dWFsIElubGluZUJveCogY3Jl
YXRlSW5saW5lQm94KGJvb2wsIGJvb2wsIGJvb2wpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcAppbmRleCA5ZTQ0YjJjLi5iMTYwZWNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5j
cHAKQEAgLTMyMDcsOSArMzIwNyw5IEBAIEFuaW1hdGlvbkNvbnRyb2xsZXIqIFJlbmRlck9iamVj
dDo6YW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQoKS0+ZnJhbWUoKS0+YW5p
bWF0aW9uKCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjppbWFnZUNoYW5nZWQoQ2FjaGVkSW1h
Z2UqIGltYWdlKQordm9pZCBSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSog
aW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaW1hZ2VDaGFuZ2VkKHN0YXRpY19j
YXN0PFdyYXBwZWRJbWFnZVB0cj4oaW1hZ2UpKTsKKyAgICBpbWFnZUNoYW5nZWQoc3RhdGljX2Nh
c3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSksIHJlY3QpOwogfQogCiBJbnRSZWN0IFJlbmRlck9i
amVjdDo6cmVmbGVjdGlvbkJveCgpIGNvbnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4
IGZlOTk4NTkuLmUyZjZiNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC04ODMsOCAr
ODgzLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHByZXZpb3VzT2Zmc2V0KGludCBjdXJy
ZW50KSBjb25zdDsKICAgICB2aXJ0dWFsIGludCBuZXh0T2Zmc2V0KGludCBjdXJyZW50KSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoQ2FjaGVkSW1hZ2UqIGltYWdlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBkYXRhKSB7IH07
CisgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSogaW1hZ2UsIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0
ciBkYXRhLCBjb25zdCBJbnRSZWN0JikgeyB9OwogICAgIHZpcnR1YWwgYm9vbCB3aWxsUmVuZGVy
SW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZWxlY3Rpb25TdGFydEVu
ZChpbnQmIHNwb3MsIGludCYgZXBvcykgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFn
ZS5jcHAKaW5kZXggNTJhZDlmMS4uNzlmMDZkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0lt
YWdlLmNwcApAQCAtMjI3LDkgKzIyNyw5IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdJbWFnZTo6cmVs
YXRpdmVCQm94KGJvb2wpIGNvbnN0CiAgICAgcmV0dXJuIG1fbG9jYWxCb3VuZHM7CiB9CiAKLXZv
aWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UpCit2
b2lkIFJlbmRlclNWR0ltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoaW1h
Z2UpOworICAgIFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoaW1hZ2UsIHJlY3QpOwogCiAgICAg
Ly8gV2Ugb3ZlcnJpZGUgdG8gaW52YWxpZGF0ZSBhIGxhcmdlciByZWN0LCBzaW5jZSBTVkcgaW1h
Z2VzIGNhbiBkcmF3IG91dHNpZGUgdGhlaXIgImJvdW5kcyIKICAgICByZXBhaW50UmVjdGFuZ2xl
KGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR0ltYWdlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFn
ZS5oCmluZGV4IDliN2NkMjEuLmIyYWIxODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR0ltYWdlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2Uu
aApAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiwgYm9vbCB0b3BMZXZlbCA9IHRy
dWUpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVjdHMoR3JhcGhpY3NDb250
ZXh0KiwgaW50IHR4LCBpbnQgdHkpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChX
cmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QmKTsKICAgICAgICAgdm9pZCBhZGp1c3RSZWN0
c0ZvckFzcGVjdFJhdGlvKEZsb2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0UmVjdCYgc3JjUmVjdCwg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyopOwogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IGxheW91dCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAppbmRl
eCBkNWU3MmU5Li44NmE5ZjE5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmNwcApAQCAtMTMzLDEyICsxMzMsMTIgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJQYXJ0Ojpz
dHlsZURpZENoYW5nZShSZW5kZXJTdHlsZTo6RGlmZiBkaWZmLCBjb25zdCBSZW5kZXJTdHkKICAg
ICAgICAgbV9zY3JvbGxiYXItPnRoZW1lKCktPmludmFsaWRhdGVQYXJ0KG1fc2Nyb2xsYmFyLCBt
X3BhcnQpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdlZChXcmFw
cGVkSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYg
KG1fc2Nyb2xsYmFyICYmIG1fcGFydCAhPSBOb1BhcnQpCiAgICAgICAgIG1fc2Nyb2xsYmFyLT50
aGVtZSgpLT5pbnZhbGlkYXRlUGFydChtX3Njcm9sbGJhciwgbV9wYXJ0KTsKICAgICBlbHNlCi0g
ICAgICAgIFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoaW1hZ2UpOworICAgICAgICBSZW5kZXJC
bG9jazo6aW1hZ2VDaGFuZ2VkKGltYWdlLCByZWN0KTsKIH0KIAogdm9pZCBSZW5kZXJTY3JvbGxi
YXJQYXJ0OjpwYWludEludG9SZWN0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBp
bnQgdHgsIGludCB0eSwgY29uc3QgSW50UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuaAppbmRleCBmYTEzNzc0Li4yNzNhNTQxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAK
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoUmVuZGVyU3R5bGU6
OkRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7Ci0gICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAKIHByaXZhdGU6CiAgICAgdm9p
ZCBsYXlvdXRIb3Jpem9udGFsUGFydCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDb2wuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3Bw
CmluZGV4IDBkNzE0ZGEuLjNkYzY2M2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ29sLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5j
cHAKQEAgLTgzLDcgKzgzLDcgQEAgSW50UmVjdCBSZW5kZXJUYWJsZUNvbDo6YWJzb2x1dGVDbGlw
cGVkT3ZlcmZsb3dSZWN0KCkKICAgICByZXR1cm4gSW50UmVjdCgpOwogfQogCi12b2lkIFJlbmRl
clRhYmxlQ29sOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlKQordm9pZCBSZW5k
ZXJUYWJsZUNvbDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50
UmVjdCYpCiB7CiAgICAgLy8gRklYTUU6IFJlcGFpbnQgb25seSB0aGUgcmVjdCB0aGUgaW1hZ2Ug
cGFpbnRzIGluLgogICAgIHJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ29sLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oCmlu
ZGV4IDlkNDZlMmIuLmI3Y2I3NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaApAQCAt
NDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSB7
IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGFic29sdXRlQ2xpcHBlZE92
ZXJmbG93UmVjdCgpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdl
UHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29u
c3QgSW50UmVjdCYpOwogCiAgICAgaW50IHNwYW4oKSBjb25zdCB7IHJldHVybiBtX3NwYW47IH0K
ICAgICB2b2lkIHNldFNwYW4oaW50IHMpIHsgbV9zcGFuID0gczsgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCmluZGV4IDY4NmI0MzQuLjY3NGRjODggMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZVJvdy5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFJlbmRlclRhYmxlUm93
OjpwYWludChQYWludEluZm8mIHBhaW50SW5mbywgaW50IHR4LCBpbnQgdHkpCiAgICAgfQogfQog
Ci12b2lkIFJlbmRlclRhYmxlUm93OjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdl
KQordm9pZCBSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFn
ZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgLy8gRklYTUU6IEV4YW1pbmUgY2VsbHMgYW5kIHJl
cGFpbnQgb25seSB0aGUgcmVjdCB0aGUgaW1hZ2UgcGFpbnRzIGluLgogICAgIHJlcGFpbnQoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCmluZGV4IDk5NDgyYmUuLjNmYTdmYTEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKKysrIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHJlcXVpcmVzTGF5ZXIoKSB7IHJldHVybiBpc1RyYW5zcGFyZW50KCkgfHwg
aGFzT3ZlcmZsb3dDbGlwKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8m
LCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVk
SW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRy
LCBjb25zdCBJbnRSZWN0Jik7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVX
aWxsQ2hhbmdlKFJlbmRlclN0eWxlOjpEaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5bGUp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXggMDJhMTkyZC4u
MTMyYTYzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9u
LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCkBAIC05
NzMsNyArOTczLDcgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50KFBhaW50SW5mbyYg
cGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVT
ZWN0aW9uOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlKQordm9pZCBSZW5kZXJU
YWJsZVNlY3Rpb246OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IElu
dFJlY3QmKQogewogICAgIC8vIEZJWE1FOiBFeGFtaW5lIGNlbGxzIGFuZCByZXBhaW50IG9ubHkg
dGhlIHJlY3QgdGhlIGltYWdlIHBhaW50cyBpbi4KICAgICByZXBhaW50KCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCmluZGV4IDE4NjZmZDUuLjNmMmM5YTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgIGludCBvdXRlckJvcmRlclJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9vdXRlckJvcmRl
clJpZ2h0OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUGFpbnRJbmZvJiwgaW50IHR4LCBp
bnQgdHkpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50
UmVjdCYpOwogCiAgICAgaW50IG51bVJvd3MoKSBjb25zdCB7IHJldHVybiBtX2dyaWRSb3dzOyB9
CiAgICAgaW50IG51bUNvbHVtbnMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcApp
bmRleCBhNWFjZDFmLi4wZjIzN2ZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC01
MCw5ICs1MCwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNWR0ltYWdlQ2hy
b21lQ2xpZW50IDogcHVibGljIEVtcHR5Q2hyb21lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBTVkdJ
bWFnZUNocm9tZUNsaWVudChTVkdJbWFnZSogaW1hZ2UpCisgICAgICAgIDogbV9pbWFnZShpbWFn
ZSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNocm9tZURlc3Ryb3llZCgpCisg
ICAgeworICAgICAgICAvLyBUaGVyZSBpcyBubyBzZXRDbGllbnQoKSBvbiBDaHJvbWUsIHNvIHdl
IGNhbid0IGNsZWFyIGl0cyBjbGllbnQgZXhwbGljaXRseS4gV2UgaGF2ZSB0byB3YWl0IGZvcgor
ICAgICAgICAvLyB0aGlzIGNhbGxiYWNrLgorICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgcmVwYWludChjb25zdCBJbnRSZWN0JiByLCBib29sIGNvbnRlbnRD
aGFuZ2VkLCBib29sIGltbWVkaWF0ZSwgYm9vbCByZXBhaW50Q29udGVudE9ubHkpCisgICAgewor
ICAgICAgICBpZiAobV9pbWFnZS0+aW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgbV9pbWFn
ZS0+aW1hZ2VPYnNlcnZlcigpLT5jaGFuZ2VkSW5SZWN0KG1faW1hZ2UsIHIpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBTVkdJbWFnZSogbV9pbWFnZTsKK307CisKIFNWR0ltYWdlOjpTVkdJbWFn
ZShJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQogICAgICwg
bV9kb2N1bWVudCgwKQorICAgICwgbV9jaHJvbWVDbGllbnQoMCkKICAgICAsIG1fcGFnZSgwKQog
ICAgICwgbV9mcmFtZSgwKQogICAgICwgbV9mcmFtZVZpZXcoMCkKQEAgLTE4NywxNiArMjEyLDE3
IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAg
ICAgIHN0YXRpYyBDaHJvbWVDbGllbnQqIGR1bW15Q2hyb21lQ2xpZW50ID0gbmV3IEVtcHR5Q2hy
b21lQ2xpZW50OwogICAgICAgICBzdGF0aWMgRnJhbWVMb2FkZXJDbGllbnQqIGR1bW15RnJhbWVM
b2FkZXJDbGllbnQgPSAgbmV3IEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgICAgIHN0YXRp
YyBFZGl0b3JDbGllbnQqIGR1bW15RWRpdG9yQ2xpZW50ID0gbmV3IEVtcHR5RWRpdG9yQ2xpZW50
OwogICAgICAgICBzdGF0aWMgQ29udGV4dE1lbnVDbGllbnQqIGR1bW15Q29udGV4dE1lbnVDbGll
bnQgPSBuZXcgRW1wdHlDb250ZXh0TWVudUNsaWVudDsKICAgICAgICAgc3RhdGljIERyYWdDbGll
bnQqIGR1bW15RHJhZ0NsaWVudCA9IG5ldyBFbXB0eURyYWdDbGllbnQ7CiAgICAgICAgIHN0YXRp
YyBJbnNwZWN0b3JDbGllbnQqIGR1bW15SW5zcGVjdG9yQ2xpZW50ID0gbmV3IEVtcHR5SW5zcGVj
dG9yQ2xpZW50OwogCisgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gbmV3IFNWR0ltYWdlQ2hyb21l
Q2xpZW50KHRoaXMpOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgU1ZHIGVu
ZHMgdXAgbG9hZGluZyBpdHNlbGYsIHdlJ2xsIGxlYWsgdGhpcyBGcmFtZSAoYW5kIGFzc29jaWF0
ZWQgRE9NICYgcmVuZGVyIHRyZWVzKS4KICAgICAgICAgLy8gVGhlIENhY2hlIGNvZGUgZG9lcyBu
b3Qga25vdyBhYm91dCBDYWNoZWRJbWFnZXMgaG9sZGluZyBGcmFtZXMgYW5kIHdvbid0IGtub3cg
dG8gYnJlYWsgdGhlIGN5Y2xlLgotICAgICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKGR1bW15Q2hy
b21lQ2xpZW50LCBkdW1teUNvbnRleHRNZW51Q2xpZW50LCBkdW1teUVkaXRvckNsaWVudCwgZHVt
bXlEcmFnQ2xpZW50LCBkdW1teUluc3BlY3RvckNsaWVudCkpOworICAgICAgICBtX3BhZ2Uuc2V0
KG5ldyBQYWdlKG1fY2hyb21lQ2xpZW50LCBkdW1teUNvbnRleHRNZW51Q2xpZW50LCBkdW1teUVk
aXRvckNsaWVudCwgZHVtbXlEcmFnQ2xpZW50LCBkdW1teUluc3BlY3RvckNsaWVudCkpOwogICAg
ICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKGZhbHNlKTsKICAg
ICAgICAgbV9wYWdlLT5zZXR0aW5ncygpLT5zZXRQbHVnaW5zRW5hYmxlZChmYWxzZSk7CiAKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmggYi9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5oCmluZGV4IGRmM2Y4MDEuLmYxOGRhZWIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaApAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xh
c3MgRnJhbWU7CiAgICAgY2xhc3MgRnJhbWVWaWV3OwogICAgIGNsYXNzIFBhZ2U7CisgICAgY2xh
c3MgQ2hyb21lQ2xpZW50OwogICAgIAogICAgIGNsYXNzIFNWR0ltYWdlIDogcHVibGljIEltYWdl
IHsKICAgICBwdWJsaWM6CkBAIC03MSw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICAgICAg
CiAgICAgICAgIFNWR0RvY3VtZW50KiBtX2RvY3VtZW50OworICAgICAgICBDaHJvbWVDbGllbnQq
IG1fY2hyb21lQ2xpZW50OwogICAgICAgICBPd25QdHI8UGFnZT4gbV9wYWdlOwogICAgICAgICBS
ZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAgICAgICAgIFJlZlB0cjxGcmFtZVZpZXc+IG1fZnJhbWVW
aWV3Owo=
</data>
<flag name="review"
          id="12422"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26262</attachid>
            <date>2008-12-26 17:07:14 -0800</date>
            <delta_ts>2009-01-02 10:44:49 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>22981_patch.txt</filename>
            <type>text/plain</type>
            <size>45460</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMWNjODE5Li5lNDJjNzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzggQEAKIDIwMDgtMTIt
MjYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyOTgxCisKKyAgICAgICAgQWRkIHRlc3RjYXNlcyB0aGF0IHRl
c3QgcmVkcmF3IG9mIGFuaW1hdGVkIFNWRy1hcy1pbWFnZSwKKyAgICAgICAgYW5kIGFuaW1hdGVk
IFNWRy1hcy1iYWNrZ3JvdW5kLgorICAgICAgICAKKyAgICAgICAgRml4IGZhc3QvYmFja2dyb3Vu
ZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sIHRvIHVzZSBhIHRpbWVvdXQsCisgICAgICAgIHNp
bmNlIHRoZSBTVkcgbG9hZGluZyBkZWxheWVkLCBhbmQgdGhlcmUgaXMgbm8gd2F5IGZyb20gSlMg
dG8ga25vdworICAgICAgICB3aGVuIGl0IGhhcyBwYWludGVkLgorICAgICAgICAKKyAgICAgICAg
KiBmYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1maXhlZC1zaXplLnN2ZzogQWRkZWQuCisgICAgICAgICogZmFzdC9iYWNrZ3JvdW5kcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZzogQWRkZWQuCisgICAgICAgICog
ZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01Lmh0bWw6CisgICAgICAgICogZmFz
dC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LWZpeGVkLXNpemUuc3ZnOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1z
aXplLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMv
YW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNr
Z3JvdW5kLWV4cGVjdGVkLnBuZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3Qv
YmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0OiBBZGRl
ZAorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1tYXNrLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFzay1leHBlY3RlZC5wbmc6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1tYXNrLWV4cGVjdGVkLnR4dDogQWRkZWQKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9i
YWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLmNoZWNrc3VtOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1iYWNrZ3JvdW5kLTUtZXhw
ZWN0ZWQucG5nOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1z
dmctYXMtaW1hZ2UtZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQucG5nOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWlt
YWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKKzIwMDgtMTItMjYgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CisKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyOTgxCiAKICAgICAgICAgVXBkYXRlIG1vcmUgc3ZnLWFzLWltYWdl
IHRlc3QgcmVzdWx0cyBhZmZlY3RlZCBieSB0aGUgZml4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyY2E5NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tn
cm91bmQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIGRpdiB7CisgICAgICBiYWNrZ3JvdW5k
OiByZWQ7CisgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OworICAgICAgYmFja2dy
b3VuZC1pbWFnZTogdXJsKHJlc291cmNlcy9hbmltYXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3Zn
KTsKKyAgICAgIGhlaWdodDogNjAwcHg7CisgICAgICB3aWR0aDogODAwcHg7CisgICAgfQorICA8
L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgi
PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAgZnVuY3Rpb24gcGFnZUxvYWRl
ZCgpIAorICAgIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0sIDQwMCk7ICAgIC8vIGVtcGlyaWNhbGx5
IGRldGVybWluZWQgZGVsYXkuIFNWRyBhbmltYXRpb24gaGFzIDEwMG1zIGR1cmF0aW9uLgorICAg
IH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGFnZUxvYWRlZCwgZmFs
c2UpOworICA8L3NjcmlwdD4KKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0nbWFy
Z2luOiAwcHgnPgorPGRpdj4mbmJzcDs8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2suaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjFiODZkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFz
ay5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgZGl2
IHsKKyAgICBiYWNrZ3JvdW5kOiBsaW1lOworICAgIC13ZWJraXQtbWFzay1yZXBlYXQ6IG5vLXJl
cGVhdDsKKyAgICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChyZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1yZWxhdGl2ZS1zaXplLnN2Zyk7CisgICAgaGVpZ2h0OiA2MDBweDsKKyAgICB3aWR0aDogODAw
cHg7CisgIH0KKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNo
YXJzZXQ9InV0Zi04Ij4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIAorICAgIGZ1bmN0
aW9uIHBhZ2VMb2FkZWQoKSAKKyAgICB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlv
bigpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgICB9LCA0MDApOyAgICAv
LyBlbXBpcmljYWxseSBkZXRlcm1pbmVkIGRlbGF5LiBTVkcgYW5pbWF0aW9uIGhhcyAxMDBtcyBk
dXJhdGlvbi4KKyAgICB9CisKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHBh
Z2VMb2FkZWQsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KKzxkaXY+Jm5ic3A7PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL3Jlc291cmNlcy9h
bmltYXRlZC1yZWN0LWZpeGVkLXNpemUuc3ZnIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5k
cy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2ZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hMWYxMmYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2
ZwpAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/
PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJo
dHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisK
KzwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09LS0+Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBX
ZWIgQ29uc29ydGl1bSwgKE1hc3NhY2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3Rp
dHV0ZSBvZiBUZWNobm9sb2d5LCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAg
ICAgID0tLT4KKzwhLS09ICBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5p
dmVyc2l0eSkuIEFsbCBSaWdodHMgICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRw
Oi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEt
LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0tLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9v
dCIgd2lkdGg9IjQ4MHB4IiBoZWlnaHQ9IjQ4MHB4IiB2aWV3Qm94PSIwIDAgNDgwIDM2MCIgdmVy
c2lvbj0iMS4xIiBiYXNlUHJvZmlsZT0idGlueSI+CisgICA8U1ZHVGVzdENhc2UgeG1sbnM9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvMDIvc3ZnL3Rlc3RzdWl0ZS9kZXNjcmlwdGlvbi8iPgorICAg
PC9TVkdUZXN0Q2FzZT4KKyAgIDx0aXRsZSBpZD0idGVzdC10aXRsZSI+YW5pbWF0ZS1lbGVtLTE0
LXQ8L3RpdGxlPgorICAgPGRlc2MgaWQ9InRlc3QtZGVzYyI+VGVzdCBwb3NzaWJsZSB2YWx1ZXMg
Zm9yICdrZXlUaW1lcyc8L2Rlc2M+CisgICA8ZyBpZD0idGVzdC1ib2R5LWNvbnRlbnQiPgorICAg
ICAgPGcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9
IjEzLjUiIHN0cm9rZS13aWR0aD0iMyIgPgorICAgICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xh
dGUoMTUwLDE0MCkiPgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iLTE0MCIg
eT0iMTQwIj5UaW1lIChzKTo8L3RleHQ+CisgICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2
IiB4PSIyOTAiIHk9IjE0MCI+MDwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5lIHgxPSIzMDAiIHkx
PSIwIiB4Mj0iMzAwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODAwMDAiIC8+Cisg
ICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIyMCIgeT0iMTQwIj42PC90ZXh0Pgor
ICAgICAgICAgICAgPGxpbmUgeDE9IjMwIiB5MT0iMCIgeDI9IjMwIiB5Mj0iMTAwIiBmaWxsPSJu
b25lIiBzdHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAgICA8cmVjdCB4PSIwIiB5PSIwIiB3
aWR0aD0iMzAwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjNDRBQUZGIiBzdHJva2U9IiM4ODAwODgiIHN0
cm9rZS13aWR0aD0iNCIgPgorICAgICAgICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0i
d2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42
IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMiIGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9y
ZWN0PgorICAgICAgICAgPC9nPgorICAgICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRl
c3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25l
IiBzdHJva2U9IiMwMDAwMDAiLz4KKzwvc3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2JhY2tncm91bmRzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3Zn
IGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1y
ZWxhdGl2ZS1zaXplLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODMx
ZWZmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9iYWNrZ3JvdW5kcy9yZXNv
dXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8
P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJM
SUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFw
aGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+
Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgKE1hc3Nh
Y2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBJ
bnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09ICBJbmZv
cm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBSaWdodHMg
ICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0
aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4KKzxz
dmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDov
L3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUiIGhlaWdo
dD0iMTAwJSIgdmlld0JveD0iMCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVByb2ZpbGU9
InRpbnkiPgorICAgPFNWR1Rlc3RDYXNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzAy
L3N2Zy90ZXN0c3VpdGUvZGVzY3JpcHRpb24vIj4KKyAgIDwvU1ZHVGVzdENhc2U+CisgICA8dGl0
bGUgaWQ9InRlc3QtdGl0bGUiPmFuaW1hdGUtZWxlbS0xNC10PC90aXRsZT4KKyAgIDxkZXNjIGlk
PSJ0ZXN0LWRlc2MiPlRlc3QgcG9zc2libGUgdmFsdWVzIGZvciAna2V5VGltZXMnPC9kZXNjPgor
ICAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50Ij4KKyAgICAgIDxnIHhtbDpzcGFjZT0icHJlc2Vy
dmUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMy41IiBzdHJva2Utd2lkdGg9IjMi
ID4KKyAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MCwxNDApIj4KKyAgICAgICAg
ICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMzYiIHg9Ii0xNDAiIHk9IjE0MCI+VGltZSAocyk6PC90ZXh0
PgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iMjkwIiB5PSIxNDAiPjA8L3Rl
eHQ+CisgICAgICAgICAgICA8bGluZSB4MT0iMzAwIiB5MT0iMCIgeDI9IjMwMCIgeTI9IjEwMCIg
ZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAvPgorICAgICAgICAgICAgPHRleHQgZm9udC1z
aXplPSIzNiIgeD0iMjAiIHk9IjE0MCI+NjwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5lIHgxPSIz
MCIgeTE9IjAiIHgyPSIzMCIgeTI9IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAv
PgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSI4MCIg
ZmlsbD0iIzQ0QUFGRiIgc3Ryb2tlPSIjODgwMDg4IiBzdHJva2Utd2lkdGg9IjQiID4KKyAgICAg
ICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0
ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMi
IGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9nPgorICAg
ICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdp
ZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiLz4KKzwv
c3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1i
YWNrZ3JvdW5kLTUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJh
Y2tncm91bmQtNS5odG1sCmluZGV4IDViYzc4ZWYuLjk0NDgyMTAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS5odG1sCkBAIC05
LDYgKzksMTggQEAgZGl2IHsKICAgd2lkdGg6IDgwMHB4OwogfQogPC9zdHlsZT4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpOworCisgICAgLy8gVGVzdCBpbWFnZSBkb2VzIG5vdCBsb2FkIGltbWVkaWF0ZWx5LCBzbyBo
YXZlIHRvIGRlbGF5LgorICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rp
b24oKSB7CisgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7CisgICAgICB9LCAyNTApOworICAgIH0sIGZhbHNlKTsKKzwvc2Ny
aXB0PgogPC9oZWFkPgogPGJvZHkgc3R5bGU9J21hcmdpbjogMHB4Jz4KIDxkaXY+Jm5ic3A7PC9k
aXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMt
aW1hZ2UuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL2FuaW1hdGVkLXN2Zy1hcy1pbWFn
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMjJiYTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1h
Z2UuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIGltZyB7CisgICAgICBtYXJnaW46IDEwcHg7
CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hh
cnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgCisgICAgZnVuY3Rp
b24gcGFnZUxvYWRlZCgpIAorICAgIHsKKyAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0sIDQwMCk7ICAgIC8v
IGVtcGlyaWNhbGx5IGRldGVybWluZWQgZGVsYXkuIFNWRyBhbmltYXRpb24gaGFzIDEwMG1zIGR1
cmF0aW9uLgorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGFn
ZUxvYWRlZCwgZmFsc2UpOworICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICA8cD5JbWFn
ZXMgc2hvdWxkIHJlZHJhdyBjb3JyZWN0bHkgd2hlbiBTVkcgYW5pbWF0aW9uIHJ1bnM8L3A+Cisg
IDxpbWcgaGVpZ2h0PSIyNTBweCIgd2lkdGg9IjM1MHB4IiBib3JkZXI9IjIiIHNyYz0icmVzb3Vy
Y2VzL2FuaW1hdGVkLXJlY3QtZml4ZWQtc2l6ZS5zdmciPjxicj4KKyAgPGltZyBoZWlnaHQ9IjI1
MHB4IiB3aWR0aD0iMzUwcHgiIGJvcmRlcj0iMiIgc3JjPSJyZXNvdXJjZXMvYW5pbWF0ZWQtcmVj
dC1yZWxhdGl2ZS1zaXplLnN2ZyI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1maXhlZC1zaXplLnN2
ZyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmltYXRlZC1yZWN0LWZpeGVk
LXNpemUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZjEyZjIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0
ZWQtcmVjdC1maXhlZC1zaXplLnN2ZwpAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIx
LjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFRE
IFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RU
RC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+Cis8IS0tPSAgQ29weXJp
Z2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwgKE1hc3NhY2h1c2V0dHMgICAgICAg
ICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9sb2d5LCBJbnN0aXR1dCBOYXRpb25h
bCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09ICBJbmZvcm1hdGlxdWUgZXQgZW4g
QXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBSaWdodHMgICAgICA9LS0+Cis8IS0t
PSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9Db25zb3J0aXVtL0xlZ2FsLy4gICAg
ICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4KKzxzdmcgeG1sbnM9Imh0dHA6
Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjQ4MHB4IiBoZWlnaHQ9IjQ4MHB4IiB2aWV3
Qm94PSIwIDAgNDgwIDM2MCIgdmVyc2lvbj0iMS4xIiBiYXNlUHJvZmlsZT0idGlueSI+CisgICA8
U1ZHVGVzdENhc2UgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDIvc3ZnL3Rlc3RzdWl0
ZS9kZXNjcmlwdGlvbi8iPgorICAgPC9TVkdUZXN0Q2FzZT4KKyAgIDx0aXRsZSBpZD0idGVzdC10
aXRsZSI+YW5pbWF0ZS1lbGVtLTE0LXQ8L3RpdGxlPgorICAgPGRlc2MgaWQ9InRlc3QtZGVzYyI+
VGVzdCBwb3NzaWJsZSB2YWx1ZXMgZm9yICdrZXlUaW1lcyc8L2Rlc2M+CisgICA8ZyBpZD0idGVz
dC1ib2R5LWNvbnRlbnQiPgorICAgICAgPGcgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZm9udC1mYW1p
bHk9IkFyaWFsIiBmb250LXNpemU9IjEzLjUiIHN0cm9rZS13aWR0aD0iMyIgPgorICAgICAgICAg
PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTUwLDE0MCkiPgorICAgICAgICAgICAgPHRleHQgZm9u
dC1zaXplPSIzNiIgeD0iLTE0MCIgeT0iMTQwIj5UaW1lIChzKTo8L3RleHQ+CisgICAgICAgICAg
ICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIyOTAiIHk9IjE0MCI+MDwvdGV4dD4KKyAgICAgICAg
ICAgIDxsaW5lIHgxPSIzMDAiIHkxPSIwIiB4Mj0iMzAwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBz
dHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAgICA8dGV4dCBmb250LXNpemU9IjM2IiB4PSIy
MCIgeT0iMTQwIj42PC90ZXh0PgorICAgICAgICAgICAgPGxpbmUgeDE9IjMwIiB5MT0iMCIgeDI9
IjMwIiB5Mj0iMTAwIiBmaWxsPSJub25lIiBzdHJva2U9IiM4ODAwMDAiIC8+CisgICAgICAgICAg
ICA8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjNDRBQUZG
IiBzdHJva2U9IiM4ODAwODgiIHN0cm9rZS13aWR0aD0iNCIgPgorICAgICAgICAgICAgICAgPGFu
aW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJkaXNjcmV0ZSIgdmFsdWVzPSIz
MDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0iMTAwbXMiIGZpbGw9ImZyZWV6
ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9nPgorICAgICAgPC9nPgorICAg
PC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhl
aWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAiLz4KKzwvc3ZnPgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1y
ZWxhdGl2ZS1zaXplLnN2ZyBiL0xheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9hbmlt
YXRlZC1yZWN0LXJlbGF0aXZlLXNpemUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjA4MzFlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ltYWdl
cy9yZXNvdXJjZXMvYW5pbWF0ZWQtcmVjdC1yZWxhdGl2ZS1zaXplLnN2ZwpAQCAtMCwwICsxLDMx
IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCFET0NUWVBFIHN2
ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEgVGlueS8vRU4iICJodHRwOi8vd3d3LnczLm9y
Zy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS10aW55LmR0ZCI+CisKKzwhLS09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09LS0+Cis8IS0tPSAgQ29weXJpZ2h0IDIwMDAgV29ybGQgV2lkZSBXZWIgQ29uc29ydGl1bSwg
KE1hc3NhY2h1c2V0dHMgICAgICAgICAgPS0tPgorPCEtLT0gIEluc3RpdHV0ZSBvZiBUZWNobm9s
b2d5LCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gICAgICAgID0tLT4KKzwhLS09
ICBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUsIEtlaW8gVW5pdmVyc2l0eSkuIEFsbCBS
aWdodHMgICAgICA9LS0+Cis8IS0tPSAgUmVzZXJ2ZWQuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9D
b25zb3J0aXVtL0xlZ2FsLy4gICAgICAgICAgICAgICAgPS0tPgorPCEtLT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0t
LT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgIGlkPSJzdmctcm9vdCIgd2lkdGg9IjEwMCUi
IGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDQ4MCAzNjAiIHZlcnNpb249IjEuMSIgYmFzZVBy
b2ZpbGU9InRpbnkiPgorICAgPFNWR1Rlc3RDYXNlIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwLzAyL3N2Zy90ZXN0c3VpdGUvZGVzY3JpcHRpb24vIj4KKyAgIDwvU1ZHVGVzdENhc2U+Cisg
ICA8dGl0bGUgaWQ9InRlc3QtdGl0bGUiPmFuaW1hdGUtZWxlbS0xNC10PC90aXRsZT4KKyAgIDxk
ZXNjIGlkPSJ0ZXN0LWRlc2MiPlRlc3QgcG9zc2libGUgdmFsdWVzIGZvciAna2V5VGltZXMnPC9k
ZXNjPgorICAgPGcgaWQ9InRlc3QtYm9keS1jb250ZW50Ij4KKyAgICAgIDxnIHhtbDpzcGFjZT0i
cHJlc2VydmUiIGZvbnQtZmFtaWx5PSJBcmlhbCIgZm9udC1zaXplPSIxMy41IiBzdHJva2Utd2lk
dGg9IjMiID4KKyAgICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1MCwxNDApIj4KKyAg
ICAgICAgICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMzYiIHg9Ii0xNDAiIHk9IjE0MCI+VGltZSAocyk6
PC90ZXh0PgorICAgICAgICAgICAgPHRleHQgZm9udC1zaXplPSIzNiIgeD0iMjkwIiB5PSIxNDAi
PjA8L3RleHQ+CisgICAgICAgICAgICA8bGluZSB4MT0iMzAwIiB5MT0iMCIgeDI9IjMwMCIgeTI9
IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgwMDAwIiAvPgorICAgICAgICAgICAgPHRleHQg
Zm9udC1zaXplPSIzNiIgeD0iMjAiIHk9IjE0MCI+NjwvdGV4dD4KKyAgICAgICAgICAgIDxsaW5l
IHgxPSIzMCIgeTE9IjAiIHgyPSIzMCIgeTI9IjEwMCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjODgw
MDAwIiAvPgorICAgICAgICAgICAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjMwMCIgaGVpZ2h0
PSI4MCIgZmlsbD0iIzQ0QUFGRiIgc3Ryb2tlPSIjODgwMDg4IiBzdHJva2Utd2lkdGg9IjQiID4K
KyAgICAgICAgICAgICAgPGFuaW1hdGUgYXR0cmlidXRlTmFtZT0id2lkdGgiIGNhbGNNb2RlPSJk
aXNjcmV0ZSIgdmFsdWVzPSIzMDA7MzAiIGtleVRpbWVzPSIwOy42IiBiZWdpbj0iMHMiIGR1cj0i
MTAwbXMiIGZpbGw9ImZyZWV6ZSIvPgorICAgICAgICAgICAgPC9yZWN0PgorICAgICAgICAgPC9n
PgorICAgICAgPC9nPgorICAgPC9nPgorICAgPHJlY3QgaWQ9InRlc3QtZnJhbWUiIHg9IjEiIHk9
IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iMzU4IiBmaWxsPSJub25lIiBzdHJva2U9IiMwMDAwMDAi
Lz4KKzwvc3ZnPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9i
YWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1leHBlY3RlZC5jaGVja3N1bSBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1h
cy1iYWNrZ3JvdW5kLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjVhZDRiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1leHBlY3Rl
ZC5jaGVja3N1bQpAQCAtMCwwICsxIEBACitmN2RjMzZjNDkzYzU4ZmRjODQ1OTE5NWY5YzE3NjVm
OQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLWV4
cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRzL2Fu
aW1hdGVkLXN2Zy1hcy1iYWNrZ3JvdW5kLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lMTZhYWNmCkJpbmFyeSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJh
Y2tncm91bmQtZXhwZWN0ZWQucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5p
bWF0ZWQtc3ZnLWFzLWJhY2tncm91bmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmNiNWUyYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtYmFja2dyb3VuZC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAgW2JnY29sb3I9I0ZGMDAwMF0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQ6ICIgIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2stZXhwZWN0ZWQuY2hlY2tz
dW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1z
dmctYXMtbWFzay1leHBlY3RlZC5jaGVja3N1bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xYzVmN2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3ZnLWFzLW1hc2stZXhwZWN0ZWQuY2hlY2tz
dW0KQEAgLTAsMCArMSBAQAorOTE4MWY3YWVhZDQ4N2QwNDM0YTY4ZTNhYjZjNGY3NjUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMtbWFzay1leHBlY3RlZC5wbmcgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9hbmltYXRlZC1zdmctYXMt
bWFzay1leHBlY3RlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVk
ZWIxMgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnBuZyBkaWZm
ZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2JhY2tncm91bmRz
L2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1tYXNrLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTIyNTgyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQt
c3ZnLWFzLW1hc2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNp
emUgODAweDYwMCBbYmdjb2xvcj0jMDBGRjAwXQorICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDR4MTgKKyAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ6ICIgIgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFz
LWJhY2tncm91bmQtNS1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2JhY2tncm91bmRzL3N2Zy1hcy1iYWNrZ3JvdW5kLTUtZXhwZWN0ZWQuY2hlY2tzdW0K
aW5kZXggZmU3MzA5OC4uMWNmNDYwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtNS1leHBlY3RlZC5jaGVja3N1
bQorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMt
YmFja2dyb3VuZC01LWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0xICsxIEBACi1kZmI5YWE0ZjBkNGRl
OWVhMTA2NzdhOTEwNzUwY2M3NQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzA5ODRlNjRl
OTViNWQyOGM5YWYzNDEyNDViOGYxN2M5ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvYmFja2dyb3VuZHMvc3ZnLWFz
LWJhY2tncm91bmQtNS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLnBuZwppbmRleCAzM2I0
N2E4Li43ZjU1ZDQwIDEwMDY0NApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dyb3VuZC01LWV4cGVjdGVkLnBuZyBhbmQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9iYWNrZ3JvdW5kcy9zdmctYXMtYmFja2dy
b3VuZC01LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRlZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQuY2hlY2tz
dW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFz
LWltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjEyZjkxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0w
LDAgKzEgQEAKK2QwMmExYTAxNTI2ZWY0OTJlNzA3N2VlMzk5MTI4Y2YxClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
aW1hZ2VzL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLnBu
ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNThmOGI0CkJpbmFyeSBmaWxl
cyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL2Fu
aW1hdGVkLXN2Zy1hcy1pbWFnZS1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9hbmltYXRl
ZC1zdmctYXMtaW1hZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjk4ZWE0MTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFzLWltYWdlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzcxeDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzcxOiAiSW1hZ2VzIHNob3VsZCBy
ZWRyYXcgY29ycmVjdGx5IHdoZW4gU1ZHIGFuaW1hdGlvbiBydW5zIgorICAgICAgUmVuZGVyQmxv
Y2sgKGFub255bW91cykgYXQgKDAsMzQpIHNpemUgNzg0eDU0OAorICAgICAgICBSZW5kZXJJbWFn
ZSB7SU1HfSBhdCAoMTAsMTApIHNpemUgMzU0eDI1NCBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAw
MDApXQorICAgICAgICBSZW5kZXJCUiB7QlJ9IGF0ICgzNzQsMjc0KSBzaXplIDB4MAorICAgICAg
ICBSZW5kZXJJbWFnZSB7SU1HfSBhdCAoMTAsMjg0KSBzaXplIDM1NHgyNTQgW2JvcmRlcjogKDJw
eCBzb2xpZCAjMDAwMDAwKV0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhMjZjOC4uMTBmNjM4
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw3NCBAQAorMjAwOC0xMi0yNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODEKKworICAg
ICAgICBSZXBhaW50cyBpbnNpZGUgb2YgYW4gU1ZHSW1hZ2Ugd2VyZSB0aHJvd24gb24gdGhlIGZs
b29yLAorICAgICAgICB3aGljaCBicm9rZSBpbmNyZW1lbnRhbCBwYWludGluZyBkdWUgdG8gbG9h
ZGluZywgb3IgU1ZHIGFuaW1hdGlvbi4KKyAgICAgICAgRml4IHRoaXMgYnkgYXNzaWduaW5nIHRo
ZSBTVkdJbWFnZSBhIENocm9tZUNsaWVudCBzdWJjbGFzcyB0aGF0IHBhc3NlcworICAgICAgICBh
bG9uZyByZXBhaW50cyB2aWEgYSBuZXcgbWV0aG9kIG9uIEltYWdlT2JzZXJ2ZXIsIHdoaWNoIGFs
c28gdGFrZXMKKyAgICAgICAgYSByZWN0IHBhcmFtZXRlciBmb3IgdGhlIGNoYW5nZWQgcmVjdCwg
YWxsb3dpbmcgaW5jcmVtZW50YWwgcmVwYWludHMuCisgICAgICAgIEZpeCBSZW5kZXJJbWFnZTo6
aW1hZ2VDaGFuZ2VkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgY2hhbmdlZFJlY3QgdG8KKyAg
ICAgICAgb25seSByZXBhaW50IHRoZSBjaGFuZ2VkIHBhcnRzIG9mIHRoZSBpbWFnZS4KKyAgICAg
ICAgCisgICAgICAgIFRlc3RzOiBmYXN0L2JhY2tncm91bmRzL2FuaW1hdGVkLXN2Zy1hcy1iYWNr
Z3JvdW5kLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQtc3Zn
LWFzLW1hc2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC9pbWFnZXMvYW5pbWF0ZWQtc3ZnLWFz
LWltYWdlLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVzaXplZCk6CisgICAgICAgICogbG9hZGVyL0Nh
Y2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjphZGRDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2VydmVycyk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmFuaW1hdGlv
bkFkdmFuY2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGFuZ2VkSW5SZWN0
KToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkSW1hZ2UuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlQ2xp
ZW50OjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT2Jz
ZXJ2ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjptYXBSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVySW1hZ2U6OmludHJpbnNpY1NpemVDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaXN0TWFya2Vy
OjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmg6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjppbWFnZUNoYW5nZWQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyU1ZHSW1hZ2UuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFy
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJQYXJ0OjppbWFnZUNoYW5n
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ29sOjppbWFnZUNoYW5nZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJs
ZUNvbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6aW1hZ2VD
aGFuZ2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmg6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlQ2hyb21lQ2xpZW50OjpTVkdJbWFnZUNocm9tZUNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdJbWFnZUNocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlQ2hyb21lQ2xpZW50OjpyZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpTVkdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5oOgorCiAyMDA4LTEyLTI2ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA0MWY3MWUxLi4wOWY4OTky
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC00OCwxNCArNDgsMTQgQEAgdm9pZCBDU1NDYW52
YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZChIVE1MQ2FudmFzRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
RmxvYXRSZWN0JgogewogICAgIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgSW50U2l6ZT46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fY2xpZW50cy5lbmQoKTsKICAgICBmb3IgKEhhc2hNYXA8UmVuZGVy
T2JqZWN0KiwgSW50U2l6ZT46OmNvbnN0X2l0ZXJhdG9yIGN1cnIgPSBtX2NsaWVudHMuYmVnaW4o
KTsgY3VyciAhPSBlbmQ7ICsrY3VycikKLSAgICAgICAgY3Vyci0+Zmlyc3QtPmltYWdlQ2hhbmdl
ZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKKyAgICAgICAgY3Vyci0+Zmly
c3QtPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpLCBlbmNs
b3NpbmdJbnRSZWN0KGNoYW5nZWRSZWN0KSk7CiB9CiAKIHZvaWQgQ1NTQ2FudmFzVmFsdWU6OmNh
bnZhc1Jlc2l6ZWQoSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgSGFzaE1hcDxS
ZW5kZXJPYmplY3QqLCBJbnRTaXplPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVu
ZCgpOwogICAgIGZvciAoSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBJbnRTaXplPjo6Y29uc3RfaXRl
cmF0b3IgY3VyciA9IG1fY2xpZW50cy5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAg
ICAgICBjdXJyLT5maXJzdC0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0
cj4odGhpcykpOworICAgICAgICBjdXJyLT5maXJzdC0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0
PFdyYXBwZWRJbWFnZVB0cj4odGhpcyksIEludFJlY3QoMCwgMCwgLTEsIC0xKSk7CiB9CiAKIElu
dFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IGU3Mzk5ZmMuLmQyZmIxZTQgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9D
YWNoZWRJbWFnZS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6YWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgIH0KIAogICAgIGlmIChtX2ltYWdlICYm
ICFtX2ltYWdlLT5yZWN0KCkuaXNFbXB0eSgpKQotICAgICAgICBjLT5pbWFnZUNoYW5nZWQodGhp
cyk7CisgICAgICAgIGMtPmltYWdlQ2hhbmdlZCh0aGlzLCBJbnRSZWN0KDAsIDAsIC0xLCAtMSkp
OwogCiAgICAgaWYgKCFtX2xvYWRpbmcpCiAgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMp
OwpAQCAtMjE2LDExICsyMTYsMTEgQEAgSW50UmVjdCBDYWNoZWRJbWFnZTo6aW1hZ2VSZWN0KGZs
b2F0IG11bHRpcGxpZXIpIGNvbnN0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgd2lkdGgsIGhl
aWdodCk7CiB9CiAKLXZvaWQgQ2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2VydmVycygpCit2b2lkIENh
Y2hlZEltYWdlOjpub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCYgY2hhbmdlUmVjdCkKIHsK
ICAgICBDYWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlciB3KG1fY2xpZW50cyk7CiAgICAgd2hpbGUg
KENhY2hlZFJlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCi0gICAgICAgIGMtPmltYWdlQ2hh
bmdlZCh0aGlzKTsKKyAgICAgICAgYy0+aW1hZ2VDaGFuZ2VkKHRoaXMsIGNoYW5nZVJlY3QpOwog
fQogCiB2b2lkIENhY2hlZEltYWdlOjpjbGVhcigpCkBAIC0yODcsNyArMjg3LDkgQEAgdm9pZCBD
YWNoZWRJbWFnZTo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSwgYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIG5vdGlmeU9ic2VydmVycygpOworICAgICAgICAvLyBJdCB3b3VsZCBiZSBuaWNlIHRv
IG9ubHkgcmVkcmF3IHRoZSBkZWNvZGVkIGJhbmQgb2YgdGhlIGltYWdlLCBidXQgd2l0aCB0aGUg
Y3VycmVudCBkZXNpZ24KKyAgICAgICAgLy8gKGRlY29kaW5nIGRlbGF5ZWQgdW50aWwgcGFpbnRp
bmcpIHRoYXQgc2VlbXMgaGFyZC4KKyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKEludFJlY3QoMCwg
MCwgLTEsIC0xKSk7CiAKICAgICAgICAgaWYgKG1faW1hZ2UpCiAgICAgICAgICAgICBzZXRFbmNv
ZGVkU2l6ZShtX2ltYWdlLT5kYXRhKCkgPyBtX2ltYWdlLT5kYXRhKCktPnNpemUoKSA6IDApOwpA
QCAtMzAzLDcgKzMwNSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmVycm9yKCkKIHsKICAgICBjbGVh
cigpOwogICAgIG1fZXJyb3JPY2N1cnJlZCA9IHRydWU7Ci0gICAgbm90aWZ5T2JzZXJ2ZXJzKCk7
CisgICAgbm90aWZ5T2JzZXJ2ZXJzKEludFJlY3QoMCwgMCwgLTEsIC0xKSk7CiAgICAgbV9sb2Fk
aW5nID0gZmFsc2U7CiAgICAgY2hlY2tOb3RpZnkoKTsKIH0KQEAgLTM2OCw3ICszNzAsMTMgQEAg
Ym9vbCBDYWNoZWRJbWFnZTo6c2hvdWxkUGF1c2VBbmltYXRpb24oY29uc3QgSW1hZ2UqIGltYWdl
KQogdm9pZCBDYWNoZWRJbWFnZTo6YW5pbWF0aW9uQWR2YW5jZWQoY29uc3QgSW1hZ2UqIGltYWdl
KQogewogICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQotICAgICAgICBub3RpZnlPYnNlcnZlcnMo
KTsKKyAgICAgICAgbm90aWZ5T2JzZXJ2ZXJzKG1faW1hZ2UtPnJlY3QoKSk7Cit9CisKK3ZvaWQg
Q2FjaGVkSW1hZ2U6OmNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQoreworICAgIGlmIChpbWFnZSA9PSBtX2ltYWdlKQorICAgICAgICBub3RpZnlP
YnNlcnZlcnMocmVjdCk7CiB9CiAKIH0gLy9uYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1hZ2UuaCBiL1dlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdl
LmgKaW5kZXggZjI0ZTJmYi4uNmVmN2JiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oCkBAIC04NSwxMSAr
ODUsMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhdXNlQW5pbWF0aW9u
KGNvbnN0IEltYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0
IEltYWdlKik7CisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBj
b25zdCBJbnRSZWN0Jik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJbWFnZSgpOwogICAg
IHNpemVfdCBtYXhpbXVtRGVjb2RlZEltYWdlU2l6ZSgpOwotICAgIHZvaWQgbm90aWZ5T2JzZXJ2
ZXJzKCk7CisgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCYgY2hhbmdlUmVj
dCk7CiAgICAgdm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZChUaW1lcjxDYWNoZWRJ
bWFnZT4qKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlQ2xpZW50LmggYi9XZWJDb3JlL2xvYWRlci9DYWNoZWRS
ZXNvdXJjZUNsaWVudC5oCmluZGV4IDFkOGQ0NWUuLmI4MzczMzMgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvbG9hZGVyL0NhY2hlZFJlc291cmNlQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkUmVzb3VyY2VDbGllbnQuaApAQCAtNTYsOCArNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgfkNhY2hlZFJlc291cmNlQ2xpZW50KCkgeyB9CiAKICAgICAgICAg
Ly8gQ2FsbGVkIHdoZW5ldmVyIGEgZnJhbWUgb2YgYW4gaW1hZ2UgY2hhbmdlcywgZWl0aGVyIGJl
Y2F1c2Ugd2UgZ290IG1vcmUgZGF0YSBmcm9tIHRoZSBuZXR3b3JrIG9yCi0gICAgICAgIC8vIGJl
Y2F1c2Ugd2UgYXJlIGFuaW1hdGluZy4KLSAgICAgICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdl
ZChDYWNoZWRJbWFnZSopIHsgfTsKKyAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgYW5pbWF0aW5n
LiBSZWN0IGlzIHRoZSBjaGFuZ2VkIHJlY3Qgb2YgdGhlIGltYWdlIGlmIGtub3duLCBvciAoMCwg
MCwgLTEsIC0xKSBvdGhlcndpc2UuCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
Q2FjaGVkSW1hZ2UqLCBjb25zdCBJbnRSZWN0JikgeyB9OwogICAgICAgICAKICAgICAgICAgLy8g
Q2FsbGVkIHRvIGZpbmQgb3V0IGlmIHRoaXMgY2xpZW50IHdhbnRzIHRvIGFjdHVhbGx5IGRpc3Bs
YXkgdGhlIGltYWdlLiAgVXNlZCB0byB0ZWxsIHdoZW4gd2UKICAgICAgICAgLy8gY2FuIGhhbHQg
YW5pbWF0aW9uLiAgQ29udGVudCBub2RlcyB0aGF0IGhvbGQgaW1hZ2UgcmVmcyBmb3IgZXhhbXBs
ZSB3b3VsZCBub3QgcmVuZGVyIHRoZSBpbWFnZSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VPYnNlcnZlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZU9ic2VydmVyLmgKaW5kZXggNGJlODNiZC4uOGI2OTNkOSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2U7CitjbGFzcyBJbnRSZWN0OwogCiAvLyBJbnRlcmZhY2Ug
Zm9yIG5vdGlmaWNhdGlvbiBhYm91dCBjaGFuZ2VzIHRvIGFuIGltYWdlLCBpbmNsdWRpbmcgZGVj
b2RpbmcsCiAvLyBkcmF3aW5nLCBhbmQgYW5pbWF0aW5nLgpAQCAtNDEsNiArNDIsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGF1c2VBbmltYXRpb24oY29uc3QgSW1hZ2Uq
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKikg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25z
dCBJbnRSZWN0JikgPSAwOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNzM5
YzBiOC4uZDdkNDFlMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01NTgsNyArNTU4LDcg
QEAgSW50U2l6ZSBSZW5kZXJCb3g6OmNhbGN1bGF0ZUJhY2tncm91bmRTaXplKGNvbnN0IEZpbGxM
YXllciogYmdMYXllciwgaW50IHNjYWxlZFcKICAgICAgICAgcmV0dXJuIGJnLT5pbWFnZVNpemUo
dGhpcywgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6Omlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlckJveDo6aW1hZ2VD
aGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgaWYg
KGlzSW5saW5lRmxvdygpIHx8CiAgICAgICAgIHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KSAmJiBzdHlsZSgpLT5ib3JkZXJJbWFnZSgpLmltYWdlKCktPmRhdGEoKSA9PSBpbWFnZSB8fApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCAyNmUyMTJhLi5lMWY2ODA0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaApAQCAtMTU5LDcgKzE1OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJveERlY29yYXRpb25zKFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBpbnQgdHgsIGludCB0eSk7Ci0g
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1
YWwgdm9pZCBpbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAK
ICAgICAvLyBDYWxsZWQgd2hlbiBhIHBvc2l0aW9uZWQgb2JqZWN0IG1vdmVzIGJ1dCBkb2Vzbid0
IGNoYW5nZSBzaXplLiAgQSBzaW1wbGlmaWVkIGxheW91dCBpcyBkb25lCiAgICAgLy8gdGhhdCBq
dXN0IHVwZGF0ZXMgdGhlIG9iamVjdCdzIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2Uu
Y3BwCmluZGV4IDBjYTNhZjcuLjkyMjY5YTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAK
QEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFJlbmRlckltYWdlOjpzZXRDYWNoZWRJbWFnZShDYWNo
ZWRJbWFnZSogbmV3SW1hZ2UpCiAgICAgaWYgKG1fY2FjaGVkSW1hZ2UpIHsKICAgICAgICAgbV9j
YWNoZWRJbWFnZS0+YWRkQ2xpZW50KHRoaXMpOwogICAgICAgICBpZiAobV9jYWNoZWRJbWFnZS0+
ZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2Uu
Z2V0KCkpOworICAgICAgICAgICAgaW1hZ2VDaGFuZ2VkKG1fY2FjaGVkSW1hZ2UuZ2V0KCksIElu
dFJlY3QoMCwgMCwgLTEsIC0xKSk7CiAgICAgfQogfQogCkBAIC0yNTIsMTMgKzI1MiwyNSBAQCBi
b29sIFJlbmRlckltYWdlOjpzZXRJbWFnZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJ
bWFnZSAvKiA9IDAgKi8pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2U6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UpCisvLyBSZXR1cm5zIGEgcmVj
dCBwcm9kdWNlZCBieSBtYXBwaW5nIGFuZCBzY2FsaW5nIHIgZnJvbSB0aGUgYm91bmRzIG9mIHNy
Y1JlY3QgdG8gdGhlIGJvdW5kcyBvZiBkZXN0UmVjdAorc3RhdGljIEludFJlY3QgbWFwUmVjdChj
b25zdCBJbnRSZWN0JiByLCBjb25zdCBJbnRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkKK3sKKyAgICBmbG9hdCB3aWR0aFJhdGlvID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRl
c3RSZWN0LndpZHRoKCkpIC8gc3JjUmVjdC53aWR0aCgpOworICAgIGZsb2F0IGhlaWdodFJhdGlv
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGRlc3RSZWN0LmhlaWdodCgpKSAvIHNyY1JlY3QuaGVpZ2h0
KCk7CisKKyAgICByZXR1cm4gSW50UmVjdChkZXN0UmVjdC54KCkgKyBzdGF0aWNfY2FzdDxpbnQ+
KGZsb29yZigoci54KCkgLSBzcmNSZWN0LngoKSkgKiB3aWR0aFJhdGlvKSksCisgICAgICAgICAg
ICAgICAgICAgZGVzdFJlY3QueSgpICsgc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoKHIueSgpIC0g
c3JjUmVjdC55KCkpICogaGVpZ2h0UmF0aW8pKSwKKyAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KGNlaWxmKHIud2lkdGgoKSAqIHdpZHRoUmF0aW8pKSwKKyAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnQ+KGNlaWxmKHIuaGVpZ2h0KCkgKiBoZWlnaHRSYXRpbykpKTsK
K30KKwordm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJ
bWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZG9jdW1lbnRCZWluZ0Rlc3Ry
b3llZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoaGFzQm94RGVjb3JhdGlvbnMoKSB8
fCBoYXNNYXNrKCkpCi0gICAgICAgIFJlbmRlclJlcGxhY2VkOjppbWFnZUNoYW5nZWQobmV3SW1h
Z2UpOworICAgICAgICBSZW5kZXJSZXBsYWNlZDo6aW1hZ2VDaGFuZ2VkKG5ld0ltYWdlLCByZWN0
KTsKICAgICAKICAgICBpZiAobmV3SW1hZ2UgIT0gaW1hZ2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTI5OSwxMCArMzExLDE4IEBAIHZvaWQgUmVuZGVySW1hZ2U6Omlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIgbmV3SW1hZ2UpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoc2hvdWxkUmVwYWludCkKLSAgICAgICAgLy8gRklYTUU6IFdlIGFsd2F5cyBqdXN0
IGRvIGEgY29tcGxldGUgcmVwYWludCwgc2luY2Ugd2UgYWx3YXlzIHBhc3MgaW4gdGhlIGZ1bGwg
aW1hZ2UKLSAgICAgICAgLy8gcmVjdCBhdCB0aGUgbW9tZW50IGFueXdheS4KLSAgICAgICAgcmVw
YWludFJlY3RhbmdsZShjb250ZW50Qm94KCkpOworICAgIGlmIChzaG91bGRSZXBhaW50KSB7Cisg
ICAgICAgIEludFJlY3QgcmVwYWludFJlY3Q7CisgICAgICAgIGlmIChyZWN0LndpZHRoKCkgIT0g
LTEgJiYgcmVjdC5oZWlnaHQoKSAhPSAtMSkgeworICAgICAgICAgICAgLy8gVGhlIGltYWdlIGNo
YW5nZWQgcmVjdCBpcyBpbiBzb3VyY2UgaW1hZ2UgY29vcmRpbmF0ZXMgKHByZS16b29taW5nKSwK
KyAgICAgICAgICAgIC8vIHNvIG1hcCB0byB0aGUgY29udGVudHNCb3ggdXNpbmcgdGhlIGltYWdl
IHJlY3QKKyAgICAgICAgICAgIHJlcGFpbnRSZWN0ID0gbWFwUmVjdChyZWN0LCBtX2NhY2hlZElt
YWdlLT5pbWFnZSgpLT5yZWN0KCksIGNvbnRlbnRCb3goKSk7CisgICAgICAgICAgICByZXBhaW50
UmVjdC5pbnRlcnNlY3QoY29udGVudEJveCgpKTsgIC8vIGd1YXJkIGFnYWluc3QgdG9vLWxhcmdl
IGNoYW5nZWQgcmVjdHMKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByZXBhaW50UmVjdCA9
IGNvbnRlbnRCb3goKTsKKyAgICAgICAgCisgICAgICAgIHJlcGFpbnRSZWN0YW5nbGUocmVwYWlu
dFJlY3QpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJJbWFnZTo6cmVzZXRBbmltYXRpb24oKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlLmgKaW5kZXggNDc3ZmRlYi4uYzJkNTczYyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50
IG1pbmltdW1SZXBsYWNlZEhlaWdodCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiAgICAgYm9vbCBzZXRJbWFn
ZVNpemVGb3JBbHRUZXh0KENhY2hlZEltYWdlKiBuZXdJbWFnZSA9IDApOwogCkBAIC04MSw3ICs4
MSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEludFNpemUgaW1hZ2VTaXplKGZsb2F0IG11
bHRpcGxpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UgPyBtX2NhY2hlZEltYWdlLT5p
bWFnZVNpemUobXVsdGlwbGllcikgOiBJbnRTaXplKCk7IH0KICAgICB2aXJ0dWFsIFdyYXBwZWRJ
bWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkSW1hZ2UuZ2V0KCk7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBpbnRyaW5zaWNTaXplQ2hhbmdlZCgpIHsgaW1hZ2VDaGFuZ2Vk
KGltYWdlUHRyKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludHJpbnNpY1NpemVDaGFuZ2VkKCkg
eyBpbWFnZUNoYW5nZWQoaW1hZ2VQdHIoKSwgSW50UmVjdCgwLCAwLCAtMSwgLTEpKTsgfQogCiBw
cml2YXRlOgogICAgIGludCBjYWxjQXNwZWN0UmF0aW9XaWR0aCgpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAppbmRleCBiMmZiNTFjLi43ZTQxMWYzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtNjU2LDcgKzY1Niw3IEBAIHZvaWQg
UmVuZGVyTGlzdE1hcmtlcjo6bGF5b3V0KCkKICAgICBzZXROZWVkc0xheW91dChmYWxzZSk7CiB9
CiAKLXZvaWQgUmVuZGVyTGlzdE1hcmtlcjo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBv
KQordm9pZCBSZW5kZXJMaXN0TWFya2VyOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG8s
IGNvbnN0IEludFJlY3QmKQogewogICAgIC8vIEEgbGlzdCBtYXJrZXIgY2FuJ3QgaGF2ZSBhIGJh
Y2tncm91bmQgb3IgYm9yZGVyIGltYWdlLCBzbyBubyBuZWVkIHRvIGNhbGwgdGhlIGJhc2UgY2xh
c3MgbWV0aG9kLgogICAgIGlmIChvICE9IG1faW1hZ2UtPmRhdGEoKSkKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RNYXJrZXIuaAppbmRleCAzYzUyMjRjLi42OGFjN2ViIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdE1hcmtlci5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0KCk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGNQcmVmV2lkdGhzKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0cik7CisgICAgdmlydHVh
bCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QmKTsKIAog
ICAgIHZpcnR1YWwgSW5saW5lQm94KiBjcmVhdGVJbmxpbmVCb3goYm9vbCwgYm9vbCwgYm9vbCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDllNDRiMmMuLmIxNjBlY2IgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMzIwNyw5ICszMjA3LDkgQEAgQW5pbWF0
aW9uQ29udHJvbGxlciogUmVuZGVyT2JqZWN0OjphbmltYXRpb24oKSBjb25zdAogICAgIHJldHVy
biBkb2N1bWVudCgpLT5mcmFtZSgpLT5hbmltYXRpb24oKTsKIH0KIAotdm9pZCBSZW5kZXJPYmpl
Y3Q6OmltYWdlQ2hhbmdlZChDYWNoZWRJbWFnZSogaW1hZ2UpCit2b2lkIFJlbmRlck9iamVjdDo6
aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBpbWFnZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRyPihpbWFnZSkpOwor
ICAgIGltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KGltYWdlKSwgcmVj
dCk7CiB9CiAKIEludFJlY3QgUmVuZGVyT2JqZWN0OjpyZWZsZWN0aW9uQm94KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggZmU5OTg1OS4uZTJmNmI0ZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKQEAgLTg4Myw4ICs4ODMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgcHJldmlvdXNPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IG5l
eHRPZmZzZXQoaW50IGN1cnJlbnQpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGltYWdlQ2hh
bmdlZChDYWNoZWRJbWFnZSogaW1hZ2UpOwotICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyIGRhdGEpIHsgfTsKKyAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2Vk
KENhY2hlZEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBp
bWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIGRhdGEsIGNvbnN0IEludFJlY3QmKSB7IH07CiAg
ICAgdmlydHVhbCBib29sIHdpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopOwogCiAgICAgdmly
dHVhbCB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3BvcywgaW50JiBlcG9zKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCA1MmFkOWYxLi43OWYwNmRjIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCkBAIC0yMjcsOSArMjI3LDkgQEAgRmxv
YXRSZWN0IFJlbmRlclNWR0ltYWdlOjpyZWxhdGl2ZUJCb3goYm9vbCkgY29uc3QKICAgICByZXR1
cm4gbV9sb2NhbEJvdW5kczsKIH0KIAotdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdl
ZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgUmVu
ZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChpbWFnZSk7CisgICAgUmVuZGVySW1hZ2U6OmltYWdlQ2hh
bmdlZChpbWFnZSwgcmVjdCk7CiAKICAgICAvLyBXZSBvdmVycmlkZSB0byBpbnZhbGlkYXRlIGEg
bGFyZ2VyIHJlY3QsIHNpbmNlIFNWRyBpbWFnZXMgY2FuIGRyYXcgb3V0c2lkZSB0aGVpciAiYm91
bmRzIgogICAgIHJlcGFpbnRSZWN0YW5nbGUoYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmgKaW5kZXggOWI3Y2QyMS4uYjJhYjE4MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuaAorKysgYi9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5oCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUXVhZHMoVmVjdG9yPEZsb2F0
UXVhZD4mLCBib29sIHRvcExldmVsID0gdHJ1ZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRG
b2N1c1JpbmdSZWN0cyhHcmFwaGljc0NvbnRleHQqLCBpbnQgdHgsIGludCB0eSk7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCYp
OwogICAgICAgICB2b2lkIGFkanVzdFJlY3RzRm9yQXNwZWN0UmF0aW8oRmxvYXRSZWN0JiBkZXN0
UmVjdCwgRmxvYXRSZWN0JiBzcmNSZWN0LCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKik7CiAgICAg
ICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclBhcnQuY3BwCmluZGV4IGQ1ZTcyZTkuLjg2YTlmMTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC0xMzMsMTIgKzEzMywxMiBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnN0eWxlRGlkQ2hhbmdlKFJlbmRlclN0eWxlOjpEaWZm
IGRpZmYsIGNvbnN0IFJlbmRlclN0eQogICAgICAgICBtX3Njcm9sbGJhci0+dGhlbWUoKS0+aW52
YWxpZGF0ZVBhcnQobV9zY3JvbGxiYXIsIG1fcGFydCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xs
YmFyUGFydDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSkKK3ZvaWQgUmVuZGVy
U2Nyb2xsYmFyUGFydDo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAobV9zY3JvbGxiYXIgJiYgbV9wYXJ0ICE9IE5vUGFy
dCkKICAgICAgICAgbV9zY3JvbGxiYXItPnRoZW1lKCktPmludmFsaWRhdGVQYXJ0KG1fc2Nyb2xs
YmFyLCBtX3BhcnQpOwogICAgIGVsc2UKLSAgICAgICAgUmVuZGVyQmxvY2s6OmltYWdlQ2hhbmdl
ZChpbWFnZSk7CisgICAgICAgIFJlbmRlckJsb2NrOjppbWFnZUNoYW5nZWQoaW1hZ2UsIHJlY3Qp
OwogfQogCiB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB0eCwgaW50IHR5LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5o
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCmluZGV4IGZhMTM3NzQu
LjI3M2E1NDEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShSZW5kZXJTdHlsZTo6RGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0cik7Cisg
ICAgdmlydHVhbCB2b2lkIGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJl
Y3QmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGxheW91dEhvcml6b250YWxQYXJ0KCk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXggMGQ3MTRkYS4uM2RjNjYzZiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCisrKyBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApAQCAtODMsNyArODMsNyBAQCBJbnRSZWN0IFJl
bmRlclRhYmxlQ29sOjphYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKQogICAgIHJldHVybiBJ
bnRSZWN0KCk7CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDb2w6OmltYWdlQ2hhbmdlZChXcmFwcGVk
SW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlclRhYmxlQ29sOjppbWFnZUNoYW5nZWQoV3JhcHBl
ZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICAvLyBGSVhNRTogUmVwYWlu
dCBvbmx5IHRoZSByZWN0IHRoZSBpbWFnZSBwYWludHMgaW4uCiAgICAgcmVwYWludCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKaW5kZXggOWQ0NmUyYi4uYjdjYjc2ZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNvbC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFs
IEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7Ci0gICAgdmlydHVhbCB2b2lk
IGltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBpbnQgc3Bhbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3BhbjsgfQogICAgIHZvaWQgc2V0U3BhbihpbnQgcykgeyBtX3Nw
YW4gPSBzOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggNjg2YjQzNC4u
Njc0ZGM4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3Bw
CisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgUmVuZGVyVGFibGVSb3c6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBp
bnQgdHgsIGludCB0eSkKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVSb3c6OmltYWdlQ2hh
bmdlZChXcmFwcGVkSW1hZ2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlclRhYmxlUm93OjppbWFnZUNo
YW5nZWQoV3JhcHBlZEltYWdlUHRyIGltYWdlLCBjb25zdCBJbnRSZWN0JikKIHsKICAgICAvLyBG
SVhNRTogRXhhbWluZSBjZWxscyBhbmQgcmVwYWludCBvbmx5IHRoZSByZWN0IHRoZSBpbWFnZSBw
YWludHMgaW4uCiAgICAgcmVwYWludCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmgKaW5k
ZXggOTk0ODJiZS4uM2ZhN2ZhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC01
NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWlyZXNMYXllcigpIHsg
cmV0dXJuIGlzVHJhbnNwYXJlbnQoKSB8fCBoYXNPdmVyZmxvd0NsaXAoKTsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGludCB0eCwgaW50IHR5KTsKLSAgICB2aXJ0dWFs
IHZvaWQgaW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0cik7CisgICAgdmlydHVhbCB2b2lkIGlt
YWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QmKTsKIAogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZVdpbGxDaGFuZ2UoUmVuZGVyU3R5bGU6OkRpZmYsIGNv
bnN0IFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmNwcAppbmRleCAwMmExOTJkLi4xMzJhNjMwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTk3Myw3ICs5NzMsNyBAQCB2b2lkIFJlbmRlclRhYmxl
U2VjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGludCB0eCwgaW50IHR5KQogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1h
Z2VQdHIgaW1hZ2UpCit2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6aW1hZ2VDaGFuZ2VkKFdyYXBw
ZWRJbWFnZVB0ciBpbWFnZSwgY29uc3QgSW50UmVjdCYpCiB7CiAgICAgLy8gRklYTUU6IEV4YW1p
bmUgY2VsbHMgYW5kIHJlcGFpbnQgb25seSB0aGUgcmVjdCB0aGUgaW1hZ2UgcGFpbnRzIGluLgog
ICAgIHJlcGFpbnQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXgg
MTg2NmZkNS4uM2YyYzlhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgK
QEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgaW50IG91dGVyQm9yZGVyUmlnaHQoKSBj
b25zdCB7IHJldHVybiBtX291dGVyQm9yZGVyUmlnaHQ7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBpbnQgdHgsIGludCB0eSk7Ci0gICAgdmlydHVhbCB2b2lkIGltYWdl
Q2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIpOworICAgIHZpcnR1YWwgdm9pZCBpbWFnZUNoYW5nZWQo
V3JhcHBlZEltYWdlUHRyLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICBpbnQgbnVtUm93cygpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JpZFJvd3M7IH0KICAgICBpbnQgbnVtQ29sdW1ucygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCmluZGV4IGE1YWNkMWYuLjBmMjM3ZmYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTUwLDkgKzUwLDM0IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU1ZHSW1hZ2VDaHJvbWVDbGllbnQgOiBwdWJsaWMgRW1wdHlDaHJvbWVD
bGllbnQgeworcHVibGljOgorICAgIFNWR0ltYWdlQ2hyb21lQ2xpZW50KFNWR0ltYWdlKiBpbWFn
ZSkKKyAgICAgICAgOiBtX2ltYWdlKGltYWdlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgY2hyb21lRGVzdHJveWVkKCkKKyAgICB7CisgICAgICAgIC8vIFRoZXJlIGlzIG5vIHNl
dENsaWVudCgpIG9uIENocm9tZSwgc28gd2UgY2FuJ3QgY2xlYXIgaXRzIGNsaWVudCBleHBsaWNp
dGx5LiBXZSBoYXZlIHRvIHdhaXQgZm9yCisgICAgICAgIC8vIHRoaXMgY2FsbGJhY2suCisgICAg
ICAgIGRlbGV0ZSB0aGlzOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCByZXBhaW50KGNvbnN0
IEludFJlY3QmIHIsIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wgaW1tZWRpYXRlLCBib29sIHJl
cGFpbnRDb250ZW50T25seSkKKyAgICB7CisgICAgICAgIGlmIChtX2ltYWdlLT5pbWFnZU9ic2Vy
dmVyKCkpCisgICAgICAgICAgICBtX2ltYWdlLT5pbWFnZU9ic2VydmVyKCktPmNoYW5nZWRJblJl
Y3QobV9pbWFnZSwgcik7CisgICAgfQorCitwcml2YXRlOgorICAgIFNWR0ltYWdlKiBtX2ltYWdl
OworfTsKKwogU1ZHSW1hZ2U6OlNWR0ltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAg
IDogSW1hZ2Uob2JzZXJ2ZXIpCiAgICAgLCBtX2RvY3VtZW50KDApCisgICAgLCBtX2Nocm9tZUNs
aWVudCgwKQogICAgICwgbV9wYWdlKDApCiAgICAgLCBtX2ZyYW1lKDApCiAgICAgLCBtX2ZyYW1l
VmlldygwKQpAQCAtMTg3LDE2ICsyMTIsMTcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIGlm
IChhbGxEYXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgc3RhdGljIENocm9tZUNsaWVudCogZHVtbXlD
aHJvbWVDbGllbnQgPSBuZXcgRW1wdHlDaHJvbWVDbGllbnQ7CiAgICAgICAgIHN0YXRpYyBGcmFt
ZUxvYWRlckNsaWVudCogZHVtbXlGcmFtZUxvYWRlckNsaWVudCA9ICBuZXcgRW1wdHlGcmFtZUxv
YWRlckNsaWVudDsKICAgICAgICAgc3RhdGljIEVkaXRvckNsaWVudCogZHVtbXlFZGl0b3JDbGll
bnQgPSBuZXcgRW1wdHlFZGl0b3JDbGllbnQ7CiAgICAgICAgIHN0YXRpYyBDb250ZXh0TWVudUNs
aWVudCogZHVtbXlDb250ZXh0TWVudUNsaWVudCA9IG5ldyBFbXB0eUNvbnRleHRNZW51Q2xpZW50
OwogICAgICAgICBzdGF0aWMgRHJhZ0NsaWVudCogZHVtbXlEcmFnQ2xpZW50ID0gbmV3IEVtcHR5
RHJhZ0NsaWVudDsKICAgICAgICAgc3RhdGljIEluc3BlY3RvckNsaWVudCogZHVtbXlJbnNwZWN0
b3JDbGllbnQgPSBuZXcgRW1wdHlJbnNwZWN0b3JDbGllbnQ7CiAKKyAgICAgICAgbV9jaHJvbWVD
bGllbnQgPSBuZXcgU1ZHSW1hZ2VDaHJvbWVDbGllbnQodGhpcyk7CisgICAgICAgIAogICAgICAg
ICAvLyBGSVhNRTogSWYgdGhpcyBTVkcgZW5kcyB1cCBsb2FkaW5nIGl0c2VsZiwgd2UnbGwgbGVh
ayB0aGlzIEZyYW1lIChhbmQgYXNzb2NpYXRlZCBET00gJiByZW5kZXIgdHJlZXMpLgogICAgICAg
ICAvLyBUaGUgQ2FjaGUgY29kZSBkb2VzIG5vdCBrbm93IGFib3V0IENhY2hlZEltYWdlcyBob2xk
aW5nIEZyYW1lcyBhbmQgd29uJ3Qga25vdyB0byBicmVhayB0aGUgY3ljbGUuCi0gICAgICAgIG1f
cGFnZS5zZXQobmV3IFBhZ2UoZHVtbXlDaHJvbWVDbGllbnQsIGR1bW15Q29udGV4dE1lbnVDbGll
bnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1bW15SW5zcGVjdG9yQ2xp
ZW50KSk7CisgICAgICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UobV9jaHJvbWVDbGllbnQsIGR1bW15
Q29udGV4dE1lbnVDbGllbnQsIGR1bW15RWRpdG9yQ2xpZW50LCBkdW1teURyYWdDbGllbnQsIGR1
bW15SW5zcGVjdG9yQ2xpZW50KSk7CiAgICAgICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0SmF2
YVNjcmlwdEVuYWJsZWQoZmFsc2UpOwogICAgICAgICBtX3BhZ2UtPnNldHRpbmdzKCktPnNldFBs
dWdpbnNFbmFibGVkKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgKaW5kZXggZGYzZjgw
MS4uZjE4ZGFlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAor
KysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCkBAIC0zOSw2ICszOSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZVZpZXc7
CiAgICAgY2xhc3MgUGFnZTsKKyAgICBjbGFzcyBDaHJvbWVDbGllbnQ7CiAgICAgCiAgICAgY2xh
c3MgU1ZHSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgewogICAgIHB1YmxpYzoKQEAgLTcxLDYgKzcyLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZv
ckN1cnJlbnRGcmFtZSgpOwogICAgICAgICAKICAgICAgICAgU1ZHRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7CisgICAgICAgIENocm9tZUNsaWVudCogbV9jaHJvbWVDbGllbnQ7CiAgICAgICAgIE93blB0
cjxQYWdlPiBtX3BhZ2U7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKICAgICAgICAg
UmVmUHRyPEZyYW1lVmlldz4gbV9mcmFtZVZpZXc7Cg==
</data>
<flag name="review"
          id="12425"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>