<?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>110323</bug_id>
          
          <creation_ts>2013-02-20 04:10:10 -0800</creation_ts>
          <short_desc>Accelerated overflow scrolling for Coordinated Graphics.</short_desc>
          <delta_ts>2013-03-06 04:09:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111139</blocked>
    
    <blocked>111140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Luiz Agostini">luiz</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>abecsi</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>andersca</cc>
    
    <cc>anilsson</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dongseong.hwang</cc>
    
    <cc>efidler</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>helder.correia</cc>
    
    <cc>jamesr</cc>
    
    <cc>kenneth</cc>
    
    <cc>mifenton</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>837327</commentid>
    <comment_count>0</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 04:10:10 -0800</bug_when>
    <thetext>The objective is to expose an API that will make it possible to scroll layers on UI process before notifying the web process. The user will then be able to scroll layers even when the web process is busy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837329</commentid>
    <comment_count>1</comment_count>
      <attachid>189284</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 04:12:59 -0800</bug_when>
    <thetext>Created attachment 189284
WIP

This is a WIP. I will not submit it for review but comments are welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837356</commentid>
    <comment_count>2</comment_count>
      <attachid>189284</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 04:55:32 -0800</bug_when>
    <thetext>Comment on attachment 189284
WIP

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

We are working on a Coordinated Graphics API test infrastructure as well. I plan to add tests for this API as soon as it is ready.
There are some parts of this patch that make changes in code that can only be found in NIX repository. They will of course be removed on the final patch. For now they might help on showing how to use the API.
This patch is very raw. There is a lot to be improved. I will have a better version soon.

&gt; Source/WebCore/rendering/RenderLayer.cpp:522
&gt; +//        &amp;&amp; renderer()-&gt;frame()-&gt;page()-&gt;settings()-&gt;acceleratedCompositingForOverflowScrollEnabled();

please ignore this code. It is just for testing.

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:864
&gt; +void CoordinatedLayerTreeHost::scrollingLayerWasAdded(uint32_t layerId)
&gt; +{
&gt; +    m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::ScrollingLayerWasAdded(layerId));
&gt; +}
&gt; +
&gt; +void CoordinatedLayerTreeHost::scrollingLayerWasRemoved(uint32_t layerId)
&gt; +{
&gt; +    m_webPage-&gt;send(Messages::CoordinatedLayerTreeHostProxy::ScrollingLayerWasRemoved(layerId));
&gt; +}

To use the CoordinatedLayerInfo to pass this information would be a lot more efficient. It would remove a lot of code as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837359</commentid>
    <comment_count>3</comment_count>
      <attachid>189284</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-02-20 04:59:34 -0800</bug_when>
    <thetext>Comment on attachment 189284
WIP

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:619
&gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)

could this HitTest be non-texturemapper dependent? so others can use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837364</commentid>
    <comment_count>4</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-20 05:04:25 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 189284 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:619
&gt; &gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)
&gt; 
&gt; could this HitTest be non-texturemapper dependent? so others can use it?
This hit-test is for UI-side of coordinated graphics, where do you propose we put it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837366</commentid>
    <comment_count>5</comment_count>
      <attachid>189284</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-20 05:09:37 -0800</bug_when>
    <thetext>Comment on attachment 189284
WIP

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

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:160
&gt; +    virtual void graphicsLayerWillBeRemoved(GraphicsLayer*) { }

I don&apos;t think this is necessary.
If instead of a HashMap we kept a ScrollableArea pointer inside CoordinatedGraphicsLayer, this would be implicit and a lot of the code in this patch which deals with maintaing that map wouldn&apos;t be needed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837367</commentid>
    <comment_count>6</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-02-20 05:12:44 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 189284 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:619
&gt; &gt; &gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)
&gt; &gt; 
&gt; &gt; could this HitTest be non-texturemapper dependent? so others can use it?
&gt; This hit-test is for UI-side of coordinated graphics, where do you propose we put it?

- We have touch targets cached for hit testing speed up.
- BlackBerry port has design as having WebKitThread its UIThread layer counterpart, and so does chromium. I had a project of doing the same kind of caching for LayerCompositingThread (as it is called in the BlackBerry land), so hit-testing it could be speed up by a lot, but left RIM before had a chance to got to it.

That said, I believe this case, could benefit this could benefit others and live somewhere in the three not necessarily being webkit2/coordinated graphics specific.

Please, correct if I am wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838013</commentid>
    <comment_count>7</comment_count>
      <attachid>189284</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-20 17:56:35 -0800</bug_when>
    <thetext>Comment on attachment 189284
WIP

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

I really appreciate your effort, but I have some concern. No offence :)

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:68
&gt; +    void scrollBy(const WebCore::IntSize&amp;);

I think that it is not good that TextureMapperLayer deals with scroll and scrollClient. Those stuffs are only for root layer.
I think we can do the same thing as CoordinatedGraphicsScene just manage the position of root layer.
In addition, I want GraphicsLayerTransform not to know scrollPosition too.

I think hitTest is fine but I want that we share related code with other ports if possible. hitTest would be separated in other patch..

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:108
&gt; +    virtual void scrollLayerBy(uint32_t layerID, const WebCore::IntSize&amp; offset);

I&apos;m not sure if it is natural that CoordinatedLayerTreeHostProxy has scroll api.
I think we should scroll using WebPage and WebPage will call FrameView::setScrollPosition instead of ScrollableArea::notifyScrollPositionChanged.
In addition, if CoordinatedLayerTreeHostProxy has scrollBy, why CoordinatedLayerTreeHostProxy does not has scaling, wheel, key event, mouse move or something.

&gt; Tools/MiniBrowser/nix/main.cpp:493
&gt; +        WKCGScrollBy(m_scrollingLayer, WKSizeMake(m_scrollPoint.x - event.x, m_scrollPoint.y - event.y));

I&apos;m not sure why we make new interface instead of improving existing interface: WebPageProxy::scrollBy
IMHO this api expose our implementation detail: CoordinatedGraphicsScene..
We sometime scroll using PageViewportController and somtime scroll using CoordinatedGraphicsScene. I think it is a little confusing..

In my opinion, we should use common interface for scrolling and we should find the way to accelerate scroll on all ports that use coordinated graphics.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838048</commentid>
    <comment_count>8</comment_count>
      <attachid>189438</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 18:27:58 -0800</bug_when>
    <thetext>Created attachment 189438
WIP

Same stuff, hopefully a bit simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838068</commentid>
    <comment_count>9</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 18:53:42 -0800</bug_when>
    <thetext>Thank you very much for looking at the code!

(In reply to comment #7)
&gt; (From update of attachment 189284 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; 
&gt; I really appreciate your effort, but I have some concern. No offence :)
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:68
&gt; &gt; +    void scrollBy(const WebCore::IntSize&amp;);
&gt; 
&gt; I think that it is not good that TextureMapperLayer deals with scroll and scrollClient. Those stuffs are only for root layer.
&gt; I think we can do the same thing as CoordinatedGraphicsScene just manage the position of root layer.
&gt; In addition, I want GraphicsLayerTransform not to know scrollPosition too.

I am not sure I was clear in my description but the point here is to scroll layers independently. It is about scrolling each layer on UI side, not the whole page. As the scroll is specific for each layer it looks natural that the layer has scroll information.

&gt; 
&gt; I think hitTest is fine but I want that we share related code with other ports if possible. hitTest would be separated in other patch..

This hittest is only about coordinated graphics layers. It is here because I need to be able to identify the layers that are scrollable on UI side. I would not have a hittest on this patch if it was not necessary. This patch does not work without it.

It is not clear for me how a hittest that just checks coordinated graphics layers could be used without coordinated graphics.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.h:108
&gt; &gt; +    virtual void scrollLayerBy(uint32_t layerID, const WebCore::IntSize&amp; offset);
&gt; 
&gt; I&apos;m not sure if it is natural that CoordinatedLayerTreeHostProxy has scroll api.
&gt; I think we should scroll using WebPage and WebPage will call FrameView::setScrollPosition instead of ScrollableArea::notifyScrollPositionChanged.

As I said it is about scrolling individual layers, not the whole page. What this patch does is to give a ScrollableArea to all the scrollable layers at web process. That scrollable area is then used to scroll that layer independently of the other layers or the page. 

&gt; In addition, if CoordinatedLayerTreeHostProxy has scrollBy, why CoordinatedLayerTreeHostProxy does not has scaling, wheel, key event, mouse move or something.

CoordinatedLayerTreeHostProxy does not have scrollBy, it has scrollLayerBy (it is about individual layers :). It only has this method because CoordinatedLayerTreeHostProxy is who have the m_drawingAreaProxy-&gt;page()-&gt;process() to send messages to web process.

&gt; 
&gt; &gt; Tools/MiniBrowser/nix/main.cpp:493
&gt; &gt; +        WKCGScrollBy(m_scrollingLayer, WKSizeMake(m_scrollPoint.x - event.x, m_scrollPoint.y - event.y));
&gt; 
&gt; I&apos;m not sure why we make new interface instead of improving existing interface: WebPageProxy::scrollBy

to be able to scroll layers independently of the rest of the page.

&gt; IMHO this api expose our implementation detail: CoordinatedGraphicsScene..

To expose some API for Coordinated Graphics is the objective of this patch. It should be done with care not to expose the actual implementation.

&gt; We sometime scroll using PageViewportController and somtime scroll using CoordinatedGraphicsScene. I think it is a little confusing..

The idea is to have one api that could be used to scroll both, the page and individual layers. To scroll the page is to scroll the content of the root layer.

&gt; 
&gt; In my opinion, we should use common interface for scrolling and we should find the way to accelerate scroll on all ports that use coordinated graphics.

I fully agree. That is why the API was based on Coordinated Graphics alone. There is some nix code but it should be seen simply as an usage example and of course it will not be part of the final patch.

I hope the latest patch is a bit simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838074</commentid>
    <comment_count>10</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 19:04:39 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (From update of attachment 189284 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:619
&gt; &gt; &gt; &gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)
&gt; &gt; &gt; 
&gt; &gt; &gt; could this HitTest be non-texturemapper dependent? so others can use it?
&gt; &gt; This hit-test is for UI-side of coordinated graphics, where do you propose we put it?
&gt; 
&gt; - We have touch targets cached for hit testing speed up.
&gt; - BlackBerry port has design as having WebKitThread its UIThread layer counterpart, and so does chromium. I had a project of doing the same kind of caching for LayerCompositingThread (as it is called in the BlackBerry land), so hit-testing it could be speed up by a lot, but left RIM before had a chance to got to it.
&gt; 
&gt; That said, I believe this case, could benefit this could benefit others and live somewhere in the three not necessarily being webkit2/coordinated graphics specific.
&gt; 
&gt; Please, correct if I am wrong.

Hi Antonio,

yes, it might be possible to have a hittest that is based on GraphicsLayers instead if TextureMapperLayers. I am not sure how much code would be shared though, because the hittest itself quite simple and small code. It is just a depth first search.

I will consider it. This patch is WIP anyway. And it will probably be splitted before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838081</commentid>
    <comment_count>11</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 19:07:28 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 189284 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:160
&gt; &gt; +    virtual void graphicsLayerWillBeRemoved(GraphicsLayer*) { }
&gt; 
&gt; I don&apos;t think this is necessary.
&gt; If instead of a HashMap we kept a ScrollableArea pointer inside CoordinatedGraphicsLayer, this would be implicit and a lot of the code in this patch which deals with maintaing that map wouldn&apos;t be needed...

You are right. I added a ScrollableArea to CoordinatedGraphicsLayer and used its presence as a flag to identify scrollable layers. And added a flag to CoordinatedLayerInfo instead of having specific messages for that. I think that it improved a lot the code.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838088</commentid>
    <comment_count>12</comment_count>
      <attachid>189438</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-20 19:14:06 -0800</bug_when>
    <thetext>Comment on attachment 189438
WIP

This code is hopefully better than the previous, but it is still WIP.

Coordinated Graphics test infrastructure is been cooked and this API will have tests as soon as we have it. Please consider the NIX code simply as a usage example, it will not be in the final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838115</commentid>
    <comment_count>13</comment_count>
      <attachid>189438</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2013-02-20 20:12:49 -0800</bug_when>
    <thetext>Comment on attachment 189438
WIP

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

&gt; Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp:114
&gt; +{

you may need to add m_dirty = true;

&gt; Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp:119
&gt; +{

ditto.

&gt; Tools/MiniBrowser/nix/main.cpp:488
&gt; +        WKCGScrollBy(m_scrollingLayer, WKSizeMake(m_scrollPoint.x - event.x, m_scrollPoint.y - event.y));

I understand now you want to handle div with scrollbar like http://people.opera.com/pepelsbey/experiments/bga/ It&apos;s awesome.
I&apos;m sorry for previous insane comment :) Forget that plz.

However, I still hope coordinated graphics deal with scrollable element scrolling as well as whole page scrolling..
I&apos;m not sure it is good that Minibrowser queries scrollable layer and control the scroll position of each layer..

How about extract scroll and scale code from PageViewportController,
and the code belongs to Coordinated Graphics,
and EFL, Nix, and Qt, by alphabetical order :), use the common code?

btw, how does Nix deal with viewport meta tag in UI Process? I mean how to decide initial scale, and how to scroll page, and how to make WebPage know the view size, and how to deal with deviceScaleFactor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838418</commentid>
    <comment_count>14</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-21 07:47:53 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 189438 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189438&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp:114
&gt; &gt; +{
&gt; 
&gt; you may need to add m_dirty = true;
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsLayerTransform.cpp:119
&gt; &gt; +{
&gt; 
&gt; ditto.

Thanks! The changes in GraphicsLayerTransform are indeed some of the parts that still need to be improved in this patch.

&gt; 
&gt; &gt; Tools/MiniBrowser/nix/main.cpp:488
&gt; &gt; +        WKCGScrollBy(m_scrollingLayer, WKSizeMake(m_scrollPoint.x - event.x, m_scrollPoint.y - event.y));
&gt; 
&gt; I understand now you want to handle div with scrollbar like http://people.opera.com/pepelsbey/experiments/bga/ It&apos;s awesome.
&gt; I&apos;m sorry for previous insane comment :) Forget that plz.

Don&apos;t worry about it. Your comments are always welcome, :)

&gt; 
&gt; However, I still hope coordinated graphics deal with scrollable element scrolling as well as whole page scrolling..

That is the same for me.

&gt; I&apos;m not sure it is good that Minibrowser queries scrollable layer and control the scroll position of each layer..

Again it was just a usage example. It made it easy for me to test. But I think that it might be a valid use of this API. It would make it possible for example to interpret gestures outside of webkit and at some point start scrolling a certain layer.

&gt; 
&gt; How about extract scroll and scale code from PageViewportController,
&gt; and the code belongs to Coordinated Graphics,
&gt; and EFL, Nix, and Qt, by alphabetical order :), use the common code?

I understand that each port wants to take those decisions by their own but coordinated graphics should have its core functionality independently of the ports. The idea is to identify the core functionality and create APIs, and then implement port independent tests for those APIs. If each port will use the APIs or use coordinated graphics internals is a port decision, I hope that the API will be good enough for them to consider using it. But having those APIs and having tests for them will guarantee that the core functionality is the same for all ports and avoid regressions.

&gt; 
&gt; btw, how does Nix deal with viewport meta tag in UI Process? I mean how to decide initial scale, and how to scroll page, and how to make WebPage know the view size, and how to deal with deviceScaleFactor?

My understanding is that NIX avoids implementing any browser behavior and just provide the means to implement that behavior outside of it. It might make the initial use of it a bit more difficult but at the same time it provides more flexibility. That is why I decided to test this patch on NIX, because its view is very simple and it was fairly  easy to test the code without needing to consider complex interactions with other parts of the system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>838446</commentid>
    <comment_count>15</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-02-21 08:28:52 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; &gt; (From update of attachment 189284 [details] [details] [details] [details])
&gt; &gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189284&amp;action=review
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:619
&gt; &gt; &gt; &gt; &gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; could this HitTest be non-texturemapper dependent? so others can use it?
&gt; &gt; &gt; This hit-test is for UI-side of coordinated graphics, where do you propose we put it?
&gt; &gt; 
&gt; &gt; - We have touch targets cached for hit testing speed up.
&gt; &gt; - BlackBerry port has design as having WebKitThread its UIThread layer counterpart, and so does chromium. I had a project of doing the same kind of caching for LayerCompositingThread (as it is called in the BlackBerry land), so hit-testing it could be speed up by a lot, but left RIM before had a chance to got to it.
&gt; &gt; 
&gt; &gt; That said, I believe this case, could benefit this could benefit others and live somewhere in the three not necessarily being webkit2/coordinated graphics specific.
&gt; &gt; 
&gt; &gt; Please, correct if I am wrong.
&gt; 
&gt; Hi Antonio,
&gt; 
&gt; yes, it might be possible to have a hittest that is based on GraphicsLayers instead if TextureMapperLayers. I am not sure how much code would be shared though, because the hittest itself quite simple and small code. It is just a depth first search.
&gt; 
&gt; I will consider it. This patch is WIP anyway. And it will probably be splitted before landing.

Thanks for adding me to the bug Antonio, I&apos;ll add Mike too. Mike and I were discussing hit test of the selection overlay the other day. In order to enable correct hit testing for selections in iframes/fixed pos divs/scrollable divs or partly obscured selections, we would want to implement layer-based hit testing there. This is not really related to scrolling (which this bug is about), but there seems to be a hit testing aspect to it, too.

My initial thought was to implement the hit testing in the LayerCompositingThread (our equivalent of TextureMapperLayer). It would be nice to be able to share hit testing code with other ports, but I&apos;m not sure it&apos;s possible to abstract out the &quot;hit test layer tree on non-webkit thread&quot; logic... We also need to do a bit more than just rect-based hit testing, since if we end up in the selection overlay, we also need to hit test the actual selection region.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840596</commentid>
    <comment_count>16</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-24 06:03:10 -0800</bug_when>
    <thetext>Wouldn&apos;t the API be a ScrollingCoordinator client? 

We already have working api for scrolling on the UI side, what is missing is for the UI side know how the layers are organized and if the events should be send to the WebProcess to be handled. Most of what you need is the same as the ScrollTree used by threaded scrolling.

Though the first step could be just to register areas which needs to be handled by WebCore, and only let UI handle the rest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840597</commentid>
    <comment_count>17</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-24 06:06:46 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; Most of what you need is the same as the ScrollTree used by threaded scrolling.
&gt; 
I had expected we would actually first go through of task of making threaded scrolling work with coordinated graphics, and then try to take that implementation and the experience learned to improve the process separated API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840626</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-24 10:53:06 -0800</bug_when>
    <thetext>I think a lot of the confusion in this thread is because of the title; This bug is for *composited overflow scroll*, not for general UI side scroll.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840629</commentid>
    <comment_count>19</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-02-24 11:22:16 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; I think a lot of the confusion in this thread is because of the title; This bug is for *composited overflow scroll*, not for general UI side scroll.

Ah right, composited overflow scroll is how I would implement a general scrolling abstraction. I believe Chromium is using a setting called forceCompositingMode together with acceleratedCompositingForScrollableFramesEnabled which makes frameview scrolling into overflow scrolling. This way you just need to coordinated overflow scrolling, and you have a general solution.

There is still the problem with DOM event handling, and making it possible for JavaScript to prevent scrolling by preventing the default action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843795</commentid>
    <comment_count>20</comment_count>
      <attachid>190664</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-27 23:45:49 -0800</bug_when>
    <thetext>Created attachment 190664
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843810</commentid>
    <comment_count>21</comment_count>
      <attachid>190664</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-28 00:06:30 -0800</bug_when>
    <thetext>Comment on attachment 190664
patch

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

Looks really good, but I have a few comments :)

&gt; Source/WebCore/page/scrolling/coordinatedgraphics/CoordinatedScrollClient.h:37
&gt; +class CoordinatedScrollClient {
&gt; +public:
&gt; +    virtual void scrollLayerBy(uint32_t layerID, const FloatSize&amp; offset) = 0;

I would make this an inner class of TextureMapperLayer and call it simply {TextureMapperLayer::]ScrollingClient.

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:407
&gt; +FloatSize GraphicsLayerTextureMapper::resetCommitedScrollPosition()

Committed

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:573
&gt; +    if (m_changeMask &amp; CommitedScrollPosition)
&gt; +        m_layer-&gt;updateCommitedScrollPosition(resetCommitedScrollPosition());

I think a better way to write this would be to have a commitScrollPosition function that internally resets and updates the TextureMapperLayer.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:680
&gt; +    TextureMapperLayer* result = 0;
&gt; +    for (int i = m_children.size() - 1; !result &amp;&amp; i &gt;= 0; --i)

You should return early here if visible/contentsVisible is false.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:62
&gt; +    TextureMapperLayer* getTopmostLayerAt(const FloatPoint&amp; pos);

I would leave this for a different patch

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:682
&gt; +TextureMapperLayer* CoordinatedGraphicsScene::getScrollableContentLayerAt(const FloatPoint&amp; point)

Content -&gt; Contents

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h:81
&gt; +    CoordinatedGraphicsScene(CoordinatedGraphicsSceneClient*, CoordinatedScrollClient*);

I think the scene needs to be the scrolling client, and internally dispatch the web process update on the main thread.

&gt; Source/WebKit2/ChangeLog:16
&gt; +        (WKCoordinatedGetScrollableContentLayerAt):
&gt; +        (WKCoordinatedGetLayerID):
&gt; +        (WKCoordinatedScrollBy):

I would spell out WKCoordinatedScene

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/CoordinatedLayerTreeHostProxy.cpp:44
&gt; +    , m_scene(adoptRef(new CoordinatedGraphicsScene(this, this)))

This is not thread safe...
In Qt at least scrollLayerBy would be called in the wrong thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843812</commentid>
    <comment_count>22</comment_count>
      <attachid>190664</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-02-28 00:08:48 -0800</bug_when>
    <thetext>Comment on attachment 190664
patch

btw I would add a word in the Changelog about testing. If we&apos;re adding new testing infrastructure for this, we should mention the bug IDs for that in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844820</commentid>
    <comment_count>23</comment_count>
      <attachid>190884</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-28 22:15:05 -0800</bug_when>
    <thetext>Created attachment 190884
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844825</commentid>
    <comment_count>24</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-02-28 22:19:56 -0800</bug_when>
    <thetext>The plan is to start running tests in Efl soon. See bug #111140.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844874</commentid>
    <comment_count>25</comment_count>
      <attachid>190897</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-01 00:10:21 -0800</bug_when>
    <thetext>Created attachment 190897
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844882</commentid>
    <comment_count>26</comment_count>
    <who name="Helder Correia">helder.correia</who>
    <bug_when>2013-03-01 00:28:21 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=190884&amp;action=review

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:157
&gt; +        CommittedScrollPosition =    (1L &lt;&lt; 28),

Extra space before &apos;(&apos;.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:702
&gt; +static inline void round(float value, int&amp; integerPart, float&amp; fracPart)

What about getRoundedFloatParts(float, int*, float*) ?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:705
&gt; +    integerPart = static_cast&lt;int&gt;(value &gt;= 0 ? value + .5 : value - .5);
&gt; +    fracPart = value - integerPart;

This will return a negative fracPart when a float has a frac between .5 and .9. Is that what you intended?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:708
&gt; +IntSize TextureMapperLayer::getIntegerScrollOffset(FloatSize offset)

const FloatSize&amp;

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:721
&gt; +FloatSize TextureMapperLayer::calculateEffectiveScrollOffset(FloatSize offset)

const FloatSize&amp;

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:735
&gt; +    m_UISideScrollOffset += scrolloffset;

Not sure, but maybe m_uiSideScrollOffset looks more style-familiar.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:58
&gt; +        , m_isScrollableLayer(false)

I tend to think that &apos;Layer&apos; is used redundantly in a lot of places in TextureMapperLayer, GraphicsLayerTextureMapper, and CoordinatedGraphicsLayer.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:64
&gt; +    void setLayerID(uint32_t id) { m_layerID = id; }
&gt; +    uint32_t layerID() { return m_layerID; }

Like here ^.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:595
&gt; +    m_layerInfo.isScrollableLayer = isScrollable();

And here ^.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h:96
&gt; +    WebCore::TextureMapperLayer* getScrollableContentsLayerAt(const WebCore::FloatPoint&amp;);

Can it be declared const?

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:186
&gt; +    typedef HashMap&lt;WebCore::CoordinatedLayerID, WebCore::CoordinatedGraphicsLayer*&gt; RegisteredLayersMap;

I think CoordinatedLayerMap or simply LayerMap is a more generic name for a type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844918</commentid>
    <comment_count>27</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-01 01:37:04 -0800</bug_when>
    <thetext>Thanks!

&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:702
&gt; &gt; +static inline void round(float value, int&amp; integerPart, float&amp; fracPart)
&gt; 
&gt; What about getRoundedFloatParts(float, int*, float*) ?

humm. I don&apos;t like it. I did something else. It is probably better.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:705
&gt; &gt; +    integerPart = static_cast&lt;int&gt;(value &gt;= 0 ? value + .5 : value - .5);
&gt; &gt; +    fracPart = value - integerPart;
&gt; 
&gt; This will return a negative fracPart when a float has a frac between .5 and .9. Is that what you intended?

Yes.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:735
&gt; &gt; +    m_UISideScrollOffset += scrolloffset;
&gt; 
&gt; Not sure, but maybe m_uiSideScrollOffset looks more style-familiar.

uppercase UI is quite common in the code.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.h:96
&gt; &gt; +    WebCore::TextureMapperLayer* getScrollableContentsLayerAt(const WebCore::FloatPoint&amp;);
&gt; 
&gt; Can it be declared const?

Unfortunately not without changing code that has not been introduced by this patch. I prefer not to do it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844919</commentid>
    <comment_count>28</comment_count>
      <attachid>190908</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-01 01:37:38 -0800</bug_when>
    <thetext>Created attachment 190908
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844935</commentid>
    <comment_count>29</comment_count>
    <who name="Helder Correia">helder.correia</who>
    <bug_when>2013-03-01 01:58:33 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=190908&amp;action=review

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:731
&gt; +    FloatSize scrolloffset = calculateEffectiveScrollOffset(offset);

FloatSize scrollOffset

&gt; Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:187
&gt; +    typedef HashMap&lt;WebCore::CoordinatedLayerID, WebCore::CoordinatedGraphicsLayer*&gt; LayersMap;
&gt; +    LayersMap m_registeredLayers;

LayerMap would be more correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845773</commentid>
    <comment_count>30</comment_count>
      <attachid>190908</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-02 01:37:28 -0800</bug_when>
    <thetext>Comment on attachment 190908
patch

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

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:158
&gt; +        CommittedScrollOffset =     (1L &lt;&lt; 28),
&gt; +        IsScrollable =              (1L &lt;&lt; 29)

CommitedScrollOffsetChange, IsScrollableChange

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:690
&gt; +    if (!layer-&gt;isScrollable() || !layer-&gt;m_parent || !layer-&gt;m_parent-&gt;m_parent)

Please explain the &quot;parent&quot; stuff with a comment (I kind of get it but it&apos;s not trivial when reading the code).

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:702
&gt; +static inline int round(float value)

I think you already have this in MathExtras.h. Do we really need a new round function? If so, please comment what this one does differently.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:707
&gt; +IntSize TextureMapperLayer::getIntegerScrollOffset(const FloatSize&amp; offset)

It&apos;s strange to have side effects in a &quot;get&quot; function... Looks like what you&apos;re doing is adjusting the scroll to integer, and then setting the adjustment to m_pendingScrollOffset, and then you have an unadjusted and an adjusted offset. Anyway the code needs to be more explicit about that...

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:722
&gt; +    m_currentTransform.combined().inverse().map(0, 0, zeroX, zeroY);
&gt; +    m_currentTransform.combined().inverse().map(offset.width(), offset.height(), offsetX, offsetY);

We probably want to inverse the transform only once, as it&apos;s an expensive operation.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:64
&gt; +    void setLayerID(uint32_t id) { m_layerID = id; }
&gt; +    uint32_t layerID() { return m_layerID; }

I think setID / id() is fine.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:245
&gt; +    FloatSize m_UISideScrollOffset;
&gt; +    FloatSize m_pendingScrollOffset;

Why don&apos;t we call this m_temporaryScrollOffset? I don&apos;t really get the different between &quot;pending&quot; and &quot;UISide&quot;. Is it just about the integer rounding?
Maybe it should be m_requestedScrollOffset, and m_pendingAdjustedScrollOffset.

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:144
&gt; +

Not needed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846008</commentid>
    <comment_count>31</comment_count>
      <attachid>190908</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-03 06:44:58 -0800</bug_when>
    <thetext>Comment on attachment 190908
patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +
&gt; +        Implementing accelerated overflow scrolling for coordinated graphics.
&gt; +        The new API WKCoordinatedScene may be used to scroll layers in the UI process.

Maybe you should explain the strategy taken here

&gt; Source/WebCore/ChangeLog:24
&gt; +        * page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:
&gt; +        (ScrollingCoordinatorCoordinatedGraphics):
&gt; +        * platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
&gt; +        (WebCore::GraphicsLayerTextureMapper::GraphicsLayerTextureMapper):
&gt; +        (WebCore::GraphicsLayerTextureMapper::commitScrollOffset):
&gt; +        (WebCore):
&gt; +        (WebCore::GraphicsLayerTextureMapper::setIsScrollableLayer):
&gt; +        (WebCore::GraphicsLayerTextureMapper::commitLayerChanges):
&gt; +        (WebCore::GraphicsLayerTextureMapper::commitLayerScrollOffset):
&gt; +        * platform/graphics/texmap/GraphicsLayerTextureMapper.h:

This section would need more comments to individual changes

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:410
&gt; +{
&gt; +    if (offset.isZero())
&gt; +        return;

Is this supposed to happen? or should we assert as well?

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:578
&gt; +void GraphicsLayerTextureMapper::commitLayerScrollOffset()
&gt; +{
&gt; +    m_layer-&gt;commitScrollOffset(m_committedScrollOffset);
&gt; +    m_committedScrollOffset = IntSize();
&gt; +}

this is a function which commits something called &quot;committed&quot;. Weird

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:116
&gt;  
&gt; +    void commitLayerScrollOffset();
&gt; +

So this is GraphicsLAYERtexturemapper which has a commitLAYERScrollOffset and a commitScrollOffset. The difference is not obvious

&gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.h:181
&gt; +    IntSize m_committedScrollOffset;

pending?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:676
&gt; +template&lt;class SearchCondition&gt; TextureMapperLayer* TextureMapperLayer::hitTestSearch(const FloatPoint&amp; point, SearchCondition condition)

So it is a &quot;test&quot; and a &quot;search&quot;. Is this terminology used elsewhere?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:683
&gt; +
&gt; +    TextureMapperLayer* result = 0;
&gt; +    for (int i = m_children.size() - 1; !result &amp;&amp; i &gt;= 0; --i)
&gt; +        result = m_children[i]-&gt;hitTestSearch(point, condition);

why not check the size first?

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:707
&gt;&gt; +IntSize TextureMapperLayer::getIntegerScrollOffset(const FloatSize&amp; offset)
&gt; 
&gt; It&apos;s strange to have side effects in a &quot;get&quot; function... Looks like what you&apos;re doing is adjusting the scroll to integer, and then setting the adjustment to m_pendingScrollOffset, and then you have an unadjusted and an adjusted offset. Anyway the code needs to be more explicit about that...

integer?

pixelAlignedScrollOffset? or what are you trying to accomplish here

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:732
&gt; +    m_UISideScrollOffset += scrolloffset;

scrollOffset.

I dont kike the UISideSCrollOffset... also it should be m_uiScrollOffset if anything

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:245
&gt;&gt; +    FloatSize m_pendingScrollOffset;
&gt; 
&gt; Why don&apos;t we call this m_temporaryScrollOffset? I don&apos;t really get the different between &quot;pending&quot; and &quot;UISide&quot;. Is it just about the integer rounding?
&gt; Maybe it should be m_requestedScrollOffset, and m_pendingAdjustedScrollOffset.

current?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:323
&gt; +    toGraphicsLayerTextureMapper(layer)-&gt;commitScrollOffset(layerInfo.committedScrollOffset);
&gt; +    toGraphicsLayerTextureMapper(layer)-&gt;setIsScrollable(layerInfo.isScrollable);

shouldnt you set isScrollable first?

&gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:619
&gt;  
&gt; +void CoordinatedGraphicsScene::doScrollLayerBy(uint32_t layerID, const IntSize&amp; offset)
&gt; +{

do* functions are not really used in webkit, I believe

&gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h:42
&gt; +
&gt; +WK_EXPORT WKCoordinatedSceneLayer WKCoordinatedSceneGetScrollableContentsLayerAt(WKCoordinatedScene, WKPoint);
&gt; +WK_EXPORT uint32_t WKCoordinatedSceneGetLayerID(WKCoordinatedSceneLayer);
&gt; +WK_EXPORT void WKCoordinatedSceneScrollBy(WKCoordinatedSceneLayer, WKSize);

So long term, how is this going to work? Are we going to know which area of the scene subscribes to wheel and touch events? so we know when to do the fast path (ui side scrolling) or whether we need to send events to the web process first (slow path) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846178</commentid>
    <comment_count>32</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-03 23:47:49 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:707
&gt; &gt; +IntSize TextureMapperLayer::getIntegerScrollOffset(const FloatSize&amp; offset)
&gt; 
&gt; It&apos;s strange to have side effects in a &quot;get&quot; function... Looks like what you&apos;re doing is adjusting the scroll to integer, and then setting the adjustment to m_pendingScrollOffset, and then you have an unadjusted and an adjusted offset. Anyway the code needs to be more explicit about that...

I agree. I have made some renaming and a small change in this specific part of the code. I hope it is better.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:245
&gt; &gt; +    FloatSize m_UISideScrollOffset;
&gt; &gt; +    FloatSize m_pendingScrollOffset;
&gt; 
&gt; Why don&apos;t we call this m_temporaryScrollOffset? I don&apos;t really get the different between &quot;pending&quot; and &quot;UISide&quot;. Is it just about the integer rounding?
&gt; Maybe it should be m_requestedScrollOffset, and m_pendingAdjustedScrollOffset.

UI here is a reference to UI process itself. It is the offset that is been applied on UI process but that web process does not yet know about.
pending is the fractionary difference between m_UISideScrollOffset and what has already been notified to web process (pending because it has not already been notified). Yes, just about rounding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846184</commentid>
    <comment_count>33</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-04 00:00:46 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:410
&gt; &gt; +{
&gt; &gt; +    if (offset.isZero())
&gt; &gt; +        return;
&gt; 
&gt; Is this supposed to happen? or should we assert as well?

Yes, it may happen. We should not assert. A layer sync message may have no relation to scroll.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:683
&gt; &gt; +
&gt; &gt; +    TextureMapperLayer* result = 0;
&gt; &gt; +    for (int i = m_children.size() - 1; !result &amp;&amp; i &gt;= 0; --i)
&gt; &gt; +        result = m_children[i]-&gt;hitTestSearch(point, condition);
&gt; 
&gt; why not check the size first?

Sorry. I think I did not get the question.
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsScene.cpp:323
&gt; &gt; +    toGraphicsLayerTextureMapper(layer)-&gt;commitScrollOffset(layerInfo.committedScrollOffset);
&gt; &gt; +    toGraphicsLayerTextureMapper(layer)-&gt;setIsScrollable(layerInfo.isScrollable);
&gt; 
&gt; shouldnt you set isScrollable first?

I think that it would make no practical difference. But done anyway.

I have made some renaming all over the code that I hope will make it a bit more clear.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h:42
&gt; &gt; +
&gt; &gt; +WK_EXPORT WKCoordinatedSceneLayer WKCoordinatedSceneGetScrollableContentsLayerAt(WKCoordinatedScene, WKPoint);
&gt; &gt; +WK_EXPORT uint32_t WKCoordinatedSceneGetLayerID(WKCoordinatedSceneLayer);
&gt; &gt; +WK_EXPORT void WKCoordinatedSceneScrollBy(WKCoordinatedSceneLayer, WKSize);
&gt; 
&gt; So long term, how is this going to work? Are we going to know which area of the scene subscribes to wheel and touch events? so we know when to do the fast path (ui side scrolling) or whether we need to send events to the web process first (slow path) ?

Yes, the plan is to have more information on UI side to be able to take this kind of decision. For now it is just about scrolling itself, but there is some more stuff in the queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846223</commentid>
    <comment_count>34</comment_count>
      <attachid>191173</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-04 01:28:58 -0800</bug_when>
    <thetext>Created attachment 191173
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846259</commentid>
    <comment_count>35</comment_count>
      <attachid>191181</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-04 02:30:17 -0800</bug_when>
    <thetext>Created attachment 191181
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846605</commentid>
    <comment_count>36</comment_count>
      <attachid>191181</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-04 10:10:59 -0800</bug_when>
    <thetext>Comment on attachment 191181
patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:66
&gt; +    TextureMapperLayer* getScrollableContentsLayerAt(const FloatPoint&amp; pos);

If it can be null, I would call it &quot;find&quot; instead of &quot;get&quot;

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.h:186
&gt; +    FloatSize mapScrollOffset(const FloatSize&amp;);

Sometimes we use map, sometimes convertTo and sometimes to... please check what is more prevalent in webkit source</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847315</commentid>
    <comment_count>37</comment_count>
      <attachid>191409</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-04 23:22:24 -0800</bug_when>
    <thetext>Created attachment 191409
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847401</commentid>
    <comment_count>38</comment_count>
      <attachid>191409</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-05 01:01:33 -0800</bug_when>
    <thetext>Comment on attachment 191409
patch

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

&gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h:42
&gt; +WK_EXPORT WKCoordinatedSceneLayer WKCoordinatedSceneFindScrollableContentsLayerAt(WKCoordinatedScene, WKPoint);
&gt; +WK_EXPORT uint32_t WKCoordinatedSceneGetLayerID(WKCoordinatedSceneLayer);
&gt; +WK_EXPORT void WKCoordinatedSceneScrollBy(WKCoordinatedSceneLayer, WKSize);

There is some confusion here about Scene and SceneLayer... functions working on SceneLayer are called Scene only

What does &quot;Coordinated&quot; bring to the user? Why not just WKLayerScrollBy or WKContentLayerScrollBy ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847409</commentid>
    <comment_count>39</comment_count>
      <attachid>191409</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-05 01:16:45 -0800</bug_when>
    <thetext>Comment on attachment 191409
patch

Looks OK now you have explained me the next steps... can you get an owner to take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847431</commentid>
    <comment_count>40</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-05 01:35:02 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 191409 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191409&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.h:42
&gt; &gt; +WK_EXPORT WKCoordinatedSceneLayer WKCoordinatedSceneFindScrollableContentsLayerAt(WKCoordinatedScene, WKPoint);
&gt; &gt; +WK_EXPORT uint32_t WKCoordinatedSceneGetLayerID(WKCoordinatedSceneLayer);
&gt; &gt; +WK_EXPORT void WKCoordinatedSceneScrollBy(WKCoordinatedSceneLayer, WKSize);
&gt; 
&gt; There is some confusion here about Scene and SceneLayer... functions working on SceneLayer are called Scene only
&gt; 
&gt; What does &quot;Coordinated&quot; bring to the user? Why not just WKLayerScrollBy or WKContentLayerScrollBy ?

It&apos;s a namespacing thing. There are too many layers around; WKLayer might be too ambiguous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847881</commentid>
    <comment_count>41</comment_count>
      <attachid>191409</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-05 11:53:00 -0800</bug_when>
    <thetext>Comment on attachment 191409
patch

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

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:684
&gt; +        result = m_children[i]-&gt;hitTest(point, condition);

Why continue after the first hit?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:686
&gt; +    return result ? result : condition(this, point) ? this : 0;

That is little hard to read. I think I would prefer only a single ?: in an expression.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:697
&gt; +    return parentLayer-&gt;m_currentTransform.combined().mapRect(parentLayer-&gt;m_state.contentsRect).contains(point);

If the transformation is not rectilinear, mapRect will just give you the bounding box. You need to use mapQuad.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:725
&gt; +    // m_accumulatedScrollOffsetFractionalPart holds the fractional part of the user scroll offset that
&gt; +    // has not yet been synced with the web process because the web process expects an IntSize.
&gt; +    m_accumulatedScrollOffsetFractionalPart = FloatSize(fullOffset.width() - intWidth, fullOffset.height() - intHeight);
&gt; +
&gt; +    m_scrollClient-&gt;commitScrollOffset(m_id, IntSize(intWidth, intHeight));

Why not just send the FloatSize across?

&gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.cpp:39
&gt; +WK_EXPORT WKCoordinatedSceneLayer WKCoordinatedSceneFindScrollableContentsLayerAt(WKCoordinatedScene scene, WKPoint point)
&gt; +{
&gt; +    return toAPI(toImpl(scene)-&gt;findScrollableContentsLayerAt(WebCore::FloatPoint(point.x, point.y)));
&gt; +}

Is this hittest code path in use yet? I can&apos;t seem to find where it is called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847947</commentid>
    <comment_count>42</comment_count>
      <attachid>191409</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-05 12:50:04 -0800</bug_when>
    <thetext>Comment on attachment 191409
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2327
&gt; +    settings-&gt;setAcceleratedCompositingForOverflowScrollEnabled(store.getBoolValueForKey(WebPreferencesKey::acceleratedCompositingForOverflowScrollEnabledKey()));

Looks like you&apos;re enabling this for everyone here, which is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847954</commentid>
    <comment_count>43</comment_count>
      <attachid>191409</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-03-05 12:54:08 -0800</bug_when>
    <thetext>Comment on attachment 191409
patch

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

The WebKit2 bits look OK to me.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2327
&gt;&gt; +    settings-&gt;setAcceleratedCompositingForOverflowScrollEnabled(store.getBoolValueForKey(WebPreferencesKey::acceleratedCompositingForOverflowScrollEnabledKey()));
&gt; 
&gt; Looks like you&apos;re enabling this for everyone here, which is wrong.

Never mind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>847975</commentid>
    <comment_count>44</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 13:06:07 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=191409&amp;action=review

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:684
&gt;&gt; +        result = m_children[i]-&gt;hitTest(point, condition);
&gt; 
&gt; Why continue after the first hit?

It does not. It breaks the for if the result is not zero.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:725
&gt;&gt; +    m_scrollClient-&gt;commitScrollOffset(m_id, IntSize(intWidth, intHeight));
&gt; 
&gt; Why not just send the FloatSize across?

An IntSize is expected because of ScrollableArea::notifyScrollPositionChanged.

&gt;&gt; Source/WebKit2/UIProcess/API/CoordinatedGraphics/WKCoordinatedScene.cpp:39
&gt;&gt; +}
&gt; 
&gt; Is this hittest code path in use yet? I can&apos;t seem to find where it is called.

This is API to be used outside of webkit. Tests are comming in bug #111140.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848057</commentid>
    <comment_count>45</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-05 14:11:33 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; &gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:684
&gt; &gt;&gt; +        result = m_children[i]-&gt;hitTest(point, condition);
&gt; &gt; 
&gt; &gt; Why continue after the first hit?
&gt; 
&gt; It does not. It breaks the for if the result is not zero.
Of course, my mistake.

&gt; &gt; Is this hittest code path in use yet? I can&apos;t seem to find where it is called.
&gt; This is API to be used outside of webkit. Tests are comming in bug #111140.

Is the API a temporary one to be able to test the current state of the code, or is it the actual API you plan to export? It seems to me it might not be ideal once we finish more of the implementation of accelerated overflow scrolling. For one thing a layer might not always be scrollable, or might be scrollable but not in the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848073</commentid>
    <comment_count>46</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-05 14:21:45 -0800</bug_when>
    <thetext>(In reply to comment #45)

&gt; Is the API a temporary one to be able to test the current state of the code, or is it the actual API you plan to export? 
How this is exported should be port specific. But we want a way to test some of the underlying features without dealing with port-specific APIs.

&gt; For one thing a layer might not always be scrollable, or might be scrollable but not in the UIProcess.
With composited overflow scrolling and coordinated graphics enabled, the layer is in the UI process.
When it&apos;s not scrollable, setting its scroll position should have no effect.
This is no different from RenderLayer being a subclass of ScrollableArea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848087</commentid>
    <comment_count>47</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 14:40:06 -0800</bug_when>
    <thetext>&gt; &gt; &gt; Is this hittest code path in use yet? I can&apos;t seem to find where it is called.
&gt; &gt; This is API to be used outside of webkit. Tests are comming in bug #111140.
&gt; 
&gt; Is the API a temporary one to be able to test the current state of the code, or is it the actual API you plan to export? It seems to me it might not be ideal once we finish more of the implementation of accelerated overflow scrolling.

I consider this is part of the actual API. There are missing parts though. For example we are working now on passing to the UI side information about the regions that are touch event targets for it to be used together with this patch. There is more stuff in the queue.

The idea is to have an API that is port independent (that depends only on coordinated graphics), properly implemented and tested. More stuff will probably be added in future. Of course the API might change a bit in future, if needed.

&gt; For one thing a layer might not always be scrollable, or might be scrollable but not in the UIProcess.

Yes, indeed. WKCoordinatedSceneFindScrollableContentsLayerAt will return 0 if there is no scrollable layer at the given point. The information about if the layer is scrollable is been kept always up to date in UI side.

I am preparing a patch that addresses your other comments. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848095</commentid>
    <comment_count>48</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-05 14:43:58 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt;With composited overflow scrolling and coordinated graphics enabled, the layer is in the UI process.
&gt; When it&apos;s not scrollable, setting its scroll position should have no effect.
&gt; This is no different from RenderLayer being a subclass of ScrollableArea.

It is more complicated than that. If you have a scrollable layer that is 10 px from the top and you send mouse wheel for 30px upwards; the layer scrolls 10px up and its parent layer scrolls 20px up.

Second if the layer is not fast scrollable, it needs to be scrolled in webprocess, and this means either blocking, having an asynchronous API or simply giving up and telling the caller to scroll another way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848100</commentid>
    <comment_count>49</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 14:46:28 -0800</bug_when>
    <thetext>(In reply to comment #46)
&gt; (In reply to comment #45)
&gt; 
&gt; &gt; Is the API a temporary one to be able to test the current state of the code, or is it the actual API you plan to export? 
&gt; How this is exported should be port specific. But we want a way to test some of the underlying features without dealing with port-specific APIs.

Of course each port may decide about using this API or not. I hope that it is good enough for the ports to consider using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848110</commentid>
    <comment_count>50</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 14:51:21 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (In reply to comment #46)
&gt; &gt;With composited overflow scrolling and coordinated graphics enabled, the layer is in the UI process.
&gt; &gt; When it&apos;s not scrollable, setting its scroll position should have no effect.
&gt; &gt; This is no different from RenderLayer being a subclass of ScrollableArea.
&gt; 
&gt; It is more complicated than that. If you have a scrollable layer that is 10 px from the top and you send mouse wheel for 30px upwards; the layer scrolls 10px up and its parent layer scrolls 20px up.

The idea is to provide the information for the user of the API to take these decisions but create as few restrictions as possible. In your example, the user of the API should have the information about the contents size and viweport size and decide what to do, but if he decides to scroll 30px then we scroll.

As I said the API is not complete. I would like to add the files and create first tests so that our people could continue working on it.

&gt; 
&gt; Second if the layer is not fast scrollable, it needs to be scrolled in webprocess, and this means either blocking, having an asynchronous API or simply giving up and telling the caller to scroll another way.

What we did is pretty similar to &apos;giving up and telling the caller to scroll another way&apos; because no scrollable layer will be found on UI side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848119</commentid>
    <comment_count>51</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-05 14:56:19 -0800</bug_when>
    <thetext>(In reply to comment #47)
&gt; Yes, indeed. WKCoordinatedSceneFindScrollableContentsLayerAt will return 0 if there is no scrollable layer at the given point. The information about if the layer is scrollable is been kept always up to date in UI side.
&gt; 
My point was more that what scrollable layer should be returned might depend on what direction you need to scroll in, what event is triggering it and what the scrolling constraints are on the layer. So the hitTest API and scrollBy methods may need to look different. Besides my split scroll example, an easier example is a layer scrolled to all the way to one of its constraint, so it is no longer scrollable in that direction but its parent layer is. Or the bad case with overflow scroll touch, where it is scrollable beyond the constraint but only by touch.

&gt; I am preparing a patch that addresses your other comments. Thanks!

Cool :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848172</commentid>
    <comment_count>52</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 15:40:15 -0800</bug_when>
    <thetext>(In reply to comment #51)
&gt; (In reply to comment #47)
&gt; &gt; Yes, indeed. WKCoordinatedSceneFindScrollableContentsLayerAt will return 0 if there is no scrollable layer at the given point. The information about if the layer is scrollable is been kept always up to date in UI side.
&gt; &gt; 
&gt; My point was more that what scrollable layer should be returned might depend on what direction you need to scroll in, what event is triggering it and what the scrolling constraints are on the layer. So the hitTest API and scrollBy methods may need to look different. Besides my split scroll example, an easier example is a layer scrolled to all the way to one of its constraint, so it is no longer scrollable in that direction but its parent layer is. Or the bad case with overflow scroll touch, where it is scrollable beyond the constraint but only by touch.

I understand.

I see this API as lower level. I would like it to provide the means to implement the behavior that you described, like sizes, parents, positions, etc, but I don&apos;t think that it should implement the behavior itself.

I think that issues like how to scroll, which layer to scroll depending on the kind of event, which scroll constraint to apply in each case, etc, might be even more than port specific, they might be application specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848473</commentid>
    <comment_count>53</comment_count>
      <attachid>191654</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-05 22:26:18 -0800</bug_when>
    <thetext>Created attachment 191654
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848502</commentid>
    <comment_count>54</comment_count>
      <attachid>191654</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2013-03-05 23:21:58 -0800</bug_when>
    <thetext>Comment on attachment 191654
patch

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

Apart from the contentsRect issue I&apos;m ok with this.
Allan, I believe that some of your concerns/suggestions can be addressed later on top of this, they&apos;re really more about advanced cases like wheel events and scrolling layer inside scrolling layer. Like we do with scrolling of the main page, I would like to first support the common use cases and then iterate towards more advanced cases. If you don&apos;t have more objections I would like to move forward.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:701
&gt; +    return parentLayer-&gt;m_currentTransform.combined().mapQuad(parentLayer-&gt;m_state.contentsRect).containsPoint(point);

Actually, it&apos;s wrong to use contentsRect here.
We should use the entire layerRect() if there is a m_backingStore, and contentsRect if there is an m_contentsLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848649</commentid>
    <comment_count>55</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2013-03-06 02:04:47 -0800</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 191654 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191654&amp;action=review
&gt; 
&gt; Apart from the contentsRect issue I&apos;m ok with this.
&gt; Allan, I believe that some of your concerns/suggestions can be addressed later on top of this, they&apos;re really more about advanced cases like wheel events and scrolling layer inside scrolling layer. Like we do with scrolling of the main page, I would like to first support the common use cases and then iterate towards more advanced cases. If you don&apos;t have more objections I would like to move forward.
&gt; 
I am okay with that. I was only going to suggest making scrollby return how much it has scrolled and a method to get the parent scrollable layer, so you could ask scrollable layers one by one to scroll, but we can improve that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848676</commentid>
    <comment_count>56</comment_count>
      <attachid>191702</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-06 03:09:26 -0800</bug_when>
    <thetext>Created attachment 191702
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848690</commentid>
    <comment_count>57</comment_count>
      <attachid>191707</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2013-03-06 03:47:23 -0800</bug_when>
    <thetext>Created attachment 191707
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848699</commentid>
    <comment_count>58</comment_count>
      <attachid>191707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 04:09:30 -0800</bug_when>
    <thetext>Comment on attachment 191707
patch

Clearing flags on attachment: 191707

Committed r144907: &lt;http://trac.webkit.org/changeset/144907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848701</commentid>
    <comment_count>59</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-06 04:09:41 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189284</attachid>
            <date>2013-02-20 04:12:59 -0800</date>
            <delta_ts>2013-02-20 18:27:58 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>0001-UI-side-scroll-API-for-Coordinated-Graphics-WIP.patch</filename>
            <type>text/plain</type>
            <size>51624</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAwOTQ1ZDEwZjY4MTRhNDk4ZjM5MmVmZDRhYWM3NGZjMmI4YmY5NjhhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCAyMCBGZWIgMjAxMyAwMzo1NTo1MyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFVJIHNpZGUgc2Nyb2xsIEFQSSBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MgKFdJUCkuCgotLS0K
IC4uLi9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmggIHwgICAg
NCArKwogLi4uL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaCAg
fCAgIDE1ICsrKysrCiAuLi4vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNz
LmNwcCAgICB8ICAgNTcgKysrKysrKysrKysrKysrKysrKwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgfCAgIDI0ICsrKysrKystCiAuLi4vcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAgICB8ICAgMTYgKysrKystCiAu
Li4vcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oICAgICB8ICAgIDQg
KysKIC4uLi9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCAgIHwg
ICAgNiArKwogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwICAgICAg
ICAgfCAgIDU4ICsrKysrKysrKysrKysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oICB8ICAgMTkgKysrKysrKwogLi4uL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgICAgICAgfCAgICA3ICsrKwogLi4uL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCAgfCAgICAyICsKIC4uLi9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwICAgICAgIHwgICAxNyArKysr
Ky0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggIHwg
ICAxMiArKystCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgg
ICAgICB8ICAgIDEgKwogLi4uL0Nvb3JkaW5hdGVkU2Nyb2xsaW5nQ29vcmRpbmF0ZWRQcm94eS5o
ICAgICAgICAgfCAgIDE0ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwICAgIHwgICA0MSArKysrKysrKy0tLS0tLQogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5oICAgICAgfCAgICAyICsKIFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybU5peC5jbWFrZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwog
Li4uL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5jcHAgICAgICAgICAgfCAgIDU0
ICsrKysrKysrKysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0NHU2NlbmUuaCAgfCAgIDQ5ICsrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNwcCAgICAgICB8ICAgIDYgKysKIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcuaCAgICAgICAgIHwgICAgMyArCiAuLi4vQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwICAgICAgICAgICAgICB8ICAgMjAgKysrKysr
LQogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggICAgICAgICAgICAgICAgfCAg
ICA4ICsrLQogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmluICAg
ICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHQVBJQ2Fz
dC5oICAgIHwgICAzMyArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL25peC9X
ZWJWaWV3LmggICAgICAgICAgICAgfCAgICAyICsKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwICAgICAgICAgICAgICAgICAgIHwgICAxNyArKysrKysKIC4uLi9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAxMCArKysrCiAuLi4vQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgIDEgKwogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAgICA5ICsrKwog
Li4uL1dlYktpdDIvV2ViUHJvY2Vzcy9uaXgvV2ViUHJvY2Vzc01haW5OaXguY3BwICAgfCAgICAy
ICsKIFRvb2xzL01pbmlCcm93c2VyL25peC9tYWluLmNwcCAgICAgICAgICAgICAgICAgICAgIHwg
ICAyOSArKysrKysrKysrCiAzNSBmaWxlcyBjaGFuZ2VkLCA1MjggaW5zZXJ0aW9ucygrKSwgMjUg
ZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRlZFNjcm9sbENsaWVudC5oCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkU2Nyb2xsaW5nQ29vcmRpbmF0ZWRQcm94eS5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBo
aWNzL1dLQ0dTY2VuZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDR1NjZW5lLmgKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHQVBJ
Q2FzdC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yLmgKaW5kZXggMGFhODg4MC4uYTU3NDIxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC0xNTUs
NiArMTU1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9D
b250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lk
IHRvdWNoRXZlbnRUYXJnZXRSZWN0c0RpZENoYW5nZShjb25zdCBEb2N1bWVudCopIHsgfQogCisg
ICAgLy8gVGhpcyB2aXJ0dWFsIGZ1bmN0aW9uIGlzIGN1cnJlbnRseSB1bmlxdWUgdG8gQ29vcmRp
bmF0ZWQgR3JhcGhpY3MgYXBwcm9hY2guCisgICAgLy8gSXRzIG1lYW5pbmdmdWwgaW1wbGVtZW50
YXRpb24gaXMgaW4gU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLgorICAg
IHZpcnR1YWwgdm9pZCBncmFwaGljc0xheWVyV2lsbEJlUmVtb3ZlZChHcmFwaGljc0xheWVyKikg
eyB9CisKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRfVFJBQ0tJTkcpCiAgICAgdm9pZCBjb21wdXRl
QWJzb2x1dGVUb3VjaEV2ZW50VGFyZ2V0UmVjdHMoY29uc3QgRG9jdW1lbnQqLCBWZWN0b3I8SW50
UmVjdD4mKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRlZFNjcm9sbENsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRlZFNj
cm9sbENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzNGM1OWMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGlu
YXRlZGdyYXBoaWNzL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50LmgKQEAgLTAsMCArMSwxNSBAQAor
I2lmbmRlZiBDb29yZGluYXRlZFNjcm9sbENsaWVudF9oCisjZGVmaW5lIENvb3JkaW5hdGVkU2Ny
b2xsQ2xpZW50X2gKKworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBDb29yZGluYXRlZFNjcm9sbENsaWVudCB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBDb29yZGluYXRlZFNjcm9sbENsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggYTFiZjNiZC4uMWYzNjQ0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMjksMTQgKzI5LDE3IEBA
CiAKICNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCIK
IAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU2Nyb2xsaW5nQ29vcmRpbmF0ZWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNz
OjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSogcGFnZSkKICAg
ICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCisgICAgLCBtX2NsaWVudCgwKQogewogfQog
CkBAIC00Nyw2ICs1MCw2MCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRH
cmFwaGljczo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgogICAgIHRvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGVuYWJsZSk7CiB9
CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxh
YmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJl
YSwgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoZ3JhcGhpY3NMYXll
cik7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdWludDMyX3QgbGF5
ZXJJZCA9IGxheWVyLT5pZCgpOworICAgIFNjcm9sbGFibGVMYXllcnNNYXA6Oml0ZXJhdG9yIGkg
PSBtX3Njcm9sbGFibGVMYXllcnMuZmluZChsYXllcklkKTsKKworICAgIGlmIChpICE9IG1fc2Ny
b2xsYWJsZUxheWVycy5lbmQoKSkgeworICAgICAgICBpLT52YWx1ZS0+c2Nyb2xsYWJsZUFyZWEg
PSBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgaS0+dmFsdWUtPmxheWVyID0gbGF5ZXI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBPd25QdHI8TGF5ZXJJbmZvPiBpbmZvID0gYWRvcHRQ
dHIobmV3IExheWVySW5mbygpKTsKKyAgICBpbmZvLT5zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFi
bGVBcmVhOworICAgIGluZm8tPmxheWVyID0gbGF5ZXI7CisgICAgbV9zY3JvbGxhYmxlTGF5ZXJz
LmFkZChsYXllcklkLCBpbmZvLnJlbGVhc2UoKSk7CisKKyAgICBpZiAobV9jbGllbnQpCisgICAg
ICAgIG1fY2xpZW50LT5zY3JvbGxpbmdMYXllcldhc0FkZGVkKGxheWVySWQpOworfQorCit2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6Z3JhcGhpY3NMYXllcldp
bGxCZVJlbW92ZWQoR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3sKKyAgICBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoZ3Jh
cGhpY3NMYXllcik7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdWlu
dDMyX3QgbGF5ZXJJZCA9IGxheWVyLT5pZCgpOworCisgICAgU2Nyb2xsYWJsZUxheWVyc01hcDo6
aXRlcmF0b3IgaSA9IG1fc2Nyb2xsYWJsZUxheWVycy5maW5kKGxheWVySWQpOworICAgIGlmIChp
ID09IG1fc2Nyb2xsYWJsZUxheWVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9z
Y3JvbGxhYmxlTGF5ZXJzLnJlbW92ZShpKTsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAg
bV9jbGllbnQtPnNjcm9sbGluZ0xheWVyV2FzUmVtb3ZlZChsYXllcklkKTsKK30KKwordm9pZCBT
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbExheWVyQnkodWlu
dDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFNjcm9sbGFibGVM
YXllcnNNYXA6Oml0ZXJhdG9yIGkgPSBtX3Njcm9sbGFibGVMYXllcnMuZmluZChsYXllcklEKTsK
KyAgICBpZiAoaSA9PSBtX3Njcm9sbGFibGVMYXllcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSA9IGktPnZhbHVlLT5zY3JvbGxh
YmxlQXJlYTsKKworICAgIHNjcm9sbGFibGVBcmVhLT5ub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5n
ZWQoc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOworICAgIGktPnZh
bHVlLT5sYXllci0+YWRqdXN0Q29tbWl0ZWRTY3JvbGxQb3NpdGlvbihvZmZzZXQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4N2MyYzcyLi44NWE5ZWVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBo
aWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTMwLDEzICszMCwzNSBAQAogCiAjaW5j
bHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkU2Ny
b2xsQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MgOiBw
dWJsaWMgU2Nyb2xsaW5nQ29vcmRpbmF0b3IgeworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOworY2xhc3MgQ29vcmRpbmF0ZWRTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OworCitjbGFz
cyBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MgOiBwdWJsaWMgU2Nyb2xs
aW5nQ29vcmRpbmF0b3IsIHB1YmxpYyBDb29yZGluYXRlZFNjcm9sbENsaWVudCB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKFBh
Z2UqKTsKIAorICAgIHZvaWQgc2V0Q2xpZW50KENvb3JkaW5hdGVkU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcm94eSogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Ny
b2xsYWJsZUFyZWEqLCBHcmFwaGljc0xheWVyKik7CisgICAgdmlydHVhbCB2b2lkIGdyYXBoaWNz
TGF5ZXJXaWxsQmVSZW1vdmVkKEdyYXBoaWNzTGF5ZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
Y3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCk7CisK
K3ByaXZhdGU6CisgICAgc3RydWN0IExheWVySW5mbyB7CisgICAgICAgIFNjcm9sbGFibGVBcmVh
KiBzY3JvbGxhYmxlQXJlYTsKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXll
cjsKKyAgICB9OworCisgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90LCBPd25QdHI8TGF5ZXJJ
bmZvPiA+IFNjcm9sbGFibGVMYXllcnNNYXA7CisgICAgU2Nyb2xsYWJsZUxheWVyc01hcCBtX3Nj
cm9sbGFibGVMYXllcnM7CisgICAgQ29vcmRpbmF0ZWRTY3JvbGxpbmdDb29yZGluYXRvclByb3h5
KiBtX2NsaWVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9y
bS5jcHAKaW5kZXggMDQzNjNjYy4uNjgwZTBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5jcHAKQEAg
LTIwLDYgKzIwLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyVHJhbnNmb3JtLmgiCiAKKyNpbmNsdWRlIDxzdGRpby5oPgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm06OkdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0oKQpA
QCAtOTYsOSArOTgsMTAgQEAgdm9pZCBHcmFwaGljc0xheWVyVHJhbnNmb3JtOjpjb21iaW5lVHJh
bnNmb3Jtcyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW4KIHsKICAgICBmbG9hdCBv
cmlnaW5YID0gbV9hbmNob3JQb2ludC54KCkgKiBtX3NpemUud2lkdGgoKTsKICAgICBmbG9hdCBv
cmlnaW5ZID0gbV9hbmNob3JQb2ludC55KCkgKiBtX3NpemUuaGVpZ2h0KCk7CisKICAgICBtX2Nv
bWJpbmVkID0KICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgocGFyZW50VHJhbnNmb3JtKQot
ICAgICAgICAgICAgLnRyYW5zbGF0ZTNkKG9yaWdpblggKyBtX3Bvc2l0aW9uLngoKSwgb3JpZ2lu
WSArIG1fcG9zaXRpb24ueSgpLCBtX2FuY2hvclBvaW50LnooKSApCisgICAgICAgICAgICAudHJh
bnNsYXRlM2Qob3JpZ2luWCArIG1fcG9zaXRpb24ueCgpIC0gbV9zY3JvbGxQb3NpdGlvbi53aWR0
aCgpLCBvcmlnaW5ZICsgbV9wb3NpdGlvbi55KCkgLSBtX3Njcm9sbFBvc2l0aW9uLmhlaWdodCgp
LCBtX2FuY2hvclBvaW50LnooKSApCiAgICAgICAgICAgICAubXVsdGlwbHkobV9sb2NhbCk7CiAK
ICAgICAvLyBUaGUgY2hpbGRyZW4gdHJhbnNmb3JtIHdpbGwgdGFrZSBpdCBmcm9tIGhlcmUsIGlm
IGl0IGdldHMgdXNlZC4KQEAgLTEwOSw2ICsxMTIsMTcgQEAgdm9pZCBHcmFwaGljc0xheWVyVHJh
bnNmb3JtOjpjb21iaW5lVHJhbnNmb3Jtcyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFy
ZW4KICAgICBtX2NoaWxkcmVuRGlydHkgPSB0cnVlOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm06OnVwZGF0ZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7
CisgICAgbV9zY3JvbGxQb3NpdGlvbiArPSBkZWx0YTsKK30KKwordm9pZCBHcmFwaGljc0xheWVy
VHJhbnNmb3JtOjp1cGRhdGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0U2l6ZSYg
ZGVsdGEpCit7CisgICAgbV9zY3JvbGxQb3NpdGlvbiAtPSBkZWx0YTsKK30KKworCiB2b2lkIEdy
YXBoaWNzTGF5ZXJUcmFuc2Zvcm06OmNvbWJpbmVUcmFuc2Zvcm1zRm9yQ2hpbGRyZW4oKQogewog
ICAgIEFTU0VSVCghbV9kaXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKaW5kZXggNWRhMjViNC4uODg5
NjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NMYXllclRyYW5zZm9ybS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uaApAQCAtMzksNiArMzksOSBAQCBwdWJsaWM6CiAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY29tYmluZWQoKTsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb21iaW5lZEZvckNoaWxkcmVuKCk7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbFBvc2l0aW9u
KGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpOworICAgIHZvaWQgdXBkYXRlQ29tbWl0ZWRTY3JvbGxQ
b3NpdGlvbihjb25zdCBGbG9hdFNpemUmIGRlbHRhKTsKKwogICAgIHZvaWQgY29tYmluZVRyYW5z
Zm9ybXMoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudFRyYW5zZm9ybSk7CiAKIHBy
aXZhdGU6CkBAIC00Nyw2ICs1MCw3IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludDNEIG1fYW5j
aG9yUG9pbnQ7CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwogICAgIEZsb2F0U2l6ZSBtX3Np
emU7CisgICAgRmxvYXRTaXplIG1fc2Nyb2xsUG9zaXRpb247CiAgICAgYm9vbCBtX2ZsYXR0ZW5p
bmc7CiAgICAgYm9vbCBtX2RpcnR5OwogICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCA2OTRiNWEzLi4wYzRjZjI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMjgsMTEgKzI4LDE3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29vcmRpbmF0ZWRTY3JvbGxDbGll
bnQ7CisKIGNsYXNzIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIDogcHVibGljIEdyYXBoaWNz
TGF5ZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcigpOwogCisgICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoQ29vcmRpbmF0ZWRTY3JvbGxD
bGllbnQqIGNsaWVudCkgeyBtX2xheWVyLT5zZXRTY3JvbGxDbGllbnQoY2xpZW50KTsgfQorICAg
IHZvaWQgc2V0TGF5ZXJJRCh1aW50MzJfdCBpZCkgeyBtX2xheWVyLT5zZXRMYXllcklEKGlkKTsg
fQorICAgIHZvaWQgc2V0Q29tbWl0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBkZWx0
YSkgeyBsYXllcigpLT5zZXRDb21taXRlZFNjcm9sbFBvc2l0aW9uKGRlbHRhKTsgfQorCiAgICAg
Ly8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
RGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBlZGZlMzIwLi5kMGU2NDRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjAsNiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogCisjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRTY3JvbGxDbGllbnQuaCIKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjE0LDUgKzYxNiw2MSBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCiAgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9z
aXRpb24oKSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIFNlYXJjaENvbmRpdGlvbj4gVGV4dHVyZU1h
cHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2goY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIFNlYXJjaENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgVGV4dHVyZU1h
cHBlckxheWVyKiByZXN1bHQgPSAwOworICAgIGZvciAoaW50IGkgPSBtX2NoaWxkcmVuLnNpemUo
KSAtIDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkpCisgICAgICAgIHJlc3VsdCA9IG1fY2hpbGRy
ZW5baV0tPmhpdFRlc3RTZWFyY2gocG9pbnQsIGNvbmRpdGlvbik7CisKKyAgICByZXR1cm4gcmVz
dWx0ID8gcmVzdWx0IDogY29uZGl0aW9uKHRoaXMsIHBvaW50KSA/IHRoaXMgOiAwOworfQorCitj
bGFzcyBTY3JvbGxhYmxlQ29udGVudExheWVyQ29uZGl0aW9uIHsKK3B1YmxpYzoKKyAgICBTY3Jv
bGxhYmxlQ29udGVudExheWVyQ29uZGl0aW9uKGNvbnN0IEhhc2hTZXQ8dWludDMyX3Q+JiBzY3Jv
bGxhYmxlTGF5ZXJzKQorICAgICAgICA6IG1fc2Nyb2xsYWJsZUxheWVycyhzY3JvbGxhYmxlTGF5
ZXJzKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKFRleHR1cmVNYXBwZXJMYXllciog
bGF5ZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7CisgICAgICAgIGlmICghbV9z
Y3JvbGxhYmxlTGF5ZXJzLmNvbnRhaW5zKGxheWVyLT5sYXllcklEKCkpIHx8ICFsYXllci0+bV9w
YXJlbnQgfHwgIWxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBwYXJlbnRMYXllciA9IGxheWVy
LT5tX3BhcmVudC0+bV9wYXJlbnQ7CisgICAgICAgIHJldHVybiBwYXJlbnRMYXllci0+bV9jdXJy
ZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUmVjdChwYXJlbnRMYXllci0+bV9zdGF0ZS5jb250
ZW50c1JlY3QpLmNvbnRhaW5zKHBvaW50KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgY29uc3Qg
SGFzaFNldDx1aW50MzJfdD4mIG1fc2Nyb2xsYWJsZUxheWVyczsKK307CisKK1RleHR1cmVNYXBw
ZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpnZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQo
Y29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IEhhc2hTZXQ8dWludDMyX3Q+JiBzY3JvbGxh
YmxlTGF5ZXJzKQoreworICAgIHJldHVybiBoaXRUZXN0U2VhcmNoKHBvaW50LCBTY3JvbGxhYmxl
Q29udGVudExheWVyQ29uZGl0aW9uKHNjcm9sbGFibGVMYXllcnMpKTsKK30KKworYm9vbCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2hDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVy
KiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIGxheWVyLT5t
X3N0YXRlLnZpc2libGUgJiYgbGF5ZXItPm1fc3RhdGUuY29udGVudHNWaXNpYmxlICYmIGxheWVy
LT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBSZWN0KGxheWVyLT5tX3N0YXRlLmNv
bnRlbnRzUmVjdCkuY29udGFpbnMocG9pbnQpOworfQorCitUZXh0dXJlTWFwcGVyTGF5ZXIqIFRl
eHR1cmVNYXBwZXJMYXllcjo6Z2V0VG9wbW9zdExheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpCit7CisgICAgcmV0dXJuIGhpdFRlc3RTZWFyY2gocG9pbnQsICZUZXh0dXJlTWFwcGVyTGF5
ZXI6OmhpdFRlc3RTZWFyY2hDb25kaXRpb24pOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXll
cjo6c2Nyb2xsQnkoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmICghbV9zY3JvbGxD
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY3VycmVudFRyYW5zZm9ybS51cGRhdGVT
Y3JvbGxQb3NpdGlvbihGbG9hdFNpemUob2Zmc2V0LndpZHRoKCksIG9mZnNldC5oZWlnaHQoKSkp
OworICAgIG1fc2Nyb2xsQ2xpZW50LT5zY3JvbGxMYXllckJ5KG1fbGF5ZXJJRCwgb2Zmc2V0KTsK
K30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldENvbW1pdGVkU2Nyb2xsUG9zaXRpb24o
Y29uc3QgSW50U2l6ZSYgZGVsdGEpCit7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnVwZGF0ZUNv
bW1pdGVkU2Nyb2xsUG9zaXRpb24oRmxvYXRTaXplKGRlbHRhLndpZHRoKCksIGRlbHRhLmhlaWdo
dCgpKSk7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IGY2Yjcy
YTMuLjBjNDQ0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTMxLDYgKzMxLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBDb29yZGluYXRlZFNjcm9sbENsaWVudDsK
IGNsYXNzIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnM7CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllcjsKIApAQCAtNTEsMTAgKzUyLDIyIEBAIHB1YmxpYzoKICNlbmRpZgogICAgICAg
ICAsIG1fdGV4dHVyZU1hcHBlcigwKQogICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNl
KQorICAgICAgICAsIG1fbGF5ZXJJRCgwKQorICAgICAgICAsIG1fc2Nyb2xsQ2xpZW50KDApCiAg
ICAgeyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAorICAgIHZvaWQg
c2V0TGF5ZXJJRCh1aW50MzJfdCBpZCkgeyBtX2xheWVySUQgPSBpZDsgfQorICAgIHVpbnQzMl90
IGxheWVySUQoKSB7IHJldHVybiBtX2xheWVySUQ7IH0KKworICAgIFRleHR1cmVNYXBwZXJMYXll
ciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvcywgY29u
c3QgSGFzaFNldDx1aW50MzJfdD4mIHNjcm9sbGFibGVMYXllcnMpOworICAgIFRleHR1cmVNYXBw
ZXJMYXllciogZ2V0VG9wbW9zdExheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9zKTsKKworICAg
IHZvaWQgc2V0U2Nyb2xsQ2xpZW50KENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50KiBzY3JvbGxDbGll
bnQpIHsgbV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lkIHNjcm9sbEJ5
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIHNldENvbW1pdGVkU2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50U2l6ZSYgZGVsdGEpOworCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
KiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAKQEAgLTE1Niw2ICsxNjks
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkVXBkYXRlQ3VycmVudEZpbHRlcnNGcm9t
R3JhcGhpY3NMYXllcjsKICNlbmRpZgogCisgICAgZnJpZW5kIGNsYXNzIFNjcm9sbGFibGVDb250
ZW50TGF5ZXJDb25kaXRpb247CisgICAgdGVtcGxhdGU8Y2xhc3MgU2VhcmNoQ29uZGl0aW9uPiBU
ZXh0dXJlTWFwcGVyTGF5ZXIqIGhpdFRlc3RTZWFyY2goY29uc3QgRmxvYXRQb2ludCYgcG9pbnQs
IFNlYXJjaENvbmRpdGlvbiBjb25kaXRpb24pOworICAgIHN0YXRpYyBib29sIGhpdFRlc3RTZWFy
Y2hDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgRmxvYXRQb2ludCYpOworCiAg
ICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgRmxvYXRQb2ludCBwb3M7CiAgICAgICAgIEZsb2F0
UG9pbnQzRCBhbmNob3JQb2ludDsKQEAgLTIwOCw2ICsyMjUsOCBAQCBwcml2YXRlOgogICAgIEdy
YXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3Jv
bGxQb3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisgICAgdWludDMy
X3QgbV9sYXllcklEOworICAgIENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50KiBtX3Njcm9sbENsaWVu
dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggMGVlOTdjZC4uNGRmYjM4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTQ2
NCw2ICs0NjQsMTEgQEAgQ29vcmRpbmF0ZWRMYXllcklEIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6aWQoKSBjb25zdAogICAgIHJldHVybiBtX2lkOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6YWRqdXN0Q29tbWl0ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBk
ZWx0YSkKK3sKKyAgICBtX2xheWVySW5mby5jb21taXRlZFNjcm9sbFBvc2l0aW9uICs9IGRlbHRh
OworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0
KGJvb2wgaXNGaXhlZCkKIHsKICAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gaXNGaXhlZCkK
QEAgLTU3OCw2ICs1ODMsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xh
eWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCk7CiAKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZSht
X2lkLCBtX2xheWVySW5mbyk7CisKKyAgICBtX2xheWVySW5mby5jb21taXRlZFNjcm9sbFBvc2l0
aW9uID0gSW50U2l6ZSgwLCAwKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXgg
YTNmMGEwOC4uODQ4OTE1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTEzNiw2ICsxMzYsOCBAQCBwdWJsaWM6CiAKICAg
ICBDb29yZGluYXRlZExheWVySUQgaWQoKSBjb25zdDsKIAorICAgIHZvaWQgYWRqdXN0Q29tbWl0
ZWRTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRTaXplJiBkZWx0YSk7CisKICAgICB2b2lkIHNldEZp
eGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpOwogCiAgICAgSW50UmVjdCBjb3ZlclJlY3QoKSBj
b25zdCB7IHJldHVybiBtX21haW5CYWNraW5nU3RvcmUgPyBtX21haW5CYWNraW5nU3RvcmUtPm1h
cFRvQ29udGVudHMobV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlclJlY3QoKSkgOiBJbnRSZWN0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKaW5kZXggZDIxNWZiMy4uMzQ1OTE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTY2LDcgKzY2LDcg
QEAgc3RhdGljIGJvb2wgbGF5ZXJTaG91bGRIYXZlQmFja2luZ1N0b3JlKEdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgIHJldHVybiBsYXllci0+ZHJhd3NDb250ZW50KCkgJiYgbGF5ZXItPmNvbnRl
bnRzQXJlVmlzaWJsZSgpICYmICFsYXllci0+c2l6ZSgpLmlzRW1wdHkoKTsKIH0KIAotQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lQ2xpZW50KiBjbGllbnQpCitDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqIGNs
aWVudCwgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQqIHNjcm9sbENsaWVudCkKICAgICA6IG1fY2xp
ZW50KGNsaWVudCkKICAgICAsIG1faXNBY3RpdmUoZmFsc2UpCiAgICAgLCBtX3Jvb3RMYXllcklE
KEludmFsaWRDb29yZGluYXRlZExheWVySUQpCkBAIC03Niw2ICs3Niw3IEBAIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZUNsaWVuCiAjZW5kaWYKICAgICAsIG1fYmFja2dyb3VuZENvbG9yKENvbG9yOjp3aGl0
ZSkKICAgICAsIG1fc2V0RHJhd3NCYWNrZ3JvdW5kKGZhbHNlKQorICAgICwgbV9zY3JvbGxDbGll
bnQoc2Nyb2xsQ2xpZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiB9CkBAIC0z
NDIsNiArMzQzLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3Rh
dGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICBsYXllci0+c2V0RGVi
dWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5mby5kZWJ1Z0JvcmRl
cldpZHRoKTsKICAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5zaG93
UmVwYWludENvdW50ZXIpOwogCisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXll
ciktPnNldENvbW1pdGVkU2Nyb2xsUG9zaXRpb24obGF5ZXJJbmZvLmNvbW1pdGVkU2Nyb2xsUG9z
aXRpb24pOworCiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQpCiAgICAgICAgIG1f
Zml4ZWRMYXllcnMuYWRkKGlkLCBsYXllcik7CiAgICAgZWxzZQpAQCAtMzcxLDYgKzM3NCw4IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcihDb29yZGluYXRlZExh
eWVySUQgaWQpCiB7CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG5ld0xheWVyID0gR3JhcGhp
Y3NMYXllcjo6Y3JlYXRlKDAgLyogZmFjdG9yeSAqLywgdGhpcyk7CiAgICAgdG9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldEhhc093bkJhY2tpbmdTdG9yZShm
YWxzZSk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSkt
PnNldExheWVySUQoaWQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5
ZXIuZ2V0KCkpLT5zZXRTY3JvbGxDbGllbnQobV9zY3JvbGxDbGllbnQpOwogICAgIG1fbGF5ZXJz
LmFkZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgpKTsKIH0KIApAQCAtNjkzLDYgKzY5OCwxNiBAQCB2
b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQogCitUZXh0dXJl
TWFwcGVyTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Z2V0U2Nyb2xsYWJsZUNvbnRl
bnRMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiByb290TGF5
ZXIoKSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+Z2V0U2Nyb2xsYWJsZUNv
bnRlbnRMYXllckF0KHBvaW50LCBtX3Njcm9sbGFibGVMYXllcnMpIDogMDsKK30KKworVGV4dHVy
ZU1hcHBlckxheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmdldFRvcG1vc3RMYXllckF0
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiByb290TGF5ZXIoKSA/IHRv
VGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+Z2V0VG9wbW9zdExheWVyQXQocG9pbnQp
IDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGU1YjRjODguLjkwNzc1YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTQyLDYg
KzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdT
dG9yZTsKIGNsYXNzIENvb3JkaW5hdGVkTGF5ZXJJbmZvOworY2xhc3MgQ29vcmRpbmF0ZWRTY3Jv
bGxDbGllbnQ7CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm87CiBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CkBAIC03Miw3ICs3Myw3IEBA
IHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsKLSAgICBleHBsaWNpdCBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7Cisg
ICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVu
dCosIENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lKCk7CiAgICAgdm9pZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBGbG9hdFJlY3QmLCBUZXh0dXJlTWFw
cGVyOjpQYWludEZsYWdzID0gMCk7CiAjaWYgUExBVEZPUk0oUVQpCkBAIC05MCw5ICs5MSwxNSBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIHNldExheWVyUmVwYWludENvdW50KENvb3JkaW5h
dGVkTGF5ZXJJRCwgaW50IHZhbHVlKTsKIAorICAgIHZvaWQgc2Nyb2xsaW5nTGF5ZXJXYXNBZGRl
ZCh1aW50MzJfdCBsYXllcklkKSB7IG1fc2Nyb2xsYWJsZUxheWVycy5hZGQobGF5ZXJJZCk7IH0K
KyAgICB2b2lkIHNjcm9sbGluZ0xheWVyV2FzUmVtb3ZlZCh1aW50MzJfdCBsYXllcklkKSB7IG1f
c2Nyb2xsYWJsZUxheWVycy5yZW1vdmUobGF5ZXJJZCk7IH0KKwogICAgIHZvaWQgZGV0YWNoKCk7
CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCisgICAg
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiBnZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciogZ2V0VG9wbW9zdExheWVyQXQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworCiAg
ICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxvY2sgdGhlIG1haW4gdGhyZWFkIHRvIHVz
ZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28gbWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0
aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUgbV9jbGllbnQuCiAgICAgLy8gQ3VycmVu
dGx5LCBRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUoKSBsb2NrcyB0aGUgbWFpbiB0aHJl
YWQgYmVmb3JlIGNhbGxpbmcgYm90aCBtZXRob2RzLgogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNl
cygpOwpAQCAtMjIwLDYgKzIyNyw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPGlu
dCwgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+ID4gQ3VzdG9tRmlsdGVyUHJvZ3JhbU1hcDsK
ICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWFwIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXM7CiAjZW5k
aWYKKworICAgIEhhc2hTZXQ8dWludDMyX3Q+IG1fc2Nyb2xsYWJsZUxheWVyczsKKyAgICBDb29y
ZGluYXRlZFNjcm9sbENsaWVudCogbV9zY3JvbGxDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5m
by5oCmluZGV4IDBmYTJhMTIuLjBmZDMyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZExheWVySW5mby5oCkBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBDb29yZGlu
YXRlZExheWVySW5mbyB7CiAgICAgQ29sb3Igc29saWRDb2xvcjsKICAgICBDb2xvciBkZWJ1Z0Jv
cmRlckNvbG9yOwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgSW50U2l6ZSBjb21t
aXRlZFNjcm9sbFBvc2l0aW9uOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkU2Nyb2xsaW5nQ29vcmRpbmF0ZWRQcm94eS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU2Nyb2xs
aW5nQ29vcmRpbmF0ZWRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY2YTYwMDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRTY3JvbGxpbmdDb29yZGluYXRlZFBy
b3h5LmgKQEAgLTAsMCArMSwxNCBAQAorI2lmbmRlZiBDb29yZGluYXRlZFNjcm9sbGluZ0Nvb3Jk
aW5hdGVkUHJveHlfaAorI2RlZmluZSBDb29yZGluYXRlZFNjcm9sbGluZ0Nvb3JkaW5hdGVkUHJv
eHlfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvb3JkaW5hdGVkU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcm94eSB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGluZ0xh
eWVyV2FzQWRkZWQodWludDMyX3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsaW5nTGF5
ZXJXYXNSZW1vdmVkKHVpbnQzMl90KSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBDb29yZGlu
YXRlZFNjcm9sbGluZ0Nvb3JkaW5hdGVkUHJveHlfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggNDE5YTllMC4uMmZjNWU4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01MTgsOCArNTE4LDggQEAgdm9pZCBSZW5kZXJM
YXllcjo6ZGlydHlBbmNlc3RvckNoYWluSGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50U3Rh
dHVzKCkKIGJvb2wgUmVuZGVyTGF5ZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiByZW5kZXJlcigpLT5mcmFtZSgp
Ci0gICAgICAgICYmIHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKQotICAgICAgICAmJiByZW5k
ZXJlcigpLT5mcmFtZSgpLT5wYWdlKCktPnNldHRpbmdzKCktPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKTsKKyAgICAgICAgJiYgcmVuZGVyZXIoKS0+ZnJh
bWUoKS0+cGFnZSgpOworLy8gICAgICAgICYmIHJlbmRlcmVyKCktPmZyYW1lKCktPnBhZ2UoKS0+
c2V0dGluZ3MoKS0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxl
ZCgpOwogfQogCiAvLyBJZiB3ZSBhcmUgYSBzdGFja2luZyBjb250YWluZXIsIHRoZW4gdGhpcyBm
dW5jdGlvbiB3aWxsIGRldGVybWluZSBpZiBvdXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggN2ExMjYwYy4uMjM5Y2JlNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTMw
NywyMSArMzA3LDI4IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVQcmltYXJ5R3Jh
cGhpY3NMYXllcigpCiAjZW5kaWYKIH0KIAordm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnJlbW92
ZUdyYXBoaWNzTGF5ZXIoT3duUHRyPEdyYXBoaWNzTGF5ZXI+JiBsYXllcikKK3sKKyAgICBpZiAo
U2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc2Nyb2xsaW5nQ29v
cmRpbmF0b3JGcm9tTGF5ZXIobV9vd25pbmdMYXllcikpCisgICAgICAgIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLT5ncmFwaGljc0xheWVyV2lsbEJlUmVtb3ZlZChsYXllci5nZXQoKSk7CisgICAgbGF5
ZXIgPSBudWxscHRyOworfQorCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6ZGVzdHJveUdyYXBo
aWNzTGF5ZXJzKCkKIHsKICAgICBpZiAobV9ncmFwaGljc0xheWVyKQogICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xh
eWVyID0gbnVsbHB0cjsKLSAgICBtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllciA9IG51bGxwdHI7
Ci0gICAgbV9ncmFwaGljc0xheWVyID0gbnVsbHB0cjsKLSAgICBtX2ZvcmVncm91bmRMYXllciA9
IG51bGxwdHI7Ci0gICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRyOwotICAgIG1fY2hpbGRD
b250YWlubWVudExheWVyID0gbnVsbHB0cjsKLSAgICBtX21hc2tMYXllciA9IG51bGxwdHI7Cisg
ICAgcmVtb3ZlR3JhcGhpY3NMYXllcihtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcik7CisgICAgcmVt
b3ZlR3JhcGhpY3NMYXllcihtX2NvbnRlbnRzQ29udGFpbm1lbnRMYXllcik7CisgICAgcmVtb3Zl
R3JhcGhpY3NMYXllcihtX2dyYXBoaWNzTGF5ZXIpOworICAgIHJlbW92ZUdyYXBoaWNzTGF5ZXIo
bV9mb3JlZ3JvdW5kTGF5ZXIpOworICAgIHJlbW92ZUdyYXBoaWNzTGF5ZXIobV9iYWNrZ3JvdW5k
TGF5ZXIpOworICAgIHJlbW92ZUdyYXBoaWNzTGF5ZXIobV9jaGlsZENvbnRhaW5tZW50TGF5ZXIp
OworICAgIHJlbW92ZUdyYXBoaWNzTGF5ZXIobV9tYXNrTGF5ZXIpOwogCi0gICAgbV9zY3JvbGxp
bmdMYXllciA9IG51bGxwdHI7Ci0gICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyID0gbnVsbHB0
cjsKKyAgICByZW1vdmVHcmFwaGljc0xheWVyKG1fc2Nyb2xsaW5nTGF5ZXIpOworICAgIHJlbW92
ZUdyYXBoaWNzTGF5ZXIobV9zY3JvbGxpbmdDb250ZW50c0xheWVyKTsKIH0KIAogdm9pZCBSZW5k
ZXJMYXllckJhY2tpbmc6OnVwZGF0ZU9wYWNpdHkoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQpA
QCAtOTQ1LDcgKzk1Miw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDbGlwcGlu
Z0xheWVycyhib29sIG5lZWRzQW5jZXN0b3JDbGlwLCBib29sIG5lZWRzCiAgICAgICAgIH0KICAg
ICB9IGVsc2UgaWYgKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIG1fYW5jZXN0
b3JDbGlwcGluZ0xheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgICAgIG1fYW5jZXN0b3JD
bGlwcGluZ0xheWVyID0gbnVsbHB0cjsKKyAgICAgICAgcmVtb3ZlR3JhcGhpY3NMYXllcihtX2Fu
Y2VzdG9yQ2xpcHBpbmdMYXllcik7CiAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVlOwogICAg
IH0KICAgICAKQEAgLTk1Nyw3ICs5NjQsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBk
YXRlQ2xpcHBpbmdMYXllcnMoYm9vbCBuZWVkc0FuY2VzdG9yQ2xpcCwgYm9vbCBuZWVkcwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChoYXNDbGlwcGluZ0xheWVyKCkpIHsKICAgICAgICAgbV9j
aGlsZENvbnRhaW5tZW50TGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAgbV9jaGls
ZENvbnRhaW5tZW50TGF5ZXIgPSBudWxscHRyOworICAgICAgICByZW1vdmVHcmFwaGljc0xheWVy
KG1fY2hpbGRDb250YWlubWVudExheWVyKTsKICAgICAgICAgbGF5ZXJzQ2hhbmdlZCA9IHRydWU7
CiAgICAgfQogICAgIApAQCAtMTA5NCw3ICsxMTAxLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tp
bmc6OnVwZGF0ZUZvcmVncm91bmRMYXllcihib29sIG5lZWRzRm9yZWdyb3VuZExheWVyKQogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2ZvcmVncm91bmRMYXllcikgewogICAgICAgICBtX2Zv
cmVncm91bmRMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwotICAgICAgICBtX2ZvcmVncm91bmRM
YXllciA9IG51bGxwdHI7CisgICAgICAgIHJlbW92ZUdyYXBoaWNzTGF5ZXIobV9mb3JlZ3JvdW5k
TGF5ZXIpOwogICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgIH0KIApAQCAtMTEzMywx
MiArMTE0MCwxMiBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQmFja2dyb3VuZExh
eWVyKGJvb2wgbmVlZHNCYWNrZ3JvdW5kTGF5ZXIpCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYg
KG1fYmFja2dyb3VuZExheWVyKSB7CiAgICAgICAgICAgICBtX2JhY2tncm91bmRMYXllci0+cmVt
b3ZlRnJvbVBhcmVudCgpOwotICAgICAgICAgICAgbV9iYWNrZ3JvdW5kTGF5ZXIgPSBudWxscHRy
OworICAgICAgICAgICAgcmVtb3ZlR3JhcGhpY3NMYXllcihtX2JhY2tncm91bmRMYXllcik7CiAg
ICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICht
X2NvbnRlbnRzQ29udGFpbm1lbnRMYXllcikgewogICAgICAgICAgICAgbV9jb250ZW50c0NvbnRh
aW5tZW50TGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAgICAgIG1fY29udGVudHND
b250YWlubWVudExheWVyID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJlbW92ZUdyYXBoaWNzTGF5
ZXIobV9jb250ZW50c0NvbnRhaW5tZW50TGF5ZXIpOwogICAgICAgICAgICAgbGF5ZXJDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QXBwbGllc1BhZ2VTY2Fs
ZSh0cnVlKTsKICAgICAgICAgfQpAQCAtMTE2NCw3ICsxMTcxLDcgQEAgYm9vbCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZU1hc2tMYXllcihib29sIG5lZWRzTWFza0xheWVyKQogICAgICAgICAg
ICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobV9tYXNr
TGF5ZXIpIHsKLSAgICAgICAgbV9tYXNrTGF5ZXIgPSBudWxscHRyOworICAgICAgICByZW1vdmVH
cmFwaGljc0xheWVyKG1fbWFza0xheWVyKTsKICAgICAgICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsK
ICAgICB9CiAKQEAgLTExOTMsOCArMTIwMCw4IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1
cGRhdGVTY3JvbGxpbmdMYXllcnMoYm9vbCBuZWVkc1Njcm9sbGluZ0xheWVycykKICAgICAgICAg
ICAgIGxheWVyQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG1fc2Ny
b2xsaW5nTGF5ZXIpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IG51bGxwdHI7Ci0gICAg
ICAgIG1fc2Nyb2xsaW5nQ29udGVudHNMYXllciA9IG51bGxwdHI7CisgICAgICAgIHJlbW92ZUdy
YXBoaWNzTGF5ZXIobV9zY3JvbGxpbmdMYXllcik7CisgICAgICAgIHJlbW92ZUdyYXBoaWNzTGF5
ZXIobV9zY3JvbGxpbmdDb250ZW50c0xheWVyKTsKICAgICAgICAgbGF5ZXJDaGFuZ2VkID0gdHJ1
ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuaAppbmRleCBjOWFiY2UzLi5hY2Y5NjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5oCkBAIC0yNjgsNiArMjY4LDggQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBncmFwaGljc0xheWVyVG9DU1NQcm9wZXJ0eShBbmltYXRl
ZFByb3BlcnR5SUQpOwogICAgIHN0YXRpYyBBbmltYXRlZFByb3BlcnR5SUQgY3NzVG9HcmFwaGlj
c0xheWVyUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAKKyAgICB2b2lkIHJlbW92ZUdyYXBoaWNz
TGF5ZXIoT3duUHRyPEdyYXBoaWNzTGF5ZXI+Jik7CisKICAgICBSZW5kZXJMYXllciogbV9vd25p
bmdMYXllcjsKIAogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBtX2FuY2VzdG9yQ2xpcHBpbmdM
YXllcjsgLy8gT25seSB1c2VkIGlmIHdlIGFyZSBjbGlwcGVkIGJ5IGFuIGFuY2VzdG9yIHdoaWNo
IGlzIG5vdCBhIHN0YWNraW5nIGNvbnRleHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGExMWFh
YjEuLmVmNWE5NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNyw2ICsxNyw3IEBAIHNldChX
ZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
IgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQVBJL0MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiIKICAgICAiJHtX
RUJLSVQyX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC03NSw2ICs3Niw4
IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0v
bG9hZGVyL2NhY2hlIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlIgogICAgICIke1dFQkNPUkVf
RElSfS9wYWdlL2FuaW1hdGlvbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmci
CisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1OaXguY21ha2UgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybU5peC5jbWFrZQppbmRleCBiZWVlM2UwLi4yYTRjMTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU5peC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybU5peC5jbWFrZQpAQCAtMzIsNiArMzIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQyX1NP
VVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS1NvdXBSZXF1ZXN0TWFuYWdlci5jcHAK
IAogICAgIFVJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcuY3BwCisgICAgVUlQcm9jZXNzL0FQSS9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5jcHAKIAogICAgIFVJUHJvY2Vzcy9jYWlyby9C
YWNraW5nU3RvcmVDYWlyby5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDR1NjZW5lLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWU1ZTBiCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2Vu
ZS5jcHAKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NHU2Nl
bmUuaCIKKworI2luY2x1ZGUgIldLQ0dBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBl
ckxheWVyLmg+CisKK1dLX0VYUE9SVCBXS0NHTGF5ZXIgV0tDR0dldFRvcG1vc3RMYXllckF0KFdL
Q0dTY2VuZSBzY2VuZSwgV0tQb2ludCBwb2ludCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBs
KHNjZW5lKS0+Z2V0VG9wbW9zdExheWVyQXQoV2ViQ29yZTo6RmxvYXRQb2ludChwb2ludC54LCBw
b2ludC55KSkpOworfQorCitXS19FWFBPUlQgV0tDR0xheWVyIFdLQ0dHZXRTY3JvbGxhYmxlQ29u
dGVudExheWVyQXQoV0tDR1NjZW5lIHNjZW5lLCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoc2NlbmUpLT5nZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQoV2ViQ29y
ZTo6RmxvYXRQb2ludChwb2ludC54LCBwb2ludC55KSkpOworfQorCitXS19FWFBPUlQgdWludDMy
X3QgV0tDR0dldExheWVySUQoV0tDR0xheWVyIGxheWVyKQoreworICAgIHJldHVybiB0b0ltcGwo
bGF5ZXIpLT5sYXllcklEKCk7Cit9CisKK1dLX0VYUE9SVCB2b2lkIFdLQ0dTY3JvbGxCeShXS0NH
TGF5ZXIgbGF5ZXIsIFdLU2l6ZSBvZmZzZXQpCit7CisgICAgdG9JbXBsKGxheWVyKS0+c2Nyb2xs
QnkoV2ViQ29yZTo6SW50U2l6ZShvZmZzZXQud2lkdGgsIG9mZnNldC5oZWlnaHQpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0NHU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS0NHU2NlbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
NzQzMTZkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ0dT
Y2VuZV9oCisjZGVmaW5lIFdLQ0dTY2VuZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0
cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVDR1NjZW5lKiBXS0NHU2NlbmU7Cit0eXBlZGVmIHN0cnVjdCBPcGFx
dWVDR0xheWVyKiBXS0NHTGF5ZXI7CisKK1dLX0VYUE9SVCBXS0NHTGF5ZXIgV0tDR0dldFRvcG1v
c3RMYXllckF0KFdLQ0dTY2VuZSwgV0tQb2ludCk7CitXS19FWFBPUlQgV0tDR0xheWVyIFdLQ0dH
ZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQoV0tDR1NjZW5lLCBXS1BvaW50IHBvaW50KTsKK1dL
X0VYUE9SVCB1aW50MzJfdCBXS0NHR2V0TGF5ZXJJRChXS0NHTGF5ZXIpOworV0tfRVhQT1JUIHZv
aWQgV0tDR1Njcm9sbEJ5KFdLQ0dMYXllciwgV0tTaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKworI2VuZGlmIC8vIFdLQ0dTY2VuZV9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcuY3BwCmluZGV4IDZhZjdmYjAu
LmUzNjIwMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbml4L05J
WFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXS0NHQVBJ
Q2FzdC5oIgogCiAvLyBJbmNsdWRlZCBoZXJlIHRvIGJlIHZpc2libGUgdG8gZm9yd2FyZGluZyBo
ZWFkZXJzIGdlbmVyYXRpb24gc2NyaXB0LgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYktp
dEF2YWlsYWJpbGl0eS5oPgpAQCAtMjIxLDMgKzIyMiw4IEBAIGJvb2wgTklYVmlld0lzU3VzcGVu
ZGVkKE5JWFZpZXcgdmlldykKIHsKICAgICByZXR1cm4gdG9JbXBsKHZpZXcpLT5pc1N1c3BlbmRl
ZCgpOwogfQorCitXS0NHU2NlbmUgTklYVmlld0dldFNjZW5lKE5JWFZpZXcgdmlldykKK3sKKyAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKHZpZXcpLT5nZXRTY2VuZSgpKTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvbml4L05JWFZpZXcuaAppbmRleCA5NWY2YmRlLi43OGNkMjI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9uaXgvTklYVmlldy5oCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJOSVhFdmVudHMuaCIKICNpbmNsdWRlIDxXZWJLaXQyL1dLQ29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tDR1NjZW5lLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XS1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CiAKQEAgLTEzOSw2
ICsxNDAsOCBAQCBXS19FWFBPUlQgdm9pZCBOSVhWaWV3U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKE5JWFZpZXcgdmlldyk7CiBXS19FWFBPUlQgdm9pZCBOSVhWaWV3UmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoTklYVmlldyB2aWV3KTsKIFdLX0VYUE9SVCBi
b29sIE5JWFZpZXdJc1N1c3BlbmRlZChOSVhWaWV3IHZpZXcpOwogCitXS19FWFBPUlQgV0tDR1Nj
ZW5lIE5JWFZpZXdHZXRTY2VuZShOSVhWaWV3IHZpZXcpOworCiAjaWZkZWYgX19jcGx1c3BsdXMK
IH0KICNlbmRpZiAvLyBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGQwOWMxODUuLjYzODE2N2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eShEcmF3aW5n
QXJlYVByb3h5KiBkcmF3aW5nQXJlYVByb3h5KQogICAgIDogbV9kcmF3aW5nQXJlYVByb3h5KGRy
YXdpbmdBcmVhUHJveHkpCi0gICAgLCBtX3NjZW5lKGFkb3B0UmVmKG5ldyBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUodGhpcykpKQorICAgICwgbV9zY2VuZShhZG9wdFJlZihuZXcgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKHRoaXMsIHRoaXMpKSkKIHsKIH0KIApAQCAtMjI0LDYgKzIyNCw5IEBA
IHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnN5bmNDYW52YXMoQ29vcmRpbmF0
ZWRMYXllcklEIGlkLCB1aW50MzJfdCBmCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpzeW5jQ2FudmFzLCBtX3NjZW5lLmdldCgpLCBpZCwgZnJvbnRC
dWZmZXIpKTsKIH0KIAorCit2b2lkIHNjcm9sbGluZ0xheWVyV2FzQWRkZWQodWludDMyX3QpOwor
dm9pZCBzY3JvbGxpbmdMYXllcldhc1JlbW92ZWQodWludDMyX3QpOwogdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6ZGVzdHJveUNhbnZhcyhDb29yZGluYXRlZExheWVySUQgaWQp
CiB7CiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpk
ZXN0cm95Q2FudmFzLCBtX3NjZW5lLmdldCgpLCBpZCkpOwpAQCAtMjQ1LDUgKzI0OCwyMCBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yLCBtX3NjZW5lLmdldCgpLCBjb2xvcikpOwog
fQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzY3JvbGxpbmdMYXllcldh
c0FkZGVkKHVpbnQzMl90IGxheWVySWQpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzY3JvbGxpbmdMYXllcldhc0FkZGVkLCBtX3NjZW5lLmdl
dCgpLCBsYXllcklkKSk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OnNjcm9sbGluZ0xheWVyV2FzUmVtb3ZlZCh1aW50MzJfdCBsYXllcklkKQoreworICAgIGRpc3Bh
dGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2Nyb2xsaW5nTGF5ZXJX
YXNSZW1vdmVkLCBtX3NjZW5lLmdldCgpLCBsYXllcklkKSk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29u
c3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5w
cm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6U2Nyb2xs
TGF5ZXJCeShsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFn
ZUlEKCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXgg
MjRiMzQ3Ny4uNWEwNTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIldlYkNvb3JkaW5hdGVk
U3VyZmFjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyLmg+CkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIFN1cmZhY2VVcGRhdGVJbmZvOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkgOiBw
dWJsaWMgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50IHsKK2NsYXNzIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZUNsaWVudCwgcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkU2Nyb2xsQ2xp
ZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC0xMDEsNiAr
MTAyLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwog
CisgICAgdm9pZCBzY3JvbGxpbmdMYXllcldhc0FkZGVkKHVpbnQzMl90KTsKKyAgICB2b2lkIHNj
cm9sbGluZ0xheWVyV2FzUmVtb3ZlZCh1aW50MzJfdCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Ny
b2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZz
ZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlv
bjx2b2lkKCk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KaW5kZXggMjFkYzI2My4uN2ZlODlmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkubWVzc2FnZXMuaW4KQEAgLTQ1LDYgKzQ1LDkgQEAgbWVzc2FnZXMgLT4gQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldExheWVyQW5p
bWF0aW9ucyh1aW50MzJfdCBpZCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckFuaW1hdGlvbnMgYW5p
bWF0aW9ucykKICAgICBTZXRBbmltYXRpb25zTG9ja2VkKGJvb2wgbG9ja2VkKQogCisgICAgU2Ny
b2xsaW5nTGF5ZXJXYXNBZGRlZCh1aW50MzJfdCBsYXllcklkKQorICAgIFNjcm9sbGluZ0xheWVy
V2FzUmVtb3ZlZCh1aW50MzJfdCBsYXllcklkKQorCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogICAgIFJlcXVlc3RBbmltYXRpb25GcmFtZSgpCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NH
QVBJQ2FzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4Nzk1ZTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XS0NHQVBJQ2FzdC5oCkBAIC0wLDAgKzEsMzMgQEAKKyNpZm5kZWYgV0tDR0FQSUNhc3Rf
SAorI2RlZmluZSBXS0NHQVBJQ2FzdF9ICisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ0dTY2VuZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTsKK2NsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CitpbmxpbmUgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiB0b0ltcGwoV0tDR1Nj
ZW5lIHNjZW5lKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSo+KHNjZW5lKTsKK30KKworaW5saW5lIFdLQ0dTY2VuZSB0b0FQ
SShXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5lKQoreworICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFdLQ0dTY2VuZT4oc2NlbmUpOworfQorCitpbmxpbmUgV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyKiB0b0ltcGwoV0tDR0xheWVyIGxheWVyKQoreworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcio+KGxheWVy
KTsKK30KKworaW5saW5lIFdLQ0dMYXllciB0b0FQSShXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ0dMYXllcj4obGF5
ZXIpOworfQorCisjZW5kaWYgLy8gV0tDR0FQSUNBU1RfSApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL25peC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
bml4L1dlYlZpZXcuaAppbmRleCBlYzk0YzYzLi42NGE0MTM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvbml4L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvbml4L1dlYlZpZXcuaApAQCAtOTAsNiArOTAsOCBAQCBwdWJsaWM6CiAKICAgICBXS1Bh
Z2VSZWYgcGFnZVJlZigpOwogCisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KiBnZXRTY2VuZSgpIHsgcmV0dXJuIGNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgpOyB9CisKICAg
ICB2b2lkIHNlbmRNb3VzZUV2ZW50KGNvbnN0IE5JWE1vdXNlRXZlbnQmKTsKICAgICB2b2lkIHNl
bmRXaGVlbEV2ZW50KGNvbnN0IE5JWFdoZWVsRXZlbnQmKTsKICAgICB2b2lkIHNlbmRLZXlFdmVu
dChjb25zdCBOSVhLZXlFdmVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYjI3OTIzZS4uMWJjNDE4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCkBAIC05NCw2ICs5NCw3IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UqIHdlYlBhZ2UpCiAgICAgLCBtX2xheWVy
Rmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQogICAgICwgbV9mb3JjZVJlcGFpbnRBc3luY0Nh
bGxiYWNrSUQoMCkKICAgICAsIG1fYW5pbWF0aW9uc0xvY2tlZChmYWxzZSkKKyAgICAsIG1fc2Ny
b2xsQ2xpZW50KDApCiB7CiAgICAgLy8gQ3JlYXRlIGEgcm9vdCBsYXllci4KICAgICBtX3Jvb3RM
YXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSh0aGlzLCB0aGlzKTsKQEAgLTg1Miw1ICs4NTMs
MjEgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldEJhY2tncm91bmRDb2xvcihj
b25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9y
KSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxpbmdMYXllcldh
c0FkZGVkKHVpbnQzMl90IGxheWVySWQpCit7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6U2Nyb2xsaW5nTGF5ZXJXYXNBZGRlZChs
YXllcklkKSk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxpbmdM
YXllcldhc1JlbW92ZWQodWludDMyX3QgbGF5ZXJJZCkKK3sKKyAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpTY3JvbGxpbmdMYXllcldh
c1JlbW92ZWQobGF5ZXJJZCkpOworfQorCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBv
ZmZzZXQpCit7CisgICAgaWYgKG1fc2Nyb2xsQ2xpZW50KQorICAgICAgICBtX3Njcm9sbENsaWVu
dC0+c2Nyb2xsTGF5ZXJCeShsYXllcklELCBvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDZk
ZmRkNTIuLjdmNTk0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0yNCw3ICsyNCw5IEBACiAKICNpbmNsdWRlICJM
YXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvQ29vcmRpbmF0ZWRTY3JvbGxpbmdDb29yZGluYXRlZFByb3h5Lmg+CiAjaW5jbHVk
ZSAiVGltZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb3JkaW5hdGVkSW1hZ2VCYWNraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc0xheWVyQ2xpZW50Lmg+CkBAIC01Myw2ICs1NSw3IEBAIGNsYXNzIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2xpCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgICwgV2ViQ3VzdG9tRmlsdGVyUHJv
Z3JhbVByb3h5Q2xpZW50CiAjZW5kaWYKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpDb29yZGluYXRl
ZFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHkKIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+IGNyZWF0ZShXZWJQYWdlKik7CkBAIC0xMTgs
OCArMTIxLDE0IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxpbmdMYXllcldhc0FkZGVkKHVpbnQzMl90KTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsaW5nTGF5ZXJXYXNSZW1vdmVkKHVpbnQzMl90KTsKKwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZs
YWdzKTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFdlYkNvcmU6OkNvb3JkaW5hdGVkU2Ny
b2xsQ2xpZW50KiBzY3JvbGxDbGllbnQpIHsgbV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7
IH0KKyAgICB2b2lkIHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKQEAgLTIxMSw2ICsyMjAsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7CiAgICAgdWludDY0X3Qg
bV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQ7CiAgICAgYm9vbCBtX2FuaW1hdGlvbnNMb2Nr
ZWQ7CisgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTY3JvbGxDbGllbnQqIG1fc2Nyb2xsQ2xpZW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4K
aW5kZXggNjY3MWIzMi4uYWE5ZjBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAt
MjcsNSArMjcsNiBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3QgTGVnYWN5
UmVjZWl2ZXIgewogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICBBbmlt
YXRpb25GcmFtZVJlYWR5KCkKICNlbmRpZgorICAgIFNjcm9sbExheWVyQnkodWludDMyX3QgbGF5
ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZzZXQpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA1Y2RkM2Y0Li5mY2RjZTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0xODQsNyArMTg0LDkgQEAKICNlbmRpZgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorI2luY2x1ZGUgIkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgiCiAjZW5kaWYKIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKQEAgLTM4OSw2ICszOTEsMTMgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAjaWZuZGVmIE5E
RUJVRwogICAgIHdlYlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCisKKyNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KiBsYXll
clRyZWVIb3N0ID0gc3RhdGljX2Nhc3Q8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Kj4obV9kcmF3
aW5nQXJlYS0+bGF5ZXJUcmVlSG9zdCgpKTsKKyAgICBTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc3RhdGljX2Nhc3Q8U2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKj4obV9wYWdlLT5zY3JvbGxpbmdDb29y
ZGluYXRvcigpKTsKKyAgICBsYXllclRyZWVIb3N0LT5zZXRTY3JvbGxDbGllbnQoc2Nyb2xsaW5n
Q29vcmRpbmF0b3IpOworICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zZXRDbGllbnQobGF5ZXJU
cmVlSG9zdCk7CisjZW5kaWYKIH0KIAogV2ViUGFnZTo6fldlYlBhZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9uaXgvV2ViUHJvY2Vzc01haW5OaXguY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9uaXgvV2ViUHJvY2Vzc01haW5OaXguY3BwCmluZGV4IGZj
MDBiYTcuLjI2MjRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvbml4
L1dlYlByb2Nlc3NNYWluTml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL25p
eC9XZWJQcm9jZXNzTWFpbk5peC5jcHAKQEAgLTc3LDYgKzc3LDggQEAgV0tfRVhQT1JUIGludCBX
ZWJQcm9jZXNzTWFpbk5peChpbnQgYXJnYywgY2hhciogYXJndltdKQogICAgIENoaWxkUHJvY2Vz
c0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMuY29u
bmVjdGlvbklkZW50aWZpZXIgPSBzb2NrZXQ7CiAKKy8vICAgIHNsZWVwKDIwKTsKKwogICAgIFdl
YlByb2Nlc3M6OnNoYXJlZCgpLmluaXRpYWxpemUocGFyYW1ldGVycyk7CiAKICAgICAvLyBTZXQg
U09VUCBjYWNoZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL25peC9tYWluLmNwcCBi
L1Rvb2xzL01pbmlCcm93c2VyL25peC9tYWluLmNwcAppbmRleCA2Y2FiZjQwLi42MmExNmVlIDEw
MDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9uaXgvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWlu
aUJyb3dzZXIvbml4L21haW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiVG91Y2hN
b2NrZXIuaCIKICNpbmNsdWRlICJYbGliRXZlbnRVdGlscy5oIgogI2luY2x1ZGUgPEdML2dsLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NHU2NlbmUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJl
ZmVyZW5jZXMuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZy5oPgpAQCAtMTU1LDYgKzE1Niw5IEBAIHByaXZhdGU6
CiAgICAgZmxvYXQgbV92aWV3cG9ydEluaXRTY2FsZTsKICAgICBib29sIG1fdmlld3BvcnRVc2Vy
U2NhbGFibGU7CiAKKyAgICBXS0NHTGF5ZXIgbV9zY3JvbGxpbmdMYXllcjsKKyAgICBXS1BvaW50
IG1fc2Nyb2xsUG9pbnQ7CisKICAgICBmcmllbmQgZ2Jvb2xlYW4gY2FsbFVwZGF0ZURpc3BsYXko
Z3BvaW50ZXIpOwogfTsKIApAQCAtMTgxLDYgKzE4NSw3IEBAIE1pbmlCcm93c2VyOjpNaW5pQnJv
d3NlcihHTWFpbkxvb3AqIG1haW5Mb29wLCBNb2RlIG1vZGUsIGludCB3aWR0aCwgaW50IGhlaWdo
dCwKICAgICAsIG1fdmlld3BvcnRNYXhTY2FsZSg1KQogICAgICwgbV92aWV3cG9ydFVzZXJTY2Fs
YWJsZSh0cnVlKQogICAgICwgbV92aWV3cG9ydEluaXRTY2FsZSgxKQorICAgICwgbV9zY3JvbGxp
bmdMYXllcigwKQogewogICAgIGdfbWFpbl9sb29wX3JlZihtX21haW5Mb29wKTsKIApAQCAtNDM3
LDYgKzQ0MiwxNyBAQCB2b2lkIE1pbmlCcm93c2VyOjpoYW5kbGVCdXR0b25QcmVzc0V2ZW50KGNv
bnN0IFhCdXR0b25QcmVzc2VkRXZlbnQmIGV2ZW50KQogICAgICAgICByZXR1cm47CiAgICAgfQog
CisgICAgbV9zY3JvbGxQb2ludCA9IFdLUG9pbnRNYWtlKGV2ZW50LngsIGV2ZW50LnkpOworICAg
IFdLQ0dTY2VuZSBzY2VuZSA9IE5JWFZpZXdHZXRTY2VuZSh2aWV3KTsKKyAgICBXS0NHTGF5ZXIg
dG9wbW9zdExheWVyID0gV0tDR0dldFRvcG1vc3RMYXllckF0KHNjZW5lLCBtX3Njcm9sbFBvaW50
KTsKKyAgICBtX3Njcm9sbGluZ0xheWVyID0gV0tDR0dldFNjcm9sbGFibGVDb250ZW50TGF5ZXJB
dChzY2VuZSwgbV9zY3JvbGxQb2ludCk7CisKKyAgICBwcmludGYoInRvcG1vc3Q6ICV1XG4iLCB0
b3Btb3N0TGF5ZXIgPyBXS0NHR2V0TGF5ZXJJRCh0b3Btb3N0TGF5ZXIpIDogMCk7CisgICAgcHJp
bnRmKCJzY3JvbGxhYmxlOiAldVxuXG4iLCBtX3Njcm9sbGluZ0xheWVyID8gV0tDR0dldExheWVy
SUQobV9zY3JvbGxpbmdMYXllcikgOiAwKTsKKworICAgIGlmIChtX3Njcm9sbGluZ0xheWVyKQor
ICAgICAgICByZXR1cm47CisKICAgICB1cGRhdGVDbGlja0NvdW50KGV2ZW50KTsKIAogICAgIE5J
WE1vdXNlRXZlbnQgbml4RXZlbnQgPSBjb252ZXJ0WEJ1dHRvbkV2ZW50VG9OaXhCdXR0b25FdmVu
dCh2aWV3LCBldmVudCwga05JWElucHV0RXZlbnRUeXBlTW91c2VEb3duLCBtX2NsaWNrQ291bnQp
OwpAQCAtNDUyLDYgKzQ2OCwxMSBAQCB2b2lkIE1pbmlCcm93c2VyOjpoYW5kbGVCdXR0b25SZWxl
YXNlRXZlbnQoY29uc3QgWEJ1dHRvblJlbGVhc2VkRXZlbnQmIGV2ZW50KQogICAgIGlmIChldmVu
dC5idXR0b24gPT0gNCB8fCBldmVudC5idXR0b24gPT0gNSkKICAgICAgICAgcmV0dXJuOwogCisg
ICAgaWYgKG1fc2Nyb2xsaW5nTGF5ZXIpIHsKKyAgICAgICAgbV9zY3JvbGxpbmdMYXllciA9IDA7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBOSVhNb3VzZUV2ZW50IG5peEV2ZW50ID0g
Y29udmVydFhCdXR0b25FdmVudFRvTml4QnV0dG9uRXZlbnQobV92aWV3LCBldmVudCwga05JWElu
cHV0RXZlbnRUeXBlTW91c2VVcCwgMCk7CiAgICAgaWYgKG1fdG91Y2hNb2NrZXIgJiYgbV90b3Vj
aE1vY2tlci0+aGFuZGxlTW91c2VSZWxlYXNlKG5peEV2ZW50KSkgewogICAgICAgICBzY2hlZHVs
ZVVwZGF0ZURpc3BsYXkoKTsKQEAgLTQ2OCw2ICs0ODksMTQgQEAgdm9pZCBNaW5pQnJvd3Nlcjo6
aGFuZGxlQnV0dG9uUmVsZWFzZUV2ZW50KGNvbnN0IFhCdXR0b25SZWxlYXNlZEV2ZW50JiBldmVu
dCkKIAogdm9pZCBNaW5pQnJvd3Nlcjo6aGFuZGxlUG9pbnRlck1vdmVFdmVudChjb25zdCBYUG9p
bnRlck1vdmVkRXZlbnQmIGV2ZW50KQogeworICAgIGlmIChtX3Njcm9sbGluZ0xheWVyKSB7Cisg
ICAgICAgIFdLQ0dTY3JvbGxCeShtX3Njcm9sbGluZ0xheWVyLCBXS1NpemVNYWtlKG1fc2Nyb2xs
UG9pbnQueCAtIGV2ZW50LngsIG1fc2Nyb2xsUG9pbnQueSAtIGV2ZW50LnkpKTsKKyAgICAgICAg
bV9zY3JvbGxQb2ludC54ID0gZXZlbnQueDsKKyAgICAgICAgbV9zY3JvbGxQb2ludC55ID0gZXZl
bnQueTsKKyAgICAgICAgc2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBOSVhNb3VzZUV2ZW50IG5peEV2ZW50OwogICAgIG5peEV2ZW50LnR5cGUg
PSBrTklYSW5wdXRFdmVudFR5cGVNb3VzZU1vdmU7CiAgICAgbml4RXZlbnQuYnV0dG9uID0ga1dL
RXZlbnRNb3VzZUJ1dHRvbk5vQnV0dG9uOwotLSAKMS43LjkuNQoK
</data>
<flag name="review"
          id="209642"
          type_id="1"
          status="-"
          setter="luiz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189438</attachid>
            <date>2013-02-20 18:27:58 -0800</date>
            <delta_ts>2013-02-27 23:45:49 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>0001-UI-side-scroll-API-for-Coordinated-Graphics.patch</filename>
            <type>text/plain</type>
            <size>42441</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA3YTdlNTZhNTA3ZTg3MzUzMjJjNDEzNjExNWEzZGQ4MWRlMDMyZGUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCAyMCBGZWIgMjAxMyAxODoxOTo1NSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IFVJIHNpZGUgc2Nyb2xsIEFQSSBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCgotLS0KIC4uLi9j
b29yZGluYXRlZGdyYXBoaWNzL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50LmggIHwgICAxNSArKysr
KwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAg
ICA5ICsrKwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAg
ICAgfCAgICAxICsKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3Jt
LmNwcCAgIHwgICAxNCArKysrLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm0uaCAgICAgfCAgICA0ICsrCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggICB8ICAgIDcgKysrCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAgICAgICAgICB8ICAgNDkgKysrKysrKysrKysrKysrKwogLi4uL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCAgfCAgIDI0ICsrKysr
KysrCiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCAgICAgICB8
ICAgMjIgKysrKysrKwogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaCAgfCAgICA4ICsrKwogLi4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAgICAgICAgfCAgIDE4ICsrKysrLQogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaCAgfCAgICA4ICsrLQogLi4uL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZExheWVySW5mby5oICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybU5peC5jbWFrZSAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogLi4uL0FQSS9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5jcHAgICAgICAgICAgfCAgIDU0ICsrKysrKysr
KysrKysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHU2Nl
bmUuaCAgfCAgIDQ5ICsrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbml4L05JWFZpZXcuY3BwICAgICAgIHwgICAgNiArKwogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9uaXgvTklYVmlldy5oICAgICAgICAgfCAgICAzICsKIC4uLi9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHAgICAgICAgICAgICAgIHwgICAgNyArKy0KIC4uLi9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oICAgICAgICAgICAgICAgIHwgICAgNSArLQogLi4uL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dBUElDYXN0LmggICAgfCAgIDYwICsrKysr
KysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvbml4L1dlYlZpZXcuaCAg
ICAgICAgICAgICB8ICAgIDIgKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgICAg
ICAgICAgICAgICAgICAgfCAgIDMxICsrKysrKy0tLS0KIC4uLi9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAgNSArLQogLi4uL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgICAxICsKIFRvb2xzL01pbmlCcm93
c2VyL25peC9tYWluLmNwcCAgICAgICAgICAgICAgICAgICAgIHwgICAyMyArKysrKysrKwogMjcg
ZmlsZXMgY2hhbmdlZCwgNDE0IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHU2NlbmUuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDR0FQSUNhc3QuaAoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvQ29v
cmRpbmF0ZWRTY3JvbGxDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
b3JkaW5hdGVkZ3JhcGhpY3MvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzRjNTljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRlZFNj
cm9sbENsaWVudC5oCkBAIC0wLDAgKzEsMTUgQEAKKyNpZm5kZWYgQ29vcmRpbmF0ZWRTY3JvbGxD
bGllbnRfaAorI2RlZmluZSBDb29yZGluYXRlZFNjcm9sbENsaWVudF9oCisKKyNpbmNsdWRlICJG
bG9hdFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRT
Y3JvbGxDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxMYXllckJ5KHVp
bnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkgPSAwOworfTsKKworfQorCisj
ZW5kaWYgLy8gQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwCmluZGV4IGExYmYzYmQuLjEwY2E1NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRH
cmFwaGljcy5jcHAKQEAgLTQ3LDYgKzQ3LDE1IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyCiAg
ICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRGaXhlZFRvVmlld3BvcnQo
ZW5hYmxlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqIHNj
cm9sbGFibGVBcmVhLCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQoreworICAgIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihn
cmFwaGljc0xheWVyKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBs
YXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNz
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4N2MyYzcyLi43NTA3YzBmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIGV4cGxp
Y2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyhQYWdlKik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xh
eWVyKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJE
aWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqLCBHcmFwaGljc0xheWVyKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCmluZGV4IDA0MzYzY2MuLmRlOTdm
YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXJUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCkBAIC05Niw5ICs5NiwxMCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJUcmFuc2Zvcm06OmNvbWJpbmVUcmFuc2Zvcm1zKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBwYXJlbgogewogICAgIGZsb2F0IG9yaWdpblggPSBtX2FuY2hvclBvaW50LngoKSAq
IG1fc2l6ZS53aWR0aCgpOwogICAgIGZsb2F0IG9yaWdpblkgPSBtX2FuY2hvclBvaW50LnkoKSAq
IG1fc2l6ZS5oZWlnaHQoKTsKKwogICAgIG1fY29tYmluZWQgPQogICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeChwYXJlbnRUcmFuc2Zvcm0pCi0gICAgICAgICAgICAudHJhbnNsYXRlM2Qob3Jp
Z2luWCArIG1fcG9zaXRpb24ueCgpLCBvcmlnaW5ZICsgbV9wb3NpdGlvbi55KCksIG1fYW5jaG9y
UG9pbnQueigpICkKKyAgICAgICAgICAgIC50cmFuc2xhdGUzZChvcmlnaW5YICsgbV9wb3NpdGlv
bi54KCkgLSBtX3Njcm9sbFBvc2l0aW9uLndpZHRoKCksIG9yaWdpblkgKyBtX3Bvc2l0aW9uLnko
KSAtIG1fc2Nyb2xsUG9zaXRpb24uaGVpZ2h0KCksIG1fYW5jaG9yUG9pbnQueigpICkKICAgICAg
ICAgICAgIC5tdWx0aXBseShtX2xvY2FsKTsKIAogICAgIC8vIFRoZSBjaGlsZHJlbiB0cmFuc2Zv
cm0gd2lsbCB0YWtlIGl0IGZyb20gaGVyZSwgaWYgaXQgZ2V0cyB1c2VkLgpAQCAtMTA5LDYgKzEx
MCwxNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm06OmNvbWJpbmVUcmFuc2Zvcm1zKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbgogICAgIG1fY2hpbGRyZW5EaXJ0eSA9IHRy
dWU7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRyYW5zZm9ybTo6dXBkYXRlU2Nyb2xsUG9zaXRp
b24oY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKK3sKKyAgICBtX3Njcm9sbFBvc2l0aW9uICs9IGRl
bHRhOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUcmFuc2Zvcm06OnVwZGF0ZUNvbW1pdGVkU2Ny
b2xsUG9zaXRpb24oY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKK3sKKyAgICBtX3Njcm9sbFBvc2l0
aW9uIC09IGRlbHRhOworfQorCisKIHZvaWQgR3JhcGhpY3NMYXllclRyYW5zZm9ybTo6Y29tYmlu
ZVRyYW5zZm9ybXNGb3JDaGlsZHJlbigpCiB7CiAgICAgQVNTRVJUKCFtX2RpcnR5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFu
c2Zvcm0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJU
cmFuc2Zvcm0uaAppbmRleCA1ZGEyNWI0Li44ODk2M2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyVHJhbnNmb3JtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oCkBA
IC0zOSw2ICszOSw5IEBAIHB1YmxpYzoKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5l
ZCgpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkRm9yQ2hpbGRyZW4oKTsKIAor
ICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRTaXplJiBkZWx0YSk7Cisg
ICAgdm9pZCB1cGRhdGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZGVs
dGEpOworCiAgICAgdm9pZCBjb21iaW5lVHJhbnNmb3Jtcyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcGFyZW50VHJhbnNmb3JtKTsKIAogcHJpdmF0ZToKQEAgLTQ3LDYgKzUwLDcgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFBvaW50M0QgbV9hbmNob3JQb2ludDsKICAgICBGbG9hdFBvaW50IG1f
cG9zaXRpb247CiAgICAgRmxvYXRTaXplIG1fc2l6ZTsKKyAgICBGbG9hdFNpemUgbV9zY3JvbGxQ
b3NpdGlvbjsKICAgICBib29sIG1fZmxhdHRlbmluZzsKICAgICBib29sIG1fZGlydHk7CiAgICAg
Ym9vbCBtX2NoaWxkcmVuRGlydHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCmluZGV4IDY5NGI1YTMuLmZkYzRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCkBAIC0yOCwxMSArMjgsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBDb29yZGluYXRlZFNjcm9sbENsaWVudDsKKwogY2xhc3MgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIgOiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwogICAg
IHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CiAKKyAgICB2b2lkIHNldFNj
cm9sbENsaWVudChDb29yZGluYXRlZFNjcm9sbENsaWVudCogY2xpZW50KSB7IG1fbGF5ZXItPnNl
dFNjcm9sbENsaWVudChjbGllbnQpOyB9CisgICAgdm9pZCBzZXRMYXllcklEKHVpbnQzMl90IGlk
KSB7IG1fbGF5ZXItPnNldExheWVySUQoaWQpOyB9CisgICAgdm9pZCBzZXRDb21taXRlZFNjcm9s
bFBvc2l0aW9uKGNvbnN0IEludFNpemUmIGRlbHRhKSB7IGxheWVyKCktPnNldENvbW1pdGVkU2Ny
b2xsUG9zaXRpb24oZGVsdGEpOyB9CisgICAgdm9pZCBzZXRJc1Njcm9sbGFibGVMYXllcihib29s
IGlzU2Nyb2xsYWJsZUxheWVyKSB7IGxheWVyKCktPnNldElzU2Nyb2xsYWJsZUxheWVyKGlzU2Ny
b2xsYWJsZUxheWVyKTsgfQorCiAgICAgLy8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c05lZWRzRGlzcGxheSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBl
ZGZlMzIwLi5hNTg0NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjAsNiAr
MjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXll
ci5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaCIKKwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjE0LDUg
KzYxNiw1MiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0
YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgbV9jdXJyZW50VHJhbnNmb3Jt
LnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIFNl
YXJjaENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6Omhp
dFRlc3RTZWFyY2goY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFNlYXJjaENvbmRpdGlvbiBjb25k
aXRpb24pCit7CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiByZXN1bHQgPSAwOworICAgIGZvciAo
aW50IGkgPSBtX2NoaWxkcmVuLnNpemUoKSAtIDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkpCisg
ICAgICAgIHJlc3VsdCA9IG1fY2hpbGRyZW5baV0tPmhpdFRlc3RTZWFyY2gocG9pbnQsIGNvbmRp
dGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogY29uZGl0aW9uKHRoaXMsIHBv
aW50KSA/IHRoaXMgOiAwOworfQorCitib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJs
ZUxheWVyU2VhcmNoQ29uZGl0aW9uKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmICghbGF5ZXItPmlzU2Nyb2xsYWJsZUxheWVyKCkg
fHwgIWxheWVyLT5tX3BhcmVudCB8fCAhbGF5ZXItPm1fcGFyZW50LT5tX3BhcmVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBwYXJlbnRMYXllciA9
IGxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQ7CisgICAgcmV0dXJuIHBhcmVudExheWVyLT5tX2N1
cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBSZWN0KHBhcmVudExheWVyLT5tX3N0YXRlLmNv
bnRlbnRzUmVjdCkuY29udGFpbnMocG9pbnQpOworfQorCitUZXh0dXJlTWFwcGVyTGF5ZXIqIFRl
eHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KGNvbnN0IEZsb2F0
UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0U2VhcmNoKHBvaW50LCAmVGV4dHVy
ZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOworfQorCitib29s
IFRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaENvbmRpdGlvbihUZXh0dXJlTWFwcGVy
TGF5ZXIqIGxheWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gbGF5
ZXItPm1fc3RhdGUudmlzaWJsZSAmJiBsYXllci0+bV9zdGF0ZS5jb250ZW50c1Zpc2libGUgJiYg
bGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QobGF5ZXItPm1fc3Rh
dGUuY29udGVudHNSZWN0KS5jb250YWlucyhwb2ludCk7Cit9CisKK1RleHR1cmVNYXBwZXJMYXll
ciogVGV4dHVyZU1hcHBlckxheWVyOjpnZXRUb3Btb3N0TGF5ZXJBdChjb25zdCBGbG9hdFBvaW50
JiBwb2ludCkKK3sKKyAgICByZXR1cm4gaGl0VGVzdFNlYXJjaChwb2ludCwgJlRleHR1cmVNYXBw
ZXJMYXllcjo6aGl0VGVzdFNlYXJjaENvbmRpdGlvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKCFtX3Nj
cm9sbENsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnVw
ZGF0ZVNjcm9sbFBvc2l0aW9uKEZsb2F0U2l6ZShvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdo
dCgpKSk7CisgICAgbV9zY3JvbGxDbGllbnQtPnNjcm9sbExheWVyQnkobV9sYXllcklELCBvZmZz
ZXQpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0Q29tbWl0ZWRTY3JvbGxQb3Np
dGlvbihjb25zdCBJbnRTaXplJiBkZWx0YSkKK3sKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0udXBk
YXRlQ29tbWl0ZWRTY3JvbGxQb3NpdGlvbihGbG9hdFNpemUoZGVsdGEud2lkdGgoKSwgZGVsdGEu
aGVpZ2h0KCkpKTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXgg
ZjZiNzJhMy4uYmY4Y2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzEsNiArMzEs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIENvb3JkaW5hdGVkU2Nyb2xsQ2xp
ZW50OwogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uczsKIGNsYXNzIFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyOwogCkBAIC01MSwxMCArNTIsMjYgQEAgcHVibGljOgogI2VuZGlmCiAg
ICAgICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCiAgICAgICAgICwgbV9maXhlZFRvVmlld3BvcnQo
ZmFsc2UpCisgICAgICAgICwgbV9sYXllcklEKDApCisgICAgICAgICwgbV9zY3JvbGxDbGllbnQo
MCkKKyAgICAgICAgLCBtX2lzU2Nyb2xsYWJsZUxheWVyKGZhbHNlKQogICAgIHsgfQogCiAgICAg
dmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVyKCk7CiAKKyAgICB2b2lkIHNldExheWVySUQodWlu
dDMyX3QgaWQpIHsgbV9sYXllcklEID0gaWQ7IH0KKyAgICB1aW50MzJfdCBsYXllcklEKCkgeyBy
ZXR1cm4gbV9sYXllcklEOyB9CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFNjcm9sbGFi
bGVDb250ZW50TGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb3MpOworICAgIFRleHR1cmVNYXBw
ZXJMYXllciogZ2V0VG9wbW9zdExheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9zKTsKKworICAg
IHZvaWQgc2V0U2Nyb2xsQ2xpZW50KENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50KiBzY3JvbGxDbGll
bnQpIHsgbV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lkIHNjcm9sbEJ5
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworICAgIHZvaWQgc2V0Q29tbWl0ZWRTY3JvbGxQ
b3NpdGlvbihjb25zdCBJbnRTaXplJiBkZWx0YSk7CisgICAgdm9pZCBzZXRJc1Njcm9sbGFibGVM
YXllcihib29sIGlzU2Nyb2xsYWJsZUxheWVyKSB7IG1faXNTY3JvbGxhYmxlTGF5ZXIgPSBpc1Nj
cm9sbGFibGVMYXllcjsgfQorICAgIGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lzU2Nyb2xsYWJsZUxheWVyOyB9CisKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
TWFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KIApAQCAtMTU2LDYgKzE3Mywx
MCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRVcGRhdGVDdXJyZW50RmlsdGVyc0Zyb21H
cmFwaGljc0xheWVyOwogI2VuZGlmCiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBTZWFyY2hDb25kaXRp
b24+IFRleHR1cmVNYXBwZXJMYXllciogaGl0VGVzdFNlYXJjaChjb25zdCBGbG9hdFBvaW50Jiwg
U2VhcmNoQ29uZGl0aW9uKTsKKyAgICBzdGF0aWMgYm9vbCBoaXRUZXN0U2VhcmNoQ29uZGl0aW9u
KFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBzdGF0aWMgYm9v
bCBzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVyKiwgY29u
c3QgRmxvYXRQb2ludCYpOworCiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgRmxvYXRQb2lu
dCBwb3M7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludDsKQEAgLTIwOCw2ICsyMjks
OSBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsK
ICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRv
Vmlld3BvcnQ7CisgICAgdWludDMyX3QgbV9sYXllcklEOworICAgIENvb3JkaW5hdGVkU2Nyb2xs
Q2xpZW50KiBtX3Njcm9sbENsaWVudDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxlTGF5ZXI7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwCmluZGV4IDBlZTk3Y2QuLjg4NWY1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEyMSw2ICsxMjIsNyBA
QCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFw
aGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0
cigwKQogICAgICwgbV9jYW52YXNQbGF0Zm9ybUxheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0
YXJ0ZWRUaW1lcih0aGlzLCAmQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFy
dGVkVGltZXJGaXJlZCkKKyAgICAsIG1fc2Nyb2xsYWJsZUFyZWEoMCkKIHsKICAgICBzdGF0aWMg
Q29vcmRpbmF0ZWRMYXllcklEIG5leHRMYXllcklEID0gMTsKICAgICBtX2lkID0gbmV4dExheWVy
SUQrKzsKQEAgLTQ2NCw2ICs0NjYsMjQgQEAgQ29vcmRpbmF0ZWRMYXllcklEIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6aWQoKSBjb25zdAogICAgIHJldHVybiBtX2lkOwogfQogCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKQoreworICAgIGJvb2wgb2xkU2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJs
ZSgpOworICAgIG1fc2Nyb2xsYWJsZUFyZWEgPSBzY3JvbGxhYmxlQXJlYTsKKyAgICBpZiAob2xk
U2Nyb2xsYWJsZSAhPSBpc1Njcm9sbGFibGUoKSkKKyAgICAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0
ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2Nyb2xsQnkoY29uc3Qg
SW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmICghaXNTY3JvbGxhYmxlKCkgfHwgb2Zmc2V0Lmlz
WmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbGFibGVBcmVhLT5ub3RpZnlT
Y3JvbGxQb3NpdGlvbkNoYW5nZWQobV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKSAr
IG9mZnNldCk7CisgICAgbV9sYXllckluZm8uY29tbWl0ZWRTY3JvbGxQb3NpdGlvbiArPSBvZmZz
ZXQ7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCkKIHsKICAgICBpZiAo
bV9maXhlZFRvVmlld3BvcnQgPT0gaXNGaXhlZCkKQEAgLTU3MSw2ICs1OTEsNyBAQCB2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZv
LmFuY2hvclBvaW50ID0gbV9hZGp1c3RlZEFuY2hvclBvaW50OwogICAgIG1fbGF5ZXJJbmZvLnBv
cyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsKICAgICBtX2xheWVySW5mby5zaXplID0gbV9hZGp1c3Rl
ZFNpemU7CisgICAgbV9sYXllckluZm8uaXNTY3JvbGxhYmxlTGF5ZXIgPSBpc1Njcm9sbGFibGUo
KTsKIAogICAgIG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMgPSBpc1Nob3dpbmdEZWJ1Z0Jv
cmRlcigpOwogICAgIGlmIChtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzKQpAQCAtNTc4LDYg
KzU5OSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgp
CiAgICAgbV9sYXllckluZm8uc2hvd1JlcGFpbnRDb3VudGVyID0gaXNTaG93aW5nUmVwYWludENv
dW50ZXIoKTsKIAogICAgIG1fY29vcmRpbmF0b3ItPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5
ZXJJbmZvKTsKKyAgICBtX2xheWVySW5mby5jb21taXRlZFNjcm9sbFBvc2l0aW9uID0gSW50U2l6
ZSgwLCAwKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9y
ZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggYTNmMGEwOC4uZGIw
ZTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM7
CitjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTEzNCw4ICsxMzUsMTMgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKik7CisgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAhIW1f
c2Nyb2xsYWJsZUFyZWE7IH0KKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUmKTsKKwog
ICAgIENvb3JkaW5hdGVkTGF5ZXJJRCBpZCgpIGNvbnN0OwogCisKICAgICB2b2lkIHNldEZpeGVk
VG9WaWV3cG9ydChib29sIGlzRml4ZWQpOwogCiAgICAgSW50UmVjdCBjb3ZlclJlY3QoKSBjb25z
dCB7IHJldHVybiBtX21haW5CYWNraW5nU3RvcmUgPyBtX21haW5CYWNraW5nU3RvcmUtPm1hcFRv
Q29udGVudHMobV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlclJlY3QoKSkgOiBJbnRSZWN0KCk7IH0K
QEAgLTI1Nyw2ICsyNjMsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhpY3NMYXllckFuaW1h
dGlvbnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFydFRpbWU7
CisKKyAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAKIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllciogdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAppbmRleCBkMjE1ZmIzLi5iMWFiMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtNjYsNyArNjYs
NyBAQCBzdGF0aWMgYm9vbCBsYXllclNob3VsZEhhdmVCYWNraW5nU3RvcmUoR3JhcGhpY3NMYXll
ciogbGF5ZXIpCiAgICAgcmV0dXJuIGxheWVyLT5kcmF3c0NvbnRlbnQoKSAmJiBsYXllci0+Y29u
dGVudHNBcmVWaXNpYmxlKCkgJiYgIWxheWVyLT5zaXplKCkuaXNFbXB0eSgpOwogfQogCi1Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZShDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmVDbGllbnQqIGNsaWVudCkKK0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCog
Y2xpZW50LCBDb29yZGluYXRlZFNjcm9sbENsaWVudCogc2Nyb2xsQ2xpZW50KQogICAgIDogbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAsIG1fcm9vdExheWVy
SUQoSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKQEAgLTc2LDYgKzc2LDcgQEAgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lQ2xpZW4KICNlbmRpZgogICAgICwgbV9iYWNrZ3JvdW5kQ29sb3IoQ29sb3I6Ondo
aXRlKQogICAgICwgbV9zZXREcmF3c0JhY2tncm91bmQoZmFsc2UpCisgICAgLCBtX3Njcm9sbENs
aWVudChzY3JvbGxDbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIH0KQEAg
LTM0Miw2ICszNDMsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJT
dGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQogICAgIGxheWVyLT5zZXRE
ZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwgbGF5ZXJJbmZvLmRlYnVnQm9y
ZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXRTaG93UmVwYWludENvdW50ZXIobGF5ZXJJbmZvLnNo
b3dSZXBhaW50Q291bnRlcik7CiAKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxh
eWVyKS0+c2V0Q29tbWl0ZWRTY3JvbGxQb3NpdGlvbihsYXllckluZm8uY29tbWl0ZWRTY3JvbGxQ
b3NpdGlvbik7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldElz
U2Nyb2xsYWJsZUxheWVyKGxheWVySW5mby5pc1Njcm9sbGFibGVMYXllcik7CisKICAgICBpZiAo
bGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQs
IGxheWVyKTsKICAgICBlbHNlCkBAIC0zNzEsNiArMzc1LDggQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBP
d25QdHI8R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAv
KiBmYWN0b3J5ICovLCB0aGlzKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5l
d0xheWVyLmdldCgpKS0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsKKyAgICB0b0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0TGF5ZXJJRChpZCk7Cisg
ICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldFNjcm9s
bENsaWVudChtX3Njcm9sbENsaWVudCk7CiAgICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5y
ZWxlYXNlKCkpOwogfQogCkBAIC02OTMsNiArNjk5LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1f
YmFja2dyb3VuZENvbG9yID0gY29sb3I7CiB9CiAKK1RleHR1cmVNYXBwZXJMYXllciogQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHJvb3RMYXllcigpID8gdG9UZXh0dXJlTWFw
cGVyTGF5ZXIocm9vdExheWVyKCkpLT5nZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQocG9pbnQp
IDogMDsKK30KKworVGV4dHVyZU1hcHBlckxheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmdldFRvcG1vc3RMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVy
biByb290TGF5ZXIoKSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+Z2V0VG9w
bW9zdExheWVyQXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGU1YjRjODguLjEzODk4
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmgKQEAgLTQyLDYgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
b29yZGluYXRlZEJhY2tpbmdTdG9yZTsKIGNsYXNzIENvb3JkaW5hdGVkTGF5ZXJJbmZvOworY2xh
c3MgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQ7CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwog
Y2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CiBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7
CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAgICAgfTsK
LSAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lQ2xpZW50Kik7CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZUNsaWVudCosIENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50Kik7CiAgICAgdmly
dHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAgICAgdm9pZCBwYWludFRvQ3VycmVu
dEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25zdCBGbG9h
dFJlY3QmLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CiAjaWYgUExBVEZPUk0oUVQp
CkBAIC05Myw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQg
YXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIAorICAgIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFRv
cG1vc3RMYXllckF0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKwogICAgIC8vIFRoZSBw
YWludGluZyB0aHJlYWQgbXVzdCBsb2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdv
IG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFp
biB0aHJlYWQgbWFuYWdlcy4gU2VlIG1fY2xpZW50LgogICAgIC8vIEN1cnJlbnRseSwgUVF1aWNr
V2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKCkgbG9ja3MgdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBj
YWxsaW5nIGJvdGggbWV0aG9kcy4KICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsKQEAgLTIy
MCw2ICsyMjQsOCBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxD
dXN0b21GaWx0ZXJQcm9ncmFtPiA+IEN1c3RvbUZpbHRlclByb2dyYW1NYXA7CiAgICAgQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1hcCBtX2N1c3RvbUZpbHRlclByb2dyYW1zOwogI2VuZGlmCisKKyAgICBD
b29yZGluYXRlZFNjcm9sbENsaWVudCogbV9zY3JvbGxDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVy
SW5mby5oCmluZGV4IDBmYTJhMTIuLjE0ZTM0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZExheWVySW5mby5oCkBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBDb29y
ZGluYXRlZExheWVySW5mbyB7CiAgICAgQ29sb3Igc29saWRDb2xvcjsKICAgICBDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yOwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgSW50U2l6ZSBj
b21taXRlZFNjcm9sbFBvc2l0aW9uOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3QgewpA
QCAtNzMsNiArNzQsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgICAgICAg
ICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOwogICAgICAgICAgICAgYm9vbCBzaG93RGVidWdC
b3JkZXJzIDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRDb3VudGVyIDogMTsKKyAg
ICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIgOiAxOwogICAgICAgICB9OwogICAgICAg
ICB1bnNpZ25lZCBmbGFnczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCBhMTFhYWIx
Li5lZjVhOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV2Vi
S2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2VzcyIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9DIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwIgog
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgpAQCAtNzUsNiArNzYsOCBA
QCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xv
YWRlci9jYWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZSIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGFnZS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgor
ICAgICIke1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzIgog
ICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vYW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTml4LmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1OaXguY21ha2UKaW5kZXggYmVlZTNlMC4uMmE0YzE1YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1OaXguY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1OaXguY21ha2UKQEAgLTMyLDYgKzMyLDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL3NvdXAvV0tTb3VwUmVxdWVzdE1hbmFnZXIuY3BwCiAK
ICAgICBVSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0NHU2NlbmUuY3BwCiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFj
a2luZ1N0b3JlQ2Fpcm8uY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ0dTY2VuZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVlNWUwYgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0NHU2NlbmUu
Y3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDR1NjZW5l
LmgiCisKKyNpbmNsdWRlICJXS0NHQVBJQ2FzdC5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJM
YXllci5oPgorCitXS19FWFBPUlQgV0tDR0xheWVyIFdLQ0dHZXRUb3Btb3N0TGF5ZXJBdChXS0NH
U2NlbmUgc2NlbmUsIFdLUG9pbnQgcG9pbnQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChz
Y2VuZSktPmdldFRvcG1vc3RMYXllckF0KFdlYkNvcmU6OkZsb2F0UG9pbnQocG9pbnQueCwgcG9p
bnQueSkpKTsKK30KKworV0tfRVhQT1JUIFdLQ0dMYXllciBXS0NHR2V0U2Nyb2xsYWJsZUNvbnRl
bnRMYXllckF0KFdLQ0dTY2VuZSBzY2VuZSwgV0tQb2ludCBwb2ludCkKK3sKKyAgICByZXR1cm4g
dG9BUEkodG9JbXBsKHNjZW5lKS0+Z2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KFdlYkNvcmU6
OkZsb2F0UG9pbnQocG9pbnQueCwgcG9pbnQueSkpKTsKK30KKworV0tfRVhQT1JUIHVpbnQzMl90
IFdLQ0dHZXRMYXllcklEKFdLQ0dMYXllciBsYXllcikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGxh
eWVyKS0+bGF5ZXJJRCgpOworfQorCitXS19FWFBPUlQgdm9pZCBXS0NHU2Nyb2xsQnkoV0tDR0xh
eWVyIGxheWVyLCBXS1NpemUgb2Zmc2V0KQoreworICAgIHRvSW1wbChsYXllciktPnNjcm9sbEJ5
KFdlYkNvcmU6OkludFNpemUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDR1NjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDR1NjZW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBj
NWI1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0NHU2NlbmUuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NHU2Nl
bmVfaAorI2RlZmluZSBXS0NHU2NlbmVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5
Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwordHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQ0dTY2VuZSogV0tDR1NjZW5lOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVl
Q0dMYXllciogV0tDR0xheWVyOworCitXS19FWFBPUlQgV0tDR0xheWVyIFdLQ0dHZXRUb3Btb3N0
TGF5ZXJBdChXS0NHU2NlbmUsIFdLUG9pbnQpOworV0tfRVhQT1JUIFdLQ0dMYXllciBXS0NHR2V0
U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KFdLQ0dTY2VuZSwgV0tQb2ludCk7CitXS19FWFBPUlQg
dWludDMyX3QgV0tDR0dldExheWVySUQoV0tDR0xheWVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ0dT
Y3JvbGxCeShXS0NHTGF5ZXIsIFdLU2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmIC8vIF9fY3BsdXNwbHVzCisKKyNlbmRpZiAvLyBXS0NHU2NlbmVfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9uaXgvTklYVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNwcAppbmRleCA2YWY3ZmIwLi44MTc2ZGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3LmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIk5JWFZpZXcuaCIK
IAorI2luY2x1ZGUgIldLQ0dBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1
ZGUgIldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTIyMSwzICsy
MjIsOCBAQCBib29sIE5JWFZpZXdJc1N1c3BlbmRlZChOSVhWaWV3IHZpZXcpCiB7CiAgICAgcmV0
dXJuIHRvSW1wbCh2aWV3KS0+aXNTdXNwZW5kZWQoKTsKIH0KKworV0tDR1NjZW5lIE5JWFZpZXdH
ZXRTY2VuZShOSVhWaWV3IHZpZXcpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbCh2aWV3KS0+
Z2V0U2NlbmUoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L25peC9OSVhWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL25peC9OSVhWaWV3
LmgKaW5kZXggOTVmNmJkZS4uMmFmMzA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9uaXgvTklYVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbml4L05JWFZpZXcuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBOSVhWaWV3X2gKIAog
I2luY2x1ZGUgIk5JWEV2ZW50cy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tDR1NjZW5lLmg+CiAj
aW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5o
PgogI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KQEAgLTEzOSw2ICsxNDAsOCBAQCBX
S19FWFBPUlQgdm9pZCBOSVhWaWV3U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KE5JWFZpZXcgdmlldyk7CiBXS19FWFBPUlQgdm9pZCBOSVhWaWV3UmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoTklYVmlldyB2aWV3KTsKIFdLX0VYUE9SVCBib29sIE5JWFZpZXdJ
c1N1c3BlbmRlZChOSVhWaWV3IHZpZXcpOwogCitXS19FWFBPUlQgV0tDR1NjZW5lIE5JWFZpZXdH
ZXRTY2VuZShOSVhWaWV3KTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYgLy8gX19j
cGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcAppbmRleCBkMDljMTg1Li4xZDFmMTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC00MCw3ICs0MCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkoRHJhd2luZ0FyZWFQcm94eSogZHJhd2lu
Z0FyZWFQcm94eSkKICAgICA6IG1fZHJhd2luZ0FyZWFQcm94eShkcmF3aW5nQXJlYVByb3h5KQot
ICAgICwgbV9zY2VuZShhZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMp
KSkKKyAgICAsIG1fc2NlbmUoYWRvcHRSZWYobmV3IENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSh0
aGlzLCB0aGlzKSkpCiB7CiB9CiAKQEAgLTI0NSw1ICsyNDUsMTAgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNl
dEJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKIH0KIAordm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklE
LCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdl
KCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpT
Y3JvbGxMYXllckJ5KGxheWVySUQsIG9mZnNldCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgp
LT5wYWdlSUQoKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApp
bmRleCAyNGIzNDc3Li4zOWM2MWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJXZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRp
bmF0ZWRTY3JvbGxDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
R3JhcGhpY3NMYXllckFuaW1hdGlvbi5oPgpAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBTdXJmYWNl
VXBkYXRlSW5mbzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5IDogcHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZUNsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSA6IHB1YmxpYyBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpD
b29yZGluYXRlZFNjcm9sbENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMTAxLDYgKzEwMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0
b3JlcygpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVk
OgogICAgIHZvaWQgZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
S0NHQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDR0FQSUNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTk4
MDRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDR0FQSUNhc3QuaApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0NHQVBJQ2Fz
dF9oCisjZGVmaW5lIFdLQ0dBUElDYXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tDR1NjZW5l
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK2lubGluZSBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHRvSW1wbChXS0NH
U2NlbmUgc2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKj4oc2NlbmUpOworfQorCitpbmxpbmUgV0tDR1NjZW5lIHRv
QVBJKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUpCit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDR1NjZW5lPihzY2VuZSk7Cit9CisKK2lubGluZSBXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvSW1wbChXS0NHTGF5ZXIgbGF5ZXIpCit7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKj4obGF5
ZXIpOworfQorCitpbmxpbmUgV0tDR0xheWVyIHRvQVBJKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDR0xheWVyPihs
YXllcik7Cit9CisKKyNlbmRpZiAvLyBXS0NHQVBJQ2FzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3Mvbml4L1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9uaXgvV2ViVmlldy5oCmluZGV4IGVjOTRjNjMuLjY0YTQxMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9uaXgvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9uaXgvV2ViVmlldy5oCkBAIC05MCw2ICs5MCw4IEBAIHB1YmxpYzoKIAogICAgIFdL
UGFnZVJlZiBwYWdlUmVmKCk7CiAKKyAgICBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUqIGdldFNjZW5lKCkgeyByZXR1cm4gY29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7IH0KKwog
ICAgIHZvaWQgc2VuZE1vdXNlRXZlbnQoY29uc3QgTklYTW91c2VFdmVudCYpOwogICAgIHZvaWQg
c2VuZFdoZWVsRXZlbnQoY29uc3QgTklYV2hlZWxFdmVudCYpOwogICAgIHZvaWQgc2VuZEtleUV2
ZW50KGNvbnN0IE5JWEtleUV2ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCBiMjc5MjNlLi4xYjQxYmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTczLDkgKzczLDkgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKICNlbmRpZgogICAgIHB1cmdlQmFja2luZ1N0
b3JlcygpOwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIq
Pjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgIGZvciAoSGFz
aFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0
KS0+c2V0Q29vcmRpbmF0b3IoMCk7CisgICAgUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0b3Ig
ZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZExheWVy
c01hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnNldENvb3JkaW5hdG9yKDApOwogfQogCiBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3
ZWJQYWdlKQpAQCAtNDY1LDcgKzQ2NSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQogCiB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikK
IHsKLSAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKKyAgICBtX3JlZ2lzdGVy
ZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKICAgICBtX2xheWVyc1RvRGVsZXRlLmFwcGVu
ZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CkBAIC02MzYsNyAr
NjM2LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKIHsKICAgICBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGllbnQpOwog
ICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKLSAgICBtX3JlZ2lzdGVyZWRMYXllcnMu
YWRkKGxheWVyKTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgpLCBsYXll
cik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIGxheWVy
LT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVz
aCgpOwpAQCAtNzMzLDkgKzczMyw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uCiAgICAgaWYg
KGNvbnRlbnRzUmVjdERpZENoYW5nZSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50c1JlY3Qg
PSByZWN0OwogCi0gICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICAgICAg
Zm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRv
ciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgICAg
ICBSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CisgICAgICAgIGZvciAoUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0b3IgaXQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBpdC0+dmFsdWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTc4Nyw5ICs3ODcsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVy
Z2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXll
cnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICBSZWdp
c3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7
CisgICAgZm9yIChSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJl
ZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+cHVy
Z2VCYWNraW5nU3RvcmVzKCk7CiAKICAgICBtX2ltYWdlQmFja2luZ3MuY2xlYXIoKTsKICAgICBt
X3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsKQEAgLTg1Miw1ICs4NTIsMTQgQEAgdm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xv
ciYgY29sb3IpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNv
bnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKK3sKKyAgICBSZWdpc3RlcmVkTGF5ZXJzTWFw
OjppdGVyYXRvciBpID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmZpbmQobGF5ZXJJRCk7CisgICAgaWYg
KGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
LT52YWx1ZS0+c2Nyb2xsQnkob2Zmc2V0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAppbmRleCA2ZGZkZDUyLi4y
MDU1ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaApAQCAtMTIwLDYgKzEyMCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0
ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1
cmZhY2U6OkZsYWdzKTsKIAorICAgIHZvaWQgc2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklE
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhw
bGljaXQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2UqKTsKIApAQCAtMTgxLDcgKzE4
Myw4IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHBhZ2Ugb3ZlcmxheSBsYXllci4gV2lsbCBiZSBu
dWxsIGlmIHRoZXJlJ3Mgbm8gcGFnZSBvdmVybGF5LgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFw
aGljc0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVnaXN0ZXJlZExheWVyczsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqPiBSZWdpc3RlcmVkTGF5ZXJzTWFwOworICAgIFJlZ2lzdGVyZWRMYXll
cnNNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRl
ZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5h
dGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
bgppbmRleCA2NjcxYjMyLi5hYTlmMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBA
IC0yNyw1ICsyNyw2IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBMZWdh
Y3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIEFu
aW1hdGlvbkZyYW1lUmVhZHkoKQogI2VuZGlmCisgICAgU2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBs
YXllcklELCBXZWJDb3JlOjpJbnRTaXplIG9mZnNldCkKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvbml4L21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvbml4L21h
aW4uY3BwCmluZGV4IDZjYWJmNDAuLmIzZTNjNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL25peC9tYWluLmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9uaXgvbWFpbi5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJUb3VjaE1vY2tlci5oIgogI2luY2x1ZGUgIlhsaWJF
dmVudFV0aWxzLmgiCiAjaW5jbHVkZSA8R0wvZ2wuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ0dT
Y2VuZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgogI2luY2x1ZGUgPFdl
YktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5n
Lmg+CkBAIC0xNTUsNiArMTU2LDkgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX3ZpZXdwb3J0SW5p
dFNjYWxlOwogICAgIGJvb2wgbV92aWV3cG9ydFVzZXJTY2FsYWJsZTsKIAorICAgIFdLQ0dMYXll
ciBtX3Njcm9sbGluZ0xheWVyOworICAgIFdLUG9pbnQgbV9zY3JvbGxQb2ludDsKKwogICAgIGZy
aWVuZCBnYm9vbGVhbiBjYWxsVXBkYXRlRGlzcGxheShncG9pbnRlcik7CiB9OwogCkBAIC0xODEs
NiArMTg1LDcgQEAgTWluaUJyb3dzZXI6Ok1pbmlCcm93c2VyKEdNYWluTG9vcCogbWFpbkxvb3As
IE1vZGUgbW9kZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAogICAgICwgbV92aWV3cG9ydE1heFNj
YWxlKDUpCiAgICAgLCBtX3ZpZXdwb3J0VXNlclNjYWxhYmxlKHRydWUpCiAgICAgLCBtX3ZpZXdw
b3J0SW5pdFNjYWxlKDEpCisgICAgLCBtX3Njcm9sbGluZ0xheWVyKDApCiB7CiAgICAgZ19tYWlu
X2xvb3BfcmVmKG1fbWFpbkxvb3ApOwogCkBAIC00MzcsNiArNDQyLDEyIEBAIHZvaWQgTWluaUJy
b3dzZXI6OmhhbmRsZUJ1dHRvblByZXNzRXZlbnQoY29uc3QgWEJ1dHRvblByZXNzZWRFdmVudCYg
ZXZlbnQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBtX3Njcm9sbFBvaW50ID0gV0tQ
b2ludE1ha2UoZXZlbnQueCwgZXZlbnQueSk7CisgICAgV0tDR1NjZW5lIHNjZW5lID0gTklYVmll
d0dldFNjZW5lKHZpZXcpOworICAgIG1fc2Nyb2xsaW5nTGF5ZXIgPSBXS0NHR2V0U2Nyb2xsYWJs
ZUNvbnRlbnRMYXllckF0KHNjZW5lLCBtX3Njcm9sbFBvaW50KTsKKyAgICBpZiAobV9zY3JvbGxp
bmdMYXllcikKKyAgICAgICAgcmV0dXJuOworCiAgICAgdXBkYXRlQ2xpY2tDb3VudChldmVudCk7
CiAKICAgICBOSVhNb3VzZUV2ZW50IG5peEV2ZW50ID0gY29udmVydFhCdXR0b25FdmVudFRvTml4
QnV0dG9uRXZlbnQodmlldywgZXZlbnQsIGtOSVhJbnB1dEV2ZW50VHlwZU1vdXNlRG93biwgbV9j
bGlja0NvdW50KTsKQEAgLTQ1Miw2ICs0NjMsMTEgQEAgdm9pZCBNaW5pQnJvd3Nlcjo6aGFuZGxl
QnV0dG9uUmVsZWFzZUV2ZW50KGNvbnN0IFhCdXR0b25SZWxlYXNlZEV2ZW50JiBldmVudCkKICAg
ICBpZiAoZXZlbnQuYnV0dG9uID09IDQgfHwgZXZlbnQuYnV0dG9uID09IDUpCiAgICAgICAgIHJl
dHVybjsKIAorICAgIGlmIChtX3Njcm9sbGluZ0xheWVyKSB7CisgICAgICAgIG1fc2Nyb2xsaW5n
TGF5ZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTklYTW91c2VFdmVudCBu
aXhFdmVudCA9IGNvbnZlcnRYQnV0dG9uRXZlbnRUb05peEJ1dHRvbkV2ZW50KG1fdmlldywgZXZl
bnQsIGtOSVhJbnB1dEV2ZW50VHlwZU1vdXNlVXAsIDApOwogICAgIGlmIChtX3RvdWNoTW9ja2Vy
ICYmIG1fdG91Y2hNb2NrZXItPmhhbmRsZU1vdXNlUmVsZWFzZShuaXhFdmVudCkpIHsKICAgICAg
ICAgc2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7CkBAIC00NjgsNiArNDg0LDEzIEBAIHZvaWQgTWlu
aUJyb3dzZXI6OmhhbmRsZUJ1dHRvblJlbGVhc2VFdmVudChjb25zdCBYQnV0dG9uUmVsZWFzZWRF
dmVudCYgZXZlbnQpCiAKIHZvaWQgTWluaUJyb3dzZXI6OmhhbmRsZVBvaW50ZXJNb3ZlRXZlbnQo
Y29uc3QgWFBvaW50ZXJNb3ZlZEV2ZW50JiBldmVudCkKIHsKKyAgICBpZiAobV9zY3JvbGxpbmdM
YXllcikgeworICAgICAgICBXS0NHU2Nyb2xsQnkobV9zY3JvbGxpbmdMYXllciwgV0tTaXplTWFr
ZShtX3Njcm9sbFBvaW50LnggLSBldmVudC54LCBtX3Njcm9sbFBvaW50LnkgLSBldmVudC55KSk7
CisgICAgICAgIG1fc2Nyb2xsUG9pbnQgPSBXS1BvaW50TWFrZShldmVudC54LCBldmVudC55KTsK
KyAgICAgICAgc2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBOSVhNb3VzZUV2ZW50IG5peEV2ZW50OwogICAgIG5peEV2ZW50LnR5cGUgPSBrTklY
SW5wdXRFdmVudFR5cGVNb3VzZU1vdmU7CiAgICAgbml4RXZlbnQuYnV0dG9uID0ga1dLRXZlbnRN
b3VzZUJ1dHRvbk5vQnV0dG9uOwotLSAKMS43LjkuNQoK
</data>
<flag name="review"
          id="209848"
          type_id="1"
          status="-"
          setter="luiz"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190664</attachid>
            <date>2013-02-27 23:45:49 -0800</date>
            <delta_ts>2013-02-28 22:15:05 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>53022</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2YTI3M2M2NTYzOGQ1ODFjNDcwMzYyNTJkYzAxM2U0MjNhNWU4MDA4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCAyNyBGZWIgMjAxMyAyMzozOTowMiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mu
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkltcGxlbWVudGluZyBhY2NlbGVyYXRlZCBvdmVyZmxvdyBz
Y3JvbGxpbmcgZm9yIGNvb3JkaW5hdGVkIGdyYXBoaWNzLgpUaGUgbmV3IEFQSSBXS0Nvb3JkaW5h
dGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4K
ClNvdXJjZS9XZWJDb3JlOgoKKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL0Nv
b3JkaW5hdGVkU2Nyb2xsQ2xpZW50Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmguCihXZWJDb3JlKToKKENvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50KToKKiBw
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UpOgooV2Vi
Q29yZSk6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6
OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVk
Z3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmg6CihTY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgoqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgooV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlc2V0Q29tbWl0ZWRTY3JvbGxQb3NpdGlv
bik6CihXZWJDb3JlKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1cGRh
dGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRJc1Njcm9sbGFibGVMYXllcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKFdlYkNvcmUpOgooV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNjcm9sbENsaWVudCk6CihXZWJDb3JlOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0TGF5ZXJJRCk6CihHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6aXNTY3JvbGxh
YmxlTGF5ZXIpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0U2VhcmNoKToKKFdlYkNv
cmUpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hD
b25kaXRpb24pOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpnZXRTY3JvbGxhYmxlQ29u
dGVudExheWVyQXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0U2VhcmNo
Q29uZGl0aW9uKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0VG9wbW9zdExheWVy
QXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnVwZGF0ZUNvbW1pdGVkU2Nyb2xsUG9zaXRpb24pOgoqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKFdlYkNvcmUpOgooV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpzZXRMYXllcklEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6bGF5ZXJJRCk6CihUZXh0dXJlTWFwcGVyTGF5ZXIpOgooV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpzZXRJc1Njcm9sbGFibGVMYXllcik6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omlz
U2Nyb2xsYWJsZUxheWVyKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YWRqdXN0ZWRQ
b3NpdGlvbik6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CihXZWJDb3JlKToKKENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlzU2Ny
b2xsYWJsZSk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnNldExheWVyU3RhdGUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpjcmVhdGVMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmdldFNj
cm9sbGFibGVDb250ZW50TGF5ZXJBdCk6CihXZWJDb3JlKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6Z2V0VG9wbW9zdExheWVyQXQpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKFdlYkNvcmUpOgoo
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaDoKKENvb3JkaW5hdGVkTGF5ZXJJbmZvKToK
ClNvdXJjZS9XZWJLaXQyOgoKKiBDTWFrZUxpc3RzLnR4dDoKKiBVSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29y
ZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwLgooV0tDb29yZGluYXRlZEdldFRvcG1vc3RM
YXllckF0KToKKFdLQ29vcmRpbmF0ZWRHZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQpOgooV0tD
b29yZGluYXRlZEdldExheWVySUQpOgooV0tDb29yZGluYXRlZFNjcm9sbEJ5KToKKiBVSVByb2Nl
c3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmguCiogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgooV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2Nyb2xsTGF5
ZXJCeSk6CihXZWJLaXQpOgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CihDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6
CiogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZEFQSUNhc3QuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFw
aGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwLgooV2ViQ29y
ZSk6Cih0b0ltcGwpOgoodG9BUEkpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CihXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgooV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CihXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgoqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5tZXNzYWdlcy5pbjoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgNzQgKysrKysrKysrKysrKysrKysrKysKIC4uLi9jb29yZGlu
YXRlZGdyYXBoaWNzL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50LmggIHwgICA0MiArKysrKysrKysr
KwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAg
IDE4ICsrKysrCiAuLi4vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgg
ICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5jcHAgfCAgIDMyICsrKysrKysrKwogLi4uL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlci5oICAgfCAgIDE4ICsrKystCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJMYXllci5jcHAgICAgICAgICB8ICAgNTMgKysrKysrKysrKysrKysKIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggIHwgICAyNyArKysr
KystCiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCAgICAgICB8
ICAgMjIgKysrKysrCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oICB8ICAgIDggKysrCiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcCAgICAgICB8ICAgMTggKysrKy0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmggIHwgICAgNyArLQogLi4uL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZExheWVySW5mby5oICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NNYWtl
TGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzggKysrKysrKysrKwogLi4u
L0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAgfCAgIDU0ICsr
KysrKysrKysrKysrCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lLmggICB8ICAgNDkgKysrKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmNwcCAgICAgICAgICAgICAgfCAgICA3ICstCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaCAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIC4uLi9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRBUElDYXN0LmggICAgIHwgICA2MCArKysrKysrKysrKysrKysr
CiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCAgICAgICAgICAgICAgICAgICB8ICAg
MzEgKysrKystLS0KIC4uLi9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oIHwgICAgNSArLQogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
biAgICAgICAgICAgfCAgICAxICsKIDIzIGZpbGVzIGNoYW5nZWQsIDU1OCBpbnNlcnRpb25zKCsp
LCAxOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50LmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5h
dGVkU2NlbmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRBUElDYXN0LmgKCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTcyNTUyMS4uNDg4NjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEzLTAyLTI3
ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgQWNj
ZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDMyMworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGlu
ZyBhY2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIGNvb3JkaW5hdGVkIGdyYXBoaWNz
LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8g
c2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaC4KKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVzZXRDb21taXRlZFNj
cm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUNvbW1pdGVkU2Nyb2xsUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Nyb2xs
YWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojpjb21taXRMYXllckNoYW5nZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRMYXll
cklEKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjppc1Njcm9sbGFibGVMYXllcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2gpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNjcm9sbGFibGVMYXllclNlYXJjaENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OmdldFNjcm9sbGFibGVDb250ZW50TGF5ZXJBdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2hDb25kaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpnZXRUb3Btb3N0TGF5ZXJBdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6dXBkYXRlQ29tbWl0ZWRTY3JvbGxQb3NpdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
TGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldExheWVySUQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpsYXllcklEKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZUxheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTY3JvbGxhYmxlTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNjcm9sbEJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVy
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0
TGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRUb3Btb3N0TGF5ZXJB
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oOgorICAgICAgICAoQ29vcmRpbmF0
ZWRMYXllckluZm8pOgorCiAyMDEzLTAyLTI3ICBUaWVuLVJlbiBDaGVuICA8dHJjaGVuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBOZWVkIHRvIHJlLWxheW91dCBmaXhlZCBwb3NpdGlvbiBlbGVt
ZW50cyBhZnRlciBzY2FsZSB3aGVuIHVzaW5nIHNldHRpbmdzKCktPmZpeGVkRWxlbWVudHNMYXlv
dXRSZWxhdGl2ZVRvRnJhbWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRlZFNjcm9sbENsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9Db29yZGluYXRl
ZFNjcm9sbENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYWU3
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL0Nvb3JkaW5hdGVkU2Nyb2xsQ2xpZW50LmgKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnRfaAorI2RlZmluZSBDb29yZGluYXRlZFNjcm9s
bENsaWVudF9oCisKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1
YWwgdm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0KSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBDb29yZGluYXRlZFNjcm9sbENsaWVu
dF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKaW5kZXggYTFiZjNiZC4uOWQ4ZWM0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtNDcsNiArNDcsMjQgQEAg
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNldExheWVySXNG
aXhlZFRvQ29udGFpbmVyTGF5ZXIoR3IKICAgICB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihs
YXllciktPnNldEZpeGVkVG9WaWV3cG9ydChlbmFibGUpOwogfQogCit2b2lkIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRp
ZENoYW5nZShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7CisgICAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKHNjcm9s
bExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpKTsKKyAgICBpZiAoIWxheWVy
KQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoc2Nyb2xs
YWJsZUFyZWEpOworfQorCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJs
ZUFyZWEpCit7CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IHRvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJs
ZUFyZWEpKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBsYXllci0+
c2V0U2Nyb2xsYWJsZUFyZWEoMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDb29yZGluYXRlZEdyYXBoaWNzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
cy5oCmluZGV4IDg3YzJjNzIuLjkwY2M0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3Mu
aApAQCAtMzcsNiArMzcsOCBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKFBhZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxl
QXJlYSopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9s
bGFibGVBcmVhKik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRleCA4MDEzZWM0Li43MzA5YWUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKQEAgLTU3LDYgKzU3LDcg
QEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUKICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQog
ICAgICwgbV9jb250ZW50c0xheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQor
ICAgICwgbV9pc1Njcm9sbGFibGVMYXllcihmYWxzZSkKIHsKIH0KIApAQCAtNDAzLDYgKzQwNCwz
MSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50
ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQog
CitGbG9hdFNpemUgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlc2V0Q29tbWl0ZWRTY3Jv
bGxQb3NpdGlvbigpCit7CisgICAgRmxvYXRTaXplIHJlc3VsdCA9IG1fY29tbWl0ZWRTY3JvbGxQ
b3NpdGlvbjsKKyAgICBtX2NvbW1pdGVkU2Nyb2xsUG9zaXRpb24gPSBGbG9hdFNpemUoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjp1
cGRhdGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7Cisg
ICAgaWYgKGRlbHRhLmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NvbW1pdGVk
U2Nyb2xsUG9zaXRpb24gKz0gZGVsdGE7CisgICAgbm90aWZ5Q2hhbmdlKENvbW1pdGVkU2Nyb2xs
UG9zaXRpb24pOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Nj
cm9sbGFibGVMYXllcihib29sIGlzU2Nyb2xsYWJsZUxheWVyKQoreworICAgIGlmIChtX2lzU2Ny
b2xsYWJsZUxheWVyID09IGlzU2Nyb2xsYWJsZUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzU2Nyb2xsYWJsZUxheWVyID0gaXNTY3JvbGxhYmxlTGF5ZXI7CisgICAgbm90aWZ5Q2hh
bmdlKFNjcm9sbGFibGVMYXllcik7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQog
Ki8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQpAQCAtNTQzLDYgKzU2OSwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgIGlmIChtX2NoYW5nZU1h
c2sgJiBGaXhlZFRvVmlld3BvckNoYW5nZSkKICAgICAgICAgbV9sYXllci0+c2V0Rml4ZWRUb1Zp
ZXdwb3J0KGZpeGVkVG9WaWV3cG9ydCgpKTsKIAorICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb21t
aXRlZFNjcm9sbFBvc2l0aW9uKQorICAgICAgICBtX2xheWVyLT51cGRhdGVDb21taXRlZFNjcm9s
bFBvc2l0aW9uKHJlc2V0Q29tbWl0ZWRTY3JvbGxQb3NpdGlvbigpKTsKKworICAgIGlmIChtX2No
YW5nZU1hc2sgJiBTY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIG1fbGF5ZXItPnNldElzU2Nyb2xs
YWJsZUxheWVyKGlzU2Nyb2xsYWJsZUxheWVyKCkpOworCiAgICAgbV9jaGFuZ2VNYXNrID0gTm9D
aGFuZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4
IDkzMjlmYmMuLjdhYzdiMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCkBAIC0yOSwxMSArMjksMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBD
b29yZGluYXRlZFNjcm9sbENsaWVudDsKKwogY2xhc3MgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIgOiBwdWJsaWMgR3JhcGhpY3NMYXllciB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwogICAgIHZpcnR1YWwg
fkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbENsaWVu
dChDb29yZGluYXRlZFNjcm9sbENsaWVudCogY2xpZW50KSB7IG1fbGF5ZXItPnNldFNjcm9sbENs
aWVudChjbGllbnQpOyB9CisgICAgdm9pZCBzZXRMYXllcklEKHVpbnQzMl90IGlkKSB7IG1fbGF5
ZXItPnNldExheWVySUQoaWQpOyB9CisKICAgICAvLyByZWltcHMgZnJvbSBHcmFwaGljc0xheWVy
LmgKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CkBAIC04MSw2ICs4NiwxMSBAQCBwdWJsaWM6CiAK
ICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5n
ZXQoKTsgfQogCisgICAgdm9pZCB1cGRhdGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZs
b2F0U2l6ZSYpOworICAgIEZsb2F0U2l6ZSByZXNldENvbW1pdGVkU2Nyb2xsUG9zaXRpb24oKTsK
KyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZUxheWVyKGJvb2wpOworICAgIGJvb2wgaXNTY3JvbGxh
YmxlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZUxheWVyOyB9CisKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBAIC0xNDMsNyArMTUzLDEwIEBAIHByaXZhdGU6CiAg
ICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAogCiAgICAgICAg
IEZpeGVkVG9WaWV3cG9yQ2hhbmdlID0gICAgICAoMUwgPDwgMjYpLAotICAgICAgICBBbmltYXRp
b25TdGFydGVkID0gICAgICAgICAgKDFMIDw8IDI3KQorICAgICAgICBBbmltYXRpb25TdGFydGVk
ID0gICAgICAgICAgKDFMIDw8IDI3KSwKKworICAgICAgICBDb21taXRlZFNjcm9sbFBvc2l0aW9u
ID0gICAgKDFMIDw8IDI4KSwKKyAgICAgICAgU2Nyb2xsYWJsZUxheWVyID0gICAgICAgICAgICgx
TCA8PCAyOSkKICAgICB9OwogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKENoYW5nZU1hc2spOwogCkBA
IC0xNjUsNiArMTc4LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlS
ZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBkb3Vi
bGUgbV9hbmltYXRpb25TdGFydFRpbWU7CisKKyAgICBGbG9hdFNpemUgbV9jb21taXRlZFNjcm9s
bFBvc2l0aW9uOworICAgIGJvb2wgbV9pc1Njcm9sbGFibGVMYXllcjsKIH07CiAKIGlubGluZSBz
dGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmlu
ZGV4IDEwYmVmMjYuLmI4YTU5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0y
MCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBl
ckxheWVyLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZFNjcm9sbENsaWVudC5oIgogI2luY2x1
ZGUgIlJlZ2lvbi5oIgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtNjcz
LDUgKzY3NCw1NyBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25E
ZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgbV9jdXJyZW50VHJhbnNm
b3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNz
IFNlYXJjaENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6
OmhpdFRlc3RTZWFyY2goY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIFNlYXJjaENvbmRpdGlvbiBj
b25kaXRpb24pCit7CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiByZXN1bHQgPSAwOworICAgIGZv
ciAoaW50IGkgPSBtX2NoaWxkcmVuLnNpemUoKSAtIDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkp
CisgICAgICAgIHJlc3VsdCA9IG1fY2hpbGRyZW5baV0tPmhpdFRlc3RTZWFyY2gocG9pbnQsIGNv
bmRpdGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0ID8gcmVzdWx0IDogY29uZGl0aW9uKHRoaXMs
IHBvaW50KSA/IHRoaXMgOiAwOworfQorCitib29sIFRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xs
YWJsZUxheWVyU2VhcmNoQ29uZGl0aW9uKFRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIsIGNvbnN0
IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIGlmICghbGF5ZXItPmlzU2Nyb2xsYWJsZUxheWVy
KCkgfHwgIWxheWVyLT5tX3BhcmVudCB8fCAhbGF5ZXItPm1fcGFyZW50LT5tX3BhcmVudCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBwYXJlbnRMYXll
ciA9IGxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQ7CisgICAgcmV0dXJuIHBhcmVudExheWVyLT5t
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBSZWN0KHBhcmVudExheWVyLT5tX3N0YXRl
LmNvbnRlbnRzUmVjdCkuY29udGFpbnMocG9pbnQpOworfQorCitUZXh0dXJlTWFwcGVyTGF5ZXIq
IFRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0U2VhcmNoKHBvaW50LCAmVGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOworfQorCiti
b29sIFRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaENvbmRpdGlvbihUZXh0dXJlTWFw
cGVyTGF5ZXIqIGxheWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4g
bGF5ZXItPm1fc3RhdGUudmlzaWJsZSAmJiBsYXllci0+bV9zdGF0ZS5jb250ZW50c1Zpc2libGUg
JiYgbGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QobGF5ZXItPm1f
c3RhdGUuY29udGVudHNSZWN0KS5jb250YWlucyhwb2ludCk7Cit9CisKK1RleHR1cmVNYXBwZXJM
YXllciogVGV4dHVyZU1hcHBlckxheWVyOjpnZXRUb3Btb3N0TGF5ZXJBdChjb25zdCBGbG9hdFBv
aW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gaGl0VGVzdFNlYXJjaChwb2ludCwgJlRleHR1cmVN
YXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaENvbmRpdGlvbik7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIGRlbHRhKQoreworICAgIGlmICgh
bV9zY3JvbGxDbGllbnQgfHwgZGVsdGEuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fVUlTaWRlU2Nyb2xsRGVsdGEgKz0gZGVsdGE7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNl
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CisgICAgbV9zY3JvbGxDbGllbnQtPnNjcm9s
bExheWVyQnkobV9sYXllcklELCBkZWx0YSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
Ojp1cGRhdGVDb21taXRlZFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCit7
CisgICAgaWYgKGRlbHRhLmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX1VJU2lk
ZVNjcm9sbERlbHRhIC09IGRlbHRhOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlv
bihhZGp1c3RlZFBvc2l0aW9uKCkpOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaAppbmRleCA2MDJiMmMzLi5kMDk5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBA
IC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29vcmRpbmF0
ZWRTY3JvbGxDbGllbnQ7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zOwogY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI7CkBAIC00NywxMCArNDgs
MjYgQEAgcHVibGljOgogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVy
ZU1hcHBlcigwKQogICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICAgICAs
IG1fbGF5ZXJJRCgwKQorICAgICAgICAsIG1fc2Nyb2xsQ2xpZW50KDApCisgICAgICAgICwgbV9p
c1Njcm9sbGFibGVMYXllcihmYWxzZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVN
YXBwZXJMYXllcigpOwogCisgICAgdm9pZCBzZXRMYXllcklEKHVpbnQzMl90IGlkKSB7IG1fbGF5
ZXJJRCA9IGlkOyB9CisgICAgdWludDMyX3QgbGF5ZXJJRCgpIHsgcmV0dXJuIG1fbGF5ZXJJRDsg
fQorCisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBnZXRTY3JvbGxhYmxlQ29udGVudExheWVyQXQo
Y29uc3QgRmxvYXRQb2ludCYgcG9zKTsKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFRvcG1v
c3RMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvcyk7CisKKyAgICB2b2lkIHNldFNjcm9sbENs
aWVudChDb29yZGluYXRlZFNjcm9sbENsaWVudCogc2Nyb2xsQ2xpZW50KSB7IG1fc2Nyb2xsQ2xp
ZW50ID0gc2Nyb2xsQ2xpZW50OyB9CisgICAgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmKTsKKworICAgIHZvaWQgdXBkYXRlQ29tbWl0ZWRTY3JvbGxQb3NpdGlvbihjb25z
dCBGbG9hdFNpemUmIGRlbHRhKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZUxheWVyKGJvb2wg
aXNTY3JvbGxhYmxlTGF5ZXIpIHsgbV9pc1Njcm9sbGFibGVMYXllciA9IGlzU2Nyb2xsYWJsZUxh
eWVyOyB9CisgICAgYm9vbCBpc1Njcm9sbGFibGVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1faXNT
Y3JvbGxhYmxlTGF5ZXI7IH0KKwogICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIoKSBj
b25zdDsKICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4bWFwKSB7
IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQogCkBAIC0xMDgsNyArMTI1LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXll
ciogPiYgYXJyYXksIGludCBmaXJzdCwgaW50IGxhc3QpOwogCiAgICAgUGFzc1JlZlB0cjxCaXRt
YXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdT
dG9yZS0+dGV4dHVyZSgpIDogMDsgfQotICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOyB9Cisg
ICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5w
b3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgLSBtX1VJU2lkZVNjcm9sbERlbHRhOyB9CiAgICAg
Ym9vbCBpc0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcmVwbGljYVRyYW5zZm9ybSgpOwogICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1h
cHBlckxheWVyKik7CkBAIC0xNTksNiArMTc2LDEwIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBm
bG9hdCBtX2NlbnRlclo7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRl
eHR1cmVNYXBwZXJMYXllciogaGl0VGVzdFNlYXJjaChjb25zdCBGbG9hdFBvaW50JiwgU2VhcmNo
Q29uZGl0aW9uKTsKKyAgICBzdGF0aWMgYm9vbCBoaXRUZXN0U2VhcmNoQ29uZGl0aW9uKFRleHR1
cmVNYXBwZXJMYXllciosIGNvbnN0IEZsb2F0UG9pbnQmKTsKKyAgICBzdGF0aWMgYm9vbCBzY3Jv
bGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVyKiwgY29uc3QgRmxv
YXRQb2ludCYpOworCiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgRmxvYXRQb2ludCBwb3M7
CiAgICAgICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludDsKQEAgLTIxMSw2ICsyMzIsMTAgQEAg
cHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAg
RmxvYXRTaXplIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsKICAgICBib29sIG1fZml4ZWRUb1ZpZXdw
b3J0OworICAgIHVpbnQzMl90IG1fbGF5ZXJJRDsKKyAgICBDb29yZGluYXRlZFNjcm9sbENsaWVu
dCogbV9zY3JvbGxDbGllbnQ7CisgICAgYm9vbCBtX2lzU2Nyb2xsYWJsZUxheWVyOworICAgIEZs
b2F0U2l6ZSBtX1VJU2lkZVNjcm9sbERlbHRhOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA0YzQzYWE3
Li5iZGExNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC0xMjIsNiArMTIzLDcgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQog
ICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2FudmFzUGxhdGZv
cm1MYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIodGhpcywgJkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCisgICAgLCBtX3Nj
cm9sbGFibGVBcmVhKDApCiB7CiAgICAgc3RhdGljIENvb3JkaW5hdGVkTGF5ZXJJRCBuZXh0TGF5
ZXJJRCA9IDE7CiAgICAgbV9pZCA9IG5leHRMYXllcklEKys7CkBAIC00NjUsNiArNDY3LDI0IEBA
IENvb3JkaW5hdGVkTGF5ZXJJRCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9pZDsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBi
b29sIG9sZFNjcm9sbGFibGUgPSBpc1Njcm9sbGFibGUoKTsKKyAgICBtX3Njcm9sbGFibGVBcmVh
ID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgaWYgKG9sZFNjcm9sbGFibGUgIT0gaXNTY3JvbGxhYmxl
KCkpCisgICAgICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwordm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAg
IGlmICghaXNTY3JvbGxhYmxlKCkgfHwgb2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX3Njcm9sbGFibGVBcmVhLT5ub3RpZnlTY3JvbGxQb3NpdGlvbkNoYW5nZWQobV9z
Y3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKSArIEludFNpemUob2Zmc2V0LndpZHRoKCks
IG9mZnNldC5oZWlnaHQoKSkpOworICAgIG1fbGF5ZXJJbmZvLmNvbW1pdGVkU2Nyb2xsUG9zaXRp
b24gKz0gb2Zmc2V0OworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpCiB7
CiAgICAgaWYgKG1fZml4ZWRUb1ZpZXdwb3J0ID09IGlzRml4ZWQpCkBAIC01NzIsNiArNTkyLDcg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBt
X2xheWVySW5mby5hbmNob3JQb2ludCA9IG1fYWRqdXN0ZWRBbmNob3JQb2ludDsKICAgICBtX2xh
eWVySW5mby5wb3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9sYXllckluZm8uc2l6ZSA9
IG1fYWRqdXN0ZWRTaXplOworICAgIG1fbGF5ZXJJbmZvLmlzU2Nyb2xsYWJsZUxheWVyID0gaXNT
Y3JvbGxhYmxlKCk7CiAKICAgICBtX2xheWVySW5mby5zaG93RGVidWdCb3JkZXJzID0gaXNTaG93
aW5nRGVidWdCb3JkZXIoKTsKICAgICBpZiAobV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycykK
QEAgLTU3OSw2ICs2MDAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xh
eWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlciA9IGlzU2hvd2lu
Z1JlcGFpbnRDb3VudGVyKCk7CiAKICAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZSht
X2lkLCBtX2xheWVySW5mbyk7CisgICAgbV9sYXllckluZm8uY29tbWl0ZWRTY3JvbGxQb3NpdGlv
biA9IEludFNpemUoMCwgMCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpz
ZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHdpZHRoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4IGU1
YWE0N2EuLmNmMjdiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjsKIGNsYXNzIEdyYXBoaWNzTGF5ZXJB
bmltYXRpb25zOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNsYXNzIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMzQsOCArMTM1LDEzIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wpOwogCisgICAgdm9pZCBzZXRTY3JvbGxhYmxl
QXJlYShTY3JvbGxhYmxlQXJlYSopOworICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gISFtX3Njcm9sbGFibGVBcmVhOyB9CisgICAgdm9pZCBzY3JvbGxCeShjb25zdCBGbG9h
dFNpemUmKTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJJRCBpZCgpIGNvbnN0OwogCisKICAgICB2
b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpOwogCiAgICAgSW50UmVjdCBjb3Zl
clJlY3QoKSBjb25zdCB7IHJldHVybiBtX21haW5CYWNraW5nU3RvcmUgPyBtX21haW5CYWNraW5n
U3RvcmUtPm1hcFRvQ29udGVudHMobV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlclJlY3QoKSkgOiBJ
bnRSZWN0KCk7IH0KQEAgLTI1OCw2ICsyNjQsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhp
Y3NMYXllckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRp
b25TdGFydFRpbWU7CisKKyAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKIH07
CiAKIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA4NjI0NTEzLi5mMDhhYmFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApA
QCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgYm9vbCBsYXllclNob3VsZEhhdmVCYWNraW5nU3RvcmUo
R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgcmV0dXJuIGxheWVyLT5kcmF3c0NvbnRlbnQoKSAm
JiBsYXllci0+Y29udGVudHNBcmVWaXNpYmxlKCkgJiYgIWxheWVyLT5zaXplKCkuaXNFbXB0eSgp
OwogfQogCi1Db29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZShDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQqIGNsaWVudCkKK0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZUNsaWVudCogY2xpZW50LCBDb29yZGluYXRlZFNjcm9sbENsaWVudCogc2Nyb2xsQ2xpZW50
KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9pc0FjdGl2ZShmYWxzZSkKICAgICAs
IG1fcm9vdExheWVySUQoSW52YWxpZENvb3JkaW5hdGVkTGF5ZXJJRCkKQEAgLTY2LDYgKzY2LDcg
QEAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW4KICNlbmRpZgogICAgICwgbV9iYWNrZ3JvdW5kQ29s
b3IoQ29sb3I6OndoaXRlKQogICAgICwgbV9zZXREcmF3c0JhY2tncm91bmQoZmFsc2UpCisgICAg
LCBtX3Njcm9sbENsaWVudChzY3JvbGxDbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIH0KQEAgLTMxOSw2ICszMjAsOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQogICAg
IGxheWVyLT5zZXREZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwgbGF5ZXJJ
bmZvLmRlYnVnQm9yZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXRTaG93UmVwYWludENvdW50ZXIo
bGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlcik7CiAKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyKGxheWVyKS0+dXBkYXRlQ29tbWl0ZWRTY3JvbGxQb3NpdGlvbihsYXllckluZm8u
Y29tbWl0ZWRTY3JvbGxQb3NpdGlvbik7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihsYXllciktPnNldElzU2Nyb2xsYWJsZUxheWVyKGxheWVySW5mby5pc1Njcm9sbGFibGVMYXll
cik7CisKICAgICBpZiAobGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCkKICAgICAgICAgbV9maXhl
ZExheWVycy5hZGQoaWQsIGxheWVyKTsKICAgICBlbHNlCkBAIC0zNDgsNiArMzUyLDggQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJ
RCBpZCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoMCAvKiBmYWN0b3J5ICovLCB0aGlzKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNl
KTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0
TGF5ZXJJRChpZCk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5n
ZXQoKSktPnNldFNjcm9sbENsaWVudChtX3Njcm9sbENsaWVudCk7CiAgICAgbV9sYXllcnMuYWRk
KGlkLCBuZXdMYXllci5yZWxlYXNlKCkpOwogfQogCkBAIC02NzMsNiArNjc5LDE2IEBAIHZvaWQg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3Im
IGNvbG9yKQogICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiB9CiAKK1RleHR1cmVNYXBw
ZXJMYXllciogQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudExh
eWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHJvb3RMYXllcigp
ID8gdG9UZXh0dXJlTWFwcGVyTGF5ZXIocm9vdExheWVyKCkpLT5nZXRTY3JvbGxhYmxlQ29udGVu
dExheWVyQXQocG9pbnQpIDogMDsKK30KKworVGV4dHVyZU1hcHBlckxheWVyKiBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmdldFRvcG1vc3RMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50
KQoreworICAgIHJldHVybiByb290TGF5ZXIoKSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RM
YXllcigpKS0+Z2V0VG9wbW9zdExheWVyQXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4
IDljOTIxYTcuLjgzZDVmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKIGNsYXNzIENvb3JkaW5hdGVk
TGF5ZXJJbmZvOworY2xhc3MgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQ7CiBjbGFzcyBDdXN0b21G
aWx0ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CiBjbGFzcyBUZXh0
dXJlTWFwcGVyTGF5ZXI7CkBAIC03Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAg
ICAgICB9CiAgICAgfTsKLSAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUoQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCosIENvb3JkaW5hdGVkU2Nyb2xsQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CiAgICAgdm9p
ZCBwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0LCBjb25zdCBGbG9hdFJlY3QmLCBUZXh0dXJlTWFwcGVyOjpQYWludEZsYWdzID0gMCk7CiAg
ICAgdm9pZCBwYWludFRvR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0Kik7
CkBAIC05Miw2ICs5Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQg
YXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIAorICAgIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFRv
cG1vc3RMYXllckF0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKwogICAgIC8vIFRoZSBw
YWludGluZyB0aHJlYWQgbXVzdCBsb2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdv
IG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFp
biB0aHJlYWQgbWFuYWdlcy4gU2VlIG1fY2xpZW50LgogICAgIC8vIEN1cnJlbnRseSwgUVF1aWNr
V2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKCkgbG9ja3MgdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBj
YWxsaW5nIGJvdGggbWV0aG9kcy4KICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsKQEAgLTIx
OCw2ICsyMjIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBUZXh0dXJlTWFwcGVyRlBTQ291
bnRlciBtX2Zwc0NvdW50ZXI7CisgICAgQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQqIG1fc2Nyb2xs
Q2xpZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaAppbmRleCAwZmEyYTEyLi44NTAzY2YxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRp
bmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAt
NjAsNiArNjAsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgIENvbG9yIHNv
bGlkQ29sb3I7CiAgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKICAgICBmbG9hdCBkZWJ1Z0Jv
cmRlcldpZHRoOworICAgIEZsb2F0U2l6ZSBjb21taXRlZFNjcm9sbFBvc2l0aW9uOwogCiAgICAg
dW5pb24gewogICAgICAgICBzdHJ1Y3QgewpAQCAtNzMsNiArNzQsNyBAQCBzdHJ1Y3QgQ29vcmRp
bmF0ZWRMYXllckluZm8gewogICAgICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOwog
ICAgICAgICAgICAgYm9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKICAgICAgICAgICAgIGJvb2wg
c2hvd1JlcGFpbnRDb3VudGVyIDogMTsKKyAgICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlTGF5
ZXIgOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNpZ25lZCBmbGFnczsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dAppbmRleCBiODY0ZDcwMy4uZjRiNzNhYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKQEAgLTE3LDYgKzE3LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BUEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcyIKQEAgLTc1LDYgKzc2LDggQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke1dFQkNPUkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BhZ2UiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvYW5pbWF0aW9uIgorICAgICIke1dF
QkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JF
X0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2RmY2RiNi4uNWMyMzk5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEzLTAyLTI3ICBMdWl6IEFnb3N0aW5pICA8
bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cg
c2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDMyMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGluZyBhY2NlbGVyYXRlZCBvdmVy
ZmxvdyBzY3JvbGxpbmcgZm9yIGNvb3JkaW5hdGVkIGdyYXBoaWNzLgorICAgICAgICBUaGUgbmV3
IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0
aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBo
aWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAuCisgICAgICAg
IChXS0Nvb3JkaW5hdGVkR2V0VG9wbW9zdExheWVyQXQpOgorICAgICAgICAoV0tDb29yZGluYXRl
ZEdldFNjcm9sbGFibGVDb250ZW50TGF5ZXJBdCk6CisgICAgICAgIChXS0Nvb3JkaW5hdGVkR2V0
TGF5ZXJJRCk6CisgICAgICAgIChXS0Nvb3JkaW5hdGVkU2Nyb2xsQnkpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGlj
cy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzY3JvbGxMYXllckJ5KToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
QVBJQ2FzdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5j
cHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKHRvSW1wbCk6CisgICAgICAgICh0b0FQ
SSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRz
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VC
YWNraW5nU3RvcmVzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzY3JvbGxMYXllckJ5KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOgorCiAyMDEzLTAyLTI3ICBDc2FiYSBPc3p0
cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gT25lIG1vcmUgdW5y
ZXZpZXdlZCBidWlsZGZpeCBmb3IgRUZMLCBHVEsgYW5kIFF0IGFmdGVyIHIxNDQyMTguCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjBkMjQxYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5l
LmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29vcmRp
bmF0ZWRTY2VuZS5oIgorCisjaW5jbHVkZSAiV0tDb29yZGluYXRlZEFQSUNhc3QuaCIKKworI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9UZXh0dXJlTWFwcGVyTGF5ZXIuaD4KKworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRMYXll
ciBXS0Nvb3JkaW5hdGVkR2V0VG9wbW9zdExheWVyQXQoV0tDb29yZGluYXRlZFNjZW5lIHNjZW5l
LCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoc2NlbmUpLT5nZXRU
b3Btb3N0TGF5ZXJBdChXZWJDb3JlOjpGbG9hdFBvaW50KHBvaW50LngsIHBvaW50LnkpKSk7Cit9
CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5hdGVkTGF5ZXIgV0tDb29yZGluYXRlZEdldFNjcm9sbGFi
bGVDb250ZW50TGF5ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUgc2NlbmUsIFdLUG9pbnQgcG9pbnQp
Cit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChzY2VuZSktPmdldFNjcm9sbGFibGVDb250ZW50
TGF5ZXJBdChXZWJDb3JlOjpGbG9hdFBvaW50KHBvaW50LngsIHBvaW50LnkpKSk7Cit9CisKK1dL
X0VYUE9SVCB1aW50MzJfdCBXS0Nvb3JkaW5hdGVkR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkTGF5
ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHRvSW1wbChsYXllciktPmxheWVySUQoKTsKK30KKwor
V0tfRVhQT1JUIHZvaWQgV0tDb29yZGluYXRlZFNjcm9sbEJ5KFdLQ29vcmRpbmF0ZWRMYXllciBs
YXllciwgV0tTaXplIG9mZnNldCkKK3sKKyAgICB0b0ltcGwobGF5ZXIpLT5zY3JvbGxCeShXZWJD
b3JlOjpGbG9hdFNpemUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tD
b29yZGluYXRlZFNjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZDNiMDk5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApAQCAt
MCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVfaAorI2RlZmluZSBXS0Nvb3JkaW5h
dGVkU2NlbmVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKwordHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwordHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlQ0dMYXllciogV0tDb29yZGluYXRlZExheWVyOworCitXS19FWFBPUlQgV0tDb29y
ZGluYXRlZExheWVyIFdLQ29vcmRpbmF0ZWRHZXRUb3Btb3N0TGF5ZXJBdChXS0Nvb3JkaW5hdGVk
U2NlbmUsIFdLUG9pbnQpOworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRMYXllciBXS0Nvb3JkaW5h
dGVkR2V0U2Nyb2xsYWJsZUNvbnRlbnRMYXllckF0KFdLQ29vcmRpbmF0ZWRTY2VuZSwgV0tQb2lu
dCk7CitXS19FWFBPUlQgdWludDMyX3QgV0tDb29yZGluYXRlZEdldExheWVySUQoV0tDb29yZGlu
YXRlZExheWVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29vcmRpbmF0ZWRTY3JvbGxCeShXS0Nvb3Jk
aW5hdGVkTGF5ZXIsIFdLU2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8v
IF9fY3BsdXNwbHVzCisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGM1
ZjdlODcuLjE1MGYzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eShEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYVByb3h5KQogICAgIDog
bV9kcmF3aW5nQXJlYVByb3h5KGRyYXdpbmdBcmVhUHJveHkpCi0gICAgLCBtX3NjZW5lKGFkb3B0
UmVmKG5ldyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUodGhpcykpKQorICAgICwgbV9zY2VuZShh
ZG9wdFJlZihuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKHRoaXMsIHRoaXMpKSkKIHsKICAg
ICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSwgdGhpcyk7CiB9
CkBAIC0yMzcsNSArMjM3LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlzcGF0Y2hVcGRh
dGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IsIG1f
c2NlbmUuZ2V0KCksIGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHk6OnNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQpCit7CisgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTY3JvbGxMYXllckJ5KGxheWVy
SUQsIG9mZnNldCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7Cit9CisK
IH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA5NDZiMzk5Li4zMjY3
M2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJX
ZWJDb29yZGluYXRlZFN1cmZhY2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRTY3JvbGxDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckFuaW1h
dGlvbi5oPgpAQCAtNDcsNyArNDgsNyBAQCBjbGFzcyBTdXJmYWNlVXBkYXRlSW5mbzsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5IDog
cHVibGljIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCwgcHVibGljIENv
cmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQsIHB1
YmxpYyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBXZWJDb3JlOjpDb29yZGluYXRl
ZFNjcm9sbENsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpA
QCAtOTgsNiArOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFt
ZSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSBPVkVS
UklERTsKIAorICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIHZv
aWQgZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5h
dGVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZEFQSUNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42OWFkZDgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZEFQSUNhc3QuaApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXS0Nvb3JkaW5hdGVkQVBJQ2FzdF9oCisjZGVmaW5lIFdLQ29vcmRpbmF0ZWRBUElD
YXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb29yZGluYXRlZFNjZW5lLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOworY2xhc3Mg
VGV4dHVyZU1hcHBlckxheWVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK2lubGluZSBX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHRvSW1wbChXS0Nvb3JkaW5hdGVkU2Nl
bmUgc2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lKj4oc2NlbmUpOworfQorCitpbmxpbmUgV0tDb29yZGluYXRlZFNj
ZW5lIHRvQVBJKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUpCit7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5lPihzY2VuZSk7Cit9
CisKK2lubGluZSBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvSW1wbChXS0Nvb3JkaW5h
dGVkTGF5ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKj4obGF5ZXIpOworfQorCitpbmxpbmUgV0tDb29yZGluYXRlZExh
eWVyIHRvQVBJKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZExheWVyPihsYXllcik7Cit9CisKKyNl
bmRpZiAvLyBXS0Nvb3JkaW5hdGVkQVBJQ2FzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA2NDRlMzc4Li4z
YTU3N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKICNlbmRpZgogICAgIHB1cmdlQmFj
a2luZ1N0b3JlcygpOwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgIGZv
ciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3Ig
aXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAg
ICAoKml0KS0+c2V0Q29vcmRpbmF0b3IoMCk7CisgICAgUmVnaXN0ZXJlZExheWVyc01hcDo6aXRl
cmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJl
ZExheWVyc01hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnNldENvb3JkaW5hdG9yKDApOwogfQog
CiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQ
YWdlKiB3ZWJQYWdlKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQogCiB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBs
YXllcikKIHsKLSAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKKyAgICBtX3Jl
Z2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKICAgICBtX2xheWVyc1RvRGVsZXRl
LmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CkBAIC02
MzgsNyArNjM4LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKIHsKICAgICBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGll
bnQpOwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKLSAgICBtX3JlZ2lzdGVyZWRM
YXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgp
LCBsYXllcik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAg
IGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHNjaGVkdWxlTGF5
ZXJGbHVzaCgpOwpAQCAtNzM1LDkgKzczNSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uCiAg
ICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50
c1JlY3QgPSByZWN0OwogCi0gICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAg
ICAgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+Ojpp
dGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwor
ICAgICAgICBSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRM
YXllcnMuZW5kKCk7CisgICAgICAgIGZvciAoUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0b3Ig
aXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgICAgICBpdC0+dmFsdWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTc4Niw5ICs3ODYsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9v
bD4gcHVyZ2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7CiAKLSAgICBIYXNoU2V0PFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVy
ZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAg
ICBSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CisgICAgZm9yIChSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVn
aXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1
ZS0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKICAgICBtX2ltYWdlQmFja2luZ3MuY2xlYXIoKTsK
ICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsKQEAgLTg1MSw1ICs4NTEsMTQgQEAgdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3Jl
OjpDb2xvciYgY29sb3IpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7CiB9CiAKK3Zv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIFJlZ2lzdGVyZWRM
YXllcnNNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZmluZChsYXllcklEKTsK
KyAgICBpZiAoaSA9PSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGktPnZhbHVlLT5zY3JvbGxCeShvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI2
MDUyODkuLmU4ZGU3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVD
b29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3Jk
aW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCisgICAgdm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90
IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKQEAg
LTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwYWdlIG92ZXJsYXkgbGF5ZXIu
IFdpbGwgYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHBhZ2Ugb3ZlcmxheS4KICAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogCi0gICAgSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXllcnM7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gUmVnaXN0ZXJlZExheWVyc01hcDsKKyAgICBSZWdp
c3RlcmVkTGF5ZXJzTWFwIG1fcmVnaXN0ZXJlZExheWVyczsKICAgICBWZWN0b3I8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRMYXllcklEPiBtX2xheWVyc1RvQ3JlYXRlOwogICAgIFZlY3RvcjxXZWJDb3Jl
OjpDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9EZWxldGU7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQsIFJlZlB0cjxXZWJDb3JlOjpD
b29yZGluYXRlZEltYWdlQmFja2luZz4gPiBJbWFnZUJhY2tpbmdNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
bWVzc2FnZXMuaW4KaW5kZXggNjY3MWIzMi4uNTdkZjMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNz
YWdlcy5pbgpAQCAtMjcsNSArMjcsNiBAQCBtZXNzYWdlcyAtPiBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFN
RSkKICAgICBBbmltYXRpb25GcmFtZVJlYWR5KCkKICNlbmRpZgorICAgIFNjcm9sbExheWVyQnko
dWludDMyX3QgbGF5ZXJJRCwgV2ViQ29yZTo6RmxvYXRTaXplIG9mZnNldCkKIH0KICNlbmRpZgot
LSAKMS43LjkuNQoK
</data>
<flag name="review"
          id="211417"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190884</attachid>
            <date>2013-02-28 22:15:05 -0800</date>
            <delta_ts>2013-03-01 00:10:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>49706</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBlYjY4MjM3ODg1NTJmOTBiM2MzZGIzZjc3MTI0ZTAwOTdmMDBiZmI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVGh1LCAyOCBGZWIgMjAxMyAyMjowNzowMiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hd
IEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3Mu
CiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCgpSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KCkltcGxlbWVudGluZyBhY2NlbGVyYXRlZCBvdmVyZmxvdyBz
Y3JvbGxpbmcgZm9yIGNvb3JkaW5hdGVkIGdyYXBoaWNzLgpUaGUgbmV3IEFQSSBXS0Nvb3JkaW5h
dGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4K
ClNvdXJjZS9XZWJDb3JlOgoKKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CihXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xs
TGF5ZXJEaWRDaGFuZ2UpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgoqIHBhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmg6CihTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3Mp
OgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHA6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1p
dFNjcm9sbE9mZnNldCk6CihXZWJDb3JlKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRJc1Njcm9sbGFibGVMYXllcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpjb21taXRMYXllclNjcm9sbE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CihXZWJDb3JlOjpHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xpZW50KToKKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRMYXllcklEKToKKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjppc1Njcm9sbGFibGVM
YXllcik6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6
CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2gpOgooV2ViQ29yZSk6
CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllclNlYXJjaENvbmRp
dGlvbik6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldFNjcm9sbGFibGVDb250ZW50
c0xheWVyQXQpOgooV2ViQ29yZTo6cm91bmQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpnZXRJbnRlZ2VyU2Nyb2xsT2Zmc2V0KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
Y2FsY3VsYXRlRWZmZWN0aXZlU2Nyb2xsT2Zmc2V0KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6c2Nyb2xsQnkpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3Jv
bGxPZmZzZXQpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aDoKKFRleHR1cmVNYXBwZXJMYXllcik6CihTY3JvbGxpbmdDbGllbnQpOgooV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgooV2ViQ29yZTo6VGV4dHVyZU1h
cHBlckxheWVyOjpzZXRMYXllcklEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6bGF5
ZXJJRCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVudCk6CihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZUxheWVyKToKKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTY3JvbGxhYmxlTGF5ZXIpOgooV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgooV2Vi
Q29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNjcm9sbEJ5KToKKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUpOgoqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aDoKKFdlYkNvcmUpOgooQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZSk6CihXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6ZG9TY3JvbGxMYXllckJ5KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzY3JvbGxMYXllckJ5KToKKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdCk6CiogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
OgooV2ViQ29yZSk6CihDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQpOgooQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRMYXllckluZm8uaDoKKENvb3JkaW5hdGVkTGF5ZXJJbmZvKToKClNvdXJjZS9X
ZWJLaXQyOgoKKiBDTWFrZUxpc3RzLnR4dDoKKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcDoKKFdLQ29vcmRpbmF0ZWRTY2VuZUdldFNjcm9s
bGFibGVDb250ZW50c0xheWVyQXQpOgooV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRCk6CihX
S0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeSk6CiogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oOgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKFdlYktpdDo6Q29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnNjcm9sbExheWVyQnkpOgooV2ViS2l0KToKKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgoo
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaDoKKFdlYkNvcmUpOgoodG9JbXBsKToK
KHRvQVBJKToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuY3BwOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
On5Db29yZGluYXRlZExheWVyVHJlZUhvc3QpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmRldGFjaExheWVyKToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
cmVhdGVHcmFwaGljc0xheWVyKToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpwdXJnZUJhY2tpbmdTdG9yZXMpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNjcm9sbExheWVyQnkpOgooV2ViS2l0KToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMu
aW46Ci0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgIDcyICsrKysrKysrKysrKysrKysrKysKIC4uLi9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgIHwgICAxOCArKysrKwogLi4uL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgfCAgICAyICsKIC4uLi9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIHwgICAzMSArKysrKysrKwogLi4u
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oICAgfCAgIDE3ICsr
KystCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgICAgICAgICB8
ICAgNzQgKysrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmggIHwgICAzNCArKysrKysrKy0KIC4uLi9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwICAgICAgIHwgICAyMiArKysrKysKIC4uLi90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggIHwgICAgOCArKysKIC4u
Li9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwICAgICAgIHwgICAyMCAr
KysrKysKIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgg
IHwgICAxMSArKy0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8u
aCAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzNiArKysrKysrKysrCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcCB8ICAgNDkgKysrKysrKysrKysrKwogLi4uL0FQ
SS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oICAgfCAgIDQ4ICsrKysr
KysrKysrKysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgICAgICAgICAg
ICAgIHwgICAgNSArKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggICAgICAg
ICAgICAgICAgfCAgICAyICsKIC4uLi9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmggICAgICAg
ICAgICAgICAgICAgIHwgICA2MCArKysrKysrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMzEgKysrKystLS0KIC4uLi9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAgNSArLQogLi4u
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgICAxICsK
IDIyIGZpbGVzIGNoYW5nZWQsIDUzNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
U2NlbmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaAoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA3ZTk5YzFlLi40NGQ0NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIwMTMtMDIt
MjggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBB
Y2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50
aW5nIGFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgY29vcmRpbmF0ZWQgZ3JhcGhp
Y3MuCisgICAgICAgIFRoZSBuZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBtYXkgYmUgdXNlZCB0
byBzY3JvbGwgbGF5ZXJzIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRTY3JvbGxPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0SXNTY3JvbGxhYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJTY3JvbGxPZmZz
ZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OnNldFNjcm9sbENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0TGF5ZXJJRCk6CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6aXNT
Y3JvbGxhYmxlTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVy
OjpoaXRUZXN0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpnZXRTY3JvbGxhYmxlQ29udGVudHNM
YXllckF0KToKKyAgICAgICAgKFdlYkNvcmU6OnJvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6Z2V0SW50ZWdlclNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNhbGN1bGF0ZUVmZmVjdGl2ZVNjcm9sbE9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6Cisg
ICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoU2Nyb2xsaW5nQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBlckxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0TGF5ZXJJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmxheWVySUQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJc1Njcm9sbGFibGVMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZUxheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YWRqdXN0ZWRQb3NpdGlvbik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzY3JvbGxC
eSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXll
clN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRvU2Nyb2xsTGF5
ZXJCeSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6c2Nyb2xsTGF5ZXJCeSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVySW5mbyk6CisKIDIwMTMtMDIt
MjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDQzNzAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKaW5kZXggYTFiZjNiZC4uOWQ4ZWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcApAQCAtNDcsNiArNDcsMjQgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3IKICAg
ICB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihsYXllciktPnNldEZpeGVkVG9WaWV3cG9ydChl
bmFibGUpOwogfQogCit2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
czo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEpCit7CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IHRv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKHNjcm9sbExheWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Ny
b2xsYWJsZUFyZWEpKTsKKyAgICBpZiAoIWxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBs
YXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpOworfQorCit2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxl
QXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7CisgICAgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKiBsYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKHNjcm9sbExh
eWVyRm9yU2Nyb2xsYWJsZUFyZWEoc2Nyb2xsYWJsZUFyZWEpKTsKKyAgICBpZiAoIWxheWVyKQor
ICAgICAgICByZXR1cm47CisKKyAgICBsYXllci0+c2V0U2Nyb2xsYWJsZUFyZWEoMCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCmluZGV4IDg3YzJjNzIuLjkwY2M0MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaApAQCAtMzcsNiArMzcsOCBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKFBh
Z2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVy
KEdyYXBoaWNzTGF5ZXIqLCBib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsYWJsZUFyZWFT
Y3JvbGxMYXllckRpZENoYW5nZShTY3JvbGxhYmxlQXJlYSopOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cAppbmRleCA4MDEzZWM0Li43ZmNiOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKQEAgLTU3LDYgKzU3LDcgQEAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWUK
ICAgICAsIG1fZGVidWdCb3JkZXJXaWR0aCgwKQogICAgICwgbV9jb250ZW50c0xheWVyKDApCiAg
ICAgLCBtX2FuaW1hdGlvblN0YXJ0VGltZSgwKQorICAgICwgbV9pc1Njcm9sbGFibGVMYXllcihm
YWxzZSkKIHsKIH0KIApAQCAtNDAzLDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNo
YW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpjb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAg
IGlmIChvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWl0dGVk
U2Nyb2xsT2Zmc2V0ICs9IG9mZnNldDsKKyAgICBub3RpZnlDaGFuZ2UoQ29tbWl0dGVkU2Nyb2xs
UG9zaXRpb24pOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Nj
cm9sbGFibGVMYXllcihib29sIGlzU2Nyb2xsYWJsZUxheWVyKQoreworICAgIGlmIChtX2lzU2Ny
b2xsYWJsZUxheWVyID09IGlzU2Nyb2xsYWJsZUxheWVyKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzU2Nyb2xsYWJsZUxheWVyID0gaXNTY3JvbGxhYmxlTGF5ZXI7CisgICAgbm90aWZ5Q2hh
bmdlKFNjcm9sbGFibGVMYXllcik7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQog
Ki8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKQpAQCAtNTQzLDkgKzU2MiwyMSBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAgIGlmIChtX2NoYW5nZU1h
c2sgJiBGaXhlZFRvVmlld3BvckNoYW5nZSkKICAgICAgICAgbV9sYXllci0+c2V0Rml4ZWRUb1Zp
ZXdwb3J0KGZpeGVkVG9WaWV3cG9ydCgpKTsKIAorICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb21t
aXR0ZWRTY3JvbGxQb3NpdGlvbikKKyAgICAgICAgY29tbWl0TGF5ZXJTY3JvbGxPZmZzZXQoKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBTY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIG1fbGF5
ZXItPnNldElzU2Nyb2xsYWJsZUxheWVyKGlzU2Nyb2xsYWJsZUxheWVyKCkpOworCiAgICAgbV9j
aGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpjb21taXRMYXllclNjcm9sbE9mZnNldCgpCit7CisgICAgbV9sYXllci0+Y29tbWl0U2Ny
b2xsT2Zmc2V0KG1fY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKKyAgICBtX2NvbW1pdHRlZFNjcm9s
bE9mZnNldCA9IEludFNpemUoKTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAq
Lwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmgKaW5kZXggOTMyOWZiYy4uOGU4NWIwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmgKQEAgLTM0LDYgKzM0LDkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpOwogCisgICAgdm9pZCBzZXRTY3JvbGxD
bGllbnQoVGV4dHVyZU1hcHBlckxheWVyOjpTY3JvbGxpbmdDbGllbnQqIGNsaWVudCkgeyBtX2xh
eWVyLT5zZXRTY3JvbGxDbGllbnQoY2xpZW50KTsgfQorICAgIHZvaWQgc2V0TGF5ZXJJRCh1aW50
MzJfdCBpZCkgeyBtX2xheWVyLT5zZXRMYXllcklEKGlkKTsgfQorCiAgICAgLy8gcmVpbXBzIGZy
b20gR3JhcGhpY3NMYXllci5oCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwpAQCAtODEsNiArODQs
MTAgQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KGNv
bnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZUxheWVyKGJvb2wpOworICAg
IGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZUxh
eWVyOyB9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZp
bHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBAIC0xMDUsNiArMTEyLDgg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAg
IGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogCisgICAgdm9pZCBjb21taXRM
YXllclNjcm9sbE9mZnNldCgpOworCiAgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBk
ZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KICAgICAvLyBtb2Rp
ZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBp
biB0aGUgbmV4dCBmbHVzaC4KICAgICBlbnVtIENoYW5nZU1hc2sgewpAQCAtMTQzLDcgKzE1Miwx
MCBAQCBwcml2YXRlOgogICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8
IDI1KSwKIAogICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8IDI2KSwK
LSAgICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNykKKyAgICAgICAg
QW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNyksCisKKyAgICAgICAgQ29tbWl0
dGVkU2Nyb2xsUG9zaXRpb24gPSAgICAoMUwgPDwgMjgpLAorICAgICAgICBTY3JvbGxhYmxlTGF5
ZXIgPSAgICAgICAgICAgKDFMIDw8IDI5KQogICAgIH07CiAgICAgdm9pZCBub3RpZnlDaGFuZ2Uo
Q2hhbmdlTWFzayk7CiAKQEAgLTE2NSw2ICsxNzcsOSBAQCBwcml2YXRlOgogICAgIEZsb2F0UmVj
dCBtX25lZWRzRGlzcGxheVJlY3Q7CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMgbV9hbmlt
YXRpb25zOwogICAgIGRvdWJsZSBtX2FuaW1hdGlvblN0YXJ0VGltZTsKKworICAgIEludFNpemUg
bV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CisgICAgYm9vbCBtX2lzU2Nyb2xsYWJsZUxheWVyOwog
fTsKIAogaW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAKaW5kZXggMTBiZWYyNi4uOTJiOWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5jcHAKQEAgLTY3Myw1ICs2NzMsNzkgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAg
IG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQog
Cit0ZW1wbGF0ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogVGV4
dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0U2VhcmNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBT
ZWFyY2hDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIGlmICghbV9zdGF0ZS52aXNpYmxlIHx8
ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHJlc3VsdCA9IDA7CisgICAgZm9yIChpbnQgaSA9IG1fY2hpbGRyZW4u
c2l6ZSgpIC0gMTsgIXJlc3VsdCAmJiBpID49IDA7IC0taSkKKyAgICAgICAgcmVzdWx0ID0gbV9j
aGlsZHJlbltpXS0+aGl0VGVzdFNlYXJjaChwb2ludCwgY29uZGl0aW9uKTsKKworICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQgOiBjb25kaXRpb24odGhpcywgcG9pbnQpID8gdGhpcyA6IDA7Cit9
CisKK2Jvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRp
b24oVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7
CisgICAgaWYgKCFsYXllci0+aXNTY3JvbGxhYmxlTGF5ZXIoKSB8fCAhbGF5ZXItPm1fcGFyZW50
IHx8ICFsYXllci0+bV9wYXJlbnQtPm1fcGFyZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHBhcmVudExheWVyID0gbGF5ZXItPm1fcGFyZW50LT5t
X3BhcmVudDsKKyAgICByZXR1cm4gcGFyZW50TGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21i
aW5lZCgpLm1hcFJlY3QocGFyZW50TGF5ZXItPm1fc3RhdGUuY29udGVudHNSZWN0KS5jb250YWlu
cyhwb2ludCk7Cit9CisKK1RleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpn
ZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQorewor
ICAgIHJldHVybiBoaXRUZXN0U2VhcmNoKHBvaW50LCAmVGV4dHVyZU1hcHBlckxheWVyOjpzY3Jv
bGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgcm91
bmQoZmxvYXQgdmFsdWUsIGludCYgaW50ZWdlclBhcnQsIGZsb2F0JiBmcmFjUGFydCkKK3sKKyAg
ICBpbnRlZ2VyUGFydCA9IHN0YXRpY19jYXN0PGludD4odmFsdWUgPj0gMCA/IHZhbHVlICsgLjUg
OiB2YWx1ZSAtIC41KTsKKyAgICBmcmFjUGFydCA9IHZhbHVlIC0gaW50ZWdlclBhcnQ7Cit9CisK
K0ludFNpemUgVGV4dHVyZU1hcHBlckxheWVyOjpnZXRJbnRlZ2VyU2Nyb2xsT2Zmc2V0KEZsb2F0
U2l6ZSBvZmZzZXQpCit7CisgICAgbV9wZW5kaW5nU2Nyb2xsT2Zmc2V0ICs9IG9mZnNldDsKKwor
ICAgIGludCBpbnRXaWR0aCwgaW50SGVpZ2h0OworICAgIGZsb2F0IGZyYWNXaWR0aCwgZnJhY0hl
aWdodDsKKyAgICByb3VuZChtX3BlbmRpbmdTY3JvbGxPZmZzZXQud2lkdGgoKSwgaW50V2lkdGgs
IGZyYWNXaWR0aCk7CisgICAgcm91bmQobV9wZW5kaW5nU2Nyb2xsT2Zmc2V0LmhlaWdodCgpLCBp
bnRIZWlnaHQsIGZyYWNIZWlnaHQpOworCisgICAgbV9wZW5kaW5nU2Nyb2xsT2Zmc2V0ID0gRmxv
YXRTaXplKGZyYWNXaWR0aCwgZnJhY0hlaWdodCk7CisgICAgcmV0dXJuIEludFNpemUoaW50V2lk
dGgsIGludEhlaWdodCk7Cit9CisKK0Zsb2F0U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNhbGN1
bGF0ZUVmZmVjdGl2ZVNjcm9sbE9mZnNldChGbG9hdFNpemUgb2Zmc2V0KQoreworICAgIGRvdWJs
ZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7CisgICAgbV9jdXJyZW50VHJhbnNmb3Jt
LmNvbWJpbmVkKCkuaW52ZXJzZSgpLm1hcCgwLCAwLCB6ZXJvWCwgemVyb1kpOworICAgIG1fY3Vy
cmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLmludmVyc2UoKS5tYXAob2Zmc2V0LndpZHRoKCksIG9m
ZnNldC5oZWlnaHQoKSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShv
ZmZzZXRYIC0gemVyb1gsIG9mZnNldFkgLSB6ZXJvWSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBl
ckxheWVyOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKK3sKKyAgICBpZiAoIW1f
c2Nyb2xsQ2xpZW50IHx8IG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RmxvYXRTaXplIHNjcm9sbG9mZnNldCA9IGNhbGN1bGF0ZUVmZmVjdGl2ZVNjcm9sbE9mZnNldChv
ZmZzZXQpOworICAgIG1fVUlTaWRlU2Nyb2xsT2Zmc2V0ICs9IHNjcm9sbG9mZnNldDsKKworICAg
IG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOworICAg
IG1fc2Nyb2xsQ2xpZW50LT5zY3JvbGxMYXllckJ5KG1fbGF5ZXJJRCwgZ2V0SW50ZWdlclNjcm9s
bE9mZnNldChzY3JvbGxvZmZzZXQpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmNv
bW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKG9mZnNl
dC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9VSVNpZGVTY3JvbGxPZmZzZXQg
PSBGbG9hdFNpemUobV9VSVNpZGVTY3JvbGxPZmZzZXQud2lkdGgoKSAtIG9mZnNldC53aWR0aCgp
LCBtX1VJU2lkZVNjcm9sbE9mZnNldC5oZWlnaHQoKSAtIG9mZnNldC5oZWlnaHQoKSk7CisgICAg
bV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9CisK
IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCmluZGV4IDYwMmIyYzMuLmQwNjEzN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIGNsYXNzIFRleHR1
cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisKKyAgICBjbGFzcyBTY3JvbGxpbmdDbGllbnQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSA9IDA7CisgICAgfTsKKwogICAgIFRl
eHR1cmVNYXBwZXJMYXllcigpCiAgICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2Vm
ZmVjdFRhcmdldCgwKQpAQCAtNDcsMTAgKzUzLDI1IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2Nl
bnRlclooMCkKICAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkKICAgICAgICAgLCBtX2ZpeGVk
VG9WaWV3cG9ydChmYWxzZSkKKyAgICAgICAgLCBtX2xheWVySUQoMCkKKyAgICAgICAgLCBtX3Nj
cm9sbENsaWVudCgwKQorICAgICAgICAsIG1faXNTY3JvbGxhYmxlTGF5ZXIoZmFsc2UpCiAgICAg
eyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAorICAgIHZvaWQgc2V0
TGF5ZXJJRCh1aW50MzJfdCBpZCkgeyBtX2xheWVySUQgPSBpZDsgfQorICAgIHVpbnQzMl90IGxh
eWVySUQoKSB7IHJldHVybiBtX2xheWVySUQ7IH0KKworICAgIFRleHR1cmVNYXBwZXJMYXllciog
Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb3MpOworCisg
ICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoU2Nyb2xsaW5nQ2xpZW50KiBzY3JvbGxDbGllbnQpIHsg
bV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQoY29u
c3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlTGF5ZXIoYm9vbCBpc1Njcm9s
bGFibGVMYXllcikgeyBtX2lzU2Nyb2xsYWJsZUxheWVyID0gaXNTY3JvbGxhYmxlTGF5ZXI7IH0K
KyAgICBib29sIGlzU2Nyb2xsYWJsZUxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc1Njcm9sbGFi
bGVMYXllcjsgfQorCiAgICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0Owog
ICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0
dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAKQEAgLTEwOCw3ICsxMjksNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBh
cnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7CiAKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1
cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50
ZXh0dXJlKCkgOiAwOyB9Ci0gICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGE7IH0KKyAgICBGbG9h
dFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1f
c2Nyb2xsUG9zaXRpb25EZWx0YSAtIG1fVUlTaWRlU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBp
c0FuY2VzdG9yRml4ZWRUb1ZpZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcmVwbGljYVRyYW5zZm9ybSgpOwogICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxh
eWVyKik7CkBAIC0xNTksNiArMTgwLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBmbG9hdCBt
X2NlbnRlclo7CiAKKyAgICB0ZW1wbGF0ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRleHR1cmVN
YXBwZXJMYXllciogaGl0VGVzdFNlYXJjaChjb25zdCBGbG9hdFBvaW50JiwgU2VhcmNoQ29uZGl0
aW9uKTsKKyAgICBzdGF0aWMgYm9vbCBzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24oVGV4
dHVyZU1hcHBlckxheWVyKiwgY29uc3QgRmxvYXRQb2ludCYpOworCisgICAgSW50U2l6ZSBnZXRJ
bnRlZ2VyU2Nyb2xsT2Zmc2V0KEZsb2F0U2l6ZSk7CisgICAgRmxvYXRTaXplIGNhbGN1bGF0ZUVm
ZmVjdGl2ZVNjcm9sbE9mZnNldChGbG9hdFNpemUpOworCiAgICAgc3RydWN0IFN0YXRlIHsKICAg
ICAgICAgRmxvYXRQb2ludCBwb3M7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludDsK
QEAgLTIxMSw2ICsyMzgsMTEgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9u
cyBtX2FuaW1hdGlvbnM7CiAgICAgRmxvYXRTaXplIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsKICAg
ICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OworICAgIHVpbnQzMl90IG1fbGF5ZXJJRDsKKyAgICBT
Y3JvbGxpbmdDbGllbnQqIG1fc2Nyb2xsQ2xpZW50OworICAgIGJvb2wgbV9pc1Njcm9sbGFibGVM
YXllcjsKKyAgICBGbG9hdFNpemUgbV9VSVNpZGVTY3JvbGxPZmZzZXQ7CisgICAgRmxvYXRTaXpl
IG1fcGVuZGluZ1Njcm9sbE9mZnNldDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNGM0M2FhNy4uYjdh
ZDFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtMTIyLDYgKzEyMyw3IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAs
IG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5
ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQorICAgICwgbV9zY3JvbGxh
YmxlQXJlYSgwKQogewogICAgIHN0YXRpYyBDb29yZGluYXRlZExheWVySUQgbmV4dExheWVySUQg
PSAxOwogICAgIG1faWQgPSBuZXh0TGF5ZXJJRCsrOwpAQCAtNDY1LDYgKzQ2NywyNCBAQCBDb29y
ZGluYXRlZExheWVySUQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faWQ7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7CisgICAgYm9vbCBv
bGRTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlKCk7CisgICAgbV9zY3JvbGxhYmxlQXJlYSA9IHNj
cm9sbGFibGVBcmVhOworICAgIGlmIChvbGRTY3JvbGxhYmxlICE9IGlzU2Nyb2xsYWJsZSgpKQor
ICAgICAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKCFp
c1Njcm9sbGFibGUoKSB8fCBvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc2Nyb2xsYWJsZUFyZWEtPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChtX3Njcm9sbGFi
bGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKKyAgICBtX2xheWVySW5mby5jb21t
aXR0ZWRTY3JvbGxPZmZzZXQgKz0gb2Zmc2V0OworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsK
K30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChi
b29sIGlzRml4ZWQpCiB7CiAgICAgaWYgKG1fZml4ZWRUb1ZpZXdwb3J0ID09IGlzRml4ZWQpCkBA
IC01NzIsNiArNTkyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXll
clN0YXRlKCkKICAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IG1fYWRqdXN0ZWRBbmNob3JQ
b2ludDsKICAgICBtX2xheWVySW5mby5wb3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9s
YXllckluZm8uc2l6ZSA9IG1fYWRqdXN0ZWRTaXplOworICAgIG1fbGF5ZXJJbmZvLmlzU2Nyb2xs
YWJsZUxheWVyID0gaXNTY3JvbGxhYmxlKCk7CiAKICAgICBtX2xheWVySW5mby5zaG93RGVidWdC
b3JkZXJzID0gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsKICAgICBpZiAobV9sYXllckluZm8uc2hv
d0RlYnVnQm9yZGVycykKQEAgLTU3OSw2ICs2MDAsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnNob3dSZXBhaW50Q291
bnRlciA9IGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiAKICAgICBtX2Nvb3JkaW5hdG9yLT5z
eW5jTGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CisgICAgbV9sYXllckluZm8uY29tbWl0
dGVkU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB3aWR0aCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aAppbmRleCBlNWFhNDdhLi4wZmZkMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00NCw2ICs0NCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFw
aGljc0xheWVyQW5pbWF0aW9uczsKK2NsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtMTM0LDggKzEzNSwxMyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKIAorICAgIHZvaWQgc2V0
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9zY3JvbGxhYmxlQXJlYTsgfQorICAgIHZvaWQgc2Nyb2xsQnko
Y29uc3QgSW50U2l6ZSYpOworCiAgICAgQ29vcmRpbmF0ZWRMYXllcklEIGlkKCkgY29uc3Q7CiAK
KwogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCk7CiAKICAgICBJbnRS
ZWN0IGNvdmVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkJhY2tpbmdTdG9yZSA/IG1fbWFp
bkJhY2tpbmdTdG9yZS0+bWFwVG9Db250ZW50cyhtX21haW5CYWNraW5nU3RvcmUtPmNvdmVyUmVj
dCgpKSA6IEludFJlY3QoKTsgfQpAQCAtMjU4LDYgKzI2NCw4IEBAIHByaXZhdGU6CiAgICAgVGlt
ZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAg
ICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgZG91YmxlIG1fbGFz
dEFuaW1hdGlvblN0YXJ0VGltZTsKKworICAgIFNjcm9sbGFibGVBcmVhKiBtX3Njcm9sbGFibGVB
cmVhOwogfTsKIAogQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiB0b0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcihHcmFwaGljc0xheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IDg2MjQ1MTMuLmMwYmYyYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCkBAIC0zMTksNiArMzE5LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICBs
YXllci0+c2V0RGVidWdCb3JkZXIobGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5m
by5kZWJ1Z0JvcmRlcldpZHRoKTsKICAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxh
eWVySW5mby5zaG93UmVwYWludENvdW50ZXIpOwogCisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihsYXllciktPmNvbW1pdFNjcm9sbE9mZnNldChsYXllckluZm8uY29tbWl0dGVkU2Ny
b2xsT2Zmc2V0KTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0
SXNTY3JvbGxhYmxlTGF5ZXIobGF5ZXJJbmZvLmlzU2Nyb2xsYWJsZUxheWVyKTsKKwogICAgIGlm
IChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFkZChp
ZCwgbGF5ZXIpOwogICAgIGVsc2UKQEAgLTM0OCw2ICszNTEsOCBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAg
IE93blB0cjxHcmFwaGljc0xheWVyPiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgw
IC8qIGZhY3RvcnkgKi8sIHRoaXMpOwogICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIo
bmV3TGF5ZXIuZ2V0KCkpLT5zZXRIYXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRMYXllcklEKGlkKTsK
KyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0U2Ny
b2xsQ2xpZW50KHRoaXMpOwogICAgIG1fbGF5ZXJzLmFkZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgp
KTsKIH0KIApAQCAtNjEwLDYgKzYxNSwxNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZTo6cHVyZ2VHTFJlc291cmNlcygpCiAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUJhY2tpbmdTdG9yZXMsIHRoaXMpKTsKIH0KIAor
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRvU2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBs
YXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnNjcm9sbExh
eWVyQnkobGF5ZXJJRCwgb2Zmc2V0KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0
KQoreworICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6ZG9TY3JvbGxMYXllckJ5LCB0aGlzLCBsYXllcklELCBvZmZzZXQpKTsKK30KKwogdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAg
aWYgKG1fY2xpZW50KQpAQCAtNjczLDYgKzY4OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX2Jh
Y2tncm91bmRDb2xvciA9IGNvbG9yOwogfQogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcm9vdExheWVyKCkgPyB0b1RleHR1cmVNYXBw
ZXJMYXllcihyb290TGF5ZXIoKSktPmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQocG9pbnQp
IDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDljOTIxYTcuLjhlNTY3MWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTMzLDYg
KzMzLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJGUFNDb3VudGVyLmgi
CisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00
OSw3ICs1MCw2IEBAIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOwogY2xhc3MgQ29vcmRp
bmF0ZWRMYXllckluZm87CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm87Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiAKIGNsYXNzIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02MCw5ICs2MCwxMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVWaWV3cG9ydCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTGF5ZXJCeSh1aW50
MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpID0gMDsKIH07CiAKLWNsYXNzIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQsIHB1
YmxpYyBUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAg
c3RydWN0IFRpbGVVcGRhdGUgewogICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7CkBAIC05Miw2
ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVuZFVw
ZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXIqIGdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgV2ViQ29yZTo6Rmxv
YXRQb2ludCYpOworCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5
ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKwogICAgIC8vIFRoZSBwYWludGluZyB0aHJl
YWQgbXVzdCBsb2NrIHRoZSBtYWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJl
Y2F1c2UgdHdvIG1ldGhvZHMgYWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFu
YWdlcy4gU2VlIG1fY2xpZW50LgogICAgIC8vIEN1cnJlbnRseSwgUVF1aWNrV2ViUGFnZTo6dXBk
YXRlUGFpbnROb2RlKCkgbG9ja3MgdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBjYWxsaW5nIGJvdGgg
bWV0aG9kcy4KICAgICB2b2lkIHB1cmdlR0xSZXNvdXJjZXMoKTsKQEAgLTE2OSw2ICsxNzQsOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NM
YXllciopOwogICAgIHZvaWQgcmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhp
Y3NMYXllciopOwogCisgICAgdm9pZCBkb1Njcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwg
Y29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNj
ZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2sh
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4gPiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4
IG1fcmVuZGVyUXVldWVNdXRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkTGF5ZXJJbmZvLmgKaW5kZXggMGZhMmExMi4uNTZiZDE3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
TGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3Ry
dWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICBDb2xvciBzb2xpZENvbG9yOwogICAgIENv
bG9yIGRlYnVnQm9yZGVyQ29sb3I7CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKKyAgICBJ
bnRTaXplIGNvbW1pdHRlZFNjcm9sbE9mZnNldDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgc3Ry
dWN0IHsKQEAgLTczLDYgKzc0LDcgQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAg
ICAgICAgICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0IDogMTsKICAgICAgICAgICAgIGJvb2wgc2hv
d0RlYnVnQm9yZGVycyA6IDE7CiAgICAgICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6
IDE7CisgICAgICAgICAgICBib29sIGlzU2Nyb2xsYWJsZUxheWVyIDogMTsKICAgICAgICAgfTsK
ICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXgg
Yjg2NGQ3MDMuLmUxMWJkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC0xNyw2ICsxNyw3IEBA
IHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJIgogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MvQVBJL0MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9B
UEkvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SS9jcHAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbiIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCkBAIC03NSw2
ICs3Niw4IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JF
X0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlIgogICAgICIke1dF
QkNPUkVfRElSfS9wYWdlL2FuaW1hdGlvbiIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3Jv
bGxpbmciCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzIgpAQCAtMzQwLDYgKzM0Myw4IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRp
b24uY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGlu
YXRlZFNjZW5lLmNwcAorCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vV2ViQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2M2MzYzMwLi4wMjEyZTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTMtMDItMjggIEx1aXogQWdvc3RpbmkgIDxsdWl6
LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBBY2NlbGVyYXRlZCBvdmVyZmxvdyBzY3Jv
bGxpbmcgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIGFjY2VsZXJhdGVkIG92ZXJmbG93
IHNjcm9sbGluZyBmb3IgY29vcmRpbmF0ZWQgZ3JhcGhpY3MuCisgICAgICAgIFRoZSBuZXcgQVBJ
IFdLQ29vcmRpbmF0ZWRTY2VuZSBtYXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIGluIHRoZSBV
SSBwcm9jZXNzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHA6CisgICAg
ICAgIChXS0Nvb3JkaW5hdGVkU2NlbmVHZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKyAg
ICAgICAgKFdLQ29vcmRpbmF0ZWRTY2VuZUdldExheWVySUQpOgorICAgICAgICAoV0tDb29yZGlu
YXRlZFNjZW5lU2Nyb2xsQnkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzY3JvbGxMYXllckJ5KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKHRvSW1wbCk6CisgICAgICAgICh0b0FQSSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpkZXRhY2hMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxMYXllckJ5KToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2Vz
LmluOgorCiAyMDEzLTAyLTI4ICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4K
IAogICAgICAgICBbV0syXSBSZWZhY3RvcmluZyA6IEZpeCBpbmRlbnRhdGlvbiBhbmQgYnJhY2Vz
IGluIFdlYkluc3BlY3RvckNsaWVudC5ofGNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29y
ZGluYXRlZFNjZW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWM3
YTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKQEAgLTAsMCArMSw0OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0Nvb3JkaW5hdGVkU2NlbmUuaCIKKworI2luY2x1
ZGUgIldLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVy
TGF5ZXIuaD4KKworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIFdLQ29vcmRpbmF0
ZWRTY2VuZUdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoV0tDb29yZGluYXRlZFNjZW5lIHNj
ZW5lLCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoc2NlbmUpLT5n
ZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdlYkNvcmU6OkZsb2F0UG9pbnQocG9pbnQueCwg
cG9pbnQueSkpKTsKK30KKworV0tfRVhQT1JUIHVpbnQzMl90IFdLQ29vcmRpbmF0ZWRTY2VuZUdl
dExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHRv
SW1wbChsYXllciktPmxheWVySUQoKTsKK30KKworV0tfRVhQT1JUIHZvaWQgV0tDb29yZGluYXRl
ZFNjZW5lU2Nyb2xsQnkoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIsIFdLU2l6ZSBvZmZz
ZXQpCit7CisgICAgdG9JbXBsKGxheWVyKS0+c2Nyb2xsQnkoV2ViQ29yZTo6RmxvYXRTaXplKG9m
ZnNldC53aWR0aCwgb2Zmc2V0LmhlaWdodCkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29v
cmRpbmF0ZWRTY2VuZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0MzNi
MTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKQEAgLTAsMCArMSw0OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tDb29yZGluYXRlZFNjZW5lX2gKKyNkZWZpbmUgV0tDb29yZGluYXRlZFNjZW5lX2gKKworI2lu
Y2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVy
biAiQyIgeworI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNH
U2NlbmUqIFdLQ29vcmRpbmF0ZWRTY2VuZTsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNHTGF5ZXIq
IFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyOworCitXS19FWFBPUlQgV0tDb29yZGluYXRlZFNjZW5l
TGF5ZXIgV0tDb29yZGluYXRlZFNjZW5lR2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChXS0Nv
b3JkaW5hdGVkU2NlbmUsIFdLUG9pbnQpOworV0tfRVhQT1JUIHVpbnQzMl90IFdLQ29vcmRpbmF0
ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIpOworV0tfRVhQT1JUIHZv
aWQgV0tDb29yZGluYXRlZFNjZW5lU2Nyb2xsQnkoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIsIFdL
U2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8vIF9fY3BsdXNwbHVzCisK
KyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IGM1ZjdlODcuLjM3OTgwZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94
eS5jcHAKQEAgLTIzNyw1ICsyMzcsMTAgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBkaXNwYXRj
aFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRDb2xv
ciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6c2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQpCit7CisgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPnByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpTY3JvbGxMYXllckJ5KGxh
eWVySUQsIG9mZnNldCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7Cit9
CisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA5NDZiMzk5Li5i
MmYwYjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKQEAgLTk4LDYgKzk4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW5k
ZXJOZXh0RnJhbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3Rv
cmVzKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTGF5ZXJCeSh1aW50MzJf
dCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpOworCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dL
Q29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzlmMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5l
QVBJQ2FzdC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3Rf
aAorI2RlZmluZSBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0X2gKKworI2luY2x1ZGUgPFdlYktp
dDIvV0tDb29yZGluYXRlZFNjZW5lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK2lubGluZSBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUqIHRvSW1wbChXS0Nvb3JkaW5hdGVkU2NlbmUgc2NlbmUpCit7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKj4oc2Nl
bmUpOworfQorCitpbmxpbmUgV0tDb29yZGluYXRlZFNjZW5lIHRvQVBJKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V0tDb29yZGluYXRlZFNjZW5lPihzY2VuZSk7Cit9CisKK2lubGluZSBXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXIqIHRvSW1wbChXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBsYXllcikKK3sK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIq
PihsYXllcik7Cit9CisKK2lubGluZSBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciB0b0FQSShXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQoreworICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyPihsYXllcik7Cit9CisKKyNlbmRpZiAvLyBX
S0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDY0NGUzNzguLjRmZGE4
NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcApAQCAtNzIsOSArNzIsOSBAQCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhvc3QoKQogI2VuZGlmCiAgICAgcHVyZ2VCYWNraW5n
U3RvcmVzKCk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9
IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgq
aXQpLT5zZXRDb29yZGluYXRvcigwKTsKKyAgICBSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRv
ciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChSZWdpc3RlcmVkTGF5
ZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+c2V0Q29vcmRpbmF0b3IoMCk7CiB9CiAKIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KFdlYlBhZ2Uq
IHdlYlBhZ2UpCkBAIC00NjcsNyArNDY3LDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0ZXJQcm9ncmFtcygpCiAKIHZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpkZXRhY2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewotICAgIG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXIpOworICAgIG1fcmVnaXN0
ZXJlZExheWVycy5yZW1vdmUobGF5ZXItPmlkKCkpOwogICAgIG1fbGF5ZXJzVG9EZWxldGUuYXBw
ZW5kKGxheWVyLT5pZCgpKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KQEAgLTYzOCw3
ICs2MzgsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogewogICAgIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciogbGF5ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7
CiAgICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwotICAgIG1fcmVnaXN0ZXJlZExheWVy
cy5hZGQobGF5ZXIpOworICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXItPmlkKCksIGxh
eWVyKTsKICAgICBtX2xheWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgbGF5
ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1bGVMYXllckZs
dXNoKCk7CkBAIC03MzUsOSArNzM1LDkgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb24KICAgICBp
ZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKSB7CiAgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRzUmVj
dCA9IHJlY3Q7CiAKLSAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgICAg
ICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJh
dG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICAgICAgKCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAg
ICAgIFJlZ2lzdGVyZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChSZWdpc3RlcmVkTGF5ZXJzTWFwOjppdGVyYXRvciBpdCA9
IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAg
ICAgIGl0LT52YWx1ZS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtNzg2LDkgKzc4Niw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBw
dXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExh
eWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnB1cmdlQmFja2luZ1N0b3JlcygpOworICAgIFJl
Z2lzdGVyZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQo
KTsKKyAgICBmb3IgKFJlZ2lzdGVyZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3Rl
cmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5w
dXJnZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIG1faW1hZ2VCYWNraW5ncy5jbGVhcigpOwogICAg
IG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwpAQCAtODUxLDUgKzg1MSwxNCBAQCB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNv
bG9yJiBjb2xvcikKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5OjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpKTsKIH0KIAordm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KQoreworICAgIFJlZ2lzdGVyZWRMYXllcnNN
YXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZmluZChsYXllcklEKTsKKyAgICBp
ZiAoaSA9PSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGktPnZhbHVlLT5zY3JvbGxCeShvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI2MDUyODku
LjUwYjYwOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGlu
YXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZTo6RmxhZ3MpOwogCisgICAgdm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoKICAgICBl
eHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSopOwogCkBAIC0xODEsNyAr
MTgzLDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcGFnZSBvdmVybGF5IGxheWVyLiBXaWxsIGJl
IG51bGwgaWYgdGhlcmUncyBubyBwYWdlIG92ZXJsYXkuCiAgICAgT3duUHRyPFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gbV9yZWdpc3RlcmVkTGF5ZXJzOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+IFJlZ2lzdGVyZWRMYXllcnNNYXA7CisgICAgUmVnaXN0ZXJlZExh
eWVyc01hcCBtX3JlZ2lzdGVyZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5h
dGVkTGF5ZXJJRD4gbV9sYXllcnNUb0NyZWF0ZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRMYXllcklEPiBtX2xheWVyc1RvRGVsZXRlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJD
b3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5nTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2Vz
LmluCmluZGV4IDY2NzFiMzIuLmFhOWYwZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4K
QEAgLTI3LDUgKzI3LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IExl
Z2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAg
QW5pbWF0aW9uRnJhbWVSZWFkeSgpCiAjZW5kaWYKKyAgICBTY3JvbGxMYXllckJ5KHVpbnQzMl90
IGxheWVySUQsIFdlYkNvcmU6OkludFNpemUgb2Zmc2V0KQogfQogI2VuZGlmCi0tIAoxLjcuOS41
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190897</attachid>
            <date>2013-03-01 00:10:21 -0800</date>
            <delta_ts>2013-03-01 01:37:38 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>52188</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBjYWM0N2M3ZTA4ZGZhYjc3YjRkYWU0MTZmNWFlZmI3OTAxNjI0ZjIyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogRnJpLCAxIE1hciAyMDEzIDAwOjAxOjM0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSW1wbGVtZW50aW5nIGFjY2VsZXJhdGVkIG92ZXJmbG93IHNj
cm9sbGluZyBmb3IgY29vcmRpbmF0ZWQgZ3JhcGhpY3MuClRoZSBuZXcgQVBJIFdLQ29vcmRpbmF0
ZWRTY2VuZSBtYXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIGluIHRoZSBVSSBwcm9jZXNzLgoK
U291cmNlL1dlYkNvcmU6CgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxM
YXllckRpZENoYW5nZSk6CihXZWJDb3JlKToKKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CiogcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3MuaDoKKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6
CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0
U2Nyb2xsT2Zmc2V0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldElzU2Nyb2xsYWJsZUxheWVyKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmNvbW1pdExheWVyU2Nyb2xsT2Zmc2V0KToKKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgooV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldExheWVySUQpOgooR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmlzU2Nyb2xsYWJsZUxh
eWVyKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoK
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaCk6CihXZWJDb3JlKToK
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2VhcmNoQ29uZGl0
aW9uKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRz
TGF5ZXJBdCk6CihXZWJDb3JlOjpyb3VuZCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OmdldEludGVnZXJTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpj
YWxjdWxhdGVFZmZlY3RpdmVTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNjcm9s
bE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9sbGluZ0NsaWVudCk6CihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CihXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldExheWVySUQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpsYXll
cklEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsQ2xpZW50KToKKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SXNTY3JvbGxhYmxlTGF5ZXIpOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGVMYXllcik6CihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgooV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgooV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxhYmxlQXJlYSk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2Nyb2xsQnkpOgooV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CiogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
OgooV2ViQ29yZSk6CihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgooV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjppc1Njcm9sbGFibGUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgooV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKToKKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpkb1Njcm9sbExheWVyQnkpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNjcm9sbExheWVyQnkpOgooV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6
CihXZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZExheWVySW5mby5oOgooQ29vcmRpbmF0ZWRMYXllckluZm8pOgoKU291cmNlL1dl
YktpdDI6CgoqIENNYWtlTGlzdHMudHh0OgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOgooV0tDb29yZGluYXRlZFNjZW5lR2V0U2Nyb2xs
YWJsZUNvbnRlbnRzTGF5ZXJBdCk6CihXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklEKToKKFdL
Q29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KToKKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmg6CiogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgooV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CihD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CiogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oOgooV2ViQ29yZSk6Cih0b0ltcGwpOgoo
dG9BUEkpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGV0YWNoTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNy
ZWF0ZUdyYXBoaWNzTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNl
dFZpc2libGVDb250ZW50c1JlY3QpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnB1cmdlQmFja2luZ1N0b3Jlcyk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgoqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
bjoKKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgooV2ViS2l0KToKKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CihXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNzIgKysrKysrKysrKysrKysrKysrKwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAgIDE4ICsrKysrCiAuLi4vU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmggICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgfCAgIDMxICsrKysrKysrCiAuLi4v
Z3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmggICB8ICAgMTcgKysr
Ky0KIC4uLi9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCAgICAgICAgIHwg
ICA3NCArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaCAgfCAgIDM0ICsrKysrKysrLQogLi4uL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgICAgICAgfCAgIDIyICsrKysrKwogLi4uL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCAgfCAgICA4ICsrKwogLi4u
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgICAgICAgfCAgIDIwICsr
KysrKwogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCAg
fCAgIDExICsrLQogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5o
ICAgICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgNSArKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oICAgICAgICB8ICAgIDEgKwogLi4uL0FQSS9Db29yZGluYXRl
ZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAgfCAgIDQ5ICsrKysrKysrKysrKysKIC4u
Li9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaCAgIHwgICA0OCAr
KysrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwICAgICAg
ICAgICAgICB8ICAgIDUgKysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oICAg
ICAgICAgICAgICAgIHwgICAgMiArCiAuLi4vV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oICAg
ICAgICAgICAgICAgICAgICB8ICAgNjAgKysrKysrKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysrLS0tCiAuLi4v
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCB8ICAgIDUgKy0K
IC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICAg
MSArCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8
ICAgIDEgKwogMjQgZmlsZXMgY2hhbmdlZCwgNTQzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29v
cmRpbmF0ZWRTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDdlOTljMWUuLjQ0ZDQ1NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAor
MjAxMy0wMi0yOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisg
ICAgICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3Jh
cGhpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTAzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
bXBsZW1lbnRpbmcgYWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBjb29yZGluYXRl
ZCBncmFwaGljcy4KKyAgICAgICAgVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBi
ZSB1c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgor
ICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGlu
YXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdFNjcm9s
bE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFibGVMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllclNj
cm9sbE9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRMYXllcklEKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjppc1Njcm9sbGFibGVMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllclNlYXJjaENvbmRpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldFNjcm9sbGFibGVD
b250ZW50c0xheWVyQXQpOgorICAgICAgICAoV2ViQ29yZTo6cm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpnZXRJbnRlZ2VyU2Nyb2xsT2Zmc2V0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Y2FsY3VsYXRlRWZmZWN0aXZlU2Nyb2xs
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsQnkp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3JvbGxPZmZz
ZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChTY3JvbGxpbmdD
bGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFw
cGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRMYXll
cklEKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6bGF5ZXJJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZUxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTY3JvbGxhYmxlTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjphZGp1c3RlZFBvc2l0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c3luY0xheWVyU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZG9T
Y3JvbGxMYXllckJ5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzY3JvbGxMYXllckJ5KToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmVDbGllbnQpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRMYXllckluZm8uaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJJbmZvKToKKwog
MjAxMy0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE0NDM3MC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmNwcAppbmRleCBhMWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXll
cihHcgogICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1Zp
ZXdwb3J0KGVuYWJsZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRl
ZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxl
QXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3Zv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNj
cm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
c2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICgh
bGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgw
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggODdjMmM3Mi4u
OTBjYzQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0zNyw2ICszNyw4IEBA
IHB1YmxpYzoKICAgICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MoUGFnZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFp
bmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxh
YmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmlydHVh
bCB2b2lkIHdpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuY3BwCmluZGV4IDgwMTNlYzQuLjdmY2I5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5
ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xsYWJs
ZUxheWVyKGZhbHNlKQogewogfQogCkBAIC00MDMsNiArNDA0LDI0IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAgICAg
bm90aWZ5Q2hhbmdlKERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQp
Cit7CisgICAgaWYgKG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
b21taXR0ZWRTY3JvbGxPZmZzZXQgKz0gb2Zmc2V0OworICAgIG5vdGlmeUNoYW5nZShDb21taXR0
ZWRTY3JvbGxQb3NpdGlvbik7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OnNldElzU2Nyb2xsYWJsZUxheWVyKGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIpCit7CisgICAgaWYg
KG1faXNTY3JvbGxhYmxlTGF5ZXIgPT0gaXNTY3JvbGxhYmxlTGF5ZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1faXNTY3JvbGxhYmxlTGF5ZXIgPSBpc1Njcm9sbGFibGVMYXllcjsKKyAgICBu
b3RpZnlDaGFuZ2UoU2Nyb2xsYWJsZUxheWVyKTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xh
eWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3Np
dGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCkBAIC01NDMsOSArNTYyLDIxIEBAIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgaWYgKG1f
Y2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9yQ2hhbmdlKQogICAgICAgICBtX2xheWVyLT5zZXRG
aXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdwb3J0KCkpOwogCisgICAgaWYgKG1fY2hhbmdlTWFz
ayAmIENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKQorICAgICAgICBjb21taXRMYXllclNjcm9sbE9m
ZnNldCgpOworCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIFNjcm9sbGFibGVMYXllcikKKyAgICAg
ICAgbV9sYXllci0+c2V0SXNTY3JvbGxhYmxlTGF5ZXIoaXNTY3JvbGxhYmxlTGF5ZXIoKSk7CisK
ICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmNvbW1pdExheWVyU2Nyb2xsT2Zmc2V0KCkKK3sKKyAgICBtX2xheWVyLT5j
b21taXRTY3JvbGxPZmZzZXQobV9jb21taXR0ZWRTY3JvbGxPZmZzZXQpOworICAgIG1fY29tbWl0
dGVkU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOworfQorCiAvKiBccmVpbXAgKEdyYXBoaWNzTGF5
ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpmbHVzaENvbXBvc2l0
aW5nU3RhdGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXIuaAppbmRleCA5MzI5ZmJjLi44ZTg1YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAtMzQsNiArMzQsOSBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCopOwog
ICAgIHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKCk7CiAKKyAgICB2b2lkIHNl
dFNjcm9sbENsaWVudChUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCogY2xpZW50
KSB7IG1fbGF5ZXItPnNldFNjcm9sbENsaWVudChjbGllbnQpOyB9CisgICAgdm9pZCBzZXRMYXll
cklEKHVpbnQzMl90IGlkKSB7IG1fbGF5ZXItPnNldExheWVySUQoaWQpOyB9CisKICAgICAvLyBy
ZWltcHMgZnJvbSBHcmFwaGljc0xheWVyLmgKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNEaXNw
bGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CkBAIC04
MSw2ICs4NCwxMCBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCisgICAgdm9pZCBjb21taXRTY3JvbGxP
ZmZzZXQoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlTGF5ZXIoYm9v
bCk7CisgICAgYm9vbCBpc1Njcm9sbGFibGVMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3Jv
bGxhYmxlTGF5ZXI7IH0KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2aXJ0dWFsIGJv
b2wgc2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKQEAgLTEwNSw2
ICsxMTIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlcGFyZUJhY2tpbmdTdG9yZUlmTmVlZGVk
KCk7CiAgICAgYm9vbCBzaG91bGRIYXZlQmFja2luZ1N0b3JlKCkgY29uc3Q7CiAKKyAgICB2b2lk
IGNvbW1pdExheWVyU2Nyb2xsT2Zmc2V0KCk7CisKICAgICAvLyBUaGlzIHNldCBvZiBmbGFncyBo
ZWxwIHVzIGRlZmVyIHdoaWNoIHByb3BlcnRpZXMgb2YgdGhlIGxheWVyIGhhdmUgYmVlbgogICAg
IC8vIG1vZGlmaWVkIGJ5IHRoZSBjb21wb3NpdG9yLCBzbyB3ZSBjYW4ga25vdyB3aGF0IHRvIGxv
b2sgZm9yIGluIHRoZSBuZXh0IGZsdXNoLgogICAgIGVudW0gQ2hhbmdlTWFzayB7CkBAIC0xNDMs
NyArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAg
ICAoMUwgPDwgMjUpLAogCiAgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hhbmdlID0gICAgICAoMUwg
PDwgMjYpLAotICAgICAgICBBbmltYXRpb25TdGFydGVkID0gICAgICAgICAgKDFMIDw8IDI3KQor
ICAgICAgICBBbmltYXRpb25TdGFydGVkID0gICAgICAgICAgKDFMIDw8IDI3KSwKKworICAgICAg
ICBDb21taXR0ZWRTY3JvbGxQb3NpdGlvbiA9ICAgICgxTCA8PCAyOCksCisgICAgICAgIFNjcm9s
bGFibGVMYXllciA9ICAgICAgICAgICAoMUwgPDwgMjkpCiAgICAgfTsKICAgICB2b2lkIG5vdGlm
eUNoYW5nZShDaGFuZ2VNYXNrKTsKIApAQCAtMTY1LDYgKzE3Nyw5IEBAIHByaXZhdGU6CiAgICAg
RmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9u
cyBtX2FuaW1hdGlvbnM7CiAgICAgZG91YmxlIG1fYW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAg
SW50U2l6ZSBtX2NvbW1pdHRlZFNjcm9sbE9mZnNldDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxl
TGF5ZXI7CiB9OwogCiBpbmxpbmUgc3RhdGljIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiB0
b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCAxMGJlZjI2Li45MmI5YjA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckxheWVyLmNwcApAQCAtNjczLDUgKzY3Myw3OSBAQCB2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgZGVs
dGEpCiAgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24o
KSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIFNlYXJjaENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxh
eWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RTZWFyY2goY29uc3QgRmxvYXRQb2ludCYg
cG9pbnQsIFNlYXJjaENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgaWYgKCFtX3N0YXRlLnZp
c2libGUgfHwgIW1fc3RhdGUuY29udGVudHNWaXNpYmxlKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFRleHR1cmVNYXBwZXJMYXllciogcmVzdWx0ID0gMDsKKyAgICBmb3IgKGludCBpID0gbV9j
aGlsZHJlbi5zaXplKCkgLSAxOyAhcmVzdWx0ICYmIGkgPj0gMDsgLS1pKQorICAgICAgICByZXN1
bHQgPSBtX2NoaWxkcmVuW2ldLT5oaXRUZXN0U2VhcmNoKHBvaW50LCBjb25kaXRpb24pOworCisg
ICAgcmV0dXJuIHJlc3VsdCA/IHJlc3VsdCA6IGNvbmRpdGlvbih0aGlzLCBwb2ludCkgPyB0aGlz
IDogMDsKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllclNlYXJj
aENvbmRpdGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludCkKK3sKKyAgICBpZiAoIWxheWVyLT5pc1Njcm9sbGFibGVMYXllcigpIHx8ICFsYXllci0+
bV9wYXJlbnQgfHwgIWxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFRleHR1cmVNYXBwZXJMYXllciogcGFyZW50TGF5ZXIgPSBsYXllci0+bV9w
YXJlbnQtPm1fcGFyZW50OworICAgIHJldHVybiBwYXJlbnRMYXllci0+bV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkubWFwUmVjdChwYXJlbnRMYXllci0+bV9zdGF0ZS5jb250ZW50c1JlY3Qp
LmNvbnRhaW5zKHBvaW50KTsKK30KKworVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVy
TGF5ZXI6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQpCit7CisgICAgcmV0dXJuIGhpdFRlc3RTZWFyY2gocG9pbnQsICZUZXh0dXJlTWFwcGVyTGF5
ZXI6OnNjcm9sbGFibGVMYXllclNlYXJjaENvbmRpdGlvbik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
dm9pZCByb3VuZChmbG9hdCB2YWx1ZSwgaW50JiBpbnRlZ2VyUGFydCwgZmxvYXQmIGZyYWNQYXJ0
KQoreworICAgIGludGVnZXJQYXJ0ID0gc3RhdGljX2Nhc3Q8aW50Pih2YWx1ZSA+PSAwID8gdmFs
dWUgKyAuNSA6IHZhbHVlIC0gLjUpOworICAgIGZyYWNQYXJ0ID0gdmFsdWUgLSBpbnRlZ2VyUGFy
dDsKK30KKworSW50U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldEludGVnZXJTY3JvbGxPZmZz
ZXQoRmxvYXRTaXplIG9mZnNldCkKK3sKKyAgICBtX3BlbmRpbmdTY3JvbGxPZmZzZXQgKz0gb2Zm
c2V0OworCisgICAgaW50IGludFdpZHRoLCBpbnRIZWlnaHQ7CisgICAgZmxvYXQgZnJhY1dpZHRo
LCBmcmFjSGVpZ2h0OworICAgIHJvdW5kKG1fcGVuZGluZ1Njcm9sbE9mZnNldC53aWR0aCgpLCBp
bnRXaWR0aCwgZnJhY1dpZHRoKTsKKyAgICByb3VuZChtX3BlbmRpbmdTY3JvbGxPZmZzZXQuaGVp
Z2h0KCksIGludEhlaWdodCwgZnJhY0hlaWdodCk7CisKKyAgICBtX3BlbmRpbmdTY3JvbGxPZmZz
ZXQgPSBGbG9hdFNpemUoZnJhY1dpZHRoLCBmcmFjSGVpZ2h0KTsKKyAgICByZXR1cm4gSW50U2l6
ZShpbnRXaWR0aCwgaW50SGVpZ2h0KTsKK30KKworRmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXll
cjo6Y2FsY3VsYXRlRWZmZWN0aXZlU2Nyb2xsT2Zmc2V0KEZsb2F0U2l6ZSBvZmZzZXQpCit7Cisg
ICAgZG91YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKKyAgICBtX2N1cnJlbnRU
cmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkubWFwKDAsIDAsIHplcm9YLCB6ZXJvWSk7Cisg
ICAgbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLm1hcChvZmZzZXQud2lk
dGgoKSwgb2Zmc2V0LmhlaWdodCgpLCBvZmZzZXRYLCBvZmZzZXRZKTsKKyAgICByZXR1cm4gRmxv
YXRTaXplKG9mZnNldFggLSB6ZXJvWCwgb2Zmc2V0WSAtIHplcm9ZKTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAg
IGlmICghbV9zY3JvbGxDbGllbnQgfHwgb2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47
CisKKyAgICBGbG9hdFNpemUgc2Nyb2xsb2Zmc2V0ID0gY2FsY3VsYXRlRWZmZWN0aXZlU2Nyb2xs
T2Zmc2V0KG9mZnNldCk7CisgICAgbV9VSVNpZGVTY3JvbGxPZmZzZXQgKz0gc2Nyb2xsb2Zmc2V0
OworCisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24o
KSk7CisgICAgbV9zY3JvbGxDbGllbnQtPnNjcm9sbExheWVyQnkobV9sYXllcklELCBnZXRJbnRl
Z2VyU2Nyb2xsT2Zmc2V0KHNjcm9sbG9mZnNldCkpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJM
YXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBp
ZiAob2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX1VJU2lkZVNjcm9s
bE9mZnNldCA9IEZsb2F0U2l6ZShtX1VJU2lkZVNjcm9sbE9mZnNldC53aWR0aCgpIC0gb2Zmc2V0
LndpZHRoKCksIG1fVUlTaWRlU2Nyb2xsT2Zmc2V0LmhlaWdodCgpIC0gb2Zmc2V0LmhlaWdodCgp
KTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigp
KTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggNjAyYjJjMy4u
ZDA2MTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgY2xh
c3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OkNs
aWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlckxheWVyKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKworICAgIGNsYXNzIFNjcm9sbGlu
Z0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTGF5ZXJC
eSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpID0gMDsKKyAgICB9Owor
CiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAgICAg
ICAsIG1fZWZmZWN0VGFyZ2V0KDApCkBAIC00NywxMCArNTMsMjUgQEAgcHVibGljOgogICAgICAg
ICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigwKQogICAgICAgICAs
IG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICAgICAsIG1fbGF5ZXJJRCgwKQorICAgICAg
ICAsIG1fc2Nyb2xsQ2xpZW50KDApCisgICAgICAgICwgbV9pc1Njcm9sbGFibGVMYXllcihmYWxz
ZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJMYXllcigpOwogCisgICAg
dm9pZCBzZXRMYXllcklEKHVpbnQzMl90IGlkKSB7IG1fbGF5ZXJJRCA9IGlkOyB9CisgICAgdWlu
dDMyX3QgbGF5ZXJJRCgpIHsgcmV0dXJuIG1fbGF5ZXJJRDsgfQorCisgICAgVGV4dHVyZU1hcHBl
ckxheWVyKiBnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBv
cyk7CisKKyAgICB2b2lkIHNldFNjcm9sbENsaWVudChTY3JvbGxpbmdDbGllbnQqIHNjcm9sbENs
aWVudCkgeyBtX3Njcm9sbENsaWVudCA9IHNjcm9sbENsaWVudDsgfQorICAgIHZvaWQgc2Nyb2xs
QnkoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisKKyAgICB2b2lkIGNvbW1pdFNjcm9sbE9m
ZnNldChjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBzZXRJc1Njcm9sbGFibGVMYXllcihib29s
IGlzU2Nyb2xsYWJsZUxheWVyKSB7IG1faXNTY3JvbGxhYmxlTGF5ZXIgPSBpc1Njcm9sbGFibGVM
YXllcjsgfQorICAgIGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2lz
U2Nyb2xsYWJsZUxheWVyOyB9CisKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkg
eyBtX3RleHR1cmVNYXBwZXIgPSB0ZXhtYXA7IH0KIApAQCAtMTA4LDcgKzEyOSw3IEBAIHByaXZh
dGU6CiAgICAgc3RhdGljIHZvaWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5
ZXIqID4mIGFycmF5LCBpbnQgZmlyc3QsIGludCBsYXN0KTsKIAogICAgIFBhc3NSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gdGV4dHVyZSgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5n
U3RvcmUtPnRleHR1cmUoKSA6IDA7IH0KLSAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24o
KSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsgfQor
ICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
cG9zICsgbV9zY3JvbGxQb3NpdGlvbkRlbHRhIC0gbV9VSVNpZGVTY3JvbGxPZmZzZXQ7IH0KICAg
ICBib29sIGlzQW5jZXN0b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJl
TWFwcGVyTGF5ZXIqKTsKQEAgLTE1OSw2ICsxODAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAg
IGZsb2F0IG1fY2VudGVyWjsKIAorICAgIHRlbXBsYXRlPGNsYXNzIFNlYXJjaENvbmRpdGlvbj4g
VGV4dHVyZU1hcHBlckxheWVyKiBoaXRUZXN0U2VhcmNoKGNvbnN0IEZsb2F0UG9pbnQmLCBTZWFy
Y2hDb25kaXRpb24pOworICAgIHN0YXRpYyBib29sIHNjcm9sbGFibGVMYXllclNlYXJjaENvbmRp
dGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICBJbnRT
aXplIGdldEludGVnZXJTY3JvbGxPZmZzZXQoRmxvYXRTaXplKTsKKyAgICBGbG9hdFNpemUgY2Fs
Y3VsYXRlRWZmZWN0aXZlU2Nyb2xsT2Zmc2V0KEZsb2F0U2l6ZSk7CisKICAgICBzdHJ1Y3QgU3Rh
dGUgewogICAgICAgICBGbG9hdFBvaW50IHBvczsKICAgICAgICAgRmxvYXRQb2ludDNEIGFuY2hv
clBvaW50OwpAQCAtMjExLDYgKzIzOCwxMSBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJB
bmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRl
bHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisgICAgdWludDMyX3QgbV9sYXllcklE
OworICAgIFNjcm9sbGluZ0NsaWVudCogbV9zY3JvbGxDbGllbnQ7CisgICAgYm9vbCBtX2lzU2Ny
b2xsYWJsZUxheWVyOworICAgIEZsb2F0U2l6ZSBtX1VJU2lkZVNjcm9sbE9mZnNldDsKKyAgICBG
bG9hdFNpemUgbV9wZW5kaW5nU2Nyb2xsT2Zmc2V0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA0YzQz
YWE3Li5iN2FkMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjIsNiArMTIzLDcgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50
KQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2FudmFzUGxh
dGZvcm1MYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIodGhpcywgJkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCisgICAgLCBt
X3Njcm9sbGFibGVBcmVhKDApCiB7CiAgICAgc3RhdGljIENvb3JkaW5hdGVkTGF5ZXJJRCBuZXh0
TGF5ZXJJRCA9IDE7CiAgICAgbV9pZCA9IG5leHRMYXllcklEKys7CkBAIC00NjUsNiArNDY3LDI0
IEBAIENvb3JkaW5hdGVkTGF5ZXJJRCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlkKCkgY29u
c3QKICAgICByZXR1cm4gbV9pZDsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnNldFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAg
ICBib29sIG9sZFNjcm9sbGFibGUgPSBpc1Njcm9sbGFibGUoKTsKKyAgICBtX3Njcm9sbGFibGVB
cmVhID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgaWYgKG9sZFNjcm9sbGFibGUgIT0gaXNTY3JvbGxh
YmxlKCkpCisgICAgICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAg
ICBpZiAoIWlzU2Nyb2xsYWJsZSgpIHx8IG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9zY3JvbGxhYmxlQXJlYS0+bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKG1f
c2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOworICAgIG1fbGF5ZXJJ
bmZvLmNvbW1pdHRlZFNjcm9sbE9mZnNldCArPSBvZmZzZXQ7CisgICAgZGlkQ2hhbmdlTGF5ZXJT
dGF0ZSgpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Rml4ZWRUb1Zp
ZXdwb3J0KGJvb2wgaXNGaXhlZCkKIHsKICAgICBpZiAobV9maXhlZFRvVmlld3BvcnQgPT0gaXNG
aXhlZCkKQEAgLTU3Miw2ICs1OTIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gbV9hZGp1c3Rl
ZEFuY2hvclBvaW50OwogICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3NpdGlvbjsK
ICAgICBtX2xheWVySW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CisgICAgbV9sYXllckluZm8u
aXNTY3JvbGxhYmxlTGF5ZXIgPSBpc1Njcm9sbGFibGUoKTsKIAogICAgIG1fbGF5ZXJJbmZvLnNo
b3dEZWJ1Z0JvcmRlcnMgPSBpc1Nob3dpbmdEZWJ1Z0JvcmRlcigpOwogICAgIGlmIChtX2xheWVy
SW5mby5zaG93RGVidWdCb3JkZXJzKQpAQCAtNTc5LDYgKzYwMCw3IEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSgpCiAgICAgbV9sYXllckluZm8uc2hvd1Jl
cGFpbnRDb3VudGVyID0gaXNTaG93aW5nUmVwYWludENvdW50ZXIoKTsKIAogICAgIG1fY29vcmRp
bmF0b3ItPnN5bmNMYXllclN0YXRlKG1faWQsIG1fbGF5ZXJJbmZvKTsKKyAgICBtX2xheWVySW5m
by5jb21taXR0ZWRTY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0
IHdpZHRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5oCmluZGV4IGU1YWE0N2EuLjBmZmQwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjsKIGNs
YXNzIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMzQsOCAr
MTM1LDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wpOwogCisgICAg
dm9pZCBzZXRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOworICAgIGJvb2wgaXNTY3Jv
bGxhYmxlKCkgY29uc3QgeyByZXR1cm4gISFtX3Njcm9sbGFibGVBcmVhOyB9CisgICAgdm9pZCBz
Y3JvbGxCeShjb25zdCBJbnRTaXplJik7CisKICAgICBDb29yZGluYXRlZExheWVySUQgaWQoKSBj
b25zdDsKIAorCiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBpc0ZpeGVkKTsKIAog
ICAgIEludFJlY3QgY292ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9tYWluQmFja2luZ1N0b3Jl
ID8gbV9tYWluQmFja2luZ1N0b3JlLT5tYXBUb0NvbnRlbnRzKG1fbWFpbkJhY2tpbmdTdG9yZS0+
Y292ZXJSZWN0KCkpIDogSW50UmVjdCgpOyB9CkBAIC0yNTgsNiArMjY0LDggQEAgcHJpdmF0ZToK
ICAgICBUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fYW5pbWF0aW9uU3RhcnRlZFRp
bWVyOwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBkb3Vi
bGUgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAgU2Nyb2xsYWJsZUFyZWEqIG1fc2Ny
b2xsYWJsZUFyZWE7CiB9OwogCiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIHRvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggODYyNDUxMy4uYzBi
ZjJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHAKQEAgLTMxOSw2ICszMTksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3Jk
aQogICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwg
bGF5ZXJJbmZvLmRlYnVnQm9yZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXRTaG93UmVwYWludENv
dW50ZXIobGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlcik7CiAKKyAgICB0b0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+Y29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySW5mby5jb21t
aXR0ZWRTY3JvbGxPZmZzZXQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5
ZXIpLT5zZXRJc1Njcm9sbGFibGVMYXllcihsYXllckluZm8uaXNTY3JvbGxhYmxlTGF5ZXIpOwor
CiAgICAgaWYgKGxheWVySW5mby5maXhlZFRvVmlld3BvcnQpCiAgICAgICAgIG1fZml4ZWRMYXll
cnMuYWRkKGlkLCBsYXllcik7CiAgICAgZWxzZQpAQCAtMzQ4LDYgKzM1MSw4IEBAIHZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcihDb29yZGluYXRlZExheWVySUQgaWQp
CiB7CiAgICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IG5ld0xheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKDAgLyogZmFjdG9yeSAqLywgdGhpcyk7CiAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldEhhc093bkJhY2tpbmdTdG9yZShmYWxzZSk7Cisg
ICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldExheWVy
SUQoaWQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkp
LT5zZXRTY3JvbGxDbGllbnQodGhpcyk7CiAgICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5y
ZWxlYXNlKCkpOwogfQogCkBAIC02MTAsNiArNjE1LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpwdXJnZUdMUmVzb3VyY2VzKCkKICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChi
aW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcywgdGhpcykp
OwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZG9TY3JvbGxMYXllckJ5KHVp
bnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+
c2Nyb2xsTGF5ZXJCeShsYXllcklELCBvZmZzZXQpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQpCit7CisgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpkb1Njcm9sbExheWVyQnksIHRoaXMsIGxheWVySUQsIG9mZnNldCkpOwor
fQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cHVyZ2VCYWNraW5nU3RvcmVzKCkK
IHsKICAgICBpZiAobV9jbGllbnQpCkBAIC02NzMsNiArNjg4LDExIEBAIHZvaWQgQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiB9CiAKK1RleHR1cmVNYXBwZXJMYXllciog
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiByb290TGF5ZXIoKSA/IHRvVGV4
dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJB
dChwb2ludCkgOiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXggOWM5MjFhNy4uOGU1NjcxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKICNpbmNsdWRlICJUaW1l
ci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KQEAgLTQ5LDcgKzUwLDYgQEAgY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU7CiBjbGFz
cyBDb29yZGluYXRlZExheWVySW5mbzsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW07CiBjbGFz
cyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKLWNsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKIAog
Y2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTYwLDkg
KzYwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVZpZXdwb3J0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxMYXll
ckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkgPSAwOwogfTsKIAot
Y2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50
IHsKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3JhcGhpY3NMYXllckNs
aWVudCwgcHVibGljIFRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdDsK
QEAgLTkyLDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZvaWQg
YXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIAorICAgIFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTGF5ZXJCeSh1aW50
MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpOworCiAgICAgLy8gVGhlIHBhaW50
aW5nIHRocmVhZCBtdXN0IGxvY2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0
aG9kcywgYmVjYXVzZSB0d28gbWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRo
cmVhZCBtYW5hZ2VzLiBTZWUgbV9jbGllbnQuCiAgICAgLy8gQ3VycmVudGx5LCBRUXVpY2tXZWJQ
YWdlOjp1cGRhdGVQYWludE5vZGUoKSBsb2NrcyB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGNhbGxp
bmcgYm90aCBtZXRob2RzLgogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNlcygpOwpAQCAtMTY5LDYg
KzE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChH
cmFwaGljc0xheWVyKik7CiAgICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6
ZShHcmFwaGljc0xheWVyKik7CiAKKyAgICB2b2lkIGRvU2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBs
YXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpOworCiAgICAgLy8gUmVuZGVyIHF1ZXVlIGNh
biBiZSBhY2Nlc3NlZCBvbnkgZnJvbSBtYWluIHRocmVhZCBvciB1cGRhdGVQYWludE5vZGUgY2Fs
bCBzdGFjayEKICAgICBWZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IG1fcmVuZGVyUXVldWU7CiAg
ICAgTXV0ZXggbV9yZW5kZXJRdWV1ZU11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRMYXllckluZm8uaAppbmRleCAwZmEyYTEyLi41NmJkMTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRMYXllckluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaApAQCAtNjAsNiArNjAs
NyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllckluZm8gewogICAgIENvbG9yIHNvbGlkQ29sb3I7
CiAgICAgQ29sb3IgZGVidWdCb3JkZXJDb2xvcjsKICAgICBmbG9hdCBkZWJ1Z0JvcmRlcldpZHRo
OworICAgIEludFNpemUgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0OwogCiAgICAgdW5pb24gewogICAg
ICAgICBzdHJ1Y3QgewpAQCAtNzMsNiArNzQsNyBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRMYXllcklu
Zm8gewogICAgICAgICAgICAgYm9vbCBmaXhlZFRvVmlld3BvcnQgOiAxOwogICAgICAgICAgICAg
Ym9vbCBzaG93RGVidWdCb3JkZXJzIDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd1JlcGFpbnRD
b3VudGVyIDogMTsKKyAgICAgICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlTGF5ZXIgOiAxOwogICAg
ICAgICB9OwogICAgICAgICB1bnNpZ25lZCBmbGFnczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4
dAppbmRleCBiODY0ZDcwMy4uZTExYmQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE3LDYg
KzE3LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQ
cm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVBy
b2Nlc3MvQVBJL2NwcCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIK
QEAgLTc1LDYgKzc2LDggQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQkNPUkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvYW5pbWF0aW9uIgorICAgICIke1dFQkNPUkVfRElSfS9w
YWdlL3Njcm9sbGluZyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0iCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MiCkBAIC0zNDAsNiArMzQzLDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpYnJhdGlvbi5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
S0Nvb3JkaW5hdGVkU2NlbmUuY3BwCisKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAogICAgIFVJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDYzYzNjMzAuLjJlNmJl
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMy0wMi0yOCAgTHVpeiBBZ29zdGlu
aSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIEFjY2VsZXJhdGVkIG92ZXJm
bG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgYWNjZWxlcmF0ZWQg
b3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBjb29yZGluYXRlZCBncmFwaGljcy4KKyAgICAgICAgVGhl
IG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2VkIHRvIHNjcm9sbCBsYXllcnMg
aW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNw
cDoKKyAgICAgICAgKFdLQ29vcmRpbmF0ZWRTY2VuZUdldFNjcm9sbGFibGVDb250ZW50c0xheWVy
QXQpOgorICAgICAgICAoV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRCk6CisgICAgICAgIChX
S0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNjcm9sbExh
eWVyQnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAodG9JbXBsKToKKyAgICAgICAgKHRvQVBJKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmRldGFjaExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbExheWVyQnkpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
bWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKIDIwMTMt
MDItMjggIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3b25AZ21haWwuY29tPgogCiAgICAgICAgIFtX
SzJdIFJlZmFjdG9yaW5nIDogRml4IGluZGVudGF0aW9uIGFuZCBicmFjZXMgaW4gV2ViSW5zcGVj
dG9yQ2xpZW50Lmh8Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAppbmRleCA3Y2VhOTBlLi4xZTNkMWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTE0MSw2ICsxNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKICAgICBtYWNybyhMb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxlZCwgbG9n
c1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29uc29sZUVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBc
CiAgICAgbWFjcm8oUGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQs
IHBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkLCBCb29sLCBib29s
LCBmYWxzZSkgXAogICAgIG1hY3JvKFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCwgc21hcnRJbnNl
cnREZWxldGVFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBcCisgICAgbWFjcm8oQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCwgYWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBc
CiAKICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3JvKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYzdhMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lLmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29v
cmRpbmF0ZWRTY2VuZS5oIgorCisjaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5o
IgorCisjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1RleHR1cmVNYXBwZXJMYXllci5oPgorCitXS19FWFBPUlQgV0tDb29yZGlu
YXRlZFNjZW5lTGF5ZXIgV0tDb29yZGluYXRlZFNjZW5lR2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5
ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUgc2NlbmUsIFdLUG9pbnQgcG9pbnQpCit7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChzY2VuZSktPmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoV2Vi
Q29yZTo6RmxvYXRQb2ludChwb2ludC54LCBwb2ludC55KSkpOworfQorCitXS19FWFBPUlQgdWlu
dDMyX3QgV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkU2NlbmVMYXll
ciBsYXllcikKK3sKKyAgICByZXR1cm4gdG9JbXBsKGxheWVyKS0+bGF5ZXJJRCgpOworfQorCitX
S19FWFBPUlQgdm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5hdGVkU2Nl
bmVMYXllciBsYXllciwgV0tTaXplIG9mZnNldCkKK3sKKyAgICB0b0ltcGwobGF5ZXIpLT5zY3Jv
bGxCeShXZWJDb3JlOjpGbG9hdFNpemUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTQzM2IxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVfaAorI2RlZmluZSBX
S0Nvb3JkaW5hdGVkU2NlbmVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMK
KwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwordHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlQ0dMYXllciogV0tDb29yZGluYXRlZFNjZW5lTGF5ZXI7CisKK1dL
X0VYUE9SVCBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRTY3Jv
bGxhYmxlQ29udGVudHNMYXllckF0KFdLQ29vcmRpbmF0ZWRTY2VuZSwgV0tQb2ludCk7CitXS19F
WFBPUlQgdWludDMyX3QgV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVk
U2NlbmVMYXllcik7CitXS19FWFBPUlQgdm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShX
S0Nvb3JkaW5hdGVkU2NlbmVMYXllciwgV0tTaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9
CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKworI2VuZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZV9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAKaW5kZXggYzVmN2U4Ny4uMzc5ODBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjM3LDUgKzIzNywxMCBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yLCBtX3NjZW5lLmdldCgpLCBjb2xvcikpOwogfQog
Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzY3JvbGxMYXllckJ5KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2RyYXdpbmdBcmVh
UHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OlNjcm9sbExheWVyQnkobGF5ZXJJRCwgb2Zmc2V0KSwgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5oCmluZGV4IDk0NmIzOTkuLmIyZjBiMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtOTgsNiArOTgsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoVXBkYXRlKGNvbnN0
IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lQVBJQ2FzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOWYwZDYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgKQEAgLTAsMCArMSw2MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdF9oCisjZGVmaW5lIFdLQ29vcmRpbmF0ZWRTY2VuZUFQ
SUNhc3RfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Nvb3JkaW5hdGVkU2NlbmUuaD4KKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CitjbGFz
cyBUZXh0dXJlTWFwcGVyTGF5ZXI7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworaW5saW5l
IFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogdG9JbXBsKFdLQ29vcmRpbmF0ZWRT
Y2VuZSBzY2VuZSkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUqPihzY2VuZSk7Cit9CisKK2lubGluZSBXS0Nvb3JkaW5hdGVk
U2NlbmUgdG9BUEkoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSkKK3sK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0Nvb3JkaW5hdGVkU2NlbmU+KHNjZW5lKTsK
K30KKworaW5saW5lIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogdG9JbXBsKFdLQ29vcmRp
bmF0ZWRTY2VuZUxheWVyIGxheWVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcio+KGxheWVyKTsKK30KKworaW5saW5lIFdLQ29vcmRp
bmF0ZWRTY2VuZUxheWVyIHRvQVBJKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIp
Cit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5lTGF5ZXI+
KGxheWVyKTsKK30KKworI2VuZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3RfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKaW5kZXggNjQ0ZTM3OC4uNGZkYTg3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC03Miw5ICs3Miw5
IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgp
CiAjZW5kaWYKICAgICBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAotICAgIEhhc2hTZXQ8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJl
ZExheWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldENvb3JkaW5hdG9yKDApOworICAgIFJl
Z2lzdGVyZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQo
KTsKKyAgICBmb3IgKFJlZ2lzdGVyZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3Rl
cmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5z
ZXRDb29yZGluYXRvcigwKTsKIH0KIAogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dy
YW1zKCkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJl
bW92ZShsYXllcik7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7
CiAgICAgbV9sYXllcnNUb0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOwogfQpAQCAtNjM4LDcgKzYzOCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NM
YXllcj4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBo
aWNzCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhp
cyk7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9yZWdpc3RlcmVk
TGF5ZXJzLmFkZChsYXllci0+aWQoKSwgbGF5ZXIpOwogICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBw
ZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1l
bnQoKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTczNSw5ICs3MzUsOSBAQCB2b2lk
IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbgogICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAg
ICAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKIAotICAgICAgICBIYXNoU2V0PFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNp
YmxlUmVjdEFkanVzdG1lbnQoKTsKKyAgICAgICAgUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0
b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgICAgICBmb3IgKFJlZ2lzdGVy
ZWRMYXllcnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXROZWVkc1Zpc2libGVS
ZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03ODYsOSArNzg2LDkgQEAg
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAg
ICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUobV9pc1B1cmdpbmcsIHRydWUp
OwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRl
cmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+cHVy
Z2VCYWNraW5nU3RvcmVzKCk7CisgICAgUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0b3IgZW5k
ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoUmVnaXN0ZXJlZExheWVyc01h
cDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBpdC0+dmFsdWUtPnB1cmdlQmFja2luZ1N0b3JlcygpOwogCiAgICAgbV9p
bWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CkBAIC04
NTEsNSArODUxLDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIG1fd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldEJhY2tncm91bmRD
b2xvcihjb2xvcikpOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xs
TGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQp
Cit7CisgICAgUmVnaXN0ZXJlZExheWVyc01hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0ZXJlZExh
eWVycy5maW5kKGxheWVySUQpOworICAgIGlmIChpID09IG1fcmVnaXN0ZXJlZExheWVycy5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaS0+dmFsdWUtPnNjcm9sbEJ5KG9mZnNldCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKaW5kZXggYjYwNTI4OS4uNTBiNjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEyMCw2ICsx
MjAsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKKyAgICB2b2lkIHNj
cm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zm
c2V0KTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dChXZWJQYWdlKik7CiAKQEAgLTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBw
YWdlIG92ZXJsYXkgbGF5ZXIuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHBhZ2Ugb3Zlcmxh
eS4KICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVy
OwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3Jl
Z2lzdGVyZWRMYXllcnM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gUmVnaXN0ZXJlZExh
eWVyc01hcDsKKyAgICBSZWdpc3RlcmVkTGF5ZXJzTWFwIG1fcmVnaXN0ZXJlZExheWVyczsKICAg
ICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklEPiBtX2xheWVyc1RvQ3JlYXRlOwog
ICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9EZWxldGU7
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQs
IFJlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gPiBJbWFnZUJhY2tpbmdN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KaW5kZXggNjY3MWIzMi4uYWE5ZjBkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpAQCAtMjcsNSArMjcsNiBAQCBtZXNzYWdlcyAtPiBD
b29yZGluYXRlZExheWVyVHJlZUhvc3QgTGVnYWN5UmVjZWl2ZXIgewogI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICBBbmltYXRpb25GcmFtZVJlYWR5KCkKICNlbmRpZgor
ICAgIFNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZz
ZXQpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAppbmRleCBjNGMxZDQ4Li5jMDA1MzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzE1LDYgKzIzMTUsNyBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3Jl
KQogICAgIHNldHRpbmdzLT5zZXRFZGl0YWJsZUxpbmtCZWhhdmlvcihzdGF0aWNfY2FzdDxXZWJD
b3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlvcj4oc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmVkaXRhYmxlTGlua0JlaGF2aW9yS2V5KCkpKSk7CiAgICAgc2V0dGlu
Z3MtPnNldFNob3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0KHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6c2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRLZXko
KSkpOwogCisgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxv
d1Njcm9sbEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkS2V5KCkpKTsK
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdp
bmdFbmFibGVkS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZygpKTsKICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2lu
ZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNB
Y2NlbGVyYXRlZERyYXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCkpOwotLSAKMS43LjkuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190908</attachid>
            <date>2013-03-01 01:37:38 -0800</date>
            <delta_ts>2013-03-04 01:28:58 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>51893</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBjNWNjMTBiYjc1MGFiYjFmNWY5ZWY4ODNmODhhZDU5Y2Y0YTZjMTQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogRnJpLCAxIE1hciAyMDEzIDAwOjAxOjM0IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKSW1wbGVtZW50aW5nIGFjY2VsZXJhdGVkIG92ZXJmbG93IHNj
cm9sbGluZyBmb3IgY29vcmRpbmF0ZWQgZ3JhcGhpY3MuClRoZSBuZXcgQVBJIFdLQ29vcmRpbmF0
ZWRTY2VuZSBtYXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIGluIHRoZSBVSSBwcm9jZXNzLgoK
U291cmNlL1dlYkNvcmU6CgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKFdlYkNvcmU6OlNjcm9s
bGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxM
YXllckRpZENoYW5nZSk6CihXZWJDb3JlKToKKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CiogcGFnZS9z
Y3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3MuaDoKKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6
CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0
U2Nyb2xsT2Zmc2V0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnNldElzU2Nyb2xsYWJsZUxheWVyKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmNvbW1pdExheWVyU2Nyb2xsT2Zmc2V0KToKKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgooV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnNldExheWVySUQpOgooR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmlzU2Nyb2xsYWJsZUxh
eWVyKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoK
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaCk6CihXZWJDb3JlKToK
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2VhcmNoQ29uZGl0
aW9uKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRz
TGF5ZXJBdCk6CihXZWJDb3JlOjpyb3VuZCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OmdldEludGVnZXJTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpj
YWxjdWxhdGVFZmZlY3RpdmVTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNjcm9s
bE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
OgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9sbGluZ0NsaWVudCk6CihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CihXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNldExheWVySUQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpsYXll
cklEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsQ2xpZW50KToKKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SXNTY3JvbGxhYmxlTGF5ZXIpOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGVMYXllcik6CihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgooV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgooV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxhYmxlQXJlYSk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2Nyb2xsQnkpOgooV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jTGF5ZXJTdGF0ZSk6CiogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5o
OgooV2ViQ29yZSk6CihDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgooV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjppc1Njcm9sbGFibGUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgooV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKToKKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpkb1Njcm9sbExheWVyQnkpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNjcm9sbExheWVyQnkpOgooV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6
CihXZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZExheWVySW5mby5oOgooQ29vcmRpbmF0ZWRMYXllckluZm8pOgoKU291cmNlL1dl
YktpdDI6CgoqIENNYWtlTGlzdHMudHh0OgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOgooV0tDb29yZGluYXRlZFNjZW5lR2V0U2Nyb2xs
YWJsZUNvbnRlbnRzTGF5ZXJBdCk6CihXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklEKToKKFdL
Q29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KToKKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmg6CiogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgooV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eTo6c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFVJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CihD
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CiogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oOgooV2ViQ29yZSk6Cih0b0ltcGwpOgoo
dG9BUEkpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6ZGV0YWNoTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNy
ZWF0ZUdyYXBoaWNzTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNl
dFZpc2libGVDb250ZW50c1JlY3QpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnB1cmdlQmFja2luZ1N0b3Jlcyk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgoqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5p
bjoKKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgooV2ViS2l0KToKKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CihXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgNzIgKysrKysrKysrKysrKysrKysrKysKIC4uLi9TY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgIHwgICAxOCArKysrKwogLi4uL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oICAgICAgfCAgICAyICsKIC4uLi9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIHwgICAzMSArKysrKysrKysKIC4u
Li9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCAgIHwgICAxNyAr
KysrLQogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwICAgICAgICAg
fCAgIDcxICsrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmggIHwgICAzNCArKysrKysrKy0KIC4uLi9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwICAgICAgIHwgICAyMiArKysrKysKIC4uLi90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggIHwgICAgOCArKysKIC4u
Li9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwICAgICAgIHwgICAyMCAr
KysrKysKIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgg
IHwgICAxMSArKy0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8u
aCAgICAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDUgKysKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYlByZWZlcmVuY2VzU3RvcmUuaCAgICAgICAgfCAgICAxICsKIC4uLi9BUEkvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwIHwgICA0OSArKysrKysrKysrKysrCiAu
Li4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmggICB8ICAgNDgg
KysrKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCAgICAg
ICAgICAgICAgfCAgICA1ICsrCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCAg
ICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCAg
ICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysrKysrKysrKysKIC4uLi9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKystLS0KIC4u
Li9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAgNSAr
LQogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAg
IHwgICAgMSArCiAyNCBmaWxlcyBjaGFuZ2VkLCA1NDAgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRp
b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tD
b29yZGluYXRlZFNjZW5lLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggN2U5OWMxZS4uNDRkNDU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBA
CisyMDEzLTAyLTI4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisK
KyAgICAgICAgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBH
cmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTExMDMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudGluZyBhY2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIGNvb3JkaW5h
dGVkIGdyYXBoaWNzLgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5
IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENo
YW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0U2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Nyb2xsYWJsZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVy
U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldExheWVySUQpOgorICAgICAgICAoR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmlzU2Nyb2xsYWJsZUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJMYXllcjo6aGl0VGVzdFNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2VhcmNoQ29uZGl0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJs
ZUNvbnRlbnRzTGF5ZXJBdCk6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldEludGVnZXJTY3JvbGxPZmZzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjYWxjdWxhdGVFZmZlY3RpdmVTY3Jv
bGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxC
eSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNjcm9sbE9m
ZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFNjcm9sbGlu
Z0NsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVN
YXBwZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldExh
eWVySUQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpsYXllcklEKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsQ2xpZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SXNTY3JvbGxhYmxlTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGVM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9z
aXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxhYmxlQXJlYSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzeW5jTGF5ZXJTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppc1Njcm9sbGFibGUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXll
clN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3Jl
YXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpk
b1Njcm9sbExheWVyQnkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNjcm9sbExheWVyQnkpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZExheWVySW5mby5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllckluZm8pOgor
CiAyMDEzLTAyLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ0MzcwLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxp
bmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGExYmYzYmQuLjlkOGVjNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTQ3LDYgKzQ3LDI0IEBAIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxh
eWVyKEdyCiAgICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRGaXhlZFRv
Vmlld3BvcnQoZW5hYmxlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciog
bGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihzY3JvbGxMYXllckZvclNjcm9sbGFi
bGVBcmVhKHNjcm9sbGFibGVBcmVhKSk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJu
OworCisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKTsKK30KKwor
dm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQoreworICAgIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cihzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKSk7CisgICAgaWYg
KCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVBcmVh
KDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGlj
cy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4N2MyYzcy
Li45MGNjNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3Mv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTM3LDYgKzM3LDgg
QEAgcHVibGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRH
cmFwaGljcyhQYWdlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVkVG9Db250
YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNjcm9s
bGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlci5jcHAKaW5kZXggODAxM2VjNC4uODQ3OTNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xp
ZW50KiBjbGllCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKICAgICAsIG1fY29udGVudHNM
YXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydFRpbWUoMCkKKyAgICAsIG1faXNTY3JvbGxh
YmxlKGZhbHNlKQogewogfQogCkBAIC00MDMsNiArNDA0LDI0IEBAIHZvaWQgR3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAgICAgbm90
aWZ5Q2hhbmdlKERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmNvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7
CisgICAgaWYgKG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jb21t
aXR0ZWRTY3JvbGxPZmZzZXQgKz0gb2Zmc2V0OworICAgIG5vdGlmeUNoYW5nZShDb21taXR0ZWRT
Y3JvbGxPZmZzZXQpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJ
c1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCit7CisgICAgaWYgKG1faXNTY3JvbGxhYmxl
ID09IGlzU2Nyb2xsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Njcm9sbGFibGUg
PSBpc1Njcm9sbGFibGU7CisgICAgbm90aWZ5Q2hhbmdlKElzU2Nyb2xsYWJsZSk7Cit9CisKIC8q
IFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQpAQCAtNTQzLDkg
KzU2MiwyMSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNo
YW5nZXMoKQogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBGaXhlZFRvVmlld3BvckNoYW5nZSkKICAg
ICAgICAgbV9sYXllci0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGZpeGVkVG9WaWV3cG9ydCgpKTsKIAor
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb21taXR0ZWRTY3JvbGxPZmZzZXQpCisgICAgICAgIGNv
bW1pdExheWVyU2Nyb2xsT2Zmc2V0KCk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgSXNTY3Jv
bGxhYmxlKQorICAgICAgICBtX2xheWVyLT5zZXRJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKCkp
OworCiAgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCit2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllclNjcm9sbE9mZnNldCgpCit7CisgICAgbV9sYXll
ci0+Y29tbWl0U2Nyb2xsT2Zmc2V0KG1fY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKKyAgICBtX2Nv
bW1pdHRlZFNjcm9sbE9mZnNldCA9IEludFNpemUoKTsKK30KKwogLyogXHJlaW1wIChHcmFwaGlj
c0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21w
b3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggOTMyOWZiYy4uNTQ5NzM1NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTM0LDYgKzM0LDkgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXJDbGllbnQq
KTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpOwogCisgICAgdm9p
ZCBzZXRTY3JvbGxDbGllbnQoVGV4dHVyZU1hcHBlckxheWVyOjpTY3JvbGxpbmdDbGllbnQqIGNs
aWVudCkgeyBtX2xheWVyLT5zZXRTY3JvbGxDbGllbnQoY2xpZW50KTsgfQorICAgIHZvaWQgc2V0
TGF5ZXJJRCh1aW50MzJfdCBpZCkgeyBtX2xheWVyLT5zZXRMYXllcklEKGlkKTsgfQorCiAgICAg
Ly8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRz
RGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwpA
QCAtODEsNiArODQsMTAgQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgY29tbWl0U2Ny
b2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29s
KTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JvbGxhYmxl
OyB9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRl
cnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBAIC0xMDUsNiArMTEyLDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJZk5lZWRlZCgpOwogICAgIGJv
b2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogCisgICAgdm9pZCBjb21taXRMYXll
clNjcm9sbE9mZnNldCgpOworCiAgICAgLy8gVGhpcyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZl
ciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZlIGJlZW4KICAgICAvLyBtb2RpZmll
ZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0
aGUgbmV4dCBmbHVzaC4KICAgICBlbnVtIENoYW5nZU1hc2sgewpAQCAtMTQzLDcgKzE1MiwxMCBA
QCBwcml2YXRlOgogICAgICAgICBSZXBhaW50Q291bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1
KSwKIAogICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5nZSA9ICAgICAgKDFMIDw8IDI2KSwKLSAg
ICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNykKKyAgICAgICAgQW5p
bWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNyksCisKKyAgICAgICAgQ29tbWl0dGVk
U2Nyb2xsT2Zmc2V0ID0gICAgICgxTCA8PCAyOCksCisgICAgICAgIElzU2Nyb2xsYWJsZSA9ICAg
ICAgICAgICAgICAoMUwgPDwgMjkpCiAgICAgfTsKICAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFu
Z2VNYXNrKTsKIApAQCAtMTY1LDYgKzE3Nyw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1f
bmVlZHNEaXNwbGF5UmVjdDsKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlv
bnM7CiAgICAgZG91YmxlIG1fYW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAgSW50U2l6ZSBtX2Nv
bW1pdHRlZFNjcm9sbE9mZnNldDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxlOwogfTsKIAogaW5s
aW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAKaW5kZXggMTBiZWYyNi4uYjc0Mjc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAK
QEAgLTY3Myw1ICs2NzMsNzYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBv
c2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAgIG1fY3VycmVu
dFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQogCit0ZW1wbGF0
ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBl
ckxheWVyOjpoaXRUZXN0U2VhcmNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBTZWFyY2hDb25k
aXRpb24gY29uZGl0aW9uKQoreworICAgIGlmICghbV9zdGF0ZS52aXNpYmxlIHx8ICFtX3N0YXRl
LmNvbnRlbnRzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIHJlc3VsdCA9IDA7CisgICAgZm9yIChpbnQgaSA9IG1fY2hpbGRyZW4uc2l6ZSgpIC0g
MTsgIXJlc3VsdCAmJiBpID49IDA7IC0taSkKKyAgICAgICAgcmVzdWx0ID0gbV9jaGlsZHJlbltp
XS0+aGl0VGVzdFNlYXJjaChwb2ludCwgY29uZGl0aW9uKTsKKworICAgIHJldHVybiByZXN1bHQg
PyByZXN1bHQgOiBjb25kaXRpb24odGhpcywgcG9pbnQpID8gdGhpcyA6IDA7Cit9CisKK2Jvb2wg
VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24oVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgaWYg
KCFsYXllci0+aXNTY3JvbGxhYmxlKCkgfHwgIWxheWVyLT5tX3BhcmVudCB8fCAhbGF5ZXItPm1f
cGFyZW50LT5tX3BhcmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVGV4dHVyZU1h
cHBlckxheWVyKiBwYXJlbnRMYXllciA9IGxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQ7CisgICAg
cmV0dXJuIHBhcmVudExheWVyLT5tX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5tYXBSZWN0
KHBhcmVudExheWVyLT5tX3N0YXRlLmNvbnRlbnRzUmVjdCkuY29udGFpbnMocG9pbnQpOworfQor
CitUZXh0dXJlTWFwcGVyTGF5ZXIqIFRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNv
bnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gaGl0
VGVzdFNlYXJjaChwb2ludCwgJlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2Vh
cmNoQ29uZGl0aW9uKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgcm91bmQoZmxvYXQgdmFsdWUp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4odmFsdWUgPj0gMCA/IHZhbHVlICsgLjUg
OiB2YWx1ZSAtIC41KTsKK30KKworSW50U2l6ZSBUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldEludGVn
ZXJTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCit7CisgICAgbV9wZW5kaW5n
U2Nyb2xsT2Zmc2V0ICs9IG9mZnNldDsKKworICAgIGludCBpbnRXaWR0aCA9IHJvdW5kKG1fcGVu
ZGluZ1Njcm9sbE9mZnNldC53aWR0aCgpKTsKKyAgICBpbnQgaW50SGVpZ2h0ID0gcm91bmQobV9w
ZW5kaW5nU2Nyb2xsT2Zmc2V0LmhlaWdodCgpKTsKKworICAgIG1fcGVuZGluZ1Njcm9sbE9mZnNl
dCA9IEZsb2F0U2l6ZShtX3BlbmRpbmdTY3JvbGxPZmZzZXQud2lkdGgoKSAtIGludFdpZHRoLCBt
X3BlbmRpbmdTY3JvbGxPZmZzZXQuaGVpZ2h0KCkgLSBpbnRIZWlnaHQpOworICAgIHJldHVybiBJ
bnRTaXplKGludFdpZHRoLCBpbnRIZWlnaHQpOworfQorCitGbG9hdFNpemUgVGV4dHVyZU1hcHBl
ckxheWVyOjpjYWxjdWxhdGVFZmZlY3RpdmVTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQpCit7CisgICAgZG91YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKKyAg
ICBtX2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCkubWFwKDAsIDAsIHplcm9Y
LCB6ZXJvWSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpLm1h
cChvZmZzZXQud2lkdGgoKSwgb2Zmc2V0LmhlaWdodCgpLCBvZmZzZXRYLCBvZmZzZXRZKTsKKyAg
ICByZXR1cm4gRmxvYXRTaXplKG9mZnNldFggLSB6ZXJvWCwgb2Zmc2V0WSAtIHplcm9ZKTsKK30K
Kwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zm
c2V0KQoreworICAgIGlmICghbV9zY3JvbGxDbGllbnQgfHwgb2Zmc2V0LmlzWmVybygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBGbG9hdFNpemUgc2Nyb2xsb2Zmc2V0ID0gY2FsY3VsYXRlRWZm
ZWN0aXZlU2Nyb2xsT2Zmc2V0KG9mZnNldCk7CisgICAgbV9VSVNpZGVTY3JvbGxPZmZzZXQgKz0g
c2Nyb2xsb2Zmc2V0OworCisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVz
dGVkUG9zaXRpb24oKSk7CisgICAgbV9zY3JvbGxDbGllbnQtPnNjcm9sbExheWVyQnkobV9sYXll
cklELCBnZXRJbnRlZ2VyU2Nyb2xsT2Zmc2V0KHNjcm9sbG9mZnNldCkpOworfQorCit2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIG9mZnNl
dCkKK3sKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X1VJU2lkZVNjcm9sbE9mZnNldCA9IEZsb2F0U2l6ZShtX1VJU2lkZVNjcm9sbE9mZnNldC53aWR0
aCgpIC0gb2Zmc2V0LndpZHRoKCksIG1fVUlTaWRlU2Nyb2xsT2Zmc2V0LmhlaWdodCgpIC0gb2Zm
c2V0LmhlaWdodCgpKTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0
ZWRQb3NpdGlvbigpKTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5k
ZXggNjAyYjJjMy4uNTRhNTcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzksNiAr
MzksMTIgQEAgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXJB
bmltYXRpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBl
ckxheWVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKworICAgIGNs
YXNzIFNjcm9sbGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQg
c2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpID0g
MDsKKyAgICB9OworCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAgOiBtX3BhcmVu
dCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFyZ2V0KDApCkBAIC00NywxMCArNTMsMjUgQEAgcHVi
bGljOgogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVyZU1hcHBlcigw
KQogICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICAgICAsIG1fbGF5ZXJJ
RCgwKQorICAgICAgICAsIG1fc2Nyb2xsQ2xpZW50KDApCisgICAgICAgICwgbV9pc1Njcm9sbGFi
bGUoZmFsc2UpCiAgICAgeyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsK
IAorICAgIHZvaWQgc2V0TGF5ZXJJRCh1aW50MzJfdCBpZCkgeyBtX2xheWVySUQgPSBpZDsgfQor
ICAgIHVpbnQzMl90IGxheWVySUQoKSB7IHJldHVybiBtX2xheWVySUQ7IH0KKworICAgIFRleHR1
cmVNYXBwZXJMYXllciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBv
aW50JiBwb3MpOworCisgICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoU2Nyb2xsaW5nQ2xpZW50KiBz
Y3JvbGxDbGllbnQpIHsgbV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lk
IHNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgdm9pZCBjb21taXRT
Y3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlKGJv
b2wgaXNTY3JvbGxhYmxlKSB7IG1faXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOyB9CisgICAg
Ym9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZTsgfQorCiAg
ICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4
bWFwOyB9CiAKQEAgLTEwOCw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNv
cnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSwgaW50IGZpcnN0
LCBpbnQgbGFzdCk7CiAKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7
IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9
Ci0gICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGE7IH0KKyAgICBGbG9hdFBvaW50IGFkanVzdGVk
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25E
ZWx0YSAtIG1fVUlTaWRlU2Nyb2xsT2Zmc2V0OyB9CiAgICAgYm9vbCBpc0FuY2VzdG9yRml4ZWRU
b1ZpZXdwb3J0KCkgY29uc3Q7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVRyYW5z
Zm9ybSgpOwogICAgIHZvaWQgYWRkQ2hpbGQoVGV4dHVyZU1hcHBlckxheWVyKik7CkBAIC0xNTks
NiArMTgwLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBmbG9hdCBtX2NlbnRlclo7CiAKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogaGl0
VGVzdFNlYXJjaChjb25zdCBGbG9hdFBvaW50JiwgU2VhcmNoQ29uZGl0aW9uKTsKKyAgICBzdGF0
aWMgYm9vbCBzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVy
KiwgY29uc3QgRmxvYXRQb2ludCYpOworCisgICAgSW50U2l6ZSBnZXRJbnRlZ2VyU2Nyb2xsT2Zm
c2V0KGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIEZsb2F0U2l6ZSBjYWxjdWxhdGVFZmZlY3RpdmVT
Y3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7CisKICAgICBzdHJ1Y3QgU3RhdGUgewogICAg
ICAgICBGbG9hdFBvaW50IHBvczsKICAgICAgICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50OwpA
QCAtMjExLDYgKzIzOCwxMSBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25z
IG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAg
IGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisgICAgdWludDMyX3QgbV9sYXllcklEOworICAgIFNj
cm9sbGluZ0NsaWVudCogbV9zY3JvbGxDbGllbnQ7CisgICAgYm9vbCBtX2lzU2Nyb2xsYWJsZTsK
KyAgICBGbG9hdFNpemUgbV9VSVNpZGVTY3JvbGxPZmZzZXQ7CisgICAgRmxvYXRTaXplIG1fcGVu
ZGluZ1Njcm9sbE9mZnNldDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggNGM0M2FhNy4uNWJmOTFjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUg
IlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgpAQCAtMTIyLDYgKzEyMyw3IEBAIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29t
cG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkK
ICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQorICAgICwgbV9zY3JvbGxhYmxlQXJl
YSgwKQogewogICAgIHN0YXRpYyBDb29yZGluYXRlZExheWVySUQgbmV4dExheWVySUQgPSAxOwog
ICAgIG1faWQgPSBuZXh0TGF5ZXJJRCsrOwpAQCAtNDY1LDYgKzQ2NywyNCBAQCBDb29yZGluYXRl
ZExheWVySUQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppZCgpIGNvbnN0CiAgICAgcmV0dXJu
IG1faWQ7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxhYmxl
QXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7CisgICAgYm9vbCBvbGRTY3Jv
bGxhYmxlID0gaXNTY3JvbGxhYmxlKCk7CisgICAgbV9zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFi
bGVBcmVhOworICAgIGlmIChvbGRTY3JvbGxhYmxlICE9IGlzU2Nyb2xsYWJsZSgpKQorICAgICAg
ICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzY3JvbGxCeShjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKCFpc1Njcm9s
bGFibGUoKSB8fCBvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Ny
b2xsYWJsZUFyZWEtPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChtX3Njcm9sbGFibGVBcmVh
LT5zY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKKyAgICBtX2xheWVySW5mby5jb21taXR0ZWRT
Y3JvbGxPZmZzZXQgKz0gb2Zmc2V0OworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwog
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGlz
Rml4ZWQpCiB7CiAgICAgaWYgKG1fZml4ZWRUb1ZpZXdwb3J0ID09IGlzRml4ZWQpCkBAIC01NzIs
NiArNTkyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRl
KCkKICAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IG1fYWRqdXN0ZWRBbmNob3JQb2ludDsK
ICAgICBtX2xheWVySW5mby5wb3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9sYXllcklu
Zm8uc2l6ZSA9IG1fYWRqdXN0ZWRTaXplOworICAgIG1fbGF5ZXJJbmZvLmlzU2Nyb2xsYWJsZSA9
IGlzU2Nyb2xsYWJsZSgpOwogCiAgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlz
U2hvd2luZ0RlYnVnQm9yZGVyKCk7CiAgICAgaWYgKG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRl
cnMpCkBAIC01NzksNiArNjAwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5
bmNMYXllclN0YXRlKCkKICAgICBtX2xheWVySW5mby5zaG93UmVwYWludENvdW50ZXIgPSBpc1No
b3dpbmdSZXBhaW50Q291bnRlcigpOwogCiAgICAgbV9jb29yZGluYXRvci0+c3luY0xheWVyU3Rh
dGUobV9pZCwgbV9sYXllckluZm8pOworICAgIG1fbGF5ZXJJbmZvLmNvbW1pdHRlZFNjcm9sbE9m
ZnNldCA9IEludFNpemUoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZTVh
YTQ3YS4uMGZmZDA5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckFu
aW1hdGlvbnM7CitjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTEzNCw4ICsxMzUsMTMgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbGFibGVB
cmVhKFNjcm9sbGFibGVBcmVhKik7CisgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJl
dHVybiAhIW1fc2Nyb2xsYWJsZUFyZWE7IH0KKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNp
emUmKTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJJRCBpZCgpIGNvbnN0OwogCisKICAgICB2b2lk
IHNldEZpeGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpOwogCiAgICAgSW50UmVjdCBjb3ZlclJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX21haW5CYWNraW5nU3RvcmUgPyBtX21haW5CYWNraW5nU3Rv
cmUtPm1hcFRvQ29udGVudHMobV9tYWluQmFja2luZ1N0b3JlLT5jb3ZlclJlY3QoKSkgOiBJbnRS
ZWN0KCk7IH0KQEAgLTI1OCw2ICsyNjQsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhpY3NM
YXllckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25T
dGFydFRpbWU7CisKKyAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAK
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3Jh
cGhpY3NMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAppbmRleCA4NjI0NTEzLi42NDYzNWQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MzE5LDYgKzMxOSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0
YXRlKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpCiAgICAgbGF5ZXItPnNldERl
YnVnQm9yZGVyKGxheWVySW5mby5kZWJ1Z0JvcmRlckNvbG9yLCBsYXllckluZm8uZGVidWdCb3Jk
ZXJXaWR0aCk7CiAgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRlcihsYXllckluZm8uc2hv
d1JlcGFpbnRDb3VudGVyKTsKIAorICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5
ZXIpLT5jb21taXRTY3JvbGxPZmZzZXQobGF5ZXJJbmZvLmNvbW1pdHRlZFNjcm9sbE9mZnNldCk7
CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldElzU2Nyb2xsYWJs
ZShsYXllckluZm8uaXNTY3JvbGxhYmxlKTsKKwogICAgIGlmIChsYXllckluZm8uZml4ZWRUb1Zp
ZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFkZChpZCwgbGF5ZXIpOwogICAgIGVsc2UK
QEAgLTM0OCw2ICszNTEsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
TGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIE93blB0cjxHcmFwaGljc0xheWVy
PiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwIC8qIGZhY3RvcnkgKi8sIHRoaXMp
OwogICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRI
YXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRMYXllcklEKGlkKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0U2Nyb2xsQ2xpZW50KHRoaXMpOwogICAg
IG1fbGF5ZXJzLmFkZChpZCwgbmV3TGF5ZXIucmVsZWFzZSgpKTsKIH0KIApAQCAtNjEwLDYgKzYx
NSwxNiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cHVyZ2VHTFJlc291cmNlcygp
CiAgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpwdXJnZUJhY2tpbmdTdG9yZXMsIHRoaXMpKTsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmU6OmRvU2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPnNjcm9sbExheWVyQnkobGF5ZXJJRCwgb2Zmc2V0
KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNjcm9sbExheWVyQnkodWlu
dDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGRpc3BhdGNoT25N
YWluVGhyZWFkKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZG9TY3JvbGxMYXllckJ5
LCB0aGlzLCBsYXllcklELCBvZmZzZXQpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpAQCAtNjcz
LDYgKzY4OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9y
OwogfQogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Z2V0
U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAg
ICByZXR1cm4gcm9vdExheWVyKCkgPyB0b1RleHR1cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSkt
PmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmlu
ZGV4IDljOTIxYTcuLjhlNTY3MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJGUFNDb3VudGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlOwogY2xhc3MgQ29vcmRpbmF0ZWRMYXllckluZm87CiBjbGFz
cyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Ci1j
bGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02MCw5ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
TmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydCgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsTGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBjb25zdCBJ
bnRTaXplJiBvZmZzZXQpID0gMDsKIH07CiAKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+
LCBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lPiwgcHVibGljIEdyYXBoaWNzTGF5ZXJDbGllbnQsIHB1YmxpYyBUZXh0dXJlTWFwcGVyTGF5
ZXI6OlNjcm9sbGluZ0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRpbGVVcGRhdGUgewog
ICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3Q7CkBAIC05Miw2ICs5MywxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2
b2lkKCk+Jik7CiAKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFNjcm9sbGFi
bGVDb250ZW50c0xheWVyQXQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworCisgICAgdmly
dHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KTsKKwogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBsb2NrIHRoZSBtYWlu
IHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1ldGhvZHMgYWNj
ZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2VlIG1fY2xpZW50Lgog
ICAgIC8vIEN1cnJlbnRseSwgUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKCkgbG9ja3Mg
dGhlIG1haW4gdGhyZWFkIGJlZm9yZSBjYWxsaW5nIGJvdGggbWV0aG9kcy4KICAgICB2b2lkIHB1
cmdlR0xSZXNvdXJjZXMoKTsKQEAgLTE2OSw2ICsxNzQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciopOwogICAgIHZvaWQgcmVz
ZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciopOwogCisgICAgdm9p
ZCBkb1Njcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0
KTsKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0
aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPEZ1bmN0aW9u
PHZvaWQoKT4gPiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXgg
MGZhMmExMi4uNjIyZjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkTGF5ZXJJbmZvLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJ
bmZvIHsKICAgICBDb2xvciBzb2xpZENvbG9yOwogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7
CiAgICAgZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKKyAgICBJbnRTaXplIGNvbW1pdHRlZFNjcm9s
bE9mZnNldDsKIAogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKQEAgLTczLDYgKzc0LDcg
QEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICAgICAgICAgIGJvb2wgZml4ZWRU
b1ZpZXdwb3J0IDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CiAg
ICAgICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CisgICAgICAgICAgICBib29s
IGlzU2Nyb2xsYWJsZSA6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwog
ICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IGI4NjRkNzAzLi5lMTFiZDc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9D
TWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2VzcyIKICAgICAiJHtXRUJLSVQyX0RJ
Un0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DIgor
ICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwIgogICAgICIke1dFQktJVDJfRElS
fS9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzIgpAQCAtNzUsNiArNzYsOCBAQCBzZXQoV2ViS2l0Ml9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9jYWNoZSIKICAgICAi
JHtXRUJDT1JFX0RJUn0vcGFnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9hbmltYXRpb24i
CisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgorICAgICIke1dFQkNPUkVfRElS
fS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKQEAgLTM0MCw2ICszNDMsOCBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3Bw
CiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcAogCisgICAgVUlQcm9jZXNzL0FQ
SS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKKwogICAgIFVJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAogICAg
IFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
Y3BwCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNjNjM2MzMC4uMmU2YmU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDEzLTAyLTI4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAg
ICAgICAgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFw
aGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElt
cGxlbWVudGluZyBhY2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIGNvb3JkaW5hdGVk
IGdyYXBoaWNzLgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5IGJl
IHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOgorICAgICAgICAoV0tDb29yZGluYXRlZFNjZW5lR2V0
U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdCk6CisgICAgICAgIChXS0Nvb3JkaW5hdGVkU2NlbmVH
ZXRMYXllcklEKToKKyAgICAgICAgKFdLQ29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5l
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eTo6c2Nyb2xsTGF5ZXJCeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5Lmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJ
Q2FzdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICh0b0ltcGwpOgorICAgICAgICAo
dG9BUEkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250
ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1
cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6c2Nyb2xsTGF5ZXJCeSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzKToKKwogMjAxMy0wMi0yOCAgU2Vva2p1IEt3b24gIDxzZW9ranUua3dvbkBn
bWFpbC5jb20+CiAKICAgICAgICAgW1dLMl0gUmVmYWN0b3JpbmcgOiBGaXggaW5kZW50YXRpb24g
YW5kIGJyYWNlcyBpbiBXZWJJbnNwZWN0b3JDbGllbnQuaHxjcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDdjZWE5MGUuLjFlM2QxZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTQxLDYgKzE0
MSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKExvZ3NQYWdlTWVzc2FnZXNUb1N5
c3RlbUNvbnNvbGVFbmFibGVkLCBsb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxl
ZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhQYWdlVmlzaWJpbGl0eUJhc2VkUHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCwgcGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkLCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUp
IFwKKyAgICBtYWNybyhBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFi
bGVkLCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBCb29s
LCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxF
X1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRT
Y2VuZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FjN2EyZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lLmgiCisKKyNpbmNsdWRlICJXS0Nv
b3JkaW5hdGVkU2NlbmVBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlckxheWVyLmg+
CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVH
ZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdLQ29vcmRpbmF0ZWRTY2VuZSBzY2VuZSwgV0tQ
b2ludCBwb2ludCkKK3sKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHNjZW5lKS0+Z2V0U2Nyb2xs
YWJsZUNvbnRlbnRzTGF5ZXJBdChXZWJDb3JlOjpGbG9hdFBvaW50KHBvaW50LngsIHBvaW50Lnkp
KSk7Cit9CisKK1dLX0VYUE9SVCB1aW50MzJfdCBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklE
KFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxheWVyKQoreworICAgIHJldHVybiB0b0ltcGwobGF5
ZXIpLT5sYXllcklEKCk7Cit9CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29vcmRpbmF0ZWRTY2VuZVNj
cm9sbEJ5KFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxheWVyLCBXS1NpemUgb2Zmc2V0KQorewor
ICAgIHRvSW1wbChsYXllciktPnNjcm9sbEJ5KFdlYkNvcmU6OkZsb2F0U2l6ZShvZmZzZXQud2lk
dGgsIG9mZnNldC5oZWlnaHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
U2NlbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDMzYjEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29vcmRp
bmF0ZWRTY2VuZV9oCisjZGVmaW5lIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDR1NjZW5lKiBX
S0Nvb3JkaW5hdGVkU2NlbmU7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDR0xheWVyKiBXS0Nvb3Jk
aW5hdGVkU2NlbmVMYXllcjsKKworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIFdL
Q29vcmRpbmF0ZWRTY2VuZUdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoV0tDb29yZGluYXRl
ZFNjZW5lLCBXS1BvaW50KTsKK1dLX0VYUE9SVCB1aW50MzJfdCBXS0Nvb3JkaW5hdGVkU2NlbmVH
ZXRMYXllcklEKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29v
cmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyLCBXS1NpemUpOwor
CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCisjZW5kaWYg
Ly8gV0tDb29yZGluYXRlZFNjZW5lX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBjNWY3ZTg3Li4zNzk4MGUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCkBA
IC0yMzcsNSArMjM3LDEwIEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OnNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgZGlzcGF0Y2hVcGRhdGUo
YmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRCYWNrZ3JvdW5kQ29sb3IsIG1fc2Nl
bmUuZ2V0KCksIGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJv
eHk6OnNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0
KQoreworICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVz
c2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6U2Nyb2xsTGF5ZXJCeShsYXllcklELCBv
ZmZzZXQpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOworfQorCiB9CiAj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKaW5kZXggOTQ2YjM5OS4uYjJmMGIzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5o
CkBAIC05OCw2ICs5OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZy
YW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9W
RVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJ
RCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIHZv
aWQgZGlzcGF0Y2hVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5h
dGVkU2NlbmVBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZmM5ZjBkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3Qu
aApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0X2gKKyNkZWZp
bmUgV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29v
cmRpbmF0ZWRTY2VuZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTsKK2NsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitpbmxpbmUgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KiB0b0ltcGwoV0tDb29yZGluYXRlZFNjZW5lIHNjZW5lKQoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSo+KHNjZW5lKTsKK30K
KworaW5saW5lIFdLQ29vcmRpbmF0ZWRTY2VuZSB0b0FQSShXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUqIHNjZW5lKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ29v
cmRpbmF0ZWRTY2VuZT4oc2NlbmUpOworfQorCitpbmxpbmUgV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyKiB0b0ltcGwoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIpCit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKj4obGF5ZXIp
OworfQorCitpbmxpbmUgV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgdG9BUEkoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyKiBsYXllcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
S0Nvb3JkaW5hdGVkU2NlbmVMYXllcj4obGF5ZXIpOworfQorCisjZW5kaWYgLy8gV0tDb29yZGlu
YXRlZFNjZW5lQVBJQ2FzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRleCA2NDRlMzc4Li5jZjBlNTQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHAKQEAgLTcyLDkgKzcyLDkgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKICNlbmRpZgogICAgIHB1cmdlQmFja2luZ1N0b3Jlcygp
OwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRl
cmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c2V0
Q29vcmRpbmF0b3IoMCk7CisgICAgTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVy
ZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChMYXllcnNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdp
c3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVl
LT5zZXRDb29yZGluYXRvcigwKTsKIH0KIAogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTQ2Nyw3ICs0NjcsNyBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclBy
b2dyYW1zKCkKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJz
LnJlbW92ZShsYXllcik7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQo
KSk7CiAgICAgbV9sYXllcnNUb0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVk
dWxlTGF5ZXJGbHVzaCgpOwogfQpAQCAtNjM4LDcgKzYzOCw3IEBAIFBhc3NPd25QdHI8R3JhcGhp
Y3NMYXllcj4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdy
YXBoaWNzCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3Io
dGhpcyk7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9yZWdpc3Rl
cmVkTGF5ZXJzLmFkZChsYXllci0+aWQoKSwgbGF5ZXIpOwogICAgIG1fbGF5ZXJzVG9DcmVhdGUu
YXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVz
dG1lbnQoKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTczNSw5ICs3MzUsOSBAQCB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbgogICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsK
ICAgICAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0ID0gcmVjdDsKIAotICAgICAgICBIYXNoU2V0
PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3Jl
Z2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNW
aXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKKyAgICAgICAgTGF5ZXJzTWFwOjppdGVyYXRvciBlbmQg
PSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJzTWFwOjppdGVy
YXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNzg2LDkgKzc4Niw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5n
ZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKIAotICAgIEhhc2hTZXQ8
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVn
aXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnB1cmdlQmFja2luZ1N0b3Jlcygp
OworICAgIExheWVyc01hcDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgp
OworICAgIGZvciAoTGF5ZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+cHVyZ2VCYWNraW5n
U3RvcmVzKCk7CiAKICAgICBtX2ltYWdlQmFja2luZ3MuY2xlYXIoKTsKICAgICBtX3VwZGF0ZUF0
bGFzZXMuY2xlYXIoKTsKQEAgLTg1MSw1ICs4NTEsMTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3Ip
CiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG9mZnNldCkKK3sKKyAgICBMYXllcnNNYXA6Oml0ZXJhdG9yIGkgPSBtX3Jl
Z2lzdGVyZWRMYXllcnMuZmluZChsYXllcklEKTsKKyAgICBpZiAoaSA9PSBtX3JlZ2lzdGVyZWRM
YXllcnMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGktPnZhbHVlLT5zY3JvbGxCeShv
ZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI2MDUyODkuLjljNGRmNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBA
IC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCisg
ICAgdm9pZCBzY3JvbGxMYXllckJ5KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3QoV2ViUGFnZSopOwogCkBAIC0xODEsNyArMTgzLDggQEAgcHJpdmF0ZToKICAg
ICAvLyBUaGUgcGFnZSBvdmVybGF5IGxheWVyLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUncyBubyBw
YWdlIG92ZXJsYXkuCiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92
ZXJsYXlMYXllcjsKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyKj4gbV9yZWdpc3RlcmVkTGF5ZXJzOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpD
b29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IExh
eWVyc01hcDsKKyAgICBMYXllcnNNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwogICAgIFZlY3RvcjxX
ZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9y
PFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBl
ZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdl
YkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCA2NjcxYjMyLi5hYTlmMGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Lm1lc3NhZ2VzLmluCkBAIC0yNyw1ICsyNyw2IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFU
SU9OX0ZSQU1FKQogICAgIEFuaW1hdGlvbkZyYW1lUmVhZHkoKQogI2VuZGlmCisgICAgU2Nyb2xs
TGF5ZXJCeSh1aW50MzJfdCBsYXllcklELCBXZWJDb3JlOjpJbnRTaXplIG9mZnNldCkKIH0KICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGM0YzFkNDguLmMwMDUzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMTUsNiArMjMxNSw3IEBAIHZvaWQgV2ViUGFnZTo6dXBk
YXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0
dGluZ3MtPnNldEVkaXRhYmxlTGlua0JlaGF2aW9yKHN0YXRpY19jYXN0PFdlYkNvcmU6OkVkaXRh
YmxlTGlua0JlaGF2aW9yPihzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6ZWRpdGFibGVMaW5rQmVoYXZpb3JLZXkoKSkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hv
d3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5OjpzaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dEtleSgpKSk7CiAKKyAg
ICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLT5zZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkS2V5
KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsK
ICAgICBzZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChzdG9yZS5nZXRCb29s
VmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRL
ZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkp
OwogICAgIHNldHRpbmdzLT5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y2FudmFzVXNlc0FjY2VsZXJhdGVk
RHJhd2luZ0tleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSk7Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191173</attachid>
            <date>2013-03-04 01:28:58 -0800</date>
            <delta_ts>2013-03-04 02:30:17 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>54221</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBlYzZiNzAxZTQwMjA1NTAyYTM5NjgxY2ZlNDVmM2U1OGNlZWI3ZjMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogTW9uLCA0IE1hciAyMDEzIDAxOjE5OjQ4IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZp
ZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVk
IGFzc3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgpTb3VyY2UvV2ViQ29yZToK
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnIDExMTE0MC4KClNjcm9sbGluZyBjb29yZGluYXRv
ciBpcyB1c2VkIHRvIHByb3ZpZGUgYSBTY3JvbGxhYmxlQXJlYSB0byBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuCgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRp
ZENoYW5nZSk6CihXZWJDb3JlKToKKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CiogcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaDoKKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6CgpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZSBz
eW5jIG1lc3NhZ2VzIGFuZCB0byBwYXNzCnRoZW0gdG8gaXRzIFRleHR1cmVNYXBwZXJMYXllciBv
biB0aGUgYXBwcm9wcmlhdGVkIHRpbWUuCgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgooV2ViQ29yZTo6R3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnJlY2VpdmVTY3JvbGxTeW5jUmVzcG9uc2UpOgooV2ViQ29yZSk6
CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0SXNTY3JvbGxhYmxlKToK
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMp
OgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpc3BhdGNoU2Nyb2xsU3lu
Y1Jlc3BvbnNlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuaDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3Jv
bGxDbGllbnQpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElEKToK
KEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjppc1Njcm9sbGFibGUpOgoKVGV4dHVyZU1hcHBlckxheWVyIGlzIHJlc3BvbnNp
YmxlIGZvciBhcHBseWluZyB0aGUgcmVxdWVzdCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKc2VuZGlu
ZyB0aGUgc3luYyByZXF1ZXN0cyB0byB3ZWIgcHJvY2Vzcy4gSXQgaXMgYWxzbyBhYmxlIHRvIGhp
dHRlc3QgbGF5ZXJzIGFuZCBpZGVudGlmeQp0aGUgb25lcyB0aGF0IGFyZSBzY3JvbGxhYmxlLgoK
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdGluZ1NlYXJjaCk6CihXZWJDb3JlKToKKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2VhcmNoQ29uZGl0aW9u
KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5
ZXJBdCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNlbmRTY3JvbGxTeW5jUmVxdWVzdCk6CihXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KToKKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcjo6cmVjZWl2ZVNjcm9sbFN5bmNSZXNwb25zZSk6CiogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9s
bGluZ0NsaWVudCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJM
YXllcik6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElEKToKKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6aWQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRT
Y3JvbGxDbGllbnQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJc1Njcm9sbGFi
bGUpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGUpOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKCkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllciByZWNlaXZlcyB0aGUgc3luYyByZXF1ZXN0cywgdXBkYXRlcyBpdHMgU2Nyb2xs
YWJsZUFyZWEgYW5kCnNlbmRzIHRoZSBzeW5jIHJlc3BvbnNlLgoKKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToK
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgoo
V2ViQ29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlY2VpdmVTY3Jv
bGxTeW5jUmVxdWVzdCk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNM
YXllclN0YXRlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmg6CihXZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CgpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUgcmVjZWl2ZXMgdGhlIHN5bmMgcmVxdWVzdHMgZnJvbSBU
ZXh0dXJlTWFwcGVyTGF5ZXIgYW5kCmRpc3BhdGNoZXMgdGhlbSBvbiB0aGUgbWFpbiB0aHJlYWQu
IEl0IGFsc28gaGFzIGEgbmV3IG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZmluZAp0aGUgdG9wbW9z
dCBzY3JvbGxhYmxlIGxheWVyIGF0IGEgZ2l2ZW4gcG9pbnQuCgoqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgooV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKToKKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIpOgooV2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaFNjcm9sbFN5bmNSZXF1ZXN0KToKKFdlYkNvcmUpOgoo
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZW5kU2Nyb2xsU3luY1JlcXVlc3Qp
OgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVu
dHNMYXllckF0KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmg6CihXZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZUNsaWVudCk6CihDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgoqIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oOgooQ29vcmRpbmF0ZWRM
YXllckluZm8pOgoKU291cmNlL1dlYktpdDI6CgoqIENNYWtlTGlzdHMudHh0OgoKQWRkaW5nIGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQgdG8gV2ViUHJlZmVy
ZW5jZXNTdG9yZS4KCiogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKFdlYktpdCk6Ciog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyk6CgpOZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBpcyB1c2VkIHRvIHNjcm9s
bCBsYXllcnMgb24gVUkgc2lkZS4KCiogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNz
L1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHA6CiogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBo
aWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oOgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaDoKCkEgbmV3IG1lc3NhZ2UgaXMgdXNlZCB0byBz
ZW5kIHNjcm9sbCBzeW5jIHJlcXVlc3RzIHRvIHdlYiBwcm9jZXNzLgoKKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CihXZWJL
aXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZW5kU2Nyb2xsU3luY1JlcXVlc3Qp
OgooV2ViS2l0KToKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5oOgooQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgoqIFdl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNo
TGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNz
TGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250
ZW50c1JlY3QpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2lu
Z1N0b3Jlcyk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTGF5ZXJC
eSk6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoKLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOTQgKysr
KysrKysrKysrKysrKysrKysKIC4uLi9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuY3BwICAgIHwgICAxOCArKysrCiAuLi4vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmggICAgICB8ICAgIDIgKwogLi4uL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5jcHAgfCAgIDMxICsrKysrKysKIC4uLi9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCAgIHwgICAxNyArKystCiAuLi4vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgICAgICAgICB8ICAgNzMgKysrKysrKysr
KysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
ICB8ICAgMzQgKysrKysrLQogLi4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHAgICAgICAgfCAgIDIyICsrKysrCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3NMYXllci5oICB8ICAgIDcgKysKIC4uLi9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzU2NlbmUuY3BwICAgICAgIHwgICAyMCArKysrKwogLi4uL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCAgfCAgIDExICsrLQogLi4uL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oICAgICAgfCAgICAyICsKIFNvdXJjZS9X
ZWJLaXQyL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArKwogU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQ0ICsr
KysrKysrKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCAgICAg
ICAgfCAgICAxICsKIC4uLi9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuY3BwIHwgICA0OSArKysrKysrKysrCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tD
b29yZGluYXRlZFNjZW5lLmggICB8ICAgNDggKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5LmNwcCAgICAgICAgICAgICAgfCAgICA1ICsrCiAuLi4vQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHkuaCAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL1dLQ29v
cmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysr
KysrKysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwICAgICAgICAgICAgICAgICAg
IHwgICAzMSArKysrLS0tCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuaCB8ICAgIDUgKy0KIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2Fn
ZXMuaW4gICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgICAgICB8ICAgIDEgKwogMjQgZmlsZXMgY2hhbmdlZCwgNTY3IGluc2Vy
dGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRl
ZFNjZW5lQVBJQ2FzdC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5MDM5MTIuLjRiOWU5ODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw5NyBAQAorMjAxMy0wMy0wNCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGlu
ZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBIHNjcm9sbCBvZmZzZXQgaXMgYXBwbGllZCB0byBpbmRpdmlk
dWFsIGxheWVycyBvbiBVSSBwcm9jZXNzIGFuZCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMg
bm90aWZpZWQgYXNzeW5jaHJvbm91c2x5LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5h
dGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4K
KworICAgICAgICBUZXN0cyB3aWxsIGJlIGFkZGVkIG9uIGJ1ZyAxMTExNDAuCisKKyAgICAgICAg
U2Nyb2xsaW5nIGNvb3JkaW5hdG9yIGlzIHVzZWQgdG8gcHJvdmlkZSBhIFNjcm9sbGFibGVBcmVh
IHRvIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllci4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3MuaDoKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljcyk6CisKKyAgICAgICAgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaXMgcmVz
cG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGUgc3luYyBtZXNzYWdlcyBhbmQgdG8gcGFzcworICAg
ICAgICB0aGVtIHRvIGl0cyBUZXh0dXJlTWFwcGVyTGF5ZXIgb24gdGhlIGFwcHJvcHJpYXRlZCB0
aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6cmVjZWl2ZVNjcm9sbFN5bmNSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpzZXRJc1Njcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlzcGF0Y2hTY3JvbGxTeW5jUmVzcG9uc2UpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNl
dFNjcm9sbENsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0SUQpOgorICAgICAgICAoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmlzU2Nyb2xsYWJsZSk6
CisKKyAgICAgICAgVGV4dHVyZU1hcHBlckxheWVyIGlzIHJlc3BvbnNpYmxlIGZvciBhcHBseWlu
ZyB0aGUgcmVxdWVzdCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKKyAgICAgICAgc2VuZGluZyB0aGUg
c3luYyByZXF1ZXN0cyB0byB3ZWIgcHJvY2Vzcy4gSXQgaXMgYWxzbyBhYmxlIHRvIGhpdHRlc3Qg
bGF5ZXJzIGFuZCBpZGVudGlmeQorICAgICAgICB0aGUgb25lcyB0aGF0IGFyZSBzY3JvbGxhYmxl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RpbmdT
ZWFyY2gpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllclNlYXJjaENvbmRpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZW5kU2Nyb2xsU3luY1JlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnJlY2VpdmVTY3JvbGxTeW5jUmVz
cG9uc2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAgIChTY3JvbGxp
bmdDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJl
TWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SXNTY3JvbGxhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTY3JvbGxhYmxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YWRqdXN0ZWRQb3NpdGlvbik6CisKKyAgICAgICAg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHJlY2VpdmVzIHRoZSBzeW5jIHJlcXVlc3RzLCB1cGRh
dGVzIGl0cyBTY3JvbGxhYmxlQXJlYSBhbmQKKyAgICAgICAgc2VuZHMgdGhlIHN5bmMgcmVzcG9u
c2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnJlY2VpdmVTY3JvbGxTeW5jUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CisK
KyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIHJlY2VpdmVzIHRoZSBzeW5jIHJlcXVl
c3RzIGZyb20gVGV4dHVyZU1hcHBlckxheWVyIGFuZAorICAgICAgICBkaXNwYXRjaGVzIHRoZW0g
b24gdGhlIG1haW4gdGhyZWFkLiBJdCBhbHNvIGhhcyBhIG5ldyBtZXRob2QgdGhhdCBpcyB1c2Vk
IHRvIGZpbmQKKyAgICAgICAgdGhlIHRvcG1vc3Qgc2Nyb2xsYWJsZSBsYXllciBhdCBhIGdpdmVu
IHBvaW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoU2Nyb2xsU3luY1JlcXVlc3QpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNlbmRTY3JvbGxTeW5jUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5
ZXJJbmZvLmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVySW5mbyk6CisKIDIwMTMtMDMtMDQg
IEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkZCBydW50aW1lIGZsYWcgdG8gZGV0ZXJtaW5lIGlmIGluc3BlY3Rvcidz
IHNvdXJjZSBmaWxlcyB3ZXJlIGZsYXR0ZW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
b3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNz
LmNwcAppbmRleCBhMWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC00Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgogICAgIHRv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGVuYWJs
ZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpz
Y3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxh
YmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVy
LT5zZXRTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJG
b3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgwKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggODdjMmM3Mi4uOTBjYzQzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGlj
cy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0zNyw2ICszNyw4IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3Jh
cGhpY3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9s
bExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmlu
ZGV4IDgwMTNlYzQuLmQ5NWRiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZQogICAg
ICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAs
IG1fYW5pbWF0aW9uU3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xsYWJsZShmYWxzZSkKIHsK
IH0KIApAQCAtNDAzLDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNoYW5nZShEZWJ1
Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpy
ZWNlaXZlU2Nyb2xsU3luY1Jlc3BvbnNlKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBp
ZiAob2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbFN5bmNS
ZXNwb25zZSArPSBvZmZzZXQ7CisgICAgbm90aWZ5Q2hhbmdlKENvbW1pdHRlZFNjcm9sbE9mZnNl
dENoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Ny
b2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKK3sKKyAgICBpZiAobV9pc1Njcm9sbGFibGUgPT0g
aXNTY3JvbGxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzU2Nyb2xsYWJsZSA9IGlz
U2Nyb2xsYWJsZTsKKyAgICBub3RpZnlDaGFuZ2UoSXNTY3JvbGxhYmxlQ2hhbmdlKTsKK30KKwog
LyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCkBAIC01NDMs
OSArNTYyLDIxIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVy
Q2hhbmdlcygpCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpeGVkVG9WaWV3cG9yQ2hhbmdlKQog
ICAgICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQoZml4ZWRUb1ZpZXdwb3J0KCkpOwog
CisgICAgaWYgKG1fY2hhbmdlTWFzayAmIElzU2Nyb2xsYWJsZUNoYW5nZSkKKyAgICAgICAgbV9s
YXllci0+c2V0SXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSgpKTsKKworICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiBDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2UpCisgICAgICAgIGRpc3BhdGNoU2Ny
b2xsU3luY1Jlc3BvbnNlKCk7CisKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAK
K3ZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpc3BhdGNoU2Nyb2xsU3luY1Jlc3Bv
bnNlKCkKK3sKKyAgICBtX2xheWVyLT5yZWNlaXZlU2Nyb2xsU3luY1Jlc3BvbnNlKG1fc2Nyb2xs
U3luY1Jlc3BvbnNlKTsKKyAgICBtX3Njcm9sbFN5bmNSZXNwb25zZSA9IEludFNpemUoKTsKK30K
KwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggOTMyOWZiYy4uNjJm
YmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTM0LDYg
KzM0LDkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcigpOwogCisgICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoVGV4dHVyZU1hcHBlckxheWVy
OjpTY3JvbGxpbmdDbGllbnQqIGNsaWVudCkgeyBtX2xheWVyLT5zZXRTY3JvbGxDbGllbnQoY2xp
ZW50KTsgfQorICAgIHZvaWQgc2V0SUQodWludDMyX3QgaWQpIHsgbV9sYXllci0+c2V0SUQoaWQp
OyB9CisKICAgICAvLyByZWltcHMgZnJvbSBHcmFwaGljc0xheWVyLmgKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNE
aXNwbGF5KCk7CkBAIC04MSw2ICs4NCwxMCBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVy
TGF5ZXIqIGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCisgICAgdm9p
ZCByZWNlaXZlU2Nyb2xsU3luY1Jlc3BvbnNlKGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNl
dElzU2Nyb2xsYWJsZShib29sKTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNTY3JvbGxhYmxlOyB9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmly
dHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBA
IC0xMDUsNiArMTEyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3RvcmVJ
Zk5lZWRlZCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0OwogCisg
ICAgdm9pZCBkaXNwYXRjaFNjcm9sbFN5bmNSZXNwb25zZSgpOworCiAgICAgLy8gVGhpcyBzZXQg
b2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXllciBoYXZl
IGJlZW4KICAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2FuIGtub3cg
d2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KICAgICBlbnVtIENoYW5nZU1hc2sg
ewpAQCAtMTQzLDcgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBSZXBhaW50Q291bnRDaGFu
Z2UgPSAgICAgICAgKDFMIDw8IDI1KSwKIAogICAgICAgICBGaXhlZFRvVmlld3BvckNoYW5nZSA9
ICAgICAgKDFMIDw8IDI2KSwKLSAgICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgx
TCA8PCAyNykKKyAgICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8PCAyNyks
CisKKyAgICAgICAgQ29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlID0gICAgICgxTCA8PCAyOCks
CisgICAgICAgIElzU2Nyb2xsYWJsZUNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwgMjkpCiAg
ICAgfTsKICAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFuZ2VNYXNrKTsKIApAQCAtMTY1LDYgKzE3
Nyw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsKICAgICBH
cmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgZG91YmxlIG1fYW5pbWF0
aW9uU3RhcnRUaW1lOworCisgICAgSW50U2l6ZSBtX3Njcm9sbFN5bmNSZXNwb25zZTsKKyAgICBi
b29sIG1faXNTY3JvbGxhYmxlOwogfTsKIAogaW5saW5lIHN0YXRpYyBHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyKiBs
YXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMTBiZWYyNi4uZmQyNzVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKIAogI2luY2x1ZGUgIlJlZ2lvbi5oIgorI2luY2x1ZGUg
PHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
QEAgLTY3Myw1ICs2NzQsNzcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbFBv
c2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAgIG1fY3VycmVu
dFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQogCit0ZW1wbGF0
ZTxjbGFzcyBTZWFyY2hDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVyZU1hcHBl
ckxheWVyOjpoaXRUZXN0aW5nU2VhcmNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBTZWFyY2hD
b25kaXRpb24gY29uZGl0aW9uKQoreworICAgIGlmICghbV9zdGF0ZS52aXNpYmxlIHx8ICFtX3N0
YXRlLmNvbnRlbnRzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBUZXh0dXJlTWFw
cGVyTGF5ZXIqIHJlc3VsdCA9IDA7CisgICAgZm9yIChpbnQgaSA9IG1fY2hpbGRyZW4uc2l6ZSgp
IC0gMTsgIXJlc3VsdCAmJiBpID49IDA7IC0taSkKKyAgICAgICAgcmVzdWx0ID0gbV9jaGlsZHJl
bltpXS0+aGl0VGVzdGluZ1NlYXJjaChwb2ludCwgY29uZGl0aW9uKTsKKworICAgIHJldHVybiBy
ZXN1bHQgPyByZXN1bHQgOiBjb25kaXRpb24odGhpcywgcG9pbnQpID8gdGhpcyA6IDA7Cit9CisK
K2Jvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24o
VGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7Cisg
ICAgLy8gc2Nyb2xsaW5nIGxheWVyJ3MgbV9wYXJlbnQtPm1fcGFyZW50LCB0aGUgcGFyZW50IG9m
IHRoZSBzY3JvbGxpbmcgbGF5ZXMsIGlzIHRoZSBvbmUgdGhhdCBkZWZpbmVzIHRoZQorICAgIC8v
IHJlY3RhbmdsZSB0byBiZSB1c2VkIGZvciBoaXQgdGVzdGluZy4KKyAgICBpZiAoIWxheWVyLT5p
c1Njcm9sbGFibGUoKSB8fCAhbGF5ZXItPm1fcGFyZW50IHx8ICFsYXllci0+bV9wYXJlbnQtPm1f
cGFyZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIq
IHBhcmVudExheWVyID0gbGF5ZXItPm1fcGFyZW50LT5tX3BhcmVudDsKKyAgICByZXR1cm4gcGFy
ZW50TGF5ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QocGFyZW50TGF5
ZXItPm1fc3RhdGUuY29udGVudHNSZWN0KS5jb250YWlucyhwb2ludCk7Cit9CisKK1RleHR1cmVN
YXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXll
ckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0aW5nU2Vh
cmNoKHBvaW50LCAmVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25k
aXRpb24pOworfQorCitGbG9hdFNpemUgVGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZz
ZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCit7CisgICAgZG91YmxlIHplcm9YLCB6ZXJvWSwg
b2Zmc2V0WCwgb2Zmc2V0WTsKKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBt
X2N1cnJlbnRUcmFuc2Zvcm0uY29tYmluZWQoKS5pbnZlcnNlKCk7CisgICAgdHJhbnNmb3JtLm1h
cCgwLCAwLCB6ZXJvWCwgemVyb1kpOworICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRoKCks
IG9mZnNldC5oZWlnaHQoKSwgb2Zmc2V0WCwgb2Zmc2V0WSk7CisgICAgcmV0dXJuIEZsb2F0U2l6
ZShvZmZzZXRYIC0gemVyb1gsIG9mZnNldFkgLSB6ZXJvWSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpzZW5kU2Nyb2xsU3luY1JlcXVlc3QoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQp
Cit7CisgICAgRmxvYXRTaXplIGZ1bGxPZmZzZXQgPSBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0
RnJhY3Rpb25hbFBhcnQgKyBvZmZzZXQ7CisKKyAgICBpbnQgaW50V2lkdGggPSByb3VuZChmdWxs
T2Zmc2V0LndpZHRoKCkpOworICAgIGludCBpbnRIZWlnaHQgPSByb3VuZChmdWxsT2Zmc2V0Lmhl
aWdodCgpKTsKKworICAgIC8vIG1fYWNjdW11bGF0ZWRTY3JvbGxPZmZzZXRGcmFjdGlvbmFsUGFy
dCBob2xkcyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSB1c2VyIHNjcm9sbCBvZmZzZXQgdGhh
dAorICAgIC8vIGhhcyBub3QgeWV0IGJlZW4gc3luY2VkIHdpdGggdGhlIHdlYiBwcm9jZXNzIGJl
Y2F1c2UgdGhlIHdlYiBwcm9jZXNzIGV4cGVjdHMgYW4gSW50U2l6ZS4KKyAgICBtX2FjY3VtdWxh
dGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQgPSBGbG9hdFNpemUoZnVsbE9mZnNldC53aWR0
aCgpIC0gaW50V2lkdGgsIGZ1bGxPZmZzZXQuaGVpZ2h0KCkgLSBpbnRIZWlnaHQpOworCisgICAg
bV9zY3JvbGxDbGllbnQtPnNlbmRTY3JvbGxTeW5jUmVxdWVzdChtX2lkLCBJbnRTaXplKGludFdp
ZHRoLCBpbnRIZWlnaHQpKTsKK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5
KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmICghbV9zY3JvbGxDbGllbnQgfHwg
b2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFNpemUgc2Nyb2xs
T2Zmc2V0ID0gbWFwU2Nyb2xsT2Zmc2V0KG9mZnNldCk7CisgICAgbV91c2VyU3JvbGxPZmZzZXQg
Kz0gc2Nyb2xsT2Zmc2V0OworCisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFk
anVzdGVkUG9zaXRpb24oKSk7CisgICAgc2VuZFNjcm9sbFN5bmNSZXF1ZXN0KHNjcm9sbE9mZnNl
dCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpyZWNlaXZlU2Nyb2xsU3luY1Jlc3Bv
bnNlKGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3VzZXJTcm9sbE9mZnNldCA9IEZsb2F0U2l6ZShtX3Vz
ZXJTcm9sbE9mZnNldC53aWR0aCgpIC0gb2Zmc2V0LndpZHRoKCksIG1fdXNlclNyb2xsT2Zmc2V0
LmhlaWdodCgpIC0gb2Zmc2V0LmhlaWdodCgpKTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0
UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmgKaW5kZXggNjAyYjJjMy4uNzM4ZGJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5
ZXIuaApAQCAtMzksNiArMzksMTIgQEAgY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGlj
IEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OkNsaWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoVGV4dHVyZU1hcHBlckxheWVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKKworICAgIGNsYXNzIFNjcm9sbGluZ0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIHZvaWQgc2VuZFNjcm9sbFN5bmNSZXF1ZXN0KHVpbnQzMl90IGxheWVySUQsIGNv
bnN0IEludFNpemUmIG9mZnNldCkgPSAwOworICAgIH07CisKICAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAgICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkK
QEAgLTQ3LDEwICs1MywyNSBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9jZW50ZXJaKDApCiAgICAg
ICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCiAgICAgICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFs
c2UpCisgICAgICAgICwgbV9pZCgwKQorICAgICAgICAsIG1fc2Nyb2xsQ2xpZW50KDApCisgICAg
ICAgICwgbV9pc1Njcm9sbGFibGUoZmFsc2UpCiAgICAgeyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0
dXJlTWFwcGVyTGF5ZXIoKTsKIAorICAgIHZvaWQgc2V0SUQodWludDMyX3QgaWQpIHsgbV9pZCA9
IGlkOyB9CisgICAgdWludDMyX3QgaWQoKSB7IHJldHVybiBtX2lkOyB9CisKKyAgICBUZXh0dXJl
TWFwcGVyTGF5ZXIqIGdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2lu
dCYgcG9zKTsKKworICAgIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFNjcm9sbGluZ0NsaWVudCogc2Ny
b2xsQ2xpZW50KSB7IG1fc2Nyb2xsQ2xpZW50ID0gc2Nyb2xsQ2xpZW50OyB9CisgICAgdm9pZCBz
Y3JvbGxCeShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKworICAgIHZvaWQgcmVjZWl2ZVNj
cm9sbFN5bmNSZXNwb25zZShjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCBzZXRJc1Njcm9sbGFi
bGUoYm9vbCBpc1Njcm9sbGFibGUpIHsgbV9pc1Njcm9sbGFibGUgPSBpc1Njcm9sbGFibGU7IH0K
KyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JvbGxhYmxlOyB9
CisKICAgICBUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleG1hcCkgeyBtX3RleHR1cmVNYXBwZXIg
PSB0ZXhtYXA7IH0KIApAQCAtMTA4LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgc29ydEJ5Wk9yZGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyTGF5ZXIqID4mIGFycmF5LCBpbnQg
Zmlyc3QsIGludCBsYXN0KTsKIAogICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVy
ZSgpIHsgcmV0dXJuIG1fYmFja2luZ1N0b3JlID8gbV9iYWNraW5nU3RvcmUtPnRleHR1cmUoKSA6
IDA7IH0KLSAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsgfQorICAgIEZsb2F0UG9pbnQgYWRq
dXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3Np
dGlvbkRlbHRhIC0gbV91c2VyU3JvbGxPZmZzZXQ7IH0KICAgICBib29sIGlzQW5jZXN0b3JGaXhl
ZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJh
bnNmb3JtKCk7CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKQEAgLTE1
OSw2ICsxODAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKIAor
ICAgIHRlbXBsYXRlPGNsYXNzIFNlYXJjaENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBo
aXRUZXN0aW5nU2VhcmNoKGNvbnN0IEZsb2F0UG9pbnQmLCBTZWFyY2hDb25kaXRpb24pOworICAg
IHN0YXRpYyBib29sIHNjcm9sbGFibGVMYXllclNlYXJjaENvbmRpdGlvbihUZXh0dXJlTWFwcGVy
TGF5ZXIqLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICBGbG9hdFNpemUgbWFwU2Nyb2xsT2Zm
c2V0KGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQgc2VuZFNjcm9sbFN5bmNSZXF1ZXN0KGNv
bnN0IEZsb2F0U2l6ZSYpOworCiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgRmxvYXRQb2lu
dCBwb3M7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQb2ludDsKQEAgLTIxMSw2ICsyMzgs
MTEgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7
CiAgICAgRmxvYXRTaXplIG1fc2Nyb2xsUG9zaXRpb25EZWx0YTsKICAgICBib29sIG1fZml4ZWRU
b1ZpZXdwb3J0OworICAgIHVpbnQzMl90IG1faWQ7CisgICAgU2Nyb2xsaW5nQ2xpZW50KiBtX3Nj
cm9sbENsaWVudDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxlOworICAgIEZsb2F0U2l6ZSBtX3Vz
ZXJTcm9sbE9mZnNldDsKKyAgICBGbG9hdFNpemUgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZy
YWN0aW9uYWxQYXJ0OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA0YzQzYWE3Li4xNzQ2ZGVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Ny
b2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgog
I2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBA
IC0xMjIsNiArMTIzLDcgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jb21wb3Np
dGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAgICAsIG1fY2FudmFzUGxhdGZvcm1MYXllcigwKQogICAg
ICwgbV9hbmltYXRpb25TdGFydGVkVGltZXIodGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVyRmlyZWQpCisgICAgLCBtX3Njcm9sbGFibGVBcmVhKDAp
CiB7CiAgICAgc3RhdGljIENvb3JkaW5hdGVkTGF5ZXJJRCBuZXh0TGF5ZXJJRCA9IDE7CiAgICAg
bV9pZCA9IG5leHRMYXllcklEKys7CkBAIC00NjUsNiArNDY3LDI0IEBAIENvb3JkaW5hdGVkTGF5
ZXJJRCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlkKCkgY29uc3QKICAgICByZXR1cm4gbV9p
ZDsKIH0KIAordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBib29sIG9sZFNjcm9sbGFi
bGUgPSBpc1Njcm9sbGFibGUoKTsKKyAgICBtX3Njcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFy
ZWE7CisgICAgaWYgKG9sZFNjcm9sbGFibGUgIT0gaXNTY3JvbGxhYmxlKCkpCisgICAgICAgIGRp
ZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OnJlY2VpdmVTY3JvbGxTeW5jUmVxdWVzdChjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAg
aWYgKCFpc1Njcm9sbGFibGUoKSB8fCBvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPm5vdGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChtX3Nj
cm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKKyAgICBtX2xheWVySW5m
by5zY3JvbGxTeW5jUmVzcG9uc2UgKz0gb2Zmc2V0OworICAgIGRpZENoYW5nZUxheWVyU3RhdGUo
KTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9y
dChib29sIGlzRml4ZWQpCiB7CiAgICAgaWYgKG1fZml4ZWRUb1ZpZXdwb3J0ID09IGlzRml4ZWQp
CkBAIC01NzIsNiArNTkyLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNM
YXllclN0YXRlKCkKICAgICBtX2xheWVySW5mby5hbmNob3JQb2ludCA9IG1fYWRqdXN0ZWRBbmNo
b3JQb2ludDsKICAgICBtX2xheWVySW5mby5wb3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAg
bV9sYXllckluZm8uc2l6ZSA9IG1fYWRqdXN0ZWRTaXplOworICAgIG1fbGF5ZXJJbmZvLmlzU2Ny
b2xsYWJsZSA9IGlzU2Nyb2xsYWJsZSgpOwogCiAgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9y
ZGVycyA9IGlzU2hvd2luZ0RlYnVnQm9yZGVyKCk7CiAgICAgaWYgKG1fbGF5ZXJJbmZvLnNob3dE
ZWJ1Z0JvcmRlcnMpCkBAIC01NzksNiArNjAwLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX2xheWVySW5mby5zaG93UmVwYWludENvdW50
ZXIgPSBpc1Nob3dpbmdSZXBhaW50Q291bnRlcigpOwogCiAgICAgbV9jb29yZGluYXRvci0+c3lu
Y0xheWVyU3RhdGUobV9pZCwgbV9sYXllckluZm8pOworICAgIG1fbGF5ZXJJbmZvLnNjcm9sbFN5
bmNSZXNwb25zZSA9IEludFNpemUoKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggZTVhYTQ3YS4uNjNlMTg5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKQEAgLTQ0LDYgKzQ0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjsKIGNsYXNzIEdyYXBoaWNz
TGF5ZXJBbmltYXRpb25zOworY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiAKIGNsYXNzIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllckNsaWVudCB7CiBwdWJsaWM6CkBAIC0xMzQsNiArMTM1LDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0Um9vdExheWVyKGJvb2wpOwogCisgICAgdm9pZCBzZXRTY3Jv
bGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSopOworICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gISFtX3Njcm9sbGFibGVBcmVhOyB9CisgICAgdm9pZCByZWNlaXZlU2Nyb2xs
U3luY1JlcXVlc3QoY29uc3QgSW50U2l6ZSYpOworCiAgICAgQ29vcmRpbmF0ZWRMYXllcklEIGlk
KCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEZpeGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpOwpA
QCAtMjU4LDYgKzI2Myw4IEBAIHByaXZhdGU6CiAgICAgVGltZXI8Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyPiBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcjsKICAgICBHcmFwaGljc0xheWVyQW5pbWF0
aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZTsK
KworICAgIFNjcm9sbGFibGVBcmVhKiBtX3Njcm9sbGFibGVBcmVhOwogfTsKIAogQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKiB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVy
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwCmluZGV4IDg2MjQ1MTMuLjFkNjhiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCkBAIC0zMTksNiArMzE5
LDkgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUoQ29vcmRp
bmF0ZWRMYXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICBsYXllci0+c2V0RGVidWdCb3JkZXIo
bGF5ZXJJbmZvLmRlYnVnQm9yZGVyQ29sb3IsIGxheWVySW5mby5kZWJ1Z0JvcmRlcldpZHRoKTsK
ICAgICBsYXllci0+c2V0U2hvd1JlcGFpbnRDb3VudGVyKGxheWVySW5mby5zaG93UmVwYWludENv
dW50ZXIpOwogCisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPnNldElz
U2Nyb2xsYWJsZShsYXllckluZm8uaXNTY3JvbGxhYmxlKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKGxheWVyKS0+cmVjZWl2ZVNjcm9sbFN5bmNSZXNwb25zZShsYXllckluZm8u
c2Nyb2xsU3luY1Jlc3BvbnNlKTsKKwogICAgIGlmIChsYXllckluZm8uZml4ZWRUb1ZpZXdwb3J0
KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFkZChpZCwgbGF5ZXIpOwogICAgIGVsc2UKQEAgLTM0
OCw2ICszNTEsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIo
Q29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBuZXdM
YXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwIC8qIGZhY3RvcnkgKi8sIHRoaXMpOwogICAg
IHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRIYXNPd25C
YWNraW5nU3RvcmUoZmFsc2UpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3
TGF5ZXIuZ2V0KCkpLT5zZXRJRChpZCk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cihuZXdMYXllci5nZXQoKSktPnNldFNjcm9sbENsaWVudCh0aGlzKTsKICAgICBtX2xheWVycy5h
ZGQoaWQsIG5ld0xheWVyLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTYxMCw2ICs2MTUsMTYgQEAgdm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMoKQogICAgIGRpc3Bh
dGNoT25NYWluVGhyZWFkKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cHVyZ2VCYWNr
aW5nU3RvcmVzLCB0aGlzKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpk
aXNwYXRjaFNjcm9sbFN5bmNSZXF1ZXN0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUm
IG9mZnNldCkKK3sKKyAgICBtX2NsaWVudC0+c2VuZFNjcm9sbFN5bmNSZXF1ZXN0KGxheWVySUQs
IG9mZnNldCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZW5kU2Nyb2xs
U3luY1JlcXVlc3QodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQorewor
ICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
ZGlzcGF0Y2hTY3JvbGxTeW5jUmVxdWVzdCwgdGhpcywgbGF5ZXJJRCwgb2Zmc2V0KSk7Cit9CisK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewog
ICAgIGlmIChtX2NsaWVudCkKQEAgLTY3Myw2ICs2ODgsMTEgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
bV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKIH0KIAorVGV4dHVyZU1hcHBlckxheWVyKiBDb29y
ZGluYXRlZEdyYXBoaWNzU2NlbmU6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIHJvb3RMYXllcigpID8gdG9UZXh0dXJl
TWFwcGVyTGF5ZXIocm9vdExheWVyKCkpLT5nZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KHBv
aW50KSA6IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCA5YzkyMWE3Li5jMDgyYWIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyRlBTQ291bnRl
ci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpA
QCAtNDksNyArNTAsNiBAQCBjbGFzcyBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTsKIGNsYXNzIENv
b3JkaW5hdGVkTGF5ZXJJbmZvOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKIGNsYXNzIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvOwotY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwogCiBjbGFz
cyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQgewogcHVibGljOgpAQCAtNjAsOSArNjAs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlVmlld3BvcnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNlbmRTY3JvbGxTeW5j
UmVxdWVzdCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpID0gMDsKIH07
CiAKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3JhcGhpY3NMYXllckNs
aWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIEdyYXBoaWNzTGF5
ZXJDbGllbnQsIHB1YmxpYyBUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IFRpbGVVcGRhdGUgewogICAgICAgICBJbnRSZWN0IHNvdXJjZVJl
Y3Q7CkBAIC05Miw2ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRhY2goKTsKICAgICB2
b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKKyAgICBXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpOworCisgICAgdmlydHVhbCB2b2lkIHNlbmRTY3JvbGxTeW5j
UmVxdWVzdCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpOworCiAgICAg
Ly8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxvY2sgdGhlIG1haW4gdGhyZWFkIHRvIHVzZSBi
ZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28gbWV0aG9kcyBhY2Nlc3MgbWVtYmVycyB0aGF0
IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUgbV9jbGllbnQuCiAgICAgLy8gQ3VycmVudGx5
LCBRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUoKSBsb2NrcyB0aGUgbWFpbiB0aHJlYWQg
YmVmb3JlIGNhbGxpbmcgYm90aCBtZXRob2RzLgogICAgIHZvaWQgcHVyZ2VHTFJlc291cmNlcygp
OwpAQCAtMTY5LDYgKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVCYWNraW5nU3Rv
cmVJZk5lZWRlZChHcmFwaGljc0xheWVyKik7CiAgICAgdm9pZCByZXNldEJhY2tpbmdTdG9yZVNp
emVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKik7CiAKKyAgICB2b2lkIGRpc3BhdGNoU2Nyb2xs
U3luY1JlcXVlc3QodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKwog
ICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQg
b3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQo
KT4gPiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZExheWVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXggMGZhMmEx
Mi4uMjJiMDIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5
ZXJJbmZvLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsK
ICAgICBDb2xvciBzb2xpZENvbG9yOwogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CiAgICAg
ZmxvYXQgZGVidWdCb3JkZXJXaWR0aDsKKyAgICBJbnRTaXplIHNjcm9sbFN5bmNSZXNwb25zZTsK
IAogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKQEAgLTczLDYgKzc0LDcgQEAgc3RydWN0
IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICAgICAgICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0
IDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CiAgICAgICAgICAg
ICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CisgICAgICAgICAgICBib29sIGlzU2Nyb2xs
YWJsZSA6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CmluZGV4IDZmMmIxZjYuLjQyZmE3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNyw2ICsxNyw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MiCisgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MiCkBAIC03NSw2ICs3Niw4IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dFQkNPUkVf
RElSfS9wYWdlIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlL2FuaW1hdGlvbiIKKyAgICAiJHtX
RUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmciCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgpAQCAtMzQxLDYgKzM0NCw4IEBAIHNldChXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAorCiAgICAgVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCiAgICAgVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKICAgICBV
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
YWUyY2RmLi41ZWQxYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDMtMDQg
IEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBBY2Nl
bGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBzY3JvbGwgb2Zm
c2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZpZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhl
CisgICAgICAgIHdlYiBwcm9jZXNzIGlzIG5vdGlmaWVkIGFzc3luY2hyb25vdXNseS4KKyAgICAg
ICAgVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2VkIHRvIHNjcm9sbCBs
YXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwor
ICAgICAgICBBZGRpbmcgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5h
YmxlZCB0byBXZWJQcmVmZXJlbmNlc1N0b3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisKKyAgICAgICAgTmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgaXMgdXNlZCB0
byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJ
Q2FzdC5oOgorCisgICAgICAgIEEgbmV3IG1lc3NhZ2UgaXMgdXNlZCB0byBzZW5kIHNjcm9sbCBz
eW5jIHJlcXVlc3RzIHRvIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2VuZFNjcm9sbFN5bmNS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAgKENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVy
VHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRl
dGFjaExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
cmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbExheWVyQnkpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW46
CisKIDIwMTMtMDMtMDMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUERGUGx1Z2luOiBSZW5hbWUgZGVsZWdhdGUgbWV0aG9kIGZyb20gb3BlbldpdGhQ
cmV2aWV3IHRvIG9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDU5NTNjYjQuLjExOWNiNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTQyLDYgKzE0Miw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9j
ZXNzU3VwcHJlc3Npb25FbmFibGVkLCBwYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQsIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkg
XAogICAgIG1hY3JvKFNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkLCBzaG93c1VSTHNJblRvb2xU
aXBzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBhY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAog
I2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
S0Nvb3JkaW5hdGVkU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uYzVhNmExYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUu
Y3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb29yZGlu
YXRlZFNjZW5lLmgiCisKKyNpbmNsdWRlICJXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dHVyZU1hcHBlckxheWVyLmg+CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5hdGVk
U2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0
KFdLQ29vcmRpbmF0ZWRTY2VuZSBzY2VuZSwgV0tQb2ludCBwb2ludCkKK3sKKyAgICByZXR1cm4g
dG9BUEkodG9JbXBsKHNjZW5lKS0+Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChXZWJDb3Jl
OjpGbG9hdFBvaW50KHBvaW50LngsIHBvaW50LnkpKSk7Cit9CisKK1dLX0VYUE9SVCB1aW50MzJf
dCBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklEKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxh
eWVyKQoreworICAgIHJldHVybiB0b0ltcGwobGF5ZXIpLT5pZCgpOworfQorCitXS19FWFBPUlQg
dm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBs
YXllciwgV0tTaXplIG9mZnNldCkKK3sKKyAgICB0b0ltcGwobGF5ZXIpLT5zY3JvbGxCeShXZWJD
b3JlOjpGbG9hdFNpemUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tD
b29yZGluYXRlZFNjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uOTQzM2IxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApAQCAt
MCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVfaAorI2RlZmluZSBXS0Nvb3JkaW5h
dGVkU2NlbmVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKwordHlwZWRl
ZiBzdHJ1Y3QgT3BhcXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwordHlwZWRlZiBzdHJ1
Y3QgT3BhcXVlQ0dMYXllciogV0tDb29yZGluYXRlZFNjZW5lTGF5ZXI7CisKK1dLX0VYUE9SVCBX
S0Nvb3JkaW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRTY3JvbGxhYmxlQ29u
dGVudHNMYXllckF0KFdLQ29vcmRpbmF0ZWRTY2VuZSwgV0tQb2ludCk7CitXS19FWFBPUlQgdWlu
dDMyX3QgV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkU2NlbmVMYXll
cik7CitXS19FWFBPUlQgdm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5h
dGVkU2NlbmVMYXllciwgV0tTaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYg
Ly8gX19jcGx1c3BsdXMKKworI2VuZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXgg
YzVmN2U4Ny4uMjgwYzhmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMjM3LDUgKzIzNywxMCBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
c2V0QmFja2dyb3VuZENvbG9yLCBtX3NjZW5lLmdldCgpLCBjb2xvcikpOwogfQogCit2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZW5kU2Nyb2xsU3luY1JlcXVlc3QodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fZHJhd2luZ0FyZWFQ
cm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6U2Nyb2xsTGF5ZXJCeShsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdBcmVhUHJv
eHktPnBhZ2UoKS0+cGFnZUlEKCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKaW5kZXggOTQ2YjM5OS4uYzgzOGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC05OCw2ICs5OCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2
b2lkIHNlbmRTY3JvbGxTeW5jUmVxdWVzdCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBvZmZzZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0
ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRp
bmF0ZWRTY2VuZUFQSUNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
YzlmMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3RfaAorI2RlZmluZSBXS0Nvb3JkaW5hdGVk
U2NlbmVBUElDYXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb29yZGluYXRlZFNjZW5lLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
K2lubGluZSBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHRvSW1wbChXS0Nvb3Jk
aW5hdGVkU2NlbmUgc2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKj4oc2NlbmUpOworfQorCitpbmxpbmUgV0tDb29y
ZGluYXRlZFNjZW5lIHRvQVBJKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2Nl
bmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5lPihz
Y2VuZSk7Cit9CisKK2lubGluZSBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvSW1wbChX
S0Nvb3JkaW5hdGVkU2NlbmVMYXllciBsYXllcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqPihsYXllcik7Cit9CisKK2lubGluZSBX
S0Nvb3JkaW5hdGVkU2NlbmVMYXllciB0b0FQSShXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxheWVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ29vcmRpbmF0ZWRTY2Vu
ZUxheWVyPihsYXllcik7Cit9CisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwCmluZGV4IDdhY2VmMzAuLjc5NTNjMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNzIs
OSArNzIsOSBAQCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QoKQogI2VuZGlmCiAgICAgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKLSAgICBIYXNoU2V0
PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3Jl
Z2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdp
bigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRDb29yZGluYXRvcigwKTsK
KyAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwor
ICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5zZXRDb29yZGluYXRvcigw
KTsKIH0KIAogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3QoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTQ3MCw3ICs0NzAsNyBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9pZCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogbGF5ZXIpCiB7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllcik7Cisg
ICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7CiAgICAgbV9sYXllcnNU
b0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwog
fQpAQCAtNjQxLDcgKzY0MSw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiB7CiAgICAgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIoY2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7Ci0gICAgbV9yZWdp
c3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXll
ci0+aWQoKSwgbGF5ZXIpOwogICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgp
KTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICBzY2hl
ZHVsZUxheWVyRmx1c2goKTsKQEAgLTczOCw5ICs3MzgsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbgogICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNpYmxl
Q29udGVudHNSZWN0ID0gcmVjdDsKIAotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5k
KCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1l
bnQoKTsKKyAgICAgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVy
cy5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVy
ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+dmFs
dWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTc4OSw5ICs3ODksOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VC
YWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2ds
ZShtX2lzUHVyZ2luZywgdHJ1ZSk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7
Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+Ojpp
dGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
Ci0gICAgICAgICgqaXQpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICBMYXllck1hcDo6aXRl
cmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoTGF5ZXJNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKKyAgICAgICAgaXQtPnZhbHVlLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIG1faW1h
Z2VCYWNraW5ncy5jbGVhcigpOwogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwpAQCAtODU0
LDUgKzg1NCwxNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBtX3dlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpTZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IpKTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbExh
eWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KQor
eworICAgIExheWVyTWFwOjppdGVyYXRvciBpID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmZpbmQobGF5
ZXJJRCk7CisgICAgaWYgKGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpLT52YWx1ZS0+cmVjZWl2ZVNjcm9sbFN5bmNSZXF1ZXN0KG9mZnNldCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKaW5kZXggYjYwNTI4OS4uNWMzNGZhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEyMCw2
ICsxMjAsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29y
ZGluYXRlZFN1cmZhY2U+IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKKyAgICB2b2lk
IHNjcm9sbExheWVyQnkodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
b2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdChXZWJQYWdlKik7CiAKQEAgLTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFRo
ZSBwYWdlIG92ZXJsYXkgbGF5ZXIuIFdpbGwgYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHBhZ2Ugb3Zl
cmxheS4KICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxh
eWVyOwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBt
X3JlZ2lzdGVyZWRMYXllcnM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5h
dGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7
CisgICAgTGF5ZXJNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpD
b29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hN
YXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5t
ZXNzYWdlcy5pbgppbmRleCA2NjcxYjMyLi5hYTlmMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3Nh
Z2VzLmluCkBAIC0yNyw1ICsyNyw2IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdCBMZWdhY3lSZWNlaXZlciB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1F
KQogICAgIEFuaW1hdGlvbkZyYW1lUmVhZHkoKQogI2VuZGlmCisgICAgU2Nyb2xsTGF5ZXJCeSh1
aW50MzJfdCBsYXllcklELCBXZWJDb3JlOjpJbnRTaXplIG9mZnNldCkKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGQ0MDhl
OTQuLjcwNGFjYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKQEAgLTIzMTQsNiArMjMxNCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVy
ZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgc2V0dGluZ3MtPnNl
dEVkaXRhYmxlTGlua0JlaGF2aW9yKHN0YXRpY19jYXN0PFdlYkNvcmU6OkVkaXRhYmxlTGlua0Jl
aGF2aW9yPihzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZWRp
dGFibGVMaW5rQmVoYXZpb3JLZXkoKSkpKTsKICAgICBzZXR0aW5ncy0+c2V0U2hvd3NUb29sVGlw
T3ZlclRydW5jYXRlZFRleHQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpzaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dEtleSgpKSk7CiAKKyAgICBzZXR0aW5n
cy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkS2V5KCkpICYmIExh
eWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKICAgICBzZXR0
aW5ncy0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWRLZXkoKSkgJiYg
TGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIHNl
dHRpbmdzLT5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZ0tl
eSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7
Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191181</attachid>
            <date>2013-03-04 02:30:17 -0800</date>
            <delta_ts>2013-03-04 23:22:24 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>54114</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAzODZlNmU0N2QxZDUxNGIxMWEyNTZkODg1ZjQyNzhlYzFmYWY2ODg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogTW9uLCA0IE1hciAyMDEzIDAyOjI0OjU2IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZp
ZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVk
IGFzc3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgpTb3VyY2UvV2ViQ29yZToK
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnIDExMTE0MC4KClNjcm9sbGluZyBjb29yZGluYXRv
ciBpcyB1c2VkIHRvIHByb3ZpZGUgYSBTY3JvbGxhYmxlQXJlYSB0byBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuCgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRp
ZENoYW5nZSk6CihXZWJDb3JlKToKKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CiogcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaDoKKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6CgpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZSAn
ZGlkIGNvbW1pdCcgbWVzc2FnZXMgYW5kIHRvIHBhc3MKdGhlbSB0byBpdHMgVGV4dHVyZU1hcHBl
ckxheWVyIG9uIHRoZSBhcHByb3ByaWF0ZWQgdGltZS4KCiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKFdlYkNv
cmUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Nyb2xsYWJs
ZSk6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFu
Z2VzKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaXNwYXRjaERpZENv
bW1pdFNjcm9sbE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmg6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
c2V0U2Nyb2xsQ2xpZW50KToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRJRCk6CihHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6aXNTY3JvbGxhYmxlKToKClRleHR1cmVNYXBwZXJMYXllciBpcyBy
ZXNwb25zaWJsZSBmb3IgYXBwbHlpbmcgdGhlIHJlcXVlc3Qgc2Nyb2xsIG9mZnNldCBhbmQgZm9y
CnNlbmRpbmcgdGhlIGNvbW1pdCBtZXNzYWdlcyB0byB3ZWIgcHJvY2Vzcy4gSXQgaXMgYWxzbyBh
YmxlIHRvIGhpdHRlc3QgbGF5ZXJzIGFuZCBpZGVudGlmeQp0aGUgb25lcyB0aGF0IGFyZSBzY3Jv
bGxhYmxlLgoKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNw
cDoKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdGluZ1NlYXJjaCk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVyU2VhcmNo
Q29uZGl0aW9uKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6Z2V0U2Nyb2xsYWJsZUNv
bnRlbnRzTGF5ZXJBdCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9m
ZnNldCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNjcm9sbE9mZnNldCk6
CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KToKKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmg6CihUZXh0dXJlTWFwcGVyTGF5ZXIpOgooU2Ny
b2xsaW5nQ2xpZW50KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBl
ckxheWVyKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SUQpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjppZCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNjcm9sbENsaWVudCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xs
YWJsZSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CihXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgoKQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyIHJlY2VpdmVzIHRoZSBjb21taXQgbWVzc2FnZXMgYW5kIHVwZGF0ZXMgaXRz
IFNjcm9sbGFibGVBcmVhLgoKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CihX
ZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CgpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUg
cmVjZWl2ZXMgdGhlIGNvbW1pdCBtZXNzYWdlcyBmcm9tIFRleHR1cmVNYXBwZXJMYXllciBhbmQK
ZGlzcGF0Y2hlcyB0aGVtIG9uIHRoZSBtYWluIHRocmVhZC4gSXQgYWxzbyBoYXMgYSBuZXcgbWV0
aG9kIHRoYXQgaXMgdXNlZCB0byBmaW5kCnRoZSB0b3Btb3N0IHNjcm9sbGFibGUgbGF5ZXIgYXQg
YSBnaXZlbiBwb2ludC4KCiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OnNldExheWVyU3RhdGUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpjcmVhdGVMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3Bh
dGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CihX
ZWJDb3JlKToKKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZExheWVySW5mby5oOgooQ29vcmRpbmF0ZWRMYXllckluZm8pOgoKU291cmNlL1dlYktp
dDI6CgoqIENNYWtlTGlzdHMudHh0OgoKQWRkaW5nIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JP
dmVyZmxvd1Njcm9sbEVuYWJsZWQgdG8gV2ViUHJlZmVyZW5jZXNTdG9yZS4KCiogU2hhcmVkL1dl
YlByZWZlcmVuY2VzU3RvcmUuaDoKKFdlYktpdCk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgooV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CgpOZXcgQVBJIFdL
Q29vcmRpbmF0ZWRTY2VuZSBpcyB1c2VkIHRvIHNjcm9sbCBsYXllcnMgb24gVUkgc2lkZS4KCiog
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHA6
CiogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5o
OgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNh
c3QuaDoKCkEgbmV3IG1lc3NhZ2UgaXMgdXNlZCB0byBzZW5kIHNjcm9sbCBjb21taXQgbWVzc2Fn
ZXMgdG8gd2ViIHByb2Nlc3MuCgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcDoKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHk6OmNvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJLaXQpOgoqIFVJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CihDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKFdlYktpdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6CihXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CihXZWJLaXQ6OkNvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CihXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzY3JvbGxMYXllckJ5KToKKFdlYktpdCk6CiogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6
CiogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lm1lc3NhZ2VzLmluOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICA5MyArKysrKysrKysrKysrKysrKysrKwogLi4uL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAgIDE4ICsrKysK
IC4uLi9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgIHwgICAg
MiArCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCB8
ICAgMzEgKysrKysrKwogLi4uL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlci5oICAgfCAgIDE3ICsrKy0KIC4uLi9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcCAgICAgICAgIHwgICA3MyArKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggIHwgICAzNCArKysrKystCiAuLi4vY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCAgICAgICB8ICAgMjIgKysrKysK
IC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggIHwgICAg
NyArKwogLi4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgICAgICAg
fCAgIDIwICsrKysrCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5oICB8ICAgMTEgKystCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5
ZXJJbmZvLmggICAgICB8ICAgIDIgKwogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgICAg
ICAgICAgICAgICAgICAgICAgfCAgICA1ICsrCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNDQgKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oICAgICAgICB8ICAgIDEgKwogLi4uL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAgfCAgIDQ5ICsrKysrKysrKysr
CiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmggICB8ICAg
NDggKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCAgICAg
ICAgICAgICAgfCAgICA1ICsrCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCAg
ICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCAg
ICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysrKysrKysKIC4uLi9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrLS0tCiAuLi4vQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCB8ICAgIDUgKy0KIC4u
Li9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICAgMSAr
CiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8ICAg
IDEgKwogMjQgZmlsZXMgY2hhbmdlZCwgNTY2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygt
KQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRp
bmF0ZWRTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDA5MDM5MTIuLmY0NjNiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NiBAQAorMjAx
My0wMy0wNCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAg
ICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAz
MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBIHNj
cm9sbCBvZmZzZXQgaXMgYXBwbGllZCB0byBpbmRpdmlkdWFsIGxheWVycyBvbiBVSSBwcm9jZXNz
IGFuZCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgbm90aWZpZWQgYXNzeW5jaHJvbm91c2x5
LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8g
c2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBUZXN0cyB3aWxsIGJl
IGFkZGVkIG9uIGJ1ZyAxMTExNDAuCisKKyAgICAgICAgU2Nyb2xsaW5nIGNvb3JkaW5hdG9yIGlz
IHVzZWQgdG8gcHJvdmlkZSBhIFNjcm9sbGFibGVBcmVhIHRvIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFy
ZWFTY3JvbGxMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6d2lsbERlc3Ry
b3lTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaDoKKyAgICAg
ICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6CisKKyAgICAgICAg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0
aGUgJ2RpZCBjb21taXQnIG1lc3NhZ2VzIGFuZCB0byBwYXNzCisgICAgICAgIHRoZW0gdG8gaXRz
IFRleHR1cmVNYXBwZXJMYXllciBvbiB0aGUgYXBwcm9wcmlhdGVkIHRpbWUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0
dXJlTWFwcGVyOjpkaWRDb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0SXNTY3JvbGxh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21t
aXRMYXllckNoYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmRpc3BhdGNoRGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElEKToKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjppc1Njcm9sbGFibGUpOgorCisgICAgICAgIFRleHR1
cmVNYXBwZXJMYXllciBpcyByZXNwb25zaWJsZSBmb3IgYXBwbHlpbmcgdGhlIHJlcXVlc3Qgc2Ny
b2xsIG9mZnNldCBhbmQgZm9yCisgICAgICAgIHNlbmRpbmcgdGhlIGNvbW1pdCBtZXNzYWdlcyB0
byB3ZWIgcHJvY2Vzcy4gSXQgaXMgYWxzbyBhYmxlIHRvIGhpdHRlc3QgbGF5ZXJzIGFuZCBpZGVu
dGlmeQorICAgICAgICB0aGUgb25lcyB0aGF0IGFyZSBzY3JvbGxhYmxlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3RpbmdTZWFyY2gpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9s
bGFibGVMYXllclNlYXJjaENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyTGF5ZXI6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oOgorICAgICAgICAoVGV4
dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFNjcm9sbGluZ0NsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElEKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRJc1Njcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjppc1Njcm9sbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjphZGp1c3RlZFBvc2l0aW9uKToKKworICAgICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIgcmVjZWl2ZXMgdGhlIGNvbW1pdCBtZXNzYWdlcyBhbmQgdXBkYXRlcyBpdHMgU2Nyb2xsYWJs
ZUFyZWEuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CisK
KyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIHJlY2VpdmVzIHRoZSBjb21taXQgbWVz
c2FnZXMgZnJvbSBUZXh0dXJlTWFwcGVyTGF5ZXIgYW5kCisgICAgICAgIGRpc3BhdGNoZXMgdGhl
bSBvbiB0aGUgbWFpbiB0aHJlYWQuIEl0IGFsc28gaGFzIGEgbmV3IG1ldGhvZCB0aGF0IGlzIHVz
ZWQgdG8gZmluZAorICAgICAgICB0aGUgdG9wbW9zdCBzY3JvbGxhYmxlIGxheWVyIGF0IGEgZ2l2
ZW4gcG9pbnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU6OmNvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5
ZXJJbmZvLmg6CisgICAgICAgIChDb29yZGluYXRlZExheWVySW5mbyk6CisKIDIwMTMtMDMtMDQg
IEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFkZCBydW50aW1lIGZsYWcgdG8gZGV0ZXJtaW5lIGlmIGluc3BlY3Rvcidz
IHNvdXJjZSBmaWxlcyB3ZXJlIGZsYXR0ZW5lZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nv
b3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNz
LmNwcAppbmRleCBhMWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhp
Y3MuY3BwCkBAIC00Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgogICAgIHRv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGVuYWJs
ZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpz
Y3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxh
YmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVy
LT5zZXRTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVh
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJG
b3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgwKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggODdjMmM3Mi4uOTBjYzQzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGlj
cy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0zNyw2ICszNyw4IEBAIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSop
OwogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3Jh
cGhpY3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9s
bExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmlu
ZGV4IDgwMTNlYzQuLmQ5NGY2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZQogICAg
ICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAs
IG1fYW5pbWF0aW9uU3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xsYWJsZShmYWxzZSkKIHsK
IH0KIApAQCAtNDAzLDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNoYW5nZShEZWJ1
Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpk
aWRDb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmIChv
ZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWl0dGVkU2Nyb2xs
T2Zmc2V0ICs9IG9mZnNldDsKKyAgICBub3RpZnlDaGFuZ2UoQ29tbWl0dGVkU2Nyb2xsT2Zmc2V0
Q2hhbmdlKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0SXNTY3Jv
bGxhYmxlKGJvb2wgaXNTY3JvbGxhYmxlKQoreworICAgIGlmIChtX2lzU2Nyb2xsYWJsZSA9PSBp
c1Njcm9sbGFibGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNTY3JvbGxhYmxlID0gaXNT
Y3JvbGxhYmxlOworICAgIG5vdGlmeUNoYW5nZShJc1Njcm9sbGFibGVDaGFuZ2UpOworfQorCiAv
KiBccmVpbXAgKEdyYXBoaWNzTGF5ZXIuaCkKICovCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCkKQEAgLTU0Myw5
ICs1NjIsMjEgQEAgdm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJD
aGFuZ2VzKCkKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgRml4ZWRUb1ZpZXdwb3JDaGFuZ2UpCiAg
ICAgICAgIG1fbGF5ZXItPnNldEZpeGVkVG9WaWV3cG9ydChmaXhlZFRvVmlld3BvcnQoKSk7CiAK
KyAgICBpZiAobV9jaGFuZ2VNYXNrICYgSXNTY3JvbGxhYmxlQ2hhbmdlKQorICAgICAgICBtX2xh
eWVyLT5zZXRJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKCkpOworCisgICAgaWYgKG1fY2hhbmdl
TWFzayAmIENvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZSkKKyAgICAgICAgZGlzcGF0Y2hEaWRD
b21taXRTY3JvbGxPZmZzZXQoKTsKKwogICAgIG1fY2hhbmdlTWFzayA9IE5vQ2hhbmdlczsKIH0K
IAordm9pZCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlzcGF0Y2hEaWRDb21taXRTY3Jv
bGxPZmZzZXQoKQoreworICAgIG1fbGF5ZXItPmRpZENvbW1pdFNjcm9sbE9mZnNldChtX2NvbW1p
dHRlZFNjcm9sbE9mZnNldCk7CisgICAgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQgPSBJbnRTaXpl
KCk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZShjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDkzMjlm
YmMuLjRlYWNjZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBA
IC0zNCw2ICszNCw5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBHcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIoKTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFRleHR1cmVNYXBw
ZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50KiBjbGllbnQpIHsgbV9sYXllci0+c2V0U2Nyb2xsQ2xp
ZW50KGNsaWVudCk7IH0KKyAgICB2b2lkIHNldElEKHVpbnQzMl90IGlkKSB7IG1fbGF5ZXItPnNl
dElEKGlkKTsgfQorCiAgICAgLy8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAgICAgdmly
dHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c05lZWRzRGlzcGxheSgpOwpAQCAtODEsNiArODQsMTAgQEAgcHVibGljOgogCiAgICAgVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KIAor
ICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lk
IHNldElzU2Nyb2xsYWJsZShib29sKTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTY3JvbGxhYmxlOyB9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAg
dmlydHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlm
CkBAIC0xMDUsNiArMTEyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZXBhcmVCYWNraW5nU3Rv
cmVJZk5lZWRlZCgpOwogICAgIGJvb2wgc2hvdWxkSGF2ZUJhY2tpbmdTdG9yZSgpIGNvbnN0Owog
CisgICAgdm9pZCBkaXNwYXRjaERpZENvbW1pdFNjcm9sbE9mZnNldCgpOworCiAgICAgLy8gVGhp
cyBzZXQgb2YgZmxhZ3MgaGVscCB1cyBkZWZlciB3aGljaCBwcm9wZXJ0aWVzIG9mIHRoZSBsYXll
ciBoYXZlIGJlZW4KICAgICAvLyBtb2RpZmllZCBieSB0aGUgY29tcG9zaXRvciwgc28gd2UgY2Fu
IGtub3cgd2hhdCB0byBsb29rIGZvciBpbiB0aGUgbmV4dCBmbHVzaC4KICAgICBlbnVtIENoYW5n
ZU1hc2sgewpAQCAtMTQzLDcgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgICAgICBSZXBhaW50Q291
bnRDaGFuZ2UgPSAgICAgICAgKDFMIDw8IDI1KSwKIAogICAgICAgICBGaXhlZFRvVmlld3BvckNo
YW5nZSA9ICAgICAgKDFMIDw8IDI2KSwKLSAgICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAg
ICAgICgxTCA8PCAyNykKKyAgICAgICAgQW5pbWF0aW9uU3RhcnRlZCA9ICAgICAgICAgICgxTCA8
PCAyNyksCisKKyAgICAgICAgQ29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlID0gICAgICgxTCA8
PCAyOCksCisgICAgICAgIElzU2Nyb2xsYWJsZUNoYW5nZSA9ICAgICAgICAgICAgICAoMUwgPDwg
MjkpCiAgICAgfTsKICAgICB2b2lkIG5vdGlmeUNoYW5nZShDaGFuZ2VNYXNrKTsKIApAQCAtMTY1
LDYgKzE3Nyw5IEBAIHByaXZhdGU6CiAgICAgRmxvYXRSZWN0IG1fbmVlZHNEaXNwbGF5UmVjdDsK
ICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgZG91YmxlIG1f
YW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAgSW50U2l6ZSBtX2NvbW1pdHRlZFNjcm9sbE9mZnNl
dDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxlOwogfTsKIAogaW5saW5lIHN0YXRpYyBHcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlciogdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGlj
c0xheWVyKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKaW5kZXggMTBiZWYyNi4u
OWE1MDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAKQEAgLTIxLDYgKzIxLDcgQEAK
ICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyTGF5ZXIuaCIKIAogI2luY2x1ZGUgIlJlZ2lvbi5oIgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCiAKQEAgLTY3Myw1ICs2NzQsNzcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNl
dFNjcm9sbFBvc2l0aW9uRGVsdGFJZk5lZWRlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQogICAg
IG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwogfQog
Cit0ZW1wbGF0ZTxjbGFzcyBIaXRUZXN0Q29uZGl0aW9uPiBUZXh0dXJlTWFwcGVyTGF5ZXIqIFRl
eHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgSGl0VGVz
dENvbmRpdGlvbiBjb25kaXRpb24pCit7CisgICAgaWYgKCFtX3N0YXRlLnZpc2libGUgfHwgIW1f
c3RhdGUuY29udGVudHNWaXNpYmxlKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFRleHR1cmVN
YXBwZXJMYXllciogcmVzdWx0ID0gMDsKKyAgICBmb3IgKGludCBpID0gbV9jaGlsZHJlbi5zaXpl
KCkgLSAxOyAhcmVzdWx0ICYmIGkgPj0gMDsgLS1pKQorICAgICAgICByZXN1bHQgPSBtX2NoaWxk
cmVuW2ldLT5oaXRUZXN0KHBvaW50LCBjb25kaXRpb24pOworCisgICAgcmV0dXJuIHJlc3VsdCA/
IHJlc3VsdCA6IGNvbmRpdGlvbih0aGlzLCBwb2ludCkgPyB0aGlzIDogMDsKK30KKworYm9vbCBU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllckhpdFRlc3RDb25kaXRpb24oVGV4dHVy
ZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgLy8g
c2Nyb2xsaW5nIGxheWVyJ3MgbV9wYXJlbnQtPm1fcGFyZW50LCB0aGUgcGFyZW50IG9mIHRoZSBz
Y3JvbGxpbmcgbGF5ZXMsIGlzIHRoZSBvbmUgdGhhdCBkZWZpbmVzIHRoZQorICAgIC8vIHJlY3Rh
bmdsZSB0byBiZSB1c2VkIGZvciBoaXQgdGVzdGluZy4KKyAgICBpZiAoIWxheWVyLT5pc1Njcm9s
bGFibGUoKSB8fCAhbGF5ZXItPm1fcGFyZW50IHx8ICFsYXllci0+bV9wYXJlbnQtPm1fcGFyZW50
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHBhcmVu
dExheWVyID0gbGF5ZXItPm1fcGFyZW50LT5tX3BhcmVudDsKKyAgICByZXR1cm4gcGFyZW50TGF5
ZXItPm1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpLm1hcFJlY3QocGFyZW50TGF5ZXItPm1f
c3RhdGUuY29udGVudHNSZWN0KS5jb250YWlucyhwb2ludCk7Cit9CisKK1RleHR1cmVNYXBwZXJM
YXllciogVGV4dHVyZU1hcHBlckxheWVyOjpnZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0KHBvaW50LCAmVGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKTsKK30KKwor
RmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0KQoreworICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNl
dFk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOworICAgIHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gs
IHplcm9ZKTsKKyAgICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0
KCksIG9mZnNldFgsIG9mZnNldFkpOworICAgIHJldHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHpl
cm9YLCBvZmZzZXRZIC0gemVyb1kpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29t
bWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIEZsb2F0U2l6
ZSBmdWxsT2Zmc2V0ID0gbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0ICsg
b2Zmc2V0OworCisgICAgaW50IGludFdpZHRoID0gcm91bmQoZnVsbE9mZnNldC53aWR0aCgpKTsK
KyAgICBpbnQgaW50SGVpZ2h0ID0gcm91bmQoZnVsbE9mZnNldC5oZWlnaHQoKSk7CisKKyAgICAv
LyBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQgaG9sZHMgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgdXNlciBzY3JvbGwgb2Zmc2V0IHRoYXQKKyAgICAvLyBoYXMgbm90
IHlldCBiZWVuIHN5bmNlZCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyBiZWNhdXNlIHRoZSB3ZWIgcHJv
Y2VzcyBleHBlY3RzIGFuIEludFNpemUuCisgICAgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZy
YWN0aW9uYWxQYXJ0ID0gRmxvYXRTaXplKGZ1bGxPZmZzZXQud2lkdGgoKSAtIGludFdpZHRoLCBm
dWxsT2Zmc2V0LmhlaWdodCgpIC0gaW50SGVpZ2h0KTsKKworICAgIG1fc2Nyb2xsQ2xpZW50LT5j
b21taXRTY3JvbGxPZmZzZXQobV9pZCwgSW50U2l6ZShpbnRXaWR0aCwgaW50SGVpZ2h0KSk7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsQ2xpZW50IHx8IG9mZnNldC5pc1plcm8oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmxvYXRTaXplIHNjcm9sbE9mZnNldCA9IG1hcFNjcm9sbE9m
ZnNldChvZmZzZXQpOworICAgIG1fdXNlclNyb2xsT2Zmc2V0ICs9IHNjcm9sbE9mZnNldDsKKwor
ICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOwor
ICAgIGNvbW1pdFNjcm9sbE9mZnNldChzY3JvbGxPZmZzZXQpOworfQorCit2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIG9mZnNldCkK
K3sKKyAgICBpZiAob2Zmc2V0LmlzWmVybygpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Vz
ZXJTcm9sbE9mZnNldCA9IEZsb2F0U2l6ZShtX3VzZXJTcm9sbE9mZnNldC53aWR0aCgpIC0gb2Zm
c2V0LndpZHRoKCksIG1fdXNlclNyb2xsT2Zmc2V0LmhlaWdodCgpIC0gb2Zmc2V0LmhlaWdodCgp
KTsKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigp
KTsKK30KKwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKaW5kZXggNjAyYjJjMy4u
YjNiMzk0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaApAQCAtMzksNiArMzksMTIgQEAgY2xh
c3MgVGV4dHVyZU1hcHBlckxheWVyIDogcHVibGljIEdyYXBoaWNzTGF5ZXJBbmltYXRpb246OkNs
aWVudCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGV4dHVyZU1hcHBlckxheWVyKTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKKworICAgIGNsYXNzIFNjcm9sbGlu
Z0NsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xs
T2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkgPSAwOworICAg
IH07CisKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIoKQogICAgICAgICA6IG1fcGFyZW50KDApCiAg
ICAgICAgICwgbV9lZmZlY3RUYXJnZXQoMCkKQEAgLTQ3LDEwICs1MywyNSBAQCBwdWJsaWM6CiAg
ICAgICAgICwgbV9jZW50ZXJaKDApCiAgICAgICAgICwgbV90ZXh0dXJlTWFwcGVyKDApCiAgICAg
ICAgICwgbV9maXhlZFRvVmlld3BvcnQoZmFsc2UpCisgICAgICAgICwgbV9pZCgwKQorICAgICAg
ICAsIG1fc2Nyb2xsQ2xpZW50KDApCisgICAgICAgICwgbV9pc1Njcm9sbGFibGUoZmFsc2UpCiAg
ICAgeyB9CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyTGF5ZXIoKTsKIAorICAgIHZvaWQg
c2V0SUQodWludDMyX3QgaWQpIHsgbV9pZCA9IGlkOyB9CisgICAgdWludDMyX3QgaWQoKSB7IHJl
dHVybiBtX2lkOyB9CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGdldFNjcm9sbGFibGVDb250
ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9zKTsKKworICAgIHZvaWQgc2V0U2Nyb2xs
Q2xpZW50KFNjcm9sbGluZ0NsaWVudCogc2Nyb2xsQ2xpZW50KSB7IG1fc2Nyb2xsQ2xpZW50ID0g
c2Nyb2xsQ2xpZW50OyB9CisgICAgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKKworICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsK
KyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkgeyBtX2lzU2Nyb2xs
YWJsZSA9IGlzU2Nyb2xsYWJsZTsgfQorICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1Njcm9sbGFibGU7IH0KKwogICAgIFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBw
ZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4
bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQogCkBAIC0xMDgsNyArMTI5LDcgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1cmVNYXBw
ZXJMYXllciogPiYgYXJyYXksIGludCBmaXJzdCwgaW50IGxhc3QpOwogCiAgICAgUGFzc1JlZlB0
cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUgPyBtX2Jh
Y2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQotICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3Np
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlvbkRlbHRh
OyB9CisgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTcm9sbE9mZnNldDsgfQog
ICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNvbnN0OwogICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHJlcGxpY2FUcmFuc2Zvcm0oKTsKICAgICB2b2lkIGFkZENoaWxkKFRleHR1
cmVNYXBwZXJMYXllciopOwpAQCAtMTU5LDYgKzE4MCwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAg
ICAgZmxvYXQgbV9jZW50ZXJaOwogCisgICAgdGVtcGxhdGU8Y2xhc3MgSGl0VGVzdENvbmRpdGlv
bj4gVGV4dHVyZU1hcHBlckxheWVyKiBoaXRUZXN0KGNvbnN0IEZsb2F0UG9pbnQmLCBIaXRUZXN0
Q29uZGl0aW9uKTsKKyAgICBzdGF0aWMgYm9vbCBzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0
aW9uKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IEZsb2F0UG9pbnQmKTsKKworICAgIEZsb2F0
U2l6ZSBtYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7CisgICAgdm9pZCBjb21taXRT
Y3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7CisKICAgICBzdHJ1Y3QgU3RhdGUgewogICAg
ICAgICBGbG9hdFBvaW50IHBvczsKICAgICAgICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50OwpA
QCAtMjExLDYgKzIzOCwxMSBAQCBwcml2YXRlOgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25z
IG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAg
IGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisgICAgdWludDMyX3QgbV9pZDsKKyAgICBTY3JvbGxp
bmdDbGllbnQqIG1fc2Nyb2xsQ2xpZW50OworICAgIGJvb2wgbV9pc1Njcm9sbGFibGU7CisgICAg
RmxvYXRTaXplIG1fdXNlclNyb2xsT2Zmc2V0OworICAgIEZsb2F0U2l6ZSBtX2FjY3VtdWxhdGVk
U2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDRjNDNhYTcu
LmE2ZDk4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTEyMiw2ICsxMjMsNyBAQCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQogICAgICwgbV9jYW52YXNQbGF0Zm9y
bUxheWVyKDApCiAgICAgLCBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lcih0aGlzLCAmQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjphbmltYXRpb25TdGFydGVkVGltZXJGaXJlZCkKKyAgICAsIG1fc2Ny
b2xsYWJsZUFyZWEoMCkKIHsKICAgICBzdGF0aWMgQ29vcmRpbmF0ZWRMYXllcklEIG5leHRMYXll
cklEID0gMTsKICAgICBtX2lkID0gbmV4dExheWVySUQrKzsKQEAgLTQ2NSw2ICs0NjcsMjQgQEAg
Q29vcmRpbmF0ZWRMYXllcklEIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aWQoKSBjb25zdAog
ICAgIHJldHVybiBtX2lkOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQoreworICAgIGJv
b2wgb2xkU2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJsZSgpOworICAgIG1fc2Nyb2xsYWJsZUFyZWEg
PSBzY3JvbGxhYmxlQXJlYTsKKyAgICBpZiAob2xkU2Nyb2xsYWJsZSAhPSBpc1Njcm9sbGFibGUo
KSkKKyAgICAgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmIG9mZnNldCkK
K3sKKyAgICBpZiAoIWlzU2Nyb2xsYWJsZSgpIHx8IG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9zY3JvbGxhYmxlQXJlYS0+bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFu
Z2VkKG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgKyBvZmZzZXQpOworICAgIG1f
bGF5ZXJJbmZvLmNvbW1pdHRlZFNjcm9sbE9mZnNldCArPSBvZmZzZXQ7CisgICAgZGlkQ2hhbmdl
TGF5ZXJTdGF0ZSgpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Rml4
ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCkKIHsKICAgICBpZiAobV9maXhlZFRvVmlld3BvcnQg
PT0gaXNGaXhlZCkKQEAgLTU3Miw2ICs1OTIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLmFuY2hvclBvaW50ID0gbV9h
ZGp1c3RlZEFuY2hvclBvaW50OwogICAgIG1fbGF5ZXJJbmZvLnBvcyA9IG1fYWRqdXN0ZWRQb3Np
dGlvbjsKICAgICBtX2xheWVySW5mby5zaXplID0gbV9hZGp1c3RlZFNpemU7CisgICAgbV9sYXll
ckluZm8uaXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlKCk7CiAKICAgICBtX2xheWVySW5mby5z
aG93RGVidWdCb3JkZXJzID0gaXNTaG93aW5nRGVidWdCb3JkZXIoKTsKICAgICBpZiAobV9sYXll
ckluZm8uc2hvd0RlYnVnQm9yZGVycykKQEAgLTU3OSw2ICs2MDAsNyBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUoKQogICAgIG1fbGF5ZXJJbmZvLnNob3dS
ZXBhaW50Q291bnRlciA9IGlzU2hvd2luZ1JlcGFpbnRDb3VudGVyKCk7CiAKICAgICBtX2Nvb3Jk
aW5hdG9yLT5zeW5jTGF5ZXJTdGF0ZShtX2lkLCBtX2xheWVySW5mbyk7CisgICAgbV9sYXllcklu
Zm8uY29tbWl0dGVkU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogfQogCiB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcjo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9h
dCB3aWR0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuaAppbmRleCBlNWFhNDdhLi5iN2QzMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00NCw2ICs0NCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI7CiBj
bGFzcyBHcmFwaGljc0xheWVyQW5pbWF0aW9uczsKK2NsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBj
bGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtMTM0LDYg
KzEzNSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKIAorICAg
IHZvaWQgc2V0U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICBib29sIGlzU2Ny
b2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9zY3JvbGxhYmxlQXJlYTsgfQorICAgIHZvaWQg
Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKwogICAgIENvb3JkaW5hdGVkTGF5
ZXJJRCBpZCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBpc0Zp
eGVkKTsKQEAgLTI1OCw2ICsyNjMsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhpY3NMYXll
ckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFy
dFRpbWU7CisKKyAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAKIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lLmNwcAppbmRleCA4NjI0NTEzLi5lY2YzNmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzE5
LDYgKzMxOSw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRl
KENvb3JkaW5hdGVkTGF5ZXJJRCBpZCwgY29uc3QgQ29vcmRpCiAgICAgbGF5ZXItPnNldERlYnVn
Qm9yZGVyKGxheWVySW5mby5kZWJ1Z0JvcmRlckNvbG9yLCBsYXllckluZm8uZGVidWdCb3JkZXJX
aWR0aCk7CiAgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRlcihsYXllckluZm8uc2hvd1Jl
cGFpbnRDb3VudGVyKTsKIAorICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIp
LT5zZXRJc1Njcm9sbGFibGUobGF5ZXJJbmZvLmlzU2Nyb2xsYWJsZSk7CisgICAgdG9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlcihsYXllciktPmRpZENvbW1pdFNjcm9sbE9mZnNldChsYXllcklu
Zm8uY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKKwogICAgIGlmIChsYXllckluZm8uZml4ZWRUb1Zp
ZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFkZChpZCwgbGF5ZXIpOwogICAgIGVsc2UK
QEAgLTM0OCw2ICszNTEsOCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
TGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewogICAgIE93blB0cjxHcmFwaGljc0xheWVy
PiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwIC8qIGZhY3RvcnkgKi8sIHRoaXMp
OwogICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRI
YXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRJRChpZCk7CisgICAgdG9HcmFwaGljc0xheWVyVGV4dHVy
ZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldFNjcm9sbENsaWVudCh0aGlzKTsKICAgICBtX2xh
eWVycy5hZGQoaWQsIG5ld0xheWVyLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTYxMCw2ICs2MTUsMTYg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xSZXNvdXJjZXMoKQogICAg
IGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cHVy
Z2VCYWNraW5nU3RvcmVzLCB0aGlzKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJ
bnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9jbGllbnQtPmNvbW1pdFNjcm9sbE9mZnNldChsYXll
cklELCBvZmZzZXQpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0
U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sK
KyAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0LCB0aGlzLCBsYXllcklELCBvZmZzZXQpKTsKK30K
Kwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7
CiAgICAgaWYgKG1fY2xpZW50KQpAQCAtNjczLDYgKzY4OCwxMSBAQCB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAg
ICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQogCitUZXh0dXJlTWFwcGVyTGF5ZXIqIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Z2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICByZXR1cm4gcm9vdExheWVyKCkgPyB0b1RleHR1
cmVNYXBwZXJMYXllcihyb290TGF5ZXIoKSktPmdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQo
cG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDljOTIxYTcuLjhhNTQ2YWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJGUFNDb3Vu
dGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOwogY2xhc3Mg
Q29vcmRpbmF0ZWRMYXllckluZm87CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3Mg
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Ci1jbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CiAKIGNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCB7CiBwdWJsaWM6CkBAIC02MCw5ICs2
MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVWaWV3cG9ydCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xs
T2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkgPSAwOwogfTsK
IAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1YmxpYyBHcmFwaGljc0xheWVyQ2xp
ZW50IHsKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3JhcGhpY3NMYXll
ckNsaWVudCwgcHVibGljIFRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50IHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAgICAgIEludFJlY3Qgc291cmNlUmVj
dDsKQEAgLTkyLDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRldGFjaCgpOwogICAgIHZv
aWQgYXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIAorICAgIFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllciogZ2V0U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zm
c2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCk7CisKICAgICAvLyBU
aGUgcGFpbnRpbmcgdGhyZWFkIG11c3QgbG9jayB0aGUgbWFpbiB0aHJlYWQgdG8gdXNlIGJlbG93
IHR3byBtZXRob2RzLCBiZWNhdXNlIHR3byBtZXRob2RzIGFjY2VzcyBtZW1iZXJzIHRoYXQgdGhl
IG1haW4gdGhyZWFkIG1hbmFnZXMuIFNlZSBtX2NsaWVudC4KICAgICAvLyBDdXJyZW50bHksIFFR
dWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZSgpIGxvY2tzIHRoZSBtYWluIHRocmVhZCBiZWZv
cmUgY2FsbGluZyBib3RoIG1ldGhvZHMuCiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CkBA
IC0xNjksNiArMTc0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJlc2V0QmFja2luZ1N0b3JlU2l6ZVRv
TGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hDb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKwogICAg
IC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3Ig
dXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4g
PiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZExheWVySW5mby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKaW5kZXggMGZhMmExMi4u
NjIyZjlmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJ
bmZvLmgKQEAgLTYwLDYgKzYwLDcgQEAgc3RydWN0IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAg
ICBDb2xvciBzb2xpZENvbG9yOwogICAgIENvbG9yIGRlYnVnQm9yZGVyQ29sb3I7CiAgICAgZmxv
YXQgZGVidWdCb3JkZXJXaWR0aDsKKyAgICBJbnRTaXplIGNvbW1pdHRlZFNjcm9sbE9mZnNldDsK
IAogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKQEAgLTczLDYgKzc0LDcgQEAgc3RydWN0
IENvb3JkaW5hdGVkTGF5ZXJJbmZvIHsKICAgICAgICAgICAgIGJvb2wgZml4ZWRUb1ZpZXdwb3J0
IDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CiAgICAgICAgICAg
ICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CisgICAgICAgICAgICBib29sIGlzU2Nyb2xs
YWJsZSA6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQy
L0NNYWtlTGlzdHMudHh0CmluZGV4IDZmMmIxZjYuLjQyZmE3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0CkBAIC0xNyw2ICsxNyw3IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0MiCisgICAgIiR7V0VC
S0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9jcHAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vz
cy9BdXRoZW50aWNhdGlvbiIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MiCkBAIC03NSw2ICs3Niw4IEBAIHNldChXZWJLaXQyX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vbG9hZGVyL2NhY2hlIgogICAgICIke1dFQkNPUkVf
RElSfS9wYWdlIgogICAgICIke1dFQkNPUkVfRElSfS9wYWdlL2FuaW1hdGlvbiIKKyAgICAiJHtX
RUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmciCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Ny
b2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
IgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9hbmltYXRpb24iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzIgpAQCAtMzQxLDYgKzM0NCw4IEBAIHNldChXZWJLaXQy
X1NPVVJDRVMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tlci5jcHAKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uY3BwCiAKKyAgICBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAorCiAgICAgVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwCiAgICAgVUlQcm9jZXNz
L0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAKICAgICBV
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
YWUyY2RmLi4xYjY0Njk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTMtMDMtMDQg
IEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBBY2Nl
bGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIENvb3JkaW5hdGVkIEdyYXBoaWNzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwMzIzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBzY3JvbGwgb2Zm
c2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZpZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhl
CisgICAgICAgIHdlYiBwcm9jZXNzIGlzIG5vdGlmaWVkIGFzc3luY2hyb25vdXNseS4KKyAgICAg
ICAgVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2VkIHRvIHNjcm9sbCBs
YXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwor
ICAgICAgICBBZGRpbmcgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5h
YmxlZCB0byBXZWJQcmVmZXJlbmNlc1N0b3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVm
ZXJlbmNlcyk6CisKKyAgICAgICAgTmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgaXMgdXNlZCB0
byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJ
Q2FzdC5oOgorCisgICAgICAgIEEgbmV3IG1lc3NhZ2UgaXMgdXNlZCB0byBzZW5kIHNjcm9sbCBj
b21taXQgbWVzc2FnZXMgdG8gd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxP
ZmZzZXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0
YWNoTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNy
ZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2Nyb2xsTGF5ZXJCeSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbjoK
KwogMjAxMy0wMy0wMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQREZQbHVnaW46IFJlbmFtZSBkZWxlZ2F0ZSBtZXRob2QgZnJvbSBvcGVuV2l0aFBy
ZXZpZXcgdG8gb3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggNTk1M2NiNC4uMTE5Y2I0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBAIC0xNDIsNiArMTQyLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oUGFnZVZpc2liaWxpdHlCYXNlZFByb2Nl
c3NTdXBwcmVzc2lvbkVuYWJsZWQsIHBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKFNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCwgc21hcnRJbnNlcnREZWxldGVFbmFibGVkLCBCb29sLCBib29sLCB0cnVlKSBc
CiAgICAgbWFjcm8oU2hvd3NVUkxzSW5Ub29sVGlwc0VuYWJsZWQsIHNob3dzVVJMc0luVG9vbFRp
cHNFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQsIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgXAogCiAj
ZGVmaW5lIEZPUl9FQUNIX1dFQktJVF9ET1VCTEVfUFJFRkVSRU5DRShtYWNybykgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dL
Q29vcmRpbmF0ZWRTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNWE2YTFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5j
cHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0Nvb3JkaW5h
dGVkU2NlbmUuaCIKKworI2luY2x1ZGUgIldLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0dXJlTWFwcGVyTGF5ZXIuaD4KKworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRT
Y2VuZUxheWVyIFdLQ29vcmRpbmF0ZWRTY2VuZUdldFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQo
V0tDb29yZGluYXRlZFNjZW5lIHNjZW5lLCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVybiB0
b0FQSSh0b0ltcGwoc2NlbmUpLT5nZXRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdlYkNvcmU6
OkZsb2F0UG9pbnQocG9pbnQueCwgcG9pbnQueSkpKTsKK30KKworV0tfRVhQT1JUIHVpbnQzMl90
IFdLQ29vcmRpbmF0ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5
ZXIpCit7CisgICAgcmV0dXJuIHRvSW1wbChsYXllciktPmlkKCk7Cit9CisKK1dLX0VYUE9SVCB2
b2lkIFdLQ29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxh
eWVyLCBXS1NpemUgb2Zmc2V0KQoreworICAgIHRvSW1wbChsYXllciktPnNjcm9sbEJ5KFdlYkNv
cmU6OkZsb2F0U2l6ZShvZmZzZXQud2lkdGgsIG9mZnNldC5oZWlnaHQpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nv
b3JkaW5hdGVkU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi45NDMzYjEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oCkBAIC0w
LDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCisjZGVmaW5lIFdLQ29vcmRpbmF0
ZWRTY2VuZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit0eXBlZGVm
IHN0cnVjdCBPcGFxdWVDR1NjZW5lKiBXS0Nvb3JkaW5hdGVkU2NlbmU7Cit0eXBlZGVmIHN0cnVj
dCBPcGFxdWVDR0xheWVyKiBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllcjsKKworV0tfRVhQT1JUIFdL
Q29vcmRpbmF0ZWRTY2VuZUxheWVyIFdLQ29vcmRpbmF0ZWRTY2VuZUdldFNjcm9sbGFibGVDb250
ZW50c0xheWVyQXQoV0tDb29yZGluYXRlZFNjZW5lLCBXS1BvaW50KTsKK1dLX0VYUE9SVCB1aW50
MzJfdCBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklEKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVy
KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KFdLQ29vcmRpbmF0
ZWRTY2VuZUxheWVyLCBXS1NpemUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZiAv
LyBfX2NwbHVzcGx1cworCisjZW5kaWYgLy8gV0tDb29yZGluYXRlZFNjZW5lX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAppbmRleCBj
NWY3ZTg3Li5hOGQ5ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuY3BwCkBAIC0yMzcsNSArMjM3LDEwIEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0UHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IsIG1fc2NlbmUuZ2V0KCksIGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBs
YXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9kcmF3aW5nQXJlYVByb3h5
LT5wYWdlKCktPnByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpDb21taXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KSwgbV9kcmF3aW5nQXJlYVBy
b3h5LT5wYWdlKCktPnBhZ2VJRCgpKTsKK30KKwogfQogI2VuZGlmIC8vIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5oCmluZGV4IDk0NmIzOTkuLmM4MjZkYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaApAQCAtOTgsNiArOTgsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSBPVkVSUklERTsKIAorICAgIHZpcnR1YWwg
dm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hVcGRhdGUo
Y29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5h
dGVkU2NlbmVBUElDYXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5
ZjBkNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaApAQCAtMCwwICsxLDYwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0X2gKKyNkZWZpbmUgV0tDb29yZGluYXRlZFNj
ZW5lQVBJQ2FzdF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29vcmRpbmF0ZWRTY2VuZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsK
K2NsYXNzIFRleHR1cmVNYXBwZXJMYXllcjsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitp
bmxpbmUgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiB0b0ltcGwoV0tDb29yZGlu
YXRlZFNjZW5lIHNjZW5lKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSo+KHNjZW5lKTsKK30KKworaW5saW5lIFdLQ29vcmRp
bmF0ZWRTY2VuZSB0b0FQSShXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHNjZW5l
KQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ29vcmRpbmF0ZWRTY2VuZT4oc2Nl
bmUpOworfQorCitpbmxpbmUgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiB0b0ltcGwoV0tD
b29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKj4obGF5ZXIpOworfQorCitpbmxpbmUgV0tD
b29yZGluYXRlZFNjZW5lTGF5ZXIgdG9BUEkoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiBs
YXllcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0Nvb3JkaW5hdGVkU2NlbmVM
YXllcj4obGF5ZXIpOworfQorCisjZW5kaWYgLy8gV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAppbmRleCA3YWNlZjMwLi41ZDlhYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTcyLDkg
KzcyLDkgQEAgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0KCkKICNlbmRpZgogICAgIHB1cmdlQmFja2luZ1N0b3JlcygpOwogCi0gICAgSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdp
c3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAoKml0KS0+c2V0Q29vcmRpbmF0b3IoMCk7Cisg
ICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKKyAg
ICBmb3IgKExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigp
OyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT52YWx1ZS0+c2V0Q29vcmRpbmF0b3IoMCk7
CiB9CiAKIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
KFdlYlBhZ2UqIHdlYlBhZ2UpCkBAIC00NzAsNyArNDcwLDcgQEAgdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0ZXJQcm9ncmFtcygpCiAKIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcihDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogewotICAgIG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXIpOworICAg
IG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXItPmlkKCkpOwogICAgIG1fbGF5ZXJzVG9E
ZWxldGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0K
QEAgLTY0MSw3ICs2NDEsNyBAQCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5ZXI+IENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcihHcmFwaGljcwogewogICAgIENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KGNsaWVudCk7CiAgICAgbGF5ZXItPnNldENvb3JkaW5hdG9yKHRoaXMpOwotICAgIG1fcmVnaXN0
ZXJlZExheWVycy5hZGQobGF5ZXIpOworICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXIt
PmlkKCksIGxheWVyKTsKICAgICBtX2xheWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+aWQoKSk7
CiAgICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgc2NoZWR1
bGVMYXllckZsdXNoKCk7CkBAIC03MzgsOSArNzM4LDkgQEAgdm9pZCBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b24KICAgICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKSB7CiAgICAgICAgIG1fdmlzaWJsZUNv
bnRlbnRzUmVjdCA9IHJlY3Q7CiAKLSAgICAgICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgp
OwotICAgICAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Kj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewotICAgICAgICAgICAgKCppdCktPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50
KCk7CisgICAgICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7CisgICAgICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVk
TGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICAgICAgaXQtPnZhbHVl
LT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC03ODksOSArNzg5LDkgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnB1cmdlQmFj
a2luZ1N0b3JlcygpCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUo
bV9pc1B1cmdpbmcsIHRydWUpOwogCi0gICAgSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIqPjo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwot
ICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRl
cmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQot
ICAgICAgICAoKml0KS0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7CisgICAgTGF5ZXJNYXA6Oml0ZXJh
dG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKKyAgICBmb3IgKExheWVyTWFwOjpp
dGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIGl0LT52YWx1ZS0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKICAgICBtX2ltYWdl
QmFja2luZ3MuY2xlYXIoKTsKICAgICBtX3VwZGF0ZUF0bGFzZXMuY2xlYXIoKTsKQEAgLTg1NCw1
ICs4NTQsMTQgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6U2V0QmFja2dyb3VuZENvbG9y
KGNvbG9yKSk7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0
KQoreworICAgIExheWVyTWFwOjppdGVyYXRvciBpID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmZpbmQo
bGF5ZXJJRCk7CisgICAgaWYgKGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpLT52YWx1ZS0+Y29tbWl0U2Nyb2xsT2Zmc2V0KG9mZnNldCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0LmgKaW5kZXggYjYwNTI4OS4uZTU2YzUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKQEAgLTEyMCw2ICsx
MjAsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+IGNyZWF0ZUNvb3JkaW5hdGVkU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyk7CiAKKyAgICB2b2lkIGNv
bW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBvZmZzZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KFdlYlBhZ2UqKTsKIApAQCAtMTgxLDcgKzE4Myw4IEBAIHByaXZhdGU6CiAgICAgLy8g
VGhlIHBhZ2Ugb3ZlcmxheSBsYXllci4gV2lsbCBiZSBudWxsIGlmIHRoZXJlJ3Mgbm8gcGFnZSBv
dmVybGF5LgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3BhZ2VPdmVybGF5
TGF5ZXI7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+
IG1fcmVnaXN0ZXJlZExheWVyczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBMYXllck1h
cDsKKyAgICBMYXllck1hcCBtX3JlZ2lzdGVyZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXllcnNUb0NyZWF0ZTsKICAgICBWZWN0b3I8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRMYXllcklEPiBtX2xheWVyc1RvRGVsZXRlOwogICAgIHR5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5nTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lm1lc3NhZ2VzLmluCmluZGV4IDY2NzFiMzIuLmU3MzIxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVz
c2FnZXMuaW4KQEAgLTI3LDUgKzI3LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0IExlZ2FjeVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJB
TUUpCiAgICAgQW5pbWF0aW9uRnJhbWVSZWFkeSgpCiAjZW5kaWYKKyAgICBDb21taXRTY3JvbGxP
ZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZzZXQpCiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBkNDA4ZTk0Li43MDRhY2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzE0LDYgKzIzMTQsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRp
bmdzLT5zZXRFZGl0YWJsZUxpbmtCZWhhdmlvcihzdGF0aWNfY2FzdDxXZWJDb3JlOjpFZGl0YWJs
ZUxpbmtCZWhhdmlvcj4oc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNL
ZXk6OmVkaXRhYmxlTGlua0JlaGF2aW9yS2V5KCkpKSk7CiAgICAgc2V0dGluZ3MtPnNldFNob3dz
VG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6c2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRLZXkoKSkpOwogCisgICAg
c2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJs
ZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5n
cy0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgp
KSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAg
ICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5
KCkpICYmIExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsK
ICAgICBzZXR0aW5ncy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERy
YXdpbmdLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nKCkpOwotLSAKMS43LjkuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191409</attachid>
            <date>2013-03-04 23:22:24 -0800</date>
            <delta_ts>2013-03-05 22:26:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>53236</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2OWFjNTMxZDY5ODFjMDZkM2ZhMGZmY2RmNWVkN2ZiNjE5MjU2YTY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogTW9uLCA0IE1hciAyMDEzIDIyOjU1OjM2IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZp
ZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVk
IGFzc3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgpTb3VyY2UvV2ViQ29yZToK
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnIDExMTE0MC4KClNjcm9sbGluZyBjb29yZGluYXRv
ciBpcyB1c2VkIHRvIHByb3ZpZGUgYSBTY3JvbGxhYmxlQXJlYSB0byBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuCgoqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcDoKKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljczo6c2Nyb2xsYWJsZUFyZWFTY3JvbGxMYXllckRp
ZENoYW5nZSk6CihXZWJDb3JlKToKKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljczo6d2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYSk6CiogcGFnZS9zY3JvbGxp
bmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3Jh
cGhpY3MuaDoKKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcyk6CgpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZSAn
ZGlkIGNvbW1pdCcgbWVzc2FnZXMgYW5kIHRvIHBhc3MKdGhlbSB0byBpdHMgVGV4dHVyZU1hcHBl
ckxheWVyIG9uIHRoZSBhcHByb3ByaWF0ZWQgdGltZS4KCiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKFdlYkNv
cmUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Nyb2xsYWJs
ZSk6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFu
Z2VzKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuaDoKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGll
bnQpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElEKToKKEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjppc1Njcm9sbGFibGUpOgoKVGV4dHVyZU1hcHBlckxheWVyIGlzIHJlc3BvbnNpYmxlIGZv
ciBhcHBseWluZyB0aGUgcmVxdWVzdCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKc2VuZGluZyB0aGUg
Y29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLiBJdCBpcyBhbHNvIGFibGUgdG8gaGl0dGVz
dCBsYXllcnMgYW5kIGlkZW50aWZ5CnRoZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCgoqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0aW5nU2VhcmNoKToKKFdlYkNvcmUpOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJB
dCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9sbE9mZnNldCk6CihXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmg6CihUZXh0dXJlTWFwcGVyTGF5ZXIpOgooU2Nyb2xsaW5nQ2xpZW50
KToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4dHVyZU1hcHBlckxheWVyKToKKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SUQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjppZCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVu
dCk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZSk6CihXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CihXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgoKQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
IHJlY2VpdmVzIHRoZSBjb21taXQgbWVzc2FnZXMgYW5kIHVwZGF0ZXMgaXRzIFNjcm9sbGFibGVB
cmVhLgoKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcDoKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0U2Nyb2xsYWJsZUFyZWEpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJDb3JlOjpDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CihXZWJDb3JlKToKKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXI6OmlzU2Nyb2xsYWJsZSk6CgpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgcmVjZWl2ZXMgdGhl
IGNvbW1pdCBtZXNzYWdlcyBmcm9tIFRleHR1cmVNYXBwZXJMYXllciBhbmQKZGlzcGF0Y2hlcyB0
aGVtIG9uIHRoZSBtYWluIHRocmVhZC4gSXQgYWxzbyBoYXMgYSBuZXcgbWV0aG9kIHRoYXQgaXMg
dXNlZCB0byBmaW5kCnRoZSB0b3Btb3N0IHNjcm9sbGFibGUgbGF5ZXIgYXQgYSBnaXZlbiBwb2lu
dC4KCiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZS5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExh
eWVyU3RhdGUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVMYXll
cik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoQ29tbWl0U2Ny
b2xsT2Zmc2V0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Ojpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpmaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oOgooV2ViQ29yZSk6CihD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQpOgooQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXll
ckluZm8uaDoKKENvb3JkaW5hdGVkTGF5ZXJJbmZvKToKClNvdXJjZS9XZWJLaXQyOgoKKiBDTWFr
ZUxpc3RzLnR4dDoKCkFkZGluZyBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3Jv
bGxFbmFibGVkIHRvIFdlYlByZWZlcmVuY2VzU3RvcmUuCgoqIFNoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmg6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKFdl
YktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgoKTmV3IEFQSSBXS0Nvb3JkaW5hdGVk
U2NlbmUgaXMgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUuCgoqIFVJUHJvY2Vzcy9B
UEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOgoqIFVJUHJvY2Vz
cy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaDoKKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0Lmg6CgpBIG5l
dyBtZXNzYWdlIGlzIHVzZWQgdG8gc2VuZCBzY3JvbGwgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBw
cm9jZXNzLgoKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5
Ojpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViS2l0KToKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgooQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgooV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6c2Nyb2xsTGF5ZXJCeSk6CihXZWJLaXQpOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgoqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5t
ZXNzYWdlcy5pbjoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgOTIgKysrKysrKysrKysrKysrKysrKysKIC4uLi9TY3JvbGxpbmdDb29y
ZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwICAgIHwgICAxOCArKysrCiAuLi4vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmggICAgICB8ICAgIDIgKwogLi4uL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgfCAgIDI1ICsrKysr
KwogLi4uL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oICAgfCAg
IDE1ICsrKy0KIC4uLi9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCAgICAg
ICAgIHwgICA3MCArKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckxheWVyLmggIHwgICAzNCArKysrKysrLQogLi4uL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgICAgICAgfCAgIDIyICsrKysrCiAuLi4vdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oICB8ICAgIDcgKysKIC4uLi9j
b29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwICAgICAgIHwgICAyMCArKysr
KwogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCAgfCAg
IDExICsrLQogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5mby5oICAg
ICAgfCAgICAyICsKIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAg
ICAgICAgIHwgICAgNSArKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDQ0ICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmggICAgICAgIHwgICAgMSArCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcCB8ICAgNDkgKysrKysrKysrKysKIC4uLi9BUEkv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaCAgIHwgICA0OCArKysrKysr
KysrCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwICAgICAgICAgICAgICB8
ICAgIDUgKysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oICAgICAgICAgICAg
ICAgIHwgICAgMiArCiAuLi4vV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oICAgICAgICAgICAg
ICAgICAgICB8ICAgNjAgKysrKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKystLS0KIC4uLi9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIHwgICAgNSArLQogLi4uL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbiAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCAgICAgIHwgICAgMSArCiAyNCBm
aWxlcyBjaGFuZ2VkLCA1NTQgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBo
aWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5l
LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgKCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGVk
ZTBlMy4uZGM4ZjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEzLTAzLTA0ICBM
dWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgQWNjZWxl
cmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDMyMworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc2Nyb2xsIG9mZnNl
dCBpcyBhcHBsaWVkIHRvIGluZGl2aWR1YWwgbGF5ZXJzIG9uIFVJIHByb2Nlc3MgYW5kIHRoZQor
ICAgICAgICB3ZWIgcHJvY2VzcyBpcyBub3RpZmllZCBhc3N5bmNocm9ub3VzbHkuCisgICAgICAg
IFRoZSBuZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBtYXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5
ZXJzIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgIFRlc3RzIHdpbGwgYmUgYWRkZWQgb24g
YnVnIDExMTE0MC4KKworICAgICAgICBTY3JvbGxpbmcgY29vcmRpbmF0b3IgaXMgdXNlZCB0byBw
cm92aWRlIGEgU2Nyb2xsYWJsZUFyZWEgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLgorCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29y
ZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExh
eWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFi
bGVBcmVhKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAgICAgICAoU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKToKKworICAgICAgICBHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5nIHRoZSAnZGlkIGNv
bW1pdCcgbWVzc2FnZXMgYW5kIHRvIHBhc3MKKyAgICAgICAgdGhlbSB0byBpdHMgVGV4dHVyZU1h
cHBlckxheWVyIG9uIHRoZSBhcHByb3ByaWF0ZWQgdGltZS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6
OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFibGUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6c2V0U2Nyb2xsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpzZXRJRCk6CisgICAgICAgIChHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6aXNTY3Jv
bGxhYmxlKToKKworICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgaXMgcmVzcG9uc2libGUgZm9y
IGFwcGx5aW5nIHRoZSByZXF1ZXN0IHNjcm9sbCBvZmZzZXQgYW5kIGZvcgorICAgICAgICBzZW5k
aW5nIHRoZSBjb21taXQgbWVzc2FnZXMgdG8gd2ViIHByb2Nlc3MuIEl0IGlzIGFsc28gYWJsZSB0
byBoaXR0ZXN0IGxheWVycyBhbmQgaWRlbnRpZnkKKyAgICAgICAgdGhlIG9uZXMgdGhhdCBhcmUg
c2Nyb2xsYWJsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpo
aXRUZXN0aW5nU2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJTZWFyY2hDb25kaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmaW5kU2Nyb2xsYWJsZUNvbnRlbnRz
TGF5ZXJBdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1hcFNjcm9s
bE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNvbW1pdFNj
cm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9s
bEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6ZGlkQ29tbWl0U2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckxheWVyLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoU2Ny
b2xsaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6VGV4
dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
c2V0SUQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjppZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgorCisgICAg
ICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciByZWNlaXZlcyB0aGUgY29tbWl0IG1lc3NhZ2Vz
IGFuZCB1cGRhdGVzIGl0cyBTY3JvbGxhYmxlQXJlYS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
OjpzZXRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0xheWVyU3RhdGUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKworICAgICAgICBDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUgcmVjZWl2ZXMgdGhlIGNvbW1pdCBtZXNzYWdlcyBmcm9tIFRleHR1cmVNYXBwZXJMYXllciBh
bmQKKyAgICAgICAgZGlzcGF0Y2hlcyB0aGVtIG9uIHRoZSBtYWluIHRocmVhZC4gSXQgYWxzbyBo
YXMgYSBuZXcgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBmaW5kCisgICAgICAgIHRoZSB0b3Btb3N0
IHNjcm9sbGFibGUgbGF5ZXIgYXQgYSBnaXZlbiBwb2ludC4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllclN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRl
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNw
YXRjaENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZmluZFNjcm9sbGFibGVD
b250ZW50c0xheWVyQXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50KToKKyAgICAgICAgKENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkTGF5ZXJJbmZvLmg6CisgICAgICAgIChDb29yZGluYXRl
ZExheWVySW5mbyk6CisKIDIwMTMtMDMtMDQgIEt1bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ftb3Rv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIEFkZCBydW50aW1lIGZsYWcgZm9y
IGZvbnQgbG9hZCBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBh
MWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00
Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
czo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgogICAgIHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGVuYWJsZSk7CiB9CiAKK3Zv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJl
YVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sK
KyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOwor
ICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxh
YmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxl
QXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgwKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggODdjMmM3Mi4uOTBjYzQzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCkBAIC0zNyw2ICszNyw4IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MoUGFnZSopOwogCiAgICAgdmly
dHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllcios
IGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hh
bmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95U2Nyb2xs
YWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4IDgwMTNlYzQu
LmYzMjYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApA
QCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXll
clRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZQogICAgICwgbV9kZWJ1Z0Jv
cmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9u
U3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xsYWJsZShmYWxzZSkKIHsKIH0KIApAQCAtNDAz
LDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVw
YWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFu
Z2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRDb21taXRTY3Jv
bGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmIChvZmZzZXQuaXNaZXJv
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWl0dGVkU2Nyb2xsT2Zmc2V0ID0gb2Zm
c2V0OworICAgIG5vdGlmeUNoYW5nZShDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2UpOworfQor
Cit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFibGUoYm9vbCBp
c1Njcm9sbGFibGUpCit7CisgICAgaWYgKG1faXNTY3JvbGxhYmxlID09IGlzU2Nyb2xsYWJsZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Njcm9sbGFibGUgPSBpc1Njcm9sbGFibGU7Cisg
ICAgbm90aWZ5Q2hhbmdlKElzU2Nyb2xsYWJsZUNoYW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3Jh
cGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNo
Q29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQpAQCAtNTQzLDYgKzU2MiwxMiBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5nZXMoKQogICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBGaXhlZFRvVmlld3BvckNoYW5nZSkKICAgICAgICAgbV9sYXll
ci0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGZpeGVkVG9WaWV3cG9ydCgpKTsKIAorICAgIGlmIChtX2No
YW5nZU1hc2sgJiBJc1Njcm9sbGFibGVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXItPnNldElzU2Ny
b2xsYWJsZShpc1Njcm9sbGFibGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29tbWl0
dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5kaWRDb21taXRTY3JvbGxP
ZmZzZXQobV9jb21taXR0ZWRTY3JvbGxPZmZzZXQpOworCiAgICAgbV9jaGFuZ2VNYXNrID0gTm9D
aGFuZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4
IDkzMjlmYmMuLjYwNDQ0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCkBAIC0zNCw2ICszNCw5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIoKTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFRleHR1
cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50KiBjbGllbnQpIHsgbV9sYXllci0+c2V0U2Ny
b2xsQ2xpZW50KGNsaWVudCk7IH0KKyAgICB2b2lkIHNldElEKHVpbnQzMl90IGlkKSB7IG1fbGF5
ZXItPnNldElEKGlkKTsgfQorCiAgICAgLy8gcmVpbXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAg
ICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRD
b250ZW50c05lZWRzRGlzcGxheSgpOwpAQCAtODEsNiArODQsMTAgQEAgcHVibGljOgogCiAgICAg
VGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7
IH0KIAorICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAg
ICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sKTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTY3JvbGxhYmxlOyB9CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwog
I2VuZGlmCkBAIC0xNDMsNyArMTUwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJlcGFpbnRDb3Vu
dENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAogCiAgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hh
bmdlID0gICAgICAoMUwgPDwgMjYpLAotICAgICAgICBBbmltYXRpb25TdGFydGVkID0gICAgICAg
ICAgKDFMIDw8IDI3KQorICAgICAgICBBbmltYXRpb25TdGFydGVkID0gICAgICAgICAgKDFMIDw8
IDI3KSwKKworICAgICAgICBDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2UgPSAgICAgKDFMIDw8
IDI4KSwKKyAgICAgICAgSXNTY3JvbGxhYmxlQ2hhbmdlID0gICAgICAgICAgICAgICgxTCA8PCAy
OSkKICAgICB9OwogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKENoYW5nZU1hc2spOwogCkBAIC0xNjUs
NiArMTc1LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0Owog
ICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBkb3VibGUgbV9h
bmltYXRpb25TdGFydFRpbWU7CisKKyAgICBJbnRTaXplIG1fY29tbWl0dGVkU2Nyb2xsT2Zmc2V0
OworICAgIGJvb2wgbV9pc1Njcm9sbGFibGU7CiB9OwogCiBpbmxpbmUgc3RhdGljIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKiB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNz
TGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCAxMGJlZjI2Li4z
Yjg3NjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgogCiAjaW5jbHVkZSAiUmVnaW9uLmgiCisj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIApAQCAtNjczLDUgKzY3NCw3NCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0
U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAg
bV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CiB9CiAK
K3RlbXBsYXRlPGNsYXNzIEhpdFRlc3RDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogVGV4
dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBIaXRUZXN0
Q29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1fc3RhdGUudmlzaWJsZSB8fCAhbV9z
dGF0ZS5jb250ZW50c1Zpc2libGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgVGV4dHVyZU1h
cHBlckxheWVyKiByZXN1bHQgPSAwOworICAgIGZvciAoaW50IGkgPSBtX2NoaWxkcmVuLnNpemUo
KSAtIDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkpCisgICAgICAgIHJlc3VsdCA9IG1fY2hpbGRy
ZW5baV0tPmhpdFRlc3QocG9pbnQsIGNvbmRpdGlvbik7CisKKyAgICByZXR1cm4gcmVzdWx0ID8g
cmVzdWx0IDogY29uZGl0aW9uKHRoaXMsIHBvaW50KSA/IHRoaXMgOiAwOworfQorCitib29sIFRl
eHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVySGl0VGVzdENvbmRpdGlvbihUZXh0dXJl
TWFwcGVyTGF5ZXIqIGxheWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBz
Y3JvbGxpbmcgbGF5ZXIncyBtX3BhcmVudC0+bV9wYXJlbnQsIHRoZSBwYXJlbnQgb2YgdGhlIHNj
cm9sbGluZyBsYXllcywgaXMgdGhlIG9uZSB0aGF0IGRlZmluZXMgdGhlCisgICAgLy8gcmVjdGFu
Z2xlIHRvIGJlIHVzZWQgZm9yIGhpdCB0ZXN0aW5nLgorICAgIGlmICghbGF5ZXItPmlzU2Nyb2xs
YWJsZSgpIHx8ICFsYXllci0+bV9wYXJlbnQgfHwgIWxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFRleHR1cmVNYXBwZXJMYXllciogcGFyZW50
TGF5ZXIgPSBsYXllci0+bV9wYXJlbnQtPm1fcGFyZW50OworICAgIHJldHVybiBwYXJlbnRMYXll
ci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUmVjdChwYXJlbnRMYXllci0+bV9z
dGF0ZS5jb250ZW50c1JlY3QpLmNvbnRhaW5zKHBvaW50KTsKK30KKworVGV4dHVyZU1hcHBlckxh
eWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0KHBvaW50LCAmVGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKTsKK30KKwor
RmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0KQoreworICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNl
dFk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNm
b3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOworICAgIHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gs
IHplcm9ZKTsKKyAgICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0
KCksIG9mZnNldFgsIG9mZnNldFkpOworICAgIHJldHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHpl
cm9YLCBvZmZzZXRZIC0gemVyb1kpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29t
bWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIEZsb2F0U2l6
ZSBmdWxsT2Zmc2V0ID0gbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0ICsg
b2Zmc2V0OworCisgICAgaW50IGludFdpZHRoID0gcm91bmQoZnVsbE9mZnNldC53aWR0aCgpKTsK
KyAgICBpbnQgaW50SGVpZ2h0ID0gcm91bmQoZnVsbE9mZnNldC5oZWlnaHQoKSk7CisKKyAgICAv
LyBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQgaG9sZHMgdGhlIGZyYWN0
aW9uYWwgcGFydCBvZiB0aGUgdXNlciBzY3JvbGwgb2Zmc2V0IHRoYXQKKyAgICAvLyBoYXMgbm90
IHlldCBiZWVuIHN5bmNlZCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyBiZWNhdXNlIHRoZSB3ZWIgcHJv
Y2VzcyBleHBlY3RzIGFuIEludFNpemUuCisgICAgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZy
YWN0aW9uYWxQYXJ0ID0gRmxvYXRTaXplKGZ1bGxPZmZzZXQud2lkdGgoKSAtIGludFdpZHRoLCBm
dWxsT2Zmc2V0LmhlaWdodCgpIC0gaW50SGVpZ2h0KTsKKworICAgIG1fc2Nyb2xsQ2xpZW50LT5j
b21taXRTY3JvbGxPZmZzZXQobV9pZCwgSW50U2l6ZShpbnRXaWR0aCwgaW50SGVpZ2h0KSk7Cit9
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCkKK3sKKyAgICBpZiAoIW1fc2Nyb2xsQ2xpZW50IHx8IG9mZnNldC5pc1plcm8oKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgRmxvYXRTaXplIHNjcm9sbE9mZnNldCA9IG1hcFNjcm9sbE9m
ZnNldChvZmZzZXQpOworICAgIG1fdXNlclNjcm9sbE9mZnNldCArPSBzY3JvbGxPZmZzZXQ7CisK
KyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQb3NpdGlvbigpKTsK
KyAgICBjb21taXRTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KTsKK30KKwordm9pZCBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZzZXQp
Cit7CisgICAgbV91c2VyU2Nyb2xsT2Zmc2V0ID0gRmxvYXRTaXplKG1fdXNlclNjcm9sbE9mZnNl
dC53aWR0aCgpIC0gb2Zmc2V0LndpZHRoKCksIG1fdXNlclNjcm9sbE9mZnNldC5oZWlnaHQoKSAt
IG9mZnNldC5oZWlnaHQoKSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFk
anVzdGVkUG9zaXRpb24oKSk7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CmluZGV4IDYwMmIyYzMuLjFkM2M2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKQEAgLTM5
LDYgKzM5LDEyIEBAIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1YmxpYyBHcmFwaGljc0xh
eWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHR1cmVN
YXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisKKyAg
ICBjbGFzcyBTY3JvbGxpbmdDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2
b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBv
ZmZzZXQpID0gMDsKKyAgICB9OworCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKCkKICAgICAgICAg
OiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFyZ2V0KDApCkBAIC00NywxMCArNTMs
MjUgQEAgcHVibGljOgogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAgICAsIG1fdGV4dHVy
ZU1hcHBlcigwKQogICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNlKQorICAgICAgICAs
IG1faWQoMCkKKyAgICAgICAgLCBtX3Njcm9sbENsaWVudCgwKQorICAgICAgICAsIG1faXNTY3Jv
bGxhYmxlKGZhbHNlKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlckxheWVy
KCk7CiAKKyAgICB2b2lkIHNldElEKHVpbnQzMl90IGlkKSB7IG1faWQgPSBpZDsgfQorICAgIHVp
bnQzMl90IGlkKCkgeyByZXR1cm4gbV9pZDsgfQorCisgICAgVGV4dHVyZU1hcHBlckxheWVyKiBm
aW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50JiBwb3MpOworCisg
ICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoU2Nyb2xsaW5nQ2xpZW50KiBzY3JvbGxDbGllbnQpIHsg
bV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgdm9pZCBkaWRDb21taXRTY3JvbGxPZmZzZXQo
Y29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlKGJvb2wgaXNTY3JvbGxh
YmxlKSB7IG1faXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOyB9CisgICAgYm9vbCBpc1Njcm9s
bGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZTsgfQorCiAgICAgVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4bWFwOyB9CiAKQEAg
LTEwOCw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNvcnRCeVpPcmRlcihW
ZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSwgaW50IGZpcnN0LCBpbnQgbGFzdCk7
CiAKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7IHJldHVybiBtX2Jh
Y2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9Ci0gICAgRmxvYXRQ
b2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Nj
cm9sbFBvc2l0aW9uRGVsdGE7IH0KKyAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25EZWx0YSAtIG1fdXNl
clNjcm9sbE9mZnNldDsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9WaWV3cG9ydCgpIGNv
bnN0OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FUcmFuc2Zvcm0oKTsKICAgICB2
b2lkIGFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciopOwpAQCAtMTU5LDYgKzE4MCwxMiBAQCBw
cml2YXRlOgogI2VuZGlmCiAgICAgZmxvYXQgbV9jZW50ZXJaOwogCisgICAgdGVtcGxhdGU8Y2xh
c3MgSGl0VGVzdENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBoaXRUZXN0KGNvbnN0IEZs
b2F0UG9pbnQmLCBIaXRUZXN0Q29uZGl0aW9uKTsKKyAgICBzdGF0aWMgYm9vbCBzY3JvbGxhYmxl
TGF5ZXJIaXRUZXN0Q29uZGl0aW9uKFRleHR1cmVNYXBwZXJMYXllciosIGNvbnN0IEZsb2F0UG9p
bnQmKTsKKworICAgIEZsb2F0U2l6ZSBtYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7
CisgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJik7CisKICAgICBz
dHJ1Y3QgU3RhdGUgewogICAgICAgICBGbG9hdFBvaW50IHBvczsKICAgICAgICAgRmxvYXRQb2lu
dDNEIGFuY2hvclBvaW50OwpAQCAtMjExLDYgKzIzOCwxMSBAQCBwcml2YXRlOgogICAgIEdyYXBo
aWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNpemUgbV9zY3JvbGxQ
b3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7CisgICAgdWludDMyX3Qg
bV9pZDsKKyAgICBTY3JvbGxpbmdDbGllbnQqIG1fc2Nyb2xsQ2xpZW50OworICAgIGJvb2wgbV9p
c1Njcm9sbGFibGU7CisgICAgRmxvYXRTaXplIG1fdXNlclNjcm9sbE9mZnNldDsKKyAgICBGbG9h
dFNpemUgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0OwogfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcAppbmRleCA0YzQzYWE3Li5hNmQ5ODBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjIsNiArMTIzLDcgQEAgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ckNsaWVudCogY2xpZW50KQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1hZ2VQdHIoMCkKICAg
ICAsIG1fY2FudmFzUGxhdGZvcm1MYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydGVkVGlt
ZXIodGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9uU3RhcnRlZFRpbWVy
RmlyZWQpCisgICAgLCBtX3Njcm9sbGFibGVBcmVhKDApCiB7CiAgICAgc3RhdGljIENvb3JkaW5h
dGVkTGF5ZXJJRCBuZXh0TGF5ZXJJRCA9IDE7CiAgICAgbV9pZCA9IG5leHRMYXllcklEKys7CkBA
IC00NjUsNiArNDY3LDI0IEBAIENvb3JkaW5hdGVkTGF5ZXJJRCBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXI6OmlkKCkgY29uc3QKICAgICByZXR1cm4gbV9pZDsKIH0KIAordm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxh
YmxlQXJlYSkKK3sKKyAgICBib29sIG9sZFNjcm9sbGFibGUgPSBpc1Njcm9sbGFibGUoKTsKKyAg
ICBtX3Njcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgaWYgKG9sZFNjcm9sbGFi
bGUgIT0gaXNTY3JvbGxhYmxlKCkpCisgICAgICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30K
Kwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbW1pdFNjcm9sbE9mZnNldChjb25z
dCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKCFpc1Njcm9sbGFibGUoKSB8fCBvZmZzZXQu
aXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPm5vdGlm
eVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigp
ICsgb2Zmc2V0KTsKKyAgICBtX2xheWVySW5mby5jb21taXR0ZWRTY3JvbGxPZmZzZXQgKz0gb2Zm
c2V0OworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OnNldEZpeGVkVG9WaWV3cG9ydChib29sIGlzRml4ZWQpCiB7CiAgICAgaWYg
KG1fZml4ZWRUb1ZpZXdwb3J0ID09IGlzRml4ZWQpCkBAIC01NzIsNiArNTkyLDcgQEAgdm9pZCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAgICBtX2xheWVySW5m
by5hbmNob3JQb2ludCA9IG1fYWRqdXN0ZWRBbmNob3JQb2ludDsKICAgICBtX2xheWVySW5mby5w
b3MgPSBtX2FkanVzdGVkUG9zaXRpb247CiAgICAgbV9sYXllckluZm8uc2l6ZSA9IG1fYWRqdXN0
ZWRTaXplOworICAgIG1fbGF5ZXJJbmZvLmlzU2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJsZSgpOwog
CiAgICAgbV9sYXllckluZm8uc2hvd0RlYnVnQm9yZGVycyA9IGlzU2hvd2luZ0RlYnVnQm9yZGVy
KCk7CiAgICAgaWYgKG1fbGF5ZXJJbmZvLnNob3dEZWJ1Z0JvcmRlcnMpCkBAIC01NzksNiArNjAw
LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNMYXllclN0YXRlKCkKICAg
ICBtX2xheWVySW5mby5zaG93UmVwYWludENvdW50ZXIgPSBpc1Nob3dpbmdSZXBhaW50Q291bnRl
cigpOwogCiAgICAgbV9jb29yZGluYXRvci0+c3luY0xheWVyU3RhdGUobV9pZCwgbV9sYXllcklu
Zm8pOworICAgIG1fbGF5ZXJJbmZvLmNvbW1pdHRlZFNjcm9sbE9mZnNldCA9IEludFNpemUoKTsK
IH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldERlYnVnQm9yZGVyKGNvbnN0
IENvbG9yJiBjb2xvciwgZmxvYXQgd2lkdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggZTVhYTQ3YS4uYjdkMzM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM7CitjbGFzcyBT
Y3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50IHsK
IHB1YmxpYzoKQEAgLTEzNCw2ICsxMzUsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRSb290
TGF5ZXIoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVBcmVh
Kik7CisgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAhIW1fc2Nyb2xsYWJs
ZUFyZWE7IH0KKyAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJik7CisK
ICAgICBDb29yZGluYXRlZExheWVySUQgaWQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0Rml4ZWRU
b1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCk7CkBAIC0yNTgsNiArMjYzLDggQEAgcHJpdmF0ZToKICAg
ICBUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVy
OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBkb3VibGUg
bV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAgU2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xs
YWJsZUFyZWE7CiB9OwogCiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
U2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggODYyNDUxMy4uNTFiZGY0
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZS5jcHAKQEAgLTMxOSw2ICszMTksOSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQog
ICAgIGxheWVyLT5zZXREZWJ1Z0JvcmRlcihsYXllckluZm8uZGVidWdCb3JkZXJDb2xvciwgbGF5
ZXJJbmZvLmRlYnVnQm9yZGVyV2lkdGgpOwogICAgIGxheWVyLT5zZXRTaG93UmVwYWludENvdW50
ZXIobGF5ZXJJbmZvLnNob3dSZXBhaW50Q291bnRlcik7CiAKKyAgICB0b0dyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0SXNTY3JvbGxhYmxlKGxheWVySW5mby5pc1Njcm9sbGFi
bGUpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5kaWRDb21taXRT
Y3JvbGxPZmZzZXQobGF5ZXJJbmZvLmNvbW1pdHRlZFNjcm9sbE9mZnNldCk7CisKICAgICBpZiAo
bGF5ZXJJbmZvLmZpeGVkVG9WaWV3cG9ydCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQs
IGxheWVyKTsKICAgICBlbHNlCkBAIC0zNDgsNiArMzUxLDggQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBP
d25QdHI8R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAv
KiBmYWN0b3J5ICovLCB0aGlzKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5l
d0xheWVyLmdldCgpKS0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsKKyAgICB0b0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SUQoaWQpOworICAgIHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRTY3JvbGxDbGll
bnQodGhpcyk7CiAgICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5yZWxlYXNlKCkpOwogfQog
CkBAIC02MTAsNiArNjE1LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJn
ZUdMUmVzb3VyY2VzKCkKICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcywgdGhpcykpOwogfQogCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT5jb21t
aXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJ
bnRTaXplJiBvZmZzZXQpCit7CisgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCwgdGhpcywgbGF5
ZXJJRCwgb2Zmc2V0KSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJn
ZUJhY2tpbmdTdG9yZXMoKQogewogICAgIGlmIChtX2NsaWVudCkKQEAgLTY3Myw2ICs2ODgsMTEg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKIH0KIAorVGV4
dHVyZU1hcHBlckxheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRTY3JvbGxhYmxl
Q29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBy
b290TGF5ZXIoKSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+ZmluZFNjcm9s
bGFibGVDb250ZW50c0xheWVyQXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IDljOTIx
YTcuLmIxNTk1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJGUFNDb3VudGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVy
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00OSw3ICs1MCw2IEBAIGNsYXNzIENvb3JkaW5hdGVk
QmFja2luZ1N0b3JlOwogY2xhc3MgQ29vcmRpbmF0ZWRMYXllckluZm87CiBjbGFzcyBDdXN0b21G
aWx0ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Ci1jbGFzcyBUZXh0
dXJlTWFwcGVyTGF5ZXI7CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCB7
CiBwdWJsaWM6CkBAIC02MCw5ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1
cmdlQmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1l
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydCgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNp
emUmIG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1
YmxpYyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+
LCBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIFRleHR1cmVNYXBwZXJMYXllcjo6
U2Nyb2xsaW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVGlsZVVwZGF0ZSB7CiAgICAg
ICAgIEludFJlY3Qgc291cmNlUmVjdDsKQEAgLTkyLDYgKzkzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIGRldGFjaCgpOwogICAgIHZvaWQgYXBwZW5kVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQo
KT4mKTsKIAorICAgIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogZmluZFNjcm9sbGFibGVD
b250ZW50c0xheWVyQXQoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworCisgICAgdmlydHVh
bCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXpl
JiBvZmZzZXQpOworCiAgICAgLy8gVGhlIHBhaW50aW5nIHRocmVhZCBtdXN0IGxvY2sgdGhlIG1h
aW4gdGhyZWFkIHRvIHVzZSBiZWxvdyB0d28gbWV0aG9kcywgYmVjYXVzZSB0d28gbWV0aG9kcyBh
Y2Nlc3MgbWVtYmVycyB0aGF0IHRoZSBtYWluIHRocmVhZCBtYW5hZ2VzLiBTZWUgbV9jbGllbnQu
CiAgICAgLy8gQ3VycmVudGx5LCBRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUoKSBsb2Nr
cyB0aGUgbWFpbiB0aHJlYWQgYmVmb3JlIGNhbGxpbmcgYm90aCBtZXRob2RzLgogICAgIHZvaWQg
cHVyZ2VHTFJlc291cmNlcygpOwpAQCAtMTY5LDYgKzE3NCw4IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVCYWNraW5nU3RvcmVJZk5lZWRlZChHcmFwaGljc0xheWVyKik7CiAgICAgdm9pZCBy
ZXNldEJhY2tpbmdTdG9yZVNpemVUb0xheWVyU2l6ZShHcmFwaGljc0xheWVyKik7CiAKKyAgICB2
b2lkIGRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IElu
dFNpemUmIG9mZnNldCk7CisKICAgICAvLyBSZW5kZXIgcXVldWUgY2FuIGJlIGFjY2Vzc2VkIG9u
eSBmcm9tIG1haW4gdGhyZWFkIG9yIHVwZGF0ZVBhaW50Tm9kZSBjYWxsIHN0YWNrIQogICAgIFZl
Y3RvcjxGdW5jdGlvbjx2b2lkKCk+ID4gbV9yZW5kZXJRdWV1ZTsKICAgICBNdXRleCBtX3JlbmRl
clF1ZXVlTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRMYXllckluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVy
SW5mby5oCmluZGV4IDBmYTJhMTIuLjYyMmY5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZExheWVySW5m
by5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZExheWVySW5mby5oCkBAIC02MCw2ICs2MCw3IEBAIHN0cnVjdCBDb29y
ZGluYXRlZExheWVySW5mbyB7CiAgICAgQ29sb3Igc29saWRDb2xvcjsKICAgICBDb2xvciBkZWJ1
Z0JvcmRlckNvbG9yOwogICAgIGZsb2F0IGRlYnVnQm9yZGVyV2lkdGg7CisgICAgSW50U2l6ZSBj
b21taXR0ZWRTY3JvbGxPZmZzZXQ7CiAKICAgICB1bmlvbiB7CiAgICAgICAgIHN0cnVjdCB7CkBA
IC03Myw2ICs3NCw3IEBAIHN0cnVjdCBDb29yZGluYXRlZExheWVySW5mbyB7CiAgICAgICAgICAg
ICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CiAgICAgICAgICAgICBib29sIHNob3dEZWJ1Z0Jv
cmRlcnMgOiAxOwogICAgICAgICAgICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOworICAg
ICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGUgOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNp
Z25lZCBmbGFnczsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCA2ZjJiMWY2Li40MmZh
NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtMTcsNiArMTcsNyBAQCBzZXQoV2ViS2l0Ml9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2VzcyIKICAgICAi
JHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSSIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9j
ZXNzL0FQSS9DIgorICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVk
R3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvY3BwIgogICAgICIk
e1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgpAQCAtNzUsNiArNzYsOCBAQCBzZXQo
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9j
YWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFn
ZS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgorICAgICIk
e1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzIgogICAgICIk
e1dFQkNPUkVfRElSfS9wbGF0Zm9ybSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5p
bWF0aW9uIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcyIKQEAgLTM0MSw2
ICszNDQsOCBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4
dENoZWNrZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcAogCisgICAg
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAK
KwogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lz
aW9uTGlzdGVuZXIuY3BwCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRp
YWwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWQ1ZGUwMi4uNDhmNTMzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ3IEBACisyMDEzLTAzLTA0ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tp
YS5jb20+CisKKyAgICAgICAgQWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29y
ZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMDMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEEgc2Nyb2xsIG9mZnNldCBpcyBhcHBsaWVkIHRvIGluZGl2aWR1YWwgbGF5ZXJz
IG9uIFVJIHByb2Nlc3MgYW5kIHRoZQorICAgICAgICB3ZWIgcHJvY2VzcyBpcyBub3RpZmllZCBh
c3N5bmNocm9ub3VzbHkuCisgICAgICAgIFRoZSBuZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBt
YXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgQWRkaW5nIGFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQgdG8gV2ViUHJlZmVyZW5jZXNTdG9yZS4KKworICAg
ICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorCisgICAgICAgIE5ldyBBUEkgV0tDb29y
ZGluYXRlZFNjZW5lIGlzIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBvbiBVSSBzaWRlLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2Vu
ZS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29v
cmRpbmF0ZWRTY2VuZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaDoKKworICAgICAgICBBIG5ldyBtZXNzYWdlIGlz
IHVzZWQgdG8gc2VuZCBzY3JvbGwgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
UHJveHkuaDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9y
ZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjcm9sbExh
eWVyQnkpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QubWVzc2FnZXMuaW46CisKIDIwMTMtMDMtMDQgIENocmlzIEZsZWl6YWNoICA8Y2Zs
ZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBTdXBwb3J0IFdlYlNwZWVjaCAtIFNwZWVjaCBT
eW50aGVzaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmlu
ZGV4IDU5NTNjYjQuLjExOWNiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZl
cmVuY2VzU3RvcmUuaApAQCAtMTQyLDYgKzE0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
IG1hY3JvKFBhZ2VWaXNpYmlsaXR5QmFzZWRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkLCBwYWdl
VmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKICAgICBtYWNybyhTbWFydEluc2VydERlbGV0ZUVuYWJsZWQsIHNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogICAgIG1hY3JvKFNob3dzVVJMc0luVG9v
bFRpcHNFbmFibGVkLCBzaG93c1VSTHNJblRvb2xUaXBzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFs
c2UpIFwKKyAgICBtYWNybyhBY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxF
bmFibGVkLCBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9V
QkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0
ZWRTY2VuZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE4OTUwYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lLmgiCisKKyNpbmNsdWRlICJX
S0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlckxheWVy
Lmg+CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2Nl
bmVGaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUgc2NlbmUs
IFdLUG9pbnQgcG9pbnQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChzY2VuZSktPmZpbmRT
Y3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdlYkNvcmU6OkZsb2F0UG9pbnQocG9pbnQueCwgcG9p
bnQueSkpKTsKK30KKworV0tfRVhQT1JUIHVpbnQzMl90IFdLQ29vcmRpbmF0ZWRTY2VuZUdldExh
eWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHRvSW1w
bChsYXllciktPmlkKCk7Cit9CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29vcmRpbmF0ZWRTY2VuZVNj
cm9sbEJ5KFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxheWVyLCBXS1NpemUgb2Zmc2V0KQorewor
ICAgIHRvSW1wbChsYXllciktPnNjcm9sbEJ5KFdlYkNvcmU6OkZsb2F0U2l6ZShvZmZzZXQud2lk
dGgsIG9mZnNldC5oZWlnaHQpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
U2NlbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGU4OGRjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29vcmRp
bmF0ZWRTY2VuZV9oCisjZGVmaW5lIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCisKKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsK
KyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDR1NjZW5lKiBX
S0Nvb3JkaW5hdGVkU2NlbmU7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVDR0xheWVyKiBXS0Nvb3Jk
aW5hdGVkU2NlbmVMYXllcjsKKworV0tfRVhQT1JUIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIFdL
Q29vcmRpbmF0ZWRTY2VuZUZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdLQ29vcmRpbmF0
ZWRTY2VuZSwgV0tQb2ludCk7CitXS19FWFBPUlQgdWludDMyX3QgV0tDb29yZGluYXRlZFNjZW5l
R2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkU2NlbmVMYXllcik7CitXS19FWFBPUlQgdm9pZCBXS0Nv
b3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciwgV0tTaXplKTsK
KworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKworI2VuZGlm
IC8vIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKaW5kZXggYzVmN2U4Ny4uYThkOWYwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApA
QCAtMjM3LDUgKzIzNywxMCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9yLCBtX3Nj
ZW5lLmdldCgpLCBjb2xvcikpOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Q29tbWl0U2Nyb2xsT2Zmc2V0
KGxheWVySUQsIG9mZnNldCksIG1fZHJhd2luZ0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7
Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAppbmRleCA5NDZiMzk5
Li5jODI2ZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdFByb3h5LmgKQEAgLTk4LDYgKzk4LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW5kZXJOZXh0RnJhbWUoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5n
U3RvcmVzKCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0
KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNoVXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4m
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOWYwZDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5h
dGVkU2NlbmVBUElDYXN0LmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tDb29yZGluYXRlZFNjZW5l
QVBJQ2FzdF9oCisjZGVmaW5lIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3RfaAorCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Nvb3JkaW5hdGVkU2NlbmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU7CitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5
ZXI7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworaW5saW5lIFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZSogdG9JbXBsKFdLQ29vcmRpbmF0ZWRTY2VuZSBzY2VuZSkKK3sKKyAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUqPihzY2VuZSk7Cit9CisKK2lubGluZSBXS0Nvb3JkaW5hdGVkU2NlbmUgdG9BUEkoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKiBzY2VuZSkKK3sKKyAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxXS0Nvb3JkaW5hdGVkU2NlbmU+KHNjZW5lKTsKK30KKworaW5saW5lIFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllciogdG9JbXBsKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxh
eWVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJMYXllcio+KGxheWVyKTsKK30KKworaW5saW5lIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIHRv
QVBJKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5lTGF5ZXI+KGxheWVyKTsKK30KKworI2Vu
ZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggN2FjZWYz
MC4uNWQ5YWIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC03Miw5ICs3Miw5IEBAIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCgpCiAjZW5kaWYKICAgICBwdXJn
ZUJhY2tpbmdTdG9yZXMoKTsKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJh
dG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAg
ICAgICAgKCppdCktPnNldENvb3JkaW5hdG9yKDApOworICAgIExheWVyTWFwOjppdGVyYXRvciBl
bmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChMYXllck1hcDo6aXRlcmF0
b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICBpdC0+dmFsdWUtPnNldENvb3JkaW5hdG9yKDApOwogfQogCiBDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3ZWJQYWdlKQpAQCAt
NDcwLDcgKzQ3MCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0
Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllcikKIHsKLSAgICBtX3Jl
Z2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVt
b3ZlKGxheWVyLT5pZCgpKTsKICAgICBtX2xheWVyc1RvRGVsZXRlLmFwcGVuZChsYXllci0+aWQo
KSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CkBAIC02NDEsNyArNjQxLDcgQEAgUGFz
c093blB0cjxHcmFwaGljc0xheWVyPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdy
YXBoaWNzTGF5ZXIoR3JhcGhpY3MKIHsKICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGllbnQpOwogICAgIGxheWVyLT5z
ZXRDb29yZGluYXRvcih0aGlzKTsKLSAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsK
KyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgpLCBsYXllcik7CiAgICAgbV9s
YXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIGxheWVyLT5zZXROZWVkc1Zp
c2libGVSZWN0QWRqdXN0bWVudCgpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwpAQCAtNzM4
LDkgKzczOCw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uCiAgICAgaWYgKGNvbnRlbnRzUmVj
dERpZENoYW5nZSkgewogICAgICAgICBtX3Zpc2libGVDb250ZW50c1JlY3QgPSByZWN0OwogCi0g
ICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJh
dG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICAgICAgZm9yIChIYXNoU2V0
PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVn
aXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICgq
aXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgICAgICBMYXllck1hcDo6
aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgICAgICBmb3IgKExh
eWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0LT52YWx1ZS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFk
anVzdG1lbnQoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzg5LDkgKzc4OSw5IEBAIHZvaWQg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRl
bXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5nVG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKIAot
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9y
IGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVk
TGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnB1cmdlQmFj
a2luZ1N0b3JlcygpOworICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRM
YXllcnMuZW5kKCk7CisgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVy
ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnB1
cmdlQmFja2luZ1N0b3JlcygpOwogCiAgICAgbV9pbWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAgICAg
bV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CkBAIC04NTQsNSArODU0LDE0IEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGNvbG9yKQogICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHk6OlNldEJhY2tncm91bmRDb2xvcihjb2xvcikpOwogfQogCit2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVy
SUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKK3sKKyAgICBMYXllck1hcDo6aXRl
cmF0b3IgaSA9IG1fcmVnaXN0ZXJlZExheWVycy5maW5kKGxheWVySUQpOworICAgIGlmIChpID09
IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaS0+dmFs
dWUtPmNvbW1pdFNjcm9sbE9mZnNldChvZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGI2MDUy
ODkuLmU1NmM1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC0xMjAsNiArMTIwLDggQEAgcHVibGljOgogCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29y
ZGluYXRlZFN1cmZhY2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5h
dGVkU3VyZmFjZTo6RmxhZ3MpOwogCisgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKQEAg
LTE4MSw3ICsxODMsOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwYWdlIG92ZXJsYXkgbGF5ZXIu
IFdpbGwgYmUgbnVsbCBpZiB0aGVyZSdzIG5vIHBhZ2Ugb3ZlcmxheS4KICAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcj4gbV9wYWdlT3ZlcmxheUxheWVyOwogCi0gICAgSGFzaFNldDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXllcnM7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7CisgICAgTGF5ZXJNYXAgbV9yZWdp
c3RlcmVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+IG1f
bGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4g
bV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
PiA+IEltYWdlQmFja2luZ01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCA2Njcx
YjMyLi5lNzMyMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yNyw1ICsyNyw2
IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBMZWdhY3lSZWNlaXZlciB7
CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIEFuaW1hdGlvbkZyYW1l
UmVhZHkoKQogI2VuZGlmCisgICAgQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQs
IFdlYkNvcmU6OkludFNpemUgb2Zmc2V0KQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNjA4ODNjOC4uNjFlNzgzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMy
NCw2ICsyMzI0LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0RWRpdGFibGVMaW5rQmVo
YXZpb3Ioc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3I+KHN0b3JlLmdl
dFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjplZGl0YWJsZUxpbmtCZWhhdmlv
cktleSgpKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4
dChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNob3dzVG9vbFRp
cE92ZXJUcnVuY2F0ZWRUZXh0S2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93
U2Nyb2xsRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3Vw
cG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVy
YXRlZERyYXdpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0Ojpz
dXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldENhbnZh
c1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nS2V5KCkpICYmIExheWVyVHJl
ZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191654</attachid>
            <date>2013-03-05 22:26:18 -0800</date>
            <delta_ts>2013-03-06 03:09:26 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>55299</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBjNThlZTJkODNkZmM4OTAwNDkxZjc5YzQ0OTk2YTA5ZTlmNmZmZWMxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVHVlLCA1IE1hciAyMDEzIDIyOjIyOjE5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZp
ZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVk
IGFzc3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgpTb3VyY2UvV2ViQ29yZToK
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnICMxMTExNDAuCgpTY3JvbGxpbmcgY29vcmRpbmF0
b3IgaXMgdXNlZCB0byBwcm92aWRlIGEgU2Nyb2xsYWJsZUFyZWEgdG8gQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLgoKKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CihXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJE
aWRDaGFuZ2UpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgoqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmg6CihTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgoKR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGUg
J2RpZCBjb21taXQnIG1lc3NhZ2VzIGFuZCB0byBwYXNzCnRoZW0gdG8gaXRzIFRleHR1cmVNYXBw
ZXJMYXllciBvbiB0aGUgYXBwcm9wcmlhdGVkIHRpbWUuCgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgooV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFi
bGUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xp
ZW50KToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJRCk6CihHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6aXNTY3JvbGxhYmxlKToKClRleHR1cmVNYXBwZXJMYXllciBpcyByZXNwb25zaWJsZSBm
b3IgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKc2VuZGluZyB0
aGUgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLiBJdCBpcyBhbHNvIGFibGUgdG8gaGl0
dGVzdCBsYXllcnMgYW5kIGlkZW50aWZ5CnRoZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCgoq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKToKKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmRp
ZENvbW1pdFNjcm9sbE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oOgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9sbGluZ0NsaWVudCk6CihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6aWQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciByZWNl
aXZlcyB0aGUgY29tbWl0IG1lc3NhZ2VzIGFuZCB1cGRhdGVzIGl0cyBTY3JvbGxhYmxlQXJlYS4K
CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFNjcm9sbGFibGVBcmVhKToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZXNldExheWVyU3RhdGUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKFdlYkNvcmUpOgooQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aXNT
Y3JvbGxhYmxlKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSByZWNlaXZlcyB0aGUgY29tbWl0
IG1lc3NhZ2VzIGZyb20gVGV4dHVyZU1hcHBlckxheWVyIGFuZApkaXNwYXRjaGVzIHRoZW0gb24g
dGhlIG1haW4gdGhyZWFkLiBJdCBhbHNvIGhhcyBhIG5ldyBtZXRob2QgdGhhdCBpcyB1c2VkIHRv
IGZpbmQKdGhlIHRvcG1vc3Qgc2Nyb2xsYWJsZSBsYXllciBhdCBhIGdpdmVuIHBvaW50LgoKKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcDoKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0
ZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZz
ZXQpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1p
dFNjcm9sbE9mZnNldCk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRT
Y3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CihXZWJDb3JlKToKKENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgoKTmV3
IGZpZWxkcyBoYXZlIGJlZW4gYWRkZWQgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUu
CgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaDoKKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlKToKClNvdXJjZS9XZWJL
aXQyOgoKKiBDTWFrZUxpc3RzLnR4dDoKCkVuY29kaW5nIGFuZCBkZWNvZGluZyB0aGUgbmV3IG1l
bWJlcnMgb2YgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUuCgoqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CihDb3Jl
SVBDOjo6OmVuY29kZSk6CihDb3JlSVBDOjo6OmRlY29kZSk6CgpBZGRpbmcgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCB0byBXZWJQcmVmZXJlbmNlc1N0b3Jl
LgoKKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgoKTmV3IEFQ
SSBXS0Nvb3JkaW5hdGVkU2NlbmUgaXMgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUu
CgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUu
Y3BwOgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuaDoKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVB
UElDYXN0Lmg6CgpBIG5ldyBtZXNzYWdlIGlzIHVzZWQgdG8gc2VuZCBzY3JvbGwgY29tbWl0IG1l
c3NhZ2VzIHRvIHdlYiBwcm9jZXNzLgoKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViS2l0KToKKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgoo
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgoKQSBuZXcgbWVzc2FnZSBpcyB1c2VkIHRv
IHNlbmQgc2Nyb2xsIGNvbW1pdCBtZXNzYWdlcyB0byB3ZWIgcHJvY2Vzcy4KCiogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cDoKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6
CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6
CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVz
KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZzZXQp
OgooV2ViS2l0KToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CiogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Lm1lc3NhZ2VzLmluOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA5NSArKysrKysrKysrKysrKysrKysrKwogLi4uL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAgIDE4ICsrKysKIC4uLi9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgIHwgICAgMiArCiAu
Li4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCB8ICAgMjUg
KysrKysrCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgg
ICB8ICAgMTUgKysrLQogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
ICAgICAgICAgfCAgIDc0ICsrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCAgfCAgIDM0ICsrKysrKy0KIC4uLi9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwICAgICAgIHwgICAyNiArKysrKysKIC4uLi90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggIHwgICAgNyArKwog
Li4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgICAgICAgfCAgIDIz
ICsrKysrCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5o
ICB8ICAgMTEgKystCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
dGF0ZS5oICB8ICAgIDUgKysKIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0ICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgNSArKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDUzICsrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcCAgICAgICAgICB8ICAgIDYgKysKIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggICAgICAgIHwgICAgMSArCiAuLi4vQVBJL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcCB8ICAgNDkgKysrKysrKysr
KwogLi4uL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oICAgfCAg
IDQ4ICsrKysrKysrKysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgICAg
ICAgICAgICAgIHwgICAgNSArKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmgg
ICAgICAgICAgICAgICAgfCAgICAyICsKIC4uLi9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0Lmgg
ICAgICAgICAgICAgICAgICAgIHwgICA2MCArKysrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMzEgKysrKy0tLQogLi4uL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmggfCAgICA1ICstCiAu
Li4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluICAgICAgICAgICB8ICAgIDEg
KwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwICAgICAgfCAg
ICAxICsKIDI1IGZpbGVzIGNoYW5nZWQsIDU4NiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3Jk
aW5hdGVkU2NlbmUuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaAoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAzZmEwMzhjLi4xYmZlNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIw
MTMtMDMtMDUgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAg
ICAgICBBY2NlbGVyYXRlZCBvdmVyZmxvdyBzY3JvbGxpbmcgZm9yIENvb3JkaW5hdGVkIEdyYXBo
aWNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEw
MzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQSBz
Y3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZpZHVhbCBsYXllcnMgb24gVUkgcHJvY2Vz
cyBhbmQgdGhlCisgICAgICAgIHdlYiBwcm9jZXNzIGlzIG5vdGlmaWVkIGFzc3luY2hyb25vdXNs
eS4KKyAgICAgICAgVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2VkIHRv
IHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgVGVzdHMgd2lsbCBi
ZSBhZGRlZCBvbiBidWcgIzExMTE0MC4KKworICAgICAgICBTY3JvbGxpbmcgY29vcmRpbmF0b3Ig
aXMgdXNlZCB0byBwcm92aWRlIGEgU2Nyb2xsYWJsZUFyZWEgdG8gQ29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyLgorCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxl
QXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVz
dHJveVNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRl
ZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oOgorICAg
ICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzKToKKworICAgICAg
ICBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlciBpcyByZXNwb25zaWJsZSBmb3IgcmVjZWl2aW5n
IHRoZSAnZGlkIGNvbW1pdCcgbWVzc2FnZXMgYW5kIHRvIHBhc3MKKyAgICAgICAgdGhlbSB0byBp
dHMgVGV4dHVyZU1hcHBlckxheWVyIG9uIHRoZSBhcHByb3ByaWF0ZWQgdGltZS4KKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRl
eHR1cmVNYXBwZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9s
bGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNv
bW1pdExheWVyQ2hhbmdlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJRCk6CisgICAgICAgIChHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6aXNTY3JvbGxhYmxlKToKKworICAgICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIgaXMgcmVz
cG9uc2libGUgZm9yIGFwcGx5aW5nIHRoZSByZXF1ZXN0ZWQgc2Nyb2xsIG9mZnNldCBhbmQgZm9y
CisgICAgICAgIHNlbmRpbmcgdGhlIGNvbW1pdCBtZXNzYWdlcyB0byB3ZWIgcHJvY2Vzcy4gSXQg
aXMgYWxzbyBhYmxlIHRvIGhpdHRlc3QgbGF5ZXJzIGFuZCBpZGVudGlmeQorICAgICAgICB0aGUg
b25lcyB0aGF0IGFyZSBzY3JvbGxhYmxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyTGF5ZXI6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllckhpdFRlc3RDb25kaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpmaW5kU2Nyb2xsYWJsZUNv
bnRlbnRzTGF5ZXJBdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Om1h
cFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmNv
bW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNjcm9sbEJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6ZGlkQ29t
bWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAg
ICAoU2Nyb2xsaW5nQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6VGV4dHVyZU1hcHBlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllcjo6c2V0SUQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjppZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldFNjcm9sbENsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElzU2Nyb2xsYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmFkanVzdGVkUG9zaXRpb24pOgor
CisgICAgICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciByZWNlaXZlcyB0aGUgY29tbWl0IG1l
c3NhZ2VzIGFuZCB1cGRhdGVzIGl0cyBTY3JvbGxhYmxlQXJlYS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpzZXRTY3JvbGxhYmxlQXJlYSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzZXRMYXllclN0
YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OmlzU2Nyb2xsYWJsZSk6CisKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lIHJlY2VpdmVzIHRoZSBjb21taXQgbWVzc2FnZXMgZnJvbSBUZXh0dXJlTWFwcGVyTGF5
ZXIgYW5kCisgICAgICAgIGRpc3BhdGNoZXMgdGhlbSBvbiB0aGUgbWFpbiB0aHJlYWQuIEl0IGFs
c28gaGFzIGEgbmV3IG1ldGhvZCB0aGF0IGlzIHVzZWQgdG8gZmluZAorICAgICAgICB0aGUgdG9w
bW9zdCBzY3JvbGxhYmxlIGxheWVyIGF0IGEgZ2l2ZW4gcG9pbnQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5
ZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNy
ZWF0ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1pdFNjcm9sbE9mZnNldCk6
CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRTY3JvbGxh
YmxlQ29udGVudHNMYXllckF0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CisgICAgICAgIChD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgorCisgICAgICAgIE5ldyBmaWVsZHMgaGF2ZSBiZWVu
IGFkZGVkIHRvIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUpOgorCiAyMDEzLTAz
LTA1ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbU2hhZG93
XSBJbXBsZW1lbnRzIGV2ZW50IHJlLXRhcmdldGluZyBmb3IgVG91Y2ggRXZlbnRzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRv
ckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCmluZGV4IGExYmYzYmQuLjlkOGVjNDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTQ3LDYgKzQ3LDI0IEBAIHZvaWQgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzZXRMYXllcklzRml4ZWRUb0NvbnRh
aW5lckxheWVyKEdyCiAgICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobGF5ZXIpLT5zZXRG
aXhlZFRvVmlld3BvcnQoZW5hYmxlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNv
b3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQoreworICAgIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciogbGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihzY3JvbGxMYXllckZvclNj
cm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKSk7CisgICAgaWYgKCFsYXllcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgbGF5ZXItPnNldFNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKTsK
K30KKwordm9pZCBTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxE
ZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQorewor
ICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcihzY3JvbGxMYXllckZvclNjcm9sbGFibGVBcmVhKHNjcm9sbGFibGVBcmVhKSk7Cisg
ICAgaWYgKCFsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbGF5ZXItPnNldFNjcm9sbGFi
bGVBcmVhKDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0
ZWRHcmFwaGljcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAppbmRleCA4
N2MyYzcyLi45MGNjNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKQEAgLTM3LDYg
KzM3LDggQEAgcHVibGljOgogICAgIGV4cGxpY2l0IFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcyhQYWdlKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJJc0ZpeGVk
VG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiwgYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoU2Nyb2xsYWJsZUFyZWEqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSop
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKaW5kZXggODAxM2VjNC4uZjMyNjIzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCkBAIC01Nyw2ICs1Nyw3IEBAIEdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xh
eWVyQ2xpZW50KiBjbGllCiAgICAgLCBtX2RlYnVnQm9yZGVyV2lkdGgoMCkKICAgICAsIG1fY29u
dGVudHNMYXllcigwKQogICAgICwgbV9hbmltYXRpb25TdGFydFRpbWUoMCkKKyAgICAsIG1faXNT
Y3JvbGxhYmxlKGZhbHNlKQogewogfQogCkBAIC00MDMsNiArNDA0LDI0IEBAIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OnNldFNob3dSZXBhaW50Q291bnRlcihib29sIHNob3cpCiAg
ICAgbm90aWZ5Q2hhbmdlKERlYnVnVmlzdWFsc0NoYW5nZSk7CiB9CiAKK3ZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBv
ZmZzZXQpCit7CisgICAgaWYgKG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQgPSBvZmZzZXQ7CisgICAgbm90aWZ5Q2hhbmdlKENv
bW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZSk7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldElzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKK3sKKyAgICBpZiAo
bV9pc1Njcm9sbGFibGUgPT0gaXNTY3JvbGxhYmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2lzU2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJsZTsKKyAgICBub3RpZnlDaGFuZ2UoSXNTY3JvbGxh
YmxlQ2hhbmdlKTsKK30KKwogLyogXHJlaW1wIChHcmFwaGljc0xheWVyLmgpCiAqLwogdm9pZCBH
cmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xh
eWVyT25seSgpCkBAIC01NDMsNiArNTYyLDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OmNvbW1pdExheWVyQ2hhbmdlcygpCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIEZpeGVk
VG9WaWV3cG9yQ2hhbmdlKQogICAgICAgICBtX2xheWVyLT5zZXRGaXhlZFRvVmlld3BvcnQoZml4
ZWRUb1ZpZXdwb3J0KCkpOwogCisgICAgaWYgKG1fY2hhbmdlTWFzayAmIElzU2Nyb2xsYWJsZUNo
YW5nZSkKKyAgICAgICAgbV9sYXllci0+c2V0SXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSgpKTsK
KworICAgIGlmIChtX2NoYW5nZU1hc2sgJiBDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2UpCisg
ICAgICAgIG1fbGF5ZXItPmRpZENvbW1pdFNjcm9sbE9mZnNldChtX2NvbW1pdHRlZFNjcm9sbE9m
ZnNldCk7CisKICAgICBtX2NoYW5nZU1hc2sgPSBOb0NoYW5nZXM7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKaW5kZXggOTMyOWZiYy4uNjA0NDRlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgKQEAgLTM0LDYgKzM0LDkgQEAgcHVi
bGljOgogICAgIGV4cGxpY2l0IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5
ZXJDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcigpOwog
CisgICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoVGV4dHVyZU1hcHBlckxheWVyOjpTY3JvbGxpbmdD
bGllbnQqIGNsaWVudCkgeyBtX2xheWVyLT5zZXRTY3JvbGxDbGllbnQoY2xpZW50KTsgfQorICAg
IHZvaWQgc2V0SUQodWludDMyX3QgaWQpIHsgbV9sYXllci0+c2V0SUQoaWQpOyB9CisKICAgICAv
LyByZWltcHMgZnJvbSBHcmFwaGljc0xheWVyLmgKICAgICB2aXJ0dWFsIHZvaWQgc2V0TmVlZHNE
aXNwbGF5KCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCk7CkBA
IC04MSw2ICs4NCwxMCBAQCBwdWJsaWM6CiAKICAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQogCisgICAgdm9pZCBkaWRDb21taXRT
Y3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlKGJv
b2wpOworICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Njcm9sbGFi
bGU7IH0KKwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICB2aXJ0dWFsIGJvb2wgc2V0Rmls
dGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKQEAgLTE0Myw3ICsxNTAsMTAg
QEAgcHJpdmF0ZToKICAgICAgICAgUmVwYWludENvdW50Q2hhbmdlID0gICAgICAgICgxTCA8PCAy
NSksCiAKICAgICAgICAgRml4ZWRUb1ZpZXdwb3JDaGFuZ2UgPSAgICAgICgxTCA8PCAyNiksCi0g
ICAgICAgIEFuaW1hdGlvblN0YXJ0ZWQgPSAgICAgICAgICAoMUwgPDwgMjcpCisgICAgICAgIEFu
aW1hdGlvblN0YXJ0ZWQgPSAgICAgICAgICAoMUwgPDwgMjcpLAorCisgICAgICAgIENvbW1pdHRl
ZFNjcm9sbE9mZnNldENoYW5nZSA9ICAgICAoMUwgPDwgMjgpLAorICAgICAgICBJc1Njcm9sbGFi
bGVDaGFuZ2UgPSAgICAgICAgICAgICAgKDFMIDw8IDI5KQogICAgIH07CiAgICAgdm9pZCBub3Rp
ZnlDaGFuZ2UoQ2hhbmdlTWFzayk7CiAKQEAgLTE2NSw2ICsxNzUsOSBAQCBwcml2YXRlOgogICAg
IEZsb2F0UmVjdCBtX25lZWRzRGlzcGxheVJlY3Q7CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlv
bnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2FuaW1hdGlvblN0YXJ0VGltZTsKKworICAg
IEludFNpemUgbV9jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CisgICAgYm9vbCBtX2lzU2Nyb2xsYWJs
ZTsKIH07CiAKIGlubGluZSBzdGF0aWMgR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIHRvR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyTGF5ZXIuY3BwCmluZGV4IDEwYmVmMjYuLjNhMDA3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTGF5ZXIuY3BwCkBAIC0yMCw3ICsyMCw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAKKyNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNp
bmNsdWRlICJSZWdpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCkBAIC02NzMsNSArNjc1LDc3IEBAIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbkRlbHRhSWZOZWVkZWQoY29uc3QgRmxv
YXRTaXplJiBkZWx0YSkKICAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0
ZWRQb3NpdGlvbigpKTsKIH0KIAordGVtcGxhdGU8Y2xhc3MgSGl0VGVzdENvbmRpdGlvbj4gVGV4
dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmhpdFRlc3QoY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIEhpdFRlc3RDb25kaXRpb24gY29uZGl0aW9uKQoreworICAgIGlmICghbV9z
dGF0ZS52aXNpYmxlIHx8ICFtX3N0YXRlLmNvbnRlbnRzVmlzaWJsZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHJlc3VsdCA9IDA7CisgICAgZm9yIChpbnQg
aSA9IG1fY2hpbGRyZW4uc2l6ZSgpIC0gMTsgIXJlc3VsdCAmJiBpID49IDA7IC0taSkKKyAgICAg
ICAgcmVzdWx0ID0gbV9jaGlsZHJlbltpXS0+aGl0VGVzdChwb2ludCwgY29uZGl0aW9uKTsKKwor
ICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gY29u
ZGl0aW9uKHRoaXMsIHBvaW50KSA/IHRoaXMgOiAwOworfQorCitib29sIFRleHR1cmVNYXBwZXJM
YXllcjo6c2Nyb2xsYWJsZUxheWVySGl0VGVzdENvbmRpdGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIq
IGxheWVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKK3sKKyAgICAvLyBzY3JvbGxpbmcgbGF5
ZXIncyBtX3BhcmVudC0+bV9wYXJlbnQsIHRoZSBwYXJlbnQgb2YgdGhlIHNjcm9sbGluZyBsYXll
cywgaXMgdGhlIG9uZSB0aGF0IGRlZmluZXMgdGhlCisgICAgLy8gcmVjdGFuZ2xlIHRvIGJlIHVz
ZWQgZm9yIGhpdCB0ZXN0aW5nLgorICAgIGlmICghbGF5ZXItPmlzU2Nyb2xsYWJsZSgpIHx8ICFs
YXllci0+bV9wYXJlbnQgfHwgIWxheWVyLT5tX3BhcmVudC0+bV9wYXJlbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIFRleHR1cmVNYXBwZXJMYXllciogcGFyZW50TGF5ZXIgPSBsYXll
ci0+bV9wYXJlbnQtPm1fcGFyZW50OworICAgIHJldHVybiBwYXJlbnRMYXllci0+bV9jdXJyZW50
VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUXVhZChwYXJlbnRMYXllci0+bV9zdGF0ZS5jb250ZW50
c1JlY3QpLmNvbnRhaW5zUG9pbnQocG9pbnQpOworfQorCitUZXh0dXJlTWFwcGVyTGF5ZXIqIFRl
eHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxv
YXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0dXJuIGhpdFRlc3QocG9pbnQsICZUZXh0dXJlTWFw
cGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllckhpdFRlc3RDb25kaXRpb24pOworfQorCitGbG9hdFNp
emUgVGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBv
ZmZzZXQpCit7CisgICAgZG91YmxlIHplcm9YLCB6ZXJvWSwgb2Zmc2V0WCwgb2Zmc2V0WTsKKyAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBtX2N1cnJlbnRUcmFuc2Zvcm0uY29t
YmluZWQoKS5pbnZlcnNlKCk7CisgICAgdHJhbnNmb3JtLm1hcCgwLCAwLCB6ZXJvWCwgemVyb1kp
OworICAgIHRyYW5zZm9ybS5tYXAob2Zmc2V0LndpZHRoKCksIG9mZnNldC5oZWlnaHQoKSwgb2Zm
c2V0WCwgb2Zmc2V0WSk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZShvZmZzZXRYIC0gemVyb1gsIG9m
ZnNldFkgLSB6ZXJvWSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3Jv
bGxPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpCit7CisgICAgRmxvYXRTaXplIGZ1bGxP
ZmZzZXQgPSBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQgKyBvZmZzZXQ7
CisKKyAgICBpbnQgaW50V2lkdGggPSByb3VuZChmdWxsT2Zmc2V0LndpZHRoKCkpOworICAgIGlu
dCBpbnRIZWlnaHQgPSByb3VuZChmdWxsT2Zmc2V0LmhlaWdodCgpKTsKKworICAgIC8vIG1fYWNj
dW11bGF0ZWRTY3JvbGxPZmZzZXRGcmFjdGlvbmFsUGFydCBob2xkcyB0aGUgZnJhY3Rpb25hbCBw
YXJ0IG9mIHRoZSB1c2VyIHNjcm9sbCBvZmZzZXQgdGhhdAorICAgIC8vIGhhcyBub3QgeWV0IGJl
ZW4gc3luY2VkIHdpdGggdGhlIHdlYiBwcm9jZXNzIGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGV4
cGVjdHMgYW4gSW50U2l6ZS4KKyAgICBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25h
bFBhcnQgPSBGbG9hdFNpemUoZnVsbE9mZnNldC53aWR0aCgpIC0gaW50V2lkdGgsIGZ1bGxPZmZz
ZXQuaGVpZ2h0KCkgLSBpbnRIZWlnaHQpOworCisgICAgbV9zY3JvbGxDbGllbnQtPmNvbW1pdFNj
cm9sbE9mZnNldChtX2lkLCBJbnRTaXplKGludFdpZHRoLCBpbnRIZWlnaHQpKTsKK30KKwordm9p
ZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQor
eworICAgIGlmICghaXNTY3JvbGxhYmxlKCkgfHwgIW1fc2Nyb2xsQ2xpZW50IHx8IG9mZnNldC5p
c1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRTaXplIHNjcm9sbE9mZnNldCA9
IG1hcFNjcm9sbE9mZnNldChvZmZzZXQpOworICAgIG1fdXNlclNjcm9sbE9mZnNldCArPSBzY3Jv
bGxPZmZzZXQ7CisKKyAgICBtX2N1cnJlbnRUcmFuc2Zvcm0uc2V0UG9zaXRpb24oYWRqdXN0ZWRQ
b3NpdGlvbigpKTsKKyAgICBjb21taXRTY3JvbGxPZmZzZXQoc2Nyb2xsT2Zmc2V0KTsKK30KKwor
dm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRT
aXplJiBvZmZzZXQpCit7CisgICAgbV91c2VyU2Nyb2xsT2Zmc2V0ID0gRmxvYXRTaXplKG1fdXNl
clNjcm9sbE9mZnNldC53aWR0aCgpIC0gb2Zmc2V0LndpZHRoKCksIG1fdXNlclNjcm9sbE9mZnNl
dC5oZWlnaHQoKSAtIG9mZnNldC5oZWlnaHQoKSk7CisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNl
dFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7Cit9CisKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJM
YXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oCmluZGV4IDYwMmIyYzMuLjFkM2M2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmgKQEAgLTM5LDYgKzM5LDEyIEBAIGNsYXNzIFRleHR1cmVNYXBwZXJMYXllciA6IHB1Ymxp
YyBHcmFwaGljc0xheWVyQW5pbWF0aW9uOjpDbGllbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFRleHR1cmVNYXBwZXJMYXllcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CisKKyAgICBjbGFzcyBTY3JvbGxpbmdDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25z
dCBJbnRTaXplJiBvZmZzZXQpID0gMDsKKyAgICB9OworCiAgICAgVGV4dHVyZU1hcHBlckxheWVy
KCkKICAgICAgICAgOiBtX3BhcmVudCgwKQogICAgICAgICAsIG1fZWZmZWN0VGFyZ2V0KDApCkBA
IC00NywxMCArNTMsMjUgQEAgcHVibGljOgogICAgICAgICAsIG1fY2VudGVyWigwKQogICAgICAg
ICAsIG1fdGV4dHVyZU1hcHBlcigwKQogICAgICAgICAsIG1fZml4ZWRUb1ZpZXdwb3J0KGZhbHNl
KQorICAgICAgICAsIG1faWQoMCkKKyAgICAgICAgLCBtX3Njcm9sbENsaWVudCgwKQorICAgICAg
ICAsIG1faXNTY3JvbGxhYmxlKGZhbHNlKQogICAgIHsgfQogCiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlckxheWVyKCk7CiAKKyAgICB2b2lkIHNldElEKHVpbnQzMl90IGlkKSB7IG1faWQgPSBp
ZDsgfQorICAgIHVpbnQzMl90IGlkKCkgeyByZXR1cm4gbV9pZDsgfQorCisgICAgVGV4dHVyZU1h
cHBlckxheWVyKiBmaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBGbG9hdFBvaW50
JiBwb3MpOworCisgICAgdm9pZCBzZXRTY3JvbGxDbGllbnQoU2Nyb2xsaW5nQ2xpZW50KiBzY3Jv
bGxDbGllbnQpIHsgbV9zY3JvbGxDbGllbnQgPSBzY3JvbGxDbGllbnQ7IH0KKyAgICB2b2lkIHNj
cm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworCisgICAgdm9pZCBkaWRDb21taXRT
Y3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYpOworICAgIHZvaWQgc2V0SXNTY3JvbGxhYmxlKGJv
b2wgaXNTY3JvbGxhYmxlKSB7IG1faXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlOyB9CisgICAg
Ym9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX2lzU2Nyb2xsYWJsZTsgfQorCiAg
ICAgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGV4
dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXhtYXApIHsgbV90ZXh0dXJlTWFwcGVyID0gdGV4
bWFwOyB9CiAKQEAgLTEwOCw3ICsxMjksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHNv
cnRCeVpPcmRlcihWZWN0b3I8VGV4dHVyZU1hcHBlckxheWVyKiA+JiBhcnJheSwgaW50IGZpcnN0
LCBpbnQgbGFzdCk7CiAKICAgICBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSB7
IHJldHVybiBtX2JhY2tpbmdTdG9yZSA/IG1fYmFja2luZ1N0b3JlLT50ZXh0dXJlKCkgOiAwOyB9
Ci0gICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0
ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGE7IH0KKyAgICBGbG9hdFBvaW50IGFkanVzdGVk
UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnBvcyArIG1fc2Nyb2xsUG9zaXRpb25E
ZWx0YSAtIG1fdXNlclNjcm9sbE9mZnNldDsgfQogICAgIGJvb2wgaXNBbmNlc3RvckZpeGVkVG9W
aWV3cG9ydCgpIGNvbnN0OwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FUcmFuc2Zv
cm0oKTsKICAgICB2b2lkIGFkZENoaWxkKFRleHR1cmVNYXBwZXJMYXllciopOwpAQCAtMTU5LDYg
KzE4MCwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgZmxvYXQgbV9jZW50ZXJaOwogCisgICAg
dGVtcGxhdGU8Y2xhc3MgSGl0VGVzdENvbmRpdGlvbj4gVGV4dHVyZU1hcHBlckxheWVyKiBoaXRU
ZXN0KGNvbnN0IEZsb2F0UG9pbnQmLCBIaXRUZXN0Q29uZGl0aW9uKTsKKyAgICBzdGF0aWMgYm9v
bCBzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKFRleHR1cmVNYXBwZXJMYXllciosIGNv
bnN0IEZsb2F0UG9pbnQmKTsKKworICAgIEZsb2F0U2l6ZSBtYXBTY3JvbGxPZmZzZXQoY29uc3Qg
RmxvYXRTaXplJik7CisgICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQoY29uc3QgRmxvYXRTaXpl
Jik7CisKICAgICBzdHJ1Y3QgU3RhdGUgewogICAgICAgICBGbG9hdFBvaW50IHBvczsKICAgICAg
ICAgRmxvYXRQb2ludDNEIGFuY2hvclBvaW50OwpAQCAtMjExLDYgKzIzOCwxMSBAQCBwcml2YXRl
OgogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBGbG9hdFNp
emUgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQ7Cisg
ICAgdWludDMyX3QgbV9pZDsKKyAgICBTY3JvbGxpbmdDbGllbnQqIG1fc2Nyb2xsQ2xpZW50Owor
ICAgIGJvb2wgbV9pc1Njcm9sbGFibGU7CisgICAgRmxvYXRTaXplIG1fdXNlclNjcm9sbE9mZnNl
dDsKKyAgICBGbG9hdFNpemUgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmNwcAppbmRleCA2ZTkwMDM2Li41NDM3YWM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBo
aWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEu
aCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgPHd0
Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjIsNiArMTIz
LDcgQEAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogICAgICwgbV9jb21wb3NpdGVkTmF0aXZlSW1h
Z2VQdHIoMCkKICAgICAsIG1fY2FudmFzUGxhdGZvcm1MYXllcigwKQogICAgICwgbV9hbmltYXRp
b25TdGFydGVkVGltZXIodGhpcywgJkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6YW5pbWF0aW9u
U3RhcnRlZFRpbWVyRmlyZWQpCisgICAgLCBtX3Njcm9sbGFibGVBcmVhKDApCiB7CiAgICAgc3Rh
dGljIENvb3JkaW5hdGVkTGF5ZXJJRCBuZXh0TGF5ZXJJRCA9IDE7CiAgICAgbV9pZCA9IG5leHRM
YXllcklEKys7CkBAIC01MTQsNiArNTE2LDI5IEBAIENvb3JkaW5hdGVkTGF5ZXJJRCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmlkKCkgY29uc3QKICAgICByZXR1cm4gbV9pZDsKIH0KIAordm9p
ZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBib29sIG9sZFNjcm9sbGFibGUgPSBpc1Njcm9s
bGFibGUoKTsKKyAgICBtX3Njcm9sbGFibGVBcmVhID0gc2Nyb2xsYWJsZUFyZWE7CisgICAgaWYg
KG9sZFNjcm9sbGFibGUgPT0gaXNTY3JvbGxhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fbGF5ZXJTdGF0ZS5pc1Njcm9sbGFibGUgPSBpc1Njcm9sbGFibGUoKTsKKyAgICBtX2xheWVy
U3RhdGUuaXNTY3JvbGxhYmxlQ2hhbmdlZCA9IHRydWU7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0
ZSgpOworfQorCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y29tbWl0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBpZiAoIWlzU2Nyb2xsYWJsZSgpIHx8
IG9mZnNldC5pc1plcm8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxhYmxlQXJl
YS0+bm90aWZ5U2Nyb2xsUG9zaXRpb25DaGFuZ2VkKG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBv
c2l0aW9uKCkgKyBvZmZzZXQpOworICAgIG1fbGF5ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZz
ZXQgKz0gb2Zmc2V0OworICAgIG1fbGF5ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFu
Z2VkID0gdHJ1ZTsKKyAgICBkaWRDaGFuZ2VMYXllclN0YXRlKCk7Cit9CisKIHZvaWQgQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyOjpzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBpc0ZpeGVkKQogewog
ICAgIGlmIChtX2ZpeGVkVG9WaWV3cG9ydCA9PSBpc0ZpeGVkKQpAQCAtNzM3LDYgKzc2Miw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXNldExheWVyU3RhdGUoKQogICAgIG1f
bGF5ZXJTdGF0ZS50aWxlc1RvQ3JlYXRlLmNsZWFyKCk7CiAgICAgbV9sYXllclN0YXRlLnRpbGVz
VG9SZW1vdmUuY2xlYXIoKTsKICAgICBtX2xheWVyU3RhdGUudGlsZXNUb1VwZGF0ZS5jbGVhcigp
OworICAgIG1fbGF5ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiB9
CiAKIGJvb2wgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppbWFnZUJhY2tpbmdWaXNpYmxlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aAppbmRleCA3OTBmZTk2Li5hMDcwOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC00NCw2ICs0NCw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBHcmFw
aGljc0xheWVyQW5pbWF0aW9uczsKK2NsYXNzIFNjcm9sbGFibGVBcmVhOwogCiBjbGFzcyBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQgewogcHVibGljOgpAQCAtMTE1LDYgKzExNiwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFJvb3RMYXllcihib29sKTsKIAorICAgIHZvaWQgc2V0
U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKKyAgICBib29sIGlzU2Nyb2xsYWJsZSgp
IGNvbnN0IHsgcmV0dXJuICEhbV9zY3JvbGxhYmxlQXJlYTsgfQorICAgIHZvaWQgY29tbWl0U2Ny
b2xsT2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKwogICAgIENvb3JkaW5hdGVkTGF5ZXJJRCBpZCgp
IGNvbnN0OwogCiAgICAgdm9pZCBzZXRGaXhlZFRvVmlld3BvcnQoYm9vbCBpc0ZpeGVkKTsKQEAg
LTI0MCw2ICsyNDUsOCBAQCBwcml2YXRlOgogICAgIFRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlv
bnMgbV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFydFRpbWU7CisK
KyAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKIH07CiAKIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllciogdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcAppbmRleCA5ZjA4MDUzLi44YmVkYjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1NjZW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzYwLDYgKzM2MCwx
MiBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0ZShDb29yZGlu
YXRlZExheWVySUQgaWQsIGNvbnN0IENvb3JkaQogICAgICAgICBsYXllci0+c2V0U2hvd1JlcGFp
bnRDb3VudGVyKGxheWVyU3RhdGUuc2hvd1JlcGFpbnRDb3VudGVyKTsKICAgICB9CiAKKyAgICBp
ZiAobGF5ZXJTdGF0ZS5pc1Njcm9sbGFibGVDaGFuZ2VkKQorICAgICAgICB0b0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+c2V0SXNTY3JvbGxhYmxlKGxheWVyU3RhdGUuaXNTY3Jv
bGxhYmxlKTsKKworICAgIGlmIChsYXllclN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5n
ZWQpCisgICAgICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobGF5ZXIpLT5kaWRDb21t
aXRTY3JvbGxPZmZzZXQobGF5ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXQpOworCiAgICAg
aWYgKGxheWVyU3RhdGUuZml4ZWRUb1ZpZXdwb3J0KQogICAgICAgICBtX2ZpeGVkTGF5ZXJzLmFk
ZChpZCwgbGF5ZXIpOwogICAgIGVsc2UKQEAgLTM5NSw2ICs0MDEsOCBAQCB2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIoQ29vcmRpbmF0ZWRMYXllcklEIGlkKQogewog
ICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBuZXdMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0
ZSgwIC8qIGZhY3RvcnkgKi8sIHRoaXMpOwogICAgIHRvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRIYXNPd25CYWNraW5nU3RvcmUoZmFsc2UpOworICAgIHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRJRChpZCk7Cisg
ICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihuZXdMYXllci5nZXQoKSktPnNldFNjcm9s
bENsaWVudCh0aGlzKTsKICAgICBtX2xheWVycy5hZGQoaWQsIG5ld0xheWVyLnJlbGVhc2UoKSk7
CiB9CiAKQEAgLTY4NCw2ICs2OTIsMTYgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnB1cmdlR0xSZXNvdXJjZXMoKQogICAgIGRpc3BhdGNoT25NYWluVGhyZWFkKGJpbmQoJkNvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cHVyZ2VCYWNraW5nU3RvcmVzLCB0aGlzKSk7CiB9CiAKK3Zv
aWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCh1
aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgbV9jbGllbnQt
PmNvbW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpOworfQorCit2b2lkIENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNv
bnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoQ29tbWl0U2Nyb2xsT2Zmc2V0LCB0aGlz
LCBsYXllcklELCBvZmZzZXQpKTsKK30KKwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OnB1cmdlQmFja2luZ1N0b3JlcygpCiB7CiAgICAgaWYgKG1fY2xpZW50KQpAQCAtNzUxLDYgKzc2
OSwxMSBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogfQog
CitUZXh0dXJlTWFwcGVyTGF5ZXIqIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZmluZFNjcm9s
bGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgcmV0
dXJuIHJvb3RMYXllcigpID8gdG9UZXh0dXJlTWFwcGVyTGF5ZXIocm9vdExheWVyKCkpLT5maW5k
U2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChwb2ludCkgOiAwOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgKaW5kZXgg
ZWQ1ZGJlMC4uNjhmYzYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
TGF5ZXIuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbmFsLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQ4LDcgKzQ5LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU7CiBjbGFzcyBDdXN0b21GaWx0
ZXJQcm9ncmFtOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87Ci1jbGFzcyBUZXh0dXJl
TWFwcGVyTGF5ZXI7CiAKIGNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCB7CiBw
dWJsaWM6CkBAIC01OSw5ICs1OSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHB1cmdl
QmFja2luZ1N0b3JlcygpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaWV3cG9ydCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUm
IG9mZnNldCkgPSAwOwogfTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZT4sIHB1Ymxp
YyBHcmFwaGljc0xheWVyQ2xpZW50IHsKK2NsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBw
dWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCwgcHVibGljIFRleHR1cmVNYXBwZXJMYXllcjo6U2Ny
b2xsaW5nQ2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmUoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+Q29v
cmRpbmF0ZWRHcmFwaGljc1NjZW5lKCk7CkBAIC03MSw2ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkZXRhY2goKTsKICAgICB2b2lkIGFwcGVuZFVwZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lk
KCk+Jik7CiAKKyAgICBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGZpbmRTY3JvbGxhYmxl
Q29udGVudHNMYXllckF0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKworICAgIHZpcnR1
YWwgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6
ZSYgb2Zmc2V0KTsKKwogICAgIC8vIFRoZSBwYWludGluZyB0aHJlYWQgbXVzdCBsb2NrIHRoZSBt
YWluIHRocmVhZCB0byB1c2UgYmVsb3cgdHdvIG1ldGhvZHMsIGJlY2F1c2UgdHdvIG1ldGhvZHMg
YWNjZXNzIG1lbWJlcnMgdGhhdCB0aGUgbWFpbiB0aHJlYWQgbWFuYWdlcy4gU2VlIG1fY2xpZW50
LgogICAgIC8vIEN1cnJlbnRseSwgUVF1aWNrV2ViUGFnZTo6dXBkYXRlUGFpbnROb2RlKCkgbG9j
a3MgdGhlIG1haW4gdGhyZWFkIGJlZm9yZSBjYWxsaW5nIGJvdGggbWV0aG9kcy4KICAgICB2b2lk
IHB1cmdlR0xSZXNvdXJjZXMoKTsKQEAgLTE1Nyw2ICsxNjIsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgcmVtb3ZlQmFja2luZ1N0b3JlSWZOZWVkZWQoR3JhcGhpY3NMYXllciopOwogICAgIHZvaWQg
cmVzZXRCYWNraW5nU3RvcmVTaXplVG9MYXllclNpemUoR3JhcGhpY3NMYXllciopOwogCisgICAg
dm9pZCBkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJ
bnRTaXplJiBvZmZzZXQpOworCiAgICAgLy8gUmVuZGVyIHF1ZXVlIGNhbiBiZSBhY2Nlc3NlZCBv
bnkgZnJvbSBtYWluIHRocmVhZCBvciB1cGRhdGVQYWludE5vZGUgY2FsbCBzdGFjayEKICAgICBW
ZWN0b3I8RnVuY3Rpb248dm9pZCgpPiA+IG1fcmVuZGVyUXVldWU7CiAgICAgTXV0ZXggbV9yZW5k
ZXJRdWV1ZU11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTdGF0ZS5oCmluZGV4IDI2ODY2MDUuLjY1ZTQ1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRl
ZEdyYXBoaWNzU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKQEAgLTkwLDYgKzkw
LDggQEAgc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICAgICAgICAg
IGJvb2wgcmVwYWludENvdW50Q2hhbmdlZCA6IDE7CiAgICAgICAgICAgICBib29sIGNhbnZhc0No
YW5nZWQ6IDE7CiAgICAgICAgICAgICBib29sIGNhbnZhc1Nob3VsZFN3YXBCdWZmZXJzOiAxOwor
ICAgICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGVDaGFuZ2VkOiAxOworICAgICAgICAgICAgYm9v
bCBjb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2VkOiAxOwogICAgICAgICB9OwogICAgICAgICB1
bnNpZ25lZCBjaGFuZ2VNYXNrOwogICAgIH07CkBAIC0xMDUsNiArMTA3LDcgQEAgc3RydWN0IENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICAgICAgICAgIGJvb2wgZml4ZWRUb1Zp
ZXdwb3J0IDogMTsKICAgICAgICAgICAgIGJvb2wgc2hvd0RlYnVnQm9yZGVycyA6IDE7CiAgICAg
ICAgICAgICBib29sIHNob3dSZXBhaW50Q291bnRlciA6IDE7CisgICAgICAgICAgICBib29sIGlz
U2Nyb2xsYWJsZTogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgZmxhZ3M7CiAgICAg
fTsKQEAgLTE1OSw2ICsxNjIsOCBAQCBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUgewogICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIGNhbnZhc1Rva2VuOwogICAgIHVpbnQzMl90
IGNhbnZhc0Zyb250QnVmZmVyOwogI2VuZGlmCisKKyAgICBJbnRTaXplIGNvbW1pdHRlZFNjcm9s
bE9mZnNldDsKIH07CiAKIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAppbmRleCA2ZjJiMWY2Li40MmZhNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApA
QCAtMTcsNiArMTcsNyBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
V0VCS0lUMl9ESVJ9L1VJUHJvY2VzcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQ
SSIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DIgorICAgICIke1dFQktJVDJf
RElSfS9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9E
SVJ9L1VJUHJvY2Vzcy9BUEkvY3BwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQXV0
aGVudGljYXRpb24iCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzIgpAQCAtNzUsNiArNzYsOCBAQCBzZXQoV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xvYWRlci9jYWNoZSIKICAgICAiJHtXRUJDT1JFX0RJUn0v
cGFnZSIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9hbmltYXRpb24iCisgICAgIiR7V0VCQ09S
RV9ESVJ9L3BhZ2Uvc2Nyb2xsaW5nIgorICAgICIke1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybSIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vYW5pbWF0aW9uIgogICAgICIke1dFQkNPUkVfRElS
fS9wbGF0Zm9ybS9ncmFwaGljcyIKQEAgLTM0MSw2ICszNDQsOCBAQCBzZXQoV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVGV4dENoZWNrZXIuY3BwCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLVmlicmF0aW9uLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdy
YXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKKwogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcAogICAgIFVJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL1dlYkNyZWRlbnRpYWwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDRkZGJh
MS4uNjUxNGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEzLTAzLTA1ICBMdWl6
IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgQWNjZWxlcmF0
ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDMyMworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEEgc2Nyb2xsIG9mZnNldCBp
cyBhcHBsaWVkIHRvIGluZGl2aWR1YWwgbGF5ZXJzIG9uIFVJIHByb2Nlc3MgYW5kIHRoZQorICAg
ICAgICB3ZWIgcHJvY2VzcyBpcyBub3RpZmllZCBhc3N5bmNocm9ub3VzbHkuCisgICAgICAgIFRo
ZSBuZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBtYXkgYmUgdXNlZCB0byBzY3JvbGwgbGF5ZXJz
IGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKKyAgICAg
ICAgRW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBuZXcgbWVtYmVycyBvZiBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZS4KKworICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChDb3JlSVBD
Ojo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisKKyAgICAgICAgQWRk
aW5nIGFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQgdG8gV2Vi
UHJlZmVyZW5jZXNTdG9yZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3Jl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CisKKyAgICAgICAgTmV3IEFQSSBX
S0Nvb3JkaW5hdGVkU2NlbmUgaXMgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRl
ZFNjZW5lLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oOgorCisgICAgICAgIEEgbmV3IG1lc3Nh
Z2UgaXMgdXNlZCB0byBzZW5kIHNjcm9sbCBjb21taXQgbWVzc2FnZXMgdG8gd2ViIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eS5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgor
CisgICAgICAgIEEgbmV3IG1lc3NhZ2UgaXMgdXNlZCB0byBzZW5kIHNjcm9sbCBjb21taXQgbWVz
c2FnZXMgdG8gd2ViIHByb2Nlc3MuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhv
c3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVH
cmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAoQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW46CisKIDIwMTMtMDMtMDUgIEdlb2Zm
cmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBFYWNoIHdlYiBwcm9jZXNz
IHRydW5jYXRlcyB0aGUgZGlzayBjYWNoZSB0byB6ZXJvIG9uIGxhdW5jaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKaW5kZXggODBj
NzI1OS4uNWFhYWQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuY3BwCkBAIC04OTYsNiArODk2LDkgQEAgdm9pZCBBcmd1bWVudENv
ZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciYgZW5jb2QKICAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5jYW52YXNGcm9udEJ1ZmZlcjsKICAg
ICB9CiAjZW5kaWYKKworICAgIGlmIChzdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2Vk
KQorICAgICAgICBlbmNvZGVyIDw8IHN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldDsKIH0KIAog
Ym9vbCBBcmd1bWVudENvZGVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUm
IHN0YXRlKQpAQCAtOTgxLDYgKzk4NCw5IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZT46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kCiAgICAg
fQogI2VuZGlmCiAKKyAgICBpZiAoc3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZCAm
JiAhZGVjb2Rlci5kZWNvZGUoc3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDliOTA1MGUuLmRhY2NhZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTQzLDYgKzE0
Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFBhZ2VWaXNpYmlsaXR5QmFzZWRQ
cm9jZXNzU3VwcHJlc3Npb25FbmFibGVkLCBwYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHBy
ZXNzaW9uRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQsIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1
ZSkgXAogICAgIG1hY3JvKFNob3dzVVJMc0luVG9vbFRpcHNFbmFibGVkLCBzaG93c1VSTHNJblRv
b2xUaXBzRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKKyAgICBtYWNybyhBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwK
IAogI2RlZmluZSBGT1JfRUFDSF9XRUJLSVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOWE4OTUwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuY3BwCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEg
Q29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tDb29y
ZGluYXRlZFNjZW5lLmgiCisKKyNpbmNsdWRlICJXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0Lmgi
CisKKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlckxheWVyLmg+CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5h
dGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVGaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5
ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUgc2NlbmUsIFdLUG9pbnQgcG9pbnQpCit7CisgICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChzY2VuZSktPmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KFdl
YkNvcmU6OkZsb2F0UG9pbnQocG9pbnQueCwgcG9pbnQueSkpKTsKK30KKworV0tfRVhQT1JUIHVp
bnQzMl90IFdLQ29vcmRpbmF0ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5
ZXIgbGF5ZXIpCit7CisgICAgcmV0dXJuIHRvSW1wbChsYXllciktPmlkKCk7Cit9CisKK1dLX0VY
UE9SVCB2b2lkIFdLQ29vcmRpbmF0ZWRTY2VuZVNjcm9sbEJ5KFdLQ29vcmRpbmF0ZWRTY2VuZUxh
eWVyIGxheWVyLCBXS1NpemUgb2Zmc2V0KQoreworICAgIHRvSW1wbChsYXllciktPnNjcm9sbEJ5
KFdlYkNvcmU6OkZsb2F0U2l6ZShvZmZzZXQud2lkdGgsIG9mZnNldC5oZWlnaHQpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0Nvb3JkaW5hdGVkU2NlbmUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNGU4OGRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5o
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCisjZGVmaW5lIFdLQ29v
cmRpbmF0ZWRTY2VuZV9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KKworI2lm
ZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvLyBfX2NwbHVzcGx1cworCit0
eXBlZGVmIHN0cnVjdCBPcGFxdWVDR1NjZW5lKiBXS0Nvb3JkaW5hdGVkU2NlbmU7Cit0eXBlZGVm
IHN0cnVjdCBPcGFxdWVDR0xheWVyKiBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllcjsKKworV0tfRVhQ
T1JUIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIFdLQ29vcmRpbmF0ZWRTY2VuZUZpbmRTY3JvbGxh
YmxlQ29udGVudHNMYXllckF0KFdLQ29vcmRpbmF0ZWRTY2VuZSwgV0tQb2ludCk7CitXS19FWFBP
UlQgdWludDMyX3QgV0tDb29yZGluYXRlZFNjZW5lR2V0TGF5ZXJJRChXS0Nvb3JkaW5hdGVkU2Nl
bmVMYXllcik7CitXS19FWFBPUlQgdm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nv
b3JkaW5hdGVkU2NlbmVMYXllciwgV0tTaXplKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYgLy8gX19jcGx1c3BsdXMKKworI2VuZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAK
aW5kZXggMDE4YmQxNy4uZjdlMzFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcApAQCAtMTY4LDUgKzE2OCwxMCBAQCB2b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkNvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6c2V0QmFja2dyb3VuZENvbG9yLCBtX3NjZW5lLmdldCgpLCBjb2xvcikpOwogfQogCit2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQodWlu
dDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fZHJhd2luZ0Fy
ZWFQcm94eS0+cGFnZSgpLT5wcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Q29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCksIG1fZHJhd2lu
Z0FyZWFQcm94eS0+cGFnZSgpLT5wYWdlSUQoKSk7Cit9CisKIH0KICNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0UHJveHkuaAppbmRleCBkMTY4YmNkLi40NDg2YTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgKQEAgLTg3LDYgKzg3LDgg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJOZXh0RnJhbWUoKSBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCkgT1ZFUlJJREU7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGRpc3BhdGNo
VXBkYXRlKGNvbnN0IEZ1bmN0aW9uPHZvaWQoKT4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJ
Q2FzdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tD
b29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmZjOWYwZDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0LmgKQEAgLTAsMCAr
MSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdF9oCisjZGVmaW5lIFdLQ29vcmRp
bmF0ZWRTY2VuZUFQSUNhc3RfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Nvb3JkaW5hdGVkU2Nl
bmUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNz
U2NlbmU7CitjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXI7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworaW5saW5lIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogdG9JbXBsKFdL
Q29vcmRpbmF0ZWRTY2VuZSBzY2VuZSkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqPihzY2VuZSk7Cit9CisKK2lubGluZSBX
S0Nvb3JkaW5hdGVkU2NlbmUgdG9BUEkoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KiBzY2VuZSkKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS0Nvb3JkaW5hdGVkU2Nl
bmU+KHNjZW5lKTsKK30KKworaW5saW5lIFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciogdG9J
bXBsKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxheWVyKQoreworICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcio+KGxheWVyKTsKK30KKworaW5s
aW5lIFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIHRvQVBJKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJM
YXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRl
ZFNjZW5lTGF5ZXI+KGxheWVyKTsKK30KKworI2VuZGlmIC8vIFdLQ29vcmRpbmF0ZWRTY2VuZUFQ
SUNhc3RfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNDVmZDM5NS4uY2NmOGVlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBA
IC03Miw5ICs3Miw5IEBAIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6fkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdCgpCiAjZW5kaWYKICAgICBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAotICAgIEhh
c2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9
IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJz
LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPnNldENvb3JkaW5hdG9y
KDApOworICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5k
KCk7CisgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnNldENvb3JkaW5h
dG9yKDApOwogfQogCiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdChXZWJQYWdlKiB3ZWJQYWdlKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQogCiB2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKiBsYXllcikKIHsKLSAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVy
KTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMucmVtb3ZlKGxheWVyLT5pZCgpKTsKICAgICBtX2xh
eWVyc1RvRGVsZXRlLmFwcGVuZChsYXllci0+aWQoKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7CiB9CkBAIC02MjQsNyArNjI0LDcgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3MKIHsKICAg
ICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbmV3IENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcihjbGllbnQpOwogICAgIGxheWVyLT5zZXRDb29yZGluYXRvcih0aGlzKTsKLSAgICBt
X3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyKTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRk
KGxheWVyLT5pZCgpLCBsYXllcik7CiAgICAgbV9sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXIt
PmlkKCkpOwogICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOwogICAg
IHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwpAQCAtNjgyLDkgKzY4Miw5IEBAIHZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCwgY29uCiAgICAgaWYgKGNvbnRlbnRzUmVjdERpZENoYW5nZSkgewogICAgICAgICBtX3Zp
c2libGVDb250ZW50c1JlY3QgPSByZWN0OwogCi0gICAgICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVy
cy5lbmQoKTsKLSAgICAgICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgICgqaXQpLT5zZXROZWVkc1Zpc2libGVSZWN0QWRq
dXN0bWVudCgpOworICAgICAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVk
TGF5ZXJzLmVuZCgpOworICAgICAgICBmb3IgKExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmVn
aXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGl0
LT52YWx1ZS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNzMzLDkgKzczMyw5IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpw
dXJnZUJhY2tpbmdTdG9yZXMoKQogewogICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwdXJnaW5n
VG9nZ2xlKG1faXNQdXJnaW5nLCB0cnVlKTsKIAotICAgIEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKj46Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5l
bmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
Kj46Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKLSAgICAgICAgKCppdCktPnB1cmdlQmFja2luZ1N0b3JlcygpOworICAgIExheWVyTWFw
OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChMYXll
ck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBpdC0+dmFsdWUtPnB1cmdlQmFja2luZ1N0b3JlcygpOwogCiAgICAg
bV9pbWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAgICAgbV91cGRhdGVBdGxhc2VzLmNsZWFyKCk7CkBA
IC03OTksNSArNzk5LDE0IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIG1fc3RhdGUuYmFj
a2dyb3VuZENvbG9yID0gY29sb3I7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Ojpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgb2Zmc2V0KQoreworICAgIExheWVyTWFwOjppdGVyYXRvciBpID0gbV9yZWdpc3RlcmVk
TGF5ZXJzLmZpbmQobGF5ZXJJRCk7CisgICAgaWYgKGkgPT0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVu
ZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpLT52YWx1ZS0+Y29tbWl0U2Nyb2xsT2Zmc2V0
KG9mZnNldCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogI2VuZGlmIC8vIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKaW5kZXggNjUzNmFkNy4uYTIxNzRlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmgK
QEAgLTk1LDYgKzk1LDggQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlPiBjcmVhdGVDb29yZGluYXRlZFN1cmZhY2UoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZTo6RmxhZ3MpOwogCisg
ICAgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgb2Zmc2V0KTsKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKik7CiAKQEAgLTE3Miw3ICsxNzQsOCBAQCBwcml2YXRl
OgogCiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIG1fc3RhdGU7CiAKLSAg
ICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVnaXN0ZXJl
ZExheWVyczsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRMYXllcklE
LCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBMYXllck1hcDsKKyAgICBMYXll
ck1hcCBtX3JlZ2lzdGVyZWRMYXllcnM7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRD4gbV9sYXllcnNUb0NyZWF0ZTsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRMYXllcklEPiBtX2xheWVyc1RvRGVsZXRlOwogICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3Jl
OjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJ
bWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5nTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmlu
CmluZGV4IDY2NzFiMzIuLmU3MzIxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KQEAg
LTI3LDUgKzI3LDYgQEAgbWVzc2FnZXMgLT4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IExlZ2Fj
eVJlY2VpdmVyIHsKICNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiAgICAgQW5p
bWF0aW9uRnJhbWVSZWFkeSgpCiAjZW5kaWYKKyAgICBDb21taXRTY3JvbGxPZmZzZXQodWludDMy
X3QgbGF5ZXJJRCwgV2ViQ29yZTo6SW50U2l6ZSBvZmZzZXQpCiB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBlZDBhYzEwLi4y
MGU4ZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0yMzI0LDYgKzIzMjQsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2Vz
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIHNldHRpbmdzLT5zZXRFZGl0
YWJsZUxpbmtCZWhhdmlvcihzdGF0aWNfY2FzdDxXZWJDb3JlOjpFZGl0YWJsZUxpbmtCZWhhdmlv
cj4oc3RvcmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmVkaXRhYmxl
TGlua0JlaGF2aW9yS2V5KCkpKSk7CiAgICAgc2V0dGluZ3MtPnNldFNob3dzVG9vbFRpcE92ZXJU
cnVuY2F0ZWRUZXh0KHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
c2hvd3NUb29sVGlwT3ZlclRydW5jYXRlZFRleHRLZXkoKSkpOwogCisgICAgc2V0dGluZ3MtPnNl
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoc3RvcmUuZ2V0
Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy0+c2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRy
ZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3Mt
PnNldEFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdl
YlByZWZlcmVuY2VzS2V5OjphY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkS2V5KCkpICYmIExheWVy
VHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKICAgICBzZXR0aW5n
cy0+c2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzdG9yZS5nZXRCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmdLZXkoKSkg
JiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwotLSAK
MS43LjkuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191702</attachid>
            <date>2013-03-06 03:09:26 -0800</date>
            <delta_ts>2013-03-06 03:47:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>55525</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBiZjE3ODM4ZDdhZWIyZDcwZTExMjg1NzM1YzNkZjM4MmYxN2ZhNDkwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVHVlLCA1IE1hciAyMDEzIDIyOjIyOjE5IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZp
ZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVk
IGFzc3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgpTb3VyY2UvV2ViQ29yZToK
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnICMxMTExNDAuCgpTY3JvbGxpbmcgY29vcmRpbmF0
b3IgaXMgdXNlZCB0byBwcm92aWRlIGEgU2Nyb2xsYWJsZUFyZWEgdG8gQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLgoKKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CihXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJE
aWRDaGFuZ2UpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgoqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmg6CihTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgoKR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGUg
J2RpZCBjb21taXQnIG1lc3NhZ2VzIGFuZCB0byBwYXNzCnRoZW0gdG8gaXRzIFRleHR1cmVNYXBw
ZXJMYXllciBvbiB0aGUgYXBwcm9wcmlhdGVkIHRpbWUuCgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgooV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFi
bGUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xp
ZW50KToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJRCk6CihHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6aXNTY3JvbGxhYmxlKToKClRleHR1cmVNYXBwZXJMYXllciBpcyByZXNwb25zaWJsZSBm
b3IgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKc2VuZGluZyB0
aGUgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLiBJdCBpcyBhbHNvIGFibGUgdG8gaGl0
dGVzdCBsYXllcnMgYW5kIGlkZW50aWZ5CnRoZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCgoq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKToKKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmRp
ZENvbW1pdFNjcm9sbE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oOgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9sbGluZ0NsaWVudCk6CihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6aWQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciByZWNl
aXZlcyB0aGUgY29tbWl0IG1lc3NhZ2VzIGFuZCB1cGRhdGVzIGl0cyBTY3JvbGxhYmxlQXJlYS4K
CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFNjcm9sbGFibGVBcmVhKToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZXNldExheWVyU3RhdGUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKFdlYkNvcmUpOgooQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aXNT
Y3JvbGxhYmxlKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSByZWNlaXZlcyB0aGUgY29tbWl0
IG1lc3NhZ2VzIGZyb20gVGV4dHVyZU1hcHBlckxheWVyIGFuZApkaXNwYXRjaGVzIHRoZW0gb24g
dGhlIG1haW4gdGhyZWFkLiBJdCBhbHNvIGhhcyBhIG5ldyBtZXRob2QgdGhhdCBpcyB1c2VkIHRv
IGZpbmQKdGhlIHRvcG1vc3Qgc2Nyb2xsYWJsZSBsYXllciBhdCBhIGdpdmVuIHBvaW50LgoKKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcDoKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0
ZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZz
ZXQpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1p
dFNjcm9sbE9mZnNldCk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRT
Y3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CihXZWJDb3JlKToKKENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgoKTmV3
IGZpZWxkcyBoYXZlIGJlZW4gYWRkZWQgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUu
CgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaDoKKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlKToKClNvdXJjZS9XZWJL
aXQyOgoKKiBDTWFrZUxpc3RzLnR4dDoKCkVuY29kaW5nIGFuZCBkZWNvZGluZyB0aGUgbmV3IG1l
bWJlcnMgb2YgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUuCgoqIFNoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHA6CihDb3Jl
SVBDOjo6OmVuY29kZSk6CihDb3JlSVBDOjo6OmRlY29kZSk6CgpBZGRpbmcgYWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCB0byBXZWJQcmVmZXJlbmNlc1N0b3Jl
LgoKKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgoqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgoKTmV3IEFQ
SSBXS0Nvb3JkaW5hdGVkU2NlbmUgaXMgdXNlZCB0byBzY3JvbGwgbGF5ZXJzIG9uIFVJIHNpZGUu
CgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUu
Y3BwOgoqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuaDoKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmVB
UElDYXN0Lmg6CgpBIG5ldyBtZXNzYWdlIGlzIHVzZWQgdG8gc2VuZCBzY3JvbGwgY29tbWl0IG1l
c3NhZ2VzIHRvIHdlYiBwcm9jZXNzLgoKKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHA6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdFByb3h5Ojpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViS2l0KToKKiBVSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oOgoo
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkpOgoKQSBuZXcgbWVzc2FnZSBpcyB1c2VkIHRv
IHNlbmQgc2Nyb2xsIGNvbW1pdCBtZXNzYWdlcyB0byB3ZWIgcHJvY2Vzcy4KCiogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNw
cDoKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6
CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6
CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVz
KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZzZXQp
OgooV2ViS2l0KToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CiogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0Lm1lc3NhZ2VzLmluOgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICA5NSArKysrKysrKysrKysrKysrKysrKwogLi4uL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAgfCAgIDE4ICsrKysKIC4uLi9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCAgICAgIHwgICAgMiArCiAu
Li4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcCB8ICAgMjUg
KysrKysrCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgg
ICB8ICAgMTUgKysrLQogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3Bw
ICAgICAgICAgfCAgIDgxICsrKysrKysrKysrKysrKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oICB8ICAgMzQgKysrKysrLQogLi4uL2Nvb3JkaW5h
dGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgICAgICAgfCAgIDI2ICsrKysrKwogLi4u
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCAgfCAgICA3ICsr
CiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCAgICAgICB8ICAg
MjMgKysrKysKIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmggIHwgICAxMSArKy0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
c1N0YXRlLmggIHwgICAgNSArKwogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgICAgICAg
ICAgICAgICAgICAgICAgfCAgICA1ICsrCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgNTMgKysrKysrKysrKysKIC4uLi9Db29yZGluYXRlZEdy
YXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwICAgICAgICAgIHwgICAgNiArKwogU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCAgICAgICAgfCAgICAxICsKIC4uLi9BUEkv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwIHwgICA0OSArKysrKysr
KysrCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmggICB8
ICAgNDggKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcCAg
ICAgICAgICAgICAgfCAgICA1ICsrCiAuLi4vQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHku
aCAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3Qu
aCAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysrKysrKysKIC4uLi9Db29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrLS0tCiAuLi4v
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCB8ICAgIDUgKy0K
IC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4gICAgICAgICAgIHwgICAg
MSArCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8
ICAgIDEgKwogMjUgZmlsZXMgY2hhbmdlZCwgNTkzIGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29v
cmRpbmF0ZWRTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1MThmNjUuLmVhYTc0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5OCBAQAor
MjAxMy0wMy0wNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisg
ICAgICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3Jh
cGhpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTAzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
IHNjcm9sbCBvZmZzZXQgaXMgYXBwbGllZCB0byBpbmRpdmlkdWFsIGxheWVycyBvbiBVSSBwcm9j
ZXNzIGFuZCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgbm90aWZpZWQgYXNzeW5jaHJvbm91
c2x5LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVkU2NlbmUgbWF5IGJlIHVzZWQg
dG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBUZXN0cyB3aWxs
IGJlIGFkZGVkIG9uIGJ1ZyAjMTExMTQwLgorCisgICAgICAgIFNjcm9sbGluZyBjb29yZGluYXRv
ciBpcyB1c2VkIHRvIHByb3ZpZGUgYSBTY3JvbGxhYmxlQXJlYSB0byBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNz
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFi
bGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OndpbGxE
ZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5h
dGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmg6Cisg
ICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgorCisgICAg
ICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWNlaXZp
bmcgdGhlICdkaWQgY29tbWl0JyBtZXNzYWdlcyBhbmQgdG8gcGFzcworICAgICAgICB0aGVtIHRv
IGl0cyBUZXh0dXJlTWFwcGVyTGF5ZXIgb24gdGhlIGFwcHJvcHJpYXRlZCB0aW1lLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElzU2Ny
b2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6
Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElEKToKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyOjppc1Njcm9sbGFibGUpOgorCisgICAgICAgIFRleHR1cmVNYXBwZXJMYXllciBpcyBy
ZXNwb25zaWJsZSBmb3IgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzY3JvbGwgb2Zmc2V0IGFuZCBm
b3IKKyAgICAgICAgc2VuZGluZyB0aGUgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLiBJ
dCBpcyBhbHNvIGFibGUgdG8gaGl0dGVzdCBsYXllcnMgYW5kIGlkZW50aWZ5CisgICAgICAgIHRo
ZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxheWVySGl0VGVzdENvbmRpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxl
Q29udGVudHNMYXllckF0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
bWFwU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpkaWRD
b21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJMYXllcik6CisgICAg
ICAgIChTY3JvbGxpbmdDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxh
eWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjpzZXRJRCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6Omlk
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Nyb2xsQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2V0SXNTY3JvbGxhYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aXNTY3JvbGxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6YWRqdXN0ZWRQb3NpdGlvbik6
CisKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHJlY2VpdmVzIHRoZSBjb21taXQg
bWVzc2FnZXMgYW5kIHVwZGF0ZXMgaXRzIFNjcm9sbGFibGVBcmVhLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21taXRTY3JvbGxPZmZzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpyZXNldExheWVy
U3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKworICAgICAgICBDb29yZGluYXRlZEdyYXBo
aWNzU2NlbmUgcmVjZWl2ZXMgdGhlIGNvbW1pdCBtZXNzYWdlcyBmcm9tIFRleHR1cmVNYXBwZXJM
YXllciBhbmQKKyAgICAgICAgZGlzcGF0Y2hlcyB0aGVtIG9uIHRoZSBtYWluIHRocmVhZC4gSXQg
YWxzbyBoYXMgYSBuZXcgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBmaW5kCisgICAgICAgIHRoZSB0
b3Btb3N0IHNjcm9sbGFibGUgbGF5ZXIgYXQgYSBnaXZlbiBwb2ludC4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRM
YXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6Y29tbWl0U2Nyb2xsT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZmluZFNjcm9s
bGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lQ2xpZW50KToKKyAgICAgICAg
KENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisKKyAgICAgICAgTmV3IGZpZWxkcyBoYXZlIGJl
ZW4gYWRkZWQgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0
YXRlLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSk6CisKIDIwMTMt
MDMtMDYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAK
ICAgICAgICAgUkVHR1JFU1NJT04gKHIxNDIxMTIpOiBJdCBtYWRlIGNvbXBvc2l0aW5nIHRlc3Rz
IGZhaWwgb24gRUZMLCBRdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3Jh
cGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAppbmRleCBh
MWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFw
aGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC00
Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
czo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgogICAgIHRvQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGVuYWJsZSk7CiB9CiAKK3Zv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjpzY3JvbGxhYmxlQXJl
YVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sK
KyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOwor
ICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxh
YmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
b29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFibGVBcmVhKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxh
eWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxl
QXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgwKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3Jv
bGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29y
ZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggNGUwNGJiZS4uNjc0OGU0ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRp
bmF0ZWRHcmFwaGljcy5oCkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3JhcGhp
Y3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxhYmxlQXJlYVNjcm9sbExh
eWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCmluZGV4
IDgwMTNlYzQuLmYzMjYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6R3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZQogICAgICwg
bV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXIoMCkKICAgICAsIG1f
YW5pbWF0aW9uU3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xsYWJsZShmYWxzZSkKIHsKIH0K
IApAQCAtNDAzLDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpz
ZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5vdGlmeUNoYW5nZShEZWJ1Z1Zp
c3VhbHNDaGFuZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpkaWRD
b21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIGlmIChvZmZz
ZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY29tbWl0dGVkU2Nyb2xsT2Zm
c2V0ID0gb2Zmc2V0OworICAgIG5vdGlmeUNoYW5nZShDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFu
Z2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFi
bGUoYm9vbCBpc1Njcm9sbGFibGUpCit7CisgICAgaWYgKG1faXNTY3JvbGxhYmxlID09IGlzU2Ny
b2xsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Njcm9sbGFibGUgPSBpc1Njcm9s
bGFibGU7CisgICAgbm90aWZ5Q2hhbmdlKElzU2Nyb2xsYWJsZUNoYW5nZSk7Cit9CisKIC8qIFxy
ZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKQpAQCAtNTQzLDYgKzU2
MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpjb21taXRMYXllckNoYW5n
ZXMoKQogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBGaXhlZFRvVmlld3BvckNoYW5nZSkKICAgICAg
ICAgbV9sYXllci0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGZpeGVkVG9WaWV3cG9ydCgpKTsKIAorICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBJc1Njcm9sbGFibGVDaGFuZ2UpCisgICAgICAgIG1fbGF5ZXIt
PnNldElzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUoKSk7CisKKyAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgQ29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlKQorICAgICAgICBtX2xheWVyLT5kaWRDb21t
aXRTY3JvbGxPZmZzZXQobV9jb21taXR0ZWRTY3JvbGxPZmZzZXQpOworCiAgICAgbV9jaGFuZ2VN
YXNrID0gTm9DaGFuZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5oCmluZGV4IDkzMjlmYmMuLjYwNDQ0ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCkBAIC0zNCw2ICszNCw5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xpZW50Kik7CiAgICAgdmlydHVh
bCB+R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKTsKIAorICAgIHZvaWQgc2V0U2Nyb2xsQ2xp
ZW50KFRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50KiBjbGllbnQpIHsgbV9sYXll
ci0+c2V0U2Nyb2xsQ2xpZW50KGNsaWVudCk7IH0KKyAgICB2b2lkIHNldElEKHVpbnQzMl90IGlk
KSB7IG1fbGF5ZXItPnNldElEKGlkKTsgfQorCiAgICAgLy8gcmVpbXBzIGZyb20gR3JhcGhpY3NM
YXllci5oCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwpAQCAtODEsNiArODQsMTAgQEAgcHVibGlj
OgogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5
ZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNp
emUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sKTsKKyAgICBib29sIGlzU2Nyb2xs
YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JvbGxhYmxlOyB9CisKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYpOwogI2VuZGlmCkBAIC0xNDMsNyArMTUwLDEwIEBAIHByaXZhdGU6CiAgICAgICAgIFJl
cGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAogCiAgICAgICAgIEZpeGVkVG9W
aWV3cG9yQ2hhbmdlID0gICAgICAoMUwgPDwgMjYpLAotICAgICAgICBBbmltYXRpb25TdGFydGVk
ID0gICAgICAgICAgKDFMIDw8IDI3KQorICAgICAgICBBbmltYXRpb25TdGFydGVkID0gICAgICAg
ICAgKDFMIDw8IDI3KSwKKworICAgICAgICBDb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2UgPSAg
ICAgKDFMIDw8IDI4KSwKKyAgICAgICAgSXNTY3JvbGxhYmxlQ2hhbmdlID0gICAgICAgICAgICAg
ICgxTCA8PCAyOSkKICAgICB9OwogICAgIHZvaWQgbm90aWZ5Q2hhbmdlKENoYW5nZU1hc2spOwog
CkBAIC0xNjUsNiArMTc1LDkgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9uZWVkc0Rpc3Bs
YXlSZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBk
b3VibGUgbV9hbmltYXRpb25TdGFydFRpbWU7CisKKyAgICBJbnRTaXplIG1fY29tbWl0dGVkU2Ny
b2xsT2Zmc2V0OworICAgIGJvb2wgbV9pc1Njcm9sbGFibGU7CiB9OwogCiBpbmxpbmUgc3RhdGlj
IEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCAx
MGJlZjI2Li4xZDBhYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMjAsNyAr
MjAsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXll
ci5oIgogCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCisjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIApAQCAtNjczLDUgKzY3NSw4NCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6c2V0U2Ny
b2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpCiAgICAgbV9j
dXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CiB9CiAKK3Rl
bXBsYXRlPGNsYXNzIEhpdFRlc3RDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogVGV4dHVy
ZU1hcHBlckxheWVyOjpoaXRUZXN0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBIaXRUZXN0Q29u
ZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1fc3RhdGUudmlzaWJsZSB8fCAhbV9zdGF0
ZS5jb250ZW50c1Zpc2libGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgVGV4dHVyZU1hcHBl
ckxheWVyKiByZXN1bHQgPSAwOworICAgIGZvciAoaW50IGkgPSBtX2NoaWxkcmVuLnNpemUoKSAt
IDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkpCisgICAgICAgIHJlc3VsdCA9IG1fY2hpbGRyZW5b
aV0tPmhpdFRlc3QocG9pbnQsIGNvbmRpdGlvbik7CisKKyAgICBpZiAocmVzdWx0KQorICAgICAg
ICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGNvbmRpdGlvbih0aGlzLCBwb2ludCkgPyB0
aGlzIDogMDsKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnNjcm9sbGFibGVMYXllckhp
dFRlc3RDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpCit7CisgICAgLy8gc2Nyb2xsaW5nIGxheWVyJ3MgbV9wYXJlbnQtPm1fcGFyZW50
LCB0aGUgcGFyZW50IG9mIHRoZSBzY3JvbGxpbmcgbGF5ZXMsIGlzIHRoZSBvbmUgdGhhdCBkZWZp
bmVzIHRoZQorICAgIC8vIHJlY3RhbmdsZSB0byBiZSB1c2VkIGZvciBoaXQgdGVzdGluZy4KKyAg
ICBpZiAoIWxheWVyLT5pc1Njcm9sbGFibGUoKSB8fCAhbGF5ZXItPm1fcGFyZW50IHx8ICFsYXll
ci0+bV9wYXJlbnQtPm1fcGFyZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUZXh0
dXJlTWFwcGVyTGF5ZXIqIHBhcmVudExheWVyID0gbGF5ZXItPm1fcGFyZW50LT5tX3BhcmVudDsK
KworICAgIEZsb2F0UmVjdCByZWN0OworICAgIGlmIChwYXJlbnRMYXllci0+bV9iYWNraW5nU3Rv
cmUpCisgICAgICAgIHJlY3QgPSBwYXJlbnRMYXllci0+bGF5ZXJSZWN0KCk7CisgICAgZWxzZSBp
ZiAocGFyZW50TGF5ZXItPm1fY29udGVudHNMYXllcikKKyAgICAgICAgcmVjdCA9IHBhcmVudExh
eWVyLT5tX3N0YXRlLmNvbnRlbnRzUmVjdDsKKworICAgIHJldHVybiBwYXJlbnRMYXllci0+bV9j
dXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUXVhZChyZWN0KS5jb250YWluc1BvaW50KHBv
aW50KTsKK30KKworVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZpbmRT
Y3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAg
IHJldHVybiBoaXRUZXN0KHBvaW50LCAmVGV4dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5
ZXJIaXRUZXN0Q29uZGl0aW9uKTsKK30KKworRmxvYXRTaXplIFRleHR1cmVNYXBwZXJMYXllcjo6
bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIGRvdWJsZSB6
ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkuaW52ZXJzZSgpOworICAg
IHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gsIHplcm9ZKTsKKyAgICB0cmFuc2Zvcm0ubWFwKG9m
ZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgsIG9mZnNldFkpOworICAgIHJl
dHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZIC0gemVyb1kpOworfQorCit2
b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6
ZSYgb2Zmc2V0KQoreworICAgIEZsb2F0U2l6ZSBmdWxsT2Zmc2V0ID0gbV9hY2N1bXVsYXRlZFNj
cm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0ICsgb2Zmc2V0OworCisgICAgaW50IGludFdpZHRoID0g
cm91bmQoZnVsbE9mZnNldC53aWR0aCgpKTsKKyAgICBpbnQgaW50SGVpZ2h0ID0gcm91bmQoZnVs
bE9mZnNldC5oZWlnaHQoKSk7CisKKyAgICAvLyBtX2FjY3VtdWxhdGVkU2Nyb2xsT2Zmc2V0RnJh
Y3Rpb25hbFBhcnQgaG9sZHMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgdXNlciBzY3JvbGwg
b2Zmc2V0IHRoYXQKKyAgICAvLyBoYXMgbm90IHlldCBiZWVuIHN5bmNlZCB3aXRoIHRoZSB3ZWIg
cHJvY2VzcyBiZWNhdXNlIHRoZSB3ZWIgcHJvY2VzcyBleHBlY3RzIGFuIEludFNpemUuCisgICAg
bV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0ID0gRmxvYXRTaXplKGZ1bGxP
ZmZzZXQud2lkdGgoKSAtIGludFdpZHRoLCBmdWxsT2Zmc2V0LmhlaWdodCgpIC0gaW50SGVpZ2h0
KTsKKworICAgIG1fc2Nyb2xsQ2xpZW50LT5jb21taXRTY3JvbGxPZmZzZXQobV9pZCwgSW50U2l6
ZShpbnRXaWR0aCwgaW50SGVpZ2h0KSk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpz
Y3JvbGxCeShjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKK3sKKyAgICBpZiAoIWlzU2Nyb2xsYWJs
ZSgpIHx8ICFtX3Njcm9sbENsaWVudCB8fCBvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEZsb2F0U2l6ZSBzY3JvbGxPZmZzZXQgPSBtYXBTY3JvbGxPZmZzZXQob2Zmc2V0
KTsKKyAgICBtX3VzZXJTY3JvbGxPZmZzZXQgKz0gc2Nyb2xsT2Zmc2V0OworCisgICAgbV9jdXJy
ZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRpb24oKSk7CisgICAgY29tbWl0
U2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCk7Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlckxheWVy
OjpkaWRDb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1f
dXNlclNjcm9sbE9mZnNldCA9IEZsb2F0U2l6ZShtX3VzZXJTY3JvbGxPZmZzZXQud2lkdGgoKSAt
IG9mZnNldC53aWR0aCgpLCBtX3VzZXJTY3JvbGxPZmZzZXQuaGVpZ2h0KCkgLSBvZmZzZXQuaGVp
Z2h0KCkpOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3NpdGlvbihhZGp1c3RlZFBvc2l0
aW9uKCkpOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaAppbmRleCA2MDJi
MmMzLi4xZDNjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oCkBAIC0zOSw2ICszOSwxMiBA
QCBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXIgOiBwdWJsaWMgR3JhcGhpY3NMYXllckFuaW1hdGlv
bjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUZXh0dXJlTWFwcGVyTGF5ZXIp
OwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgorCisgICAgY2xhc3MgU2Ny
b2xsaW5nQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXRT
Y3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KSA9IDA7
CisgICAgfTsKKwogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCiAgICAgICAgIDogbV9wYXJlbnQo
MCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQpAQCAtNDcsMTAgKzUzLDI1IEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX2NlbnRlclooMCkKICAgICAgICAgLCBtX3RleHR1cmVNYXBwZXIoMCkK
ICAgICAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKKyAgICAgICAgLCBtX2lkKDApCisg
ICAgICAgICwgbV9zY3JvbGxDbGllbnQoMCkKKyAgICAgICAgLCBtX2lzU2Nyb2xsYWJsZShmYWxz
ZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJMYXllcigpOwogCisgICAg
dm9pZCBzZXRJRCh1aW50MzJfdCBpZCkgeyBtX2lkID0gaWQ7IH0KKyAgICB1aW50MzJfdCBpZCgp
IHsgcmV0dXJuIG1faWQ7IH0KKworICAgIFRleHR1cmVNYXBwZXJMYXllciogZmluZFNjcm9sbGFi
bGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9zKTsKKworICAgIHZvaWQgc2V0
U2Nyb2xsQ2xpZW50KFNjcm9sbGluZ0NsaWVudCogc2Nyb2xsQ2xpZW50KSB7IG1fc2Nyb2xsQ2xp
ZW50ID0gc2Nyb2xsQ2xpZW50OyB9CisgICAgdm9pZCBzY3JvbGxCeShjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmKTsKKworICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEludFNp
emUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkgeyBtX2lz
U2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJsZTsgfQorICAgIGJvb2wgaXNTY3JvbGxhYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Njcm9sbGFibGU7IH0KKwogICAgIFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciogdGV4bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQogCkBAIC0xMDgsNyArMTI5
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzb3J0QnlaT3JkZXIoVmVjdG9yPFRleHR1
cmVNYXBwZXJMYXllciogPiYgYXJyYXksIGludCBmaXJzdCwgaW50IGxhc3QpOwogCiAgICAgUGFz
c1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1cm4gbV9iYWNraW5nU3RvcmUg
PyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQotICAgIEZsb2F0UG9pbnQgYWRqdXN0
ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9zICsgbV9zY3JvbGxQb3NpdGlv
bkRlbHRhOyB9CisgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEgLSBtX3VzZXJTY3JvbGxPZmZz
ZXQ7IH0KICAgICBib29sIGlzQW5jZXN0b3JGaXhlZFRvVmlld3BvcnQoKSBjb25zdDsKICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhZGRDaGls
ZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKQEAgLTE1OSw2ICsxODAsMTIgQEAgcHJpdmF0ZToKICNl
bmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKIAorICAgIHRlbXBsYXRlPGNsYXNzIEhpdFRlc3RD
b25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogaGl0VGVzdChjb25zdCBGbG9hdFBvaW50Jiwg
SGl0VGVzdENvbmRpdGlvbik7CisgICAgc3RhdGljIGJvb2wgc2Nyb2xsYWJsZUxheWVySGl0VGVz
dENvbmRpdGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBGbG9hdFBvaW50Jik7CisKKyAg
ICBGbG9hdFNpemUgbWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYpOworICAgIHZvaWQg
Y29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYpOworCiAgICAgc3RydWN0IFN0YXRl
IHsKICAgICAgICAgRmxvYXRQb2ludCBwb3M7CiAgICAgICAgIEZsb2F0UG9pbnQzRCBhbmNob3JQ
b2ludDsKQEAgLTIxMSw2ICsyMzgsMTEgQEAgcHJpdmF0ZToKICAgICBHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgRmxvYXRTaXplIG1fc2Nyb2xsUG9zaXRpb25EZWx0
YTsKICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OworICAgIHVpbnQzMl90IG1faWQ7CisgICAg
U2Nyb2xsaW5nQ2xpZW50KiBtX3Njcm9sbENsaWVudDsKKyAgICBib29sIG1faXNTY3JvbGxhYmxl
OworICAgIEZsb2F0U2l6ZSBtX3VzZXJTY3JvbGxPZmZzZXQ7CisgICAgRmxvYXRTaXplIG1fYWNj
dW11bGF0ZWRTY3JvbGxPZmZzZXRGcmFjdGlvbmFsUGFydDsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXgg
NmU5MDAzNi4uNTQzN2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTIyLDYgKzEyMyw3IEBAIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNs
aWVudCkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRyKDApCiAgICAgLCBtX2NhbnZh
c1BsYXRmb3JtTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyKHRoaXMsICZD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0ZWRUaW1lckZpcmVkKQorICAg
ICwgbV9zY3JvbGxhYmxlQXJlYSgwKQogewogICAgIHN0YXRpYyBDb29yZGluYXRlZExheWVySUQg
bmV4dExheWVySUQgPSAxOwogICAgIG1faWQgPSBuZXh0TGF5ZXJJRCsrOwpAQCAtNTE0LDYgKzUx
NiwyOSBAQCBDb29yZGluYXRlZExheWVySUQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjppZCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1faWQ7CiB9CiAKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpzZXRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEpCit7
CisgICAgYm9vbCBvbGRTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlKCk7CisgICAgbV9zY3JvbGxh
YmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgIGlmIChvbGRTY3JvbGxhYmxlID09IGlzU2Ny
b2xsYWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xheWVyU3RhdGUuaXNTY3JvbGxh
YmxlID0gaXNTY3JvbGxhYmxlKCk7CisgICAgbV9sYXllclN0YXRlLmlzU2Nyb2xsYWJsZUNoYW5n
ZWQgPSB0cnVlOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsKK30KKwordm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmNvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXplJiBvZmZz
ZXQpCit7CisgICAgaWYgKCFpc1Njcm9sbGFibGUoKSB8fCBvZmZzZXQuaXNaZXJvKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPm5vdGlmeVNjcm9sbFBvc2l0aW9u
Q2hhbmdlZChtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpICsgb2Zmc2V0KTsKKyAg
ICBtX2xheWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0ICs9IG9mZnNldDsKKyAgICBtX2xh
eWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZCA9IHRydWU7CisgICAgZGlkQ2hh
bmdlTGF5ZXJTdGF0ZSgpOworfQorCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0
Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCkKIHsKICAgICBpZiAobV9maXhlZFRvVmlld3Bv
cnQgPT0gaXNGaXhlZCkKQEAgLTczNyw2ICs3NjIsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcjo6cmVzZXRMYXllclN0YXRlKCkKICAgICBtX2xheWVyU3RhdGUudGlsZXNUb0NyZWF0
ZS5jbGVhcigpOwogICAgIG1fbGF5ZXJTdGF0ZS50aWxlc1RvUmVtb3ZlLmNsZWFyKCk7CiAgICAg
bV9sYXllclN0YXRlLnRpbGVzVG9VcGRhdGUuY2xlYXIoKTsKKyAgICBtX2xheWVyU3RhdGUuY29t
bWl0dGVkU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogfQogCiBib29sIENvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6aW1hZ2VCYWNraW5nVmlzaWJsZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5kZXggNzkwZmU5Ni4uYTA3MDhk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nv
b3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllckFuaW1hdGlvbnM7Citj
bGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xp
ZW50IHsKIHB1YmxpYzoKQEAgLTExNSw2ICsxMTYsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRSb290TGF5ZXIoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNjcm9sbGFibGVBcmVhKFNjcm9sbGFi
bGVBcmVhKik7CisgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiAhIW1fc2Ny
b2xsYWJsZUFyZWE7IH0KKyAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldChjb25zdCBJbnRTaXpl
Jik7CisKICAgICBDb29yZGluYXRlZExheWVySUQgaWQoKSBjb25zdDsKIAogICAgIHZvaWQgc2V0
Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCk7CkBAIC0yNDAsNiArMjQ1LDggQEAgcHJpdmF0
ZToKICAgICBUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+IG1fYW5pbWF0aW9uU3RhcnRl
ZFRpbWVyOwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1fYW5pbWF0aW9uczsKICAgICBk
b3VibGUgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAgU2Nyb2xsYWJsZUFyZWEqIG1f
c2Nyb2xsYWJsZUFyZWE7CiB9OwogCiBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIHRvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKaW5kZXggNDFlMzUzZS4u
YjgyZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKQEAgLTM2MCw2ICszNjAsMTIgQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBjb25zdCBD
b29yZGkKICAgICAgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291bnRlcihsYXllclN0YXRlLnNo
b3dSZXBhaW50Q291bnRlcik7CiAgICAgfQogCisgICAgaWYgKGxheWVyU3RhdGUuaXNTY3JvbGxh
YmxlQ2hhbmdlZCkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihsYXllcikt
PnNldElzU2Nyb2xsYWJsZShsYXllclN0YXRlLmlzU2Nyb2xsYWJsZSk7CisKKyAgICBpZiAobGF5
ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2VkKQorICAgICAgICB0b0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVyU3Rh
dGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKKwogICAgIGlmIChsYXllclN0YXRlLmZpeGVkVG9W
aWV3cG9ydCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQsIGxheWVyKTsKICAgICBlbHNl
CkBAIC0zOTcsNiArNDAzLDggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0
ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBPd25QdHI8R3JhcGhpY3NMYXll
cj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAvKiBmYWN0b3J5ICovLCB0aGlz
KTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0
SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsKKyAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SUQoaWQpOworICAgIHRvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRTY3JvbGxDbGllbnQodGhpcyk7CiAgICAgbV9s
YXllcnMuYWRkKGlkLCBuZXdMYXllci5yZWxlYXNlKCkpOwogfQogCkBAIC02ODYsNiArNjk0LDE2
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUdMUmVzb3VyY2VzKCkKICAg
ICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1
cmdlQmFja2luZ1N0b3JlcywgdGhpcykpOwogfQogCit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3Qg
SW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT5jb21taXRTY3JvbGxPZmZzZXQobGF5
ZXJJRCwgb2Zmc2V0KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1p
dFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpCit7
CisgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCwgdGhpcywgbGF5ZXJJRCwgb2Zmc2V0KSk7Cit9
CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJnZUJhY2tpbmdTdG9yZXMoKQog
ewogICAgIGlmIChtX2NsaWVudCkKQEAgLTc1Myw2ICs3NzEsMTEgQEAgdm9pZCBDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKIH0KIAorVGV4dHVyZU1hcHBlckxheWVyKiBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNv
bnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiByb290TGF5ZXIoKSA/IHRvVGV4
dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVy
QXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGVkNWRiZTAuLjY4ZmM2MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRl
ZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmgK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJGUFND
b3VudGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVyLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CkBAIC00OCw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKIGNsYXNzIEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvOwotY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOwogCiBjbGFzcyBD
b29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQgewogcHVibGljOgpAQCAtNTksOSArNTksMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVmlld3BvcnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNl
dCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZzZXQpID0gMDsKIH07CiAKLWNs
YXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3JhcGhpY3NMYXllckNsaWVudCB7
CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGljIEdyYXBoaWNzTGF5ZXJDbGll
bnQsIHB1YmxpYyBUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGluZ0NsaWVudCB7CiBwdWJsaWM6
CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKENvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZUNsaWVudCopOwogICAgIHZpcnR1YWwgfkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSgp
OwpAQCAtNzEsNiArNzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGV0YWNoKCk7CiAgICAgdm9p
ZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYpOwogCisgICAgV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyKiBmaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nyb2xsT2Zm
c2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCk7CisKICAgICAvLyBU
aGUgcGFpbnRpbmcgdGhyZWFkIG11c3QgbG9jayB0aGUgbWFpbiB0aHJlYWQgdG8gdXNlIGJlbG93
IHR3byBtZXRob2RzLCBiZWNhdXNlIHR3byBtZXRob2RzIGFjY2VzcyBtZW1iZXJzIHRoYXQgdGhl
IG1haW4gdGhyZWFkIG1hbmFnZXMuIFNlZSBtX2NsaWVudC4KICAgICAvLyBDdXJyZW50bHksIFFR
dWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZSgpIGxvY2tzIHRoZSBtYWluIHRocmVhZCBiZWZv
cmUgY2FsbGluZyBib3RoIG1ldGhvZHMuCiAgICAgdm9pZCBwdXJnZUdMUmVzb3VyY2VzKCk7CkBA
IC0xNTcsNiArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUJhY2tpbmdTdG9yZUlm
TmVlZGVkKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJlc2V0QmFja2luZ1N0b3JlU2l6ZVRv
TGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqKTsKIAorICAgIHZvaWQgZGlzcGF0Y2hDb21taXRTY3Jv
bGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKKwogICAg
IC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZyb20gbWFpbiB0aHJlYWQgb3Ig
dXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4g
PiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4IG1fcmVuZGVyUXVldWVNdXRleDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRleCA3
Y2M2Mjg5Li4yOWM4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC05MCw2ICs5MCw4IEBAIHN0cnVjdCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29sIHJlcGFpbnRDb3VudENoYW5n
ZWQgOiAxOwogICAgICAgICAgICAgYm9vbCBjYW52YXNDaGFuZ2VkOiAxOwogICAgICAgICAgICAg
Ym9vbCBjYW52YXNTaG91bGRTd2FwQnVmZmVyczogMTsKKyAgICAgICAgICAgIGJvb2wgaXNTY3Jv
bGxhYmxlQ2hhbmdlZDogMTsKKyAgICAgICAgICAgIGJvb2wgY29tbWl0dGVkU2Nyb2xsT2Zmc2V0
Q2hhbmdlZDogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWduZWQgY2hhbmdlTWFzazsKICAg
ICB9OwpAQCAtMTA1LDYgKzEwNyw3IEBAIHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJT
dGF0ZSB7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9ydCA6IDE7CiAgICAgICAgICAg
ICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOwogICAgICAgICAgICAgYm9vbCBzaG93UmVwYWlu
dENvdW50ZXIgOiAxOworICAgICAgICAgICAgYm9vbCBpc1Njcm9sbGFibGU6IDE7CiAgICAgICAg
IH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgIH07CkBAIC0xNjEsNiArMTY0LDggQEAg
c3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsKICAgICBHcmFwaGljc1N1cmZh
Y2VUb2tlbiBjYW52YXNUb2tlbjsKICAgICB1aW50MzJfdCBjYW52YXNGcm9udEJ1ZmZlcjsKICNl
bmRpZgorCisgICAgSW50U2l6ZSBjb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiB9OwogCiBzdHJ1Y3Qg
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggNmYyYjFm
Ni4uNDJmYTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE3LDYgKzE3LDcgQEAgc2V0KFdl
YktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3Mi
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1VJUHJvY2Vzcy9BUEkvQyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQVBJL2NwcCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uIgogICAgICIke1dF
QktJVDJfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTc1LDYgKzc2LDgg
QEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9s
b2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BhZ2UvYW5pbWF0aW9uIgorICAgICIke1dFQkNPUkVfRElSfS9wYWdlL3Njcm9sbGluZyIK
KyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRm
b3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MiCkBA
IC0zNDEsNiArMzQ0LDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAK
IAorICAgIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2Nl
bmUuY3BwCisKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmNwcAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJD
cmVkZW50aWFsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVmZTJmMTcuLjBmZGFhYmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NiBAQAorMjAxMy0wMy0wNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAbm9raWEuY29tPgorCisgICAgICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBm
b3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBIHNjcm9sbCBvZmZzZXQgaXMgYXBwbGllZCB0byBpbmRpdmlkdWFs
IGxheWVycyBvbiBVSSBwcm9jZXNzIGFuZCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgbm90
aWZpZWQgYXNzeW5jaHJvbm91c2x5LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVk
U2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCisgICAgICAgIEVuY29kaW5nIGFuZCBkZWNvZGlu
ZyB0aGUgbmV3IG1lbWJlcnMgb2YgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUuCisKKyAg
ICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAo
Q29yZUlQQzo6OjpkZWNvZGUpOgorCisgICAgICAgIEFkZGluZyBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkIHRvIFdlYlByZWZlcmVuY2VzU3RvcmUuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRl
UHJlZmVyZW5jZXMpOgorCisgICAgICAgIE5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIGlzIHVz
ZWQgdG8gc2Nyb2xsIGxheWVycyBvbiBVSSBzaWRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2Vu
ZUFQSUNhc3QuaDoKKworICAgICAgICBBIG5ldyBtZXNzYWdlIGlzIHVzZWQgdG8gc2VuZCBzY3Jv
bGwgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLgorCisgICAgICAgICogVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0U2Ny
b2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaDoKKyAgICAgICAg
KENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5KToKKworICAgICAgICBBIG5ldyBtZXNzYWdl
IGlzIHVzZWQgdG8gc2VuZCBzY3JvbGwgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXRhY2hMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNr
aW5nU3RvcmVzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
b21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
Lm1lc3NhZ2VzLmluOgorCiAyMDEzLTAzLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNv
bXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtFRkxdW1dLMl0gQ29udmVydCBmcm9tIGRldmljZSB2
aWV3IHNpemUgdG8gVUkgdmlldyBzaXplIG9ubHkgaW4gRXdrVmlldy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgwYzcy
NTkuLjVhYWFkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmNwcApAQCAtODk2LDYgKzg5Niw5IEBAIHZvaWQgQXJndW1lbnRDb2Rl
cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXIm
IGVuY29kCiAgICAgICAgIGVuY29kZXIgPDwgc3RhdGUuY2FudmFzRnJvbnRCdWZmZXI7CiAgICAg
fQogI2VuZGlmCisKKyAgICBpZiAoc3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZCkK
KyAgICAgICAgZW5jb2RlciA8PCBzdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiB9CiAKIGJv
b2wgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZT46OmRlY29kZShB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBz
dGF0ZSkKQEAgLTk4MSw2ICs5ODQsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyU3RhdGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZAogICAgIH0K
ICNlbmRpZgogCisgICAgaWYgKHN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZWQgJiYg
IWRlY29kZXIuZGVjb2RlKHN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaAppbmRleCA5YjkwNTBlLi5kYWNjYWYzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTE0Myw2ICsxNDMs
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBtYWNybyhQYWdlVmlzaWJpbGl0eUJhc2VkUHJv
Y2Vzc1N1cHByZXNzaW9uRW5hYmxlZCwgcGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVz
c2lvbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkLCBzbWFydEluc2VydERlbGV0ZUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUp
IFwKICAgICBtYWNybyhTaG93c1VSTHNJblRvb2xUaXBzRW5hYmxlZCwgc2hvd3NVUkxzSW5Ub29s
VGlwc0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCwgYWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAK
ICNkZWZpbmUgRk9SX0VBQ0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3JvKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29v
cmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjlhODk1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5l
LmNwcApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29vcmRp
bmF0ZWRTY2VuZS5oIgorCisjaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oIgor
CisjaW5jbHVkZSA8V2ViQ29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1RleHR1cmVNYXBwZXJMYXllci5oPgorCitXS19FWFBPUlQgV0tDb29yZGluYXRl
ZFNjZW5lTGF5ZXIgV0tDb29yZGluYXRlZFNjZW5lRmluZFNjcm9sbGFibGVDb250ZW50c0xheWVy
QXQoV0tDb29yZGluYXRlZFNjZW5lIHNjZW5lLCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoc2NlbmUpLT5maW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChXZWJD
b3JlOjpGbG9hdFBvaW50KHBvaW50LngsIHBvaW50LnkpKSk7Cit9CisKK1dLX0VYUE9SVCB1aW50
MzJfdCBXS0Nvb3JkaW5hdGVkU2NlbmVHZXRMYXllcklEKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVy
IGxheWVyKQoreworICAgIHJldHVybiB0b0ltcGwobGF5ZXIpLT5pZCgpOworfQorCitXS19FWFBP
UlQgdm9pZCBXS0Nvb3JkaW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5hdGVkU2NlbmVMYXll
ciBsYXllciwgV0tTaXplIG9mZnNldCkKK3sKKyAgICB0b0ltcGwobGF5ZXIpLT5zY3JvbGxCeShX
ZWJDb3JlOjpGbG9hdFNpemUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYzRlODhkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApA
QCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVfaAorI2RlZmluZSBXS0Nvb3Jk
aW5hdGVkU2NlbmVfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKwordHlw
ZWRlZiBzdHJ1Y3QgT3BhcXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwordHlwZWRlZiBz
dHJ1Y3QgT3BhcXVlQ0dMYXllciogV0tDb29yZGluYXRlZFNjZW5lTGF5ZXI7CisKK1dLX0VYUE9S
VCBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVGaW5kU2Nyb2xsYWJs
ZUNvbnRlbnRzTGF5ZXJBdChXS0Nvb3JkaW5hdGVkU2NlbmUsIFdLUG9pbnQpOworV0tfRVhQT1JU
IHVpbnQzMl90IFdLQ29vcmRpbmF0ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5l
TGF5ZXIpOworV0tfRVhQT1JUIHZvaWQgV0tDb29yZGluYXRlZFNjZW5lU2Nyb2xsQnkoV0tDb29y
ZGluYXRlZFNjZW5lTGF5ZXIsIFdLU2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmIC8vIF9fY3BsdXNwbHVzCisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmlu
ZGV4IDAxOGJkMTcuLmY3ZTMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5jcHAKQEAgLTE2OCw1ICsxNjgsMTAgQEAgdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnNldEJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKIH0KIAordm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQz
Ml90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2RyYXdpbmdBcmVh
UHJveHktPnBhZ2UoKS0+cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OkNvbW1pdFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdB
cmVhUHJveHktPnBhZ2UoKS0+cGFnZUlEKCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmgKaW5kZXggZDE2OGJjZC4uNDQ4NmEwZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04Nyw2ICs4Nyw4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwogCisgICAgdmly
dHVhbCB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBvZmZzZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVw
ZGF0ZShjb25zdCBGdW5jdGlvbjx2b2lkKCk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNh
c3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29v
cmRpbmF0ZWRTY2VuZUFQSUNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5mYzlmMGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3RfaAorI2RlZmluZSBXS0Nvb3JkaW5h
dGVkU2NlbmVBUElDYXN0X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb29yZGluYXRlZFNjZW5l
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOworY2xhc3MgVGV4dHVyZU1hcHBlckxheWVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKK2lubGluZSBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHRvSW1wbChXS0Nv
b3JkaW5hdGVkU2NlbmUgc2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2Vi
Q29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lKj4oc2NlbmUpOworfQorCitpbmxpbmUgV0tD
b29yZGluYXRlZFNjZW5lIHRvQVBJKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSog
c2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5l
PihzY2VuZSk7Cit9CisKK2lubGluZSBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvSW1w
bChXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBsYXllcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqPihsYXllcik7Cit9CisKK2lubGlu
ZSBXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciB0b0FQSShXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXIqIGxheWVyKQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ29vcmRpbmF0ZWRT
Y2VuZUxheWVyPihsYXllcik7Cit9CisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVBUElD
YXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExh
eWVyVHJlZUhvc3QuY3BwCmluZGV4IDQ1ZmQzOTUuLmNjZjhlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAt
NzIsOSArNzIsOSBAQCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVy
VHJlZUhvc3QoKQogI2VuZGlmCiAgICAgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKLSAgICBIYXNo
U2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRDb29yZGluYXRvcigw
KTsKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgp
OworICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5zZXRDb29yZGluYXRv
cigwKTsKIH0KIAogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJl
ZUhvc3QoV2ViUGFnZSogd2ViUGFnZSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiB7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllcik7
CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7CiAgICAgbV9sYXll
cnNUb0RlbGV0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgp
OwogfQpAQCAtNjI0LDcgKzYyNCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiB7CiAgICAg
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIoY2xpZW50KTsKICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7Ci0gICAgbV9y
ZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChs
YXllci0+aWQoKSwgbGF5ZXIpOwogICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5p
ZCgpKTsKICAgICBsYXllci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTY4Miw5ICs2ODIsOSBAQCB2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbgogICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNp
YmxlQ29udGVudHNSZWN0ID0gcmVjdDsKIAotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMu
ZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVz
dG1lbnQoKTsKKyAgICAgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExh
eWVycy5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lz
dGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+
dmFsdWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTczMyw5ICs3MzMsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVy
Z2VCYWNraW5nU3RvcmVzKCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1Rv
Z2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+
OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpCi0gICAgICAgICgqaXQpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICBMYXllck1hcDo6
aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoTGF5ZXJN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIG1f
aW1hZ2VCYWNraW5ncy5jbGVhcigpOwogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwpAQCAt
Nzk5LDUgKzc5OSwxNCBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBtX3N0YXRlLmJhY2tn
cm91bmRDb2xvciA9IGNvbG9yOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIG9mZnNldCkKK3sKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0ZXJlZExh
eWVycy5maW5kKGxheWVySUQpOworICAgIGlmIChpID09IG1fcmVnaXN0ZXJlZExheWVycy5lbmQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaS0+dmFsdWUtPmNvbW1pdFNjcm9sbE9mZnNldChv
ZmZzZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDY1MzZhZDcuLmEyMTc0ZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBA
IC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6
OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKIAorICAg
IHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QoV2ViUGFnZSopOwogCkBAIC0xNzIsNyArMTc0LDggQEAgcHJpdmF0ZToK
IAogICAgIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBtX3N0YXRlOwogCi0gICAg
SGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRM
YXllcnM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwg
V2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7CisgICAgTGF5ZXJN
YXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExh
eWVySUQ+IG1fbGF5ZXJzVG9DcmVhdGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVk
TGF5ZXJJRD4gbV9sYXllcnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6
Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgpp
bmRleCA2NjcxYjMyLi5lNzMyMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0y
Nyw1ICsyNyw2IEBAIG1lc3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBMZWdhY3lS
ZWNlaXZlciB7CiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIEFuaW1h
dGlvbkZyYW1lUmVhZHkoKQogI2VuZGlmCisgICAgQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90
IGxheWVySUQsIFdlYkNvcmU6OkludFNpemUgb2Zmc2V0KQogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWQwYWMxMC4uMjBl
OGU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMjMyNCw2ICsyMzI0LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0RWRpdGFi
bGVMaW5rQmVoYXZpb3Ioc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3I+
KHN0b3JlLmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjplZGl0YWJsZUxp
bmtCZWhhdmlvcktleSgpKSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93c1Rvb2xUaXBPdmVyVHJ1
bmNhdGVkVGV4dChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNo
b3dzVG9vbFRpcE92ZXJUcnVuY2F0ZWRUZXh0S2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
ck92ZXJmbG93U2Nyb2xsRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkgJiYgTGF5ZXJUcmVl
SG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIHNldHRpbmdzLT5z
ZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQ
cmVmZXJlbmNlc0tleTo6YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRy
ZWVIb3N0OjpzdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3Mt
PnNldENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nS2V5KCkpICYm
IExheWVyVHJlZUhvc3Q6OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKLS0gCjEu
Ny45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191707</attachid>
            <date>2013-03-06 03:47:23 -0800</date>
            <delta_ts>2013-03-06 04:09:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-Accelerated-overflow-scrolling-for-Coordinated-Graph.patch</filename>
            <type>text/plain</type>
            <size>55681</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA0ZTNjZTkyNDZkNDk3ZDVhN2JjZjdjNzUxMDYyMzAwNmQyMzViZWQ3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCA2IE1hciAyMDEzIDAzOjQwOjMxIC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
QWNjZWxlcmF0ZWQgb3ZlcmZsb3cgc2Nyb2xsaW5nIGZvciBDb29yZGluYXRlZCBHcmFwaGljcy4K
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKClNvdXJjZS9X
ZWJDb3JlOgoKUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuCgpBIHNjcm9sbCBvZmZzZXQgaXMg
YXBwbGllZCB0byBpbmRpdmlkdWFsIGxheWVycyBvbiBVSSBwcm9jZXNzIGFuZCB0aGUKd2ViIHBy
b2Nlc3MgaXMgbm90aWZpZWQgYXNzeW5jaHJvbm91c2x5LgpUaGUgbmV3IEFQSSBXS0Nvb3JkaW5h
dGVkU2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4K
ClRlc3RzIHdpbGwgYmUgYWRkZWQgb24gYnVnICMxMTExNDAuCgpTY3JvbGxpbmcgY29vcmRpbmF0
b3IgaXMgdXNlZCB0byBwcm92aWRlIGEgU2Nyb2xsYWJsZUFyZWEgdG8gQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyLgoKKiBwYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHA6CihXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJE
aWRDaGFuZ2UpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3Jk
aW5hdGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgoqIHBhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmg6CihTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MpOgoKR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXIgaXMgcmVzcG9uc2libGUgZm9yIHJlY2VpdmluZyB0aGUg
J2RpZCBjb21taXQnIG1lc3NhZ2VzIGFuZCB0byBwYXNzCnRoZW0gdG8gaXRzIFRleHR1cmVNYXBw
ZXJMYXllciBvbiB0aGUgYXBwcm9wcmlhdGVkIHRpbWUuCgoqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIpOgooV2ViQ29yZTo6
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmRpZENvbW1pdFNjcm9sbE9mZnNldCk6CihXZWJD
b3JlKToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJc1Njcm9sbGFi
bGUpOgooV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OmNvbW1pdExheWVyQ2hh
bmdlcyk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmg6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6c2V0U2Nyb2xsQ2xp
ZW50KToKKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRJRCk6CihHcmFw
aGljc0xheWVyVGV4dHVyZU1hcHBlcik6CihXZWJDb3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcjo6aXNTY3JvbGxhYmxlKToKClRleHR1cmVNYXBwZXJMYXllciBpcyByZXNwb25zaWJsZSBm
b3IgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBzY3JvbGwgb2Zmc2V0IGFuZCBmb3IKc2VuZGluZyB0
aGUgY29tbWl0IG1lc3NhZ2VzIHRvIHdlYiBwcm9jZXNzLiBJdCBpcyBhbHNvIGFibGUgdG8gaGl0
dGVzdCBsYXllcnMgYW5kIGlkZW50aWZ5CnRoZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCgoq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgooV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0KToKKFdlYkNvcmUpOgooV2ViQ29yZTo6VGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKToKKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJMYXllcjo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjptYXBTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpzY3JvbGxCeSk6CihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmRp
ZENvbW1pdFNjcm9sbE9mZnNldCk6CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJMYXllci5oOgooVGV4dHVyZU1hcHBlckxheWVyKToKKFNjcm9sbGluZ0NsaWVudCk6CihX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OlRleHR1cmVNYXBwZXJMYXllcik6CihXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnNldElEKToKKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6aWQpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRTY3JvbGxDbGllbnQpOgoo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjppc1Njcm9sbGFibGUpOgooV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckxheWVyOjphZGp1c3RlZFBvc2l0aW9uKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciByZWNl
aXZlcyB0aGUgY29tbWl0IG1lc3NhZ2VzIGFuZCB1cGRhdGVzIGl0cyBTY3JvbGxhYmxlQXJlYS4K
CiogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHA6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5h
dGVkR3JhcGhpY3NMYXllcik6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dFNjcm9sbGFibGVBcmVhKToKKFdlYkNvcmUpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpjb21taXRTY3JvbGxPZmZzZXQpOgooV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZXNldExheWVyU3RhdGUpOgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29y
ZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKFdlYkNvcmUpOgooQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKToKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aXNT
Y3JvbGxhYmxlKToKCkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSByZWNlaXZlcyB0aGUgY29tbWl0
IG1lc3NhZ2VzIGZyb20gVGV4dHVyZU1hcHBlckxheWVyIGFuZApkaXNwYXRjaGVzIHRoZW0gb24g
dGhlIG1haW4gdGhyZWFkLiBJdCBhbHNvIGhhcyBhIG5ldyBtZXRob2QgdGhhdCBpcyB1c2VkIHRv
IGZpbmQKdGhlIHRvcG1vc3Qgc2Nyb2xsYWJsZSBsYXllciBhdCBhIGdpdmVuIHBvaW50LgoKKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcDoKKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJTdGF0
ZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKToKKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZz
ZXQpOgooV2ViQ29yZSk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmNvbW1p
dFNjcm9sbE9mZnNldCk6CihXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRT
Y3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmg6CihXZWJDb3JlKToKKENvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZUNsaWVudCk6CihDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUpOgoKTmV3
IGZpZWxkcyBoYXZlIGJlZW4gYWRkZWQgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3RhdGUu
CgoqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaDoKKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlKToKClNvdXJjZS9XZWJL
aXQyOgoKUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwuClNpZ25lZCBvZmYgZm9yIFdlYktpdDIg
YnkgU2ltb24gRnJhc2VyLgoKQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8gaW5kaXZpZHVh
bCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCndlYiBwcm9jZXNzIGlzIG5vdGlmaWVkIGFz
c3luY2hyb25vdXNseS4KVGhlIG5ldyBBUEkgV0tDb29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2Vk
IHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHByb2Nlc3MuCgoqIENNYWtlTGlzdHMudHh0OgoK
RW5jb2RpbmcgYW5kIGRlY29kaW5nIHRoZSBuZXcgbWVtYmVycyBvZiBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZS4KCiogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKENvcmVJUEM6Ojo6ZW5jb2RlKToKKENvcmVJUEM6
Ojo6ZGVjb2RlKToKCkFkZGluZyBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3Jv
bGxFbmFibGVkIHRvIFdlYlByZWZlcmVuY2VzU3RvcmUuCgoqIFNoYXJlZC9XZWJQcmVmZXJlbmNl
c1N0b3JlLmg6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgooV2ViS2l0OjpXZWJQ
YWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6CgpOZXcgQVBJIFdLQ29vcmRpbmF0ZWRTY2VuZSBpcyB1
c2VkIHRvIHNjcm9sbCBsYXllcnMgb24gVUkgc2lkZS4KCiogVUlQcm9jZXNzL0FQSS9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5jcHA6CiogVUlQcm9jZXNzL0FQSS9Db29y
ZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oOgoqIFVJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaDoKCkEgbmV3IG1lc3NhZ2Ug
aXMgdXNlZCB0byBzZW5kIHNjcm9sbCBjb21taXQgbWVzc2FnZXMgdG8gd2ViIHByb2Nlc3MuCgoq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OmNvbW1pdFNj
cm9sbE9mZnNldCk6CihXZWJLaXQpOgoqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6CihDb29yZGluYXRlZExheWVyVHJlZUhvc3RQ
cm94eSk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcDoKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpkZXRhY2hMYXllcik6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3Jl
YXRlR3JhcGhpY3NMYXllcik6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0
VmlzaWJsZUNvbnRlbnRzUmVjdCk6CihXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
cHVyZ2VCYWNraW5nU3RvcmVzKToKKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
b21taXRTY3JvbGxPZmZzZXQpOgooV2ViS2l0KToKKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdCk6CiogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOgotLS0KIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5NSArKysrKysrKysrKysrKysr
KysrKwogLi4uL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAgICAg
fCAgIDE4ICsrKysKIC4uLi9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3Mu
aCAgICAgIHwgICAgMiArCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcCB8ICAgMjUgKysrKysrCiAuLi4vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyLmggICB8ICAgMTUgKysrLQogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTGF5ZXIuY3BwICAgICAgICAgfCAgIDgxICsrKysrKysrKysrKysrKysrCiAuLi4v
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5oICB8ICAgMzQgKysr
KysrLQogLi4uL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgICAgICAg
fCAgIDI2ICsrKysrKwogLi4uL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaCAgfCAgICA3ICsrCiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcCAgICAgICB8ICAgMjMgKysrKysKIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lLmggIHwgICAxMSArKy0KIC4uLi90ZXhtYXAvY29vcmRpbmF0ZWQv
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmggIHwgICAgNSArKwogU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgfCAgICA1ICsrCiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTEgKysrKysrKysrKysK
IC4uLi9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwICAgICAgICAgIHwgICAg
NiArKwogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCAgICAgICAg
fCAgICAxICsKIC4uLi9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUu
Y3BwIHwgICA0OSArKysrKysrKysrCiAuLi4vQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29y
ZGluYXRlZFNjZW5lLmggICB8ICAgNDggKysrKysrKysrKwogLi4uL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdFByb3h5LmNwcCAgICAgICAgICAgICAgfCAgICA1ICsrCiAuLi4vQ29vcmRpbmF0ZWRM
YXllclRyZWVIb3N0UHJveHkuaCAgICAgICAgICAgICAgICB8ICAgIDIgKwogLi4uL1dLQ29vcmRp
bmF0ZWRTY2VuZUFQSUNhc3QuaCAgICAgICAgICAgICAgICAgICAgfCAgIDYwICsrKysrKysrKysr
KysKIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwICAgICAgICAgICAgICAgICAgIHwg
ICAzMSArKysrLS0tCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuaCB8ICAgIDUgKy0KIC4uLi9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMu
aW4gICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgICAgICB8ICAgIDEgKwogMjUgZmlsZXMgY2hhbmdlZCwgNTkxIGluc2VydGlv
bnMoKyksIDE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3Bw
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db29yZGlu
YXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lQVBJQ2FzdC5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM1MThmNjUuLmQwNDJkMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw5OCBAQAorMjAxMy0wMy0wNSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAbm9raWEuY29tPgorCisgICAgICAgIEFjY2VsZXJhdGVkIG92ZXJmbG93IHNjcm9sbGluZyBm
b3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2Vu
dGhhbC4KKworICAgICAgICBBIHNjcm9sbCBvZmZzZXQgaXMgYXBwbGllZCB0byBpbmRpdmlkdWFs
IGxheWVycyBvbiBVSSBwcm9jZXNzIGFuZCB0aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgaXMgbm90
aWZpZWQgYXNzeW5jaHJvbm91c2x5LgorICAgICAgICBUaGUgbmV3IEFQSSBXS0Nvb3JkaW5hdGVk
U2NlbmUgbWF5IGJlIHVzZWQgdG8gc2Nyb2xsIGxheWVycyBpbiB0aGUgVUkgcHJvY2Vzcy4KKwor
ICAgICAgICBUZXN0cyB3aWxsIGJlIGFkZGVkIG9uIGJ1ZyAjMTExMTQwLgorCisgICAgICAgIFNj
cm9sbGluZyBjb29yZGluYXRvciBpcyB1c2VkIHRvIHByb3ZpZGUgYSBTY3JvbGxhYmxlQXJlYSB0
byBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9j
b29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGlj
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3M6OnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5h
dGVkR3JhcGhpY3M6OndpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEpOgorICAgICAgICAqIHBhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGlu
YXRlZEdyYXBoaWNzLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MpOgorCisgICAgICAgIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyIGlzIHJlc3Bv
bnNpYmxlIGZvciByZWNlaXZpbmcgdGhlICdkaWQgY29tbWl0JyBtZXNzYWdlcyBhbmQgdG8gcGFz
cworICAgICAgICB0aGVtIHRvIGl0cyBUZXh0dXJlTWFwcGVyTGF5ZXIgb24gdGhlIGFwcHJvcHJp
YXRlZCB0aW1lLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6ZGlkQ29tbWl0U2Nyb2xsT2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXI6OnNldElzU2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlcjo6Y29tbWl0TGF5ZXJDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjpzZXRTY3JvbGxDbGllbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnNldElEKToKKyAg
ICAgICAgKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjppc1Njcm9sbGFibGUpOgorCisgICAgICAgIFRleHR1
cmVNYXBwZXJMYXllciBpcyByZXNwb25zaWJsZSBmb3IgYXBwbHlpbmcgdGhlIHJlcXVlc3RlZCBz
Y3JvbGwgb2Zmc2V0IGFuZCBmb3IKKyAgICAgICAgc2VuZGluZyB0aGUgY29tbWl0IG1lc3NhZ2Vz
IHRvIHdlYiBwcm9jZXNzLiBJdCBpcyBhbHNvIGFibGUgdG8gaGl0dGVzdCBsYXllcnMgYW5kIGlk
ZW50aWZ5CisgICAgICAgIHRoZSBvbmVzIHRoYXQgYXJlIHNjcm9sbGFibGUuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6aGl0VGVzdCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsYWJsZUxh
eWVySGl0VGVzdENvbmRpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5
ZXI6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJMYXllcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJMYXllcjo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckxheWVyOjpkaWRDb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuaDoKKyAgICAgICAgKFRleHR1cmVN
YXBwZXJMYXllcik6CisgICAgICAgIChTY3JvbGxpbmdDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dHVyZU1hcHBlckxheWVyOjpUZXh0dXJlTWFwcGVyTGF5ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpzZXRJRCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyTGF5ZXI6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0U2Nyb2xsQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6c2V0SXNTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXll
cjo6aXNTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6
YWRqdXN0ZWRQb3NpdGlvbik6CisKKyAgICAgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyIHJl
Y2VpdmVzIHRoZSBjb21taXQgbWVzc2FnZXMgYW5kIHVwZGF0ZXMgaXRzIFNjcm9sbGFibGVBcmVh
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldFNjcm9sbGFibGVBcmVhKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpj
b21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGlj
c0xheWVyOjpyZXNldExheWVyU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aXNTY3JvbGxhYmxlKToKKworICAgICAg
ICBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgcmVjZWl2ZXMgdGhlIGNvbW1pdCBtZXNzYWdlcyBm
cm9tIFRleHR1cmVNYXBwZXJMYXllciBhbmQKKyAgICAgICAgZGlzcGF0Y2hlcyB0aGVtIG9uIHRo
ZSBtYWluIHRocmVhZC4gSXQgYWxzbyBoYXMgYSBuZXcgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBm
aW5kCisgICAgICAgIHRoZSB0b3Btb3N0IHNjcm9sbGFibGUgbGF5ZXIgYXQgYSBnaXZlbiBwb2lu
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpzZXRMYXllclN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZTo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NTY2VuZTo6ZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Q2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSk6CisKKyAgICAgICAg
TmV3IGZpZWxkcyBoYXZlIGJlZW4gYWRkZWQgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29v
cmRpbmF0ZWRHcmFwaGljc1N0YXRlLmg6CisgICAgICAgIChDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJTdGF0ZSk6CisKIDIwMTMtMDMtMDYgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmpl
bnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgUkVHR1JFU1NJT04gKHIxNDIxMTIpOiBJdCBtYWRl
IGNvbXBvc2l0aW5nIHRlc3RzIGZhaWwgb24gRUZMLCBRdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdy
YXBoaWNzLmNwcAppbmRleCBhMWJmM2JkLi45ZDhlYzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVk
R3JhcGhpY3MuY3BwCkBAIC00Nyw2ICs0NywyNCBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q29vcmRpbmF0ZWRHcmFwaGljczo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcgog
ICAgIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGxheWVyKS0+c2V0Rml4ZWRUb1ZpZXdwb3J0
KGVuYWJsZSk7CiB9CiAKK3ZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBo
aWNzOjpzY3JvbGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKiBz
Y3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
dG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShz
Y3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSk7Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzOjp3aWxsRGVzdHJveVNjcm9sbGFi
bGVBcmVhKFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKK3sKKyAgICBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoc2Nyb2xs
TGF5ZXJGb3JTY3JvbGxhYmxlQXJlYShzY3JvbGxhYmxlQXJlYSkpOworICAgIGlmICghbGF5ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlQXJlYSgwKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRp
bmF0ZWRncmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmgKaW5kZXggNGUwNGJiZS4uNjc0OGU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRn
cmFwaGljcy9TY3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb29yZGluYXRlZGdyYXBoaWNzL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ29vcmRpbmF0ZWRHcmFwaGljcy5oCkBAIC0zOSw2ICszOSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySXNGaXhlZFRvQ29u
dGFpbmVyTGF5ZXIoR3JhcGhpY3NMYXllciosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKFNjcm9sbGFibGVBcmVhKik7CisgICAgdmly
dHVhbCB2b2lkIHdpbGxEZXN0cm95U2Nyb2xsYWJsZUFyZWEoU2Nyb2xsYWJsZUFyZWEqKTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCmluZGV4IDgwMTNlYzQuLmYzMjYyMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTcsNiArNTcsNyBAQCBHcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlcjo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoR3JhcGhpY3NMYXllckNs
aWVudCogY2xpZQogICAgICwgbV9kZWJ1Z0JvcmRlcldpZHRoKDApCiAgICAgLCBtX2NvbnRlbnRz
TGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3RhcnRUaW1lKDApCisgICAgLCBtX2lzU2Nyb2xs
YWJsZShmYWxzZSkKIHsKIH0KIApAQCAtNDAzLDYgKzQwNCwyNCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyOjpzZXRTaG93UmVwYWludENvdW50ZXIoYm9vbCBzaG93KQogICAgIG5v
dGlmeUNoYW5nZShEZWJ1Z1Zpc3VhbHNDaGFuZ2UpOwogfQogCit2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpkaWRDb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgb2Zmc2V0
KQoreworICAgIGlmIChvZmZzZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Y29tbWl0dGVkU2Nyb2xsT2Zmc2V0ID0gb2Zmc2V0OworICAgIG5vdGlmeUNoYW5nZShDb21taXR0
ZWRTY3JvbGxPZmZzZXRDaGFuZ2UpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyOjpzZXRJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCit7CisgICAgaWYgKG1faXNT
Y3JvbGxhYmxlID09IGlzU2Nyb2xsYWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1Nj
cm9sbGFibGUgPSBpc1Njcm9sbGFibGU7CisgICAgbm90aWZ5Q2hhbmdlKElzU2Nyb2xsYWJsZUNo
YW5nZSk7Cit9CisKIC8qIFxyZWltcCAoR3JhcGhpY3NMYXllci5oKQogKi8KIHZvaWQgR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9u
bHkoKQpAQCAtNTQzLDYgKzU2MiwxMiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
Ojpjb21taXRMYXllckNoYW5nZXMoKQogICAgIGlmIChtX2NoYW5nZU1hc2sgJiBGaXhlZFRvVmll
d3BvckNoYW5nZSkKICAgICAgICAgbV9sYXllci0+c2V0Rml4ZWRUb1ZpZXdwb3J0KGZpeGVkVG9W
aWV3cG9ydCgpKTsKIAorICAgIGlmIChtX2NoYW5nZU1hc2sgJiBJc1Njcm9sbGFibGVDaGFuZ2Up
CisgICAgICAgIG1fbGF5ZXItPnNldElzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUoKSk7CisKKyAg
ICBpZiAobV9jaGFuZ2VNYXNrICYgQ29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlKQorICAgICAg
ICBtX2xheWVyLT5kaWRDb21taXRTY3JvbGxPZmZzZXQobV9jb21taXR0ZWRTY3JvbGxPZmZzZXQp
OworCiAgICAgbV9jaGFuZ2VNYXNrID0gTm9DaGFuZ2VzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0xheWVyVGV4dHVyZU1hcHBlci5oCmluZGV4IDkzMjlmYmMuLjYwNDQ0ZWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oCkBAIC0zNCw2ICszNCw5IEBAIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcihHcmFwaGljc0xheWVyQ2xp
ZW50Kik7CiAgICAgdmlydHVhbCB+R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIoKTsKIAorICAg
IHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFRleHR1cmVNYXBwZXJMYXllcjo6U2Nyb2xsaW5nQ2xpZW50
KiBjbGllbnQpIHsgbV9sYXllci0+c2V0U2Nyb2xsQ2xpZW50KGNsaWVudCk7IH0KKyAgICB2b2lk
IHNldElEKHVpbnQzMl90IGlkKSB7IG1fbGF5ZXItPnNldElEKGlkKTsgfQorCiAgICAgLy8gcmVp
bXBzIGZyb20gR3JhcGhpY3NMYXllci5oCiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxh
eSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c05lZWRzRGlzcGxheSgpOwpAQCAtODEs
NiArODQsMTAgQEAgcHVibGljOgogCiAgICAgVGV4dHVyZU1hcHBlckxheWVyKiBsYXllcigpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7IH0KIAorICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xs
T2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sKTsK
KyAgICBib29sIGlzU2Nyb2xsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JvbGxhYmxlOyB9
CisKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgdmlydHVhbCBib29sIHNldEZpbHRlcnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwogI2VuZGlmCkBAIC0xNDMsNyArMTUwLDEwIEBAIHBy
aXZhdGU6CiAgICAgICAgIFJlcGFpbnRDb3VudENoYW5nZSA9ICAgICAgICAoMUwgPDwgMjUpLAog
CiAgICAgICAgIEZpeGVkVG9WaWV3cG9yQ2hhbmdlID0gICAgICAoMUwgPDwgMjYpLAotICAgICAg
ICBBbmltYXRpb25TdGFydGVkID0gICAgICAgICAgKDFMIDw8IDI3KQorICAgICAgICBBbmltYXRp
b25TdGFydGVkID0gICAgICAgICAgKDFMIDw8IDI3KSwKKworICAgICAgICBDb21taXR0ZWRTY3Jv
bGxPZmZzZXRDaGFuZ2UgPSAgICAgKDFMIDw8IDI4KSwKKyAgICAgICAgSXNTY3JvbGxhYmxlQ2hh
bmdlID0gICAgICAgICAgICAgICgxTCA8PCAyOSkKICAgICB9OwogICAgIHZvaWQgbm90aWZ5Q2hh
bmdlKENoYW5nZU1hc2spOwogCkBAIC0xNjUsNiArMTc1LDkgQEAgcHJpdmF0ZToKICAgICBGbG9h
dFJlY3QgbV9uZWVkc0Rpc3BsYXlSZWN0OwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1f
YW5pbWF0aW9uczsKICAgICBkb3VibGUgbV9hbmltYXRpb25TdGFydFRpbWU7CisKKyAgICBJbnRT
aXplIG1fY29tbWl0dGVkU2Nyb2xsT2Zmc2V0OworICAgIGJvb2wgbV9pc1Njcm9sbGFibGU7CiB9
OwogCiBpbmxpbmUgc3RhdGljIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiB0b0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ckxheWVyLmNwcAppbmRleCAxMGJlZjI2Li4xZDBhYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxh
eWVyLmNwcApAQCAtMjAsNyArMjAsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJMYXllci5oIgogCisjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiUmVnaW9uLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIApAQCAtNjczLDUgKzY3NSw4NCBAQCB2b2lkIFRleHR1cmVN
YXBwZXJMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb25EZWx0YUlmTmVlZGVkKGNvbnN0IEZsb2F0U2l6
ZSYgZGVsdGEpCiAgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9z
aXRpb24oKSk7CiB9CiAKK3RlbXBsYXRlPGNsYXNzIEhpdFRlc3RDb25kaXRpb24+IFRleHR1cmVN
YXBwZXJMYXllciogVGV4dHVyZU1hcHBlckxheWVyOjpoaXRUZXN0KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50LCBIaXRUZXN0Q29uZGl0aW9uIGNvbmRpdGlvbikKK3sKKyAgICBpZiAoIW1fc3RhdGUu
dmlzaWJsZSB8fCAhbV9zdGF0ZS5jb250ZW50c1Zpc2libGUpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgVGV4dHVyZU1hcHBlckxheWVyKiByZXN1bHQgPSAwOworICAgIGZvciAoaW50IGkgPSBt
X2NoaWxkcmVuLnNpemUoKSAtIDE7ICFyZXN1bHQgJiYgaSA+PSAwOyAtLWkpCisgICAgICAgIHJl
c3VsdCA9IG1fY2hpbGRyZW5baV0tPmhpdFRlc3QocG9pbnQsIGNvbmRpdGlvbik7CisKKyAgICBp
ZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGNvbmRpdGlv
bih0aGlzLCBwb2ludCkgPyB0aGlzIDogMDsKK30KKworYm9vbCBUZXh0dXJlTWFwcGVyTGF5ZXI6
OnNjcm9sbGFibGVMYXllckhpdFRlc3RDb25kaXRpb24oVGV4dHVyZU1hcHBlckxheWVyKiBsYXll
ciwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpCit7CisgICAgLy8gc2Nyb2xsaW5nIGxheWVyJ3Mg
bV9wYXJlbnQtPm1fcGFyZW50LCB0aGUgcGFyZW50IG9mIHRoZSBzY3JvbGxpbmcgbGF5ZXMsIGlz
IHRoZSBvbmUgdGhhdCBkZWZpbmVzIHRoZQorICAgIC8vIHJlY3RhbmdsZSB0byBiZSB1c2VkIGZv
ciBoaXQgdGVzdGluZy4KKyAgICBpZiAoIWxheWVyLT5pc1Njcm9sbGFibGUoKSB8fCAhbGF5ZXIt
Pm1fcGFyZW50IHx8ICFsYXllci0+bV9wYXJlbnQtPm1fcGFyZW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBUZXh0dXJlTWFwcGVyTGF5ZXIqIHBhcmVudExheWVyID0gbGF5ZXItPm1f
cGFyZW50LT5tX3BhcmVudDsKKworICAgIEZsb2F0UmVjdCByZWN0OworICAgIGlmIChwYXJlbnRM
YXllci0+bV9iYWNraW5nU3RvcmUpCisgICAgICAgIHJlY3QgPSBwYXJlbnRMYXllci0+bGF5ZXJS
ZWN0KCk7CisgICAgZWxzZSBpZiAocGFyZW50TGF5ZXItPm1fY29udGVudHNMYXllcikKKyAgICAg
ICAgcmVjdCA9IHBhcmVudExheWVyLT5tX3N0YXRlLmNvbnRlbnRzUmVjdDsKKworICAgIHJldHVy
biBwYXJlbnRMYXllci0+bV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkubWFwUXVhZChyZWN0
KS5jb250YWluc1BvaW50KHBvaW50KTsKK30KKworVGV4dHVyZU1hcHBlckxheWVyKiBUZXh0dXJl
TWFwcGVyTGF5ZXI6OmZpbmRTY3JvbGxhYmxlQ29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9p
bnQmIHBvaW50KQoreworICAgIHJldHVybiBoaXRUZXN0KHBvaW50LCAmVGV4dHVyZU1hcHBlckxh
eWVyOjpzY3JvbGxhYmxlTGF5ZXJIaXRUZXN0Q29uZGl0aW9uKTsKK30KKworRmxvYXRTaXplIFRl
eHR1cmVNYXBwZXJMYXllcjo6bWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0
KQoreworICAgIGRvdWJsZSB6ZXJvWCwgemVyb1ksIG9mZnNldFgsIG9mZnNldFk7CisgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVk
KCkuaW52ZXJzZSgpOworICAgIHRyYW5zZm9ybS5tYXAoMCwgMCwgemVyb1gsIHplcm9ZKTsKKyAg
ICB0cmFuc2Zvcm0ubWFwKG9mZnNldC53aWR0aCgpLCBvZmZzZXQuaGVpZ2h0KCksIG9mZnNldFgs
IG9mZnNldFkpOworICAgIHJldHVybiBGbG9hdFNpemUob2Zmc2V0WCAtIHplcm9YLCBvZmZzZXRZ
IC0gemVyb1kpOworfQorCit2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tbWl0U2Nyb2xsT2Zm
c2V0KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0KQoreworICAgIEZsb2F0U2l6ZSBmdWxsT2Zmc2V0
ID0gbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0ICsgb2Zmc2V0OworCisg
ICAgaW50IGludFdpZHRoID0gcm91bmQoZnVsbE9mZnNldC53aWR0aCgpKTsKKyAgICBpbnQgaW50
SGVpZ2h0ID0gcm91bmQoZnVsbE9mZnNldC5oZWlnaHQoKSk7CisKKyAgICAvLyBtX2FjY3VtdWxh
dGVkU2Nyb2xsT2Zmc2V0RnJhY3Rpb25hbFBhcnQgaG9sZHMgdGhlIGZyYWN0aW9uYWwgcGFydCBv
ZiB0aGUgdXNlciBzY3JvbGwgb2Zmc2V0IHRoYXQKKyAgICAvLyBoYXMgbm90IHlldCBiZWVuIHN5
bmNlZCB3aXRoIHRoZSB3ZWIgcHJvY2VzcyBiZWNhdXNlIHRoZSB3ZWIgcHJvY2VzcyBleHBlY3Rz
IGFuIEludFNpemUuCisgICAgbV9hY2N1bXVsYXRlZFNjcm9sbE9mZnNldEZyYWN0aW9uYWxQYXJ0
ID0gRmxvYXRTaXplKGZ1bGxPZmZzZXQud2lkdGgoKSAtIGludFdpZHRoLCBmdWxsT2Zmc2V0Lmhl
aWdodCgpIC0gaW50SGVpZ2h0KTsKKworICAgIG1fc2Nyb2xsQ2xpZW50LT5jb21taXRTY3JvbGxP
ZmZzZXQobV9pZCwgSW50U2l6ZShpbnRXaWR0aCwgaW50SGVpZ2h0KSk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpzY3JvbGxCeShjb25zdCBGbG9hdFNpemUmIG9mZnNldCkKK3sKKyAg
ICBpZiAoIWlzU2Nyb2xsYWJsZSgpIHx8ICFtX3Njcm9sbENsaWVudCB8fCBvZmZzZXQuaXNaZXJv
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0U2l6ZSBzY3JvbGxPZmZzZXQgPSBtYXBT
Y3JvbGxPZmZzZXQob2Zmc2V0KTsKKyAgICBtX3VzZXJTY3JvbGxPZmZzZXQgKz0gc2Nyb2xsT2Zm
c2V0OworCisgICAgbV9jdXJyZW50VHJhbnNmb3JtLnNldFBvc2l0aW9uKGFkanVzdGVkUG9zaXRp
b24oKSk7CisgICAgY29tbWl0U2Nyb2xsT2Zmc2V0KHNjcm9sbE9mZnNldCk7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlckxheWVyOjpkaWRDb21taXRTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYg
b2Zmc2V0KQoreworICAgIG1fdXNlclNjcm9sbE9mZnNldCA9IEZsb2F0U2l6ZShtX3VzZXJTY3Jv
bGxPZmZzZXQud2lkdGgoKSAtIG9mZnNldC53aWR0aCgpLCBtX3VzZXJTY3JvbGxPZmZzZXQuaGVp
Z2h0KCkgLSBvZmZzZXQuaGVpZ2h0KCkpOworICAgIG1fY3VycmVudFRyYW5zZm9ybS5zZXRQb3Np
dGlvbihhZGp1c3RlZFBvc2l0aW9uKCkpOworfQorCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuaAppbmRleCA2MDJiMmMzLi4xZDNjNjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5o
CkBAIC0zOSw2ICszOSwxMiBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyTGF5ZXIgOiBwdWJsaWMgR3Jh
cGhpY3NMYXllckFuaW1hdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShU
ZXh0dXJlTWFwcGVyTGF5ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgorCisgICAgY2xhc3MgU2Nyb2xsaW5nQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KSA9IDA7CisgICAgfTsKKwogICAgIFRleHR1cmVNYXBwZXJMYXllcigpCiAg
ICAgICAgIDogbV9wYXJlbnQoMCkKICAgICAgICAgLCBtX2VmZmVjdFRhcmdldCgwKQpAQCAtNDcs
MTAgKzUzLDI1IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2NlbnRlclooMCkKICAgICAgICAgLCBt
X3RleHR1cmVNYXBwZXIoMCkKICAgICAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKKyAg
ICAgICAgLCBtX2lkKDApCisgICAgICAgICwgbV9zY3JvbGxDbGllbnQoMCkKKyAgICAgICAgLCBt
X2lzU2Nyb2xsYWJsZShmYWxzZSkKICAgICB7IH0KIAogICAgIHZpcnR1YWwgflRleHR1cmVNYXBw
ZXJMYXllcigpOwogCisgICAgdm9pZCBzZXRJRCh1aW50MzJfdCBpZCkgeyBtX2lkID0gaWQ7IH0K
KyAgICB1aW50MzJfdCBpZCgpIHsgcmV0dXJuIG1faWQ7IH0KKworICAgIFRleHR1cmVNYXBwZXJM
YXllciogZmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoY29uc3QgRmxvYXRQb2ludCYgcG9z
KTsKKworICAgIHZvaWQgc2V0U2Nyb2xsQ2xpZW50KFNjcm9sbGluZ0NsaWVudCogc2Nyb2xsQ2xp
ZW50KSB7IG1fc2Nyb2xsQ2xpZW50ID0gc2Nyb2xsQ2xpZW50OyB9CisgICAgdm9pZCBzY3JvbGxC
eShjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKworICAgIHZvaWQgZGlkQ29tbWl0U2Nyb2xs
T2Zmc2V0KGNvbnN0IEludFNpemUmKTsKKyAgICB2b2lkIHNldElzU2Nyb2xsYWJsZShib29sIGlz
U2Nyb2xsYWJsZSkgeyBtX2lzU2Nyb2xsYWJsZSA9IGlzU2Nyb2xsYWJsZTsgfQorICAgIGJvb2wg
aXNTY3JvbGxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Njcm9sbGFibGU7IH0KKwogICAgIFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFRleHR1cmVN
YXBwZXIoVGV4dHVyZU1hcHBlciogdGV4bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsg
fQogCkBAIC0xMDgsNyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBzb3J0Qnla
T3JkZXIoVmVjdG9yPFRleHR1cmVNYXBwZXJMYXllciogPiYgYXJyYXksIGludCBmaXJzdCwgaW50
IGxhc3QpOwogCiAgICAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV9iYWNraW5nU3RvcmUgPyBtX2JhY2tpbmdTdG9yZS0+dGV4dHVyZSgpIDogMDsgfQotICAg
IEZsb2F0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucG9z
ICsgbV9zY3JvbGxQb3NpdGlvbkRlbHRhOyB9CisgICAgRmxvYXRQb2ludCBhZGp1c3RlZFBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5wb3MgKyBtX3Njcm9sbFBvc2l0aW9uRGVsdGEg
LSBtX3VzZXJTY3JvbGxPZmZzZXQ7IH0KICAgICBib29sIGlzQW5jZXN0b3JGaXhlZFRvVmlld3Bv
cnQoKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhVHJhbnNmb3JtKCk7
CiAgICAgdm9pZCBhZGRDaGlsZChUZXh0dXJlTWFwcGVyTGF5ZXIqKTsKQEAgLTE1OSw2ICsxODAs
MTIgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGZsb2F0IG1fY2VudGVyWjsKIAorICAgIHRlbXBs
YXRlPGNsYXNzIEhpdFRlc3RDb25kaXRpb24+IFRleHR1cmVNYXBwZXJMYXllciogaGl0VGVzdChj
b25zdCBGbG9hdFBvaW50JiwgSGl0VGVzdENvbmRpdGlvbik7CisgICAgc3RhdGljIGJvb2wgc2Ny
b2xsYWJsZUxheWVySGl0VGVzdENvbmRpdGlvbihUZXh0dXJlTWFwcGVyTGF5ZXIqLCBjb25zdCBG
bG9hdFBvaW50Jik7CisKKyAgICBGbG9hdFNpemUgbWFwU2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0
U2l6ZSYpOworICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KGNvbnN0IEZsb2F0U2l6ZSYpOwor
CiAgICAgc3RydWN0IFN0YXRlIHsKICAgICAgICAgRmxvYXRQb2ludCBwb3M7CiAgICAgICAgIEZs
b2F0UG9pbnQzRCBhbmNob3JQb2ludDsKQEAgLTIxMSw2ICsyMzgsMTEgQEAgcHJpdmF0ZToKICAg
ICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlvbnM7CiAgICAgRmxvYXRTaXplIG1f
c2Nyb2xsUG9zaXRpb25EZWx0YTsKICAgICBib29sIG1fZml4ZWRUb1ZpZXdwb3J0OworICAgIHVp
bnQzMl90IG1faWQ7CisgICAgU2Nyb2xsaW5nQ2xpZW50KiBtX3Njcm9sbENsaWVudDsKKyAgICBi
b29sIG1faXNTY3JvbGxhYmxlOworICAgIEZsb2F0U2l6ZSBtX3VzZXJTY3JvbGxPZmZzZXQ7Cisg
ICAgRmxvYXRTaXplIG1fYWNjdW11bGF0ZWRTY3JvbGxPZmZzZXRGcmFjdGlvbmFsUGFydDsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllci5jcHAKaW5kZXggNmU5MDAzNi4uNTQzN2FjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJHcmFwaGljc0xh
eWVyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAj
aW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTIyLDYgKzEyMyw3IEBA
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBo
aWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29tcG9zaXRlZE5hdGl2ZUltYWdlUHRy
KDApCiAgICAgLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIoMCkKICAgICAsIG1fYW5pbWF0aW9uU3Rh
cnRlZFRpbWVyKHRoaXMsICZDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmFuaW1hdGlvblN0YXJ0
ZWRUaW1lckZpcmVkKQorICAgICwgbV9zY3JvbGxhYmxlQXJlYSgwKQogewogICAgIHN0YXRpYyBD
b29yZGluYXRlZExheWVySUQgbmV4dExheWVySUQgPSAxOwogICAgIG1faWQgPSBuZXh0TGF5ZXJJ
RCsrOwpAQCAtNTE0LDYgKzUxNiwyOSBAQCBDb29yZGluYXRlZExheWVySUQgQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyOjppZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faWQ7CiB9CiAKK3ZvaWQgQ29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTY3JvbGxhYmxlQXJlYShTY3JvbGxhYmxlQXJlYSog
c2Nyb2xsYWJsZUFyZWEpCit7CisgICAgYm9vbCBvbGRTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxl
KCk7CisgICAgbV9zY3JvbGxhYmxlQXJlYSA9IHNjcm9sbGFibGVBcmVhOworICAgIGlmIChvbGRT
Y3JvbGxhYmxlID09IGlzU2Nyb2xsYWJsZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xh
eWVyU3RhdGUuaXNTY3JvbGxhYmxlID0gaXNTY3JvbGxhYmxlKCk7CisgICAgbV9sYXllclN0YXRl
LmlzU2Nyb2xsYWJsZUNoYW5nZWQgPSB0cnVlOworICAgIGRpZENoYW5nZUxheWVyU3RhdGUoKTsK
K30KKwordm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbW1pdFNjcm9sbE9mZnNldChj
b25zdCBJbnRTaXplJiBvZmZzZXQpCit7CisgICAgaWYgKCFpc1Njcm9sbGFibGUoKSB8fCBvZmZz
ZXQuaXNaZXJvKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsYWJsZUFyZWEtPm5v
dGlmeVNjcm9sbFBvc2l0aW9uQ2hhbmdlZChtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlv
bigpICsgb2Zmc2V0KTsKKyAgICBtX2xheWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0ICs9
IG9mZnNldDsKKyAgICBtX2xheWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZCA9
IHRydWU7CisgICAgZGlkQ2hhbmdlTGF5ZXJTdGF0ZSgpOworfQorCiB2b2lkIENvb3JkaW5hdGVk
R3JhcGhpY3NMYXllcjo6c2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCkKIHsKICAgICBp
ZiAobV9maXhlZFRvVmlld3BvcnQgPT0gaXNGaXhlZCkKQEAgLTczNyw2ICs3NjIsNyBAQCB2b2lk
IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6cmVzZXRMYXllclN0YXRlKCkKICAgICBtX2xheWVy
U3RhdGUudGlsZXNUb0NyZWF0ZS5jbGVhcigpOwogICAgIG1fbGF5ZXJTdGF0ZS50aWxlc1RvUmVt
b3ZlLmNsZWFyKCk7CiAgICAgbV9sYXllclN0YXRlLnRpbGVzVG9VcGRhdGUuY2xlYXIoKTsKKyAg
ICBtX2xheWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogfQogCiBi
b29sIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6aW1hZ2VCYWNraW5nVmlzaWJsZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgKaW5k
ZXggNzkwZmU5Ni4uYTA3MDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NM
YXllckFuaW1hdGlvbnM7CitjbGFzcyBTY3JvbGxhYmxlQXJlYTsKIAogY2xhc3MgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTExNSw2ICsxMTYsMTAgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBzZXRSb290TGF5ZXIoYm9vbCk7CiAKKyAgICB2b2lkIHNldFNjcm9s
bGFibGVBcmVhKFNjcm9sbGFibGVBcmVhKik7CisgICAgYm9vbCBpc1Njcm9sbGFibGUoKSBjb25z
dCB7IHJldHVybiAhIW1fc2Nyb2xsYWJsZUFyZWE7IH0KKyAgICB2b2lkIGNvbW1pdFNjcm9sbE9m
ZnNldChjb25zdCBJbnRTaXplJik7CisKICAgICBDb29yZGluYXRlZExheWVySUQgaWQoKSBjb25z
dDsKIAogICAgIHZvaWQgc2V0Rml4ZWRUb1ZpZXdwb3J0KGJvb2wgaXNGaXhlZCk7CkBAIC0yNDAs
NiArMjQ1LDggQEAgcHJpdmF0ZToKICAgICBUaW1lcjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI+
IG1fYW5pbWF0aW9uU3RhcnRlZFRpbWVyOwogICAgIEdyYXBoaWNzTGF5ZXJBbmltYXRpb25zIG1f
YW5pbWF0aW9uczsKICAgICBkb3VibGUgbV9sYXN0QW5pbWF0aW9uU3RhcnRUaW1lOworCisgICAg
U2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CiB9OwogCiBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXIqIHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKaW5kZXggNDFlMzUzZS4uYjgyZTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2Vu
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKQEAgLTM2MCw2ICszNjAsMTIgQEAg
dm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldExheWVyU3RhdGUoQ29vcmRpbmF0ZWRM
YXllcklEIGlkLCBjb25zdCBDb29yZGkKICAgICAgICAgbGF5ZXItPnNldFNob3dSZXBhaW50Q291
bnRlcihsYXllclN0YXRlLnNob3dSZXBhaW50Q291bnRlcik7CiAgICAgfQogCisgICAgaWYgKGxh
eWVyU3RhdGUuaXNTY3JvbGxhYmxlQ2hhbmdlZCkKKyAgICAgICAgdG9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcihsYXllciktPnNldElzU2Nyb2xsYWJsZShsYXllclN0YXRlLmlzU2Nyb2xsYWJs
ZSk7CisKKyAgICBpZiAobGF5ZXJTdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXRDaGFuZ2VkKQor
ICAgICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKGxheWVyKS0+ZGlkQ29tbWl0U2Ny
b2xsT2Zmc2V0KGxheWVyU3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0KTsKKwogICAgIGlmIChs
YXllclN0YXRlLmZpeGVkVG9WaWV3cG9ydCkKICAgICAgICAgbV9maXhlZExheWVycy5hZGQoaWQs
IGxheWVyKTsKICAgICBlbHNlCkBAIC0zOTcsNiArNDAzLDggQEAgdm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNyZWF0ZUxheWVyKENvb3JkaW5hdGVkTGF5ZXJJRCBpZCkKIHsKICAgICBP
d25QdHI8R3JhcGhpY3NMYXllcj4gbmV3TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoMCAv
KiBmYWN0b3J5ICovLCB0aGlzKTsKICAgICB0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5l
d0xheWVyLmdldCgpKS0+c2V0SGFzT3duQmFja2luZ1N0b3JlKGZhbHNlKTsKKyAgICB0b0dyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKG5ld0xheWVyLmdldCgpKS0+c2V0SUQoaWQpOworICAgIHRv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIobmV3TGF5ZXIuZ2V0KCkpLT5zZXRTY3JvbGxDbGll
bnQodGhpcyk7CiAgICAgbV9sYXllcnMuYWRkKGlkLCBuZXdMYXllci5yZWxlYXNlKCkpOwogfQog
CkBAIC02ODYsNiArNjk0LDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJn
ZUdMUmVzb3VyY2VzKCkKICAgICBkaXNwYXRjaE9uTWFpblRocmVhZChiaW5kKCZDb29yZGluYXRl
ZEdyYXBoaWNzU2NlbmU6OnB1cmdlQmFja2luZ1N0b3JlcywgdGhpcykpOwogfQogCit2b2lkIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQodWludDMy
X3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KQoreworICAgIG1fY2xpZW50LT5jb21t
aXRTY3JvbGxPZmZzZXQobGF5ZXJJRCwgb2Zmc2V0KTsKK30KKwordm9pZCBDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OmNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJ
bnRTaXplJiBvZmZzZXQpCit7CisgICAgZGlzcGF0Y2hPbk1haW5UaHJlYWQoYmluZCgmQ29vcmRp
bmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaENvbW1pdFNjcm9sbE9mZnNldCwgdGhpcywgbGF5
ZXJJRCwgb2Zmc2V0KSk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwdXJn
ZUJhY2tpbmdTdG9yZXMoKQogewogICAgIGlmIChtX2NsaWVudCkKQEAgLTc1Myw2ICs3NzEsMTEg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91bmRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKIH0KIAorVGV4
dHVyZU1hcHBlckxheWVyKiBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmZpbmRTY3JvbGxhYmxl
Q29udGVudHNMYXllckF0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBy
b290TGF5ZXIoKSA/IHRvVGV4dHVyZU1hcHBlckxheWVyKHJvb3RMYXllcigpKS0+ZmluZFNjcm9s
bGFibGVDb250ZW50c0xheWVyQXQocG9pbnQpIDogMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5oCmluZGV4IGVkNWRi
ZTAuLjY4ZmM2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyLmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUg
IlRleHR1cmVNYXBwZXJGUFNDb3VudGVyLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckxheWVy
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC00OCw3ICs0OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOwogY2xhc3MgQ3VzdG9tRmlsdGVyUHJv
Z3JhbTsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOwotY2xhc3MgVGV4dHVyZU1hcHBl
ckxheWVyOwogCiBjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmVDbGllbnQgewogcHVibGlj
OgpAQCAtNTksOSArNTksMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tp
bmdTdG9yZXMoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3BvcnQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBJbnRTaXplJiBvZmZz
ZXQpID0gMDsKIH07CiAKLWNsYXNzIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU+LCBwdWJsaWMgR3Jh
cGhpY3NMYXllckNsaWVudCB7CitjbGFzcyBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lPiwgcHVibGlj
IEdyYXBoaWNzTGF5ZXJDbGllbnQsIHB1YmxpYyBUZXh0dXJlTWFwcGVyTGF5ZXI6OlNjcm9sbGlu
Z0NsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
KENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZUNsaWVudCopOwogICAgIHZpcnR1YWwgfkNvb3JkaW5h
dGVkR3JhcGhpY3NTY2VuZSgpOwpAQCAtNzEsNiArNzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
ZGV0YWNoKCk7CiAgICAgdm9pZCBhcHBlbmRVcGRhdGUoY29uc3QgRnVuY3Rpb248dm9pZCgpPiYp
OwogCisgICAgV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiBmaW5kU2Nyb2xsYWJsZUNvbnRl
bnRzTGF5ZXJBdChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisKKyAgICB2aXJ0dWFsIHZv
aWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9m
ZnNldCk7CisKICAgICAvLyBUaGUgcGFpbnRpbmcgdGhyZWFkIG11c3QgbG9jayB0aGUgbWFpbiB0
aHJlYWQgdG8gdXNlIGJlbG93IHR3byBtZXRob2RzLCBiZWNhdXNlIHR3byBtZXRob2RzIGFjY2Vz
cyBtZW1iZXJzIHRoYXQgdGhlIG1haW4gdGhyZWFkIG1hbmFnZXMuIFNlZSBtX2NsaWVudC4KICAg
ICAvLyBDdXJyZW50bHksIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZSgpIGxvY2tzIHRo
ZSBtYWluIHRocmVhZCBiZWZvcmUgY2FsbGluZyBib3RoIG1ldGhvZHMuCiAgICAgdm9pZCBwdXJn
ZUdMUmVzb3VyY2VzKCk7CkBAIC0xNTcsNiArMTYyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJl
bW92ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKEdyYXBoaWNzTGF5ZXIqKTsKICAgICB2b2lkIHJlc2V0
QmFja2luZ1N0b3JlU2l6ZVRvTGF5ZXJTaXplKEdyYXBoaWNzTGF5ZXIqKTsKIAorICAgIHZvaWQg
ZGlzcGF0Y2hDb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6
ZSYgb2Zmc2V0KTsKKwogICAgIC8vIFJlbmRlciBxdWV1ZSBjYW4gYmUgYWNjZXNzZWQgb255IGZy
b20gbWFpbiB0aHJlYWQgb3IgdXBkYXRlUGFpbnROb2RlIGNhbGwgc3RhY2shCiAgICAgVmVjdG9y
PEZ1bmN0aW9uPHZvaWQoKT4gPiBtX3JlbmRlclF1ZXVlOwogICAgIE11dGV4IG1fcmVuZGVyUXVl
dWVNdXRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBo
aWNzU3RhdGUuaAppbmRleCA3Y2M2Mjg5Li4yOWM4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC05MCw2ICs5MCw4IEBA
IHN0cnVjdCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29s
IHJlcGFpbnRDb3VudENoYW5nZWQgOiAxOwogICAgICAgICAgICAgYm9vbCBjYW52YXNDaGFuZ2Vk
OiAxOwogICAgICAgICAgICAgYm9vbCBjYW52YXNTaG91bGRTd2FwQnVmZmVyczogMTsKKyAgICAg
ICAgICAgIGJvb2wgaXNTY3JvbGxhYmxlQ2hhbmdlZDogMTsKKyAgICAgICAgICAgIGJvb2wgY29t
bWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZDogMTsKICAgICAgICAgfTsKICAgICAgICAgdW5zaWdu
ZWQgY2hhbmdlTWFzazsKICAgICB9OwpAQCAtMTA1LDYgKzEwNyw3IEBAIHN0cnVjdCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29sIGZpeGVkVG9WaWV3cG9y
dCA6IDE7CiAgICAgICAgICAgICBib29sIHNob3dEZWJ1Z0JvcmRlcnMgOiAxOwogICAgICAgICAg
ICAgYm9vbCBzaG93UmVwYWludENvdW50ZXIgOiAxOworICAgICAgICAgICAgYm9vbCBpc1Njcm9s
bGFibGU6IDE7CiAgICAgICAgIH07CiAgICAgICAgIHVuc2lnbmVkIGZsYWdzOwogICAgIH07CkBA
IC0xNjEsNiArMTY0LDggQEAgc3RydWN0IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlIHsK
ICAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBjYW52YXNUb2tlbjsKICAgICB1aW50MzJfdCBjYW52
YXNGcm9udEJ1ZmZlcjsKICNlbmRpZgorCisgICAgSW50U2l6ZSBjb21taXR0ZWRTY3JvbGxPZmZz
ZXQ7CiB9OwogCiBzdHJ1Y3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0
cy50eHQKaW5kZXggNmYyYjFmNi4uNDJmYTc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTE3
LDYgKzE3LDcgQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJ
VDJfRElSfS9VSVByb2Nlc3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJvY2Vzcy9BUEkvQyIKKyAgICAiJHtXRUJLSVQyX0RJUn0v
VUlQcm9jZXNzL0FQSS9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9V
SVByb2Nlc3MvQVBJL2NwcCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRp
Y2F0aW9uIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cyIKQEAgLTc1LDYgKzc2LDggQEAgc2V0KFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQkNPUkVfRElSfS9sb2FkZXIvY2FjaGUiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2Ui
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BhZ2UvYW5pbWF0aW9uIgorICAgICIke1dFQkNPUkVfRElS
fS9wYWdlL3Njcm9sbGluZyIKKyAgICAiJHtXRUJDT1JFX0RJUn0vcGFnZS9zY3JvbGxpbmcvY29v
cmRpbmF0ZWRncmFwaGljcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0iCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2FuaW1hdGlvbiIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vZ3JhcGhpY3MiCkBAIC0zNDEsNiArMzQ0LDggQEAgc2V0KFdlYktpdDJfU09VUkNFUwog
ICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ZpYnJhdGlvbi5jcHAKIAorICAgIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCisKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24v
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvQXV0aGVudGlj
YXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcAogICAgIFVJUHJvY2Vzcy9B
dXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGVmZTJmMTcuLjdi
NDkyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMy0wMy0wNSAgTHVpeiBBZ29z
dGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIEFjY2VsZXJhdGVkIG92
ZXJmbG93IHNjcm9sbGluZyBmb3IgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTAzMjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKyAgICAgICAgU2lnbmVkIG9mZiBmb3IgV2ViS2l0MiBi
eSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQSBzY3JvbGwgb2Zmc2V0IGlzIGFwcGxpZWQgdG8g
aW5kaXZpZHVhbCBsYXllcnMgb24gVUkgcHJvY2VzcyBhbmQgdGhlCisgICAgICAgIHdlYiBwcm9j
ZXNzIGlzIG5vdGlmaWVkIGFzc3luY2hyb25vdXNseS4KKyAgICAgICAgVGhlIG5ldyBBUEkgV0tD
b29yZGluYXRlZFNjZW5lIG1heSBiZSB1c2VkIHRvIHNjcm9sbCBsYXllcnMgaW4gdGhlIFVJIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKworICAgICAgICBFbmNvZGluZyBh
bmQgZGVjb2RpbmcgdGhlIG5ldyBtZW1iZXJzIG9mIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0
YXRlLgorCisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRH
cmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToK
KyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKworICAgICAgICBBZGRpbmcgYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCB0byBXZWJQcmVmZXJlbmNlc1N0
b3JlLgorCisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnVwZGF0ZVByZWZlcmVuY2VzKToKKworICAgICAgICBOZXcgQVBJIFdLQ29vcmRpbmF0ZWRT
Y2VuZSBpcyB1c2VkIHRvIHNjcm9sbCBsYXllcnMgb24gVUkgc2lkZS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVk
U2NlbmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3Jk
aW5hdGVkU2NlbmVBUElDYXN0Lmg6CisKKyAgICAgICAgQSBuZXcgbWVzc2FnZSBpcyB1c2VkIHRv
IHNlbmQgc2Nyb2xsIGNvbW1pdCBtZXNzYWdlcyB0byB3ZWIgcHJvY2Vzcy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6
OmNvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5Lmg6
CisgICAgICAgIChDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpkZXRhY2hMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKToKKyAg
ICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpjb21taXRTY3JvbGxPZmZz
ZXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluOgor
CiAyMDEzLTAzLTA2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIFtFRkxdW1dLMl0gQ29udmVydCBmcm9tIGRldmljZSB2aWV3IHNpemUgdG8gVUkg
dmlldyBzaXplIG9ubHkgaW4gRXdrVmlldy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDgwYzcyNTkuLjVhYWFkM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmNwcApAQCAtODk2LDYgKzg5Niw5IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZT46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kCiAgICAgICAg
IGVuY29kZXIgPDwgc3RhdGUuY2FudmFzRnJvbnRCdWZmZXI7CiAgICAgfQogI2VuZGlmCisKKyAg
ICBpZiAoc3RhdGUuY29tbWl0dGVkU2Nyb2xsT2Zmc2V0Q2hhbmdlZCkKKyAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0ZS5jb21taXR0ZWRTY3JvbGxPZmZzZXQ7CiB9CiAKIGJvb2wgQXJndW1lbnRDb2Rl
cjxDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZT46OmRlY29kZShBcmd1bWVudERlY29kZXIm
IGRlY29kZXIsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKQEAgLTk4MSw2
ICs5ODQsOSBAQCBib29sIEFyZ3VtZW50Q29kZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyU3Rh
dGU+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyJiBkZWNvZAogICAgIH0KICNlbmRpZgogCisgICAg
aWYgKHN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZWQgJiYgIWRlY29kZXIuZGVjb2Rl
KHN0YXRlLmNvbW1pdHRlZFNjcm9sbE9mZnNldCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwog
ICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzU3RvcmUuaAppbmRleCA5YjkwNTBlLi5kYWNjYWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTE0Myw2ICsxNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKICAgICBtYWNybyhQYWdlVmlzaWJpbGl0eUJhc2VkUHJvY2Vzc1N1cHByZXNzaW9u
RW5hYmxlZCwgcGFnZVZpc2liaWxpdHlCYXNlZFByb2Nlc3NTdXBwcmVzc2lvbkVuYWJsZWQsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oU21hcnRJbnNlcnREZWxldGVFbmFibGVkLCBz
bWFydEluc2VydERlbGV0ZUVuYWJsZWQsIEJvb2wsIGJvb2wsIHRydWUpIFwKICAgICBtYWNybyhT
aG93c1VSTHNJblRvb2xUaXBzRW5hYmxlZCwgc2hvd3NVUkxzSW5Ub29sVGlwc0VuYWJsZWQsIEJv
b2wsIGJvb2wsIGZhbHNlKSBcCisgICAgbWFjcm8oQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92
ZXJmbG93U2Nyb2xsRW5hYmxlZCwgYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Ny
b2xsRW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBcCiAKICNkZWZpbmUgRk9SX0VB
Q0hfV0VCS0lUX0RPVUJMRV9QUkVGRVJFTkNFKG1hY3JvKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9XS0Nvb3JkaW5hdGVkU2NlbmUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjlhODk1MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcApAQCAtMCwwICsx
LDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29vcmRpbmF0ZWRTY2VuZS5oIgor
CisjaW5jbHVkZSAiV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oIgorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHR1
cmVNYXBwZXJMYXllci5oPgorCitXS19FWFBPUlQgV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIgV0tD
b29yZGluYXRlZFNjZW5lRmluZFNjcm9sbGFibGVDb250ZW50c0xheWVyQXQoV0tDb29yZGluYXRl
ZFNjZW5lIHNjZW5lLCBXS1BvaW50IHBvaW50KQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
c2NlbmUpLT5maW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJBdChXZWJDb3JlOjpGbG9hdFBvaW50
KHBvaW50LngsIHBvaW50LnkpKSk7Cit9CisKK1dLX0VYUE9SVCB1aW50MzJfdCBXS0Nvb3JkaW5h
dGVkU2NlbmVHZXRMYXllcklEKFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyIGxheWVyKQoreworICAg
IHJldHVybiB0b0ltcGwobGF5ZXIpLT5pZCgpOworfQorCitXS19FWFBPUlQgdm9pZCBXS0Nvb3Jk
aW5hdGVkU2NlbmVTY3JvbGxCeShXS0Nvb3JkaW5hdGVkU2NlbmVMYXllciBsYXllciwgV0tTaXpl
IG9mZnNldCkKK3sKKyAgICB0b0ltcGwobGF5ZXIpLT5zY3JvbGxCeShXZWJDb3JlOjpGbG9hdFNp
emUob2Zmc2V0LndpZHRoLCBvZmZzZXQuaGVpZ2h0KSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNj
ZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
V0tDb29yZGluYXRlZFNjZW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
YzRlODhkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XS0Nvb3JkaW5hdGVkU2NlbmUuaApAQCAtMCwwICsxLDQ4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorICoKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXS0Nvb3JkaW5hdGVkU2NlbmVfaAorI2RlZmluZSBXS0Nvb3JkaW5hdGVkU2NlbmVfaAor
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYgLy8gX19jcGx1c3BsdXMKKwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0dTY2VuZSogV0tDb29yZGluYXRlZFNjZW5lOwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0dM
YXllciogV0tDb29yZGluYXRlZFNjZW5lTGF5ZXI7CisKK1dLX0VYUE9SVCBXS0Nvb3JkaW5hdGVk
U2NlbmVMYXllciBXS0Nvb3JkaW5hdGVkU2NlbmVGaW5kU2Nyb2xsYWJsZUNvbnRlbnRzTGF5ZXJB
dChXS0Nvb3JkaW5hdGVkU2NlbmUsIFdLUG9pbnQpOworV0tfRVhQT1JUIHVpbnQzMl90IFdLQ29v
cmRpbmF0ZWRTY2VuZUdldExheWVySUQoV0tDb29yZGluYXRlZFNjZW5lTGF5ZXIpOworV0tfRVhQ
T1JUIHZvaWQgV0tDb29yZGluYXRlZFNjZW5lU2Nyb2xsQnkoV0tDb29yZGluYXRlZFNjZW5lTGF5
ZXIsIFdLU2l6ZSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmIC8vIF9fY3BsdXNw
bHVzCisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuY3BwCmluZGV4IDAxOGJkMTcuLmY3
ZTMxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhv
c3RQcm94eS5jcHAKQEAgLTE2OCw1ICsxNjgsMTAgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3RQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBk
aXNwYXRjaFVwZGF0ZShiaW5kKCZDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnNldEJhY2tncm91
bmRDb2xvciwgbV9zY2VuZS5nZXQoKSwgY29sb3IpKTsKIH0KIAordm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3RQcm94eTo6Y29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNv
bnN0IEludFNpemUmIG9mZnNldCkKK3sKKyAgICBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2UoKS0+
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OkNvbW1p
dFNjcm9sbE9mZnNldChsYXllcklELCBvZmZzZXQpLCBtX2RyYXdpbmdBcmVhUHJveHktPnBhZ2Uo
KS0+cGFnZUlEKCkpOworfQorCiB9CiAjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5LmgK
aW5kZXggZDE2OGJjZC4uNDQ4NmEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZExheWVyVHJlZUhvc3RQcm94eS5oCkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IHB1cmdlQmFja2luZ1N0b3JlcygpIE9WRVJSSURFOwogCisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBv
ZmZzZXQpOworCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaFVwZGF0ZShjb25zdCBGdW5j
dGlvbjx2b2lkKCk+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL1dLQ29vcmRpbmF0ZWRTY2VuZUFQ
SUNhc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzlmMGQ2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvV0tDb29yZGluYXRlZFNjZW5lQVBJQ2FzdC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisgKgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLQ29v
cmRpbmF0ZWRTY2VuZUFQSUNhc3RfaAorI2RlZmluZSBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb29yZGluYXRlZFNjZW5lLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOworY2xhc3MgVGV4
dHVyZU1hcHBlckxheWVyOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK2lubGluZSBXZWJD
b3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmUqIHRvSW1wbChXS0Nvb3JkaW5hdGVkU2NlbmUg
c2NlbmUpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lKj4oc2NlbmUpOworfQorCitpbmxpbmUgV0tDb29yZGluYXRlZFNjZW5l
IHRvQVBJKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZSogc2NlbmUpCit7CisgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8V0tDb29yZGluYXRlZFNjZW5lPihzY2VuZSk7Cit9CisK
K2lubGluZSBXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIHRvSW1wbChXS0Nvb3JkaW5hdGVk
U2NlbmVMYXllciBsYXllcikKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTGF5ZXIqPihsYXllcik7Cit9CisKK2lubGluZSBXS0Nvb3JkaW5hdGVk
U2NlbmVMYXllciB0b0FQSShXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXIqIGxheWVyKQorewor
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFdLQ29vcmRpbmF0ZWRTY2VuZUxheWVyPihsYXll
cik7Cit9CisKKyNlbmRpZiAvLyBXS0Nvb3JkaW5hdGVkU2NlbmVBUElDYXN0X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3Bw
CmluZGV4IDQ1ZmQzOTUuLmNjZjhlZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNzIsOSArNzIsOSBAQCBD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6On5Db29yZGluYXRlZExheWVyVHJlZUhvc3QoKQogI2Vu
ZGlmCiAgICAgcHVyZ2VCYWNraW5nU3RvcmVzKCk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXll
cnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcio+OjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5zZXRDb29yZGluYXRvcigwKTsKKyAgICBMYXllck1h
cDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoTGF5
ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5zZXRDb29yZGluYXRvcigwKTsKIH0KIAogQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSog
d2ViUGFnZSkKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6ZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1zKCkKIAogdm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5ZXIp
CiB7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllcik7CisgICAgbV9yZWdpc3Rl
cmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7CiAgICAgbV9sYXllcnNUb0RlbGV0ZS5hcHBl
bmQobGF5ZXItPmlkKCkpOwogICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwogfQpAQCAtNjI0LDcg
KzYyNCw3IEBAIFBhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpjcmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzCiB7CiAgICAgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKiBsYXllciA9IG5ldyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoY2xpZW50KTsK
ICAgICBsYXllci0+c2V0Q29vcmRpbmF0b3IodGhpcyk7Ci0gICAgbV9yZWdpc3RlcmVkTGF5ZXJz
LmFkZChsYXllcik7CisgICAgbV9yZWdpc3RlcmVkTGF5ZXJzLmFkZChsYXllci0+aWQoKSwgbGF5
ZXIpOwogICAgIG1fbGF5ZXJzVG9DcmVhdGUuYXBwZW5kKGxheWVyLT5pZCgpKTsKICAgICBsYXll
ci0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKICAgICBzY2hlZHVsZUxheWVyRmx1
c2goKTsKQEAgLTY4Miw5ICs2ODIsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbgogICAgIGlm
IChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKICAgICAgICAgbV92aXNpYmxlQ29udGVudHNSZWN0
ID0gcmVjdDsKIAotICAgICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgICAg
IGZvciAoSGFzaFNldDxXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPjo6aXRlcmF0
b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0g
ICAgICAgICAgICAoKml0KS0+c2V0TmVlZHNWaXNpYmxlUmVjdEFkanVzdG1lbnQoKTsKKyAgICAg
ICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKKyAg
ICAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpdC0+dmFsdWUtPnNldE5lZWRz
VmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTczMyw5ICs3
MzMsOSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVz
KCkKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2dsZShtX2lzUHVyZ2lu
ZywgdHJ1ZSk7CiAKLSAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cio+OjppdGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChI
YXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+OjppdGVyYXRvciBpdCA9
IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICgq
aXQpLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0g
bV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOworICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aXQtPnZhbHVlLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKIAogICAgIG1faW1hZ2VCYWNraW5ncy5j
bGVhcigpOwogICAgIG1fdXBkYXRlQXRsYXNlcy5jbGVhcigpOwpAQCAtNzk5LDUgKzc5OSwxNCBA
QCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0
IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBtX3N0YXRlLmJhY2tncm91bmRDb2xvciA9IGNv
bG9yOwogfQogCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y29tbWl0U2Nyb2xsT2Zm
c2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkKK3sK
KyAgICBMYXllck1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0ZXJlZExheWVycy5maW5kKGxheWVy
SUQpOworICAgIGlmIChpID09IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaS0+dmFsdWUtPmNvbW1pdFNjcm9sbE9mZnNldChvZmZzZXQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdC5oCmluZGV4IDY1MzZhZDcuLmEyMTc0ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCkBAIC05NSw2ICs5NSw4IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3Vy
ZmFjZT4gY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBX
ZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzKTsKIAorICAgIHZvaWQgY29tbWl0U2Ny
b2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNl
dCk7CisKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Qo
V2ViUGFnZSopOwogCkBAIC0xNzIsNyArMTc0LDggQEAgcHJpdmF0ZToKIAogICAgIFdlYkNvcmU6
OkNvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBtX3N0YXRlOwogCi0gICAgSGFzaFNldDxXZWJDb3Jl
OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqPiBtX3JlZ2lzdGVyZWRMYXllcnM7CisgICAgdHlw
ZWRlZiBIYXNoTWFwPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRCwgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyKj4gTGF5ZXJNYXA7CisgICAgTGF5ZXJNYXAgbV9yZWdpc3RlcmVk
TGF5ZXJzOwogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29yZGluYXRlZExheWVySUQ+IG1fbGF5ZXJz
VG9DcmVhdGU7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNvb3JkaW5hdGVkTGF5ZXJJRD4gbV9sYXll
cnNUb0RlbGV0ZTsKICAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IElt
YWdlQmFja2luZ01hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5tZXNzYWdlcy5pbgppbmRleCA2NjcxYjMyLi5l
NzMyMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lm1lc3NhZ2VzLmluCkBAIC0yNyw1ICsyNyw2IEBAIG1l
c3NhZ2VzIC0+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCBMZWdhY3lSZWNlaXZlciB7CiAjaWYg
RU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogICAgIEFuaW1hdGlvbkZyYW1lUmVhZHko
KQogI2VuZGlmCisgICAgQ29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIFdlYkNv
cmU6OkludFNpemUgb2Zmc2V0KQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZWQwYWMxMC4uMjBlOGU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMyNCw2ICsy
MzI0LDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSkKICAgICBzZXR0aW5ncy0+c2V0RWRpdGFibGVMaW5rQmVoYXZpb3Io
c3RhdGljX2Nhc3Q8V2ViQ29yZTo6RWRpdGFibGVMaW5rQmVoYXZpb3I+KHN0b3JlLmdldFVJbnQz
MlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjplZGl0YWJsZUxpbmtCZWhhdmlvcktleSgp
KSkpOwogICAgIHNldHRpbmdzLT5zZXRTaG93c1Rvb2xUaXBPdmVyVHJ1bmNhdGVkVGV4dChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNob3dzVG9vbFRpcE92ZXJU
cnVuY2F0ZWRUZXh0S2V5KCkpKTsKIAorICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xs
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3MtPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkgJiYgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCkpOwogICAgIHNldHRpbmdzLT5zZXRBY2NlbGVyYXRlZERy
YXdpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
YWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZEtleSgpKSAmJiBMYXllclRyZWVIb3N0OjpzdXBwb3J0
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSk7CiAgICAgc2V0dGluZ3MtPnNldENhbnZhc1VzZXNB
Y2NlbGVyYXRlZERyYXdpbmcoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpjYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nS2V5KCkpICYmIExheWVyVHJlZUhvc3Q6
OnN1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKTsKLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>