<?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>72996</bug_id>
          
          <creation_ts>2011-11-22 18:10:40 -0800</creation_ts>
          <short_desc>[chromium] Add page-scale animation support to Impl thread</short_desc>
          <delta_ts>2011-12-07 20:35:54 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>aelias</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507889</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-22 18:10:40 -0800</bug_when>
    <thetext>[chromium] Add page-scale animation support to Impl thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507890</commentid>
    <comment_count>1</comment_count>
      <attachid>116303</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-22 18:14:19 -0800</bug_when>
    <thetext>Created attachment 116303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507891</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 18:17:35 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507922</commentid>
    <comment_count>3</comment_count>
      <attachid>116303</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-22 20:34:52 -0800</bug_when>
    <thetext>Comment on attachment 116303
Patch

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

&gt; Source/WebKit/chromium/public/WebCompositor.h:47
&gt; +    virtual void handlePageScaleAnimationEvent(const WebPageScaleAnimationEvent&amp;) = 0;

since WebPageScaleAnimationEvent inherits from WebInputEvent, you don&apos;t need this method.  just use handleInputEvent.

&gt; Source/WebKit/chromium/public/WebInputEvent.h:371
&gt; +class WebPageScaleAnimationEvent : public WebInputEvent {

this seems like it could/should be represented as a type of gesture event.  or maybe
we should derive from WebGestureEvent and call this a WebPageScaleGestureEvent?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507926</commentid>
    <comment_count>4</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-22 20:53:43 -0800</bug_when>
    <thetext>The reason it was hard to reuse handleInputEvent is that these events are sent from the render process via a side channel, after the target rect is computed based on the page structure.  InputEventFilter assumes it sends all events, and crashes if it receives a didHandle/didNotHandle when its queue is empty.  I could special-case my event type to not send the didHandle/didNotHandle, or return an enum from the handleInputEvent requesting that the caller does it, or fix the filter to deal with it properly (though I don&apos;t know much about it so I didn&apos;t want to introduce new bugs).  Which do you prefer?

I&apos;m fine with deriving from WebGestureEvent although the generic fields of WebGestureEvent would be mostly unused in this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508165</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-23 08:40:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; The reason it was hard to reuse handleInputEvent is that these events are sent from the render process via a side channel, after the target rect is computed based on the page structure.  InputEventFilter assumes it sends all events, and crashes if it receives a didHandle/didNotHandle when its queue is empty.  I could special-case my event type to not send the didHandle/didNotHandle, or return an enum from the handleInputEvent requesting that the caller does it, or fix the filter to deal with it properly (though I don&apos;t know much about it so I didn&apos;t want to introduce new bugs).  Which do you prefer?
&gt; 
&gt; I&apos;m fine with deriving from WebGestureEvent although the generic fields of WebGestureEvent would be mostly unused in this one.

I think I need to know more about what you are trying to do then.  It seems very odd to send WebInputEvent subclasses through something other than handleInputEvent.  It seems equally odd to not be sending them through the normal HandleInputEvent IPC mechanism.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508393</commentid>
    <comment_count>6</comment_count>
      <attachid>116427</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 14:19:50 -0800</bug_when>
    <thetext>Created attachment 116427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508396</commentid>
    <comment_count>7</comment_count>
      <attachid>116427</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-23 14:23:33 -0800</bug_when>
    <thetext>Comment on attachment 116427
Patch

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

These WebKit API changes look good to me... just one question about the event structure:

&gt; Source/WebKit/chromium/public/WebInputEvent.h:381
&gt; +    double durationMs;

I observe that the Fling gesture does not similarly have the embedder provide a duration.  Why does page scaling not work similarly?  Or, why does Fling not work like page scaling?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508419</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 14:48:41 -0800</bug_when>
    <thetext>There are two completely different kinds of page scale events.  This one is for double-tap gestures, where the user taps on a page element and then a zoom animation occurs bringing it forward.  The other one is still in Clank-branch only, and represent pinch gestures


Double-tap input events are unlike the other events in that they need to be augmented by information about the document structure.  If a user double-taps on an image for instance, we need to get its size to know the target page scale to animate to.  The input event is passed first to the WebKit thread to gather this data.  Since the ViewMsg channel is from browser -&gt; compositor thread, I didn&apos;t know how to use the normal input handler from there.

Now I figured out I can post a ViewMsg_HandleInputEvent task directly to InputEventHandler::OnMessageReceived from RenderViewImpl.  However, now I&apos;m concerned about this:

  // TODO(darin): Change RenderWidgetHost to always require an ACK before
  // sending the next input event.  This way we can nuke this queue.

I&apos;m not sending from RenderWidgetHost so if the queue goes away, this approach would stop working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508441</commentid>
    <comment_count>9</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 15:06:00 -0800</bug_when>
    <thetext>Never mind my last comment, I talked offline with Darin and we agreed that we shouldn&apos;t be using this kind of &quot;rich&quot; input event.  I&apos;ll avoid creating a public API for them and send them through WebCompositorImpl from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508478</commentid>
    <comment_count>10</comment_count>
      <attachid>116427</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-23 16:15:13 -0800</bug_when>
    <thetext>Comment on attachment 116427
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:91
&gt; +    IntSize scrollTotal = m_scrollLayerImpl-&gt;scrollPosition() + m_scrollLayerImpl-&gt;scrollDelta() - IntPoint();

nit: use toSize() here instead of &quot;- IntPoint()&quot;.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:248
&gt; +    IntSize scrollTotal = m_scrollLayerImpl-&gt;scrollPosition() + m_scrollLayerImpl-&gt;scrollDelta() - IntPoint();

nit: same as other IntPoint() comment.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:250
&gt; +    m_pageScaleAnimation = adoptPtr(new CCPageScaleAnimation(scrollTotal, m_pageScale, m_viewportSize, currentTimeMs()));

What happens if startPageScaleAnimation is called again in the middle of a page scale animation? Should we early out or maybe call zoomElsewhere?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:106
&gt; +void CCPageScaleAnimation::zoomElsewhere(const IntSize&amp; finalScroll, float finalPageScale, double duration, double time)

Where does this get used?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508519</commentid>
    <comment_count>11</comment_count>
      <attachid>116459</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 17:22:29 -0800</bug_when>
    <thetext>Created attachment 116459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508521</commentid>
    <comment_count>12</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 17:25:18 -0800</bug_when>
    <thetext>I stripped out all the input event stuff from this CL, so this no longer adds any public APIs.  We&apos;ll do it more cleanly later.

For what happens if an animation already exists, good point.  On second thought, I don&apos;t think zoomElsewhere is a good idea so I deleted that method.  We can implicitly destroy and recreate the animation object if it already exists.  I adjusted the logic to make sure page scale deltas are treated properly, which should cover both in-progress double-tap and pinch zooms.  I tested that it works correctly by sending extremely slow animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508572</commentid>
    <comment_count>13</comment_count>
      <attachid>116469</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-11-23 19:33:03 -0800</bug_when>
    <thetext>Created attachment 116469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509481</commentid>
    <comment_count>14</comment_count>
      <attachid>116469</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-27 12:49:28 -0800</bug_when>
    <thetext>Comment on attachment 116469
Patch

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

This is a great start. Left some comments that should be addressed before landing, IMO

&gt; Source/WebCore/ChangeLog:12
&gt; +        No new tests. (https://bugs.webkit.org/show_bug.cgi?id=71529 filed.)

I think it&apos;d be really helpful to land at least some skeleton tests with this patch, at least to show how the tests will be constructed and to verify that there aren&apos;t any crazy explosions when the class is used in a straightforward way.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCInputHandler.h:57
&gt; +        bool anchorPoint,
&gt; +        float pageScale,
&gt; +        double durationMs) = 0;

the line wrapping here is a bit strange - could you align with the opening &quot;(&quot; perhaps?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:114
&gt; +    m_pageScaleAnimation = adoptPtr(new CCPageScaleAnimation(scrollTotal, scaleTotal, m_viewportSize, currentTimeMs()));

don&apos;t use currentTimeMs() - we use monotonicallyIncreasingTime() for all animation logic

even better would be taking a timestamp passed in from the caller so the caller can adjust the time appropriately to reflect the event time or the next frame time or whatnot

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:392
&gt; +    if (!didMove || m_pinchGestureActive || m_pageScaleAnimation.get()) {

you don&apos;t need the .get() to null check, all WebKit smart pointers have an operator bool() that does the right thing

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:16
&gt; + *     * Redistributions of source code must retain the above copyright
&gt; + * notice, this list of conditions and the following disclaimer.
&gt; + *     * Redistributions in binary form must reproduce the above
&gt; + * copyright notice, this list of conditions and the following disclaimer
&gt; + * in the documentation and/or other materials provided with the
&gt; + * distribution.
&gt; + *     * Neither the name of Google Inc. nor the names of its
&gt; + * contributors may be used to endorse or promote products derived from
&gt; + * this software without specific prior written permission.

we use a 2-clause license now. see the license header on (say) http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLCanvasElement.cpp, modulo the date lines

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:50
&gt; +    m_scrollStart = scrollStart;
&gt; +    m_pageScaleStart = pageScaleStart;
&gt; +    m_windowSize = windowSize;
&gt; +    m_anchorMode = false;
&gt; +    m_scrollEnd = scrollStart;
&gt; +    m_pageScaleEnd = pageScaleStart;
&gt; +    m_startTime = startTime;

should be done with initializer list syntax

    : m_scrollStart(scrollStart)
    , m_pageScaleStart(pageScaleStart)

etc

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:119
&gt; +        return 1.0f;

nit: we just say &apos;1&apos; for constants like this (see &apos;Floating point literals&apos; section in http://www.webkit.org/coding/coding-style.html)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:126
&gt; +    if (ratio &lt;= 0.0f)

0

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:128
&gt; +    if (ratio &gt;= 1.0f)

1

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:156
&gt; +    if (ratio &lt;= 0.0f)

0

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:158
&gt; +    if (ratio &gt;= 1.0f)

1

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.cpp:172
&gt; +} // namespace WebKit

WebCore, no?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.h:8
&gt; + *     * Redistributions of source code must retain the above copyright

wrong license header here too

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.h:47
&gt; +    CCPageScaleAnimation(const IntSize&amp; scrollStart, float pageScaleStart, const IntSize&amp; windowSize, double startTime);

what unit are all the times in this class&apos; interface in? can you tag the parameter and function names with the appropriate suffix?

another note: if it&apos;s intended that this class will be stored in an OwnPtr&lt;&gt; it&apos;s better to make the c&apos;tor private and expose a static PassOwnPtr&lt;&gt; create function to ensure that the caller puts the object into a smart pointer and doesn&apos;t leak it

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.h:74
&gt; +private:

nit: newline before the private: please

&gt; Source/WebCore/platform/graphics/chromium/cc/CCPageScaleAnimation.h:92
&gt; +} // namespace WebKit

WebCore, I think</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509926</commentid>
    <comment_count>15</comment_count>
      <attachid>116469</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-28 10:22:44 -0800</bug_when>
    <thetext>Comment on attachment 116469
Patch

This needs unit tests, As written, its not easily testable, writing unit tests will improve that situation likely.

Alex, what do you think the methods on the following class would bee:
 class CCAnimation {

  }

Assume that CCScrollAnimation derives from it and ideally the CCLayerTreeHOstImpl is not directly aware of the scrollanimation type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509991</commentid>
    <comment_count>16</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-28 11:18:27 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=73233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516526</commentid>
    <comment_count>17</comment_count>
      <attachid>118182</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-12-07 00:39:17 -0800</bug_when>
    <thetext>Created attachment 118182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516529</commentid>
    <comment_count>18</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-12-07 00:51:25 -0800</bug_when>
    <thetext>OK, I still haven&apos;t written the unit tests as they depend on the target stuff still being worked on in https://bugs.webkit.org/show_bug.cgi?id=73233

Other than that, most of James&apos;s comments addressed, with one nit:

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:114
&gt; &gt; +    m_pageScaleAnimation = adoptPtr(new CCPageScaleAnimation(scrollTotal, scaleTotal, m_viewportSize, currentTimeMs()));
&gt; 
&gt; don&apos;t use currentTimeMs() - we use monotonicallyIncreasingTime() for all animation logic

currentTimeMs() is a CCLayerTreeHostImpl function that does monotonicallyIncreasingTime() * 1000, so it looks to me like it was intended for things like animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516536</commentid>
    <comment_count>19</comment_count>
      <attachid>118184</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2011-12-07 01:24:05 -0800</bug_when>
    <thetext>Created attachment 118184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517010</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-07 17:22:10 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; currentTimeMs() is a CCLayerTreeHostImpl function that does monotonicallyIncreasingTime() * 1000, so it looks to me like it was intended for things like animations.

Oh my.  CurrentTime.h puts a function called currentTimeMS() into the global namespace that exactly what we don&apos;t want to do.  This seems just a touch error-prone to me.

We can address that in a different patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517071</commentid>
    <comment_count>21</comment_count>
      <attachid>118184</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-07 18:20:36 -0800</bug_when>
    <thetext>Comment on attachment 118184
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517149</commentid>
    <comment_count>22</comment_count>
      <attachid>118184</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 20:35:48 -0800</bug_when>
    <thetext>Comment on attachment 118184
Patch

Clearing flags on attachment: 118184

Committed r102308: &lt;http://trac.webkit.org/changeset/102308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517150</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 20:35:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116303</attachid>
            <date>2011-11-22 18:14:19 -0800</date>
            <delta_ts>2011-11-23 14:19:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111122181418.patch</filename>
            <type>text/plain</type>
            <size>28255</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZDI1NmZlMThkZDU0MTBhNTczYjE3NzI1NTA5MTEz
MTk2MmRhMDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgYW4gZXZlbnQgZm9yd2FyZGluZyBtZWNoYW5pc20gc28gdGhhdCB0aGUgcmVu
ZGVyCisgICAgICAgIHByb2Nlc3MgY2FuIHRyaWdnZXIgdGhlIGFuaW1hdGlvbiB0byBiZWdpbi4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE1MjkgZmlsZWQuKQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3Jv
bGxEZWx0YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdl
U2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uOjp6b29tRWxzZXdoZXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0
UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2Fs
ZUF0UmF0aW8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVB
bmltYXRpb246OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1h
dGlvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
OmVuZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFs
U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpm
aW5hbFBhZ2VTY2FsZSk6CisKIDIwMTEtMTEtMjIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9l
eHRlbnNpb25zLWV2ZW50cy5odG1sIGlzIHRpbWluZyBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMDlhN2VjMWFiNDNmMWI2ZTI3Y2I4MDRmYTQ1N2I5YmI5OWE0YTY3OS4uODU1NGRl
ZTc5YmU4YzcwYTIwZjkyODdiMTk3NTkyNTUwZWE5MjZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0xMS0yMiAgQWxleGFuZHJlIEVsaWFzICA8YWVs
aWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBhbmlt
YXRpb24gc3VwcG9ydCB0byBJbXBsIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgbWF0aCBoZWxwZXIgY2xhc3MgdG8g
Y29tcHV0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCisgICAgICAgIGFuaW1hdGlvbiwgYW5kIGFuIGV2
ZW50IGZvcndhcmRpbmcgbWVjaGFuaXNtIHNvIHRoYXQgdGhlIHJlbmRlcgorICAgICAgICBwcm9j
ZXNzIGNhbiB0cmlnZ2VyIHRoZSBhbmltYXRpb24gdG8gYmVnaW4uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTI5IGZp
bGVkLikKKworICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdG9yLmg6CisgICAgICAgICogcHVi
bGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNjYWxlQW5pbWF0
aW9uRXZlbnQ6OldlYlBhZ2VTY2FsZUFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBwdWJsaWMv
YW5kcm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpoYW5kbGVQ
YWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvYW5k
cm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0
RXZlbnRGYWN0b3J5OjpwYWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisKIDIwMTEtMTEtMjIgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1
bSBERVBTIHRvIHIxMTA5NjAgYW5kIHNldCB0aGUgZGlzYWJsZV9uYWNsIGZsYWcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNGFiYzg0MGZlOTcwYzVjMmIyMDExMzE0ZWVkNmM2MjZhZjhmODU1Ni4uNDJj
NmM3NDNjODExYjZlZmM3ZTI5ZGVhMmZlZmYzZjgyNjMyNjdmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzU3Niw2ICszNTc2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0
SGFuZGxlci5oCmluZGV4IGZhY2JiZTVjZmFiZGZkMDhlNjU5NTkyY2ZmMWJjYzQ1M2VjZDdkMTIu
LmZmYjBkNWZlNWE5YjlkOTY2MjQyNmMxYTAzOWM2Yzk3MjJkZDQwMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaApAQCAtNTEsNiArNTEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYg
YW5jaG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpID0gMDsKIAor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0
YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgZmxvYXQg
cGFnZVNjYWxlLAorICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOworCiBwcm90ZWN0ZWQ6
CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFu
ZGxlckNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCA4Y2ZiZDMwN2EwNTA5NDBjZjZiMDg3MTRkYzU4MjVmZGY4YWE5MzE2Li5hOThjNGVhMDkx
MWNkYmNhYjA4MmE2N2VjZDBiMjA5ZDkxYzkyZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CkBAIC04NCw2ICs4NSwyMSBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3VibGUg
ZnJhbWVCZWdpblRpbWVNcykKIHsKKyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSAt
IEludFBvaW50KCk7CisKKyAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlv
bi0+cGFnZVNjYWxlQXRUaW1lKGZyYW1lQmVnaW5UaW1lTXMpIC8gbV9wYWdlU2NhbGUpOworICAg
IEludFNpemUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRB
dFRpbWUoZnJhbWVCZWdpblRpbWVNcyk7CisgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8gbV9wYWdl
U2NhbGVEZWx0YSk7CisgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRTY3JvbGwg
LSBzY3JvbGxUb3RhbCk7CisgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCk7CisKKyAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVB
dFRpbWUoZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24u
Y2xlYXIoKTsKKyAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7
CisgICAgfQogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQpAQCAt
MjIxLDYgKzIzNywyOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFBhZ2VTY2FsZUZh
Y3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IG1pbgogICAgIGFkanVzdFNjcm9s
bHNGb3JQYWdlU2NhbGVDaGFuZ2UocGFnZVNjYWxlQ2hhbmdlKTsKIH0KIAordm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwKKyAgICBib29sIGFuY2hvclBvaW50LAorICAgIGZsb2F0IHBhZ2VTY2FsZSwK
KyAgICBkb3VibGUgZHVyYXRpb25NcykKK3sKKyAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gbV9zY3JvbGxMYXll
ckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEo
KSAtIEludFBvaW50KCk7CisKKyAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IGFkb3B0UHRyKG5l
dyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGxUb3RhbCwgbV9wYWdlU2NhbGUsIG1fdmlld3Bv
cnRTaXplLCBjdXJyZW50VGltZU1zKCkpKTsKKworICAgIGlmIChhbmNob3JQb2ludCkgeworICAg
ICAgICBJbnRTaXplIHdpbmRvd0FuY2hvcih0YXJnZXRQb3NpdGlvbik7CisgICAgICAgIHdpbmRv
d0FuY2hvci5zY2FsZShtX3BhZ2VTY2FsZSAvIHBhZ2VTY2FsZSk7CisgICAgICAgIHdpbmRvd0Fu
Y2hvciAtPSBzY3JvbGxUb3RhbDsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21X
aXRoQW5jaG9yKHdpbmRvd0FuY2hvciwgcGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21Ubyh0YXJnZXRQb3NpdGlvbiwg
cGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09u
SW1wbFRocmVhZCgpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFkanVzdFNjcm9s
bHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQgcGFnZVNjYWxlQ2hhbmdlKQogewogICAgIGlmIChw
YWdlU2NhbGVDaGFuZ2UgPT0gMSkKQEAgLTM1MSw3ICszOTAsNyBAQCBQYXNzT3duUHRyPENDU2Ny
b2xsQW5kU2NhbGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMo
KQogewogICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gYWRvcHRQ
dHIobmV3IENDU2Nyb2xsQW5kU2NhbGVTZXQoKSk7CiAgICAgYm9vbCBkaWRNb3ZlID0gbV9zY3Jv
bGxMYXllckltcGwgJiYgKCFtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKS5pc1plcm8o
KSB8fCBtX3BhZ2VTY2FsZURlbHRhICE9IDEuMGYpOwotICAgIGlmICghZGlkTW92ZSB8fCBtX3Bp
bmNoR2VzdHVyZUFjdGl2ZSkgeworICAgIGlmICghZGlkTW92ZSB8fCBtX3BpbmNoR2VzdHVyZUFj
dGl2ZSB8fCBtX3BhZ2VTY2FsZUFuaW1hdGlvbi5nZXQoKSkgewogICAgICAgICBtX3NlbnRQYWdl
U2NhbGVEZWx0YSA9IHNjcm9sbEluZm8tPnBhZ2VTY2FsZURlbHRhID0gMTsKICAgICAgICAgcmV0
dXJuIHNjcm9sbEluZm8ucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBjYTRmNzFiZDg2YWEzMjk0NTQ1ZWY5N2JhZDdiYmExZGU3OTZiN2Vh
Li42OGE2NTNkZGU0MWY2ZWZlMGViMDc5YTBlMmY3NWY3OWU4MmJkZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEdyQ29udGV4
dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CitjbGFz
cyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTEwOCw2ICsxMDks
MTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0
IHBhZ2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAg
IGZsb2F0IHBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2
b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9u
LAorICAgICAgICBib29sIGFuY2hvclBvaW50LAorICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCisg
ICAgICAgIGRvdWJsZSBkdXJhdGlvbk1zKTsKKwogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgUGFzc093blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBAIC0xMzgsNiArMTQ0LDgg
QEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAK
ICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOworCisgICAgT3duUHRyPENDUGFnZVNjYWxl
QW5pbWF0aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0ZTM5NGEwY2Y4NDY4ZGJi
ZDhkMzM1OWE4OTI2Y2RjZjBmMGY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApA
QCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5k
b3dTaXplLCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIGluaXRpYWxpemUoc2Nyb2xsU3RhcnQs
IHBhZ2VTY2FsZVN0YXJ0LCB3aW5kb3dTaXplLCBzdGFydFRpbWUpOworfQorCit2b2lkIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBm
bG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgZG91YmxlIHN0
YXJ0VGltZSkKK3sKKyAgICBtX3Njcm9sbFN0YXJ0ID0gc2Nyb2xsU3RhcnQ7CisgICAgbV9wYWdl
U2NhbGVTdGFydCA9IHBhZ2VTY2FsZVN0YXJ0OworICAgIG1fd2luZG93U2l6ZSA9IHdpbmRvd1Np
emU7CisgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7CisgICAgbV9zY3JvbGxFbmQgPSBzY3JvbGxT
dGFydDsKKyAgICBtX3BhZ2VTY2FsZUVuZCA9IHBhZ2VTY2FsZVN0YXJ0OworICAgIG1fc3RhcnRU
aW1lID0gc3RhcnRUaW1lOworfQorCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8o
Y29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUg
ZHVyYXRpb24pCit7CisgICAgaWYgKG1fcGFnZVNjYWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUp
IHsKKyAgICAgICAgLy8gRm9yIHVuaWZvcm0tbG9va2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5j
aG9yIChwb2ludCB0aGF0IHJlbWFpbnMgaW4KKyAgICAgICAgLy8gcGxhY2UgdGhyb3VnaG91dCB0
aGUgem9vbSkgZnJvbSB0aGUgc3RhcnQgYW5kIGVuZCByZWN0cy4KKyAgICAgICAgRmxvYXRSZWN0
IHN0YXJ0UmVjdChJbnRQb2ludChtX3Njcm9sbFN0YXJ0KSwgbV93aW5kb3dTaXplKTsKKyAgICAg
ICAgRmxvYXRSZWN0IGVuZFJlY3QoSW50UG9pbnQoZmluYWxTY3JvbGwpLCBtX3dpbmRvd1NpemUp
OworICAgICAgICBlbmRSZWN0LnNjYWxlKG1fcGFnZVNjYWxlU3RhcnQgLyBmaW5hbFBhZ2VTY2Fs
ZSk7CisKKyAgICAgICAgLy8gVGhlIGFuY2hvciBpcyB0aGUgcG9pbnQgd2hpY2ggaXMgYXQgdGhl
IHNhbWUgcmF0aW8gb2YgdGhlIHNpZGVzIG9mCisgICAgICAgIC8vIGJvdGggc3RhcnRSZWN0IGFu
ZCBlbmRSZWN0LiBGb3IgZXhhbXBsZSwgYSB6b29tLWluIGRvdWJsZS10YXAgdG8gYQorICAgICAg
ICAvLyBwZXJmZWN0bHkgY2VudGVyZWQgcmVjdCB3aWxsIGhhdmUgYW5jaG9yIHJhdGlvcyAoMC41
LCAwLjUpLCB3aGlsZSBvbmUKKyAgICAgICAgLy8gdG8gYSByZWN0IHRvdWNoaW5nIHRoZSBib3R0
b20tcmlnaHQgb2YgdGhlIHNjcmVlbiB3aWxsIGhhdmUgYW5jaG9yCisgICAgICAgIC8vIHJhdGlv
cyAoMS4wLCAxLjApLiBJbiBvdGhlciB3b3JkcywgaXQgb2JleXMgdGhlIGVxdWF0aW9uczoKKyAg
ICAgICAgLy8gYW5jaG9yWCA9IHN0YXJ0X3dpZHRoICogcmF0aW9YICsgc3RhcnRfeAorICAgICAg
ICAvLyBhbmNob3JYID0gZW5kX3dpZHRoICogcmF0aW9YICsgZW5kX3gKKyAgICAgICAgLy8gYW5j
aG9yWSA9IHN0YXJ0X2hlaWdodCAqIHJhdGlvWSArIHN0YXJ0X3kKKyAgICAgICAgLy8gYW5jaG9y
WSA9IGVuZF9oZWlnaHQgKiByYXRpb1kgKyBlbmRfeQorICAgICAgICAvLyB3aGVyZSBib3RoIGFu
Y2hvcnt4LHl9IGFuZCByYXRpb3t4LHl9IGJlZ2luIGFzIHVua25vd25zLiBTb2x2aW5nCisgICAg
ICAgIC8vIGZvciB0aGUgcmF0aW9zLCB3ZSBnZXQgdGhlIGZvbGxvd2luZyBmb3JtdWxhczoKKyAg
ICAgICAgZmxvYXQgcmF0aW9YID0gKHN0YXJ0UmVjdC54KCkgLSBlbmRSZWN0LngoKSkgLyAoZW5k
UmVjdC53aWR0aCgpIC0gc3RhcnRSZWN0LndpZHRoKCkpOworICAgICAgICBmbG9hdCByYXRpb1kg
PSAoc3RhcnRSZWN0LnkoKSAtIGVuZFJlY3QueSgpKSAvIChlbmRSZWN0LmhlaWdodCgpIC0gc3Rh
cnRSZWN0LmhlaWdodCgpKTsKKworICAgICAgICBJbnRTaXplIGFuY2hvcihtX3dpbmRvd1NpemUu
d2lkdGgoKSAqIHJhdGlvWCwgbV93aW5kb3dTaXplLmhlaWdodCgpICogcmF0aW9ZKTsKKyAgICAg
ICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb24pOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwdXJlIHRyYW5zbGF0aW9uLCB0aGVu
IHRoZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVhcmx5CisgICAgICAgIC8vIGludGVycG9sYXRl
IHRoZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCisgICAgICAgIG1fc2Nyb2xsRW5kID0gZmluYWxT
Y3JvbGw7CisgICAgICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQYWdlU2NhbGU7CisgICAgICAg
IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICAgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7Cisg
ICAgfQorfQorCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25z
dCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24p
Cit7CisgICAgbV9zY3JvbGxFbmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9yOworICAgIG1fc2Ny
b2xsRW5kLnNjYWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CisgICAgbV9z
Y3JvbGxFbmQgLT0gYW5jaG9yOworICAgIG1fc2Nyb2xsRW5kLmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKKworICAgIG1fYW5jaG9yID0gYW5jaG9yOworICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQ
YWdlU2NhbGU7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIG1fYW5jaG9yTW9kZSA9
IHRydWU7Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21FbHNld2hlcmUoY29u
c3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVy
YXRpb24sIGRvdWJsZSB0aW1lKQoreworICAgIGluaXRpYWxpemUoc2Nyb2xsT2Zmc2V0QXRUaW1l
KHRpbWUpLCBwYWdlU2NhbGVBdFRpbWUodGltZSksIG1fd2luZG93U2l6ZSwgbV9zdGFydFRpbWUp
OworCisgICAgem9vbVRvKGZpbmFsU2Nyb2xsLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb24pOwor
fQorCisKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0VGltZShk
b3VibGUgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9n
cmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7Cit9CisKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2VT
Y2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZSkpOworfQorCitib29sIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBj
b25zdAoreworICAgIHJldHVybiB0aW1lID49IGVuZFRpbWUoKTsKK30KKworZmxvYXQgQ0NQYWdl
U2NhbGVBbmltYXRpb246OnByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAor
eworICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWUpKQorICAgICAgICByZXR1
cm4gMS4wZjsKKworICAgIHJldHVybiAodGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRpb247
Cit9CisKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0UmF0aW8o
ZmxvYXQgcmF0aW8pIGNvbnN0Cit7CisgICAgaWYgKHJhdGlvIDw9IDAuMGYpCisgICAgICAgIHJl
dHVybiBtX3Njcm9sbFN0YXJ0OworICAgIGlmIChyYXRpbyA+PSAxLjBmKQorICAgICAgICByZXR1
cm4gbV9zY3JvbGxFbmQ7CisKKyAgICBmbG9hdCBjdXJyZW50UGFnZVNjYWxlID0gcGFnZVNjYWxl
QXRSYXRpbyhyYXRpbyk7CisgICAgSW50U2l6ZSBjdXJyZW50U2Nyb2xsT2Zmc2V0OworICAgIGlm
IChtX2FuY2hvck1vZGUpIHsKKyAgICAgICAgLy8gS2VlcCB0aGUgYW5jaG9yIHN0YWJsZSBvbiB0
aGUgc2NyZWVuIGF0IHRoZSBjdXJyZW50IHNjYWxlLgorICAgICAgICBJbnRTaXplIGRvY3VtZW50
QW5jaG9yID0gbV9zY3JvbGxTdGFydCArIG1fYW5jaG9yOworICAgICAgICBkb2N1bWVudEFuY2hv
ci5zY2FsZShjdXJyZW50UGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CisgICAgICAgIGN1
cnJlbnRTY3JvbGxPZmZzZXQgPSBkb2N1bWVudEFuY2hvciAtIG1fYW5jaG9yOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIEZpcnN0IG1vdmUgYm90aCBzY3JvbGwgb2Zmc2V0cyB0byB0aGUgY3Vy
cmVudCBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICBGbG9hdFNpemUgc2NhbGVkU3RhcnRTY3Jv
bGwobV9zY3JvbGxTdGFydCk7CisgICAgICAgIHNjYWxlZFN0YXJ0U2Nyb2xsLnNjYWxlKGN1cnJl
bnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKKyAgICAgICAgRmxvYXRTaXplIHNjYWxl
ZEVuZFNjcm9sbChtX3Njcm9sbEVuZCk7CisgICAgICAgIHNjYWxlZEVuZFNjcm9sbC5zY2FsZShj
dXJyZW50UGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVFbmQpOworCisgICAgICAgIC8vIExpbmVhcmx5
IGludGVycG9sYXRlIGJldHdlZW4gdGhlbS4KKyAgICAgICAgRmxvYXRTaXplIGRlbHRhID0gc2Nh
bGVkRW5kU2Nyb2xsIC0gc2NhbGVkU3RhcnRTY3JvbGw7CisgICAgICAgIGRlbHRhLnNjYWxlKHJh
dGlvKTsKKyAgICAgICAgY3VycmVudFNjcm9sbE9mZnNldCA9IHJvdW5kZWRJbnRTaXplKHNjYWxl
ZFN0YXJ0U2Nyb2xsICsgZGVsdGEpOworICAgIH0KKworICAgIHJldHVybiBjdXJyZW50U2Nyb2xs
T2Zmc2V0OworfQorCitmbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRp
byhmbG9hdCByYXRpbykgY29uc3QKK3sKKyAgICBpZiAocmF0aW8gPD0gMC4wZikKKyAgICAgICAg
cmV0dXJuIG1fcGFnZVNjYWxlU3RhcnQ7CisgICAgaWYgKHJhdGlvID49IDEuMGYpCisgICAgICAg
IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsKKworICAgIC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRo
ZSBtYWduaXR1ZGUgaW4gbG9nIHNjYWxlLgorICAgIC8vIExvZyBzY2FsZSBpcyBuZWVkZWQgdG8g
bWFpbnRhaW4gdGhlIGFwcGVhcmFuY2Ugb2YgdW5pZm9ybSB6b29tLiBGb3IKKyAgICAvLyBleGFt
cGxlLCBpZiB3ZSB6b29tIGZyb20gMC41IHRvIDQuMCBpbiAzIHNlY29uZHMsIHRoZW4gd2Ugc2hv
dWxkCisgICAgLy8gYmUgem9vbWluZyBieSAyeCBldmVyeSBzZWNvbmQuCisgICAgZmxvYXQgZGlm
ZiA9IG1fcGFnZVNjYWxlRW5kIC8gbV9wYWdlU2NhbGVTdGFydDsKKyAgICBmbG9hdCBsb2dEaWZm
ID0gbG9nKGRpZmYpOworICAgIGxvZ0RpZmYgKj0gcmF0aW87CisgICAgZGlmZiA9IGV4cChsb2dE
aWZmKTsKKyAgICByZXR1cm4gbV9wYWdlU2NhbGVTdGFydCAqIGRpZmY7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTU4MWUxYmM3Y2VkZTA5Njk1NGVlNmExYzQyMTc3OGQwNTY4ODlhMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NQYWdlU2NhbGVB
bmltYXRpb25faAorI2RlZmluZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbl9oCisKKyNpbmNsdWRlICJJ
bnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBzbWFsbCBoZWxwZXIgY2xh
c3MgdGhhdCBkb2VzIHRoZSBtYXRoIGZvciB6b29tIGFuaW1hdGlvbnMsIHByaW1hcmlseSBmb3IK
Ky8vIGRvdWJsZS10YXAgem9vbS4gSW5pdGlhbGl6ZSBpdCB3aXRoIHN0YXJ0aW5nIGFuZCBlbmRp
bmcgc2Nyb2xsL3BhZ2Ugc2NhbGUKKy8vIHBvc2l0aW9ucyBhbmQgYW4gYW5pbWF0aW9uIGxlbmd0
aCB0aW1lLCB0aGVuIGNhbGwgLi4uQXRUaW1lKCkgYXQgZXZlcnkgZnJhbWUKKy8vIHRvIG9idGFp
biB0aGUgY3VycmVudCBpbnRlcnBvbGF0ZWQgcG9zaXRpb24uCitjbGFzcyBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbiB7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0IHdpdGggdGhlIHN0YXJ0aW5nIHBh
Z2Ugc2NhbGUgYW5kIHNjcm9sbCBvZmZzZXQgKHdoaWNoIGlzIGluCisgICAgLy8gcGFnZVNjYWxl
U3RhcnQgc3BhY2UpLiBUaGUgd2luZG93IHNpemUgaXMgdGhlIHVzZXItdmlld2FibGUgYXJlYQor
ICAgIC8vIGluIHBpeGVscy4KKyAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRv
d1NpemUsIGRvdWJsZSBzdGFydFRpbWUpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Rz
IGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUgb2YgdGhlbQorICAgIC8vIGltbWVk
aWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhlIGZpbmFsIHNjcm9sbCBhbmQgcGFn
ZSBzY2FsZS4KKworICAgIC8vIFpvb20gd2hpbGUgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0
b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24uIFRoZQorICAgIC8vIHNjcm9sbCBvZmZzZXQgaXMgaW4g
ZmluYWxQYWdlU2NhbGUgY29vcmRpbmF0ZXMuCisgICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6
ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwor
CisgICAgLy8gWm9vbSBiYXNlZCBvbiBhIHNwZWNpZmllZCBvbnNjcmVlbiBhbmNob3IsIHdoaWNo
IHdpbGwgcmVtYWluIGF0IHRoZSBzYW1lCisgICAgLy8gcG9zaXRpb24gb24gdGhlIHNjcmVlbiB0
aHJvdWdob3V0IHRoZSBhbmltYXRpb24uIFRoZSBhbmNob3IgaXMgaW4gbG9jYWwKKyAgICAvLyBz
cGFjZSByZWxhdGl2ZSB0byBzY3JvbGxTdGFydC4KKyAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNv
bnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlv
bik7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHpvb20gdGFyZ2V0IHdoaWxlIGluIHRoZSBtaWRkbGUg
b2YgYW4gYW5pbWF0aW9uLgorICAgIHZvaWQgem9vbUVsc2V3aGVyZShjb25zdCBJbnRTaXplJiBm
aW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91Ymxl
IHRpbWUpOworCisgICAgLy8gQ2FsbCB0aGVzZSBmdW5jdGlvbnMgd2hpbGUgdGhlIGFuaW1hdGlv
biBpcyBpbiBwcm9ncmVzcyB0byBvdXRwdXQgdGhlCisgICAgLy8gY3VycmVudCBzdGF0ZS4KKyAg
ICBJbnRTaXplIHNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgZmxv
YXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OworCisgICAgLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIHJldHVybiBzdGF0ZSB3aGljaCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0
aGUKKyAgICAvLyBjb3Vyc2Ugb2YgdGhlIGFuaW1hdGlvbi4KKyAgICBkb3VibGUgc3RhcnRUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBkb3VibGUgZHVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgZG91YmxlIGVuZFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0VGltZSArIG1fZHVyYXRpb247IH0KKyAgICBjb25zdCBJbnRTaXplJiBm
aW5hbFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRW5kOyB9CisgICAgZmxv
YXQgZmluYWxQYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsgfQorcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZs
b2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBkb3VibGUgc3Rh
cnRUaW1lKTsKKyAgICBmbG9hdCBwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29u
c3Q7CisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsK
KyAgICBmbG9hdCBwYWdlU2NhbGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKKworICAgIElu
dFNpemUgbV9zY3JvbGxTdGFydDsKKyAgICBmbG9hdCBtX3BhZ2VTY2FsZVN0YXJ0OworICAgIElu
dFNpemUgbV93aW5kb3dTaXplOworCisgICAgYm9vbCBtX2FuY2hvck1vZGU7CisgICAgSW50U2l6
ZSBtX2FuY2hvcjsKKyAgICBJbnRTaXplIG1fc2Nyb2xsRW5kOworICAgIGZsb2F0IG1fcGFnZVNj
YWxlRW5kOworCisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tcG9zaXRvci5oCmluZGV4IDc5YjhiYzU4MTEyYjc1MDgx
ZjY0NWY2ODYzZGMyZDI3Y2YzYTFkNzcuLmM0MjdkM2RjZDJlMWYzMTg4Mjc0ODkxZjViYjEyZjY4
YjAyODkyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNv
bXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21wb3Np
dG9yLmgKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkNv
bXBvc2l0b3JDbGllbnQ7CiBjbGFzcyBXZWJJbnB1dEV2ZW50OworY2xhc3MgV2ViUGFnZVNjYWxl
QW5pbWF0aW9uRXZlbnQ7CiBjbGFzcyBXZWJUaHJlYWQ7CiAKIC8vIFRoaXMgcmVwcmVzZW50cyB0
aGUgY29tcG9zaXRvciBhc3NvY2lhdGVkIHdpdGggYSBXZWJXaWRnZXQuIEFsbCBjYWxscyB0byB0
aGUgV2ViQ29tcG9zaXRvciBtdXN0CkBAIC00Myw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXRUJL
SVRfRVhQT1JUIHN0YXRpYyBXZWJDb21wb3NpdG9yKiBmcm9tSWRlbnRpZmllcihpbnQpOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldENsaWVudChXZWJDb21wb3NpdG9yQ2xpZW50KikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVQYWdlU2NhbGVBbmltYXRpb25FdmVudChjb25zdCBXZWJQYWdl
U2NhbGVBbmltYXRpb25FdmVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSW5wdXRF
dmVudChjb25zdCBXZWJJbnB1dEV2ZW50JikgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKaW5kZXggYjA4ZTU2ZTM2NDMx
M2E1ZjNiOTE0MzhkMzU0YjhiYzY5YmQ4MTU3ZS4uYjVmNWYxYjEyMTEwMjQ4NTQyZDMwOGZmYWFh
ZDNmZTlkNzY3YjZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW5wdXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RXZlbnQuaApAQCAtMTA4LDYgKzEwOCw5IEBAIHB1YmxpYzoKICAgICAgICAgR2VzdHVyZUZs
aW5nQ2FuY2VsLAogICAgICAgICBHZXN0dXJlVGFwLAogCisgICAgICAgIC8vIFdlYlBhZ2VTY2Fs
ZUFuaW1hdGlvbkV2ZW50CisgICAgICAgIFBhZ2VTY2FsZUFuaW1hdGlvbiwKKwogICAgICAgICAv
LyBXZWJUb3VjaEV2ZW50CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRvdWNoTW92ZSwK
QEAgLTM2Myw2ICszNjYsMjcgQEAgcHVibGljOgogICAgIH0KIH07CiAKKy8vIFdlYlBhZ2VTY2Fs
ZUFuaW1hdGlvbkV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworY2xhc3MgV2ViUGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQgOiBwdWJsaWMgV2Vi
SW5wdXRFdmVudCB7CitwdWJsaWM6CisgICAgaW50IGdsb2JhbFg7CisgICAgaW50IGdsb2JhbFk7
CisgICAgYm9vbCBhbmNob3JQb2ludDsKKyAgICBmbG9hdCBwYWdlU2NhbGU7CisgICAgZG91Ymxl
IGR1cmF0aW9uTXM7CisKKyAgICBXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCh1bnNpZ25lZCBz
aXplUGFyYW0gPSBzaXplb2YoV2ViUGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQpKQorICAgICAgICA6
IFdlYklucHV0RXZlbnQoc2l6ZVBhcmFtKQorICAgICAgICAsIGdsb2JhbFgoMCkKKyAgICAgICAg
LCBnbG9iYWxZKDApCisgICAgICAgICwgYW5jaG9yUG9pbnQoZmFsc2UpCisgICAgICAgICwgcGFn
ZVNjYWxlKDEpCisgICAgICAgICwgZHVyYXRpb25NcygwKQorICAgIHsKKyAgICB9Cit9OworCiAv
LyBXZWJUb3VjaEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2Vi
SW5wdXRFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9h
bmRyb2lkL1dlYklucHV0RXZlbnRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9hbmRyb2lkL1dlYklucHV0RXZlbnRGYWN0b3J5LmgKaW5kZXggZDQyODc0NWU1NzY2Nzhk
ODRlYWViMzVhYTUzMjg0OWIyZjExMTI4Mi4uNzRhNzJlODBhOWQ3MTA0NjA4MWI4NWQwZThlNmRi
ZmY1MmM1NWJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5k
cm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuaApAQCAtNjAsNiArNjAsMTQgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNb3VzZUV2ZW50VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIHRpbWVTdGFtcFNlY29uZHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiA9IFdl
Yk1vdXNlRXZlbnQ6OkJ1dHRvbkxlZnQpOworCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
UGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQgcGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQoCisgICAgICAg
IGludCB4LAorICAgICAgICBpbnQgeSwKKyAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAg
ICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICBkb3VibGUgZHVyYXRpb25NcywKKyAgICAgICAg
ZG91YmxlIHRpbWVTdGFtcFNlY29uZHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5jcHAKaW5k
ZXggZTAzMWUwZTlkZjI5YmZkNzQxNWY5NjlmZjdmNzg5YjA1Y2MxMjJkZS4uMDE5OTliOGNjYzU3
Y2E1MWE3NDhhYjc0ZWJjNTVkY2VjZGZiM2VmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcApAQCAtMTEyLDYgKzExMiwxNiBAQCB2b2lk
IFdlYkNvbXBvc2l0b3JJbXBsOjpzZXRDbGllbnQoV2ViQ29tcG9zaXRvckNsaWVudCogY2xpZW50
KQogICAgIG1fY2xpZW50ID0gY2xpZW50OwogfQogCit2b2lkIFdlYkNvbXBvc2l0b3JJbXBsOjpo
YW5kbGVQYWdlU2NhbGVBbmltYXRpb25FdmVudChjb25zdCBXZWJQYWdlU2NhbGVBbmltYXRpb25F
dmVudCYgYW5pbWF0aW9uKQoreworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7
CisgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKAorICAg
ICAgICBJbnRTaXplKGFuaW1hdGlvbi5nbG9iYWxYLCBhbmltYXRpb24uZ2xvYmFsWSksCisgICAg
ICAgIGFuaW1hdGlvbi5hbmNob3JQb2ludCwKKyAgICAgICAgYW5pbWF0aW9uLnBhZ2VTY2FsZSwK
KyAgICAgICAgYW5pbWF0aW9uLmR1cmF0aW9uTXMpOworfQorCiB2b2lkIFdlYkNvbXBvc2l0b3JJ
bXBsOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQogewogICAg
IEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuaAppbmRleCBiZGUwOTY4OWM5NDVlOTdiODQ2Y2Jl
NTY4OTdlMDk3MTgzNWRiYzFlLi5lZGZlMTlkYzM0NzY5MjcxZjlkZmQ0NDI0NjljZWZhZjFiMjcx
NGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9y
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbXBs
LmgKQEAgLTU1LDYgKzU1LDcgQEAgcHVibGljOgogCiAgICAgLy8gV2ViQ29tcG9zaXRvciBpbXBs
ZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2ViQ29tcG9zaXRvckNsaWVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYWdlU2NhbGVBbmltYXRpb25FdmVudChjb25z
dCBXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCYpOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVJ
bnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmKTsKIAogICAgIC8vIFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyIGltcGxlbWVudGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBvcHVwTWVudUltcGwuY3BwCmluZGV4IGQxZjExYzMyOWI5NTI5Mjk0MTg2OTNmNzI2ZTEy
ZTVmMTkwODI3NGEuLjRiNWI4OWUxNTc2Mzk3MWI4MGNjOTM1MTI3MmMzNzczZjhjMzkzMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwCkBA
IC0yODMsNiArMjgzLDcgQEAgYm9vbCBXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50
KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpVbmRlZmluZWQ6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZUVudGVyOgogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6Q29udGV4dE1lbnU6CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpQ
YWdlU2NhbGVBbmltYXRpb246CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0
dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvYW5kcm9p
ZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9h
bmRyb2lkL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcAppbmRleCAxOGUxNGJmYjQwMWNhYWMyZGE0
MDMwMDYwZGY2ZDExZjZkMTZjMTU0Li43MjE0NDQxYzAwOWEzZDYwMjk5MDFlMzliMTljNWEzYTRi
OWVhNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9hbmRyb2lkL1dl
YklucHV0RXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9h
bmRyb2lkL1dlYklucHV0RXZlbnRGYWN0b3J5LmNwcApAQCAtMTAyLDQgKzEwMiwyOCBAQCBXZWJN
b3VzZUV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5Ojptb3VzZUV2ZW50KGludCB4LCBpbnQgeSwK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvLyBXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dlYlBh
Z2VTY2FsZUFuaW1hdGlvbkV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OjpwYWdlU2NhbGVBbmlt
YXRpb25FdmVudCgKKyAgICBpbnQgeCwKKyAgICBpbnQgeSwKKyAgICBib29sIGFuY2hvclBvaW50
LAorICAgIGZsb2F0IHBhZ2VTY2FsZSwKKyAgICBkb3VibGUgZHVyYXRpb25NcywKKyAgICBkb3Vi
bGUgdGltZVN0YW1wU2Vjb25kcykKK3sKKyAgICBXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCBy
ZXN1bHQ7CisKKyAgICByZXN1bHQuZ2xvYmFsWCA9IHg7CisgICAgcmVzdWx0Lmdsb2JhbFkgPSB5
OworICAgIHJlc3VsdC5hbmNob3JQb2ludCA9IGFuY2hvclBvaW50OworICAgIHJlc3VsdC5wYWdl
U2NhbGUgPSBwYWdlU2NhbGU7CisgICAgcmVzdWx0LmR1cmF0aW9uTXMgPSBkdXJhdGlvbk1zOwor
CisgICAgcmVzdWx0LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpQYWdlU2NhbGVBbmltYXRpb247Cisg
ICAgcmVzdWx0LnRpbWVTdGFtcFNlY29uZHMgPSB0aW1lU3RhbXBTZWNvbmRzOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116427</attachid>
            <date>2011-11-23 14:19:50 -0800</date>
            <delta_ts>2011-11-23 17:22:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111123141949.patch</filename>
            <type>text/plain</type>
            <size>27282</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uZDI1NmZlMThkZDU0MTBhNTczYjE3NzI1NTA5MTEz
MTk2MmRhMDg5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgYW4gZXZlbnQgZm9yd2FyZGluZyBtZWNoYW5pc20gc28gdGhhdCB0aGUgcmVu
ZGVyCisgICAgICAgIHByb2Nlc3MgY2FuIHRyaWdnZXIgdGhlIGFuaW1hdGlvbiB0byBiZWdpbi4K
KworICAgICAgICBObyBuZXcgdGVzdHMuIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE1MjkgZmlsZWQuKQorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjphbmltYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3Jv
bGxEZWx0YXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0NQ
YWdlU2NhbGVBbmltYXRpb246OkNDUGFnZVNjYWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdl
U2NhbGVBbmltYXRpb246Onpvb21XaXRoQW5jaG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uOjp6b29tRWxzZXdoZXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0
UmF0aW8pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2Fs
ZUF0UmF0aW8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVB
bmltYXRpb246OnN0YXJ0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1h
dGlvbjo6ZHVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
OmVuZFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFs
U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpm
aW5hbFBhZ2VTY2FsZSk6CisKIDIwMTEtMTEtMjIgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBpbnNwZWN0b3IvZXh0ZW5zaW9ucy9l
eHRlbnNpb25zLWV2ZW50cy5odG1sIGlzIHRpbWluZyBvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggMDlhN2VjMWFiNDNmMWI2ZTI3Y2I4MDRmYTQ1N2I5YmI5OWE0YTY3OS4uODU1NGRl
ZTc5YmU4YzcwYTIwZjkyODdiMTk3NTkyNTUwZWE5MjZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0xMS0yMiAgQWxleGFuZHJlIEVsaWFzICA8YWVs
aWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBhbmlt
YXRpb24gc3VwcG9ydCB0byBJbXBsIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgbWF0aCBoZWxwZXIgY2xhc3MgdG8g
Y29tcHV0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCisgICAgICAgIGFuaW1hdGlvbiwgYW5kIGFuIGV2
ZW50IGZvcndhcmRpbmcgbWVjaGFuaXNtIHNvIHRoYXQgdGhlIHJlbmRlcgorICAgICAgICBwcm9j
ZXNzIGNhbiB0cmlnZ2VyIHRoZSBhbmltYXRpb24gdG8gYmVnaW4uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLiAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNTI5IGZp
bGVkLikKKworICAgICAgICAqIHB1YmxpYy9XZWJDb21wb3NpdG9yLmg6CisgICAgICAgICogcHVi
bGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNjYWxlQW5pbWF0
aW9uRXZlbnQ6OldlYlBhZ2VTY2FsZUFuaW1hdGlvbkV2ZW50KToKKyAgICAgICAgKiBwdWJsaWMv
YW5kcm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oOgorICAgICAgICAqIHNyYy9XZWJDb21wb3Np
dG9ySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbXBvc2l0b3JJbXBsOjpoYW5kbGVQ
YWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYlBvcHVwTWVudUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKiBzcmMvYW5k
cm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklucHV0
RXZlbnRGYWN0b3J5OjpwYWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisKIDIwMTEtMTEtMjIgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUm9sbCBDaHJvbWl1
bSBERVBTIHRvIHIxMTA5NjAgYW5kIHNldCB0aGUgZGlzYWJsZV9uYWNsIGZsYWcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNGFiYzg0MGZlOTcwYzVjMmIyMDExMzE0ZWVkNmM2MjZhZjhmODU1Ni4uNDJj
NmM3NDNjODExYjZlZmM3ZTI5ZGVhMmZlZmYzZjgyNjMyNjdmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzU3Niw2ICszNTc2LDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRp
b24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0lucHV0
SGFuZGxlci5oCmluZGV4IGZhY2JiZTVjZmFiZGZkMDhlNjU5NTkyY2ZmMWJjYzQ1M2VjZDdkMTIu
LmZmYjBkNWZlNWE5YjlkOTY2MjQyNmMxYTAzOWM2Yzk3MjJkZDQwMTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSW5wdXRIYW5kbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NJ
bnB1dEhhbmRsZXIuaApAQCAtNTEsNiArNTEsMTEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRhLCBjb25zdCBJbnRQb2ludCYg
YW5jaG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2VzdHVyZUVuZCgpID0gMDsKIAor
ICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0
YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgZmxvYXQg
cGFnZVNjYWxlLAorICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOworCiBwcm90ZWN0ZWQ6
CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5DQ0lucHV0SGFu
ZGxlckNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApp
bmRleCA4Y2ZiZDMwN2EwNTA5NDBjZjZiMDg3MTRkYzU4MjVmZGY4YWE5MzE2Li5hOThjNGVhMDkx
MWNkYmNhYjA4MmE2N2VjZDBiMjA5ZDkxYzkyZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CkBAIC04NCw2ICs4NSwyMSBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3VibGUg
ZnJhbWVCZWdpblRpbWVNcykKIHsKKyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uKQorICAg
ICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKSAt
IEludFBvaW50KCk7CisKKyAgICBzZXRQYWdlU2NhbGVEZWx0YShtX3BhZ2VTY2FsZUFuaW1hdGlv
bi0+cGFnZVNjYWxlQXRUaW1lKGZyYW1lQmVnaW5UaW1lTXMpIC8gbV9wYWdlU2NhbGUpOworICAg
IEludFNpemUgbmV4dFNjcm9sbCA9IG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5zY3JvbGxPZmZzZXRB
dFRpbWUoZnJhbWVCZWdpblRpbWVNcyk7CisgICAgbmV4dFNjcm9sbC5zY2FsZSgxIC8gbV9wYWdl
U2NhbGVEZWx0YSk7CisgICAgbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbEJ5KG5leHRTY3JvbGwg
LSBzY3JvbGxUb3RhbCk7CisgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFk
KCk7CisKKyAgICBpZiAobV9wYWdlU2NhbGVBbmltYXRpb24tPmlzQW5pbWF0aW9uQ29tcGxldGVB
dFRpbWUoZnJhbWVCZWdpblRpbWVNcykpIHsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24u
Y2xlYXIoKTsKKyAgICAgICAgbV9jbGllbnQtPnNldE5lZWRzQ29tbWl0T25JbXBsVGhyZWFkKCk7
CisgICAgfQogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoKQpAQCAt
MjIxLDYgKzIzNywyOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnNldFBhZ2VTY2FsZUZh
Y3RvckFuZExpbWl0cyhmbG9hdCBwYWdlU2NhbGUsIGZsb2F0IG1pbgogICAgIGFkanVzdFNjcm9s
bHNGb3JQYWdlU2NhbGVDaGFuZ2UocGFnZVNjYWxlQ2hhbmdlKTsKIH0KIAordm9pZCBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXplJiB0YXJn
ZXRQb3NpdGlvbiwKKyAgICBib29sIGFuY2hvclBvaW50LAorICAgIGZsb2F0IHBhZ2VTY2FsZSwK
KyAgICBkb3VibGUgZHVyYXRpb25NcykKK3sKKyAgICBpZiAoIW1fc2Nyb2xsTGF5ZXJJbXBsKQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gbV9zY3JvbGxMYXll
ckltcGwtPnNjcm9sbFBvc2l0aW9uKCkgKyBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEo
KSAtIEludFBvaW50KCk7CisKKyAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IGFkb3B0UHRyKG5l
dyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGxUb3RhbCwgbV9wYWdlU2NhbGUsIG1fdmlld3Bv
cnRTaXplLCBjdXJyZW50VGltZU1zKCkpKTsKKworICAgIGlmIChhbmNob3JQb2ludCkgeworICAg
ICAgICBJbnRTaXplIHdpbmRvd0FuY2hvcih0YXJnZXRQb3NpdGlvbik7CisgICAgICAgIHdpbmRv
d0FuY2hvci5zY2FsZShtX3BhZ2VTY2FsZSAvIHBhZ2VTY2FsZSk7CisgICAgICAgIHdpbmRvd0Fu
Y2hvciAtPSBzY3JvbGxUb3RhbDsKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21X
aXRoQW5jaG9yKHdpbmRvd0FuY2hvciwgcGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgbV9wYWdlU2NhbGVBbmltYXRpb24tPnpvb21Ubyh0YXJnZXRQb3NpdGlvbiwg
cGFnZVNjYWxlLCBkdXJhdGlvbk1zKTsKKworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09u
SW1wbFRocmVhZCgpOworfQorCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFkanVzdFNjcm9s
bHNGb3JQYWdlU2NhbGVDaGFuZ2UoZmxvYXQgcGFnZVNjYWxlQ2hhbmdlKQogewogICAgIGlmIChw
YWdlU2NhbGVDaGFuZ2UgPT0gMSkKQEAgLTM1MSw3ICszOTAsNyBAQCBQYXNzT3duUHRyPENDU2Ny
b2xsQW5kU2NhbGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMo
KQogewogICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gYWRvcHRQ
dHIobmV3IENDU2Nyb2xsQW5kU2NhbGVTZXQoKSk7CiAgICAgYm9vbCBkaWRNb3ZlID0gbV9zY3Jv
bGxMYXllckltcGwgJiYgKCFtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKS5pc1plcm8o
KSB8fCBtX3BhZ2VTY2FsZURlbHRhICE9IDEuMGYpOwotICAgIGlmICghZGlkTW92ZSB8fCBtX3Bp
bmNoR2VzdHVyZUFjdGl2ZSkgeworICAgIGlmICghZGlkTW92ZSB8fCBtX3BpbmNoR2VzdHVyZUFj
dGl2ZSB8fCBtX3BhZ2VTY2FsZUFuaW1hdGlvbi5nZXQoKSkgewogICAgICAgICBtX3NlbnRQYWdl
U2NhbGVEZWx0YSA9IHNjcm9sbEluZm8tPnBhZ2VTY2FsZURlbHRhID0gMTsKICAgICAgICAgcmV0
dXJuIHNjcm9sbEluZm8ucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAppbmRleCBjYTRmNzFiZDg2YWEzMjk0NTQ1ZWY5N2JhZDdiYmExZGU3OTZiN2Vh
Li42OGE2NTNkZGU0MWY2ZWZlMGViMDc5YTBlMmY3NWY3OWU4MmJkZDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEdyQ29udGV4
dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CitjbGFz
cyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJS
ZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTEwOCw2ICsxMDks
MTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0
IHBhZ2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAg
IGZsb2F0IHBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2
b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9u
LAorICAgICAgICBib29sIGFuY2hvclBvaW50LAorICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCisg
ICAgICAgIGRvdWJsZSBkdXJhdGlvbk1zKTsKKwogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRp
bmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgUGFzc093blB0cjxDQ1Nj
cm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBAIC0xMzgsNiArMTQ0LDgg
QEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAK
ICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOworCisgICAgT3duUHRyPENDUGFnZVNjYWxl
QW5pbWF0aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFu
aW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY0ZTM5NGEwY2Y4NDY4ZGJi
ZDhkMzM1OWE4OTI2Y2RjZjBmMGY0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApA
QCAtMCwwICsxLDE4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6
ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5k
b3dTaXplLCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIGluaXRpYWxpemUoc2Nyb2xsU3RhcnQs
IHBhZ2VTY2FsZVN0YXJ0LCB3aW5kb3dTaXplLCBzdGFydFRpbWUpOworfQorCit2b2lkIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBm
bG9hdCBwYWdlU2NhbGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgZG91YmxlIHN0
YXJ0VGltZSkKK3sKKyAgICBtX3Njcm9sbFN0YXJ0ID0gc2Nyb2xsU3RhcnQ7CisgICAgbV9wYWdl
U2NhbGVTdGFydCA9IHBhZ2VTY2FsZVN0YXJ0OworICAgIG1fd2luZG93U2l6ZSA9IHdpbmRvd1Np
emU7CisgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7CisgICAgbV9zY3JvbGxFbmQgPSBzY3JvbGxT
dGFydDsKKyAgICBtX3BhZ2VTY2FsZUVuZCA9IHBhZ2VTY2FsZVN0YXJ0OworICAgIG1fc3RhcnRU
aW1lID0gc3RhcnRUaW1lOworfQorCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tVG8o
Y29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUg
ZHVyYXRpb24pCit7CisgICAgaWYgKG1fcGFnZVNjYWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUp
IHsKKyAgICAgICAgLy8gRm9yIHVuaWZvcm0tbG9va2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5j
aG9yIChwb2ludCB0aGF0IHJlbWFpbnMgaW4KKyAgICAgICAgLy8gcGxhY2UgdGhyb3VnaG91dCB0
aGUgem9vbSkgZnJvbSB0aGUgc3RhcnQgYW5kIGVuZCByZWN0cy4KKyAgICAgICAgRmxvYXRSZWN0
IHN0YXJ0UmVjdChJbnRQb2ludChtX3Njcm9sbFN0YXJ0KSwgbV93aW5kb3dTaXplKTsKKyAgICAg
ICAgRmxvYXRSZWN0IGVuZFJlY3QoSW50UG9pbnQoZmluYWxTY3JvbGwpLCBtX3dpbmRvd1NpemUp
OworICAgICAgICBlbmRSZWN0LnNjYWxlKG1fcGFnZVNjYWxlU3RhcnQgLyBmaW5hbFBhZ2VTY2Fs
ZSk7CisKKyAgICAgICAgLy8gVGhlIGFuY2hvciBpcyB0aGUgcG9pbnQgd2hpY2ggaXMgYXQgdGhl
IHNhbWUgcmF0aW8gb2YgdGhlIHNpZGVzIG9mCisgICAgICAgIC8vIGJvdGggc3RhcnRSZWN0IGFu
ZCBlbmRSZWN0LiBGb3IgZXhhbXBsZSwgYSB6b29tLWluIGRvdWJsZS10YXAgdG8gYQorICAgICAg
ICAvLyBwZXJmZWN0bHkgY2VudGVyZWQgcmVjdCB3aWxsIGhhdmUgYW5jaG9yIHJhdGlvcyAoMC41
LCAwLjUpLCB3aGlsZSBvbmUKKyAgICAgICAgLy8gdG8gYSByZWN0IHRvdWNoaW5nIHRoZSBib3R0
b20tcmlnaHQgb2YgdGhlIHNjcmVlbiB3aWxsIGhhdmUgYW5jaG9yCisgICAgICAgIC8vIHJhdGlv
cyAoMS4wLCAxLjApLiBJbiBvdGhlciB3b3JkcywgaXQgb2JleXMgdGhlIGVxdWF0aW9uczoKKyAg
ICAgICAgLy8gYW5jaG9yWCA9IHN0YXJ0X3dpZHRoICogcmF0aW9YICsgc3RhcnRfeAorICAgICAg
ICAvLyBhbmNob3JYID0gZW5kX3dpZHRoICogcmF0aW9YICsgZW5kX3gKKyAgICAgICAgLy8gYW5j
aG9yWSA9IHN0YXJ0X2hlaWdodCAqIHJhdGlvWSArIHN0YXJ0X3kKKyAgICAgICAgLy8gYW5jaG9y
WSA9IGVuZF9oZWlnaHQgKiByYXRpb1kgKyBlbmRfeQorICAgICAgICAvLyB3aGVyZSBib3RoIGFu
Y2hvcnt4LHl9IGFuZCByYXRpb3t4LHl9IGJlZ2luIGFzIHVua25vd25zLiBTb2x2aW5nCisgICAg
ICAgIC8vIGZvciB0aGUgcmF0aW9zLCB3ZSBnZXQgdGhlIGZvbGxvd2luZyBmb3JtdWxhczoKKyAg
ICAgICAgZmxvYXQgcmF0aW9YID0gKHN0YXJ0UmVjdC54KCkgLSBlbmRSZWN0LngoKSkgLyAoZW5k
UmVjdC53aWR0aCgpIC0gc3RhcnRSZWN0LndpZHRoKCkpOworICAgICAgICBmbG9hdCByYXRpb1kg
PSAoc3RhcnRSZWN0LnkoKSAtIGVuZFJlY3QueSgpKSAvIChlbmRSZWN0LmhlaWdodCgpIC0gc3Rh
cnRSZWN0LmhlaWdodCgpKTsKKworICAgICAgICBJbnRTaXplIGFuY2hvcihtX3dpbmRvd1NpemUu
d2lkdGgoKSAqIHJhdGlvWCwgbV93aW5kb3dTaXplLmhlaWdodCgpICogcmF0aW9ZKTsKKyAgICAg
ICAgem9vbVdpdGhBbmNob3IoYW5jaG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb24pOworICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwdXJlIHRyYW5zbGF0aW9uLCB0aGVu
IHRoZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVhcmx5CisgICAgICAgIC8vIGludGVycG9sYXRl
IHRoZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCisgICAgICAgIG1fc2Nyb2xsRW5kID0gZmluYWxT
Y3JvbGw7CisgICAgICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQYWdlU2NhbGU7CisgICAgICAg
IG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICAgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7Cisg
ICAgfQorfQorCit2b2lkIENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25z
dCBJbnRTaXplJiBhbmNob3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24p
Cit7CisgICAgbV9zY3JvbGxFbmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9yOworICAgIG1fc2Ny
b2xsRW5kLnNjYWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CisgICAgbV9z
Y3JvbGxFbmQgLT0gYW5jaG9yOworICAgIG1fc2Nyb2xsRW5kLmNsYW1wTmVnYXRpdmVUb1plcm8o
KTsKKworICAgIG1fYW5jaG9yID0gYW5jaG9yOworICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQ
YWdlU2NhbGU7CisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIG1fYW5jaG9yTW9kZSA9
IHRydWU7Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21FbHNld2hlcmUoY29u
c3QgSW50U2l6ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVy
YXRpb24sIGRvdWJsZSB0aW1lKQoreworICAgIGluaXRpYWxpemUoc2Nyb2xsT2Zmc2V0QXRUaW1l
KHRpbWUpLCBwYWdlU2NhbGVBdFRpbWUodGltZSksIG1fd2luZG93U2l6ZSwgbV9zdGFydFRpbWUp
OworCisgICAgem9vbVRvKGZpbmFsU2Nyb2xsLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb24pOwor
fQorCisKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0VGltZShk
b3VibGUgdGltZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9n
cmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7Cit9CisKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhZ2VT
Y2FsZUF0UmF0aW8ocHJvZ3Jlc3NSYXRpb0ZvclRpbWUodGltZSkpOworfQorCitib29sIENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBj
b25zdAoreworICAgIHJldHVybiB0aW1lID49IGVuZFRpbWUoKTsKK30KKworZmxvYXQgQ0NQYWdl
U2NhbGVBbmltYXRpb246OnByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAor
eworICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWUpKQorICAgICAgICByZXR1
cm4gMS4wZjsKKworICAgIHJldHVybiAodGltZSAtIG1fc3RhcnRUaW1lKSAvIG1fZHVyYXRpb247
Cit9CisKK0ludFNpemUgQ0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9sbE9mZnNldEF0UmF0aW8o
ZmxvYXQgcmF0aW8pIGNvbnN0Cit7CisgICAgaWYgKHJhdGlvIDw9IDAuMGYpCisgICAgICAgIHJl
dHVybiBtX3Njcm9sbFN0YXJ0OworICAgIGlmIChyYXRpbyA+PSAxLjBmKQorICAgICAgICByZXR1
cm4gbV9zY3JvbGxFbmQ7CisKKyAgICBmbG9hdCBjdXJyZW50UGFnZVNjYWxlID0gcGFnZVNjYWxl
QXRSYXRpbyhyYXRpbyk7CisgICAgSW50U2l6ZSBjdXJyZW50U2Nyb2xsT2Zmc2V0OworICAgIGlm
IChtX2FuY2hvck1vZGUpIHsKKyAgICAgICAgLy8gS2VlcCB0aGUgYW5jaG9yIHN0YWJsZSBvbiB0
aGUgc2NyZWVuIGF0IHRoZSBjdXJyZW50IHNjYWxlLgorICAgICAgICBJbnRTaXplIGRvY3VtZW50
QW5jaG9yID0gbV9zY3JvbGxTdGFydCArIG1fYW5jaG9yOworICAgICAgICBkb2N1bWVudEFuY2hv
ci5zY2FsZShjdXJyZW50UGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CisgICAgICAgIGN1
cnJlbnRTY3JvbGxPZmZzZXQgPSBkb2N1bWVudEFuY2hvciAtIG1fYW5jaG9yOworICAgIH0gZWxz
ZSB7CisgICAgICAgIC8vIEZpcnN0IG1vdmUgYm90aCBzY3JvbGwgb2Zmc2V0cyB0byB0aGUgY3Vy
cmVudCBjb29yZGluYXRlIHNwYWNlLgorICAgICAgICBGbG9hdFNpemUgc2NhbGVkU3RhcnRTY3Jv
bGwobV9zY3JvbGxTdGFydCk7CisgICAgICAgIHNjYWxlZFN0YXJ0U2Nyb2xsLnNjYWxlKGN1cnJl
bnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKKyAgICAgICAgRmxvYXRTaXplIHNjYWxl
ZEVuZFNjcm9sbChtX3Njcm9sbEVuZCk7CisgICAgICAgIHNjYWxlZEVuZFNjcm9sbC5zY2FsZShj
dXJyZW50UGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVFbmQpOworCisgICAgICAgIC8vIExpbmVhcmx5
IGludGVycG9sYXRlIGJldHdlZW4gdGhlbS4KKyAgICAgICAgRmxvYXRTaXplIGRlbHRhID0gc2Nh
bGVkRW5kU2Nyb2xsIC0gc2NhbGVkU3RhcnRTY3JvbGw7CisgICAgICAgIGRlbHRhLnNjYWxlKHJh
dGlvKTsKKyAgICAgICAgY3VycmVudFNjcm9sbE9mZnNldCA9IHJvdW5kZWRJbnRTaXplKHNjYWxl
ZFN0YXJ0U2Nyb2xsICsgZGVsdGEpOworICAgIH0KKworICAgIHJldHVybiBjdXJyZW50U2Nyb2xs
T2Zmc2V0OworfQorCitmbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRp
byhmbG9hdCByYXRpbykgY29uc3QKK3sKKyAgICBpZiAocmF0aW8gPD0gMC4wZikKKyAgICAgICAg
cmV0dXJuIG1fcGFnZVNjYWxlU3RhcnQ7CisgICAgaWYgKHJhdGlvID49IDEuMGYpCisgICAgICAg
IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsKKworICAgIC8vIExpbmVhcmx5IGludGVycG9sYXRlIHRo
ZSBtYWduaXR1ZGUgaW4gbG9nIHNjYWxlLgorICAgIC8vIExvZyBzY2FsZSBpcyBuZWVkZWQgdG8g
bWFpbnRhaW4gdGhlIGFwcGVhcmFuY2Ugb2YgdW5pZm9ybSB6b29tLiBGb3IKKyAgICAvLyBleGFt
cGxlLCBpZiB3ZSB6b29tIGZyb20gMC41IHRvIDQuMCBpbiAzIHNlY29uZHMsIHRoZW4gd2Ugc2hv
dWxkCisgICAgLy8gYmUgem9vbWluZyBieSAyeCBldmVyeSBzZWNvbmQuCisgICAgZmxvYXQgZGlm
ZiA9IG1fcGFnZVNjYWxlRW5kIC8gbV9wYWdlU2NhbGVTdGFydDsKKyAgICBmbG9hdCBsb2dEaWZm
ID0gbG9nKGRpZmYpOworICAgIGxvZ0RpZmYgKj0gcmF0aW87CisgICAgZGlmZiA9IGV4cChsb2dE
aWZmKTsKKyAgICByZXR1cm4gbV9wYWdlU2NhbGVTdGFydCAqIGRpZmY7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYTU4MWUxYmM3Y2VkZTA5Njk1NGVlNmExYzQyMTc3OGQwNTY4ODlhMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UGFnZVNjYWxlQW5pbWF0aW9uLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ0NQYWdlU2NhbGVB
bmltYXRpb25faAorI2RlZmluZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbl9oCisKKyNpbmNsdWRlICJJ
bnRTaXplLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQSBzbWFsbCBoZWxwZXIgY2xh
c3MgdGhhdCBkb2VzIHRoZSBtYXRoIGZvciB6b29tIGFuaW1hdGlvbnMsIHByaW1hcmlseSBmb3IK
Ky8vIGRvdWJsZS10YXAgem9vbS4gSW5pdGlhbGl6ZSBpdCB3aXRoIHN0YXJ0aW5nIGFuZCBlbmRp
bmcgc2Nyb2xsL3BhZ2Ugc2NhbGUKKy8vIHBvc2l0aW9ucyBhbmQgYW4gYW5pbWF0aW9uIGxlbmd0
aCB0aW1lLCB0aGVuIGNhbGwgLi4uQXRUaW1lKCkgYXQgZXZlcnkgZnJhbWUKKy8vIHRvIG9idGFp
biB0aGUgY3VycmVudCBpbnRlcnBvbGF0ZWQgcG9zaXRpb24uCitjbGFzcyBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbiB7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0IHdpdGggdGhlIHN0YXJ0aW5nIHBh
Z2Ugc2NhbGUgYW5kIHNjcm9sbCBvZmZzZXQgKHdoaWNoIGlzIGluCisgICAgLy8gcGFnZVNjYWxl
U3RhcnQgc3BhY2UpLiBUaGUgd2luZG93IHNpemUgaXMgdGhlIHVzZXItdmlld2FibGUgYXJlYQor
ICAgIC8vIGluIHBpeGVscy4KKyAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRTaXpl
JiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdpbmRv
d1NpemUsIGRvdWJsZSBzdGFydFRpbWUpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2Rz
IGluaXRpYWxpemUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUgb2YgdGhlbQorICAgIC8vIGltbWVk
aWF0ZWx5IGFmdGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhlIGZpbmFsIHNjcm9sbCBhbmQgcGFn
ZSBzY2FsZS4KKworICAgIC8vIFpvb20gd2hpbGUgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0
b3AtbGVmdCBzY3JvbGwgcG9zaXRpb24uIFRoZQorICAgIC8vIHNjcm9sbCBvZmZzZXQgaXMgaW4g
ZmluYWxQYWdlU2NhbGUgY29vcmRpbmF0ZXMuCisgICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6
ZSYgZmluYWxTY3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb24pOwor
CisgICAgLy8gWm9vbSBiYXNlZCBvbiBhIHNwZWNpZmllZCBvbnNjcmVlbiBhbmNob3IsIHdoaWNo
IHdpbGwgcmVtYWluIGF0IHRoZSBzYW1lCisgICAgLy8gcG9zaXRpb24gb24gdGhlIHNjcmVlbiB0
aHJvdWdob3V0IHRoZSBhbmltYXRpb24uIFRoZSBhbmNob3IgaXMgaW4gbG9jYWwKKyAgICAvLyBz
cGFjZSByZWxhdGl2ZSB0byBzY3JvbGxTdGFydC4KKyAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNv
bnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlv
bik7CisKKyAgICAvLyBDaGFuZ2UgdGhlIHpvb20gdGFyZ2V0IHdoaWxlIGluIHRoZSBtaWRkbGUg
b2YgYW4gYW5pbWF0aW9uLgorICAgIHZvaWQgem9vbUVsc2V3aGVyZShjb25zdCBJbnRTaXplJiBm
aW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91Ymxl
IHRpbWUpOworCisgICAgLy8gQ2FsbCB0aGVzZSBmdW5jdGlvbnMgd2hpbGUgdGhlIGFuaW1hdGlv
biBpcyBpbiBwcm9ncmVzcyB0byBvdXRwdXQgdGhlCisgICAgLy8gY3VycmVudCBzdGF0ZS4KKyAg
ICBJbnRTaXplIHNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisgICAgZmxv
YXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdDsKKyAgICBib29sIGlzQW5pbWF0
aW9uQ29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OworCisgICAgLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIHJldHVybiBzdGF0ZSB3aGljaCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0
aGUKKyAgICAvLyBjb3Vyc2Ugb2YgdGhlIGFuaW1hdGlvbi4KKyAgICBkb3VibGUgc3RhcnRUaW1l
KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWU7IH0KKyAgICBkb3VibGUgZHVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2R1cmF0aW9uOyB9CisgICAgZG91YmxlIGVuZFRpbWUoKSBjb25zdCB7
IHJldHVybiBtX3N0YXJ0VGltZSArIG1fZHVyYXRpb247IH0KKyAgICBjb25zdCBJbnRTaXplJiBm
aW5hbFNjcm9sbE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRW5kOyB9CisgICAgZmxv
YXQgZmluYWxQYWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsgfQorcHJp
dmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemUoY29uc3QgSW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZs
b2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXplLCBkb3VibGUgc3Rh
cnRUaW1lKTsKKyAgICBmbG9hdCBwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZSkgY29u
c3Q7CisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsK
KyAgICBmbG9hdCBwYWdlU2NhbGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdDsKKworICAgIElu
dFNpemUgbV9zY3JvbGxTdGFydDsKKyAgICBmbG9hdCBtX3BhZ2VTY2FsZVN0YXJ0OworICAgIElu
dFNpemUgbV93aW5kb3dTaXplOworCisgICAgYm9vbCBtX2FuY2hvck1vZGU7CisgICAgSW50U2l6
ZSBtX2FuY2hvcjsKKyAgICBJbnRTaXplIG1fc2Nyb2xsRW5kOworICAgIGZsb2F0IG1fcGFnZVNj
YWxlRW5kOworCisgICAgZG91YmxlIG1fc3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2R1cmF0aW9u
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCmluZGV4IGIwOGU1NmUzNjQzMTNhNWYz
YjkxNDM4ZDM1NGI4YmM2OWJkODE1N2UuLjgxYTRmNjdmMDM5MGIyMWMwZmFjN2ZlZWRlOWIwOTM3
ZWY2ZjE2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2
ZW50LmgKQEAgLTEwOCw2ICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgICAgIEdlc3R1cmVGbGluZ0Nh
bmNlbCwKICAgICAgICAgR2VzdHVyZVRhcCwKIAorICAgICAgICAvLyBXZWJQYWdlU2NhbGVBbmlt
YXRpb25HZXN0dXJlRXZlbnQKKyAgICAgICAgR2VzdHVyZVBhZ2VTY2FsZUFuaW1hdGlvbiwKKwog
ICAgICAgICAvLyBXZWJUb3VjaEV2ZW50CiAgICAgICAgIFRvdWNoU3RhcnQsCiAgICAgICAgIFRv
dWNoTW92ZSwKQEAgLTM2Myw2ICszNjYsMjggQEAgcHVibGljOgogICAgIH0KIH07CiAKKy8vIFdl
YlBhZ2VTY2FsZUFuaW1hdGlvbkdlc3R1cmVFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworLy8gQSBnZXN0dXJlIHRyaWdnZXJpbmcgYSBzZWxmLWFuaW1h
dGVkIHpvb20sIHN1Y2ggYXMgZG91YmxlLXRhcCBvciB0YXBwaW5nCisvLyBvbiBhIGZvcm0gZmll
bGQuCitjbGFzcyBXZWJQYWdlU2NhbGVBbmltYXRpb25HZXN0dXJlRXZlbnQgOiBwdWJsaWMgV2Vi
R2VzdHVyZUV2ZW50IHsKK3B1YmxpYzoKKyAgICAvLyBJZiB0cnVlLCB3ZSBzaG91bGQgem9vbSBi
YXNlZCBvbiBnZXN0dXJlIGxvY2FsIHBvc2l0aW9uIChhbmNob3IgcG9pbnQpOworICAgIC8vIGlm
IGZhbHNlLCB3ZSBzaG91bGQgem9vbSB0byB0aGUgZ2xvYmFsIHRvcC1sZWZ0IHNjcm9sbCBvZmZz
ZXQuCisgICAgYm9vbCBhbmNob3JQb2ludDsKKyAgICAvLyBUYXJnZXQgcGFnZVNjYWxlIGF0IGVu
ZCBvZiB6b29tLgorICAgIGZsb2F0IHBhZ2VTY2FsZTsKKyAgICAvLyBEdXJhdGlvbiBvZiBhbmlt
YXRpb24uCisgICAgZG91YmxlIGR1cmF0aW9uTXM7CisKKyAgICBXZWJQYWdlU2NhbGVBbmltYXRp
b25HZXN0dXJlRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYlBhZ2VTY2FsZUFu
aW1hdGlvbkdlc3R1cmVFdmVudCkpCisgICAgICAgIDogV2ViR2VzdHVyZUV2ZW50KHNpemVQYXJh
bSkKKyAgICAgICAgLCBwYWdlU2NhbGUoMSkKKyAgICAgICAgLCBkdXJhdGlvbk1zKDApCisgICAg
eworICAgIH0KK307CisKIC8vIFdlYlRvdWNoRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgV2ViVG91Y2hF
dmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuaAppbmRl
eCBkNDI4NzQ1ZTU3NjY3OGQ4NGVhZWIzNWFhNTMyODQ5YjJmMTExMjgyLi4yMDdlYzE4YzcyZDlh
Y2E2Y2I3MzExMjI4ZDZjMTNhMDJhZDljMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9hbmRyb2lkL1dlYklucHV0RXZlbnRGYWN0b3J5LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvYW5kcm9pZC9XZWJJbnB1dEV2ZW50RmFjdG9yeS5oCkBA
IC02MCw2ICs2MCwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1vdXNlRXZlbnRUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZVN0YW1wU2Vjb25kcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViTW91c2VF
dmVudDo6QnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uTGVmdCk7CisKKyAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBXZWJQYWdlU2NhbGVBbmltYXRpb25HZXN0dXJlRXZlbnQgcGFnZVNjYWxl
QW5pbWF0aW9uR2VzdHVyZUV2ZW50KAorICAgICAgICBpbnQgeCwKKyAgICAgICAgaW50IHksCisg
ICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCisgICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwKKyAgICAg
ICAgZG91YmxlIGR1cmF0aW9uTXMsCisgICAgICAgIGRvdWJsZSB0aW1lU3RhbXBTZWNvbmRzKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViQ29tcG9zaXRvckltcGwuY3BwCmluZGV4IGUwMzFlMGU5ZGYyOWJmZDc0MTVmOTY5
ZmY3Zjc4OWIwNWNjMTIyZGUuLmE0ZjQyYTYxZWVkZjg0MTdiZjJmNWI0NzA0YTJmMGRhOTQ0NjUz
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW1w
bC5jcHAKQEAgLTEyMyw2ICsxMjMsMTggQEAgdm9pZCBXZWJDb21wb3NpdG9ySW1wbDo6aGFuZGxl
SW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKICAgICAgICAgbV9jbGllbnQt
PmRpZEhhbmRsZUlucHV0RXZlbnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGlm
IChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQYWdlU2NhbGVBbmltYXRpb24p
IHsKKyAgICAgICAgY29uc3QgV2ViUGFnZVNjYWxlQW5pbWF0aW9uR2VzdHVyZUV2ZW50JiBhbmlt
YXRpb25FdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBXZWJQYWdlU2NhbGVBbmltYXRpb25HZXN0
dXJlRXZlbnQqPigmZXZlbnQpOworICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c3RhcnRQ
YWdlU2NhbGVBbmltYXRpb24oCisgICAgICAgICAgICBJbnRTaXplKGFuaW1hdGlvbkV2ZW50Lmds
b2JhbFgsIGFuaW1hdGlvbkV2ZW50Lmdsb2JhbFkpLAorICAgICAgICAgICAgYW5pbWF0aW9uRXZl
bnQuYW5jaG9yUG9pbnQsCisgICAgICAgICAgICBhbmltYXRpb25FdmVudC5wYWdlU2NhbGUsCisg
ICAgICAgICAgICBhbmltYXRpb25FdmVudC5kdXJhdGlvbk1zKTsKKyAgICAgICAgbV9jbGllbnQt
PmRpZEhhbmRsZUlucHV0RXZlbnQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1f
Y2xpZW50LT5kaWROb3RIYW5kbGVJbnB1dEV2ZW50KHRydWUgLyogc2VuZFRvV2lkZ2V0ICovKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUG9wdXBNZW51
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNw
cAppbmRleCBkMWYxMWMzMjliOTUyOTI5NDE4NjkzZjcyNmUxMmU1ZjE5MDgyNzRhLi41NmFkOTRj
N2MwY2JjNWZjZTc5YTMwODU5N2RhOTVkNTExMDk0MjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcApAQCAtMjgzLDYgKzI4Myw3IEBAIGJv
b2wgV2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50
JiBpbnB1dEV2ZW50KQogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VW5kZWZpbmVkOgogICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6TW91c2VFbnRlcjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNv
bnRleHRNZW51OgorICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBhZ2VTY2FsZUFuaW1h
dGlvbjoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9hbmRyb2lkL1dlYklucHV0RXZl
bnRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViSW5w
dXRFdmVudEZhY3RvcnkuY3BwCmluZGV4IDE4ZTE0YmZiNDAxY2FhYzJkYTQwMzAwNjBkZjZkMTFm
NmQxNmMxNTQuLmY0ZmMxNDhhYmVmY2EwMTliMDY2Y2ViNTQ1YTZjMzUzNGZmNjkxZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2FuZHJvaWQvV2ViSW5w
dXRFdmVudEZhY3RvcnkuY3BwCkBAIC0xMDIsNCArMTAyLDMwIEBAIFdlYk1vdXNlRXZlbnQgV2Vi
SW5wdXRFdmVudEZhY3Rvcnk6Om1vdXNlRXZlbnQoaW50IHgsIGludCB5LAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKKy8vIFdlYlBhZ2VTY2FsZUFuaW1hdGlvbkdlc3R1cmVFdmVudCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworV2ViUGFnZVNjYWxlQW5pbWF0
aW9uR2VzdHVyZUV2ZW50IFdlYklucHV0RXZlbnRGYWN0b3J5OjpwYWdlU2NhbGVBbmltYXRpb25H
ZXN0dXJlRXZlbnQoCisgICAgaW50IHgsCisgICAgaW50IHksCisgICAgYm9vbCBhbmNob3JQb2lu
dCwKKyAgICBmbG9hdCBwYWdlU2NhbGUsCisgICAgZG91YmxlIGR1cmF0aW9uTXMsCisgICAgZG91
YmxlIHRpbWVTdGFtcFNlY29uZHMpCit7CisgICAgV2ViUGFnZVNjYWxlQW5pbWF0aW9uR2VzdHVy
ZUV2ZW50IHJlc3VsdDsKKworICAgIHJlc3VsdC54ID0geDsKKyAgICByZXN1bHQueSA9IHk7Cisg
ICAgcmVzdWx0Lmdsb2JhbFggPSB4OworICAgIHJlc3VsdC5nbG9iYWxZID0geTsKKyAgICByZXN1
bHQuYW5jaG9yUG9pbnQgPSBhbmNob3JQb2ludDsKKyAgICByZXN1bHQucGFnZVNjYWxlID0gcGFn
ZVNjYWxlOworICAgIHJlc3VsdC5kdXJhdGlvbk1zID0gZHVyYXRpb25NczsKKworICAgIHJlc3Vs
dC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBhZ2VTY2FsZUFuaW1hdGlvbjsKKyAgICBy
ZXN1bHQudGltZVN0YW1wU2Vjb25kcyA9IHRpbWVTdGFtcFNlY29uZHM7CisKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116459</attachid>
            <date>2011-11-23 17:22:29 -0800</date>
            <delta_ts>2011-11-23 19:32:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111123172227.patch</filename>
            <type>text/plain</type>
            <size>21259</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uOTljNjMxOGI3MTNlMzgxYWRiZjAxMDFhYmI4MDFm
ZjE5MDZlMTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBhcHBseSB0aGUg
YW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUyOSBmaWxlZC4p
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRp
b246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21Ubyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdp
dGhBbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21F
bHNld2hlcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cGFnZVNjYWxlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
Ojppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNj
YWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRpbyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZmluYWxTY3JvbGxPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFsUGFnZVNjYWxlKToKKwogMjAx
MS0xMS0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IExheW91dCBUZXN0IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZlbnRzLmh0bWwg
aXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwOWE3ZWMxYWI0M2Yx
YjZlMjdjYjgwNGZhNDU3YjliYjk5YTRhNjc5Li42YTM0NmVhOWM1YTAwZjEyYWQ2NzMxYjkzMmIw
OWI2YzZmYWNiM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDExLTExLTIyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBbY2hyb21pdW1dIEFkZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwg
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Mjk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgYWRkcyBhIG5ldyBtYXRoIGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBv
ZiB0aGUKKyAgICAgICAgYW5pbWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0
SW1wbCB0byBhcHBseSB0aGUgYW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTUyOSBmaWxlZC4pCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tcG9zaXRvci5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VTY2FsZUFuaW1hdGlvbkV2ZW50OjpXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisgICAg
ICAgICogcHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBz
cmMvV2ViQ29tcG9zaXRvckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
SW1wbDo6aGFuZGxlUGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJD
b21wb3NpdG9ySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgICogc3JjL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50RmFjdG9yeTo6cGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQpOgorCiAy
MDExLTExLTIyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJvbGwgQ2hyb21pdW0gREVQUyB0byByMTEwOTYwIGFuZCBzZXQgdGhlIGRpc2FibGVfbmFjbCBm
bGFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRhYmM4NDBmZTk3MGM1YzJiMjAxMTMxNGVlZDZjNjI2
YWY4Zjg1NTYuLjQyYzZjNzQzYzgxMWI2ZWZjN2UyOWRlYTJmZWZmM2Y4MjYzMjY3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM1NzYsNiArMzU3Niw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCBmYWNiYmU1Y2ZhYmRmZDA4ZTY1OTU5MmNmZjFi
Y2M0NTNlY2Q3ZDEyLi5mZmIwZDVmZTVhOWI5ZDk2NjI0MjZjMWEwMzljNmM5NzIyZGQ0MDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTUxLDYgKzUxLDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29u
c3QgSW50UG9pbnQmIGFuY2hvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVF
bmQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCisgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCisg
ICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwKKyAgICAgICAgZG91YmxlIGR1cmF0aW9uTXMpID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVh
bCB+Q0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKaW5kZXggOGNmYmQzMDdhMDUwOTQwY2Y2YjA4NzE0ZGM1ODI1ZmRmOGFhOTMx
Ni4uOGFhMmQ3YTEzYmEwZGY1YmMwMGFmZWYyYjllOGY1NGRiN2RiMTI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KIApAQCAtODQsNiArODUsNDcgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFu
aW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCiB7CisgICAgaWYgKCFtX3BhZ2VTY2FsZUFu
aW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRv
U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5zY3JvbGxEZWx0YSgpKTsKKworICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxl
QW5pbWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykgLyBtX3BhZ2VTY2Fs
ZSk7CisgICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9s
bE9mZnNldEF0VGltZShmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBuZXh0U2Nyb2xsLnNjYWxlKDEg
LyBtX3BhZ2VTY2FsZURlbHRhKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsQnkobmV4
dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbklt
cGxUaHJlYWQoKTsKKworICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+aXNBbmltYXRpb25D
b21wbGV0ZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSkgeworICAgICAgICBtX3BhZ2VTY2FsZUFu
aW1hdGlvbi5jbGVhcigpOworICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCisgICAgYm9vbCBh
bmNob3JQb2ludCwKKyAgICBmbG9hdCBwYWdlU2NhbGUsCisgICAgZG91YmxlIGR1cmF0aW9uTXMp
Cit7CisgICAgaWYgKCFtX3Njcm9sbExheWVySW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
SW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9z
aXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKKyAgICBJbnRTaXpl
IHNjYWxlZFNjcm9sbFRvdGFsID0gc2Nyb2xsVG90YWw7CisgICAgc2NhbGVkU2Nyb2xsVG90YWwu
c2NhbGUobV9wYWdlU2NhbGVEZWx0YSk7CisgICAgZmxvYXQgc2NhbGVUb3RhbCA9IG1fcGFnZVNj
YWxlICogbV9wYWdlU2NhbGVEZWx0YTsKKworICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uID0gYWRv
cHRQdHIobmV3IENDUGFnZVNjYWxlQW5pbWF0aW9uKHNjYWxlZFNjcm9sbFRvdGFsLCBzY2FsZVRv
dGFsLCBtX3ZpZXdwb3J0U2l6ZSwgY3VycmVudFRpbWVNcygpKSk7CisKKyAgICBpZiAoYW5jaG9y
UG9pbnQpIHsKKyAgICAgICAgSW50U2l6ZSB3aW5kb3dBbmNob3IodGFyZ2V0UG9zaXRpb24pOwor
ICAgICAgICB3aW5kb3dBbmNob3Iuc2NhbGUobV9wYWdlU2NhbGUgLyBwYWdlU2NhbGUpOworICAg
ICAgICB3aW5kb3dBbmNob3IgLT0gc2Nyb2xsVG90YWw7CisgICAgICAgIG1fcGFnZVNjYWxlQW5p
bWF0aW9uLT56b29tV2l0aEFuY2hvcih3aW5kb3dBbmNob3IsIHBhZ2VTY2FsZSwgZHVyYXRpb25N
cyk7CisgICAgfSBlbHNlCisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLT56b29tVG8odGFy
Z2V0UG9zaXRpb24sIHBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisKKyAgICBtX2NsaWVudC0+c2V0
TmVlZHNSZWRyYXdPbkltcGxUaHJlYWQoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpkcmF3TGF5ZXJzKCkKQEAgLTM1MSw3ICszOTMsNyBAQCBQYXNzT3duUHRyPENDU2Nyb2xsQW5k
U2NhbGVTZXQ+IENDTGF5ZXJUcmVlSG9zdEltcGw6OnByb2Nlc3NTY3JvbGxEZWx0YXMoKQogewog
ICAgIE93blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBzY3JvbGxJbmZvID0gYWRvcHRQdHIobmV3
IENDU2Nyb2xsQW5kU2NhbGVTZXQoKSk7CiAgICAgYm9vbCBkaWRNb3ZlID0gbV9zY3JvbGxMYXll
ckltcGwgJiYgKCFtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsRGVsdGEoKS5pc1plcm8oKSB8fCBt
X3BhZ2VTY2FsZURlbHRhICE9IDEuMGYpOwotICAgIGlmICghZGlkTW92ZSB8fCBtX3BpbmNoR2Vz
dHVyZUFjdGl2ZSkgeworICAgIGlmICghZGlkTW92ZSB8fCBtX3BpbmNoR2VzdHVyZUFjdGl2ZSB8
fCBtX3BhZ2VTY2FsZUFuaW1hdGlvbi5nZXQoKSkgewogICAgICAgICBtX3NlbnRQYWdlU2NhbGVE
ZWx0YSA9IHNjcm9sbEluZm8tPnBhZ2VTY2FsZURlbHRhID0gMTsKICAgICAgICAgcmV0dXJuIHNj
cm9sbEluZm8ucmVsZWFzZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdElt
cGwuaAppbmRleCBjYTRmNzFiZDg2YWEzMjk0NTQ1ZWY5N2JhZDdiYmExZGU3OTZiN2VhLi42OGE2
NTNkZGU0MWY2ZWZlMGViMDc5YTBlMmY3NWY3OWU4MmJkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oCkBAIC0zNyw2ICszNyw3IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NDb21wbGV0aW9uRXZlbnQ7CitjbGFzcyBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjsKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKQEAgLTEwOCw2ICsxMDksMTEgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VT
Y2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIGZsb2F0
IHBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2b2lkIHN0
YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLAorICAg
ICAgICBib29sIGFuY2hvclBvaW50LAorICAgICAgICBmbG9hdCBwYWdlU2NhbGUsCisgICAgICAg
IGRvdWJsZSBkdXJhdGlvbk1zKTsKKwogICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFu
ZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBAIC0xMzgsNiArMTQ0LDggQEAgcHJp
dmF0ZToKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAKICAgICBi
b29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOworCisgICAgT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0
aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljYWU2NzY0MjQwNGE5ODU4NDkzOGZj
OTVkOThmZTFkNTRlMTU1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApAQCAtMCww
ICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxl
QW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJGbG9hdFNp
emUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgc2Ny
b2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dTaXpl
LCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIG1fc2Nyb2xsU3RhcnQgPSBzY3JvbGxTdGFydDsK
KyAgICBtX3BhZ2VTY2FsZVN0YXJ0ID0gcGFnZVNjYWxlU3RhcnQ7CisgICAgbV93aW5kb3dTaXpl
ID0gd2luZG93U2l6ZTsKKyAgICBtX2FuY2hvck1vZGUgPSBmYWxzZTsKKyAgICBtX3Njcm9sbEVu
ZCA9IHNjcm9sbFN0YXJ0OworICAgIG1fcGFnZVNjYWxlRW5kID0gcGFnZVNjYWxlU3RhcnQ7Cisg
ICAgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRp
b246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2Nh
bGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9wYWdlU2NhbGVTdGFydCAhPSBmaW5h
bFBhZ2VTY2FsZSkgeworICAgICAgICAvLyBGb3IgdW5pZm9ybS1sb29raW5nIHpvb21pbmcsIGlu
ZmVyIHRoZSBhbmNob3IgKHBvaW50IHRoYXQgcmVtYWlucyBpbgorICAgICAgICAvLyBwbGFjZSB0
aHJvdWdob3V0IHRoZSB6b29tKSBmcm9tIHRoZSBzdGFydCBhbmQgZW5kIHJlY3RzLgorICAgICAg
ICBGbG9hdFJlY3Qgc3RhcnRSZWN0KEludFBvaW50KG1fc2Nyb2xsU3RhcnQpLCBtX3dpbmRvd1Np
emUpOworICAgICAgICBGbG9hdFJlY3QgZW5kUmVjdChJbnRQb2ludChmaW5hbFNjcm9sbCksIG1f
d2luZG93U2l6ZSk7CisgICAgICAgIGVuZFJlY3Quc2NhbGUobV9wYWdlU2NhbGVTdGFydCAvIGZp
bmFsUGFnZVNjYWxlKTsKKworICAgICAgICAvLyBUaGUgYW5jaG9yIGlzIHRoZSBwb2ludCB3aGlj
aCBpcyBhdCB0aGUgc2FtZSByYXRpbyBvZiB0aGUgc2lkZXMgb2YKKyAgICAgICAgLy8gYm90aCBz
dGFydFJlY3QgYW5kIGVuZFJlY3QuIEZvciBleGFtcGxlLCBhIHpvb20taW4gZG91YmxlLXRhcCB0
byBhCisgICAgICAgIC8vIHBlcmZlY3RseSBjZW50ZXJlZCByZWN0IHdpbGwgaGF2ZSBhbmNob3Ig
cmF0aW9zICgwLjUsIDAuNSksIHdoaWxlIG9uZQorICAgICAgICAvLyB0byBhIHJlY3QgdG91Y2hp
bmcgdGhlIGJvdHRvbS1yaWdodCBvZiB0aGUgc2NyZWVuIHdpbGwgaGF2ZSBhbmNob3IKKyAgICAg
ICAgLy8gcmF0aW9zICgxLjAsIDEuMCkuIEluIG90aGVyIHdvcmRzLCBpdCBvYmV5cyB0aGUgZXF1
YXRpb25zOgorICAgICAgICAvLyBhbmNob3JYID0gc3RhcnRfd2lkdGggKiByYXRpb1ggKyBzdGFy
dF94CisgICAgICAgIC8vIGFuY2hvclggPSBlbmRfd2lkdGggKiByYXRpb1ggKyBlbmRfeAorICAg
ICAgICAvLyBhbmNob3JZID0gc3RhcnRfaGVpZ2h0ICogcmF0aW9ZICsgc3RhcnRfeQorICAgICAg
ICAvLyBhbmNob3JZID0gZW5kX2hlaWdodCAqIHJhdGlvWSArIGVuZF95CisgICAgICAgIC8vIHdo
ZXJlIGJvdGggYW5jaG9ye3gseX0gYW5kIHJhdGlve3gseX0gYmVnaW4gYXMgdW5rbm93bnMuIFNv
bHZpbmcKKyAgICAgICAgLy8gZm9yIHRoZSByYXRpb3MsIHdlIGdldCB0aGUgZm9sbG93aW5nIGZv
cm11bGFzOgorICAgICAgICBmbG9hdCByYXRpb1ggPSAoc3RhcnRSZWN0LngoKSAtIGVuZFJlY3Qu
eCgpKSAvIChlbmRSZWN0LndpZHRoKCkgLSBzdGFydFJlY3Qud2lkdGgoKSk7CisgICAgICAgIGZs
b2F0IHJhdGlvWSA9IChzdGFydFJlY3QueSgpIC0gZW5kUmVjdC55KCkpIC8gKGVuZFJlY3QuaGVp
Z2h0KCkgLSBzdGFydFJlY3QuaGVpZ2h0KCkpOworCisgICAgICAgIEludFNpemUgYW5jaG9yKG1f
d2luZG93U2l6ZS53aWR0aCgpICogcmF0aW9YLCBtX3dpbmRvd1NpemUuaGVpZ2h0KCkgKiByYXRp
b1kpOworICAgICAgICB6b29tV2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFnZVNjYWxlLCBkdXJh
dGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHB1cmUgdHJhbnNs
YXRpb24sIHRoZW4gdGhlcmUgZXhpc3RzIG5vIGFuY2hvci4gTGluZWFybHkKKyAgICAgICAgLy8g
aW50ZXJwb2xhdGUgdGhlIHNjcm9sbCBvZmZzZXQgaW5zdGVhZC4KKyAgICAgICAgbV9zY3JvbGxF
bmQgPSBmaW5hbFNjcm9sbDsKKyAgICAgICAgbV9wYWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2Fs
ZTsKKyAgICAgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgICAgICBtX2FuY2hvck1vZGUg
PSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21XaXRo
QW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJs
ZSBkdXJhdGlvbikKK3sKKyAgICBtX3Njcm9sbEVuZCA9IG1fc2Nyb2xsU3RhcnQgKyBhbmNob3I7
CisgICAgbV9zY3JvbGxFbmQuc2NhbGUoZmluYWxQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0
KTsKKyAgICBtX3Njcm9sbEVuZCAtPSBhbmNob3I7CisgICAgbV9zY3JvbGxFbmQuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOworCisgICAgbV9hbmNob3IgPSBhbmNob3I7CisgICAgbV9wYWdlU2NhbGVF
bmQgPSBmaW5hbFBhZ2VTY2FsZTsKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgbV9h
bmNob3JNb2RlID0gdHJ1ZTsKK30KKworSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Ny
b2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAoreworICAgIHJldHVybiBzY3JvbGxP
ZmZzZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWUpKTsKK30KKworZmxvYXQgQ0NQ
YWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lKSk7
Cit9CisKK2Jvb2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5pbWF0aW9uQ29tcGxldGVBdFRp
bWUoZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRpbWUgPj0gZW5kVGltZSgpOwor
fQorCitmbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRpb0ZvclRpbWUoZG91
YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgaWYgKGlzQW5pbWF0aW9uQ29tcGxldGVBdFRpbWUodGlt
ZSkpCisgICAgICAgIHJldHVybiAxLjBmOworCisgICAgcmV0dXJuICh0aW1lIC0gbV9zdGFydFRp
bWUpIC8gbV9kdXJhdGlvbjsKK30KKworSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Ny
b2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3QKK3sKKyAgICBpZiAocmF0aW8gPD0g
MC4wZikKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsU3RhcnQ7CisgICAgaWYgKHJhdGlvID49IDEu
MGYpCisgICAgICAgIHJldHVybiBtX3Njcm9sbEVuZDsKKworICAgIGZsb2F0IGN1cnJlbnRQYWdl
U2NhbGUgPSBwYWdlU2NhbGVBdFJhdGlvKHJhdGlvKTsKKyAgICBJbnRTaXplIGN1cnJlbnRTY3Jv
bGxPZmZzZXQ7CisgICAgaWYgKG1fYW5jaG9yTW9kZSkgeworICAgICAgICAvLyBLZWVwIHRoZSBh
bmNob3Igc3RhYmxlIG9uIHRoZSBzY3JlZW4gYXQgdGhlIGN1cnJlbnQgc2NhbGUuCisgICAgICAg
IEludFNpemUgZG9jdW1lbnRBbmNob3IgPSBtX3Njcm9sbFN0YXJ0ICsgbV9hbmNob3I7CisgICAg
ICAgIGRvY3VtZW50QW5jaG9yLnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0
YXJ0KTsKKyAgICAgICAgY3VycmVudFNjcm9sbE9mZnNldCA9IGRvY3VtZW50QW5jaG9yIC0gbV9h
bmNob3I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRmlyc3QgbW92ZSBib3RoIHNjcm9sbCBv
ZmZzZXRzIHRvIHRoZSBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgIEZsb2F0U2l6
ZSBzY2FsZWRTdGFydFNjcm9sbChtX3Njcm9sbFN0YXJ0KTsKKyAgICAgICAgc2NhbGVkU3RhcnRT
Y3JvbGwuc2NhbGUoY3VycmVudFBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlU3RhcnQpOworICAgICAg
ICBGbG9hdFNpemUgc2NhbGVkRW5kU2Nyb2xsKG1fc2Nyb2xsRW5kKTsKKyAgICAgICAgc2NhbGVk
RW5kU2Nyb2xsLnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZUVuZCk7CisKKyAg
ICAgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGVtLgorICAgICAgICBGbG9h
dFNpemUgZGVsdGEgPSBzY2FsZWRFbmRTY3JvbGwgLSBzY2FsZWRTdGFydFNjcm9sbDsKKyAgICAg
ICAgZGVsdGEuc2NhbGUocmF0aW8pOworICAgICAgICBjdXJyZW50U2Nyb2xsT2Zmc2V0ID0gcm91
bmRlZEludFNpemUoc2NhbGVkU3RhcnRTY3JvbGwgKyBkZWx0YSk7CisgICAgfQorCisgICAgcmV0
dXJuIGN1cnJlbnRTY3JvbGxPZmZzZXQ7Cit9CisKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9u
OjpwYWdlU2NhbGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdAoreworICAgIGlmIChyYXRpbyA8
PSAwLjBmKQorICAgICAgICByZXR1cm4gbV9wYWdlU2NhbGVTdGFydDsKKyAgICBpZiAocmF0aW8g
Pj0gMS4wZikKKyAgICAgICAgcmV0dXJuIG1fcGFnZVNjYWxlRW5kOworCisgICAgLy8gTGluZWFy
bHkgaW50ZXJwb2xhdGUgdGhlIG1hZ25pdHVkZSBpbiBsb2cgc2NhbGUuCisgICAgLy8gTG9nIHNj
YWxlIGlzIG5lZWRlZCB0byBtYWludGFpbiB0aGUgYXBwZWFyYW5jZSBvZiB1bmlmb3JtIHpvb20u
IEZvcgorICAgIC8vIGV4YW1wbGUsIGlmIHdlIHpvb20gZnJvbSAwLjUgdG8gNC4wIGluIDMgc2Vj
b25kcywgdGhlbiB3ZSBzaG91bGQKKyAgICAvLyBiZSB6b29taW5nIGJ5IDJ4IGV2ZXJ5IHNlY29u
ZC4KKyAgICBmbG9hdCBkaWZmID0gbV9wYWdlU2NhbGVFbmQgLyBtX3BhZ2VTY2FsZVN0YXJ0Owor
ICAgIGZsb2F0IGxvZ0RpZmYgPSBsb2coZGlmZik7CisgICAgbG9nRGlmZiAqPSByYXRpbzsKKyAg
ICBkaWZmID0gZXhwKGxvZ0RpZmYpOworICAgIHJldHVybiBtX3BhZ2VTY2FsZVN0YXJ0ICogZGlm
ZjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVB
bmltYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mN2ZkZDE1ODhlNDljNjM2ODQ5NDIwMjNkNTBhNzdiNzRm
MWUwMGU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaApAQCAtMCwwICsxLDk3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbl9oCisjZGVmaW5lIENDUGFnZVNjYWxlQW5pbWF0aW9u
X2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBB
IHNtYWxsIGhlbHBlciBjbGFzcyB0aGF0IGRvZXMgdGhlIG1hdGggZm9yIHpvb20gYW5pbWF0aW9u
cywgcHJpbWFyaWx5IGZvcgorLy8gZG91YmxlLXRhcCB6b29tLiBJbml0aWFsaXplIGl0IHdpdGgg
c3RhcnRpbmcgYW5kIGVuZGluZyBzY3JvbGwvcGFnZSBzY2FsZQorLy8gcG9zaXRpb25zIGFuZCBh
biBhbmltYXRpb24gbGVuZ3RoIHRpbWUsIHRoZW4gY2FsbCAuLi5BdFRpbWUoKSBhdCBldmVyeSBm
cmFtZQorLy8gdG8gb2J0YWluIHRoZSBjdXJyZW50IGludGVycG9sYXRlZCBwb3NpdGlvbi4KK2Ns
YXNzIENDUGFnZVNjYWxlQW5pbWF0aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3Qgd2l0
aCB0aGUgc3RhcnRpbmcgcGFnZSBzY2FsZSBhbmQgc2Nyb2xsIG9mZnNldCAod2hpY2ggaXMgaW4K
KyAgICAvLyBwYWdlU2NhbGVTdGFydCBzcGFjZSkuIFRoZSB3aW5kb3cgc2l6ZSBpcyB0aGUgdXNl
ci12aWV3YWJsZSBhcmVhCisgICAgLy8gaW4gcGl4ZWxzLgorICAgIENDUGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwgY29u
c3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSk7CisKKyAgICAvLyBUaGUg
Zm9sbG93aW5nIG1ldGhvZHMgaW5pdGlhbGl6ZSB0aGUgYW5pbWF0aW9uLiBDYWxsIG9uZSBvZiB0
aGVtCisgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgY29uc3RydWN0aW9uIHRvIHNldCB0aGUgZmlu
YWwgc2Nyb2xsIGFuZCBwYWdlIHNjYWxlLgorCisgICAgLy8gWm9vbSB3aGlsZSBleHBsaWNpdGx5
IHNwZWNpZnlpbmcgdGhlIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlvbi4gVGhlCisgICAgLy8gc2Ny
b2xsIG9mZnNldCBpcyBpbiBmaW5hbFBhZ2VTY2FsZSBjb29yZGluYXRlcy4KKyAgICB2b2lkIHpv
b21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRv
dWJsZSBkdXJhdGlvbik7CisKKyAgICAvLyBab29tIGJhc2VkIG9uIGEgc3BlY2lmaWVkIG9uc2Ny
ZWVuIGFuY2hvciwgd2hpY2ggd2lsbCByZW1haW4gYXQgdGhlIHNhbWUKKyAgICAvLyBwb3NpdGlv
biBvbiB0aGUgc2NyZWVuIHRocm91Z2hvdXQgdGhlIGFuaW1hdGlvbi4gVGhlIGFuY2hvciBpcyBp
biBsb2NhbAorICAgIC8vIHNwYWNlIHJlbGF0aXZlIHRvIHNjcm9sbFN0YXJ0LgorICAgIHZvaWQg
em9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2Fs
ZSwgZG91YmxlIGR1cmF0aW9uKTsKKworICAgIC8vIENoYW5nZSB0aGUgem9vbSB0YXJnZXQgd2hp
bGUgaW4gdGhlIG1pZGRsZSBvZiBhbiBhbmltYXRpb24uCisgICAgdm9pZCB6b29tRWxzZXdoZXJl
KGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91Ymxl
IGR1cmF0aW9uLCBkb3VibGUgdGltZSk7CisKKyAgICAvLyBDYWxsIHRoZXNlIGZ1bmN0aW9ucyB3
aGlsZSB0aGUgYW5pbWF0aW9uIGlzIGluIHByb2dyZXNzIHRvIG91dHB1dCB0aGUKKyAgICAvLyBj
dXJyZW50IHN0YXRlLgorICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1l
KSBjb25zdDsKKyAgICBmbG9hdCBwYWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0Owor
ICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3VibGUgdGltZSkgY29uc3Q7CisK
KyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgcmV0dXJuIHN0YXRlIHdoaWNoIGlzIGludmFy
aWFudCB0aHJvdWdob3V0IHRoZQorICAgIC8vIGNvdXJzZSBvZiB0aGUgYW5pbWF0aW9uLgorICAg
IGRvdWJsZSBzdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZTsgfQorICAgIGRv
dWJsZSBkdXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHVyYXRpb247IH0KKyAgICBkb3VibGUg
ZW5kVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lICsgbV9kdXJhdGlvbjsgfQorICAg
IGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3Jv
bGxFbmQ7IH0KKyAgICBmbG9hdCBmaW5hbFBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZVNjYWxlRW5kOyB9Citwcml2YXRlOgorICAgIGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRv
dWJsZSB0aW1lKSBjb25zdDsKKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldEF0UmF0aW8oZmxvYXQg
cmF0aW8pIGNvbnN0OworICAgIGZsb2F0IHBhZ2VTY2FsZUF0UmF0aW8oZmxvYXQgcmF0aW8pIGNv
bnN0OworCisgICAgSW50U2l6ZSBtX3Njcm9sbFN0YXJ0OworICAgIGZsb2F0IG1fcGFnZVNjYWxl
U3RhcnQ7CisgICAgSW50U2l6ZSBtX3dpbmRvd1NpemU7CisKKyAgICBib29sIG1fYW5jaG9yTW9k
ZTsKKyAgICBJbnRTaXplIG1fYW5jaG9yOworICAgIEludFNpemUgbV9zY3JvbGxFbmQ7CisgICAg
ZmxvYXQgbV9wYWdlU2NhbGVFbmQ7CisKKyAgICBkb3VibGUgbV9zdGFydFRpbWU7CisgICAgZG91
YmxlIG1fZHVyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116469</attachid>
            <date>2011-11-23 19:33:03 -0800</date>
            <delta_ts>2011-12-07 00:39:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111123193302.patch</filename>
            <type>text/plain</type>
            <size>20982</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODhiY2RmYzY1Y2QzNTUz
MWE4YWUxYTFmZDNmMGZhYWZhYjY0ZmY3YS4uOTljNjMxOGI3MTNlMzgxYWRiZjAxMDFhYmI4MDFm
ZjE5MDZlMTBkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBhcHBseSB0aGUg
YW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUyOSBmaWxlZC4p
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRp
b246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21Ubyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdp
dGhBbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21F
bHNld2hlcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cGFnZVNjYWxlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
Ojppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNj
YWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRpbyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZmluYWxTY3JvbGxPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFsUGFnZVNjYWxlKToKKwogMjAx
MS0xMS0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IExheW91dCBUZXN0IGluc3BlY3Rvci9leHRlbnNpb25zL2V4dGVuc2lvbnMtZXZlbnRzLmh0bWwg
aXMgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwOWE3ZWMxYWI0M2Yx
YjZlMjdjYjgwNGZhNDU3YjliYjk5YTRhNjc5Li42YTM0NmVhOWM1YTAwZjEyYWQ2NzMxYjkzMmIw
OWI2YzZmYWNiM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDExLTExLTIyICBBbGV4YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBbY2hyb21pdW1dIEFkZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwg
dGhyZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
Mjk5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgYWRkcyBhIG5ldyBtYXRoIGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBv
ZiB0aGUKKyAgICAgICAgYW5pbWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0
SW1wbCB0byBhcHBseSB0aGUgYW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTUyOSBmaWxlZC4pCisKKyAgICAgICAgKiBwdWJsaWMvV2ViQ29tcG9zaXRvci5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VTY2FsZUFuaW1hdGlvbkV2ZW50OjpXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudCk6CisgICAg
ICAgICogcHVibGljL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuaDoKKyAgICAgICAgKiBz
cmMvV2ViQ29tcG9zaXRvckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21wb3NpdG9y
SW1wbDo6aGFuZGxlUGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJD
b21wb3NpdG9ySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJQb3B1cE1lbnVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51SW1wbDo6aGFuZGxlSW5wdXRFdmVudCk6CisgICAg
ICAgICogc3JjL2FuZHJvaWQvV2ViSW5wdXRFdmVudEZhY3RvcnkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJJbnB1dEV2ZW50RmFjdG9yeTo6cGFnZVNjYWxlQW5pbWF0aW9uRXZlbnQpOgorCiAy
MDExLTExLTIyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJvbGwgQ2hyb21pdW0gREVQUyB0byByMTEwOTYwIGFuZCBzZXQgdGhlIGRpc2FibGVfbmFjbCBm
bGFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDRhYmM4NDBmZTk3MGM1YzJiMjAxMTMxNGVlZDZjNjI2
YWY4Zjg1NTYuLjQyYzZjNzQzYzgxMWI2ZWZjN2UyOWRlYTJmZWZmM2Y4MjYzMjY3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKQEAgLTM1NzYsNiArMzU3Niw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJ
bXBsLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQbHVnaW5MYXllckltcGwuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NJbnB1dEhhbmRsZXIuaAppbmRleCBmYWNiYmU1Y2ZhYmRmZDA4ZTY1OTU5MmNmZjFi
Y2M0NTNlY2Q3ZDEyLi5mZmIwZDVmZTVhOWI5ZDk2NjI0MjZjMWEwMzljNmM5NzIyZGQ0MDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0lucHV0SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDSW5wdXRIYW5kbGVyLmgKQEAgLTUxLDYgKzUxLDExIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcGluY2hHZXN0dXJlVXBkYXRlKGZsb2F0IG1hZ25pZnlEZWx0YSwgY29u
c3QgSW50UG9pbnQmIGFuY2hvcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVF
bmQoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29u
c3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sCisgICAgICAgIGJvb2wgYW5jaG9yUG9pbnQsCisg
ICAgICAgIGZsb2F0IHBhZ2VTY2FsZSwKKyAgICAgICAgZG91YmxlIGR1cmF0aW9uTXMpID0gMDsK
KwogcHJvdGVjdGVkOgogICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50KCkgeyB9CiAgICAgdmlydHVh
bCB+Q0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKaW5kZXggOGNmYmQzMDdhMDUwOTQwY2Y2YjA4NzE0ZGM1ODI1ZmRmOGFhOTMx
Ni4uMjg4Yzc0OWEwYzI0NDU4OWY2NjA4NWZjOGUxZjYyNDkyNjNhMTJiOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmlt
YXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KIApAQCAtODQsNiArODUsNDMgQEAgR3JhcGhpY3NDb250ZXh0M0QqIENDTGF5
ZXJUcmVlSG9zdEltcGw6OmNvbnRleHQoKQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmFu
aW1hdGUoZG91YmxlIGZyYW1lQmVnaW5UaW1lTXMpCiB7CisgICAgaWYgKCFtX3BhZ2VTY2FsZUFu
aW1hdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzY3JvbGxUb3RhbCA9IHRv
U2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Nyb2xsTGF5ZXJJ
bXBsLT5zY3JvbGxEZWx0YSgpKTsKKworICAgIHNldFBhZ2VTY2FsZURlbHRhKG1fcGFnZVNjYWxl
QW5pbWF0aW9uLT5wYWdlU2NhbGVBdFRpbWUoZnJhbWVCZWdpblRpbWVNcykgLyBtX3BhZ2VTY2Fs
ZSk7CisgICAgSW50U2l6ZSBuZXh0U2Nyb2xsID0gbV9wYWdlU2NhbGVBbmltYXRpb24tPnNjcm9s
bE9mZnNldEF0VGltZShmcmFtZUJlZ2luVGltZU1zKTsKKyAgICBuZXh0U2Nyb2xsLnNjYWxlKDEg
LyBtX3BhZ2VTY2FsZURlbHRhKTsKKyAgICBtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsQnkobmV4
dFNjcm9sbCAtIHNjcm9sbFRvdGFsKTsKKyAgICBtX2NsaWVudC0+c2V0TmVlZHNSZWRyYXdPbklt
cGxUaHJlYWQoKTsKKworICAgIGlmIChtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+aXNBbmltYXRpb25D
b21wbGV0ZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSkgeworICAgICAgICBtX3BhZ2VTY2FsZUFu
aW1hdGlvbi5jbGVhcigpOworICAgICAgICBtX2NsaWVudC0+c2V0TmVlZHNDb21taXRPbkltcGxU
aHJlYWQoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6c3RhcnRQYWdl
U2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYgdGFyZ2V0UG9zaXRpb24sIGJvb2wgYW5jaG9y
UG9pbnQsIGZsb2F0IHBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpCit7CisgICAgaWYgKCFt
X3Njcm9sbExheWVySW1wbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBzY3JvbGxU
b3RhbCA9IHRvU2l6ZShtX3Njcm9sbExheWVySW1wbC0+c2Nyb2xsUG9zaXRpb24oKSArIG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JvbGxEZWx0YSgpKTsKKyAgICBzY3JvbGxUb3RhbC5zY2FsZShtX3Bh
Z2VTY2FsZURlbHRhKTsKKyAgICBmbG9hdCBzY2FsZVRvdGFsID0gbV9wYWdlU2NhbGUgKiBtX3Bh
Z2VTY2FsZURlbHRhOworCisgICAgbV9wYWdlU2NhbGVBbmltYXRpb24gPSBhZG9wdFB0cihuZXcg
Q0NQYWdlU2NhbGVBbmltYXRpb24oc2Nyb2xsVG90YWwsIHNjYWxlVG90YWwsIG1fdmlld3BvcnRT
aXplLCBjdXJyZW50VGltZU1zKCkpKTsKKworICAgIGlmIChhbmNob3JQb2ludCkgeworICAgICAg
ICBJbnRTaXplIHdpbmRvd0FuY2hvcih0YXJnZXRQb3NpdGlvbik7CisgICAgICAgIHdpbmRvd0Fu
Y2hvci5zY2FsZShzY2FsZVRvdGFsIC8gcGFnZVNjYWxlKTsKKyAgICAgICAgd2luZG93QW5jaG9y
IC09IHNjcm9sbFRvdGFsOworICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVdpdGhB
bmNob3Iod2luZG93QW5jaG9yLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworICAgIH0gZWxzZQor
ICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdl
U2NhbGUsIGR1cmF0aW9uTXMpOworCisgICAgbV9jbGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBs
VGhyZWFkKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpCkBA
IC0zNTEsNyArMzg5LDcgQEAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVy
VHJlZUhvc3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKCkKIHsKICAgICBPd25QdHI8Q0NTY3Jv
bGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IGFkb3B0UHRyKG5ldyBDQ1Njcm9sbEFuZFNjYWxl
U2V0KCkpOwogICAgIGJvb2wgZGlkTW92ZSA9IG1fc2Nyb2xsTGF5ZXJJbXBsICYmICghbV9zY3Jv
bGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkuaXNaZXJvKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAh
PSAxLjBmKTsKLSAgICBpZiAoIWRpZE1vdmUgfHwgbV9waW5jaEdlc3R1cmVBY3RpdmUpIHsKKyAg
ICBpZiAoIWRpZE1vdmUgfHwgbV9waW5jaEdlc3R1cmVBY3RpdmUgfHwgbV9wYWdlU2NhbGVBbmlt
YXRpb24uZ2V0KCkpIHsKICAgICAgICAgbV9zZW50UGFnZVNjYWxlRGVsdGEgPSBzY3JvbGxJbmZv
LT5wYWdlU2NhbGVEZWx0YSA9IDE7CiAgICAgICAgIHJldHVybiBzY3JvbGxJbmZvLnJlbGVhc2Uo
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggY2E0Zjcx
YmQ4NmFhMzI5NDU0NWVmOTdiYWQ3YmJhMWRlNzk2YjdlYS4uNjIyNDM1YjRmMGYxYTc0MjNlZjE3
NjI1MzcyNjE3NmJlYzdiZjgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OworY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb247
CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJDaHJvbWl1bTsKIGNsYXNz
IFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xMDgsNiArMTA5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2FsZSwgZmxvYXQgbWluUGFn
ZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIGZsb2F0IHBhZ2VTY2FsZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0
aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFuY2hvclBvaW50LCBmbG9h
dCBwYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKwogICAgIGNvbnN0IENDU2V0dGluZ3Mm
IHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogCiAgICAgUGFzc093blB0
cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFzKCk7CkBAIC0xMzgsNiAr
MTQxLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pblBhZ2VTY2FsZSwgbV9tYXhQYWdlU2Nh
bGU7CiAKICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOworCisgICAgT3duUHRyPENDUGFn
ZVNjYWxlQW5pbWF0aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIH07CiAKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VT
Y2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzljYWU2NzY0MjQw
NGE5ODU4NDkzOGZjOTVkOThmZTFkNTRlMTU1MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcApAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNj
L0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNs
dWRlICJGbG9hdFNpemUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXpl
JiB3aW5kb3dTaXplLCBkb3VibGUgc3RhcnRUaW1lKQoreworICAgIG1fc2Nyb2xsU3RhcnQgPSBz
Y3JvbGxTdGFydDsKKyAgICBtX3BhZ2VTY2FsZVN0YXJ0ID0gcGFnZVNjYWxlU3RhcnQ7CisgICAg
bV93aW5kb3dTaXplID0gd2luZG93U2l6ZTsKKyAgICBtX2FuY2hvck1vZGUgPSBmYWxzZTsKKyAg
ICBtX3Njcm9sbEVuZCA9IHNjcm9sbFN0YXJ0OworICAgIG1fcGFnZVNjYWxlRW5kID0gcGFnZVNj
YWxlU3RhcnQ7CisgICAgbV9zdGFydFRpbWUgPSBzdGFydFRpbWU7Cit9CisKK3ZvaWQgQ0NQYWdl
U2NhbGVBbmltYXRpb246Onpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQg
ZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9wYWdlU2NhbGVT
dGFydCAhPSBmaW5hbFBhZ2VTY2FsZSkgeworICAgICAgICAvLyBGb3IgdW5pZm9ybS1sb29raW5n
IHpvb21pbmcsIGluZmVyIHRoZSBhbmNob3IgKHBvaW50IHRoYXQgcmVtYWlucyBpbgorICAgICAg
ICAvLyBwbGFjZSB0aHJvdWdob3V0IHRoZSB6b29tKSBmcm9tIHRoZSBzdGFydCBhbmQgZW5kIHJl
Y3RzLgorICAgICAgICBGbG9hdFJlY3Qgc3RhcnRSZWN0KEludFBvaW50KG1fc2Nyb2xsU3RhcnQp
LCBtX3dpbmRvd1NpemUpOworICAgICAgICBGbG9hdFJlY3QgZW5kUmVjdChJbnRQb2ludChmaW5h
bFNjcm9sbCksIG1fd2luZG93U2l6ZSk7CisgICAgICAgIGVuZFJlY3Quc2NhbGUobV9wYWdlU2Nh
bGVTdGFydCAvIGZpbmFsUGFnZVNjYWxlKTsKKworICAgICAgICAvLyBUaGUgYW5jaG9yIGlzIHRo
ZSBwb2ludCB3aGljaCBpcyBhdCB0aGUgc2FtZSByYXRpbyBvZiB0aGUgc2lkZXMgb2YKKyAgICAg
ICAgLy8gYm90aCBzdGFydFJlY3QgYW5kIGVuZFJlY3QuIEZvciBleGFtcGxlLCBhIHpvb20taW4g
ZG91YmxlLXRhcCB0byBhCisgICAgICAgIC8vIHBlcmZlY3RseSBjZW50ZXJlZCByZWN0IHdpbGwg
aGF2ZSBhbmNob3IgcmF0aW9zICgwLjUsIDAuNSksIHdoaWxlIG9uZQorICAgICAgICAvLyB0byBh
IHJlY3QgdG91Y2hpbmcgdGhlIGJvdHRvbS1yaWdodCBvZiB0aGUgc2NyZWVuIHdpbGwgaGF2ZSBh
bmNob3IKKyAgICAgICAgLy8gcmF0aW9zICgxLjAsIDEuMCkuIEluIG90aGVyIHdvcmRzLCBpdCBv
YmV5cyB0aGUgZXF1YXRpb25zOgorICAgICAgICAvLyBhbmNob3JYID0gc3RhcnRfd2lkdGggKiBy
YXRpb1ggKyBzdGFydF94CisgICAgICAgIC8vIGFuY2hvclggPSBlbmRfd2lkdGggKiByYXRpb1gg
KyBlbmRfeAorICAgICAgICAvLyBhbmNob3JZID0gc3RhcnRfaGVpZ2h0ICogcmF0aW9ZICsgc3Rh
cnRfeQorICAgICAgICAvLyBhbmNob3JZID0gZW5kX2hlaWdodCAqIHJhdGlvWSArIGVuZF95Cisg
ICAgICAgIC8vIHdoZXJlIGJvdGggYW5jaG9ye3gseX0gYW5kIHJhdGlve3gseX0gYmVnaW4gYXMg
dW5rbm93bnMuIFNvbHZpbmcKKyAgICAgICAgLy8gZm9yIHRoZSByYXRpb3MsIHdlIGdldCB0aGUg
Zm9sbG93aW5nIGZvcm11bGFzOgorICAgICAgICBmbG9hdCByYXRpb1ggPSAoc3RhcnRSZWN0Lngo
KSAtIGVuZFJlY3QueCgpKSAvIChlbmRSZWN0LndpZHRoKCkgLSBzdGFydFJlY3Qud2lkdGgoKSk7
CisgICAgICAgIGZsb2F0IHJhdGlvWSA9IChzdGFydFJlY3QueSgpIC0gZW5kUmVjdC55KCkpIC8g
KGVuZFJlY3QuaGVpZ2h0KCkgLSBzdGFydFJlY3QuaGVpZ2h0KCkpOworCisgICAgICAgIEludFNp
emUgYW5jaG9yKG1fd2luZG93U2l6ZS53aWR0aCgpICogcmF0aW9YLCBtX3dpbmRvd1NpemUuaGVp
Z2h0KCkgKiByYXRpb1kpOworICAgICAgICB6b29tV2l0aEFuY2hvcihhbmNob3IsIGZpbmFsUGFn
ZVNjYWxlLCBkdXJhdGlvbik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSWYgdGhpcyBpcyBh
IHB1cmUgdHJhbnNsYXRpb24sIHRoZW4gdGhlcmUgZXhpc3RzIG5vIGFuY2hvci4gTGluZWFybHkK
KyAgICAgICAgLy8gaW50ZXJwb2xhdGUgdGhlIHNjcm9sbCBvZmZzZXQgaW5zdGVhZC4KKyAgICAg
ICAgbV9zY3JvbGxFbmQgPSBmaW5hbFNjcm9sbDsKKyAgICAgICAgbV9wYWdlU2NhbGVFbmQgPSBm
aW5hbFBhZ2VTY2FsZTsKKyAgICAgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgICAgICBt
X2FuY2hvck1vZGUgPSBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRp
b246Onpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQgZmluYWxQYWdl
U2NhbGUsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBtX3Njcm9sbEVuZCA9IG1fc2Nyb2xsU3Rh
cnQgKyBhbmNob3I7CisgICAgbV9zY3JvbGxFbmQuc2NhbGUoZmluYWxQYWdlU2NhbGUgLyBtX3Bh
Z2VTY2FsZVN0YXJ0KTsKKyAgICBtX3Njcm9sbEVuZCAtPSBhbmNob3I7CisgICAgbV9zY3JvbGxF
bmQuY2xhbXBOZWdhdGl2ZVRvWmVybygpOworCisgICAgbV9hbmNob3IgPSBhbmNob3I7CisgICAg
bV9wYWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRp
b247CisgICAgbV9hbmNob3JNb2RlID0gdHJ1ZTsKK30KKworSW50U2l6ZSBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0aW1lKSBjb25zdAoreworICAgIHJl
dHVybiBzY3JvbGxPZmZzZXRBdFJhdGlvKHByb2dyZXNzUmF0aW9Gb3JUaW1lKHRpbWUpKTsKK30K
KworZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGlt
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZVNjYWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9y
VGltZSh0aW1lKSk7Cit9CisKK2Jvb2wgQ0NQYWdlU2NhbGVBbmltYXRpb246OmlzQW5pbWF0aW9u
Q29tcGxldGVBdFRpbWUoZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRpbWUgPj0g
ZW5kVGltZSgpOworfQorCitmbG9hdCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cHJvZ3Jlc3NSYXRp
b0ZvclRpbWUoZG91YmxlIHRpbWUpIGNvbnN0Cit7CisgICAgaWYgKGlzQW5pbWF0aW9uQ29tcGxl
dGVBdFRpbWUodGltZSkpCisgICAgICAgIHJldHVybiAxLjBmOworCisgICAgcmV0dXJuICh0aW1l
IC0gbV9zdGFydFRpbWUpIC8gbV9kdXJhdGlvbjsKK30KKworSW50U2l6ZSBDQ1BhZ2VTY2FsZUFu
aW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3QKK3sKKyAgICBp
ZiAocmF0aW8gPD0gMC4wZikKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsU3RhcnQ7CisgICAgaWYg
KHJhdGlvID49IDEuMGYpCisgICAgICAgIHJldHVybiBtX3Njcm9sbEVuZDsKKworICAgIGZsb2F0
IGN1cnJlbnRQYWdlU2NhbGUgPSBwYWdlU2NhbGVBdFJhdGlvKHJhdGlvKTsKKyAgICBJbnRTaXpl
IGN1cnJlbnRTY3JvbGxPZmZzZXQ7CisgICAgaWYgKG1fYW5jaG9yTW9kZSkgeworICAgICAgICAv
LyBLZWVwIHRoZSBhbmNob3Igc3RhYmxlIG9uIHRoZSBzY3JlZW4gYXQgdGhlIGN1cnJlbnQgc2Nh
bGUuCisgICAgICAgIEludFNpemUgZG9jdW1lbnRBbmNob3IgPSBtX3Njcm9sbFN0YXJ0ICsgbV9h
bmNob3I7CisgICAgICAgIGRvY3VtZW50QW5jaG9yLnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBt
X3BhZ2VTY2FsZVN0YXJ0KTsKKyAgICAgICAgY3VycmVudFNjcm9sbE9mZnNldCA9IGRvY3VtZW50
QW5jaG9yIC0gbV9hbmNob3I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRmlyc3QgbW92ZSBi
b3RoIHNjcm9sbCBvZmZzZXRzIHRvIHRoZSBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UuCisgICAg
ICAgIEZsb2F0U2l6ZSBzY2FsZWRTdGFydFNjcm9sbChtX3Njcm9sbFN0YXJ0KTsKKyAgICAgICAg
c2NhbGVkU3RhcnRTY3JvbGwuc2NhbGUoY3VycmVudFBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlU3Rh
cnQpOworICAgICAgICBGbG9hdFNpemUgc2NhbGVkRW5kU2Nyb2xsKG1fc2Nyb2xsRW5kKTsKKyAg
ICAgICAgc2NhbGVkRW5kU2Nyb2xsLnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2Fs
ZUVuZCk7CisKKyAgICAgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGVtLgor
ICAgICAgICBGbG9hdFNpemUgZGVsdGEgPSBzY2FsZWRFbmRTY3JvbGwgLSBzY2FsZWRTdGFydFNj
cm9sbDsKKyAgICAgICAgZGVsdGEuc2NhbGUocmF0aW8pOworICAgICAgICBjdXJyZW50U2Nyb2xs
T2Zmc2V0ID0gcm91bmRlZEludFNpemUoc2NhbGVkU3RhcnRTY3JvbGwgKyBkZWx0YSk7CisgICAg
fQorCisgICAgcmV0dXJuIGN1cnJlbnRTY3JvbGxPZmZzZXQ7Cit9CisKK2Zsb2F0IENDUGFnZVNj
YWxlQW5pbWF0aW9uOjpwYWdlU2NhbGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdAoreworICAg
IGlmIChyYXRpbyA8PSAwLjBmKQorICAgICAgICByZXR1cm4gbV9wYWdlU2NhbGVTdGFydDsKKyAg
ICBpZiAocmF0aW8gPj0gMS4wZikKKyAgICAgICAgcmV0dXJuIG1fcGFnZVNjYWxlRW5kOworCisg
ICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUgdGhlIG1hZ25pdHVkZSBpbiBsb2cgc2NhbGUuCisg
ICAgLy8gTG9nIHNjYWxlIGlzIG5lZWRlZCB0byBtYWludGFpbiB0aGUgYXBwZWFyYW5jZSBvZiB1
bmlmb3JtIHpvb20uIEZvcgorICAgIC8vIGV4YW1wbGUsIGlmIHdlIHpvb20gZnJvbSAwLjUgdG8g
NC4wIGluIDMgc2Vjb25kcywgdGhlbiB3ZSBzaG91bGQKKyAgICAvLyBiZSB6b29taW5nIGJ5IDJ4
IGV2ZXJ5IHNlY29uZC4KKyAgICBmbG9hdCBkaWZmID0gbV9wYWdlU2NhbGVFbmQgLyBtX3BhZ2VT
Y2FsZVN0YXJ0OworICAgIGZsb2F0IGxvZ0RpZmYgPSBsb2coZGlmZik7CisgICAgbG9nRGlmZiAq
PSByYXRpbzsKKyAgICBkaWZmID0gZXhwKGxvZ0RpZmYpOworICAgIHJldHVybiBtX3BhZ2VTY2Fs
ZVN0YXJ0ICogZGlmZjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFu
aW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQYWdlU2NhbGVBbmltYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTE2MTI5MjUyODU0MGNiMGQyMzE4
YTlhY2E1Yzg3YTVkMTk3NTA2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbl9oCisjZGVmaW5lIENDUGFnZVNj
YWxlQW5pbWF0aW9uX2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBBIHNtYWxsIGhlbHBlciBjbGFzcyB0aGF0IGRvZXMgdGhlIG1hdGggZm9yIHpv
b20gYW5pbWF0aW9ucywgcHJpbWFyaWx5IGZvcgorLy8gZG91YmxlLXRhcCB6b29tLiBJbml0aWFs
aXplIGl0IHdpdGggc3RhcnRpbmcgYW5kIGVuZGluZyBzY3JvbGwvcGFnZSBzY2FsZQorLy8gcG9z
aXRpb25zIGFuZCBhbiBhbmltYXRpb24gbGVuZ3RoIHRpbWUsIHRoZW4gY2FsbCAuLi5BdFRpbWUo
KSBhdCBldmVyeSBmcmFtZQorLy8gdG8gb2J0YWluIHRoZSBjdXJyZW50IGludGVycG9sYXRlZCBw
b3NpdGlvbi4KK2NsYXNzIENDUGFnZVNjYWxlQW5pbWF0aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBD
b25zdHJ1Y3Qgd2l0aCB0aGUgc3RhcnRpbmcgcGFnZSBzY2FsZSBhbmQgc2Nyb2xsIG9mZnNldCAo
d2hpY2ggaXMgaW4KKyAgICAvLyBwYWdlU2NhbGVTdGFydCBzcGFjZSkuIFRoZSB3aW5kb3cgc2l6
ZSBpcyB0aGUgdXNlci12aWV3YWJsZSBhcmVhCisgICAgLy8gaW4gcGl4ZWxzLgorICAgIENDUGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2Nh
bGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgZG91YmxlIHN0YXJ0VGltZSk7CisK
KyAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW5pdGlhbGl6ZSB0aGUgYW5pbWF0aW9uLiBD
YWxsIG9uZSBvZiB0aGVtCisgICAgLy8gaW1tZWRpYXRlbHkgYWZ0ZXIgY29uc3RydWN0aW9uIHRv
IHNldCB0aGUgZmluYWwgc2Nyb2xsIGFuZCBwYWdlIHNjYWxlLgorCisgICAgLy8gWm9vbSB3aGls
ZSBleHBsaWNpdGx5IHNwZWNpZnlpbmcgdGhlIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlvbi4gVGhl
CisgICAgLy8gc2Nyb2xsIG9mZnNldCBpcyBpbiBmaW5hbFBhZ2VTY2FsZSBjb29yZGluYXRlcy4K
KyAgICB2b2lkIHpvb21Ubyhjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQ
YWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbik7CisKKyAgICAvLyBab29tIGJhc2VkIG9uIGEgc3Bl
Y2lmaWVkIG9uc2NyZWVuIGFuY2hvciwgd2hpY2ggd2lsbCByZW1haW4gYXQgdGhlIHNhbWUKKyAg
ICAvLyBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuIHRocm91Z2hvdXQgdGhlIGFuaW1hdGlvbi4gVGhl
IGFuY2hvciBpcyBpbiBsb2NhbAorICAgIC8vIHNwYWNlIHJlbGF0aXZlIHRvIHNjcm9sbFN0YXJ0
LgorICAgIHZvaWQgem9vbVdpdGhBbmNob3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBm
aW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uKTsKKworICAgIC8vIENhbGwgdGhlc2UgZnVu
Y3Rpb25zIHdoaWxlIHRoZSBhbmltYXRpb24gaXMgaW4gcHJvZ3Jlc3MgdG8gb3V0cHV0IHRoZQor
ICAgIC8vIGN1cnJlbnQgc3RhdGUuCisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFRpbWUoZG91
YmxlIHRpbWUpIGNvbnN0OworICAgIGZsb2F0IHBhZ2VTY2FsZUF0VGltZShkb3VibGUgdGltZSkg
Y29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lKSBj
b25zdDsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZXR1cm4gc3RhdGUgd2hpY2gg
aXMgaW52YXJpYW50IHRocm91Z2hvdXQgdGhlCisgICAgLy8gY291cnNlIG9mIHRoZSBhbmltYXRp
b24uCisgICAgZG91YmxlIHN0YXJ0VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRUaW1lOyB9
CisgICAgZG91YmxlIGR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kdXJhdGlvbjsgfQorICAg
IGRvdWJsZSBlbmRUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWUgKyBtX2R1cmF0aW9u
OyB9CisgICAgY29uc3QgSW50U2l6ZSYgZmluYWxTY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbEVuZDsgfQorICAgIGZsb2F0IGZpbmFsUGFnZVNjYWxlKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlU2NhbGVFbmQ7IH0KK3ByaXZhdGU6CisgICAgZmxvYXQgcHJvZ3Jlc3NSYXRpb0Zv
clRpbWUoZG91YmxlIHRpbWUpIGNvbnN0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRSYXRp
byhmbG9hdCByYXRpbykgY29uc3Q7CisgICAgZmxvYXQgcGFnZVNjYWxlQXRSYXRpbyhmbG9hdCBy
YXRpbykgY29uc3Q7CisKKyAgICBJbnRTaXplIG1fc2Nyb2xsU3RhcnQ7CisgICAgZmxvYXQgbV9w
YWdlU2NhbGVTdGFydDsKKyAgICBJbnRTaXplIG1fd2luZG93U2l6ZTsKKworICAgIGJvb2wgbV9h
bmNob3JNb2RlOworICAgIEludFNpemUgbV9hbmNob3I7CisgICAgSW50U2l6ZSBtX3Njcm9sbEVu
ZDsKKyAgICBmbG9hdCBtX3BhZ2VTY2FsZUVuZDsKKworICAgIGRvdWJsZSBtX3N0YXJ0VGltZTsK
KyAgICBkb3VibGUgbV9kdXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118182</attachid>
            <date>2011-12-07 00:39:17 -0800</date>
            <delta_ts>2011-12-07 01:24:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111207003916.patch</filename>
            <type>text/plain</type>
            <size>21327</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVhNDY1M2ZlOTA1YWFj
NjhmNzI3NTc2OGJkM2M4ZTYzMDM2NmRhMy4uZDRlNTg2ZThmM2JkMTg5MmRhZDJjOTExYTkyMjVm
Yjg4NWNhMjNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBhcHBseSB0aGUg
YW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUyOSBmaWxlZC4p
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRp
b246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21Ubyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdp
dGhBbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21F
bHNld2hlcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cGFnZVNjYWxlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
Ojppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNj
YWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRpbyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZmluYWxTY3JvbGxPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFsUGFnZVNjYWxlKToKKwogMjAx
MS0xMS0yNCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9k
YXRhOiBTdXBwb3J0IGZvciBwcm9wZXJ0aWVzIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggNTJiYWY5MDg5MGM0M2VlOTNiNzVhNTliYzg2MDNjODcxZjBkZDAyNS4uMmYx
MmVlNzE5YWM4NWE4YWJmM2FjYjllZGRmZThmYWRiZjM5OGUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0xMS0yMiAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBh
bmltYXRpb24gc3VwcG9ydCB0byBJbXBsIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgbWF0aCBoZWxwZXIgY2xhc3Mg
dG8gY29tcHV0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCisgICAgICAgIGFuaW1hdGlvbiwgYW5kIGNv
ZGUgaW4gdGhlIENDTGF5ZXJUcmVlSG9zdEltcGwgdG8gYXBwbHkgdGhlIGFuaW1hdGlvbgorICAg
ICAgICBmcmFtZSBieSBmcmFtZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1MjkgZmlsZWQuKQorCisgICAgICAgICog
cHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudDo6V2ViUGFnZVNj
YWxlQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9hbmRyb2lkL1dlYklucHV0RXZl
bnRGYWN0b3J5Lmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6OmhhbmRsZVBhZ2VTY2FsZUFuaW1hdGlvbkV2
ZW50KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvckltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6
OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9hbmRyb2lkL1dlYklucHV0RXZlbnRG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5wdXRFdmVudEZhY3Rvcnk6OnBhZ2VT
Y2FsZUFuaW1hdGlvbkV2ZW50KToKKwogMjAxMS0xMS0yNCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZWQgb2Jzb2xldGUgdG91
Y2h1aSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDcyNzE1MjRmODUzNmM3NGExYThjNmE5YjJj
YzgzYTAwMjg2YjIzYi4uYWRlZGQ4Mjk3OWZiYmNiNWMyZGZhYjlkOGE4NGQzYzliNjgzYmRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU4Niw2ICszNTg2LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQYWdlU2NhbGVBbmltYXRpb24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IGZhY2JiZTVjZmFiZGZkMDhlNjU5NTky
Y2ZmMWJjYzQ1M2VjZDdkMTIuLjBiMjcwNDFiMTM2NTMwM2VmN2MzZWM0NWYyOGRhNTNlN2JlMGE5
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtNTEsNiArNTEsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRh
LCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2Vz
dHVyZUVuZCgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5DQ0lucHV0
SGFuZGxlckNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCA4Y2ZiZDMwN2EwNTA5NDBjZjZiMDg3MTRkYzU4MjVmZGY4YWE5MzE2Li40ZGRhZWUw
YWZjZTUyZDkzZmRhMWYxYWNiNjc0MDRkNjhiNDFhYmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCkBAIC04NCw2ICs4NSw0NSBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWVNcykKIHsKKyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9TaXplKG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9s
bERlbHRhKCkpOworCisgICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmltYXRpb24t
PnBhZ2VTY2FsZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSAvIG1fcGFnZVNjYWxlKTsKKyAgICBJ
bnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xsT2Zmc2V0QXRU
aW1lKGZyYW1lQmVnaW5UaW1lTXMpOworICAgIG5leHRTY3JvbGwuc2NhbGUoMSAvIG1fcGFnZVNj
YWxlRGVsdGEpOworICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxCeShuZXh0U2Nyb2xsIC0g
c2Nyb2xsVG90YWwpOworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgp
OworCisgICAgaWYgKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5pc0FuaW1hdGlvbkNvbXBsZXRlQXRU
aW1lKGZyYW1lQmVnaW5UaW1lTXMpKSB7CisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLmNs
ZWFyKCk7CisgICAgICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwor
ICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQb2ludCwgZmxv
YXQgcGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3sKKyAgICBpZiAoIW1fc2Nyb2xsTGF5
ZXJJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9T
aXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCkpOworICAgIHNjcm9sbFRvdGFsLnNjYWxlKG1fcGFnZVNjYWxlRGVs
dGEpOworICAgIGZsb2F0IHNjYWxlVG90YWwgPSBtX3BhZ2VTY2FsZSAqIG1fcGFnZVNjYWxlRGVs
dGE7CisgICAgSW50U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IG1fc2Nyb2xsTGF5ZXJJbXBsLT5j
aGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CisgICAgc2NhbGVkQ29udGVudFNpemUuc2Nh
bGUobV9wYWdlU2NhbGVEZWx0YSk7CisKKyAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IGFkb3B0
UHRyKG5ldyBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihzY3JvbGxUb3RhbCwgc2NhbGVUb3RhbCwgbV92
aWV3cG9ydFNpemUsIHNjYWxlZENvbnRlbnRTaXplLCBjdXJyZW50VGltZU1zKCkpKTsKKworICAg
IGlmIChhbmNob3JQb2ludCkgeworICAgICAgICBJbnRTaXplIHdpbmRvd0FuY2hvcih0YXJnZXRQ
b3NpdGlvbik7CisgICAgICAgIHdpbmRvd0FuY2hvci5zY2FsZShzY2FsZVRvdGFsIC8gcGFnZVNj
YWxlKTsKKyAgICAgICAgd2luZG93QW5jaG9yIC09IHNjcm9sbFRvdGFsOworICAgICAgICBtX3Bh
Z2VTY2FsZUFuaW1hdGlvbi0+em9vbVdpdGhBbmNob3Iod2luZG93QW5jaG9yLCBwYWdlU2NhbGUs
IGR1cmF0aW9uTXMpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+
em9vbVRvKHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworCisgICAgbV9j
bGllbnQtPnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6ZHJhd0xheWVycygpCkBAIC0zNTEsNyArMzkxLDcgQEAgUGFzc093blB0cjxD
Q1Njcm9sbEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVs
dGFzKCkKIHsKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IGFk
b3B0UHRyKG5ldyBDQ1Njcm9sbEFuZFNjYWxlU2V0KCkpOwogICAgIGJvb2wgZGlkTW92ZSA9IG1f
c2Nyb2xsTGF5ZXJJbXBsICYmICghbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkuaXNa
ZXJvKCkgfHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxLjBmKTsKLSAgICBpZiAoIWRpZE1vdmUgfHwg
bV9waW5jaEdlc3R1cmVBY3RpdmUpIHsKKyAgICBpZiAoIWRpZE1vdmUgfHwgbV9waW5jaEdlc3R1
cmVBY3RpdmUgfHwgbV9wYWdlU2NhbGVBbmltYXRpb24pIHsKICAgICAgICAgbV9zZW50UGFnZVNj
YWxlRGVsdGEgPSBzY3JvbGxJbmZvLT5wYWdlU2NhbGVEZWx0YSA9IDE7CiAgICAgICAgIHJldHVy
biBzY3JvbGxJbmZvLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmgKaW5kZXggY2E0ZjcxYmQ4NmFhMzI5NDU0NWVmOTdiYWQ3YmJhMWRlNzk2YjdlYS4u
NjIyNDM1YjRmMGYxYTc0MjNlZjE3NjI1MzcyNjE3NmJlYzdiZjgxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBHckNvbnRleHQ7
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OworY2xhc3Mg
Q0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xMDgsNiArMTA5LDgg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBh
Z2VTY2FsZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIGZs
b2F0IHBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2b2lk
IHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBi
b29sIGFuY2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKwog
ICAgIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5n
czsgfQogCiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xs
RGVsdGFzKCk7CkBAIC0xMzgsNiArMTQxLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pblBh
Z2VTY2FsZSwgbV9tYXhQYWdlU2NhbGU7CiAKICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZl
OworCisgICAgT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlv
bjsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZGNkODM4N2IxMzJhOGU5NzMwZGMwYjgwYmJlY2I4MzY3NGY1MWUyZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGFnZVNjYWxlQW5pbWF0aW9uLmNwcApAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNj
L0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNs
dWRlICJGbG9hdFNpemUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3Qg
SW50U2l6ZSYgc2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXpl
JiB3aW5kb3dTaXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGlt
ZU1zKQorICAgIDogbV9zY3JvbGxTdGFydChzY3JvbGxTdGFydCkKKyAgICAsIG1fcGFnZVNjYWxl
U3RhcnQocGFnZVNjYWxlU3RhcnQpCisgICAgLCBtX3dpbmRvd1NpemUod2luZG93U2l6ZSkKKyAg
ICAsIG1fY29udGVudFNpemUoY29udGVudFNpemUpCisgICAgLCBtX2FuY2hvck1vZGUoZmFsc2Up
CisgICAgLCBtX3Njcm9sbEVuZChzY3JvbGxTdGFydCkKKyAgICAsIG1fcGFnZVNjYWxlRW5kKHBh
Z2VTY2FsZVN0YXJ0KQorICAgICwgbV9zdGFydFRpbWVNcyhzdGFydFRpbWVNcykKK3sKK30KKwor
dm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Ny
b2xsLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpCit7CisgICAgaWYg
KG1fcGFnZVNjYWxlU3RhcnQgIT0gZmluYWxQYWdlU2NhbGUpIHsKKyAgICAgICAgLy8gRm9yIHVu
aWZvcm0tbG9va2luZyB6b29taW5nLCBpbmZlciB0aGUgYW5jaG9yIChwb2ludCB0aGF0IHJlbWFp
bnMgaW4KKyAgICAgICAgLy8gcGxhY2UgdGhyb3VnaG91dCB0aGUgem9vbSkgZnJvbSB0aGUgc3Rh
cnQgYW5kIGVuZCByZWN0cy4KKyAgICAgICAgRmxvYXRSZWN0IHN0YXJ0UmVjdChJbnRQb2ludCht
X3Njcm9sbFN0YXJ0KSwgbV93aW5kb3dTaXplKTsKKyAgICAgICAgRmxvYXRSZWN0IGVuZFJlY3Qo
SW50UG9pbnQoZmluYWxTY3JvbGwpLCBtX3dpbmRvd1NpemUpOworICAgICAgICBlbmRSZWN0LnNj
YWxlKG1fcGFnZVNjYWxlU3RhcnQgLyBmaW5hbFBhZ2VTY2FsZSk7CisKKyAgICAgICAgLy8gVGhl
IGFuY2hvciBpcyB0aGUgcG9pbnQgd2hpY2ggaXMgYXQgdGhlIHNhbWUgcmF0aW8gb2YgdGhlIHNp
ZGVzIG9mCisgICAgICAgIC8vIGJvdGggc3RhcnRSZWN0IGFuZCBlbmRSZWN0LiBGb3IgZXhhbXBs
ZSwgYSB6b29tLWluIGRvdWJsZS10YXAgdG8gYQorICAgICAgICAvLyBwZXJmZWN0bHkgY2VudGVy
ZWQgcmVjdCB3aWxsIGhhdmUgYW5jaG9yIHJhdGlvcyAoMC41LCAwLjUpLCB3aGlsZSBvbmUKKyAg
ICAgICAgLy8gdG8gYSByZWN0IHRvdWNoaW5nIHRoZSBib3R0b20tcmlnaHQgb2YgdGhlIHNjcmVl
biB3aWxsIGhhdmUgYW5jaG9yCisgICAgICAgIC8vIHJhdGlvcyAoMS4wLCAxLjApLiBJbiBvdGhl
ciB3b3JkcywgaXQgb2JleXMgdGhlIGVxdWF0aW9uczoKKyAgICAgICAgLy8gYW5jaG9yWCA9IHN0
YXJ0X3dpZHRoICogcmF0aW9YICsgc3RhcnRfeAorICAgICAgICAvLyBhbmNob3JYID0gZW5kX3dp
ZHRoICogcmF0aW9YICsgZW5kX3gKKyAgICAgICAgLy8gYW5jaG9yWSA9IHN0YXJ0X2hlaWdodCAq
IHJhdGlvWSArIHN0YXJ0X3kKKyAgICAgICAgLy8gYW5jaG9yWSA9IGVuZF9oZWlnaHQgKiByYXRp
b1kgKyBlbmRfeQorICAgICAgICAvLyB3aGVyZSBib3RoIGFuY2hvcnt4LHl9IGFuZCByYXRpb3t4
LHl9IGJlZ2luIGFzIHVua25vd25zLiBTb2x2aW5nCisgICAgICAgIC8vIGZvciB0aGUgcmF0aW9z
LCB3ZSBnZXQgdGhlIGZvbGxvd2luZyBmb3JtdWxhczoKKyAgICAgICAgZmxvYXQgcmF0aW9YID0g
KHN0YXJ0UmVjdC54KCkgLSBlbmRSZWN0LngoKSkgLyAoZW5kUmVjdC53aWR0aCgpIC0gc3RhcnRS
ZWN0LndpZHRoKCkpOworICAgICAgICBmbG9hdCByYXRpb1kgPSAoc3RhcnRSZWN0LnkoKSAtIGVu
ZFJlY3QueSgpKSAvIChlbmRSZWN0LmhlaWdodCgpIC0gc3RhcnRSZWN0LmhlaWdodCgpKTsKKwor
ICAgICAgICBJbnRTaXplIGFuY2hvcihtX3dpbmRvd1NpemUud2lkdGgoKSAqIHJhdGlvWCwgbV93
aW5kb3dTaXplLmhlaWdodCgpICogcmF0aW9ZKTsKKyAgICAgICAgem9vbVdpdGhBbmNob3IoYW5j
aG9yLCBmaW5hbFBhZ2VTY2FsZSwgZHVyYXRpb25Ncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gSWYgdGhpcyBpcyBhIHB1cmUgdHJhbnNsYXRpb24sIHRoZW4gdGhlcmUgZXhpc3RzIG5vIGFu
Y2hvci4gTGluZWFybHkKKyAgICAgICAgLy8gaW50ZXJwb2xhdGUgdGhlIHNjcm9sbCBvZmZzZXQg
aW5zdGVhZC4KKyAgICAgICAgbV9zY3JvbGxFbmQgPSBmaW5hbFNjcm9sbDsKKyAgICAgICAgbV9w
YWdlU2NhbGVFbmQgPSBmaW5hbFBhZ2VTY2FsZTsKKyAgICAgICAgbV9kdXJhdGlvbk1zID0gZHVy
YXRpb25NczsKKyAgICAgICAgbV9hbmNob3JNb2RlID0gZmFsc2U7CisgICAgfQorfQorCit2b2lk
IENDUGFnZVNjYWxlQW5pbWF0aW9uOjp6b29tV2l0aEFuY2hvcihjb25zdCBJbnRTaXplJiBhbmNo
b3IsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3sKKyAgICBtX3Nj
cm9sbEVuZCA9IG1fc2Nyb2xsU3RhcnQgKyBhbmNob3I7CisgICAgbV9zY3JvbGxFbmQuc2NhbGUo
ZmluYWxQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKKyAgICBtX3Njcm9sbEVuZCAtPSBh
bmNob3I7CisKKyAgICBtX3Njcm9sbEVuZC5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CisgICAgRmxv
YXRTaXplIHNjYWxlZENvbnRlbnRTaXplKG1fY29udGVudFNpemUpOworICAgIHNjYWxlZENvbnRl
bnRTaXplLnNjYWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7CisgICAgSW50
U2l6ZSBtYXhTY3JvbGxQb3NpdGlvbiA9IHJvdW5kZWRJbnRTaXplKHNjYWxlZENvbnRlbnRTaXpl
IC0gbV93aW5kb3dTaXplKTsKKyAgICBtX3Njcm9sbEVuZCA9IG1fc2Nyb2xsRW5kLnNocnVua1Rv
KG1heFNjcm9sbFBvc2l0aW9uKTsKKworICAgIG1fYW5jaG9yID0gYW5jaG9yOworICAgIG1fcGFn
ZVNjYWxlRW5kID0gZmluYWxQYWdlU2NhbGU7CisgICAgbV9kdXJhdGlvbk1zID0gZHVyYXRpb25N
czsKKyAgICBtX2FuY2hvck1vZGUgPSB0cnVlOworfQorCitJbnRTaXplIENDUGFnZVNjYWxlQW5p
bWF0aW9uOjpzY3JvbGxPZmZzZXRBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc2Nyb2xsT2Zmc2V0QXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsK
K30KKworZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0VGltZShkb3VibGUg
dGltZU1zKSBjb25zdAoreworICAgIHJldHVybiBwYWdlU2NhbGVBdFJhdGlvKHByb2dyZXNzUmF0
aW9Gb3JUaW1lKHRpbWVNcykpOworfQorCitib29sIENDUGFnZVNjYWxlQW5pbWF0aW9uOjppc0Fu
aW1hdGlvbkNvbXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRpbWVNcyA+PSBlbmRUaW1lTXMoKTsKK30KKworZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246
OnByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0Cit7CisgICAgaWYgKGlz
QW5pbWF0aW9uQ29tcGxldGVBdFRpbWUodGltZU1zKSkKKyAgICAgICAgcmV0dXJuIDE7CisKKyAg
ICByZXR1cm4gKHRpbWVNcyAtIG1fc3RhcnRUaW1lTXMpIC8gbV9kdXJhdGlvbk1zOworfQorCitJ
bnRTaXplIENDUGFnZVNjYWxlQW5pbWF0aW9uOjpzY3JvbGxPZmZzZXRBdFJhdGlvKGZsb2F0IHJh
dGlvKSBjb25zdAoreworICAgIGlmIChyYXRpbyA8PSAwKQorICAgICAgICByZXR1cm4gbV9zY3Jv
bGxTdGFydDsKKyAgICBpZiAocmF0aW8gPj0gMSkKKyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsRW5k
OworCisgICAgZmxvYXQgY3VycmVudFBhZ2VTY2FsZSA9IHBhZ2VTY2FsZUF0UmF0aW8ocmF0aW8p
OworICAgIEludFNpemUgY3VycmVudFNjcm9sbE9mZnNldDsKKyAgICBpZiAobV9hbmNob3JNb2Rl
KSB7CisgICAgICAgIC8vIEtlZXAgdGhlIGFuY2hvciBzdGFibGUgb24gdGhlIHNjcmVlbiBhdCB0
aGUgY3VycmVudCBzY2FsZS4KKyAgICAgICAgSW50U2l6ZSBkb2N1bWVudEFuY2hvciA9IG1fc2Ny
b2xsU3RhcnQgKyBtX2FuY2hvcjsKKyAgICAgICAgZG9jdW1lbnRBbmNob3Iuc2NhbGUoY3VycmVu
dFBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlU3RhcnQpOworICAgICAgICBjdXJyZW50U2Nyb2xsT2Zm
c2V0ID0gZG9jdW1lbnRBbmNob3IgLSBtX2FuY2hvcjsKKyAgICB9IGVsc2UgeworICAgICAgICAv
LyBGaXJzdCBtb3ZlIGJvdGggc2Nyb2xsIG9mZnNldHMgdG8gdGhlIGN1cnJlbnQgY29vcmRpbmF0
ZSBzcGFjZS4KKyAgICAgICAgRmxvYXRTaXplIHNjYWxlZFN0YXJ0U2Nyb2xsKG1fc2Nyb2xsU3Rh
cnQpOworICAgICAgICBzY2FsZWRTdGFydFNjcm9sbC5zY2FsZShjdXJyZW50UGFnZVNjYWxlIC8g
bV9wYWdlU2NhbGVTdGFydCk7CisgICAgICAgIEZsb2F0U2l6ZSBzY2FsZWRFbmRTY3JvbGwobV9z
Y3JvbGxFbmQpOworICAgICAgICBzY2FsZWRFbmRTY3JvbGwuc2NhbGUoY3VycmVudFBhZ2VTY2Fs
ZSAvIG1fcGFnZVNjYWxlRW5kKTsKKworICAgICAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSBi
ZXR3ZWVuIHRoZW0uCisgICAgICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHNjYWxlZEVuZFNjcm9sbCAt
IHNjYWxlZFN0YXJ0U2Nyb2xsOworICAgICAgICBkZWx0YS5zY2FsZShyYXRpbyk7CisgICAgICAg
IGN1cnJlbnRTY3JvbGxPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShzY2FsZWRTdGFydFNjcm9sbCAr
IGRlbHRhKTsKKyAgICB9CisKKyAgICByZXR1cm4gY3VycmVudFNjcm9sbE9mZnNldDsKK30KKwor
ZmxvYXQgQ0NQYWdlU2NhbGVBbmltYXRpb246OnBhZ2VTY2FsZUF0UmF0aW8oZmxvYXQgcmF0aW8p
IGNvbnN0Cit7CisgICAgaWYgKHJhdGlvIDw9IDApCisgICAgICAgIHJldHVybiBtX3BhZ2VTY2Fs
ZVN0YXJ0OworICAgIGlmIChyYXRpbyA+PSAxKQorICAgICAgICByZXR1cm4gbV9wYWdlU2NhbGVF
bmQ7CisKKyAgICAvLyBMaW5lYXJseSBpbnRlcnBvbGF0ZSB0aGUgbWFnbml0dWRlIGluIGxvZyBz
Y2FsZS4KKyAgICAvLyBMb2cgc2NhbGUgaXMgbmVlZGVkIHRvIG1haW50YWluIHRoZSBhcHBlYXJh
bmNlIG9mIHVuaWZvcm0gem9vbS4gRm9yCisgICAgLy8gZXhhbXBsZSwgaWYgd2Ugem9vbSBmcm9t
IDAuNSB0byA0LjAgaW4gMyBzZWNvbmRzLCB0aGVuIHdlIHNob3VsZAorICAgIC8vIGJlIHpvb21p
bmcgYnkgMnggZXZlcnkgc2Vjb25kLgorICAgIGZsb2F0IGRpZmYgPSBtX3BhZ2VTY2FsZUVuZCAv
IG1fcGFnZVNjYWxlU3RhcnQ7CisgICAgZmxvYXQgbG9nRGlmZiA9IGxvZyhkaWZmKTsKKyAgICBs
b2dEaWZmICo9IHJhdGlvOworICAgIGRpZmYgPSBleHAobG9nRGlmZik7CisgICAgcmV0dXJuIG1f
cGFnZVNjYWxlU3RhcnQgKiBkaWZmOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43N2I2ODVkY2JlNDJl
NTQzMzM2YzBhMTliYTM5ODZiMzRhYzAyOThjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24u
aApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENDUGFnZVNjYWxlQW5p
bWF0aW9uX2gKKyNkZWZpbmUgQ0NQYWdlU2NhbGVBbmltYXRpb25faAorCisjaW5jbHVkZSAiSW50
U2l6ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgc21hbGwgaGVscGVyIGNsYXNz
IHRoYXQgZG9lcyB0aGUgbWF0aCBmb3Igem9vbSBhbmltYXRpb25zLCBwcmltYXJpbHkgZm9yCisv
LyBkb3VibGUtdGFwIHpvb20uIEluaXRpYWxpemUgaXQgd2l0aCBzdGFydGluZyBhbmQgZW5kaW5n
IHNjcm9sbC9wYWdlIHNjYWxlCisvLyBwb3NpdGlvbnMgYW5kIGFuIGFuaW1hdGlvbiBsZW5ndGgg
dGltZSwgdGhlbiBjYWxsIC4uLkF0VGltZSgpIGF0IGV2ZXJ5IGZyYW1lCisvLyB0byBvYnRhaW4g
dGhlIGN1cnJlbnQgaW50ZXJwb2xhdGVkIHBvc2l0aW9uLgorY2xhc3MgQ0NQYWdlU2NhbGVBbmlt
YXRpb24geworcHVibGljOgorICAgIC8vIENvbnN0cnVjdCB3aXRoIHRoZSBzdGFydGluZyBwYWdl
IHNjYWxlIGFuZCBzY3JvbGwgb2Zmc2V0ICh3aGljaCBpcyBpbgorICAgIC8vIHBhZ2VTY2FsZVN0
YXJ0IHNwYWNlKS4gVGhlIHdpbmRvdyBzaXplIGlzIHRoZSB1c2VyLXZpZXdhYmxlIGFyZWEKKyAg
ICAvLyBpbiBwaXhlbHMuCisgICAgQ0NQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgSW50U2l6ZSYg
c2Nyb2xsU3RhcnQsIGZsb2F0IHBhZ2VTY2FsZVN0YXJ0LCBjb25zdCBJbnRTaXplJiB3aW5kb3dT
aXplLCBjb25zdCBJbnRTaXplJiBjb250ZW50U2l6ZSwgZG91YmxlIHN0YXJ0VGltZU1zKTsKKwor
ICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbml0aWFsaXplIHRoZSBhbmltYXRpb24uIENh
bGwgb25lIG9mIHRoZW0KKyAgICAvLyBpbW1lZGlhdGVseSBhZnRlciBjb25zdHJ1Y3Rpb24gdG8g
c2V0IHRoZSBmaW5hbCBzY3JvbGwgYW5kIHBhZ2Ugc2NhbGUuCisKKyAgICAvLyBab29tIHdoaWxl
IGV4cGxpY2l0bHkgc3BlY2lmeWluZyB0aGUgdG9wLWxlZnQgc2Nyb2xsIHBvc2l0aW9uLiBUaGUK
KyAgICAvLyBzY3JvbGwgb2Zmc2V0IGlzIGluIGZpbmFsUGFnZVNjYWxlIGNvb3JkaW5hdGVzLgor
ICAgIHZvaWQgem9vbVRvKGNvbnN0IEludFNpemUmIGZpbmFsU2Nyb2xsLCBmbG9hdCBmaW5hbFBh
Z2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpOworCisgICAgLy8gWm9vbSBiYXNlZCBvbiBhIHNw
ZWNpZmllZCBvbnNjcmVlbiBhbmNob3IsIHdoaWNoIHdpbGwgcmVtYWluIGF0IHRoZSBzYW1lCisg
ICAgLy8gcG9zaXRpb24gb24gdGhlIHNjcmVlbiB0aHJvdWdob3V0IHRoZSBhbmltYXRpb24uIFRo
ZSBhbmNob3IgaXMgaW4gbG9jYWwKKyAgICAvLyBzcGFjZSByZWxhdGl2ZSB0byBzY3JvbGxTdGFy
dC4KKyAgICB2b2lkIHpvb21XaXRoQW5jaG9yKGNvbnN0IEludFNpemUmIGFuY2hvciwgZmxvYXQg
ZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKworICAgIC8vIENhbGwgdGhlc2Ug
ZnVuY3Rpb25zIHdoaWxlIHRoZSBhbmltYXRpb24gaXMgaW4gcHJvZ3Jlc3MgdG8gb3V0cHV0IHRo
ZQorICAgIC8vIGN1cnJlbnQgc3RhdGUuCisgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXRBdFRpbWUo
ZG91YmxlIHRpbWVNcykgY29uc3Q7CisgICAgZmxvYXQgcGFnZVNjYWxlQXRUaW1lKGRvdWJsZSB0
aW1lTXMpIGNvbnN0OworICAgIGJvb2wgaXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3VibGUg
dGltZU1zKSBjb25zdDsKKworICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyByZXR1cm4gc3Rh
dGUgd2hpY2ggaXMgaW52YXJpYW50IHRocm91Z2hvdXQgdGhlCisgICAgLy8gY291cnNlIG9mIHRo
ZSBhbmltYXRpb24uCisgICAgZG91YmxlIHN0YXJ0VGltZU1zKCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydFRpbWVNczsgfQorICAgIGRvdWJsZSBkdXJhdGlvbk1zKCkgY29uc3QgeyByZXR1cm4gbV9k
dXJhdGlvbk1zOyB9CisgICAgZG91YmxlIGVuZFRpbWVNcygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnRUaW1lTXMgKyBtX2R1cmF0aW9uTXM7IH0KKyAgICBjb25zdCBJbnRTaXplJiBmaW5hbFNjcm9s
bE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsRW5kOyB9CisgICAgZmxvYXQgZmluYWxQ
YWdlU2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTY2FsZUVuZDsgfQorCitwcml2YXRlOgor
ICAgIGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OworICAg
IEludFNpemUgc2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3Q7CisgICAgZmxv
YXQgcGFnZVNjYWxlQXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3Q7CisKKyAgICBJbnRTaXplIG1f
c2Nyb2xsU3RhcnQ7CisgICAgZmxvYXQgbV9wYWdlU2NhbGVTdGFydDsKKyAgICBJbnRTaXplIG1f
d2luZG93U2l6ZTsKKyAgICBJbnRTaXplIG1fY29udGVudFNpemU7CisKKyAgICBib29sIG1fYW5j
aG9yTW9kZTsKKyAgICBJbnRTaXplIG1fYW5jaG9yOworICAgIEludFNpemUgbV9zY3JvbGxFbmQ7
CisgICAgZmxvYXQgbV9wYWdlU2NhbGVFbmQ7CisKKyAgICBkb3VibGUgbV9zdGFydFRpbWVNczsK
KyAgICBkb3VibGUgbV9kdXJhdGlvbk1zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118184</attachid>
            <date>2011-12-07 01:24:05 -0800</date>
            <delta_ts>2011-12-07 20:35:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72996-20111207012404.patch</filename>
            <type>text/plain</type>
            <size>21855</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxMTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVhNDY1M2ZlOTA1YWFj
NjhmNzI3NTc2OGJkM2M4ZTYzMDM2NmRhMy4uZDRlNTg2ZThmM2JkMTg5MmRhZDJjOTExYTkyMjVm
Yjg4NWNhMjNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTIyICBBbGV4
YW5kcmUgRWxpYXMgIDxhZWxpYXNAZ29vZ2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEFk
ZCBwYWdlLXNjYWxlIGFuaW1hdGlvbiBzdXBwb3J0IHRvIEltcGwgdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mjk5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBhIG5ldyBtYXRo
IGhlbHBlciBjbGFzcyB0byBjb21wdXRlIHRoZSBwcm9ncmVzcyBvZiB0aGUKKyAgICAgICAgYW5p
bWF0aW9uLCBhbmQgY29kZSBpbiB0aGUgQ0NMYXllclRyZWVIb3N0SW1wbCB0byBhcHBseSB0aGUg
YW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGJ5IGZyYW1lLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cy4gKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTUyOSBmaWxlZC4p
CisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0SW1wbDo6c3RhcnRQYWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6cHJvY2Vzc1Njcm9sbERlbHRhcyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9u
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6Q0NQ
YWdlU2NhbGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRp
b246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246
Onpvb21Ubyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdp
dGhBbmNob3IpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21F
bHNld2hlcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OnNjcm9s
bE9mZnNldEF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
cGFnZVNjYWxlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9u
Ojppc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNj
YWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRSYXRpbyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6cGFnZVNjYWxlQXRSYXRpbyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c3RhcnRUaW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUGFnZVNjYWxlQW5pbWF0aW9uOjpkdXJhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZW5kVGltZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6ZmluYWxTY3JvbGxPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQYWdlU2NhbGVBbmltYXRpb246OmZpbmFsUGFnZVNjYWxlKToKKwogMjAx
MS0xMS0yNCAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9k
YXRhOiBTdXBwb3J0IGZvciBwcm9wZXJ0aWVzIGF0dHJpYnV0ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggNTJiYWY5MDg5MGM0M2VlOTNiNzVhNTliYzg2MDNjODcxZjBkZDAyNS4uMmYx
MmVlNzE5YWM4NWE4YWJmM2FjYjllZGRmZThmYWRiZjM5OGUxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0xMS0yMiAgQWxleGFuZHJlIEVsaWFzICA8
YWVsaWFzQGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgcGFnZS1zY2FsZSBh
bmltYXRpb24gc3VwcG9ydCB0byBJbXBsIHRocmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFkZHMgYSBuZXcgbWF0aCBoZWxwZXIgY2xhc3Mg
dG8gY29tcHV0ZSB0aGUgcHJvZ3Jlc3Mgb2YgdGhlCisgICAgICAgIGFuaW1hdGlvbiwgYW5kIGNv
ZGUgaW4gdGhlIENDTGF5ZXJUcmVlSG9zdEltcGwgdG8gYXBwbHkgdGhlIGFuaW1hdGlvbgorICAg
ICAgICBmcmFtZSBieSBmcmFtZS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1MjkgZmlsZWQuKQorCisgICAgICAgICog
cHVibGljL1dlYkNvbXBvc2l0b3IuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlU2NhbGVBbmltYXRpb25FdmVudDo6V2ViUGFnZVNj
YWxlQW5pbWF0aW9uRXZlbnQpOgorICAgICAgICAqIHB1YmxpYy9hbmRyb2lkL1dlYklucHV0RXZl
bnRGYWN0b3J5Lmg6CisgICAgICAgICogc3JjL1dlYkNvbXBvc2l0b3JJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvckltcGw6OmhhbmRsZVBhZ2VTY2FsZUFuaW1hdGlvbkV2
ZW50KToKKyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvckltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViUG9wdXBNZW51SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudUltcGw6
OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9hbmRyb2lkL1dlYklucHV0RXZlbnRG
YWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5wdXRFdmVudEZhY3Rvcnk6OnBhZ2VT
Y2FsZUFuaW1hdGlvbkV2ZW50KToKKwogMjAxMS0xMS0yNCAgRmFkeSBTYW11ZWwgIDxmc2FtdWVs
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZWQgb2Jzb2xldGUgdG91
Y2h1aSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZDcyNzE1MjRmODUzNmM3NGExYThjNmE5YjJj
YzgzYTAwMjg2YjIzYi4uYWRlZGQ4Mjk3OWZiYmNiNWMyZGZhYjlkOGE4NGQzYzliNjgzYmRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzU4Niw2ICszNTg2LDggQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCcsCiAgICAgICAgICAg
ICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NQYWdlU2NhbGVBbmltYXRpb24uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BsdWdpbkxheWVySW1wbC5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGx1Z2luTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0lucHV0SGFuZGxlci5oCmluZGV4IGZhY2JiZTVjZmFiZGZkMDhlNjU5NTky
Y2ZmMWJjYzQ1M2VjZDdkMTIuLjBiMjcwNDFiMTM2NTMwM2VmN2MzZWM0NWYyOGRhNTNlN2JlMGE5
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDSW5wdXRIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NJbnB1dEhhbmRsZXIuaApAQCAtNTEsNiArNTEsMTEgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBwaW5jaEdlc3R1cmVVcGRhdGUoZmxvYXQgbWFnbmlmeURlbHRh
LCBjb25zdCBJbnRQb2ludCYgYW5jaG9yKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBpbmNoR2Vz
dHVyZUVuZCgpID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlv
bihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBhbmNob3JQb2ludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGFnZVNjYWxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZHVyYXRpb25NcykgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIH5DQ0lucHV0
SGFuZGxlckNsaWVudCgpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAppbmRleCA4Y2ZiZDMwN2EwNTA5NDBjZjZiMDg3MTRkYzU4MjVmZGY4YWE5MzE2Li40Nzg1Nzk0
ZGViOTM1ZDcyMTgxMzcxNmRmYjhmZGU5OGYwNzQ4YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkxheWVyUmVu
ZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3QuaCIKKyNpbmNsdWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgog
I2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogCkBAIC04NCw2ICs4NSw0NSBAQCBHcmFwaGljc0NvbnRleHQzRCogQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y29udGV4dCgpCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6YW5pbWF0ZShkb3Vi
bGUgZnJhbWVCZWdpblRpbWVNcykKIHsKKyAgICBpZiAoIW1fcGFnZVNjYWxlQW5pbWF0aW9uKQor
ICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9TaXplKG1fc2Ny
b2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllckltcGwtPnNjcm9s
bERlbHRhKCkpOworCisgICAgc2V0UGFnZVNjYWxlRGVsdGEobV9wYWdlU2NhbGVBbmltYXRpb24t
PnBhZ2VTY2FsZUF0VGltZShmcmFtZUJlZ2luVGltZU1zKSAvIG1fcGFnZVNjYWxlKTsKKyAgICBJ
bnRTaXplIG5leHRTY3JvbGwgPSBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+c2Nyb2xsT2Zmc2V0QXRU
aW1lKGZyYW1lQmVnaW5UaW1lTXMpOworICAgIG5leHRTY3JvbGwuc2NhbGUoMSAvIG1fcGFnZVNj
YWxlRGVsdGEpOworICAgIG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxCeShuZXh0U2Nyb2xsIC0g
c2Nyb2xsVG90YWwpOworICAgIG1fY2xpZW50LT5zZXROZWVkc1JlZHJhd09uSW1wbFRocmVhZCgp
OworCisgICAgaWYgKG1fcGFnZVNjYWxlQW5pbWF0aW9uLT5pc0FuaW1hdGlvbkNvbXBsZXRlQXRU
aW1lKGZyYW1lQmVnaW5UaW1lTXMpKSB7CisgICAgICAgIG1fcGFnZVNjYWxlQW5pbWF0aW9uLmNs
ZWFyKCk7CisgICAgICAgIG1fY2xpZW50LT5zZXROZWVkc0NvbW1pdE9uSW1wbFRocmVhZCgpOwor
ICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzdGFydFBhZ2VTY2FsZUFuaW1h
dGlvbihjb25zdCBJbnRTaXplJiB0YXJnZXRQb3NpdGlvbiwgYm9vbCBhbmNob3JQb2ludCwgZmxv
YXQgcGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25NcykKK3sKKyAgICBpZiAoIW1fc2Nyb2xsTGF5
ZXJJbXBsKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNjcm9sbFRvdGFsID0gdG9T
aXplKG1fc2Nyb2xsTGF5ZXJJbXBsLT5zY3JvbGxQb3NpdGlvbigpICsgbV9zY3JvbGxMYXllcklt
cGwtPnNjcm9sbERlbHRhKCkpOworICAgIHNjcm9sbFRvdGFsLnNjYWxlKG1fcGFnZVNjYWxlRGVs
dGEpOworICAgIGZsb2F0IHNjYWxlVG90YWwgPSBtX3BhZ2VTY2FsZSAqIG1fcGFnZVNjYWxlRGVs
dGE7CisgICAgSW50U2l6ZSBzY2FsZWRDb250ZW50U2l6ZSA9IG1fc2Nyb2xsTGF5ZXJJbXBsLT5j
aGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CisgICAgc2NhbGVkQ29udGVudFNpemUuc2Nh
bGUobV9wYWdlU2NhbGVEZWx0YSk7CisKKyAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbiA9IENDUGFn
ZVNjYWxlQW5pbWF0aW9uOjpjcmVhdGUoc2Nyb2xsVG90YWwsIHNjYWxlVG90YWwsIG1fdmlld3Bv
cnRTaXplLCBzY2FsZWRDb250ZW50U2l6ZSwgY3VycmVudFRpbWVNcygpKTsKKworICAgIGlmIChh
bmNob3JQb2ludCkgeworICAgICAgICBJbnRTaXplIHdpbmRvd0FuY2hvcih0YXJnZXRQb3NpdGlv
bik7CisgICAgICAgIHdpbmRvd0FuY2hvci5zY2FsZShzY2FsZVRvdGFsIC8gcGFnZVNjYWxlKTsK
KyAgICAgICAgd2luZG93QW5jaG9yIC09IHNjcm9sbFRvdGFsOworICAgICAgICBtX3BhZ2VTY2Fs
ZUFuaW1hdGlvbi0+em9vbVdpdGhBbmNob3Iod2luZG93QW5jaG9yLCBwYWdlU2NhbGUsIGR1cmF0
aW9uTXMpOworICAgIH0gZWxzZQorICAgICAgICBtX3BhZ2VTY2FsZUFuaW1hdGlvbi0+em9vbVRv
KHRhcmdldFBvc2l0aW9uLCBwYWdlU2NhbGUsIGR1cmF0aW9uTXMpOworCisgICAgbV9jbGllbnQt
PnNldE5lZWRzUmVkcmF3T25JbXBsVGhyZWFkKCk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6ZHJhd0xheWVycygpCkBAIC0zNTEsNyArMzkxLDcgQEAgUGFzc093blB0cjxDQ1Njcm9s
bEFuZFNjYWxlU2V0PiBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcm9jZXNzU2Nyb2xsRGVsdGFzKCkK
IHsKICAgICBPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4gc2Nyb2xsSW5mbyA9IGFkb3B0UHRy
KG5ldyBDQ1Njcm9sbEFuZFNjYWxlU2V0KCkpOwogICAgIGJvb2wgZGlkTW92ZSA9IG1fc2Nyb2xs
TGF5ZXJJbXBsICYmICghbV9zY3JvbGxMYXllckltcGwtPnNjcm9sbERlbHRhKCkuaXNaZXJvKCkg
fHwgbV9wYWdlU2NhbGVEZWx0YSAhPSAxLjBmKTsKLSAgICBpZiAoIWRpZE1vdmUgfHwgbV9waW5j
aEdlc3R1cmVBY3RpdmUpIHsKKyAgICBpZiAoIWRpZE1vdmUgfHwgbV9waW5jaEdlc3R1cmVBY3Rp
dmUgfHwgbV9wYWdlU2NhbGVBbmltYXRpb24pIHsKICAgICAgICAgbV9zZW50UGFnZVNjYWxlRGVs
dGEgPSBzY3JvbGxJbmZvLT5wYWdlU2NhbGVEZWx0YSA9IDE7CiAgICAgICAgIHJldHVybiBzY3Jv
bGxJbmZvLnJlbGVhc2UoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgKaW5kZXggY2E0ZjcxYmQ4NmFhMzI5NDU0NWVmOTdiYWQ3YmJhMWRlNzk2YjdlYS4uNjIyNDM1
YjRmMGYxYTc0MjNlZjE3NjI1MzcyNjE3NmJlYzdiZjgxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdEltcGwuaApAQCAtMzcsNiArMzcsNyBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50OworY2xhc3MgQ0NQYWdl
U2NhbGVBbmltYXRpb247CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIExheWVyUmVuZGVyZXJD
aHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xMDgsNiArMTA5LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UGFnZVNjYWxlRmFjdG9yQW5kTGltaXRzKGZsb2F0IHBhZ2VTY2Fs
ZSwgZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUpOwogICAgIGZsb2F0IHBh
Z2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxlOyB9CiAKKyAgICB2b2lkIHN0YXJ0
UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHRhcmdldFBvc2l0aW9uLCBib29sIGFu
Y2hvclBvaW50LCBmbG9hdCBwYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvbk1zKTsKKwogICAgIGNv
bnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQog
CiAgICAgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBwcm9jZXNzU2Nyb2xsRGVsdGFz
KCk7CkBAIC0xMzgsNiArMTQxLDggQEAgcHJpdmF0ZToKICAgICBmbG9hdCBtX21pblBhZ2VTY2Fs
ZSwgbV9tYXhQYWdlU2NhbGU7CiAKICAgICBib29sIG1fcGluY2hHZXN0dXJlQWN0aXZlOworCisg
ICAgT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBtX3BhZ2VTY2FsZUFuaW1hdGlvbjsKIH07
CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzNiNmYyMmZiZWRmNTNlMWJhNGI2Mjk0NDkxNDg3ZjYwOGFkNTA4YgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmNwcApAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBUb3JjaCBNb2JpbGUgKEJlaWppbmcpIENvLiBMdGQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgImNjL0NDUGFn
ZVNjYWxlQW5pbWF0aW9uLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNpbmNsdWRlICJG
bG9hdFNpemUuaCIKKworI2luY2x1ZGUgPG1hdGguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2NhbGVTdGFydCwg
Y29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUsIGRv
dWJsZSBzdGFydFRpbWVNcykKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUGFnZVNjYWxl
QW5pbWF0aW9uKHNjcm9sbFN0YXJ0LCBwYWdlU2NhbGVTdGFydCwgd2luZG93U2l6ZSwgY29udGVu
dFNpemUsIHN0YXJ0VGltZU1zKSk7Cit9CisKKworQ0NQYWdlU2NhbGVBbmltYXRpb246OkNDUGFn
ZVNjYWxlQW5pbWF0aW9uKGNvbnN0IEludFNpemUmIHNjcm9sbFN0YXJ0LCBmbG9hdCBwYWdlU2Nh
bGVTdGFydCwgY29uc3QgSW50U2l6ZSYgd2luZG93U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVu
dFNpemUsIGRvdWJsZSBzdGFydFRpbWVNcykKKyAgICA6IG1fc2Nyb2xsU3RhcnQoc2Nyb2xsU3Rh
cnQpCisgICAgLCBtX3BhZ2VTY2FsZVN0YXJ0KHBhZ2VTY2FsZVN0YXJ0KQorICAgICwgbV93aW5k
b3dTaXplKHdpbmRvd1NpemUpCisgICAgLCBtX2NvbnRlbnRTaXplKGNvbnRlbnRTaXplKQorICAg
ICwgbV9hbmNob3JNb2RlKGZhbHNlKQorICAgICwgbV9zY3JvbGxFbmQoc2Nyb2xsU3RhcnQpCisg
ICAgLCBtX3BhZ2VTY2FsZUVuZChwYWdlU2NhbGVTdGFydCkKKyAgICAsIG1fc3RhcnRUaW1lTXMo
c3RhcnRUaW1lTXMpCit7Cit9CisKK3ZvaWQgQ0NQYWdlU2NhbGVBbmltYXRpb246Onpvb21Ubyhj
b25zdCBJbnRTaXplJiBmaW5hbFNjcm9sbCwgZmxvYXQgZmluYWxQYWdlU2NhbGUsIGRvdWJsZSBk
dXJhdGlvbk1zKQoreworICAgIGlmIChtX3BhZ2VTY2FsZVN0YXJ0ICE9IGZpbmFsUGFnZVNjYWxl
KSB7CisgICAgICAgIC8vIEZvciB1bmlmb3JtLWxvb2tpbmcgem9vbWluZywgaW5mZXIgdGhlIGFu
Y2hvciAocG9pbnQgdGhhdCByZW1haW5zIGluCisgICAgICAgIC8vIHBsYWNlIHRocm91Z2hvdXQg
dGhlIHpvb20pIGZyb20gdGhlIHN0YXJ0IGFuZCBlbmQgcmVjdHMuCisgICAgICAgIEZsb2F0UmVj
dCBzdGFydFJlY3QoSW50UG9pbnQobV9zY3JvbGxTdGFydCksIG1fd2luZG93U2l6ZSk7CisgICAg
ICAgIEZsb2F0UmVjdCBlbmRSZWN0KEludFBvaW50KGZpbmFsU2Nyb2xsKSwgbV93aW5kb3dTaXpl
KTsKKyAgICAgICAgZW5kUmVjdC5zY2FsZShtX3BhZ2VTY2FsZVN0YXJ0IC8gZmluYWxQYWdlU2Nh
bGUpOworCisgICAgICAgIC8vIFRoZSBhbmNob3IgaXMgdGhlIHBvaW50IHdoaWNoIGlzIGF0IHRo
ZSBzYW1lIHJhdGlvIG9mIHRoZSBzaWRlcyBvZgorICAgICAgICAvLyBib3RoIHN0YXJ0UmVjdCBh
bmQgZW5kUmVjdC4gRm9yIGV4YW1wbGUsIGEgem9vbS1pbiBkb3VibGUtdGFwIHRvIGEKKyAgICAg
ICAgLy8gcGVyZmVjdGx5IGNlbnRlcmVkIHJlY3Qgd2lsbCBoYXZlIGFuY2hvciByYXRpb3MgKDAu
NSwgMC41KSwgd2hpbGUgb25lCisgICAgICAgIC8vIHRvIGEgcmVjdCB0b3VjaGluZyB0aGUgYm90
dG9tLXJpZ2h0IG9mIHRoZSBzY3JlZW4gd2lsbCBoYXZlIGFuY2hvcgorICAgICAgICAvLyByYXRp
b3MgKDEuMCwgMS4wKS4gSW4gb3RoZXIgd29yZHMsIGl0IG9iZXlzIHRoZSBlcXVhdGlvbnM6Cisg
ICAgICAgIC8vIGFuY2hvclggPSBzdGFydF93aWR0aCAqIHJhdGlvWCArIHN0YXJ0X3gKKyAgICAg
ICAgLy8gYW5jaG9yWCA9IGVuZF93aWR0aCAqIHJhdGlvWCArIGVuZF94CisgICAgICAgIC8vIGFu
Y2hvclkgPSBzdGFydF9oZWlnaHQgKiByYXRpb1kgKyBzdGFydF95CisgICAgICAgIC8vIGFuY2hv
clkgPSBlbmRfaGVpZ2h0ICogcmF0aW9ZICsgZW5kX3kKKyAgICAgICAgLy8gd2hlcmUgYm90aCBh
bmNob3J7eCx5fSBhbmQgcmF0aW97eCx5fSBiZWdpbiBhcyB1bmtub3ducy4gU29sdmluZworICAg
ICAgICAvLyBmb3IgdGhlIHJhdGlvcywgd2UgZ2V0IHRoZSBmb2xsb3dpbmcgZm9ybXVsYXM6Cisg
ICAgICAgIGZsb2F0IHJhdGlvWCA9IChzdGFydFJlY3QueCgpIC0gZW5kUmVjdC54KCkpIC8gKGVu
ZFJlY3Qud2lkdGgoKSAtIHN0YXJ0UmVjdC53aWR0aCgpKTsKKyAgICAgICAgZmxvYXQgcmF0aW9Z
ID0gKHN0YXJ0UmVjdC55KCkgLSBlbmRSZWN0LnkoKSkgLyAoZW5kUmVjdC5oZWlnaHQoKSAtIHN0
YXJ0UmVjdC5oZWlnaHQoKSk7CisKKyAgICAgICAgSW50U2l6ZSBhbmNob3IobV93aW5kb3dTaXpl
LndpZHRoKCkgKiByYXRpb1gsIG1fd2luZG93U2l6ZS5oZWlnaHQoKSAqIHJhdGlvWSk7CisgICAg
ICAgIHpvb21XaXRoQW5jaG9yKGFuY2hvciwgZmluYWxQYWdlU2NhbGUsIGR1cmF0aW9uTXMpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIElmIHRoaXMgaXMgYSBwdXJlIHRyYW5zbGF0aW9uLCB0
aGVuIHRoZXJlIGV4aXN0cyBubyBhbmNob3IuIExpbmVhcmx5CisgICAgICAgIC8vIGludGVycG9s
YXRlIHRoZSBzY3JvbGwgb2Zmc2V0IGluc3RlYWQuCisgICAgICAgIG1fc2Nyb2xsRW5kID0gZmlu
YWxTY3JvbGw7CisgICAgICAgIG1fcGFnZVNjYWxlRW5kID0gZmluYWxQYWdlU2NhbGU7CisgICAg
ICAgIG1fZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7CisgICAgICAgIG1fYW5jaG9yTW9kZSA9IGZh
bHNlOworICAgIH0KK30KKwordm9pZCBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6em9vbVdpdGhBbmNo
b3IoY29uc3QgSW50U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1
cmF0aW9uTXMpCit7CisgICAgbV9zY3JvbGxFbmQgPSBtX3Njcm9sbFN0YXJ0ICsgYW5jaG9yOwor
ICAgIG1fc2Nyb2xsRW5kLnNjYWxlKGZpbmFsUGFnZVNjYWxlIC8gbV9wYWdlU2NhbGVTdGFydCk7
CisgICAgbV9zY3JvbGxFbmQgLT0gYW5jaG9yOworCisgICAgbV9zY3JvbGxFbmQuY2xhbXBOZWdh
dGl2ZVRvWmVybygpOworICAgIEZsb2F0U2l6ZSBzY2FsZWRDb250ZW50U2l6ZShtX2NvbnRlbnRT
aXplKTsKKyAgICBzY2FsZWRDb250ZW50U2l6ZS5zY2FsZShmaW5hbFBhZ2VTY2FsZSAvIG1fcGFn
ZVNjYWxlU3RhcnQpOworICAgIEludFNpemUgbWF4U2Nyb2xsUG9zaXRpb24gPSByb3VuZGVkSW50
U2l6ZShzY2FsZWRDb250ZW50U2l6ZSAtIG1fd2luZG93U2l6ZSk7CisgICAgbV9zY3JvbGxFbmQg
PSBtX3Njcm9sbEVuZC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlvbik7CisKKyAgICBtX2FuY2hv
ciA9IGFuY2hvcjsKKyAgICBtX3BhZ2VTY2FsZUVuZCA9IGZpbmFsUGFnZVNjYWxlOworICAgIG1f
ZHVyYXRpb25NcyA9IGR1cmF0aW9uTXM7CisgICAgbV9hbmNob3JNb2RlID0gdHJ1ZTsKK30KKwor
SW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xsT2Zmc2V0QXRUaW1lKGRvdWJsZSB0
aW1lTXMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjcm9sbE9mZnNldEF0UmF0aW8ocHJvZ3Jlc3NS
YXRpb0ZvclRpbWUodGltZU1zKSk7Cit9CisKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpw
YWdlU2NhbGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3QKK3sKKyAgICByZXR1cm4gcGFnZVNj
YWxlQXRSYXRpbyhwcm9ncmVzc1JhdGlvRm9yVGltZSh0aW1lTXMpKTsKK30KKworYm9vbCBDQ1Bh
Z2VTY2FsZUFuaW1hdGlvbjo6aXNBbmltYXRpb25Db21wbGV0ZUF0VGltZShkb3VibGUgdGltZU1z
KSBjb25zdAoreworICAgIHJldHVybiB0aW1lTXMgPj0gZW5kVGltZU1zKCk7Cit9CisKK2Zsb2F0
IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwcm9ncmVzc1JhdGlvRm9yVGltZShkb3VibGUgdGltZU1z
KSBjb25zdAoreworICAgIGlmIChpc0FuaW1hdGlvbkNvbXBsZXRlQXRUaW1lKHRpbWVNcykpCisg
ICAgICAgIHJldHVybiAxOworCisgICAgcmV0dXJuICh0aW1lTXMgLSBtX3N0YXJ0VGltZU1zKSAv
IG1fZHVyYXRpb25NczsKK30KKworSW50U2l6ZSBDQ1BhZ2VTY2FsZUFuaW1hdGlvbjo6c2Nyb2xs
T2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3QKK3sKKyAgICBpZiAocmF0aW8gPD0gMCkK
KyAgICAgICAgcmV0dXJuIG1fc2Nyb2xsU3RhcnQ7CisgICAgaWYgKHJhdGlvID49IDEpCisgICAg
ICAgIHJldHVybiBtX3Njcm9sbEVuZDsKKworICAgIGZsb2F0IGN1cnJlbnRQYWdlU2NhbGUgPSBw
YWdlU2NhbGVBdFJhdGlvKHJhdGlvKTsKKyAgICBJbnRTaXplIGN1cnJlbnRTY3JvbGxPZmZzZXQ7
CisgICAgaWYgKG1fYW5jaG9yTW9kZSkgeworICAgICAgICAvLyBLZWVwIHRoZSBhbmNob3Igc3Rh
YmxlIG9uIHRoZSBzY3JlZW4gYXQgdGhlIGN1cnJlbnQgc2NhbGUuCisgICAgICAgIEludFNpemUg
ZG9jdW1lbnRBbmNob3IgPSBtX3Njcm9sbFN0YXJ0ICsgbV9hbmNob3I7CisgICAgICAgIGRvY3Vt
ZW50QW5jaG9yLnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZVN0YXJ0KTsKKyAg
ICAgICAgY3VycmVudFNjcm9sbE9mZnNldCA9IGRvY3VtZW50QW5jaG9yIC0gbV9hbmNob3I7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRmlyc3QgbW92ZSBib3RoIHNjcm9sbCBvZmZzZXRzIHRv
IHRoZSBjdXJyZW50IGNvb3JkaW5hdGUgc3BhY2UuCisgICAgICAgIEZsb2F0U2l6ZSBzY2FsZWRT
dGFydFNjcm9sbChtX3Njcm9sbFN0YXJ0KTsKKyAgICAgICAgc2NhbGVkU3RhcnRTY3JvbGwuc2Nh
bGUoY3VycmVudFBhZ2VTY2FsZSAvIG1fcGFnZVNjYWxlU3RhcnQpOworICAgICAgICBGbG9hdFNp
emUgc2NhbGVkRW5kU2Nyb2xsKG1fc2Nyb2xsRW5kKTsKKyAgICAgICAgc2NhbGVkRW5kU2Nyb2xs
LnNjYWxlKGN1cnJlbnRQYWdlU2NhbGUgLyBtX3BhZ2VTY2FsZUVuZCk7CisKKyAgICAgICAgLy8g
TGluZWFybHkgaW50ZXJwb2xhdGUgYmV0d2VlbiB0aGVtLgorICAgICAgICBGbG9hdFNpemUgZGVs
dGEgPSBzY2FsZWRFbmRTY3JvbGwgLSBzY2FsZWRTdGFydFNjcm9sbDsKKyAgICAgICAgZGVsdGEu
c2NhbGUocmF0aW8pOworICAgICAgICBjdXJyZW50U2Nyb2xsT2Zmc2V0ID0gcm91bmRlZEludFNp
emUoc2NhbGVkU3RhcnRTY3JvbGwgKyBkZWx0YSk7CisgICAgfQorCisgICAgcmV0dXJuIGN1cnJl
bnRTY3JvbGxPZmZzZXQ7Cit9CisKK2Zsb2F0IENDUGFnZVNjYWxlQW5pbWF0aW9uOjpwYWdlU2Nh
bGVBdFJhdGlvKGZsb2F0IHJhdGlvKSBjb25zdAoreworICAgIGlmIChyYXRpbyA8PSAwKQorICAg
ICAgICByZXR1cm4gbV9wYWdlU2NhbGVTdGFydDsKKyAgICBpZiAocmF0aW8gPj0gMSkKKyAgICAg
ICAgcmV0dXJuIG1fcGFnZVNjYWxlRW5kOworCisgICAgLy8gTGluZWFybHkgaW50ZXJwb2xhdGUg
dGhlIG1hZ25pdHVkZSBpbiBsb2cgc2NhbGUuCisgICAgLy8gTG9nIHNjYWxlIGlzIG5lZWRlZCB0
byBtYWludGFpbiB0aGUgYXBwZWFyYW5jZSBvZiB1bmlmb3JtIHpvb20uIEZvcgorICAgIC8vIGV4
YW1wbGUsIGlmIHdlIHpvb20gZnJvbSAwLjUgdG8gNC4wIGluIDMgc2Vjb25kcywgdGhlbiB3ZSBz
aG91bGQKKyAgICAvLyBiZSB6b29taW5nIGJ5IDJ4IGV2ZXJ5IHNlY29uZC4KKyAgICBmbG9hdCBk
aWZmID0gbV9wYWdlU2NhbGVFbmQgLyBtX3BhZ2VTY2FsZVN0YXJ0OworICAgIGZsb2F0IGxvZ0Rp
ZmYgPSBsb2coZGlmZik7CisgICAgbG9nRGlmZiAqPSByYXRpbzsKKyAgICBkaWZmID0gZXhwKGxv
Z0RpZmYpOworICAgIHJldHVybiBtX3BhZ2VTY2FsZVN0YXJ0ICogZGlmZjsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjRiMWJmNDdhOWE5NzY3OGMzNmVmNjJhYmNiNGNkZTA1Yzg0ZGU4OQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBDQ1BhZ2VTY2FsZUFuaW1hdGlvbl9oCisjZGVmaW5lIENDUGFnZVNjYWxlQW5pbWF0
aW9uX2gKKworI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEEgc21hbGwgaGVscGVyIGNsYXNzIHRoYXQg
ZG9lcyB0aGUgbWF0aCBmb3Igem9vbSBhbmltYXRpb25zLCBwcmltYXJpbHkgZm9yCisvLyBkb3Vi
bGUtdGFwIHpvb20uIEluaXRpYWxpemUgaXQgd2l0aCBzdGFydGluZyBhbmQgZW5kaW5nIHNjcm9s
bC9wYWdlIHNjYWxlCisvLyBwb3NpdGlvbnMgYW5kIGFuIGFuaW1hdGlvbiBsZW5ndGggdGltZSwg
dGhlbiBjYWxsIC4uLkF0VGltZSgpIGF0IGV2ZXJ5IGZyYW1lCisvLyB0byBvYnRhaW4gdGhlIGN1
cnJlbnQgaW50ZXJwb2xhdGVkIHBvc2l0aW9uLgorY2xhc3MgQ0NQYWdlU2NhbGVBbmltYXRpb24g
eworcHVibGljOgorICAgIC8vIENvbnN0cnVjdCB3aXRoIHRoZSBzdGFydGluZyBwYWdlIHNjYWxl
IGFuZCBzY3JvbGwgb2Zmc2V0ICh3aGljaCBpcyBpbgorICAgIC8vIHBhZ2VTY2FsZVN0YXJ0IHNw
YWNlKS4gVGhlIHdpbmRvdyBzaXplIGlzIHRoZSB1c2VyLXZpZXdhYmxlIGFyZWEKKyAgICAvLyBp
biBwaXhlbHMuCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NQYWdlU2NhbGVBbmltYXRpb24+IGNy
ZWF0ZShjb25zdCBJbnRTaXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNv
bnN0IEludFNpemUmIHdpbmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3Vi
bGUgc3RhcnRUaW1lTXMpOworCisgICAgLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGluaXRpYWxp
emUgdGhlIGFuaW1hdGlvbi4gQ2FsbCBvbmUgb2YgdGhlbQorICAgIC8vIGltbWVkaWF0ZWx5IGFm
dGVyIGNvbnN0cnVjdGlvbiB0byBzZXQgdGhlIGZpbmFsIHNjcm9sbCBhbmQgcGFnZSBzY2FsZS4K
KworICAgIC8vIFpvb20gd2hpbGUgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRoZSB0b3AtbGVmdCBz
Y3JvbGwgcG9zaXRpb24uIFRoZQorICAgIC8vIHNjcm9sbCBvZmZzZXQgaXMgaW4gZmluYWxQYWdl
U2NhbGUgY29vcmRpbmF0ZXMuCisgICAgdm9pZCB6b29tVG8oY29uc3QgSW50U2l6ZSYgZmluYWxT
Y3JvbGwsIGZsb2F0IGZpbmFsUGFnZVNjYWxlLCBkb3VibGUgZHVyYXRpb25Ncyk7CisKKyAgICAv
LyBab29tIGJhc2VkIG9uIGEgc3BlY2lmaWVkIG9uc2NyZWVuIGFuY2hvciwgd2hpY2ggd2lsbCBy
ZW1haW4gYXQgdGhlIHNhbWUKKyAgICAvLyBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuIHRocm91Z2hv
dXQgdGhlIGFuaW1hdGlvbi4gVGhlIGFuY2hvciBpcyBpbiBsb2NhbAorICAgIC8vIHNwYWNlIHJl
bGF0aXZlIHRvIHNjcm9sbFN0YXJ0LgorICAgIHZvaWQgem9vbVdpdGhBbmNob3IoY29uc3QgSW50
U2l6ZSYgYW5jaG9yLCBmbG9hdCBmaW5hbFBhZ2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uTXMpOwor
CisgICAgLy8gQ2FsbCB0aGVzZSBmdW5jdGlvbnMgd2hpbGUgdGhlIGFuaW1hdGlvbiBpcyBpbiBw
cm9ncmVzcyB0byBvdXRwdXQgdGhlCisgICAgLy8gY3VycmVudCBzdGF0ZS4KKyAgICBJbnRTaXpl
IHNjcm9sbE9mZnNldEF0VGltZShkb3VibGUgdGltZU1zKSBjb25zdDsKKyAgICBmbG9hdCBwYWdl
U2NhbGVBdFRpbWUoZG91YmxlIHRpbWVNcykgY29uc3Q7CisgICAgYm9vbCBpc0FuaW1hdGlvbkNv
bXBsZXRlQXRUaW1lKGRvdWJsZSB0aW1lTXMpIGNvbnN0OworCisgICAgLy8gVGhlIGZvbGxvd2lu
ZyBtZXRob2RzIHJldHVybiBzdGF0ZSB3aGljaCBpcyBpbnZhcmlhbnQgdGhyb3VnaG91dCB0aGUK
KyAgICAvLyBjb3Vyc2Ugb2YgdGhlIGFuaW1hdGlvbi4KKyAgICBkb3VibGUgc3RhcnRUaW1lTXMo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0VGltZU1zOyB9CisgICAgZG91YmxlIGR1cmF0aW9uTXMo
KSBjb25zdCB7IHJldHVybiBtX2R1cmF0aW9uTXM7IH0KKyAgICBkb3VibGUgZW5kVGltZU1zKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGFydFRpbWVNcyArIG1fZHVyYXRpb25NczsgfQorICAgIGNvbnN0
IEludFNpemUmIGZpbmFsU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxFbmQ7
IH0KKyAgICBmbG9hdCBmaW5hbFBhZ2VTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVNjYWxl
RW5kOyB9CisKK3Byb3RlY3RlZDoKKyAgICBDQ1BhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRT
aXplJiBzY3JvbGxTdGFydCwgZmxvYXQgcGFnZVNjYWxlU3RhcnQsIGNvbnN0IEludFNpemUmIHdp
bmRvd1NpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplLCBkb3VibGUgc3RhcnRUaW1lTXMp
OworCitwcml2YXRlOgorICAgIGZsb2F0IHByb2dyZXNzUmF0aW9Gb3JUaW1lKGRvdWJsZSB0aW1l
TXMpIGNvbnN0OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0QXRSYXRpbyhmbG9hdCByYXRpbykg
Y29uc3Q7CisgICAgZmxvYXQgcGFnZVNjYWxlQXRSYXRpbyhmbG9hdCByYXRpbykgY29uc3Q7CisK
KyAgICBJbnRTaXplIG1fc2Nyb2xsU3RhcnQ7CisgICAgZmxvYXQgbV9wYWdlU2NhbGVTdGFydDsK
KyAgICBJbnRTaXplIG1fd2luZG93U2l6ZTsKKyAgICBJbnRTaXplIG1fY29udGVudFNpemU7CisK
KyAgICBib29sIG1fYW5jaG9yTW9kZTsKKyAgICBJbnRTaXplIG1fYW5jaG9yOworICAgIEludFNp
emUgbV9zY3JvbGxFbmQ7CisgICAgZmxvYXQgbV9wYWdlU2NhbGVFbmQ7CisKKyAgICBkb3VibGUg
bV9zdGFydFRpbWVNczsKKyAgICBkb3VibGUgbV9kdXJhdGlvbk1zOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>