<?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>76063</bug_id>
          
          <creation_ts>2012-01-11 08:12:20 -0800</creation_ts>
          <short_desc>Suspend/Resume API for pausing timers and animations</short_desc>
          <delta_ts>2012-05-06 02:17:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>80247</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>ahf</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>efidler</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>haraken</cc>
    
    <cc>hausmann</cc>
    
    <cc>jesus</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenneth</cc>
    
    <cc>luiz</cc>
    
    <cc>manyoso</cc>
    
    <cc>menard</cc>
    
    <cc>mitz</cc>
    
    <cc>ossy</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zalan</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533911</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-11 08:12:20 -0800</bug_when>
    <thetext>Add API to suspend and resume the WebProcess for webviews put in background or that needs static content during panning or zoom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533913</commentid>
    <comment_count>1</comment_count>
      <attachid>122028</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-11 08:17:50 -0800</bug_when>
    <thetext>Created attachment 122028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533919</commentid>
    <comment_count>2</comment_count>
      <attachid>122033</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-11 08:26:07 -0800</bug_when>
    <thetext>Created attachment 122033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533921</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-11 08:33:59 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=122028&amp;action=review

First look.

&gt; Source/WebCore/ChangeLog:8
&gt; +
&gt; +        Adds specialized reasons for suspend. These are needed
&gt; +        because those types of suspend are treated slightly
&gt; +        different.

Is this code all your own or based on existing code from our branch? If so, add a comment

&gt; Source/WebCore/dom/ActiveDOMObject.h:67
&gt; +            PanningAndZooming

I wonder if we should use Scaling as that seems to be what is used teh most in WebKit... maybe grep to check whether I am right or not. At least WebCore has pageScale, cssScale etc

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1118
&gt; +{
&gt; +    if (!isValid() || !m_isPageSuspended)
&gt; +        return;

Are you handing web process crashes?

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1127
&gt; +//     m_drawingArea-&gt;resumePainting();

ups!

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1142
&gt; +void WebPageProxy::suspendForPanningAndZooming()

Would it make sense with an overloaded suspend method here? taking say an enum?

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:770
&gt;          if (m_frame-&gt;isMainFrame())
&gt; -            webPage-&gt;send(Messages::WebPageProxy::DidStartProgress());
&gt; +            webPage-&gt;didStartProgress();
&gt;      }

please explain these changes in the changelog

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1595
&gt; +void WebPage::didStartProgress()

i am not sure the naming is good as the did* methods are normally generated by the generator and thus callbacks being called by the IPC system

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1623
&gt; +        // Suspend at a latter time.

later*

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1636
&gt; +        doc-&gt;suspendActiveDOMObjects(why);
&gt; +        doc-&gt;scriptRunner()-&gt;suspend();

What about DeviceMotion, Geolocation etc... I guess the former takes care of that, but maybe a comment to verify that would be good

Also from the non-invited, can you add a comment to explain teh difference between scriptRunner-&gt;suspend(), setPaused() etc?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1641
&gt; +        AnimationController* controller = frame-&gt;animation();
&gt; +        if (controller)

these lines could be merged

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1653
&gt; +    if (m_suspendIsDelayed) {
&gt; +        // Do not run resume, if suspend is pending and
&gt; +        // make sure delayed pending is cancelled, when resume is called.
&gt; +        m_suspendIsDelayed = false;
&gt; +        return;
&gt; +    }

could we make this more clear?

// We are not suspended yet as the suspend was delayed, so we just cancel the it.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1664
&gt; +        AnimationController* controller = frame-&gt;animation();
&gt; +        if (controller)

Merge:

if (Animation.... = frame-&gt;animation())
   ...

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1668
&gt; +    // Resume loading last. Order is important, because setDefersLoading

Make sure to resume loading as the last step. The order...

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1672
&gt; +    // Listeners need to be resumed by the time load deferring is turned off.
&gt; +    m_page-&gt;setDefersLoading(false);
&gt; +}

Anyway to test these things? Have you given that some thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533939</commentid>
    <comment_count>4</comment_count>
      <attachid>122033</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-01-11 09:07:01 -0800</bug_when>
    <thetext>Comment on attachment 122033
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1123
&gt; +        process()-&gt;send(Messages::WebPage::SetFixedVisibleContentRect(m_pendingVisibleContentRectUpdate), m_pageID);

This needs #if USE(TILED_BACKING_STORE)

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1627
&gt; +

&apos;why&apos; value is lost and defaulted to &apos;DocumentWillGoToBackground&apos; when the suspend is delayed. it should be preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533959</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-11 09:33:27 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122028&amp;action=review
&gt; 
&gt; First look.
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +
&gt; &gt; +        Adds specialized reasons for suspend. These are needed
&gt; &gt; +        because those types of suspend are treated slightly
&gt; &gt; +        different.
&gt; 
&gt; Is this code all your own or based on existing code from our branch? If so, add a comment
&gt; 
It is based of 6 commits from 3 different contributors, yourself one of them. I couldn&apos;t see any precedence for attributing a patch extracted from the work of several others. Should I add all the names or mention that it is from our branch?

&gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:67
&gt; &gt; +            PanningAndZooming
&gt; 
&gt; I wonder if we should use Scaling as that seems to be what is used teh most in WebKit... maybe grep to check whether I am right or not. At least WebCore has pageScale, cssScale etc
&gt; 
I was considering renaming it completely to something like ExternalAnimation, since we might use it for more than pan and pinch gestures in the future. These are just the names from our branch for simplicity.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1118
&gt; &gt; +{
&gt; &gt; +    if (!isValid() || !m_isPageSuspended)
&gt; &gt; +        return;
&gt; 
&gt; Are you handing web process crashes?
&gt; 
There is code to do handle it. I could see no reason why not to port it.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1127
&gt; &gt; +//     m_drawingArea-&gt;resumePainting();
&gt; 
&gt; ups!
Already fixed in the second patch. There were two other misplaced changes in this patch.

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1142
&gt; &gt; +void WebPageProxy::suspendForPanningAndZooming()
&gt; 
&gt; Would it make sense with an overloaded suspend method here? taking say an enum?
Good idea, but enums just becomes numbers in the IPC, so it would not be much clearer.


The rest of the comments are on style and clarity. I will fix that in the next version.


&gt; 
&gt; Anyway to test these things? Have you given that some thoughts?

Not that I know of, but I guess we could have a test runner on QML level that tests exposed API, but it could still not guarantee the API graphically does what it is supposed to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533972</commentid>
    <comment_count>6</comment_count>
      <attachid>122033</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-11 09:50:23 -0800</bug_when>
    <thetext>Comment on attachment 122033
Patch

Attachment 122033 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11108475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534016</commentid>
    <comment_count>7</comment_count>
      <attachid>122033</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-11 10:32:17 -0800</bug_when>
    <thetext>Comment on attachment 122033
Patch

Attachment 122033 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11108493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534048</commentid>
    <comment_count>8</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-11 11:21:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122028&amp;action=review
&gt; &gt; 
&gt; &gt; First look.
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +
&gt; &gt; &gt; +        Adds specialized reasons for suspend. These are needed
&gt; &gt; &gt; +        because those types of suspend are treated slightly
&gt; &gt; &gt; +        different.
&gt; &gt; 
&gt; &gt; Is this code all your own or based on existing code from our branch? If so, add a comment
&gt; &gt; 
&gt; It is based of 6 commits from 3 different contributors, yourself one of them. I couldn&apos;t see any precedence for attributing a patch extracted from the work of several others. Should I add all the names or mention that it is from our branch?

Give them credit :)

&quot;Based on the initial work of XXX, ABC and 123&quot; is for example valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534095</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-11 11:57:53 -0800</bug_when>
    <thetext>A closely related case is printing, where we don&apos;t want the document to change, and even more strongly, we don&apos;t want on-screen rendering to change under a print preview dialog. 

Modulo some bugs, that works already. I personally haven&apos;t heard of issues during panning and zoom.

I&apos;m not sure if WebCore needs to know about such cases at all. In particular, executing the code to suspend active DOM objects means poorer responsiveness when starting a gesture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534098</commentid>
    <comment_count>10</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-11 12:00:31 -0800</bug_when>
    <thetext>&gt; It is based of 6 commits from 3 different contributors, yourself one of them. I couldn&apos;t see any precedence for attributing a patch extracted from the work of several others. Should I add all the names or mention that it is from our branch?

We normally write something like &quot;Based on patch(es) by ...&quot;

&gt; 
&gt; &gt; &gt; Source/WebCore/dom/ActiveDOMObject.h:67
&gt; &gt; &gt; +            PanningAndZooming
&gt; &gt; 
&gt; &gt; I wonder if we should use Scaling as that seems to be what is used teh most in WebKit... maybe grep to check whether I am right or not. At least WebCore has pageScale, cssScale etc
&gt; &gt; 
&gt; I was considering renaming it completely to something like ExternalAnimation, since we might use it for more than pan and pinch gestures in the future. These are just the names from our branch for simplicity.

I have no strong opinion on this, but panning is not an animation, though an animation might follow it.

&gt; &gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1118
&gt; &gt; &gt; +{
&gt; &gt; &gt; +    if (!isValid() || !m_isPageSuspended)
&gt; &gt; &gt; +        return;
&gt; &gt; 
&gt; &gt; Are you handing web process crashes?
&gt; &gt; 
&gt; There is code to do handle it. I could see no reason why not to port it.

I was more wondering if you really though about the case and tested it. It is easy to end up in a weird state and we have had such bugs in the past.

&gt; &gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1142
&gt; &gt; &gt; +void WebPageProxy::suspendForPanningAndZooming()
&gt; &gt; 
&gt; &gt; Would it make sense with an overloaded suspend method here? taking say an enum?
&gt; Good idea, but enums just becomes numbers in the IPC, so it would not be much clearer.

I am fine with the current method.

&gt; &gt; Anyway to test these things? Have you given that some thoughts?
&gt; 
&gt; Not that I know of, but I guess we could have a test runner on QML level that tests exposed API, but it could still not guarantee the API graphically does what it is supposed to.

I was more thinking about testing the state maybe exposing some methods to the testing system (There should be an internal object now). It would be really cool to have such tests and we have had regressions/bugs before. Zalan might know what needs to be tested and it can possible be in a separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534102</commentid>
    <comment_count>11</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-11 12:04:04 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; A closely related case is printing, where we don&apos;t want the document to change, and even more strongly, we don&apos;t want on-screen rendering to change under a print preview dialog. 
&gt; 
&gt; Modulo some bugs, that works already. I personally haven&apos;t heard of issues during panning and zoom.
&gt; 
&gt; I&apos;m not sure if WebCore needs to know about such cases at all. In particular, executing the code to suspend active DOM objects means poorer responsiveness when starting a gesture.

For Qt we have a &quot;rendering model&quot; where scaling/panning is done by the UI process by manipulating the position and scale of a tiled backing store. To always ensure 60fps on low-end devices we suspend whatever is possible. When the panning or position/scale animation ends we send the new position etc to WebCore, so suspending also makes sure that WebCore will not use wrong values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534110</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-01-11 12:07:40 -0800</bug_when>
    <thetext>&gt; 
&gt; Modulo some bugs, that works already. I personally haven&apos;t heard of issues during panning and zoom.
This feature was originally implemented for mobile environment with relatively slow CPUs in order to support smooth scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534298</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-01-11 15:02:23 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; A closely related case is printing, where we don&apos;t want the document to change, and even more strongly, we don&apos;t want on-screen rendering to change under a print preview dialog. 
&gt; &gt; 
&gt; &gt; Modulo some bugs, that works already. I personally haven&apos;t heard of issues during panning and zoom.
&gt; &gt; 
&gt; &gt; I&apos;m not sure if WebCore needs to know about such cases at all. In particular, executing the code to suspend active DOM objects means poorer responsiveness when starting a gesture.
&gt; 
&gt; For Qt we have a &quot;rendering model&quot; where scaling/panning is done by the UI process by manipulating the position and scale of a tiled backing store. To always ensure 60fps on low-end devices we suspend whatever is possible. When the panning or position/scale animation ends we send the new position etc to WebCore, so suspending also makes sure that WebCore will not use wrong values.

I think this is not a good way to solve this.  If your scrolling/panning is in another process/thread, then why not just increase the priority of it relative to webkit/webcore?  Then you can let the kernel/scheduler help you instead of manually disabling stuff on one thread so another thread runs smoother.

Something I&apos;m missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534621</commentid>
    <comment_count>14</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 00:29:33 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; I think this is not a good way to solve this.  If your scrolling/panning is in another process/thread, then why not just increase the priority of it relative to webkit/webcore?  Then you can let the kernel/scheduler help you instead of manually disabling stuff on one thread so another thread runs smoother.
&gt; 
&gt; Something I&apos;m missing?

The position and dimensions would still be out of sync between the UIProcess and the WebProcess. Suspending the WebProcess ensures the WebProcess is in sync since it is paused while the UIProcess is changing the values.

I might find another solution for panning, but for scaling and rotation I still believe suspending is the best solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534743</commentid>
    <comment_count>15</comment_count>
      <attachid>122213</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 04:28:42 -0800</bug_when>
    <thetext>Created attachment 122213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534748</commentid>
    <comment_count>16</comment_count>
      <attachid>122213</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-12 04:45:38 -0800</bug_when>
    <thetext>Comment on attachment 122213
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1624
&gt; +        // Suspend at a later time.

Does that commetn provide any value?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1637
&gt; +        // suspend active DOM objects such as HTML &lt;video&gt;

Our coding style says to use proper sentences, even for single line comments, ie start with capital end with punctuation mark.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:581
&gt; +    inline void suspend() { suspendWithReason(WebCore::ActiveDOMObject::DocumentWillGoToBackground); }
&gt; +    void suspendWithReason(uint32_t reasonForSuspension);

wouldn&apos;t a default value not make more sense?
void suspend (uint32_t reason = WebCore::ActiveDOMObject::DocumentWillGoToBackground) ?

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.messages.in:102
&gt; +    SuspendWithReason(uint32_t reasonForSuspension)
&gt; +    Suspend()
&gt; +    Resume()

Maybe it is better to enforce always giving a reason?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534753</commentid>
    <comment_count>17</comment_count>
      <attachid>122213</attachid>
    <who name="alan">zalan</who>
    <bug_when>2012-01-12 05:00:34 -0800</bug_when>
    <thetext>Comment on attachment 122213
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1131
&gt; +    process()-&gt;send(Messages::DrawingArea::ResumePainting(), m_pageID);

Wouldn&apos;t resuming the painting first be more logical? and suspending the painting after the page has been suspended. Probably it makes no difference, just looks more logical to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534765</commentid>
    <comment_count>18</comment_count>
      <attachid>122213</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-12 05:41:53 -0800</bug_when>
    <thetext>Comment on attachment 122213
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1153
&gt; +    process()-&gt;send(Messages::DrawingArea::SuspendPainting(), m_pageID);
&gt; +    process()-&gt;send(Messages::WebPage::Suspend(), m_pageID);
&gt; +}
&gt; +
&gt; +void WebPageProxy::suspendWithReason(WebCore::ActiveDOMObject::ReasonForSuspension why)
&gt; +{
&gt; +    if (!isValid() || m_isPageSuspended)
&gt; +        return;
&gt; +
&gt; +    m_isPageSuspended = true;
&gt; +
&gt; +    process()-&gt;send(Messages::WebPage::SuspendWithReason(why), m_pageID);
&gt; +}

Hm, am I missing something here? suspend() also implies SuspendPainting() but suspendWithReason doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534768</commentid>
    <comment_count>19</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 05:44:35 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 122213 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=122213&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:1153
&gt; &gt; +    process()-&gt;send(Messages::DrawingArea::SuspendPainting(), m_pageID);
&gt; &gt; +    process()-&gt;send(Messages::WebPage::Suspend(), m_pageID);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void WebPageProxy::suspendWithReason(WebCore::ActiveDOMObject::ReasonForSuspension why)
&gt; &gt; +{
&gt; &gt; +    if (!isValid() || m_isPageSuspended)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_isPageSuspended = true;
&gt; &gt; +
&gt; &gt; +    process()-&gt;send(Messages::WebPage::SuspendWithReason(why), m_pageID);
&gt; &gt; +}
&gt; 
&gt; Hm, am I missing something here? suspend() also implies SuspendPainting() but suspendWithReason doesn&apos;t.

Oh right. I might need to rename that back to suspendForPanningZooming. The reason paiting isn&apos;t suspended for panning is because videos can still play during panning, it doesn&apos;t stop replaced content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534823</commentid>
    <comment_count>20</comment_count>
      <attachid>122239</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 07:26:28 -0800</bug_when>
    <thetext>Created attachment 122239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534827</commentid>
    <comment_count>21</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 07:29:16 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Created an attachment (id=122239) [details]
&gt; Patch

Updated comments.

I have removed painting suspension again. I am not entirely sure it is even necessary, but since the paint-suspend in our branch was also introduced by different set of patches, I will also port it as a separate patch later if necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534829</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-01-12 07:34:56 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; I think this is not a good way to solve this.  If your scrolling/panning is in another process/thread, then why not just increase the priority of it relative to webkit/webcore?  Then you can let the kernel/scheduler help you instead of manually disabling stuff on one thread so another thread runs smoother.
&gt; &gt; 
&gt; &gt; Something I&apos;m missing?
&gt; 
&gt; The position and dimensions would still be out of sync between the UIProcess and the WebProcess. Suspending the WebProcess ensures the WebProcess is in sync since it is paused while the UIProcess is changing the values.
&gt; 
&gt; I might find another solution for panning, but for scaling and rotation I still believe suspending is the best solution.

The position and dimensions of _what_ would be out of sync?  This is a very different rationale to Kenneth&apos;s which said this was to accommodate low end CPU&apos;s.  Why do you think you need all of this suspension for scaling and rotation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534832</commentid>
    <comment_count>23</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-01-12 07:43:02 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Created an attachment (id=122239) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; Updated comments.
&gt; 
&gt; I have removed painting suspension again. I am not entirely sure it is even necessary, 
Since we don&apos;t suspend webcore timers in general, items, for example animated gifs can trigger updates. While the document is in background, those updates should not end up as painting operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534838</commentid>
    <comment_count>24</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 07:53:13 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #14)
&gt; &gt; (In reply to comment #13)
&gt; &gt; &gt; I think this is not a good way to solve this.  If your scrolling/panning is in another process/thread, then why not just increase the priority of it relative to webkit/webcore?  Then you can let the kernel/scheduler help you instead of manually disabling stuff on one thread so another thread runs smoother.
&gt; &gt; &gt; 
&gt; &gt; &gt; Something I&apos;m missing?
&gt; &gt; 
&gt; &gt; The position and dimensions would still be out of sync between the UIProcess and the WebProcess. Suspending the WebProcess ensures the WebProcess is in sync since it is paused while the UIProcess is changing the values.
&gt; &gt; 
&gt; &gt; I might find another solution for panning, but for scaling and rotation I still believe suspending is the best solution.
&gt; 
&gt; The position and dimensions of _what_ would be out of sync?  This is a very different rationale to Kenneth&apos;s which said this was to accommodate low end CPU&apos;s.  Why do you think you need all of this suspension for scaling and rotation?

The UIProcess and WebProcess runs in separate process and both have the capability of doing transformations on the viewport, and both have their own idea of where and how large the viewport is. When one of them moves or transform the viewport there will be delay before the other process has its value updated (or reversely there will be a delay between the other process is updated and the transformation actually happens). This leads to a lot of problems with animation and rendering glitches (not to mention DOM reading wrong values).

The one thing I removed from the patch was suspending painting that doesn&apos;t move content or query the position of the viewport. This painting is safe from a consistency point-of-view, but might still be desirable to suspend on a low-end platform to ensure smooth animations. This will be part of a new bug-report and patch later if still needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534840</commentid>
    <comment_count>25</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 07:55:13 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; Created an attachment (id=122239) [details] [details] [details]
&gt; &gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Updated comments.
&gt; &gt; 
&gt; &gt; I have removed painting suspension again. I am not entirely sure it is even necessary, 
&gt; Since we don&apos;t suspend webcore timers in general, items, for example animated gifs can trigger updates. While the document is in background, those updates should not end up as painting operations.

That is good point, but it is not a viewport synchronization issue, so I would still like to deal with that separately in another patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534851</commentid>
    <comment_count>26</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2012-01-12 08:14:46 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; &gt; Created an attachment (id=122239) [details] [details] [details] [details]
&gt; &gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Updated comments.
&gt; &gt; &gt; 
&gt; &gt; &gt; I have removed painting suspension again. I am not entirely sure it is even necessary, 
&gt; &gt; Since we don&apos;t suspend webcore timers in general, items, for example animated gifs can trigger updates. While the document is in background, those updates should not end up as painting operations.
&gt; 
&gt; That is good point, but it is not a viewport synchronization issue, so I would still like to deal with that separately in another patch.
sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534892</commentid>
    <comment_count>27</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-12 09:14:33 -0800</bug_when>
    <thetext>I think that Sam and/or Anders should comment on this approach, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535000</commentid>
    <comment_count>28</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-01-12 11:27:14 -0800</bug_when>
    <thetext>I don&apos;t think this is something we want to support as it will give the false impression that calling suspend() will actually cause the web content to suspend immediately and unnecessarily complicates the architecture. Additionally, from experience of using the existing WebKit2 API to implement the features you are discussing, it was not necessary to add these things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535010</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-01-12 11:43:44 -0800</bug_when>
    <thetext>&gt; The UIProcess and WebProcess runs in separate process and both have the capability of doing transformations on the viewport, and both have their own idea of where and how large the viewport is. When one of them moves or transform the viewport there will be delay before the other process has its value updated (or reversely there will be a delay between the other process is updated and the transformation actually happens). This leads to a lot of problems with animation and rendering glitches (not to mention DOM reading wrong values).
&gt; 
&gt; The one thing I removed from the patch was suspending painting that doesn&apos;t move content or query the position of the viewport. This painting is safe from a consistency point-of-view, but might still be desirable to suspend on a low-end platform to ensure smooth animations. This will be part of a new bug-report and patch later if still needed.

Sure, you have two different threads with their own notion of what the current viewport is and they are not always in sync, but I&apos;m not sure how this causes you a, &quot;lot of problems with animation and rendering glitches (not to mention DOM reading wrong values).&quot;  Can you elaborate?

I know that for BlackBerry port we don&apos;t put the panning/zooming in another process, but it is in another thread.  Can I ask why you chose to put it in another *process* as opposed to just another thread?

Finally, I think - not sure - that iOS gets around this by implementing ScrollViewMac which is the arbiter of what the current viewport is.  ScrollViewFoo could be whatever it wanted to be including having a semaphore/mutex to coordinate syncing or just always report the UIProcess&apos;s value.  Maybe Sam can say whether this is correct?

Anyway, there exist ways to solve these problems without resorting to halting all operation in the webkit&apos;s thread/process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535084</commentid>
    <comment_count>30</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-12 12:54:01 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt;I don&apos;t think this is something we want to support as it will give the false impression that calling suspend() will actually cause the web content to suspend immediately and unnecessarily complicates the architecture. Additionally, from experience of using the existing WebKit2 API to implement the features you are 
discussing, it was not necessary to add these things.

I don&apos;t find it that confusing. I expect the web content to be suspended after returning from the function, and from what I can see this is very little code, and not complicating at all. In fact right now it is just a few extra API functions that you can ignore if you don&apos;t want to use the feature.

I would love to hear good alternatives though. If there is a smarter way of doing this I am all ears.


(In reply to comment #29)
&gt; I know that for BlackBerry port we don&apos;t put the panning/zooming in another process, but it is in another thread.  Can I ask why you chose to put it in another *process* as opposed to just another thread?
&gt; 

The UIProcess is another process by design of WebKit2, it is in fact pretty much the central defining charateristic of WebKit2. 

What we do is to keep the UI animations in the process that is closest to the platform level and does the final rendering, the UIProcess. At least for scrolling though, I like the idea of adding another thread to WebCore to scroll closer to the rendering model, but the ScrollCoordinator is still far from finished. If anyone is succesfully using a design like this, the code is not currently published in WebKit.

&gt; Finally, I think - not sure - that iOS gets around this by implementing ScrollViewMac which is the arbiter of what the current viewport is.  ScrollViewFoo could be whatever it wanted to be including having a semaphore/mutex to coordinate syncing or just always report the UIProcess&apos;s value.  Maybe Sam can say whether this is correct?
&gt; 
&gt; Anyway, there exist ways to solve these problems without resorting to halting all operation in the webkit&apos;s thread/process.

I have never used iOS devices that much, but I have been told the suspend feature is similar to what the browser in iPhones actual do during panning and pinch gestures. Also I don&apos;t think iOS uses the WebKit2 API, and sharing datastructures makes more sense between threads than between processes. It is certainly possible in shared memory between two processes (with some limitations), but it would be a new step in the WebKit2 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535145</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2012-01-12 14:09:47 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #28)
&gt; &gt;I don&apos;t think this is something we want to support as it will give the false impression that calling suspend() will actually cause the web content to suspend immediately and unnecessarily complicates the architecture. Additionally, from experience of using the existing WebKit2 API to implement the features you are 
&gt; discussing, it was not necessary to add these things.
&gt; 
&gt; I don&apos;t find it that confusing. I expect the web content to be suspended after returning from the function, and from what I can see this is very little code, and not complicating at all. In fact right now it is just a few extra API functions that you can ignore if you don&apos;t want to use the feature.
&gt; 
&gt; I would love to hear good alternatives though. If there is a smarter way of doing this I am all ears.
&gt; 
&gt; 
&gt; (In reply to comment #29)
&gt; &gt; I know that for BlackBerry port we don&apos;t put the panning/zooming in another process, but it is in another thread.  Can I ask why you chose to put it in another *process* as opposed to just another thread?
&gt; &gt; 
&gt; 
&gt; The UIProcess is another process by design of WebKit2, it is in fact pretty much the central defining charateristic of WebKit2. 

Absolutely, no doubt.  The thing I was questioning is why you are _panning/zooming_ in this process.

&gt; What we do is to keep the UI animations in the process that is closest to the platform level and does the final rendering, the UIProcess. At least for scrolling though, I like the idea of adding another thread to WebCore to scroll closer to the rendering model, but the ScrollCoordinator is still far from finished. If anyone is succesfully using a design like this, the code is not currently published in WebKit.

We are in the middle of upstreaming our port which does the panning/zooming in another thread.  It is definitely not all up yet, but we&apos;re working on it.  Not sure what the ScrollCoordinator is.  I will say that although we have this in our WebKit port that our backingstore will likely move to the platform level at some point.  I don&apos;t think WebKit is the right place for it.  The key though is that AFAIK it is possible to solve these problems without this kind of suspending of the WebCore thread.

&gt; I have never used iOS devices that much, but I have been told the suspend feature is similar to what the browser in iPhones actual do during panning and pinch gestures...

News to me :)  But how come we don&apos;t see this suspend/resume in the WebKit codebase?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535280</commentid>
    <comment_count>32</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-12 16:22:43 -0800</bug_when>
    <thetext>
&gt; Absolutely, no doubt.  The thing I was questioning is why you are _panning/zooming_ in this process.

We [Qt] are not, all panning and zooming happens in the UI process, which uses a tiled backing store.

&gt; News to me :)  But how come we don&apos;t see this suspend/resume in the WebKit codebase?

The iOS port is not upstreamed and I believe based on an internal branch, so it would be pretty natural to not see code for these things in WebKit trunk. The same counts for Android, our N9 browser and even your (though you are in the process of upstreaming the code).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539433</commentid>
    <comment_count>33</comment_count>
      <attachid>123293</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-20 05:31:27 -0800</bug_when>
    <thetext>Created attachment 123293
WebCore side of patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539434</commentid>
    <comment_count>34</comment_count>
      <attachid>123294</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-20 05:32:01 -0800</bug_when>
    <thetext>Created attachment 123294
WebKit2 side of patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539437</commentid>
    <comment_count>35</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-20 05:39:20 -0800</bug_when>
    <thetext>I have made a new patch, split in two parts. Compared to the old it doesn&apos;t disable javascripting in general, but only activedomobjects and animations. The new ReasonForSuspension is the same enum as in iOS branch of WebCore. Though the rest of the implementation is completely new since the implementation and use of Frame::timerspaused is oddly absent in the released WebCore code.

The WebCore side of the patch also fixes a few bugs with suspendActiveDOMObjects by having the ScriptExecutionContext store the fact it is suspending and the reason why, so that new ActiveDOMObjects are also suspended (such as new DOMTimers).

On the WebKit2 side, the suspend code now only suspends for zoomandpanning in itself. For going to background it is supposed to be followed by calling setIsInWindow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539438</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 05:39:31 -0800</bug_when>
    <thetext>Attachment 123293 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539454</commentid>
    <comment_count>37</comment_count>
      <attachid>123301</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-20 06:07:18 -0800</bug_when>
    <thetext>Created attachment 123301
WebCore side of patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539512</commentid>
    <comment_count>38</comment_count>
      <attachid>123294</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-20 07:57:11 -0800</bug_when>
    <thetext>Comment on attachment 123294
WebKit2 side of patch

Attachment 123294 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11314104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539582</commentid>
    <comment_count>39</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-20 09:36:08 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 123294 [details])
&gt; Attachment 123294 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/11314104

Yes, it depends on the first patch. Without it, it should be able to build at all. I separated them because some reviewers only felt they could review one side of it.

For the sake of the build-bots I will cat them together later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539652</commentid>
    <comment_count>40</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-20 11:36:30 -0800</bug_when>
    <thetext>Please amend this bug title to make it clearer what you&apos;re trying to do. Do these patches suspect JS timers as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540125</commentid>
    <comment_count>41</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-21 05:13:39 -0800</bug_when>
    <thetext>(In reply to comment #40)
&gt; Please amend this bug title to make it clearer what you&apos;re trying to do. Do these patches suspect JS timers as well?

Yes, DOMTimers are ActiveDOMObjects, so they are suspended by Document::suspendActiveDOMObjects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540154</commentid>
    <comment_count>42</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-21 10:48:51 -0800</bug_when>
    <thetext>I think you should make it so that suspend/resume calls can be nested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540178</commentid>
    <comment_count>43</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-21 15:39:05 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; I think you should make it so that suspend/resume calls can be nested.

I have made it so that the Frame::setActiveDomObjectsPaused calls can be nested.

Nesting the suspend/resume ActiveDomObjects on Document is not that easy since they have several different suspend reasons which would require tracking which suspend is being resumed. I could add a two level nesting that maintains non-paused suspend reasons and resumes paused reasons when resuming a non-paused reason, but that is it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540312</commentid>
    <comment_count>44</comment_count>
      <attachid>123294</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-22 12:44:21 -0800</bug_when>
    <thetext>Comment on attachment 123294
WebKit2 side of patch

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

This patch (WebKit2 side) looks good to me

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1623
&gt; +        // Suspend CSS animations.
&gt; +        frame-&gt;animation()-&gt;suspendAnimations();

I dont think this comment gives any value, it is pretty obvious already</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540314</commentid>
    <comment_count>45</comment_count>
      <attachid>123301</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-01-22 12:54:37 -0800</bug_when>
    <thetext>Comment on attachment 123301
WebCore side of patch

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

As we already discussed this patch offline, I&apos;m only doing some nitpicking here and would like someone else to do the actual review.

&gt; Source/WebCore/dom/ScriptExecutionContext.cpp:270
&gt; +    // Ensure all ActiveDOMObjects are suspended also newly created ones

nit: Add a dot at the end

&gt; Source/WebCore/page/Frame.cpp:201
&gt; +    // Pause future ActiveDOMObjects if this frame is created when page is in paused state.

is being created

&gt; Source/WebCore/page/Frame.cpp:206
&gt; +        setActiveDOMObjectsPaused(true);
&gt; +
&gt;  }

unneeded newline

&gt; Source/WebCore/page/Frame.cpp:1040
&gt; +        if (activeDOMObjectsPaused()) {

I think it would be more clear to call m_activeDOMObjectsPausedCount directly here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540485</commentid>
    <comment_count>46</comment_count>
      <attachid>123541</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 04:34:37 -0800</bug_when>
    <thetext>Created attachment 123541
Patch

New combined patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540591</commentid>
    <comment_count>47</comment_count>
      <attachid>123541</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-01-23 09:10:16 -0800</bug_when>
    <thetext>Comment on attachment 123541
Patch

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

In general what I see here is two patches.

One is add WebKit2 API that there&apos;s not unanimous agreement we should have.  That&apos;s what this bug represents.
The other is a WebCore patch that fixes https://bugs.webkit.org/show_bug.cgi?id=53733.

I know all you care about is the WebKit2 API, but I would really like to see you split off all the WebCore stuff that creates suspending DOM objects, etc.  Get it reviewed in https://bugs.webkit.org/show_bug.cgi?id=53733.  Do *not* include the new enum as that is truly part of supporting the WK2 API.

That will make both separate patches easier to review and will also make your case that the API should be included much easier to make as the patch will be smaller and more focused on that goal.

&gt; Source/WebCore/ChangeLog:14
&gt; +        * dom/ActiveDOMObject.h:
&gt; +
&gt; +            New ReasonForSuspension: DocumentWillBePaused.
&gt; +            Identical to name in iOS branch of WebCore

Comments for a change normally start on the line of the file where the change came from.
* dome/ActiveDOMObject.h: New ReasonForSuspension...

At the very least the description shouldn&apos;t have an empty line between the file and the description.  

Same for the whole ChangeLog

&gt; Source/WebCore/dom/ActiveDOMObject.h:66
&gt; -            DocumentWillBecomeInactive
&gt; +            DocumentWillBecomeInactive,
&gt; +            DocumentWillBePaused

Naming!
Pretend I don&apos;t know this code at all and I walk up to WebCore for the first time and look at these enums.  What is the difference between Inactive and Paused?

Also it would be &quot;BecomePaused&quot; to follow &quot;BecomeInactive&quot;, but I still hate having both &quot;paused&quot; and &quot;inactive&quot; in the same set of enums.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540660</commentid>
    <comment_count>48</comment_count>
      <attachid>123541</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-23 10:54:07 -0800</bug_when>
    <thetext>Comment on attachment 123541
Patch

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

&gt; Source/WebCore/dom/ScriptExecutionContext.h:106
&gt; +    bool isSuspendingActiveDOMObjects() const { return m_isSuspendingActiveDOMObjects; }

I think this would be better as activeDOMObjectsAreSuspended()

I find the paused/suspended/inactive mixture of terminology confusing. I think you might want to do a rename pass first, then do this patch.

&gt; Source/WebCore/dom/ScriptExecutionContext.h:212
&gt; +    bool m_isSuspendingActiveDOMObjects;

Ditto.

&gt; Source/WebCore/page/Frame.cpp:204
&gt; +        setActiveDOMObjectsPaused(true);

Why isn&apos;t this setActiveDOMObjectsSuspended()?

&gt; Source/WebCore/page/Frame.cpp:1023
&gt; +void Frame::setActiveDOMObjectsPausedInternal(bool pause)

Internal is a  bit vague. Maybe &quot;ForThisFrame&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540758</commentid>
    <comment_count>49</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-23 12:53:12 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 123541 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123541&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:106
&gt; &gt; +    bool isSuspendingActiveDOMObjects() const { return m_isSuspendingActiveDOMObjects; }
&gt; 
&gt; I think this would be better as activeDOMObjectsAreSuspended()
&gt; 
I can do the rename, if you think that is better. I used isSuspending because it was a reminder to the ScriptExecutionContext that is suspending all new ActiveDOMObjects.

&gt; I find the paused/suspended/inactive mixture of terminology confusing. I think you might want to do a rename pass first, then do this patch.
&gt; 
&gt; &gt; Source/WebCore/page/Frame.cpp:204
&gt; &gt; +        setActiveDOMObjectsPaused(true);
&gt; 
&gt; Why isn&apos;t this setActiveDOMObjectsSuspended()?
&gt; 
I used different terminology because there can be several reasons for suspending activeDOMObjects, but only one of the reasons is that the page is paused. 

&gt; &gt; Source/WebCore/page/Frame.cpp:1023
&gt; &gt; +void Frame::setActiveDOMObjectsPausedInternal(bool pause)
&gt; 
&gt; Internal is a  bit vague. Maybe &quot;ForThisFrame&quot;?

That would be more accurate, yes. Internal is only because it is an auxiliary and private function.

Please note by the way, that I have been requested to submit the parts on ScriptExecutionContext as a separate patch against https://bugs.webkit.org/show_bug.cgi?id=53733</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540767</commentid>
    <comment_count>50</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-01-23 13:01:56 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; (From update of attachment 123541 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123541&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/ScriptExecutionContext.h:106
&gt; &gt; &gt; +    bool isSuspendingActiveDOMObjects() const { return m_isSuspendingActiveDOMObjects; }
&gt; &gt; 
&gt; &gt; I think this would be better as activeDOMObjectsAreSuspended()
&gt; &gt; 
&gt; I can do the rename, if you think that is better. I used isSuspending because it was a reminder to the ScriptExecutionContext that is suspending all new ActiveDOMObjects.

&quot;isSuspending&quot; could be read to mean &quot;I am in the act of making them suspended&quot;, rather than &quot;I am in the state where they are suspended&quot;. You want the latter.

&gt; &gt; I find the paused/suspended/inactive mixture of terminology confusing. I think you might want to do a rename pass first, then do this patch.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/Frame.cpp:204
&gt; &gt; &gt; +        setActiveDOMObjectsPaused(true);
&gt; &gt; 
&gt; &gt; Why isn&apos;t this setActiveDOMObjectsSuspended()?
&gt; &gt; 
&gt; I used different terminology because there can be several reasons for suspending activeDOMObjects, but only one of the reasons is that the page is paused. 

Maybe this should be setActiveDOMObjectsState(foo) then?

&gt; &gt; &gt; Source/WebCore/page/Frame.cpp:1023
&gt; &gt; &gt; +void Frame::setActiveDOMObjectsPausedInternal(bool pause)
&gt; &gt; 
&gt; &gt; Internal is a  bit vague. Maybe &quot;ForThisFrame&quot;?
&gt; 
&gt; That would be more accurate, yes. Internal is only because it is an auxiliary and private function.
&gt; 
&gt; Please note by the way, that I have been requested to submit the parts on ScriptExecutionContext as a separate patch against https://bugs.webkit.org/show_bug.cgi?id=53733

Sounds good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541381</commentid>
    <comment_count>51</comment_count>
      <attachid>123748</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-24 09:20:04 -0800</bug_when>
    <thetext>Created attachment 123748
Patch

Renamed functions as requested. After further debug, my patch does not affect bug #53733. During debugging that bug, I did find one corner-case more that where Suspendable Timers was started even though they had been correctly suspended.  This is now solved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542262</commentid>
    <comment_count>52</comment_count>
      <attachid>123748</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-01-25 07:50:26 -0800</bug_when>
    <thetext>Comment on attachment 123748
Patch

Updated patch pending</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554142</commentid>
    <comment_count>53</comment_count>
      <attachid>123294</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-10 10:16:24 -0800</bug_when>
    <thetext>Comment on attachment 123294
WebKit2 side of patch

Cleared Kenneth Rohde Christiansen&apos;s review+ from obsolete attachment 123294 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565548</commentid>
    <comment_count>54</comment_count>
      <attachid>129004</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 03:39:47 -0800</bug_when>
    <thetext>Created attachment 129004
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565551</commentid>
    <comment_count>55</comment_count>
      <attachid>129004</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-27 03:44:22 -0800</bug_when>
    <thetext>Comment on attachment 129004
Patch

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

Great

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1678
&gt; +    // We need to repaint on resume to kickstart animated painting again.
&gt; +    drawingArea()-&gt;setNeedsDisplay(bounds());

It this working correctly with our tiling? Remember we resume on pan end etc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565560</commentid>
    <comment_count>56</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 04:04:35 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; (From update of attachment 129004 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129004&amp;action=review
&gt; 
&gt; Great
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1678
&gt; &gt; +    // We need to repaint on resume to kickstart animated painting again.
&gt; &gt; +    drawingArea()-&gt;setNeedsDisplay(bounds());
&gt; 
&gt; It this working correctly with our tiling? Remember we resume on pan end etc

It is the same call resumePainting makes, but I guess we can restrict it to only asking for a repaint in the viewport.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565567</commentid>
    <comment_count>57</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-27 04:23:56 -0800</bug_when>
    <thetext>(In reply to comment #56)
&gt; (In reply to comment #55)
&gt; &gt; (From update of attachment 129004 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129004&amp;action=review
&gt; &gt; 
&gt; &gt; Great
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1678
&gt; &gt; &gt; +    // We need to repaint on resume to kickstart animated painting again.
&gt; &gt; &gt; +    drawingArea()-&gt;setNeedsDisplay(bounds());
&gt; &gt; 
&gt; &gt; It this working correctly with our tiling? Remember we resume on pan end etc
&gt; 
&gt; It is the same call resumePainting makes, but I guess we can restrict it to only asking for a repaint in the viewport.

We [Qt] already does this when we stop panning, so maybe we need to look into this again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565577</commentid>
    <comment_count>58</comment_count>
      <attachid>129015</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 04:51:02 -0800</bug_when>
    <thetext>Created attachment 129015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565582</commentid>
    <comment_count>59</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 04:53:57 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; (In reply to comment #56)
&gt; &gt; (In reply to comment #55)
&gt; &gt; &gt; (From update of attachment 129004 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129004&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Great
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1678
&gt; &gt; &gt; &gt; +    // We need to repaint on resume to kickstart animated painting again.
&gt; &gt; &gt; &gt; +    drawingArea()-&gt;setNeedsDisplay(bounds());
&gt; &gt; &gt; 
&gt; &gt; &gt; It this working correctly with our tiling? Remember we resume on pan end etc
&gt; &gt; 
&gt; &gt; It is the same call resumePainting makes, but I guess we can restrict it to only asking for a repaint in the viewport.
&gt; 
&gt; We [Qt] already does this when we stop panning, so maybe we need to look into this again

We only repaint tiles that are dirty. The problem is when the animations are suspended the tiles are not marked dirty and thus never gets repainted though the animated images would paint something new the next time.

This solutions works, but later it would probably be a good idea to look into just marking the images dirty instead of doing a full repaint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565655</commentid>
    <comment_count>60</comment_count>
      <attachid>129037</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 08:09:26 -0800</bug_when>
    <thetext>Created attachment 129037
Patch for landing

Correct mistake in WebPage::suspend after API clean up. The call is now even cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565658</commentid>
    <comment_count>61</comment_count>
      <attachid>129038</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-27 08:12:27 -0800</bug_when>
    <thetext>Created attachment 129038
Patch for landing

Removed accidentally included change to which tests were run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565741</commentid>
    <comment_count>62</comment_count>
      <attachid>129038</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-02-27 09:41:30 -0800</bug_when>
    <thetext>Comment on attachment 129038
Patch for landing

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

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:602
&gt; +    void suspend();
&gt; +    void resume();

I think these names are too generic at this level. &quot;Suspend&quot; can mean many things for a web page, and it&apos;s not clear what these do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565754</commentid>
    <comment_count>63</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-27 09:55:50 -0800</bug_when>
    <thetext>I agree that this patch still doesn&apos;t resolve one of the first comments that were given here - there are too many ways to &quot;suspend&quot;, and little explanation of what each is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566607</commentid>
    <comment_count>64</comment_count>
      <attachid>129237</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-02-28 06:12:07 -0800</bug_when>
    <thetext>Created attachment 129237
Patch

Continued the longer and more accurate function naming to WebKit2 level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568457</commentid>
    <comment_count>65</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-03-01 01:13:42 -0800</bug_when>
    <thetext>(In reply to comment #64)
&gt; Created an attachment (id=129237) [details]
&gt; Patch
&gt; 
&gt; Continued the longer and more accurate function naming to WebKit2 level.

Simon, Alexey, are you OK with the names now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569499</commentid>
    <comment_count>66</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-02 03:31:36 -0800</bug_when>
    <thetext>(In reply to comment #65)
&gt; (In reply to comment #64)
&gt; &gt; Created an attachment (id=129237) [details] [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Continued the longer and more accurate function naming to WebKit2 level.
&gt; 
&gt; Simon, Alexey, are you OK with the names now?

There were no objections in the last 3 days, so I&apos;m going to land this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569505</commentid>
    <comment_count>67</comment_count>
      <attachid>129237</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2012-03-02 03:41:46 -0800</bug_when>
    <thetext>Comment on attachment 129237
Patch

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

Landed in: http://trac.webkit.org/changeset/109548

&gt; Source/WebCore/page/Frame.h:264
&gt; +

I removed this new line.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1677
&gt; +

I removed this new line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569549</commentid>
    <comment_count>68</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-02 04:31:55 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; (From update of attachment 129237 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129237&amp;action=review
&gt; 
&gt; Landed in: http://trac.webkit.org/changeset/109548
&gt; 
&gt; &gt; Source/WebCore/page/Frame.h:264
&gt; &gt; +
&gt; 
&gt; I removed this new line.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1677
&gt; &gt; +
&gt; 
&gt; I removed this new line.

Great, you guys broke the Mac build. Could you fix it before Apple guys wake up? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569556</commentid>
    <comment_count>69</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-03-02 04:43:03 -0800</bug_when>
    <thetext>(In reply to comment #68)
&gt; (In reply to comment #67)
&gt; &gt; (From update of attachment 129237 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129237&amp;action=review
&gt; &gt; 
&gt; &gt; Landed in: http://trac.webkit.org/changeset/109548
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/Frame.h:264
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; I removed this new line.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:1677
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; I removed this new line.
&gt; 
&gt; Great, you guys broke the Mac build. Could you fix it before Apple guys wake up? :)

And the MAC EWS was red all along with exactly the same error :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569566</commentid>
    <comment_count>70</comment_count>
      <attachid>129882</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-03-02 04:54:19 -0800</bug_when>
    <thetext>Created attachment 129882
BuildFix

Build fix for AppleWebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569567</commentid>
    <comment_count>71</comment_count>
      <attachid>129882</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-02 04:58:34 -0800</bug_when>
    <thetext>Comment on attachment 129882
BuildFix

Clearing flags on attachment: 129882

Committed r109558: &lt;http://trac.webkit.org/changeset/109558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569568</commentid>
    <comment_count>72</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-02 04:58:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570738</commentid>
    <comment_count>73</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-03-05 08:46:39 -0800</bug_when>
    <thetext>Reopen, because it broke Qt WK2 API tests. See https://bugs.webkit.org/show_bug.cgi?id=80247 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570777</commentid>
    <comment_count>74</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-03-05 09:32:54 -0800</bug_when>
    <thetext>&gt; Simon, Alexey, are you OK with the names now?

Of course not. The objection was about the word &quot;suspend&quot;, and it&apos;s still called &quot;suspend&quot;, just with some more words added afterwards.

If anything, the name got worse. What does &quot;activeDOMObjectsAndAnimationsSuspended&quot; return if just one of these is suspended?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571821</commentid>
    <comment_count>75</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-03-06 07:13:03 -0800</bug_when>
    <thetext>(In reply to comment #74)
&gt; &gt; Simon, Alexey, are you OK with the names now?
&gt; 
&gt; Of course not. The objection was about the word &quot;suspend&quot;, and it&apos;s still called &quot;suspend&quot;, just with some more words added afterwards.
&gt; 
I originally called it pagePaused, it was still a vague name, but I used it  exactly to distinguish it from suspend. I changed it because confusion was expressed over using two different terms.

I think calling it suspend does make sense, since both animations have suspend API and active DOM objects have suspend API, and this function ensures both are suspended. But I am not particular proud of the long name and it is only used due to the lack of a better one. If someone has a better name I would be happy to open a new bug and rename it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572809</commentid>
    <comment_count>76</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-03-07 05:14:07 -0800</bug_when>
    <thetext>Blocking bug 80247 closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616429</commentid>
    <comment_count>77</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2012-05-04 10:57:27 -0700</bug_when>
    <thetext>Is this being tested somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617091</commentid>
    <comment_count>78</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-05-06 02:17:15 -0700</bug_when>
    <thetext>(In reply to comment #77)
&gt; Is this being tested somehow?

It is only tested manually. We don&apos;t have much automatic testing for the UI-side of WebKit2. The individual functions on the WebCore side has different ways to be tested.

However, since the suspend is triggered on all pan gestures. It is quite easy to test. You just touch the page and move your finger, the content is then suspended until you let go.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122028</attachid>
            <date>2012-01-11 08:17:50 -0800</date>
            <delta_ts>2012-01-11 08:25:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120111171659.patch</filename>
            <type>text/plain</type>
            <size>16689</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkOWQyM2I5MTQ0ZjEy
ZGY2ODhhMzZiZmM5Y2UxNTk0ZmM2YjgzYy4uNjU3OGY5MTY0YzE1MTJmMTBmZDhjNGQ0ZThmNDYx
ZDNjMWM5ZDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTExICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIHJlYXNvbnMgZm9yIFVJLWJhY2tncm91bmRlZCBvciBVSS1hbmltYXRlZCBk
b2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjA2MworCisgICAgICAgIEFkZHMgc3BlY2lhbGl6ZWQgcmVhc29ucyBmb3Igc3VzcGVuZC4g
VGhlc2UgYXJlIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHRob3NlIHR5cGVzIG9mIHN1c3BlbmQg
YXJlIHRyZWF0ZWQgc2xpZ2h0bHkKKyAgICAgICAgZGlmZmVyZW50LgorCisgICAgICAgICogZG9t
L0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToKKwogMjAxMi0w
MS0xMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSAic291cmNlIiBjb2x1bW4gaW4gdGhlIENTUyBwcm9m
aWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2ZTFjZTAyODEyZjAyMTEwYjM0ODgxMDQ3MDAwMzY1OGQ4ZDEy
YjNkLi5iNDI5YmNhNjljNmM3MWZhZDUxNDQ4MGI5MjMxZmQyOThlNWE2MDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDEtMTEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU3VzcGVuZC9SZXN1bWUgQVBJIGZvciBX
ZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjA2MworCisgICAgICAgIEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3IgV2ViS2l0MiBh
bmQgdXNlcyBpdCBpbiBRdCB0bworICAgICAgICBzdXNwZW5kIHNjcmlwdGluZyBhbmQgYW5pbWF0
aW9ucyBkdXJpbmcgcGFubmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVuZCk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRGb3JQYW5uaW5nQW5kWm9vbWluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRTdGFydFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
Q2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hQcm9n
cmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblN1c3BlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZEZvclBhbm5pbmdBbmRab29taW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDEtMTEgIEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gQWRk
IHRoZSBlZGl0b3IgcmVjdCB0byB0aGUgRWRpdG9yU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaAppbmRleCBkYjdjYTY2YzAxZDIxMjlmYWUxZTc5MDZkZDQ0ZDQyOTdjMzZmNGNi
Li4zNjk1ZWM5M2M3ZDg4OGIxNjFjYTQ5NzkwYThkODQ0MDJlYzE5YzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC02Miw3ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgZW51bSBSZWFzb25Gb3JTdXNwZW5zaW9uIHsKICAgICAgICAgICAgIEphdmFT
Y3JpcHREZWJ1Z2dlclBhdXNlZCwKICAgICAgICAgICAgIFdpbGxTaG93RGlhbG9nLAotICAgICAg
ICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgICAgIERvY3VtZW50V2ls
bEJlY29tZUluYWN0aXZlLAorICAgICAgICAgICAgRG9jdW1lbnRXaWxsR29Ub0JhY2tncm91bmQs
CisgICAgICAgICAgICBQYW5uaW5nQW5kWm9vbWluZwogICAgICAgICB9OwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IDRmMDZhZjZlYTkzYTY1ZGNkZDI2MDg3NTA2MDhhZTJmNDc5ZjAzMTIuLjg3
NDJmMWExYTQ2ZWY4MWVjMmE5ZTE2Mjc3Y2MxMTYxMmEyMmQyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzEzOCw2ICszMTM4LDEwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAgICAg
Y2FzZSBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZToKICAgICAgICAgICAgIHN0b3AoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvY3VtZW50V2lsbEdvVG9CYWNrZ3JvdW5k
OgorICAgICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQYW5uaW5nQW5kWm9vbWluZzoKICAgICAgICAgY2FzZSBKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6CiAgICAgICAgIGNhc2UgV2lsbFNob3dEaWFsb2c6CiAgICAgICAg
ICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVz
ZSBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCmluZGV4IDQzZDQwYjliMzFkNzJjOGZiYWYyNWY4NjE1MjNlZTdiZjM0MzMwYjgu
LjZiMzU0ODEzNTY0ZTUxNjJjMDQ1Mjk4ZTE0YmEyNjA5YTk3ODk3ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMTc5LDEx
ICsxNzksMTMgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffb25JY29uQ2hhbmdlZEZv
clBhZ2VVUkwoY29uc3QgUVVybCYgcGFnZVVSTCwgY29uc3QKIHZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6Ol9xX3N1c3BlbmQoKQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IHRydWU7CisgICAg
d2ViUGFnZVByb3h5LT5zdXNwZW5kKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
Ol9xX3Jlc3VtZSgpCiB7CiAgICAgcGFnZUlzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgd2ViUGFn
ZVByb3h5LT5yZXN1bWUoKTsKIAogICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpIHsK
ICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdlMDhjZWNkODE5NDA3N2QwMzUzNzZh
YWE5NDQ3MGRhNTM0OGZlYmEuLjVhZjg5MzBjMzlmYzY5Yzc2Y2ExMWQ4MmFkNzVhZWQzZGJmOWIw
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xODUs
NiArMTg1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNs
aWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fbmVlZFRvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX2lzUGFn
ZVN1c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2lzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
KQogI2VuZGlmCkBAIC04MTQsNyArODE1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICghaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpLCBtX3BhZ2VJRCk7CisgICAg
aWYgKG1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICBtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUgPSByZWN0OworICAgIGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCkBAIC0xMTA4LDYgKzExMTIsNDMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3Rv
bVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkKICAgICBzZXRVc2VyQWdl
bnQobV9jdXN0b21Vc2VyQWdlbnQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lKCkK
K3sKKyAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisKKyAgICBpZiAoIW1fcGVu
ZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCht
X3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1f
cGVuZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZSA9IEludFJlY3QoKTsKKyAgICB9CisKKy8v
ICAgICBtX2RyYXdpbmdBcmVhLT5yZXN1bWVQYWludGluZygpOworICAgIHByb2Nlc3MoKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQ
YWdlUHJveHk6OnN1c3BlbmQoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8IG1faXNQYWdlU3Vz
cGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7
CisKKy8vICAgICBtX2RyYXdpbmdBcmVhLT5zdXNwZW5kUGFpbnRpbmcoKTsKKyAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmQoKSwgbV9wYWdlSUQpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEZvclBhbm5pbmdBbmRab29taW5nKCkKK3sKKyAgICBp
ZiAoIWlzVmFsaWQoKSB8fCBtX2lzUGFnZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTdXNwZW5kRm9yUGFubmluZ0FuZFpvb21pbmcoKSwgbV9wYWdlSUQpOwor
fQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewog
ICAgIHJldHVybiAhbV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiAmJiBtX21haW5G
cmFtZSAmJiAhbV9tYWluRnJhbWUtPmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50
KCk7CkBAIC0zMTIxLDYgKzMxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENy
YXNoKCkKICAgICBBU1NFUlQobV9wYWdlQ2xpZW50KTsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNl
OworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9tYWluRnJhbWUp
IHsKICAgICAgICAgbV91cmxBdFByb2Nlc3NFeGl0ID0gbV9tYWluRnJhbWUtPnVybCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDIwYTYxOTVkODA4YThiOGNl
ZDYxY2JlZTBlOTE5OGIzYmRiNDkzN2YuLjkyNTg0Njg2YTRlMGVjYWJmMjhhOTc3ZjE4MzE4MDIw
MDhiM2RkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQw
MCw2ICs0MDAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmKTsKICAgICBTdHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4dEVuY29kaW5nTmFtZTsgfQogCisgICAgdm9pZCByZXN1
bWUoKTsKKyAgICB2b2lkIHN1c3BlbmQoKTsKKyAgICB2b2lkIHN1c3BlbmRGb3JQYW5uaW5nQW5k
Wm9vbWluZygpOworCiAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKQEAgLTcxMyw2ICs3MTcsNyBAQCBwcml2YXRlOgog
ICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsQnkoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oUVQpCkBAIC05NzMsNiArOTc4LDggQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1f
cGFnZUlEOwogCisgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKKwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBib29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CiAjZW5kaWYKQEAgLTEw
MDMsNiArMTAxMCw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2hvdWxkU2VuZEV2ZW50c1N5
bmNocm9ub3VzbHk7CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IG1fcGVuZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKKyNlbmRpZgogI2lm
IFBMQVRGT1JNKFFUKQogICAgIFdURjo6SGFzaFNldDxSZWZQdHI8UXROZXR3b3JrUmVxdWVzdERh
dGE+ID4gbV9hcHBsaWNhdGlvblNjaGVtZVJlcXVlc3RzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1YzIxMzNh
YjQxYzFjMWQ3MzYxNjJjZDYwNDRlMDllNDViZTg3YjE2Li4wMWJjMTU0Mjk2Y2ZiN2I5MGVmZjdk
ZDY4NzI2MDI4MDM3ZDE3MjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTcwLDYgKzcwLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKFdlYkNvcmU6OkludFBvaW50IHBvaW50KQorICAgIFBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsQnkoV2ViQ29yZTo6SW50UG9pbnQgb2Zmc2V0KQogI2VuZGlmCiAjaWYgUExBVEZPUk0o
UVQpCiAgICAgRGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYkNvcmU6OkludFNpemUgbmV3U2l6ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggM2QwZTIyMjA1ZDI0NDNkYTgy
ODc0ZWQ4NzhjMzI0YzY1ZjcyYTFiZS4uNTVlYjc2YTk4MWVlZjA2NjgzMTczOWQ3ZDI2ZDZiOTA0
YWJiMDBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTc2Niw3ICs3
NjYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90
aWZpY2F0aW9uKCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkgewogICAgICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm9ncmVzcygpKTsK
KyAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB9CiB9CiAKQEAg
LTc3NSw3ICs3NzUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKQogICAgIGlmIChXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChtX2ZyYW1lLT5pc01haW5GcmFtZSgpKSB7
CiAgICAgICAgICAgICBkb3VibGUgcHJvZ3Jlc3MgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5wcm9n
cmVzcygpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwotICAgICAgICAgICAgd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm9ncmVzcyhwcm9ncmVzcykpOworICAg
ICAgICAgICAgd2ViUGFnZS0+ZGlkQ2hhbmdlUHJvZ3Jlc3MocHJvZ3Jlc3MpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkKIHsKICAgICBpZiAoV2ViUGFnZSog
d2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBpZiAobV9mcmFtZS0+aXNNYWlu
RnJhbWUoKSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmluaXNoUHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5kaWRGaW5pc2hQ
cm9ncmVzcygpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc5NWVkZGQyMWMwYzViYjZjNjA1MmY1MWNkN2Q1NGJiNjRi
YzQwMWMuLjExMGJmOGViZTQ1ZDU2NGRjNDY0NzA5MWJlODM2ZTk4ZjdjYmQwMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEsNSArMSw2
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTQxLDYgKzQyLDcgQEAKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVk
ZSAiUHJpbnRJbmZvLmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgorI2luY2x1ZGUgIlNjcmlwdFJ1
bm5lci5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJp
dG1hcC5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgpAQCAtMTk5LDYgKzIwMSw4
IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgICwgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5l
ZFRvTGVmdFNpZGUoZmFsc2UpCiAgICAgLCBtX2NhY2hlZE1haW5GcmFtZUlzUGlubmVkVG9SaWdo
dFNpZGUoZmFsc2UpCiAgICAgLCBtX2NhY2hlZFBhZ2VDb3VudCgwKQorICAgICwgbV9pc0xvYWRp
bmcoZmFsc2UpCisgICAgLCBtX3N1c3BlbmRJc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX2lzU2hv
d2luZ0NvbnRleHRNZW51KGZhbHNlKQogI2lmIFBMQVRGT1JNKFdJTikKICAgICAsIG1fZ2VzdHVy
ZVJlYWNoZWRTY3JvbGxpbmdMaW1pdChmYWxzZSkKQEAgLTE1ODcsNyArMTU5MSw4NyBAQCB2b2lk
IFdlYlBhZ2U6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICBt
X3VzZXJBZ2VudCA9IHVzZXJBZ2VudDsKIH0KLSAgCisKK3ZvaWQgV2ViUGFnZTo6ZGlkU3RhcnRQ
cm9ncmVzcygpCit7CisgICAgbV9pc0xvYWRpbmcgPSB0cnVlOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm9ncmVzcygpKTsKK30KKwordm9pZCBXZWJQYWdlOjpk
aWRDaGFuZ2VQcm9ncmVzcyhkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm9ncmVzcyhwcm9ncmVzcykpOworfQorCit2b2lkIFdl
YlBhZ2U6OmRpZEZpbmlzaFByb2dyZXNzKCkKK3sKKyAgICBtX2lzTG9hZGluZyA9IGZhbHNlOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoUHJvZ3Jlc3MoKSk7CisK
KyAgICBpZiAobV9zdXNwZW5kSXNEZWxheWVkKQorICAgICAgICBzdXNwZW5kKCk7Cit9CisKK2Jv
b2wgV2ViUGFnZTo6Y2FuU3VzcGVuZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2lzTG9hZGlu
ZzsKK30KKwordm9pZCBXZWJQYWdlOjpzdXNwZW5kV2l0aFJlYXNvbihXZWJDb3JlOjpBY3RpdmVE
T01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQoreworICAgIGlmICghY2FuU3VzcGVu
ZCgpKSB7CisgICAgICAgIC8vIFN1c3BlbmQgYXQgYSBsYXR0ZXIgdGltZS4KKyAgICAgICAgbV9z
dXNwZW5kSXNEZWxheWVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
c3VzcGVuZElzRGVsYXllZCA9IGZhbHNlOworCisgICAgbV9wYWdlLT5zZXREZWZlcnNMb2FkaW5n
KHRydWUpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKworICAgICAgICBkb2MtPnN1
c3BlbmRBY3RpdmVET01PYmplY3RzKHdoeSk7CisgICAgICAgIGRvYy0+c2NyaXB0UnVubmVyKCkt
PnN1c3BlbmQoKTsKKworICAgICAgICBmcmFtZS0+c2NyaXB0KCktPnNldFBhdXNlZCh0cnVlKTsK
KworICAgICAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1h
dGlvbigpOworICAgICAgICBpZiAoY29udHJvbGxlcikKKyAgICAgICAgICAgIGNvbnRyb2xsZXIt
PnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgp
Cit7CisgICAgaWYgKG1fc3VzcGVuZElzRGVsYXllZCkgeworICAgICAgICAvLyBEbyBub3QgcnVu
IHJlc3VtZSwgaWYgc3VzcGVuZCBpcyBwZW5kaW5nIGFuZAorICAgICAgICAvLyBtYWtlIHN1cmUg
ZGVsYXllZCBwZW5kaW5nIGlzIGNhbmNlbGxlZCwgd2hlbiByZXN1bWUgaXMgY2FsbGVkLgorICAg
ICAgICBtX3N1c3BlbmRJc0RlbGF5ZWQgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBEb2N1
bWVudCogZG9jID0gZnJhbWUtPmRvY3VtZW50KCk7CisKKyAgICAgICAgZG9jLT5yZXN1bWVBY3Rp
dmVET01PYmplY3RzKCk7CisgICAgICAgIGRvYy0+c2NyaXB0UnVubmVyKCktPnJlc3VtZSgpOwor
CisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2VkKGZhbHNlKTsKKworICAgICAgICBB
bmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOworICAg
ICAgICBpZiAoY29udHJvbGxlcikKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnJlc3VtZUFuaW1h
dGlvbnMoKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bWUgbG9hZGluZyBsYXN0LiBPcmRlciBpcyBp
bXBvcnRhbnQsIGJlY2F1c2Ugc2V0RGVmZXJzTG9hZGluZworICAgIC8vIGNhbiBzeW5jcm9ub3Vz
bHkgZGVsaXZlciBjb250ZW50IHRvIGxpc3RlbmVycyAoc3VjaCB1cyBYTUxIVFRQUmVxdWVzdCku
CisgICAgLy8gTGlzdGVuZXJzIG5lZWQgdG8gYmUgcmVzdW1lZCBieSB0aGUgdGltZSBsb2FkIGRl
ZmVycmluZyBpcyB0dXJuZWQgb2ZmLgorICAgIG1fcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhmYWxz
ZSk7Cit9CisKKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9p
bnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDAwNzJjZmJmMTU2MGNkMGJkNThi
Yzg0ZDExNmIyZjI4MTIxZDQ2OC4uZjFmNDQxNTE4YzEzNjkyZjA1ZWQ2ZGY1YjY4MTE4MjMxNzBk
N2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUg
IlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBl
cy5oPgpAQCAtNDg0LDYgKzQ4NSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXN0dXJlRXZlbnQo
Y29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAorICAgIHZvaWQgZGlkU3RhcnRQcm9n
cmVzcygpOworICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91YmxlIHByb2dyZXNzKTsKKyAg
ICB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNTcy
LDYgKzU3NywxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmlu
ZyYpOworICAgIGlubGluZSB2b2lkIHN1c3BlbmRGb3JQYW5uaW5nQW5kWm9vbWluZygpIHsgc3Vz
cGVuZFdpdGhSZWFzb24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpQYW5uaW5nQW5kWm9vbWlu
Zyk7IH0KKyAgICBpbmxpbmUgdm9pZCBzdXNwZW5kKCkgeyBzdXNwZW5kV2l0aFJlYXNvbihXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEdvVG9CYWNrZ3JvdW5kKTsgfQorICAg
IHZvaWQgc3VzcGVuZFdpdGhSZWFzb24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25G
b3JTdXNwZW5zaW9uIHdoeSk7CisgICAgdm9pZCByZXN1bWUoKTsKKyAgICBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CkBAIC03MzMs
NiArNzQzLDkgQEAgcHJpdmF0ZToKIAogICAgIHVuc2lnbmVkIG1fY2FjaGVkUGFnZUNvdW50Owog
CisgICAgYm9vbCBtX2lzTG9hZGluZzsKKyAgICBib29sIG1fc3VzcGVuZElzRGVsYXllZDsKKwog
ICAgIGJvb2wgbV9pc1Nob3dpbmdDb250ZXh0TWVudTsKIAogI2lmIFBMQVRGT1JNKFdJTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggNWEzYmI0NTBlZjEwNWIxYjg5MmEwM2M0OTE1NGI5MjhiZTZhN2UwNy4uN2U3
ZjI2MmM3ODBmMjlmMjU3YmRjYjk1YjFlMGU1NzhjZWZmNGU1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTk3
LDYgKzk3LDEwIEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFVzZXJBZ2VudChXVEY6
OlN0cmluZyB1c2VyQWdlbnQpCiAgICAgU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXVEY6OlN0
cmluZyBlbmNvZGluZ05hbWUpCiAKKyAgICBTdXNwZW5kRm9yUGFubmluZ0FuZFpvb21pbmcoKQor
ICAgIFN1c3BlbmQoKQorICAgIFJlc3VtZSgpCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKICAgICBTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChXZWJDb3JlOjpJbnRSZWN0IHJlY3Qp
CiAgICAgU2V0Vmlld3BvcnRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122033</attachid>
            <date>2012-01-11 08:26:07 -0800</date>
            <delta_ts>2012-01-12 04:28:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120111172516.patch</filename>
            <type>text/plain</type>
            <size>15811</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkOWQyM2I5MTQ0ZjEy
ZGY2ODhhMzZiZmM5Y2UxNTk0ZmM2YjgzYy4uNjU3OGY5MTY0YzE1MTJmMTBmZDhjNGQ0ZThmNDYx
ZDNjMWM5ZDkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTExICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIHJlYXNvbnMgZm9yIFVJLWJhY2tncm91bmRlZCBvciBVSS1hbmltYXRlZCBk
b2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjA2MworCisgICAgICAgIEFkZHMgc3BlY2lhbGl6ZWQgcmVhc29ucyBmb3Igc3VzcGVuZC4g
VGhlc2UgYXJlIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHRob3NlIHR5cGVzIG9mIHN1c3BlbmQg
YXJlIHRyZWF0ZWQgc2xpZ2h0bHkKKyAgICAgICAgZGlmZmVyZW50LgorCisgICAgICAgICogZG9t
L0FjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKToKKwogMjAxMi0w
MS0xMCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGludHJvZHVjZSAic291cmNlIiBjb2x1bW4gaW4gdGhlIENTUyBwcm9m
aWxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwppbmRleCA2ZTFjZTAyODEyZjAyMTEwYjM0ODgxMDQ3MDAwMzY1OGQ4ZDEy
YjNkLi5iNDI5YmNhNjljNmM3MWZhZDUxNDQ4MGI5MjMxZmQyOThlNWE2MDJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDEtMTEgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFs
bGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU3VzcGVuZC9SZXN1bWUgQVBJIGZvciBX
ZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NjA2MworCisgICAgICAgIEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3IgV2ViS2l0MiBh
bmQgdXNlcyBpdCBpbiBRdCB0bworICAgICAgICBzdXNwZW5kIHNjcmlwdGluZyBhbmQgYW5pbWF0
aW9ucyBkdXJpbmcgcGFubmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVuZCk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpeGVkVmlzaWJsZUNv
bnRlbnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmRGb3JQYW5uaW5nQW5kWm9vbWluZyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQ
cm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkaWRTdGFydFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlk
Q2hhbmdlUHJvZ3Jlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRGaW5pc2hQcm9n
cmVzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhblN1c3BlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZEZvclBhbm5pbmdBbmRab29taW5nKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDEtMTEgIEtlbm5ldGggUm9o
ZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gQWRk
IHRoZSBlZGl0b3IgcmVjdCB0byB0aGUgRWRpdG9yU3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVE
T01PYmplY3QuaAppbmRleCBkYjdjYTY2YzAxZDIxMjlmYWUxZTc5MDZkZDQ0ZDQyOTdjMzZmNGNi
Li4zNjk1ZWM5M2M3ZDg4OGIxNjFjYTQ5NzkwYThkODQ0MDJlYzE5YzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC02Miw3ICs2Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgZW51bSBSZWFzb25Gb3JTdXNwZW5zaW9uIHsKICAgICAgICAgICAgIEphdmFT
Y3JpcHREZWJ1Z2dlclBhdXNlZCwKICAgICAgICAgICAgIFdpbGxTaG93RGlhbG9nLAotICAgICAg
ICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgICAgIERvY3VtZW50V2ls
bEJlY29tZUluYWN0aXZlLAorICAgICAgICAgICAgRG9jdW1lbnRXaWxsR29Ub0JhY2tncm91bmQs
CisgICAgICAgICAgICBQYW5uaW5nQW5kWm9vbWluZwogICAgICAgICB9OwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVu
ZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCmluZGV4IDRmMDZhZjZlYTkzYTY1ZGNkZDI2MDg3NTA2MDhhZTJmNDc5ZjAzMTIuLjg3
NDJmMWExYTQ2ZWY4MWVjMmE5ZTE2Mjc3Y2MxMTYxMmEyMmQyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzEzOCw2ICszMTM4LDEwIEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKICAgICAgICAg
Y2FzZSBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZToKICAgICAgICAgICAgIHN0b3AoKTsKICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERvY3VtZW50V2lsbEdvVG9CYWNrZ3JvdW5k
OgorICAgICAgICAgICAgc2V0UGF1c2VkSW50ZXJuYWwodHJ1ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBQYW5uaW5nQW5kWm9vbWluZzoKICAgICAgICAgY2FzZSBKYXZhU2Ny
aXB0RGVidWdnZXJQYXVzZWQ6CiAgICAgICAgIGNhc2UgV2lsbFNob3dEaWFsb2c6CiAgICAgICAg
ICAgICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVz
ZSBjYXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dl
YnZpZXcuY3BwCmluZGV4IDQzZDQwYjliMzFkNzJjOGZiYWYyNWY4NjE1MjNlZTdiZjM0MzMwYjgu
LjZiMzU0ODEzNTY0ZTUxNjJjMDQ1Mjk4ZTE0YmEyNjA5YTk3ODk3ZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtMTc5LDEx
ICsxNzksMTMgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffb25JY29uQ2hhbmdlZEZv
clBhZ2VVUkwoY29uc3QgUVVybCYgcGFnZVVSTCwgY29uc3QKIHZvaWQgUVF1aWNrV2ViVmlld1By
aXZhdGU6Ol9xX3N1c3BlbmQoKQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IHRydWU7CisgICAg
d2ViUGFnZVByb3h5LT5zdXNwZW5kKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6
Ol9xX3Jlc3VtZSgpCiB7CiAgICAgcGFnZUlzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgd2ViUGFn
ZVByb3h5LT5yZXN1bWUoKTsKIAogICAgIGlmIChpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpIHsK
ICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDdlMDhjZWNkODE5NDA3N2QwMzUzNzZh
YWE5NDQ3MGRhNTM0OGZlYmEuLjZiOWNkYTJkMTYxOTA1MTY4YmZhNDRiOTlkZDBlNzliZmJkOTY5
NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xODUs
NiArMTg1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCogcGFnZUNs
aWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAgICAsIG1fbmVlZFRvdWNoRXZl
bnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCisgICAgLCBtX2lzUGFn
ZVN1c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2lzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgp
KQogI2VuZGlmCkBAIC04MTQsNyArODE1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIGlmICghaXNWYWxp
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KHJlY3QpLCBtX3BhZ2VJRCk7CisgICAg
aWYgKG1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICBtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUgPSByZWN0OworICAgIGVsc2UKKyAgICAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IEludFNpemUm
IHNpemUpCkBAIC0xMTA4LDYgKzExMTIsNDEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3Rv
bVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkKICAgICBzZXRVc2VyQWdl
bnQobV9jdXN0b21Vc2VyQWdlbnQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lKCkK
K3sKKyAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CisKKyAgICBpZiAoIW1fcGVu
ZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgcHJvY2Vz
cygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdCht
X3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIG1f
cGVuZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZSA9IEludFJlY3QoKTsKKyAgICB9CisKKyAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBtX3BhZ2VJRCk7
Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQo
KSB8fCBtX2lzUGFnZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhZ2VT
dXNwZW5kZWQgPSB0cnVlOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdXNwZW5kKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRG
b3JQYW5uaW5nQW5kWm9vbWluZygpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgbV9pc1BhZ2VT
dXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1
ZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEZvclBh
bm5pbmdBbmRab29taW5nKCksIG1fcGFnZUlEKTsKK30KKwogYm9vbCBXZWJQYWdlUHJveHk6OnN1
cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fbWFpbkZyYW1lSGFz
Q3VzdG9tUmVwcmVzZW50YXRpb24gJiYgbV9tYWluRnJhbWUgJiYgIW1fbWFpbkZyYW1lLT5pc0Rp
c3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VEb2N1bWVudCgpOwpAQCAtMzEyMSw2ICszMTYwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCiAgICAgQVNTRVJUKG1fcGFnZUNs
aWVudCk7CiAKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9
IGZhbHNlOwogCiAgICAgaWYgKG1fbWFpbkZyYW1lKSB7CiAgICAgICAgIG1fdXJsQXRQcm9jZXNz
RXhpdCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCAyMGE2MTk1ZDgwOGE4YjhjZWQ2MWNiZWUwZTkxOThiM2JkYjQ5MzdmLi41
OTFjZTA4MzJjNzUzNzFlODMwN2VmYTlkZTJlYzYyMGNlY2YyMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MDAsNiArNDAwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRF
bmNvZGluZ05hbWU7IH0KIAorICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzdXNwZW5kKCk7
CisgICAgdm9pZCBzdXNwZW5kRm9yUGFubmluZ0FuZFpvb21pbmcoKTsKKwogICAgIGRvdWJsZSBl
c3RpbWF0ZWRQcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7
CkBAIC05NzMsNiArOTc3LDggQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwog
CisgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBi
b29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CiAjZW5kaWYKQEAgLTEwMDMsNiArMTAw
OSw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3Vz
bHk7CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBXZWJDb3JlOjpJbnRSZWN0
IG1fcGVuZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKKyNlbmRpZgogI2lmIFBMQVRGT1JN
KFFUKQogICAgIFdURjo6SGFzaFNldDxSZWZQdHI8UXROZXR3b3JrUmVxdWVzdERhdGE+ID4gbV9h
cHBsaWNhdGlvblNjaGVtZVJlcXVlc3RzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCmluZGV4IDNkMGUyMjIwNWQyNDQzZGE4Mjg3NGVkODc4YzMyNGM2NWY3MmExYmUu
LjU1ZWI3NmE5ODFlZWYwNjY4MzE3MzlkN2QyNmQ2YjkwNGFiYjAwZTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCiB7CiAgICAgaWYg
KFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYgKG1fZnJh
bWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFN0YXJ0UHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5k
aWRTdGFydFByb2dyZXNzKCk7CiAgICAgfQogfQogCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0
aW9uKCkKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAg
ICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAgICAgZG91YmxlIHBy
b2dyZXNzID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cHJvZ3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jl
c3MoKTsKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkQ2hhbmdlUHJvZ3Jlc3MocHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPmRpZENo
YW5nZVByb2dyZXNzKHByb2dyZXNzKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTc4NCw3ICs3
ODQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5v
dGlmaWNhdGlvbigpCiB7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCkpIHsKICAgICAgICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaFByb2dyZXNzKCkp
OworICAgICAgICAgICAgd2ViUGFnZS0+ZGlkRmluaXNoUHJvZ3Jlc3MoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3
OTVlZGRkMjFjMGM1YmI2YzYwNTJmNTFjZDdkNTRiYjY0YmM0MDFjLi4xMTBiZjhlYmU0NWQ1NjRk
YzQ2NDcwOTFiZTgzNmU5OGY3Y2JkMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgogI2luY2x1
ZGUgIlJ1bkxvb3AuaCIKKyNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTZXNz
aW9uU3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJC
YWNrRm9yd2FyZExpc3QuaCIKQEAgLTE5OSw2ICsyMDEsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cykKICAgICAsIG1fY2FjaGVkTWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlKGZhbHNlKQogICAg
ICwgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlKGZhbHNlKQogICAgICwgbV9j
YWNoZWRQYWdlQ291bnQoMCkKKyAgICAsIG1faXNMb2FkaW5nKGZhbHNlKQorICAgICwgbV9zdXNw
ZW5kSXNEZWxheWVkKGZhbHNlKQogICAgICwgbV9pc1Nob3dpbmdDb250ZXh0TWVudShmYWxzZSkK
ICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBtX2dlc3R1cmVSZWFjaGVkU2Nyb2xsaW5nTGltaXQo
ZmFsc2UpCkBAIC0xNTg3LDcgKzE1OTEsODcgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgbV91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7
CiB9Ci0gIAorCit2b2lkIFdlYlBhZ2U6OmRpZFN0YXJ0UHJvZ3Jlc3MoKQoreworICAgIG1faXNM
b2FkaW5nID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0
UHJvZ3Jlc3MoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91Ymxl
IHByb2dyZXNzKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdl
UHJvZ3Jlc3MocHJvZ3Jlc3MpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaWRGaW5pc2hQcm9ncmVz
cygpCit7CisgICAgbV9pc0xvYWRpbmcgPSBmYWxzZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmlzaFByb2dyZXNzKCkpOworCisgICAgaWYgKG1fc3VzcGVuZElzRGVs
YXllZCkKKyAgICAgICAgc3VzcGVuZCgpOworfQorCitib29sIFdlYlBhZ2U6OmNhblN1c3BlbmQo
KSBjb25zdAoreworICAgIHJldHVybiAhbV9pc0xvYWRpbmc7Cit9CisKK3ZvaWQgV2ViUGFnZTo6
c3VzcGVuZFdpdGhSZWFzb24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNw
ZW5zaW9uIHdoeSkKK3sKKyAgICBpZiAoIWNhblN1c3BlbmQoKSkgeworICAgICAgICAvLyBTdXNw
ZW5kIGF0IGEgbGF0dGVyIHRpbWUuCisgICAgICAgIG1fc3VzcGVuZElzRGVsYXllZCA9IHRydWU7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N1c3BlbmRJc0RlbGF5ZWQgPSBmYWxz
ZTsKKworICAgIG1fcGFnZS0+c2V0RGVmZXJzTG9hZGluZyh0cnVlKTsKKworICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBEb2N1bWVudCogZG9jID0gZnJh
bWUtPmRvY3VtZW50KCk7CisKKyAgICAgICAgZG9jLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyh3
aHkpOworICAgICAgICBkb2MtPnNjcmlwdFJ1bm5lcigpLT5zdXNwZW5kKCk7CisKKyAgICAgICAg
ZnJhbWUtPnNjcmlwdCgpLT5zZXRQYXVzZWQodHJ1ZSk7CisKKyAgICAgICAgQW5pbWF0aW9uQ29u
dHJvbGxlciogY29udHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKKyAgICAgICAgaWYgKGNv
bnRyb2xsZXIpCisgICAgICAgICAgICBjb250cm9sbGVyLT5zdXNwZW5kQW5pbWF0aW9ucygpOwor
ICAgIH0KK30KKwordm9pZCBXZWJQYWdlOjpyZXN1bWUoKQoreworICAgIGlmIChtX3N1c3BlbmRJ
c0RlbGF5ZWQpIHsKKyAgICAgICAgLy8gRG8gbm90IHJ1biByZXN1bWUsIGlmIHN1c3BlbmQgaXMg
cGVuZGluZyBhbmQKKyAgICAgICAgLy8gbWFrZSBzdXJlIGRlbGF5ZWQgcGVuZGluZyBpcyBjYW5j
ZWxsZWQsIHdoZW4gcmVzdW1lIGlzIGNhbGxlZC4KKyAgICAgICAgbV9zdXNwZW5kSXNEZWxheWVk
ID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1
bWVudCgpOworCisgICAgICAgIGRvYy0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOworICAgICAg
ICBkb2MtPnNjcmlwdFJ1bm5lcigpLT5yZXN1bWUoKTsKKworICAgICAgICBmcmFtZS0+c2NyaXB0
KCktPnNldFBhdXNlZChmYWxzZSk7CisKKyAgICAgICAgQW5pbWF0aW9uQ29udHJvbGxlciogY29u
dHJvbGxlciA9IGZyYW1lLT5hbmltYXRpb24oKTsKKyAgICAgICAgaWYgKGNvbnRyb2xsZXIpCisg
ICAgICAgICAgICBjb250cm9sbGVyLT5yZXN1bWVBbmltYXRpb25zKCk7CisgICAgfQorCisgICAg
Ly8gUmVzdW1lIGxvYWRpbmcgbGFzdC4gT3JkZXIgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHNldERl
ZmVyc0xvYWRpbmcKKyAgICAvLyBjYW4gc3luY3Jvbm91c2x5IGRlbGl2ZXIgY29udGVudCB0byBs
aXN0ZW5lcnMgKHN1Y2ggdXMgWE1MSFRUUFJlcXVlc3QpLgorICAgIC8vIExpc3RlbmVycyBuZWVk
IHRvIGJlIHJlc3VtZWQgYnkgdGhlIHRpbWUgbG9hZCBkZWZlcnJpbmcgaXMgdHVybmVkIG9mZi4K
KyAgICBtX3BhZ2UtPnNldERlZmVyc0xvYWRpbmcoZmFsc2UpOworfQorCisKIEludFBvaW50IFdl
YlBhZ2U6OnNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBJbnRQ
b2ludCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCmluZGV4IDQwMDcyY2ZiZjE1NjBjZDBiZDU4YmM4NGQxMTZiMmYyODEyMWQ0NjguLmYx
ZjQ0MTUxOGMxMzY5MmYwNWVkNmRmNWI2ODExODIzMTcwZDdlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNp
bmNsdWRlICJXZWJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQ4NCw2ICs0ODUsMTAg
QEAgcHVibGljOgogICAgIHZvaWQgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYp
OwogI2VuZGlmCiAKKyAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKKyAgICB2b2lkIGRpZENo
YW5nZVByb2dyZXNzKGRvdWJsZSBwcm9ncmVzcyk7CisgICAgdm9pZCBkaWRGaW5pc2hQcm9ncmVz
cygpOworCiBwcml2YXRlOgogICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAgLTU3Miw2ICs1NzcsMTEgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2Fk
SUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0
Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICBpbmxpbmUgdm9pZCBz
dXNwZW5kRm9yUGFubmluZ0FuZFpvb21pbmcoKSB7IHN1c3BlbmRXaXRoUmVhc29uKFdlYkNvcmU6
OkFjdGl2ZURPTU9iamVjdDo6UGFubmluZ0FuZFpvb21pbmcpOyB9CisgICAgaW5saW5lIHZvaWQg
c3VzcGVuZCgpIHsgc3VzcGVuZFdpdGhSZWFzb24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpE
b2N1bWVudFdpbGxHb1RvQmFja2dyb3VuZCk7IH0KKyAgICB2b2lkIHN1c3BlbmRXaXRoUmVhc29u
KFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpOworICAg
IHZvaWQgcmVzdW1lKCk7CisgICAgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwpAQCAtNzMzLDYgKzc0Myw5IEBAIHByaXZhdGU6CiAK
ICAgICB1bnNpZ25lZCBtX2NhY2hlZFBhZ2VDb3VudDsKIAorICAgIGJvb2wgbV9pc0xvYWRpbmc7
CisgICAgYm9vbCBtX3N1c3BlbmRJc0RlbGF5ZWQ7CisKICAgICBib29sIG1faXNTaG93aW5nQ29u
dGV4dE1lbnU7CiAKICNpZiBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDVhM2JiNDUwZWYx
MDViMWI4OTJhMDNjNDkxNTRiOTI4YmU2YTdlMDcuLjdlN2YyNjJjNzgwZjI5ZjI1N2JkY2I5NWIx
ZTBlNTc4Y2VmZjRlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05Nyw2ICs5NywxMCBAQCBtZXNzYWdlcyAt
PiBXZWJQYWdlIHsKICAgICBTZXRVc2VyQWdlbnQoV1RGOjpTdHJpbmcgdXNlckFnZW50KQogICAg
IFNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoV1RGOjpTdHJpbmcgZW5jb2RpbmdOYW1lKQogCisg
ICAgU3VzcGVuZEZvclBhbm5pbmdBbmRab29taW5nKCkKKyAgICBTdXNwZW5kKCkKKyAgICBSZXN1
bWUoKQorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgU2V0Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QoV2ViQ29yZTo6SW50UmVjdCByZWN0KQogICAgIFNldFZpZXdwb3J0U2l6ZShX
ZWJDb3JlOjpJbnRTaXplIHNpemUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122213</attachid>
            <date>2012-01-12 04:28:42 -0800</date>
            <delta_ts>2012-01-12 07:26:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120112132753.patch</filename>
            <type>text/plain</type>
            <size>17456</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkOWQyM2I5MTQ0ZjEy
ZGY2ODhhMzZiZmM5Y2UxNTk0ZmM2YjgzYy4uZTA4MGJhNjJkYzI1MzQ0ZTRhYmE2YThjOTlmYzgy
YjQ5ODJhNzgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTExICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIHJlYXNvbnMgZm9yIFVJLWJhY2tncm91bmRlZCBvciBVSS1hbmltYXRlZCBk
b2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjA2MworCisgICAgICAgIEJhc2VkIG9uIHRoZSBpbml0aWFsIHdvcmsgb2YKKyAgICAgICAg
ICAgIFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNvbT4gYW5kCisgICAgICAgICAg
ICBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAg
ICBBZGRzIHNwZWNpYWxpemVkIHJlYXNvbnMgZm9yIHN1c3BlbmQuIFRoZXNlIGFyZSBuZWVkZWQK
KyAgICAgICAgYmVjYXVzZSB0aG9zZSB0eXBlcyBvZiBzdXNwZW5kIGFyZSB0cmVhdGVkIHNsaWdo
dGx5CisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3Qu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisKIDIwMTItMDEtMTAgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bnRyb2R1Y2UgInNvdXJjZSIgY29sdW1uIGluIHRoZSBDU1MgcHJvZmlsZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNmUxY2UwMjgxMmYwMjExMGIzNDg4MTA0NzAwMDM2NThkOGQxMmIzZC4uNDU4Y2MyNDYwNTA5
MDMxZTg4YTE5NzY3OTY0YWRlZTRkYTZlNjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTAxLTExICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEu
Y29tPgorCisgICAgICAgIFN1c3BlbmQvUmVzdW1lIEFQSSBmb3IgV2ViS2l0MgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBC
YXNlZCBvbiB0aGUgaW5pdGlhbCB3b3JrIG9mCisgICAgICAgICAgICBaYWxhbiBCdWp0YXMgPHph
bGFuLmJ1anRhc0Bub2tpYS5jb20+LAorICAgICAgICAgICAgQmVuamFtaW4gUG91bGFpbiA8YmVu
amFtaW4ucG91bGFpbkBub2tpYS5jb20+IGFuZAorICAgICAgICAgICAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gPGtlbm5ldGguci5jaHJpc3RpYW5zZW5Abm9raWEuY29tPgorCisgICAgICAg
IEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3IgV2ViS2l0MiBhbmQgdXNlcyBpdCBpbiBR
dCB0bworICAgICAgICBzdXNwZW5kIHNjcmlwdGluZyBhbmQgYW5pbWF0aW9ucyBkdXJpbmcgcGFu
bmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVuZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRXaXRoUmVhc29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkQ3Jhc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFN0YXJ0UHJvZ3Jlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDaGFuZ2VQcm9ncmVzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmRX
aXRoUmVhc29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzdXNwZW5kV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTAxLTExICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIEFkZCB0aGUgZWRpdG9yIHJlY3QgdG8gdGhlIEVkaXRvclN0YXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGI3Y2E2NmMwMWQyMTI5ZmFl
MWU3OTA2ZGQ0NGQ0Mjk3YzM2ZjRjYi4uMWYwYTkwN2FlY2ViMGE3MGM1Yjk1YjgyZmExZWMzMjE5
NjNlNGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNjIsNyArNjIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gUmVhc29uRm9yU3VzcGVuc2lv
biB7CiAgICAgICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgICAgICBX
aWxsU2hvd0RpYWxvZywKLSAgICAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlCisg
ICAgICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSwKKyAgICAgICAgICAgIERvY3Vt
ZW50V2lsbEdvVG9CYWNrZ3JvdW5kLAorICAgICAgICAgICAgSG9zdFdpbmRvd1RyYW5zaXRpb24K
ICAgICAgICAgfTsKICAgICAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0ZjA2YWY2ZWE5M2E2NWRjZGQy
NjA4NzUwNjA4YWUyZjQ3OWYwMzEyLi5mYjBhNDdiZDJlMTQ5ZGVmMDgxZGZmODc1MWJmZjYzZTI2
OTIwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMx
MzgsNiArMzEzOCwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiB3aHkpCiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmU6
CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
b2N1bWVudFdpbGxHb1RvQmFja2dyb3VuZDoKKyAgICAgICAgICAgIHNldFBhdXNlZEludGVybmFs
KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSG9zdFdpbmRvd1RyYW5z
aXRpb246CiAgICAgICAgIGNhc2UgSmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkOgogICAgICAgICBj
YXNlIFdpbGxTaG93RGlhbG9nOgogICAgICAgICAgICAgLy8gRG8gbm90aGluZywgd2UgZG9uJ3Qg
cGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhlc2UgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA0M2Q0MGI5YjMxZDcy
YzhmYmFmMjVmODYxNTIzZWU3YmYzNDMzMGI4Li42NjEzNmZkMzM1ZWRjODZjZDIxZDcxYmQyZDU2
MjQ5NTcyZWQ0NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTE3OSwxMSArMTc5LDEzIEBAIHZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6Ol9xX29uSWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkws
IGNvbnN0CiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9zdXNwZW5kKCkKIHsKICAgICBw
YWdlSXNTdXNwZW5kZWQgPSB0cnVlOworICAgIHdlYlBhZ2VQcm94eS0+c3VzcGVuZFdpdGhSZWFz
b24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpIb3N0V2luZG93VHJhbnNpdGlvbik7CiB9CiAK
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3Jlc3VtZSgpCiB7CiAgICAgcGFnZUlzU3Vz
cGVuZGVkID0gZmFsc2U7CisgICAgd2ViUGFnZVByb3h5LT5yZXN1bWUoKTsKIAogICAgIGlmIChp
c1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpIHsKICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQ
YWdlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDdlMDhjZWNkODE5NDA3N2QwMzUzNzZhYWE5NDQ3MGRhNTM0OGZlYmEuLmU0ZTUwNTI0Y2E0
YWY5Yzc0NjIwYmJjN2JkNTNjNmZhNTU2MTUzNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgpAQCAtMTg1LDYgKzE4Niw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBh
c3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50cyhmYWxz
ZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9pc1BhZ2VTdXNwZW5k
ZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNlbmRp
ZgpAQCAtODE0LDcgKzgxNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KSwgbV9wYWdlSUQpOworICAgIGlmIChtX2lz
UGFnZVN1c3BlbmRlZCkKKyAgICAgICAgbV9wZW5kaW5nVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
ID0gcmVjdDsKKyAgICBlbHNlCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QocmVjdCksIG1fcGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpA
QCAtMTEwOCw2ICsxMTEzLDQ1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAgICAgc2V0VXNlckFnZW50KG1fY3Vz
dG9tVXNlckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZSgpCit7CisgICAg
aWYgKCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisgICAgaWYgKCFtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QobV9wZW5kaW5nVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSBJ
bnRSZWN0KCk7CisgICAgfQorI2VuZGlmCisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3VtZSgpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYTo6UmVzdW1lUGFpbnRpbmcoKSwgbV9wYWdlSUQpOworfQorCit2b2lk
IFdlYlBhZ2VQcm94eTo6c3VzcGVuZCgpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgbV9pc1Bh
Z2VTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0g
dHJ1ZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6OlN1c3Bl
bmRQYWludGluZygpLCBtX3BhZ2VJRCk7CisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTdXNwZW5kKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN1
c3BlbmRXaXRoUmVhc29uKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVu
c2lvbiB3aHkpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKKworICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZFdpdGhSZWFzb24od2h5KSwg
bV9wYWdlSUQpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2Rpbmco
KSBjb25zdAogewogICAgIHJldHVybiAhbV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlv
biAmJiBtX21haW5GcmFtZSAmJiAhbV9tYWluRnJhbWUtPmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJ
bWFnZURvY3VtZW50KCk7CkBAIC0zMTIxLDYgKzMxNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZENyYXNoKCkKICAgICBBU1NFUlQobV9wYWdlQ2xpZW50KTsKIAogICAgIG1faXNW
YWxpZCA9IGZhbHNlOworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBpZiAo
bV9tYWluRnJhbWUpIHsKICAgICAgICAgbV91cmxBdFByb2Nlc3NFeGl0ID0gbV9tYWluRnJhbWUt
PnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDIwYTYx
OTVkODA4YThiOGNlZDYxY2JlZTBlOTE5OGIzYmRiNDkzN2YuLjYxNDllZGMzNzlkMDc4NGE3ZTFi
OGFmZGFhMDFhZDMxYmE2NjU2MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgog
I2luY2x1ZGUgIldlYlJlc291cmNlTG9hZENsaWVudC5oIgogI2luY2x1ZGUgIldlYlVJQ2xpZW50
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC00MDAsNiArNDAxLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3Ry
aW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRF
bmNvZGluZ05hbWU7IH0KIAorICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzdXNwZW5kKCk7
CisgICAgdm9pZCBzdXNwZW5kV2l0aFJlYXNvbihXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OlJl
YXNvbkZvclN1c3BlbnNpb24gd2h5KTsKKwogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzcygp
IGNvbnN0OwogCiAgICAgdm9pZCB0ZXJtaW5hdGVQcm9jZXNzKCk7CkBAIC05NzMsNiArOTc4LDgg
QEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcGFnZUlEOwogCisgICAgYm9vbCBtX2lzUGFn
ZVN1c3BlbmRlZDsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIG1faXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQ7CiAjZW5kaWYKQEAgLTEwMDMsNiArMTAxMCw5IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNocm9ub3VzbHk7CiAKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcGVuZGluZ1Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZTsKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQogICAgIFdURjo6SGFz
aFNldDxSZWZQdHI8UXROZXR3b3JrUmVxdWVzdERhdGE+ID4gbV9hcHBsaWNhdGlvblNjaGVtZVJl
cXVlc3RzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDNk
MGUyMjIwNWQyNDQzZGE4Mjg3NGVkODc4YzMyNGM2NWY3MmExYmUuLjVlMDMyMzRlMDY4MGIxN2Iz
YmM1NjUyMWZkOTE5MDhmZDBhNjhiYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFBy
b2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCiB7CiAgICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYgKG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkp
Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0
YXJ0UHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5wb3N0UHJvZ3Jlc3NTdGFydGVk
KCk7CiAgICAgfQogfQogCkBAIC03NzUsNyArNzc1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKICAgICBpZiAo
V2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBpZiAobV9mcmFt
ZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAgICAgZG91YmxlIHByb2dyZXNzID0gd2ViUGFn
ZS0+Y29yZVBhZ2UoKS0+cHJvZ3Jlc3MoKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKLSAgICAgICAg
ICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlUHJvZ3Jl
c3MocHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnBvc3RQcm9ncmVzc0NoYW5nZWQo
cHJvZ3Jlc3MpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkK
IHsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkgewogICAgICAg
ICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoUHJvZ3Jlc3MoKSk7CisgICAgICAgICAg
ICB3ZWJQYWdlLT5wb3N0UHJvZ3Jlc3NGaW5pc2hlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDc5NWVkZGQyMWMw
YzViYjZjNjA1MmY1MWNkN2Q1NGJiNjRiYzQwMWMuLmFmZmM2YmIyN2Y4ZDI3OTRhMTI4ZWNiMTE3
YzZmMmNjMjQ3YTlhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwLCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwNCw2ICsxMDUsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFJ1bm5lci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
aXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTE5OSw2ICsyMDEsOCBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKICAgICAsIG1fY2FjaGVkTWFpbkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRl
KGZhbHNlKQogICAgICwgbV9jYWNoZWRNYWluRnJhbWVJc1Bpbm5lZFRvUmlnaHRTaWRlKGZhbHNl
KQogICAgICwgbV9jYWNoZWRQYWdlQ291bnQoMCkKKyAgICAsIG1faXNMb2FkaW5nKGZhbHNlKQor
ICAgICwgbV9zdXNwZW5kSXNEZWxheWVkKGZhbHNlKQogICAgICwgbV9pc1Nob3dpbmdDb250ZXh0
TWVudShmYWxzZSkKICNpZiBQTEFURk9STShXSU4pCiAgICAgLCBtX2dlc3R1cmVSZWFjaGVkU2Ny
b2xsaW5nTGltaXQoZmFsc2UpCkBAIC0xNTg3LDcgKzE1OTEsOTAgQEAgdm9pZCBXZWJQYWdlOjpz
ZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgbV91c2VyQWdlbnQg
PSB1c2VyQWdlbnQ7CiB9Ci0gIAorCit2b2lkIFdlYlBhZ2U6OnBvc3RQcm9ncmVzc1N0YXJ0ZWQo
KQoreworICAgIG1faXNMb2FkaW5nID0gdHJ1ZTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFN0YXJ0UHJvZ3Jlc3MoKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6cG9zdFByb2dy
ZXNzQ2hhbmdlZChkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRDaGFuZ2VQcm9ncmVzcyhwcm9ncmVzcykpOworfQorCit2b2lkIFdlYlBhZ2U6
OnBvc3RQcm9ncmVzc0ZpbmlzaGVkKCkKK3sKKyAgICBtX2lzTG9hZGluZyA9IGZhbHNlOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoUHJvZ3Jlc3MoKSk7CisKKyAg
ICBpZiAobV9zdXNwZW5kSXNEZWxheWVkKQorICAgICAgICBzdXNwZW5kV2l0aFJlYXNvbihtX2Rl
bGF5ZWRTdXNwZW5kUmVhc29uKTsKK30KKworYm9vbCBXZWJQYWdlOjpjYW5TdXNwZW5kKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nOworfQorCit2b2lkIFdlYlBhZ2U6OnN1c3Bl
bmRXaXRoUmVhc29uKHVpbnQzMl90IHJlYXNvbkZvclN1c3BlbnNpb24pCit7CisgICAgV2ViQ29y
ZTo6QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSA9IChXZWJDb3JlOjpB
Y3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24pcmVhc29uRm9yU3VzcGVuc2lvbjsK
KyAgICBpZiAoIWNhblN1c3BlbmQoKSkgeworICAgICAgICAvLyBTdXNwZW5kIGF0IGEgbGF0ZXIg
dGltZS4KKyAgICAgICAgbV9zdXNwZW5kSXNEZWxheWVkID0gdHJ1ZTsKKyAgICAgICAgbV9kZWxh
eWVkU3VzcGVuZFJlYXNvbiA9IHdoeTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1f
c3VzcGVuZElzRGVsYXllZCA9IGZhbHNlOworCisgICAgbV9wYWdlLT5zZXREZWZlcnNMb2FkaW5n
KHRydWUpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKworICAgICAgICAvLyBzdXNw
ZW5kIGFjdGl2ZSBET00gb2JqZWN0cyBzdWNoIGFzIEhUTUwgPHZpZGVvPgorICAgICAgICBkb2Mt
PnN1c3BlbmRBY3RpdmVET01PYmplY3RzKHdoeSk7CisgICAgICAgIC8vIHN1c3BlbmQgdGltaW5n
LXRyaWdnZXJlZCBqYXZhc2NyaXB0IGV2ZW50cworICAgICAgICBkb2MtPnNjcmlwdFJ1bm5lcigp
LT5zdXNwZW5kKCk7CisgICAgICAgIC8vIHBhdXNlIHBhcnNpbmcgYW5kIHBhcnNpbmctdHJpZ2dl
cmVkIGphdmFzY3JpcHQgZXZlbnRzCisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2Vk
KHRydWUpOworCisgICAgICAgIC8vIHN1c3BlbmQgc2NyaXB0ZWQgYW5pbWF0aW9ucworICAgICAg
ICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigpOwor
ICAgICAgICBpZiAoY29udHJvbGxlcikKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnN1c3BlbmRB
bmltYXRpb25zKCk7CisgICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgpCit7CisgICAg
aWYgKG1fc3VzcGVuZElzRGVsYXllZCkgeworICAgICAgICAvLyBXZSBhcmUgbm90IHN1c3BlbmRl
ZCB5ZXQgYXMgc3VzcGVuZCB3YXMgZGVsYXllZCwgc28gd2UganVzdCBjYW5jZWwgdGhlIHN1c3Bl
bmQuCisgICAgICAgIG1fc3VzcGVuZElzRGVsYXllZCA9IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKworICAgICAgICBkb2MtPnJl
c3VtZUFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICAgICAgZG9jLT5zY3JpcHRSdW5uZXIoKS0+cmVz
dW1lKCk7CisgICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1c2VkKGZhbHNlKTsKKworICAg
ICAgICBBbmltYXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gZnJhbWUtPmFuaW1hdGlvbigp
OworICAgICAgICBpZiAoY29udHJvbGxlcikKKyAgICAgICAgICAgIGNvbnRyb2xsZXItPnJlc3Vt
ZUFuaW1hdGlvbnMoKTsKKyAgICB9CisKKyAgICAvLyBNYWtlIHN1cmUgdG8gcmVzdW1lIGxvYWRp
bmcgYXMgdGhlIGxhc3Qgc3RlcC4gT3JkZXIgaXMgaW1wb3J0YW50LCBiZWNhdXNlIHNldERlZmVy
c0xvYWRpbmcKKyAgICAvLyBjYW4gc3luY3Jvbm91c2x5IGRlbGl2ZXIgY29udGVudCB0byBsaXN0
ZW5lcnMgKHN1Y2ggdXMgWE1MSFRUUFJlcXVlc3QpLgorICAgIC8vIExpc3RlbmVycyBuZWVkIHRv
IGJlIHJlc3VtZWQgYnkgdGhlIHRpbWUgbG9hZCBkZWZlcnJpbmcgaXMgdHVybmVkIG9mZi4KKyAg
ICBtX3BhZ2UtPnNldERlZmVyc0xvYWRpbmcoZmFsc2UpOworfQorCisKIEludFBvaW50IFdlYlBh
Z2U6OnNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBJbnRQb2lu
dCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCmluZGV4IDQwMDcyY2ZiZjE1NjBjZDBiZDU4YmM4NGQxMTZiMmYyODEyMWQ0NjguLjdkYmVk
NDhmMjkwMjU0YmM5YmE0OWRkODI1MjIxYTc4YmZkOGViMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUg
IlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNs
dWRlICJXZWJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KQEAgLTQ4NCw2ICs0ODUsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwog
I2VuZGlmCiAKKyAgICB2b2lkIHBvc3RQcm9ncmVzc1N0YXJ0ZWQoKTsKKyAgICB2b2lkIHBvc3RQ
cm9ncmVzc0NoYW5nZWQoZG91YmxlIHByb2dyZXNzKTsKKyAgICB2b2lkIHBvc3RQcm9ncmVzc0Zp
bmlzaGVkKCk7CisKIHByaXZhdGU6CiAgICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsKIApAQCAtNTcyLDYgKzU3NywxMCBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93
bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIGlubGluZSB2
b2lkIHN1c3BlbmQoKSB7IHN1c3BlbmRXaXRoUmVhc29uKFdlYkNvcmU6OkFjdGl2ZURPTU9iamVj
dDo6RG9jdW1lbnRXaWxsR29Ub0JhY2tncm91bmQpOyB9CisgICAgdm9pZCBzdXNwZW5kV2l0aFJl
YXNvbih1aW50MzJfdCByZWFzb25Gb3JTdXNwZW5zaW9uKTsKKyAgICB2b2lkIHJlc3VtZSgpOwor
ICAgIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZv
aWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKTsKQEAgLTczMiw2ICs3NDEsMTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY2FjaGVk
TWFpbkZyYW1lSXNQaW5uZWRUb1JpZ2h0U2lkZTsKIAogICAgIHVuc2lnbmVkIG1fY2FjaGVkUGFn
ZUNvdW50OworICAgIFdlYkNvcmU6OkFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lv
biBtX2RlbGF5ZWRTdXNwZW5kUmVhc29uOworCisgICAgYm9vbCBtX2lzTG9hZGluZzsKKyAgICBi
b29sIG1fc3VzcGVuZElzRGVsYXllZDsKIAogICAgIGJvb2wgbV9pc1Nob3dpbmdDb250ZXh0TWVu
dTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA1YTNiYjQ1MGVmMTA1YjFiODkyYTAzYzQ5MTU0YjkyOGJlNmE3
ZTA3Li4zYWQwODg0YjhlNzIwNjVhZmUyNzk3YTUwZWNiZDQ1ODgzZmQzMGRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtOTcsNiArOTcsMTAgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0VXNlckFn
ZW50KFdURjo6U3RyaW5nIHVzZXJBZ2VudCkKICAgICBTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1l
KFdURjo6U3RyaW5nIGVuY29kaW5nTmFtZSkKIAorICAgIFN1c3BlbmRXaXRoUmVhc29uKHVpbnQz
Ml90IHJlYXNvbkZvclN1c3BlbnNpb24pCisgICAgU3VzcGVuZCgpCisgICAgUmVzdW1lKCkKKwog
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFNldEZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KFdlYkNvcmU6OkludFJlY3QgcmVjdCkKICAgICBTZXRWaWV3cG9ydFNpemUoV2ViQ29yZTo6
SW50U2l6ZSBzaXplKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122239</attachid>
            <date>2012-01-12 07:26:28 -0800</date>
            <delta_ts>2012-01-20 05:31:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120112162508.patch</filename>
            <type>text/plain</type>
            <size>17275</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjlkOWQyM2I5MTQ0ZjEy
ZGY2ODhhMzZiZmM5Y2UxNTk0ZmM2YjgzYy4uZTA4MGJhNjJkYzI1MzQ0ZTRhYmE2YThjOTlmYzgy
YjQ5ODJhNzgwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTExICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIHJlYXNvbnMgZm9yIFVJLWJhY2tncm91bmRlZCBvciBVSS1hbmltYXRlZCBk
b2N1bWVudHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NjA2MworCisgICAgICAgIEJhc2VkIG9uIHRoZSBpbml0aWFsIHdvcmsgb2YKKyAgICAgICAg
ICAgIFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNvbT4gYW5kCisgICAgICAgICAg
ICBCZW5qYW1pbiBQb3VsYWluIDxiZW5qYW1pbi5wb3VsYWluQG5va2lhLmNvbT4KKworICAgICAg
ICBBZGRzIHNwZWNpYWxpemVkIHJlYXNvbnMgZm9yIHN1c3BlbmQuIFRoZXNlIGFyZSBuZWVkZWQK
KyAgICAgICAgYmVjYXVzZSB0aG9zZSB0eXBlcyBvZiBzdXNwZW5kIGFyZSB0cmVhdGVkIHNsaWdo
dGx5CisgICAgICAgIGRpZmZlcmVudC4KKworICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3Qu
aDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6CisKIDIwMTItMDEtMTAgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBp
bnRyb2R1Y2UgInNvdXJjZSIgY29sdW1uIGluIHRoZSBDU1MgcHJvZmlsZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNmUxY2UwMjgxMmYwMjExMGIzNDg4MTA0NzAwMDM2NThkOGQxMmIzZC4uNDU4Y2MyNDYwNTA5
MDMxZTg4YTE5NzY3OTY0YWRlZTRkYTZlNjNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBA
CisyMDEyLTAxLTExICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEu
Y29tPgorCisgICAgICAgIFN1c3BlbmQvUmVzdW1lIEFQSSBmb3IgV2ViS2l0MgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBC
YXNlZCBvbiB0aGUgaW5pdGlhbCB3b3JrIG9mCisgICAgICAgICAgICBaYWxhbiBCdWp0YXMgPHph
bGFuLmJ1anRhc0Bub2tpYS5jb20+LAorICAgICAgICAgICAgQmVuamFtaW4gUG91bGFpbiA8YmVu
amFtaW4ucG91bGFpbkBub2tpYS5jb20+IGFuZAorICAgICAgICAgICAgS2VubmV0aCBSb2hkZSBD
aHJpc3RpYW5zZW4gPGtlbm5ldGguci5jaHJpc3RpYW5zZW5Abm9raWEuY29tPgorCisgICAgICAg
IEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3IgV2ViS2l0MiBhbmQgdXNlcyBpdCBpbiBR
dCB0bworICAgICAgICBzdXNwZW5kIHNjcmlwdGluZyBhbmQgYW5pbWF0aW9ucyBkdXJpbmcgcGFu
bmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVuZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRXaXRoUmVhc29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkQ3Jhc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwb3N0UHJvZ3Jlc3NF
c3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxv
YWRlckNsaWVudDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFN0YXJ0UHJvZ3Jlc3Mp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDaGFuZ2VQcm9ncmVzcyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y2FuU3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmRX
aXRoUmVhc29uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpzdXNwZW5kV2l0aFJlYXNvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmQp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTAxLTExICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBbUXRdIEFkZCB0aGUgZWRpdG9yIHJlY3QgdG8gdGhlIEVkaXRvclN0YXRl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGI3Y2E2NmMwMWQyMTI5ZmFl
MWU3OTA2ZGQ0NGQ0Mjk3YzM2ZjRjYi4uMWYwYTkwN2FlY2ViMGE3MGM1Yjk1YjgyZmExZWMzMjE5
NjNlNGU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNjIsNyArNjIs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gUmVhc29uRm9yU3VzcGVuc2lv
biB7CiAgICAgICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgICAgICBX
aWxsU2hvd0RpYWxvZywKLSAgICAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlCisg
ICAgICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSwKKyAgICAgICAgICAgIERvY3Vt
ZW50V2lsbEdvVG9CYWNrZ3JvdW5kLAorICAgICAgICAgICAgSG9zdFdpbmRvd1RyYW5zaXRpb24K
ICAgICAgICAgfTsKICAgICAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA0ZjA2YWY2ZWE5M2E2NWRjZGQy
NjA4NzUwNjA4YWUyZjQ3OWYwMzEyLi5mYjBhNDdiZDJlMTQ5ZGVmMDgxZGZmODc1MWJmZjYzZTI2
OTIwZjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMx
MzgsNiArMzEzOCwxMCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQoUmVhc29uRm9y
U3VzcGVuc2lvbiB3aHkpCiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmU6
CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
b2N1bWVudFdpbGxHb1RvQmFja2dyb3VuZDoKKyAgICAgICAgICAgIHNldFBhdXNlZEludGVybmFs
KHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSG9zdFdpbmRvd1RyYW5z
aXRpb246CiAgICAgICAgIGNhc2UgSmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkOgogICAgICAgICBj
YXNlIFdpbGxTaG93RGlhbG9nOgogICAgICAgICAgICAgLy8gRG8gbm90aGluZywgd2UgZG9uJ3Qg
cGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhlc2UgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA0M2Q0MGI5YjMxZDcy
YzhmYmFmMjVmODYxNTIzZWU3YmYzNDMzMGI4Li42NjEzNmZkMzM1ZWRjODZjZDIxZDcxYmQyZDU2
MjQ5NTcyZWQ0NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTE3OSwxMSArMTc5LDEzIEBAIHZvaWQgUVF1aWNrV2ViVmll
d1ByaXZhdGU6Ol9xX29uSWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkws
IGNvbnN0CiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9zdXNwZW5kKCkKIHsKICAgICBw
YWdlSXNTdXNwZW5kZWQgPSB0cnVlOworICAgIHdlYlBhZ2VQcm94eS0+c3VzcGVuZFdpdGhSZWFz
b24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpIb3N0V2luZG93VHJhbnNpdGlvbik7CiB9CiAK
IHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3Jlc3VtZSgpCiB7CiAgICAgcGFnZUlzU3Vz
cGVuZGVkID0gZmFsc2U7CisgICAgd2ViUGFnZVByb3h5LT5yZXN1bWUoKTsKIAogICAgIGlmIChp
c1RyYW5zaXRpb25pbmdUb05ld1BhZ2UpIHsKICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQ
YWdlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDdlMDhjZWNkODE5NDA3N2QwMzUzNzZhYWE5NDQ3MGRhNTM0OGZlYmEuLjk3ODRmNmE4YjNj
MmYxNTY5ODFlNDY1Zjg4YTM2MzVlYzk5NDVhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hl
ck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRmluZEluZGljYXRvci5oIgpAQCAtMTg1LDYgKzE4Niw3
IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBh
c3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50cyhmYWxz
ZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9pc1BhZ2VTdXNwZW5k
ZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNlbmRp
ZgpAQCAtODE0LDcgKzgxNiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRWaXNpYmxl
Q29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAoIWlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChyZWN0KSwgbV9wYWdlSUQpOworICAgIGlmIChtX2lz
UGFnZVN1c3BlbmRlZCkKKyAgICAgICAgbV9wZW5kaW5nVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
ID0gcmVjdDsKKyAgICBlbHNlCisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QocmVjdCksIG1fcGFnZUlEKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpA
QCAtMTEwOCw2ICsxMTEzLDQzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdl
bnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAgICAgc2V0VXNlckFnZW50KG1fY3Vz
dG9tVXNlckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZSgpCit7CisgICAg
aWYgKCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCisgICAgaWYgKCFtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUuaXNFbXB0
eSgpKSB7CisgICAgICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QobV9wZW5kaW5nVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKSwg
bV9wYWdlSUQpOworICAgICAgICBtX3BlbmRpbmdWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUgPSBJ
bnRSZWN0KCk7CisgICAgfQorI2VuZGlmCisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3VtZSgpLCBtX3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpz
dXNwZW5kKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSB8fCBtX2lzUGFnZVN1c3BlbmRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOworCisgICAgcHJv
Y2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kKCksIG1fcGFnZUlEKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRXaXRoUmVhc29uKFdlYkNvcmU6OkFjdGl2ZURP
TU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiB3aHkpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkg
fHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZFdpdGhSZWFzb24od2h5KSwgbV9wYWdlSUQpOworfQorCiBib29sIFdlYlBhZ2VQcm94
eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIHJldHVybiAhbV9tYWluRnJh
bWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiAmJiBtX21haW5GcmFtZSAmJiAhbV9tYWluRnJhbWUt
PmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KCk7CkBAIC0zMTIxLDYgKzMxNjMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBBU1NFUlQobV9w
YWdlQ2xpZW50KTsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1faXNQYWdlU3VzcGVu
ZGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9tYWluRnJhbWUpIHsKICAgICAgICAgbV91cmxBdFBy
b2Nlc3NFeGl0ID0gbV9tYWluRnJhbWUtPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDIwYTYxOTVkODA4YThiOGNlZDYxY2JlZTBlOTE5OGIzYmRiNDkz
N2YuLjYxNDllZGMzNzlkMDc4NGE3ZTFiOGFmZGFhMDFhZDMxYmE2NjU2MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZENsaWVudC5o
IgogI2luY2x1ZGUgIldlYlVJQ2xpZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Ry
YWdTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CkBAIC00MDAs
NiArNDAxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
Y29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25z
dCB7IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAorICAgIHZvaWQgcmVzdW1l
KCk7CisgICAgdm9pZCBzdXNwZW5kKCk7CisgICAgdm9pZCBzdXNwZW5kV2l0aFJlYXNvbihXZWJD
b3JlOjpBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gd2h5KTsKKwogICAgIGRv
dWJsZSBlc3RpbWF0ZWRQcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCB0ZXJtaW5hdGVQcm9j
ZXNzKCk7CkBAIC05NzMsNiArOTc4LDggQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcGFn
ZUlEOwogCisgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKKwogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBib29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CiAjZW5kaWYKQEAgLTEwMDMs
NiArMTAxMCw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fc2hvdWxkU2VuZEV2ZW50c1N5bmNo
cm9ub3VzbHk7CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IG1fcGVuZGluZ1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKKyNlbmRpZgogI2lmIFBM
QVRGT1JNKFFUKQogICAgIFdURjo6SGFzaFNldDxSZWZQdHI8UXROZXR3b3JrUmVxdWVzdERhdGE+
ID4gbV9hcHBsaWNhdGlvblNjaGVtZVJlcXVlc3RzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCmluZGV4IDNkMGUyMjIwNWQyNDQzZGE4Mjg3NGVkODc4YzMyNGM2NWY3
MmExYmUuLjVlMDMyMzRlMDY4MGIxN2IzYmM1NjUyMWZkOTE5MDhmZDBhNjhiYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC03NjYsNyArNzY2LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzU3RhcnRlZE5vdGlmaWNhdGlvbigpCiB7CiAg
ICAgaWYgKFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAgaWYg
KG1fZnJhbWUtPmlzTWFpbkZyYW1lKCkpCi0gICAgICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0UHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB3ZWJQ
YWdlLT5wb3N0UHJvZ3Jlc3NTdGFydGVkKCk7CiAgICAgfQogfQogCkBAIC03NzUsNyArNzc1LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6cG9zdFByb2dyZXNzRXN0aW1hdGVDaGFuZ2Vk
Tm90aWZpY2F0aW9uKCkKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2Uo
KSkgewogICAgICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAgICAg
ZG91YmxlIHByb2dyZXNzID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+cHJvZ3Jlc3MoKS0+ZXN0aW1h
dGVkUHJvZ3Jlc3MoKTsKLSAgICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkQ2hhbmdlUHJvZ3Jlc3MocHJvZ3Jlc3MpKTsKKyAgICAgICAgICAgIHdlYlBh
Z2UtPnBvc3RQcm9ncmVzc0NoYW5nZWQocHJvZ3Jlc3MpOwogICAgICAgICB9CiAgICAgfQogfQpA
QCAtNzg0LDcgKzc4NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBvc3RQcm9ncmVz
c0ZpbmlzaGVkTm90aWZpY2F0aW9uKCkKIHsKICAgICBpZiAoV2ViUGFnZSogd2ViUGFnZSA9IG1f
ZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBpZiAobV9mcmFtZS0+aXNNYWluRnJhbWUoKSkKLSAg
ICAgICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNo
UHJvZ3Jlc3MoKSk7CisgICAgICAgICAgICB3ZWJQYWdlLT5wb3N0UHJvZ3Jlc3NGaW5pc2hlZCgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IDc5NWVkZGQyMWMwYzViYjZjNjA1MmY1MWNkN2Q1NGJiNjRiYzQwMWMuLjE5
NTNiZjM1MmQ1N2EzNWFhOTczNzYzYTgzZjViNzEyNTJjYTYyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTEwNCw2ICsxMDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdFJ1bm5lci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAg
LTE5OSw2ICsyMDEsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICAsIG1fY2FjaGVkTWFp
bkZyYW1lSXNQaW5uZWRUb0xlZnRTaWRlKGZhbHNlKQogICAgICwgbV9jYWNoZWRNYWluRnJhbWVJ
c1Bpbm5lZFRvUmlnaHRTaWRlKGZhbHNlKQogICAgICwgbV9jYWNoZWRQYWdlQ291bnQoMCkKKyAg
ICAsIG1faXNMb2FkaW5nKGZhbHNlKQorICAgICwgbV9zdXNwZW5kSXNEZWxheWVkKGZhbHNlKQog
ICAgICwgbV9pc1Nob3dpbmdDb250ZXh0TWVudShmYWxzZSkKICNpZiBQTEFURk9STShXSU4pCiAg
ICAgLCBtX2dlc3R1cmVSZWFjaGVkU2Nyb2xsaW5nTGltaXQoZmFsc2UpCkBAIC0xNTg3LDcgKzE1
OTEsODkgQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCiB7CiAgICAgbV91c2VyQWdlbnQgPSB1c2VyQWdlbnQ7CiB9Ci0gIAorCit2b2lkIFdlYlBh
Z2U6OnBvc3RQcm9ncmVzc1N0YXJ0ZWQoKQoreworICAgIG1faXNMb2FkaW5nID0gdHJ1ZTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0UHJvZ3Jlc3MoKSk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6cG9zdFByb2dyZXNzQ2hhbmdlZChkb3VibGUgcHJvZ3Jlc3MpCit7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm9ncmVzcyhwcm9ncmVz
cykpOworfQorCit2b2lkIFdlYlBhZ2U6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkKCkKK3sKKyAgICBt
X2lzTG9hZGluZyA9IGZhbHNlOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
RmluaXNoUHJvZ3Jlc3MoKSk7CisKKyAgICBpZiAobV9zdXNwZW5kSXNEZWxheWVkKQorICAgICAg
ICBzdXNwZW5kV2l0aFJlYXNvbihtX2RlbGF5ZWRTdXNwZW5kUmVhc29uKTsKK30KKworYm9vbCBX
ZWJQYWdlOjpjYW5TdXNwZW5kKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faXNMb2FkaW5nOwor
fQorCit2b2lkIFdlYlBhZ2U6OnN1c3BlbmRXaXRoUmVhc29uKHVpbnQzMl90IHJlYXNvbkZvclN1
c3BlbnNpb24pCit7CisgICAgV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNw
ZW5zaW9uIHdoeSA9IChXZWJDb3JlOjpBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNp
b24pcmVhc29uRm9yU3VzcGVuc2lvbjsKKyAgICBpZiAoIWNhblN1c3BlbmQoKSkgeworICAgICAg
ICBtX3N1c3BlbmRJc0RlbGF5ZWQgPSB0cnVlOworICAgICAgICBtX2RlbGF5ZWRTdXNwZW5kUmVh
c29uID0gd2h5OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9zdXNwZW5kSXNEZWxh
eWVkID0gZmFsc2U7CisKKyAgICBtX3BhZ2UtPnNldERlZmVyc0xvYWRpbmcodHJ1ZSk7CisKKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRG9jdW1lbnQq
IGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworCisgICAgICAgIC8vIFN1c3BlbmQgYWN0aXZlIERP
TSBvYmplY3RzIHN1Y2ggYXMgSFRNTCA8dmlkZW8+LgorICAgICAgICBkb2MtPnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzKHdoeSk7CisgICAgICAgIC8vIFN1c3BlbmQgdGltaW5nLXRyaWdnZXJlZCBq
YXZhc2NyaXB0IGV2ZW50cy4KKyAgICAgICAgZG9jLT5zY3JpcHRSdW5uZXIoKS0+c3VzcGVuZCgp
OworICAgICAgICAvLyBQYXVzZSBwYXJzaW5nIGFuZCBwYXJzaW5nLXRyaWdnZXJlZCBqYXZhc2Ny
aXB0IGV2ZW50cy4KKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQYXVzZWQodHJ1ZSk7CisK
KyAgICAgICAgLy8gc3VzcGVuZCBzY3JpcHRlZCBhbmltYXRpb25zCisgICAgICAgIEFuaW1hdGlv
bkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgICAgIGlm
IChjb250cm9sbGVyKQorICAgICAgICAgICAgY29udHJvbGxlci0+c3VzcGVuZEFuaW1hdGlvbnMo
KTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViUGFnZTo6cmVzdW1lKCkKK3sKKyAgICBpZiAobV9zdXNw
ZW5kSXNEZWxheWVkKSB7CisgICAgICAgIC8vIFdlIGFyZSBub3Qgc3VzcGVuZGVkIHlldCBhcyBz
dXNwZW5kIHdhcyBkZWxheWVkLCBzbyB3ZSBqdXN0IGNhbmNlbCB0aGUgc3VzcGVuZC4KKyAgICAg
ICAgbV9zdXNwZW5kSXNEZWxheWVkID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgRG9jdW1l
bnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpOworCisgICAgICAgIGRvYy0+cmVzdW1lQWN0aXZl
RE9NT2JqZWN0cygpOworICAgICAgICBkb2MtPnNjcmlwdFJ1bm5lcigpLT5yZXN1bWUoKTsKKyAg
ICAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRQYXVzZWQoZmFsc2UpOworCisgICAgICAgIEFuaW1h
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBmcmFtZS0+YW5pbWF0aW9uKCk7CisgICAgICAg
IGlmIChjb250cm9sbGVyKQorICAgICAgICAgICAgY29udHJvbGxlci0+cmVzdW1lQW5pbWF0aW9u
cygpOworICAgIH0KKworICAgIC8vIE1ha2Ugc3VyZSB0byByZXN1bWUgbG9hZGluZyBhcyB0aGUg
bGFzdCBzdGVwLiBPcmRlciBpcyBpbXBvcnRhbnQsIGJlY2F1c2Ugc2V0RGVmZXJzTG9hZGluZwor
ICAgIC8vIGNhbiBzeW5jcm9ub3VzbHkgZGVsaXZlciBjb250ZW50IHRvIGxpc3RlbmVycyAoc3Vj
aCB1cyBYTUxIVFRQUmVxdWVzdCkuCisgICAgLy8gTGlzdGVuZXJzIG5lZWQgdG8gYmUgcmVzdW1l
ZCBieSB0aGUgdGltZSBsb2FkIGRlZmVycmluZyBpcyB0dXJuZWQgb2ZmLgorICAgIG1fcGFnZS0+
c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7Cit9CisKKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVu
VG9XaW5kb3coY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1Bv
aW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
NDAwNzJjZmJmMTU2MGNkMGJkNThiYzg0ZDExNmIyZjI4MTIxZDQ2OC4uN2RiZWQ0OGYyOTAyNTRi
YzliYTQ5ZGQ4MjUyMjFhNzhiZmQ4ZWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiU2FuZGJveEV4
dGVuc2lvbi5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlVu
ZG9TdGVwLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgpAQCAtNDg0LDYgKzQ4NSwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBnZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAor
ICAgIHZvaWQgcG9zdFByb2dyZXNzU3RhcnRlZCgpOworICAgIHZvaWQgcG9zdFByb2dyZXNzQ2hh
bmdlZChkb3VibGUgcHJvZ3Jlc3MpOworICAgIHZvaWQgcG9zdFByb2dyZXNzRmluaXNoZWQoKTsK
KwogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwogCkBAIC01NzIsNiArNTc3LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKTsK
ICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3Rv
bVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CisgICAgaW5saW5lIHZvaWQgc3VzcGVu
ZCgpIHsgc3VzcGVuZFdpdGhSZWFzb24oV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVu
dFdpbGxHb1RvQmFja2dyb3VuZCk7IH0KKyAgICB2b2lkIHN1c3BlbmRXaXRoUmVhc29uKHVpbnQz
Ml90IHJlYXNvbkZvclN1c3BlbnNpb24pOworICAgIHZvaWQgcmVzdW1lKCk7CisgICAgYm9vbCBj
YW5TdXNwZW5kKCkgY29uc3Q7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwpA
QCAtNzMyLDYgKzc0MSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVJ
c1Bpbm5lZFRvUmlnaHRTaWRlOwogCiAgICAgdW5zaWduZWQgbV9jYWNoZWRQYWdlQ291bnQ7Cisg
ICAgV2ViQ29yZTo6QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIG1fZGVsYXll
ZFN1c3BlbmRSZWFzb247CisKKyAgICBib29sIG1faXNMb2FkaW5nOworICAgIGJvb2wgbV9zdXNw
ZW5kSXNEZWxheWVkOwogCiAgICAgYm9vbCBtX2lzU2hvd2luZ0NvbnRleHRNZW51OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCmluZGV4IDVhM2JiNDUwZWYxMDViMWI4OTJhMDNjNDkxNTRiOTI4YmU2YTdlMDcuLjNhZDA4
ODRiOGU3MjA2NWFmZTI3OTdhNTBlY2JkNDU4ODNmZDMwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05Nyw2
ICs5NywxMCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRVc2VyQWdlbnQoV1RGOjpT
dHJpbmcgdXNlckFnZW50KQogICAgIFNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoV1RGOjpTdHJp
bmcgZW5jb2RpbmdOYW1lKQogCisgICAgU3VzcGVuZFdpdGhSZWFzb24odWludDMyX3QgcmVhc29u
Rm9yU3VzcGVuc2lvbikKKyAgICBTdXNwZW5kKCkKKyAgICBSZXN1bWUoKQorCiAjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgU2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoV2ViQ29y
ZTo6SW50UmVjdCByZWN0KQogICAgIFNldFZpZXdwb3J0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNp
emUpCg==
</data>
<flag name="review"
          id="122980"
          type_id="1"
          status="-"
          setter="sam"
    />
    <flag name="commit-queue"
          id="122981"
          type_id="3"
          status="-"
          setter="allan.jensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123293</attachid>
            <date>2012-01-20 05:31:27 -0800</date>
            <delta_ts>2012-01-20 06:07:18 -0800</delta_ts>
            <desc>WebCore side of patch</desc>
            <filename>0001-WebCore-part-of-timerspaused-patch.patch</filename>
            <type>text/plain</type>
            <size>12062</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">RnJvbSBmMWZhMWJmMzljODdmMjRkYjU5MjE1MjY0ZTk1YzZiZWE4YmQ2ZjM5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGFsbGFuLmplbnNlbkBu
b2tpYS5jb20+CkRhdGU6IFRodSwgMTkgSmFuIDIwMTIgMTI6Mjk6NTIgKzAxMDAKU3ViamVjdDog
W1BBVENIIDEvMl0gV2ViQ29yZSBwYXJ0IG9mIHRpbWVyc3BhdXNlZCBwYXRjaAoKLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysr
KysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCAgICAg
ICAgICB8ICAgIDMgKy0KIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcCB8ICAgMTAgKysrKystCiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oICAgfCAgICA2ICsrKwogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCAgICAgIHwgICAgMyArLQogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgICAgICAg
ICAgICAgICAgIHwgICA0NSArKysrKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggICAgICAgICAgICAgICAgICAgfCAgICA3ICsrKy0KIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICB8ICAgIDQgKysKIDggZmlsZXMgY2hh
bmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU2
MWE0NDIuLjBkZGRiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMi0wMS0xOSAg
QWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAg
ICBQYXVzaW5nIEFjdGl2ZURPTU9iamVjdHMgcmVsaWFibHkgaW4gRnJhbWUgYW5kIERvY3VtZW50
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9t
L0FjdGl2ZURPTU9iamVjdC5oOgorCisgICAgICAgICAgICBOZXcgUmVhc29uRm9yU3VzcGVuc2lv
bjogRG9jdW1lbnRXaWxsQmVQYXVzZWQuCisgICAgICAgICAgICBJZGVudGljYWwgdG8gbmFtZSBp
biBpT1MgYnJhbmNoIG9mIFdlYkNvcmUKKworICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRDcmVhdGVB
Y3RpdmVET01PYmplY3QpOgorICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojppc1N1c3BlbmRpbmdB
Y3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnJlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKToKKworICAgICAgICAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCBub3cgcmVtZW1iZXJzIGl0IGlzIHN1c3BlbmRpbmcgQWN0
aXZlRE9NT2JqZWN0cworICAgICAgICAgICAgc28gbmV3IEFjdGl2ZURPTU9iamVjdHMgYXJlIGFs
c28gc3VzcGVuZGVkLgorCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRBY3RpdmVET01PYmplY3RzUGF1c2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXRBY3RpdmVET01PYmplY3RzUGF1c2VkSW50ZXJu
YWwpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjph
Y3RpdmVET01PYmplY3RzUGF1c2VkKToKKworICAgICAgICAgICAgRnJhbWUgbm93IG1haW50YWlu
cyBhIHN0YXRlIG9mIGJlaW5nIHBhdXNlZCwgd2hpY2ggaXMgaW5oZXJpdGVkIHRvIGFsbCBjaGls
ZC1mcmFtZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6d2lsbFJlbmRlckltYWdlKToKKworICAgICAgICAg
ICAgV2lsbFJlbmRlckltYWdlIG5vdyBjaGVja3MgZm9yIHN1c3BlbnNpb24uIFRoaXMgY2F1c2Vz
IGFuaW1hdGVkIGltYWdlcyB0byBwYXVzZSBsaWtlCisgICAgICAgICAgICBhbGwgb3RoZXIgdGlt
ZS1iYXNlZCBvYmplY3RzIGluIHRoZSBET00gZG9lcyB3aGVuIHN1c3BlbmRlZC4KKwogMjAxMi0w
MS0xNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBFbmFibGUgc3VwcG9ydCBmb3IgT3BlbiBTY3JpcHQgZGlhbG9nIGJhc2Vk
IG9uIEZpbHRlcmVkSXRlbVNlbGVjdGlvbkRpYWxvZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaAppbmRleCBkYjdjYTY2Li5kNDViODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TU9iamVjdC5oCkBAIC02Miw3ICs2Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ZW51bSBSZWFzb25Gb3JTdXNwZW5zaW9uIHsKICAgICAgICAgICAgIEphdmFTY3JpcHREZWJ1Z2dl
clBhdXNlZCwKICAgICAgICAgICAgIFdpbGxTaG93RGlhbG9nLAotICAgICAgICAgICAgRG9jdW1l
bnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUluYWN0
aXZlLAorICAgICAgICAgICAgRG9jdW1lbnRXaWxsQmVQYXVzZWQKICAgICAgICAgfTsKICAgICAg
ICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggMTFmMWE5OC4uYTQ3NTgwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtOTIsNiArOTIs
NyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKICAg
ICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxzZSkKICAgICAsIG1faW5EZXN0cnVj
dG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNoRXJyb3JFdmVudChmYWxzZSkKKyAgICAsIG1f
aXNTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxzZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFC
QVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZhbHNlKQogI2VuZGlmCkBAIC0yMTAsNyAr
MjExLDcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9N
T2JqZWN0cygpCiAgICAgICAgICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxz
ZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgIH0gICAgCisgICAg
fQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgIHJldHVybiB0
cnVlOwogfQpAQCAtMjI1LDEwICsyMjYsMTMgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclMKICAg
ICAgICAgaXRlci0+Zmlyc3QtPnN1c3BlbmQod2h5KTsKICAgICB9CiAgICAgbV9pdGVyYXRpbmdB
Y3RpdmVET01PYmplY3RzID0gZmFsc2U7CisgICAgbV9pc1N1c3BlbmRpbmdBY3RpdmVET01PYmpl
Y3RzID0gdHJ1ZTsKKyAgICBtX3N1c3BlbmRSZWFzb24gPSB3aHk7CiB9CiAKIHZvaWQgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpCiB7CisgICAgbV9pc1N1
c3BlbmRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBh
Z2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2luZyBkdXJpbmcgaXRlcmF0aW9uOiByZXN1
bWUoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkgSlMuCiAgICAgbV9pdGVyYXRpbmdBY3Rp
dmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFwPEFjdGl2ZURPTU9iamVjdCosIHZvaWQq
Pjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1fYWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsK
QEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRDcmVh
dGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QsIHYKICAgICBpZiAobV9p
dGVyYXRpbmdBY3RpdmVET01PYmplY3RzKQogICAgICAgICBDUkFTSCgpOwogICAgIG1fYWN0aXZl
RE9NT2JqZWN0cy5hZGQob2JqZWN0LCB1cGNhc3RQb2ludGVyKTsKKworICAgIC8vIEVuc3VyZSBh
bGwgQWN0aXZlRE9NT2JqZWN0cyBhcmUgc3VzcGVuZGVkIGFsc28gbmV3bHkgY3JlYXRlZCBvbmVz
CisgICAgaWYgKG1faXNTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cykKKyAgICAgICAgb2JqZWN0
LT5zdXNwZW5kKG1fc3VzcGVuZFJlYXNvbik7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA3YTg5
Yjg5Li45NjY0YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTEwMiw2ICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVj
dHMoKTsKIAorICAgIGJvb2wgaXNTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cygpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsgfQorICAgIEFjdGl2ZURPTU9i
amVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiByZWFzb25Gb3JTdXNwZW5kaW5nQWN0aXZlRE9NT2Jq
ZWN0cygpIHsgcmV0dXJuIG1fc3VzcGVuZFJlYXNvbjsgfQorCiAgICAgdm9pZCBkaWRDcmVhdGVB
Y3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAg
ICAgdm9pZCB3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIApA
QCAtMjA1LDYgKzIwOCw5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsK
ICAgICBPd25QdHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5n
RXhjZXB0aW9uczsKIAorICAgIGJvb2wgbV9pc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOwor
ICAgIEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFzb247
CisKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4g
bV9kYXRhYmFzZVRocmVhZDsKICAgICBib29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBu
ZXZlciBjaGFuZ2VzIGJhY2sgdG8gZmFsc2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVh
ZCBpcyBjbG9zZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRl
eCBmMzU3MmQwLi5jNGFjYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTMxMzIsMTIgKzMxMzIsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9w
KCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdo
eSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0gICAg
CisKICAgICBzd2l0Y2ggKHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVj
b21lSW5hY3RpdmU6CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBEb2N1bWVudFdpbGxCZVBhdXNlZDoKICAgICAgICAgY2FzZSBKYXZhU2NyaXB0
RGVidWdnZXJQYXVzZWQ6CiAgICAgICAgIGNhc2UgV2lsbFNob3dEaWFsb2c6CiAgICAgICAgICAg
ICAvLyBEbyBub3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBj
YXNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZTFmNWJjZi4uNmNlY2Q2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKQEAgLTE2Niw2ICsxNjYsNyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2Uq
IHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgog
ICAgICwgbV9pblZpZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChm
YWxzZSkKICAgICAsIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQorICAgICwgbV9hY3Rp
dmVET01PYmplY3RzUGF1c2VkQ291bnQoMCkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRv
bWljU3RyaW5nOjppbml0KCk7CkBAIC0xOTYsNiArMTk3LDEyIEBAIGlubGluZSBGcmFtZTo6RnJh
bWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1l
TG9hZGVyCiAjaWZuZGVmIE5ERUJVRwogICAgIGZyYW1lQ291bnRlci5pbmNyZW1lbnQoKTsKICNl
bmRpZgorCisgICAgLy8gUGF1c2UgZnV0dXJlIEFjdGl2ZURPTU9iamVjdHMgaWYgdGhpcyBmcmFt
ZSBpcyBjcmVhdGVkIHdoZW4gcGFnZSBpcyBpbiBwYXVzZWQgc3RhdGUuCisgICAgRnJhbWUqIHBh
cmVudCA9IHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVtZW50KTsKKyAgICBpZiAocGFy
ZW50ICYmIHBhcmVudC0+YWN0aXZlRE9NT2JqZWN0c1BhdXNlZCgpKQorICAgICAgICBzZXRBY3Rp
dmVET01PYmplY3RzUGF1c2VkKHRydWUpOworCiB9CiAKIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1l
OjpjcmVhdGUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQs
IEZyYW1lTG9hZGVyQ2xpZW50KiBjbGllbnQpCkBAIC0yOTUsNiArMzAyLDEyIEBAIHZvaWQgRnJh
bWU6OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKICAgICAgICAgaWYg
KG1fcGFnZS0+bWFpbkZyYW1lKCkgPT0gdGhpcykKICAgICAgICAgICAgIG5vdGlmeUNocm9tZUNs
aWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAgfQorCisgICAgLy8gU3Vz
cGVuZCBkb2N1bWVudCBpZiB0aGlzIGZyYW1lIHdhcyBjcmVhdGVkIGluIHN1c3BlbmRlZCBzdGF0
ZS4KKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c1BhdXNlZCgpKSB7CisgICAgICAgIG1fZG9jLT5z
dXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIG1f
ZG9jLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2ls
bEJlUGF1c2VkKTsKKyAgICB9CiB9CiAKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQpA
QCAtMTAwMiw2ICsxMDE1LDM4IEBAIGZsb2F0IEZyYW1lOjpmcmFtZVNjYWxlRmFjdG9yKCkgY29u
c3QKICAgICByZXR1cm4gcGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7CiB9CiAKKwordm9pZCBGcmFt
ZTo6c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZChib29sIHBhdXNlKQoreworICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KHRoaXMpKQorICAgICAgICBmcmFtZS0+c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZEludGVy
bmFsKHBhdXNlKTsKK30KKwordm9pZCBGcmFtZTo6c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZElu
dGVybmFsKGJvb2wgcGF1c2UpCit7CisgICAgYm9vbCB3YXNQYXVzZWQgPSBhY3RpdmVET01PYmpl
Y3RzUGF1c2VkKCk7CisKKyAgICBpZiAocGF1c2UpCisgICAgICAgIG1fYWN0aXZlRE9NT2JqZWN0
c1BhdXNlZENvdW50Kys7CisgICAgZWxzZQorICAgICAgICBtX2FjdGl2ZURPTU9iamVjdHNQYXVz
ZWRDb3VudC0tOworCisgICAgQVNTRVJUKG1fYWN0aXZlRE9NT2JqZWN0c1BhdXNlZENvdW50ID49
IDApOworCisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNQYXVzZWQoKSA9PSB3YXNQYXVzZWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChhY3Rp
dmVET01PYmplY3RzUGF1c2VkKCkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRT
Y3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgICAgIGRvY3Vt
ZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRX
aWxsQmVQYXVzZWQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9jdW1lbnQoKS0+
cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVzdW1l
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIH0KKyAgICB9
Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIEZyYW1lOjpkZXZp
Y2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IDE4ZGE1
ZjMuLjYzZmYzOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE4NSwxMyArMTg1LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChS
ZWd1bGFyRXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHRE
aXN0YW5jZUZyb21TdGFydE9mQ2VsbCk7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNC
ZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXpl
X3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAg
U3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
YmVscywgRWxlbWVudCopOwotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAg
TlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25z
dDsKICAgICAgICAgTlNJbWFnZSogcmFuZ2VJbWFnZShSYW5nZSosIGJvb2wgZm9yY2VCbGFja1Rl
eHQgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5v
ZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7CiAgICAg
ICAgIE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKICNlbmRpZgorICAgICAg
ICB2b2lkIHNldEFjdGl2ZURPTU9iamVjdHNQYXVzZWQoYm9vbCk7CisgICAgICAgIGJvb2wgYWN0
aXZlRE9NT2JqZWN0c1BhdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c1Bh
dXNlZENvdW50ID4gMDsgfQogCiAgICAgICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0
aGUgbWFpbiBmcmFtZSBvZiBhIHBhZ2UuCiAgICAgICAgIHZvaWQgbm90aWZ5Q2hyb21lQ2xpZW50
V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKSBjb25zdDsKQEAgLTIwMSw2ICsyMDMsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWUoUGFnZSos
IEhUTUxGcmFtZU93bmVyRWxlbWVudCosIEZyYW1lTG9hZGVyQ2xpZW50Kik7CiAKKyAgICAgICAg
dm9pZCBzZXRBY3RpdmVET01PYmplY3RzUGF1c2VkSW50ZXJuYWwoYm9vbCk7CiAgICAgICAgIHZv
aWQgaW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29ybGQqLCBjb25zdCBVc2Vy
U2NyaXB0VmVjdG9yJiwgVXNlclNjcmlwdEluamVjdGlvblRpbWUpOwogCiAgICAgICAgIEhhc2hT
ZXQ8RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyKj4gbV9kZXN0cnVjdGlvbk9ic2VydmVyczsKQEAg
LTI1Myw2ICsyNTYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIE93blB0cjxUaWxl
ZEJhY2tpbmdTdG9yZT4gbV90aWxlZEJhY2tpbmdTdG9yZTsKICNlbmRpZgogCisgICAgICAgIGlu
dCBtX2FjdGl2ZURPTU9iamVjdHNQYXVzZWRDb3VudDsKKwogICAgIH07CiAKICAgICBpbmxpbmUg
dm9pZCBGcmFtZTo6aW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCmluZGV4IGY0YmQyYTEuLjhjYmZkY2YgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCkBAIC0yNTg3LDYgKzI1ODcsMTAgQEAgYm9vbCBSZW5kZXJPYmplY3Q6
OndpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopCiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxp
dHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBXZSB3aWxs
IG5vdCByZW5kZXIgYSBuZXcgaW1hZ2Ugd2hlbiBBY3RpdmUgRE9NIGlzIHN1c3BlbmRlZAorICAg
IGlmIChkb2N1bWVudCgpLT5pc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBhIHdpbmRvdyAoaS5lLiwg
d2UncmUgZG9ybWFudCBmcm9tIGJlaW5nIHB1dCBpbiB0aGUgYi9mIGNhY2hlIG9yIGluIGEgYmFj
a2dyb3VuZCB0YWIpCiAgICAgLy8gdGhlbiB3ZSBkb24ndCB3YW50IHRvIHJlbmRlciBlaXRoZXIu
CiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpICYmICFkb2N1bWVudCgpLT52
aWV3KCktPmlzT2Zmc2NyZWVuKCk7Ci0tIAoxLjcuNS40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123294</attachid>
            <date>2012-01-20 05:32:01 -0800</date>
            <delta_ts>2012-02-10 10:16:24 -0800</delta_ts>
            <desc>WebKit2 side of patch</desc>
            <filename>0002-WebKit-side-of-suspend-patch.patch</filename>
            <type>text/plain</type>
            <size>7168</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">RnJvbSBkZGMxYTIzMjUzZmU1NjMxNTkxZjY0NDdmMzAxMmYxY2M5NzkyZTFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gPGFsbGFuLmplbnNlbkBu
b2tpYS5jb20+CkRhdGU6IEZyaSwgMjAgSmFuIDIwMTIgMTM6MDY6NDYgKzAxMDAKU3ViamVjdDog
W1BBVENIIDIvMl0gV2ViS2l0IHNpZGUgb2Ygc3VzcGVuZCBwYXRjaAoKLS0tCiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysr
KysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAgIHwgICAgMiArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCAgICAgICAgICB8ICAgMjIgKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggICAgICAgICAgICB8ICAgIDUgKysrCiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgICAgICB8ICAgMjUgKysrKysrKysrKysrKysr
Ky0KIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggICAgICAgIHwg
ICAgMiArCiAuLi4vV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
biB8ICAgIDMgKysKIDcgZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWU3YmNmNi4uZjY3NzBjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDEyLTAxLTExICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1c3BlbmQvUmVzdW1lIEFQSSBmb3IgV2ViS2l0Mgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCB3b3JrIG9mIFphbGFuIEJ1anRhcyA8emFsYW4u
YnVqdGFzQG5va2lhLmNvbT4sCisKKyAgICAgICAgQWRkcyBzdXNwZW5kIGFuZCByZXN1bWUgQVBJ
IGZvciBXZWJLaXQyIGFuZCB1c2VzIGl0IGluIFF0IHRvCisgICAgICAgIHN1c3BlbmQgYW5pbWF0
aW9ucyBhbmQgRE9NIHRpbWVycyBkdXJpbmcgcGFubmluZyBhbmQgem9vbS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3Vz
cGVuZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
c3VtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAyMDEyLTAxLTE4ICBTaGlueWEgS2F3YW5h
a2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CiAKICAgICAgICAgTW92ZSBTaGFkb3dDb250ZW50RWxl
bWVudCBmcm9tIGRvbS8gdG8gaHRtbC8gYW5kIG1ha2UgU2hhZG93Q29udGVudEVsZW1lbnQgc3Vi
Y2xhc3Mgb2YgSFRNTEVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBkM2RhYzVkLi41NTIyMTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTE4
MCwxMSArMTgwLDEzIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX29uSWNvbkNoYW5n
ZWRGb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkwsIGNvbnN0CiB2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpfcV9zdXNwZW5kKCkKIHsKICAgICBwYWdlSXNTdXNwZW5kZWQgPSB0cnVlOwor
ICAgIHdlYlBhZ2VQcm94eS0+c3VzcGVuZCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpfcV9yZXN1bWUoKQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIHdl
YlBhZ2VQcm94eS0+cmVzdW1lKCk7CiAKICAgICBpZiAoaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdl
KSB7CiAgICAgICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiMjUzZGFhLi43ZWIyNjNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTg1LDYgKzE4
NSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQs
IFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50cyhm
YWxzZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9pc1BhZ2VTdXNw
ZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNl
bmRpZgpAQCAtMTEwOCw2ICsxMTA5LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21V
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAgICAgc2V0VXNlckFnZW50
KG1fY3VzdG9tVXNlckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZSgpCit7
CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisgICAgcHJvY2VzcygpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdl
YlBhZ2VQcm94eTo6c3VzcGVuZCgpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgbV9pc1BhZ2VT
dXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1
ZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBt
X3BhZ2VJRCk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9u
ICYmIG1fbWFpbkZyYW1lICYmICFtX21haW5GcmFtZS0+aXNEaXNwbGF5aW5nU3RhbmRhbG9uZUlt
YWdlRG9jdW1lbnQoKTsKQEAgLTMxMjYsNiArMzE0Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpw
cm9jZXNzRGlkQ3Jhc2goKQogICAgIEFTU0VSVChtX3BhZ2VDbGllbnQpOwogCiAgICAgbV9pc1Zh
bGlkID0gZmFsc2U7CisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIGlmICht
X21haW5GcmFtZSkgewogICAgICAgICBtX3VybEF0UHJvY2Vzc0V4aXQgPSBtX21haW5GcmFtZS0+
dXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTI2NTAy
Zi4uNTE2MTMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
NDAxLDYgKzQwMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05h
bWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBj
b25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAorICAgIHZvaWQgcmVz
dW1lKCk7CisgICAgdm9pZCBzdXNwZW5kKCk7CisKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jl
c3MoKSBjb25zdDsKIAogICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcygpOwpAQCAtOTc0LDYgKzk3
Nyw4IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAorICAgIGJvb2wgbV9p
c1BhZ2VTdXNwZW5kZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBtX2lzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTFjM2MyYy4uZDAxZGVjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTYxMyw3ICsxNjEz
LDMwIEBAIHZvaWQgV2ViUGFnZTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQogewogICAgIG1fdXNlckFnZW50ID0gdXNlckFnZW50OwogfQotICAKKwordm9pZCBXZWJQYWdl
OjpzdXNwZW5kKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1l
KCk7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGZyYW1lLT5zZXRBY3RpdmVET01PYmplY3Rz
UGF1c2VkKHRydWUpOworICAgICAgICAvLyBTdXNwZW5kIENTUyBhbmltYXRpb25zLgorICAgICAg
ICBmcmFtZS0+YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKCk7CisgICAgfQorfQorCit2
b2lkIFdlYlBhZ2U6OnJlc3VtZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBmcmFtZS0+c2V0QWN0aXZl
RE9NT2JqZWN0c1BhdXNlZChmYWxzZSk7CisgICAgICAgIC8vIFJlc3VtZSBDU1MgYW5pbWF0aW9u
cy4KKyAgICAgICAgZnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zKCk7CisgICAg
fQorICAgIC8vIFdlIG5lZWQgdG8gcmVwYWludCBvbiByZXN1bWUgdG8ga2lja3N0YXJ0IGFuaW1h
dGVkIHBhaW50aW5nIGFnYWluLgorICAgIGRyYXdpbmdBcmVhKCktPnNldE5lZWRzRGlzcGxheShi
b3VuZHMoKSk7Cit9CisKKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9XaW5kb3coY29uc3Qg
SW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDAwNzJjZi4uM2I3NWZj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01
NzIsNiArNTcyLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJp
bmcmKTsKKyAgICB2b2lkIHN1c3BlbmQoKTsKKyAgICB2b2lkIHJlc3VtZSgpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNWEzYmI0NS4uZjNiZTM1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAg
ICAgU2V0VXNlckFnZW50KFdURjo6U3RyaW5nIHVzZXJBZ2VudCkKICAgICBTZXRDdXN0b21UZXh0
RW5jb2RpbmdOYW1lKFdURjo6U3RyaW5nIGVuY29kaW5nTmFtZSkKIAorICAgIFN1c3BlbmQoKQor
ICAgIFJlc3VtZSgpCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBTZXRGaXhl
ZFZpc2libGVDb250ZW50UmVjdChXZWJDb3JlOjpJbnRSZWN0IHJlY3QpCiAgICAgU2V0Vmlld3Bv
cnRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkKLS0gCjEuNy41LjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123301</attachid>
            <date>2012-01-20 06:07:18 -0800</date>
            <delta_ts>2012-01-23 04:34:37 -0800</delta_ts>
            <desc>WebCore side of patch</desc>
            <filename>WebCore-part-of-suspend-patch.patch</filename>
            <type>text/plain</type>
            <size>11418</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMzllOWI1Li40ZDUwNzIxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTItMDEtMjAgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgUGF1c2luZyBBY3RpdmVET01PYmplY3RzIHJlbGlhYmx5IGluIEZy
YW1lIGFuZCBEb2N1bWVudC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE5ldyBSZWFz
b25Gb3JTdXNwZW5zaW9uOiBEb2N1bWVudFdpbGxCZVBhdXNlZC4KKyAgICAgICAgICAgIElkZW50
aWNhbCB0byBuYW1lIGluIGlPUyBicmFuY2ggb2YgV2ViQ29yZQorCisgICAgICAgICogZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVB
Y3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OmRpZENyZWF0ZUFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OmlzU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMpOgor
CisgICAgICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyByZW1lbWJlcnMgaXQgaXMg
c3VzcGVuZGluZyBBY3RpdmVET01PYmplY3RzCisgICAgICAgICAgICBzbyBuZXcgQWN0aXZlRE9N
T2JqZWN0cyBhcmUgYWxzbyBzdXNwZW5kZWQuCisKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5k
KTogSGFuZGxlIG5ldyBSZWFzb25Gb3JTdXNwZW5zaW9uCisKKyAgICAgICAgKiBwYWdlL0ZyYW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldEFjdGl2
ZURPTU9iamVjdHNQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldEFjdGl2ZURP
TU9iamVjdHNQYXVzZWRJbnRlcm5hbCk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OmFjdGl2ZURPTU9iamVjdHNQYXVzZWQpOgorCisgICAgICAgICAg
ICBGcmFtZSBub3cgbWFpbnRhaW5zIGEgc3RhdGUgb2YgYmVpbmcgcGF1c2VkLCB3aGljaCBpcyBp
bmhlcml0ZWQgdG8gYWxsIGNoaWxkLWZyYW1lcy4KKworCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxSZW5k
ZXJJbWFnZSk6CisKKyAgICAgICAgICAgIFdpbGxSZW5kZXJJbWFnZSBub3cgY2hlY2tzIGZvciBz
dXNwZW5zaW9uLiBUaGlzIGNhdXNlcyBhbmltYXRlZCBpbWFnZXMgdG8gcGF1c2UgbGlrZQorICAg
ICAgICAgICAgYWxsIG90aGVyIHRpbWUtYmFzZWQgb2JqZWN0cyBpbiB0aGUgRE9NIGRvZXMgd2hl
biBzdXNwZW5kZWQuCisKIDIwMTItMDEtMjAgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIEFkZCBEYXRhVHJhbnNmZXJJdGVtcyBzdXBwb3J0IGZvciBkcmFn
LWFuZC1kcm9wJ2VkIGZpbGVzIGFuZCB0ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0FjdGl2ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVj
dC5oCmluZGV4IGRiN2NhNjYuLmQ0NWI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9BY3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2Jq
ZWN0LmgKQEAgLTYyLDcgKzYyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBlbnVt
IFJlYXNvbkZvclN1c3BlbnNpb24gewogICAgICAgICAgICAgSmF2YVNjcmlwdERlYnVnZ2VyUGF1
c2VkLAogICAgICAgICAgICAgV2lsbFNob3dEaWFsb2csCi0gICAgICAgICAgICBEb2N1bWVudFdp
bGxCZWNvbWVJbmFjdGl2ZQorICAgICAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUs
CisgICAgICAgICAgICBEb2N1bWVudFdpbGxCZVBhdXNlZAogICAgICAgICB9OwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuU3VzcGVuZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3Vz
cGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmNwcAppbmRleCBlZjA2YzI5Li5hYTVhYzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC05Miw2ICs5Miw3IEBA
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAgIDog
bV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzKGZhbHNlKQogICAgICwgbV9pbkRlc3RydWN0b3Io
ZmFsc2UpCiAgICAgLCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQorICAgICwgbV9pc1N1
c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKGZhbHNlKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgLCBtX2hhc09wZW5EYXRhYmFzZXMoZmFsc2UpCiAjZW5kaWYKQEAgLTIxMCw3ICsyMTEs
NyBAQCBib29sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKCkKICAgICAgICAgICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAg
ICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMjUsMTAgKzIyNiwxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yUwogICAgICAg
ICBpdGVyLT5maXJzdC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2
ZURPTU9iamVjdHMgPSBmYWxzZTsKKyAgICBtX2lzU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMg
PSB0cnVlOworICAgIG1fc3VzcGVuZFJlYXNvbiA9IHdoeTsKIH0KIAogdm9pZCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICBtX2lzU3VzcGVu
ZGluZ0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWlu
c3QgbV9hY3RpdmVET01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgp
IHNob3VsZG4ndCBleGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMgPSB0cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+Ojpp
dGVyYXRvciBhY3RpdmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwpAQCAt
MjYyLDYgKzI2NiwxMCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFj
dGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdgogICAgIGlmIChtX2l0ZXJh
dGluZ0FjdGl2ZURPTU9iamVjdHMpCiAgICAgICAgIENSQVNIKCk7CiAgICAgbV9hY3RpdmVET01P
YmplY3RzLmFkZChvYmplY3QsIHVwY2FzdFBvaW50ZXIpOworCisgICAgLy8gRW5zdXJlIGFsbCBB
Y3RpdmVET01PYmplY3RzIGFyZSBzdXNwZW5kZWQgYWxzbyBuZXdseSBjcmVhdGVkIG9uZXMKKyAg
ICBpZiAobV9pc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKQorICAgICAgICBvYmplY3QtPnN1
c3BlbmQobV9zdXNwZW5kUmVhc29uKTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Ojp3aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqIG9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IGQ3NDcyMDMu
LmE2MTUxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aApAQCAtMTAzLDYgKzEwMyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0cygpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygp
OwogCisgICAgYm9vbCBpc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzOyB9CisgICAgQWN0aXZlRE9NT2JqZWN0
OjpSZWFzb25Gb3JTdXNwZW5zaW9uIHJlYXNvbkZvclN1c3BlbmRpbmdBY3RpdmVET01PYmplY3Rz
KCkgeyByZXR1cm4gbV9zdXNwZW5kUmVhc29uOyB9CisKICAgICB2b2lkIGRpZENyZWF0ZUFjdGl2
ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqLCB2b2lkKiB1cGNhc3RQb2ludGVyKTsKICAgICB2
b2lkIHdpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCopOwogCkBAIC0y
MDYsNiArMjA5LDkgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBQZW5kaW5nRXhjZXB0aW9uOwogICAg
IE93blB0cjxWZWN0b3I8T3duUHRyPFBlbmRpbmdFeGNlcHRpb24+ID4gPiBtX3BlbmRpbmdFeGNl
cHRpb25zOwogCisgICAgYm9vbCBtX2lzU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHM7CisgICAg
QWN0aXZlRE9NT2JqZWN0OjpSZWFzb25Gb3JTdXNwZW5zaW9uIG1fc3VzcGVuZFJlYXNvbjsKKwog
I2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgUmVmUHRyPERhdGFiYXNlVGhyZWFkPiBtX2Rh
dGFiYXNlVGhyZWFkOwogICAgIGJvb2wgbV9oYXNPcGVuRGF0YWJhc2VzOyAvLyBUaGlzIG5ldmVy
IGNoYW5nZXMgYmFjayB0byBmYWxzZSwgZXZlbiBhZnRlciB0aGUgZGF0YWJhc2UgdGhyZWFkIGlz
IGNsb3NlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDA1
Y2M1YjIuLmM5M2Y4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMzE0MiwxMiArMzE0MiwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AoKQog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQog
ewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQiKTsKLSAgICAKKwog
ICAgIHN3aXRjaCAod2h5KQogICAgIHsKICAgICAgICAgY2FzZSBEb2N1bWVudFdpbGxCZWNvbWVJ
bmFjdGl2ZToKICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIERvY3VtZW50V2lsbEJlUGF1c2VkOgogICAgICAgICBjYXNlIEphdmFTY3JpcHREZWJ1
Z2dlclBhdXNlZDoKICAgICAgICAgY2FzZSBXaWxsU2hvd0RpYWxvZzoKICAgICAgICAgICAgIC8v
IERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNlIGNhc2Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlMWY1YmNmLi42Y2VjZDZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFn
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAgICAg
LCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAgLCBtX2lzRGlzY29ubmVjdGVkKGZhbHNl
KQogICAgICwgbV9leGNsdWRlRnJvbVRleHRTZWFyY2goZmFsc2UpCisgICAgLCBtX2FjdGl2ZURP
TU9iamVjdHNQYXVzZWRDb3VudCgwKQogewogICAgIEFTU0VSVChwYWdlKTsKICAgICBBdG9taWNT
dHJpbmc6OmluaXQoKTsKQEAgLTE5Niw2ICsxOTcsMTIgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQ
YWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2Fk
ZXIKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJhbWVDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlm
CisKKyAgICAvLyBQYXVzZSBmdXR1cmUgQWN0aXZlRE9NT2JqZWN0cyBpZiB0aGlzIGZyYW1lIGlz
IGNyZWF0ZWQgd2hlbiBwYWdlIGlzIGluIHBhdXNlZCBzdGF0ZS4KKyAgICBGcmFtZSogcGFyZW50
ID0gcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVsZW1lbnQpOworICAgIGlmIChwYXJlbnQg
JiYgcGFyZW50LT5hY3RpdmVET01PYmplY3RzUGF1c2VkKCkpCisgICAgICAgIHNldEFjdGl2ZURP
TU9iamVjdHNQYXVzZWQodHJ1ZSk7CisKIH0KIAogUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWU6OmNy
ZWF0ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJh
bWVMb2FkZXJDbGllbnQqIGNsaWVudCkKQEAgLTI5NSw2ICszMDIsMTIgQEAgdm9pZCBGcmFtZTo6
c2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxEb2N1bWVudD4gbmV3RG9jKQogICAgICAgICBpZiAobV9w
YWdlLT5tYWluRnJhbWUoKSA9PSB0aGlzKQogICAgICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50
V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICB9CisKKyAgICAvLyBTdXNwZW5k
IGRvY3VtZW50IGlmIHRoaXMgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gc3VzcGVuZGVkIHN0YXRlLgor
ICAgIGlmIChhY3RpdmVET01PYmplY3RzUGF1c2VkKCkpIHsKKyAgICAgICAgbV9kb2MtPnN1c3Bl
bmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgbV9kb2Mt
PnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxsQmVQ
YXVzZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC0x
MDAyLDYgKzEwMTUsMzggQEAgZmxvYXQgRnJhbWU6OmZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdAog
ICAgIHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAorCit2b2lkIEZyYW1lOjpz
ZXRBY3RpdmVET01PYmplY3RzUGF1c2VkKGJvb2wgcGF1c2UpCit7CisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSB0aGlzOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
dGhpcykpCisgICAgICAgIGZyYW1lLT5zZXRBY3RpdmVET01PYmplY3RzUGF1c2VkSW50ZXJuYWwo
cGF1c2UpOworfQorCit2b2lkIEZyYW1lOjpzZXRBY3RpdmVET01PYmplY3RzUGF1c2VkSW50ZXJu
YWwoYm9vbCBwYXVzZSkKK3sKKyAgICBib29sIHdhc1BhdXNlZCA9IGFjdGl2ZURPTU9iamVjdHNQ
YXVzZWQoKTsKKworICAgIGlmIChwYXVzZSkKKyAgICAgICAgbV9hY3RpdmVET01PYmplY3RzUGF1
c2VkQ291bnQrKzsKKyAgICBlbHNlCisgICAgICAgIG1fYWN0aXZlRE9NT2JqZWN0c1BhdXNlZENv
dW50LS07CisKKyAgICBBU1NFUlQobV9hY3RpdmVET01PYmplY3RzUGF1c2VkQ291bnQgPj0gMCk7
CisKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c1BhdXNlZCgpID09IHdhc1BhdXNlZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKGFjdGl2ZURP
TU9iamVjdHNQYXVzZWQoKSkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICAgICAgZG9jdW1lbnQo
KS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxC
ZVBhdXNlZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXN1
bWVBY3RpdmVET01PYmplY3RzKCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRnJhbWU6OmRldmljZU9y
UGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMThkYTVmMy4u
NjNmZjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTg1LDEzICsxODUsMTUgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3Vs
YXJFeHByZXNzaW9uKiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3Rh
bmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9y
ZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCog
cmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJp
bmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxz
LCBFbGVtZW50Kik7Ci0gICAgICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU0lt
YWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNvbnN0Owog
ICAgICAgICBOU0ltYWdlKiByYW5nZUltYWdlKFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9
IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoTm9kZSos
IE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKICAgICAgICAg
TlNJbWFnZSogaW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0OwogI2VuZGlmCisgICAgICAgIHZv
aWQgc2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZChib29sKTsKKyAgICAgICAgYm9vbCBhY3RpdmVE
T01PYmplY3RzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3RzUGF1c2Vk
Q291bnQgPiAwOyB9CiAKICAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBt
YWluIGZyYW1lIG9mIGEgcGFnZS4KICAgICAgICAgdm9pZCBub3RpZnlDaHJvbWVDbGllbnRXaGVl
bEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpIGNvbnN0OwpAQCAtMjAxLDYgKzIwMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZShQYWdlKiwgSFRN
TEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIAorICAgICAgICB2b2lk
IHNldEFjdGl2ZURPTU9iamVjdHNQYXVzZWRJbnRlcm5hbChib29sKTsKICAgICAgICAgdm9pZCBp
bmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVzZXJTY3Jp
cHRWZWN0b3ImLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAKICAgICAgICAgSGFzaFNldDxG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwpAQCAtMjUz
LDYgKzI1Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPFRpbGVkQmFj
a2luZ1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0b3JlOwogI2VuZGlmCiAKKyAgICAgICAgaW50IG1f
YWN0aXZlRE9NT2JqZWN0c1BhdXNlZENvdW50OworCiAgICAgfTsKIAogICAgIGlubGluZSB2b2lk
IEZyYW1lOjppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggZjRiZDJhMS4uOGNiZmRjZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKQEAgLTI1ODcsNiArMjU4NywxMCBAQCBib29sIFJlbmRlck9iamVjdDo6d2ls
bFJlbmRlckltYWdlKENhY2hlZEltYWdlKikKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgp
ICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIFdlIHdpbGwgbm90
IHJlbmRlciBhIG5ldyBpbWFnZSB3aGVuIEFjdGl2ZSBET00gaXMgc3VzcGVuZGVkCisgICAgaWYg
KGRvY3VtZW50KCktPmlzU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgLy8gSWYgd2UncmUgbm90IGluIGEgd2luZG93IChpLmUuLCB3ZSdy
ZSBkb3JtYW50IGZyb20gYmVpbmcgcHV0IGluIHRoZSBiL2YgY2FjaGUgb3IgaW4gYSBiYWNrZ3Jv
dW5kIHRhYikKICAgICAvLyB0aGVuIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIGVpdGhlci4KICAg
ICByZXR1cm4gIWRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkgJiYgIWRvY3VtZW50KCktPnZpZXco
KS0+aXNPZmZzY3JlZW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123541</attachid>
            <date>2012-01-23 04:34:37 -0800</date>
            <delta_ts>2012-01-24 09:20:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>study</filename>
            <type>text/plain</type>
            <size>18681</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMzllOWI1Li5jYWIzNjRiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkg
QEAKKzIwMTItMDEtMTkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgUGF1c2luZyBBY3RpdmVET01PYmplY3RzIHJlbGlhYmx5IGluIEZy
YW1lLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYw
NjMKKworICAgICAgICBBbHNvIGZpeGVzIHByb2JsZW0gd2l0aCB0aW1lcnMgZmlyZWQgYWZ0ZXIg
c3VzcGVuZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUzNzMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisKKyAgICAgICAgICAgIE5ldyBSZWFzb25Gb3JTdXNw
ZW5zaW9uOiBEb2N1bWVudFdpbGxCZVBhdXNlZC4KKyAgICAgICAgICAgIElkZW50aWNhbCB0byBu
YW1lIGluIGlPUyBicmFuY2ggb2YgV2ViQ29yZQorCisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpyZXN1bWVBY3RpdmVET01P
YmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENy
ZWF0ZUFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmlzU3VzcGVu
ZGluZ0FjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9u
Q29udGV4dDo6cmVhc29uRm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMpOgorCisgICAgICAg
ICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0IG5vdyByZW1lbWJlcnMgaXQgaXMgc3VzcGVuZGlu
ZyBBY3RpdmVET01PYmplY3RzCisgICAgICAgICAgICBzbyBuZXcgQWN0aXZlRE9NT2JqZWN0cyBh
cmUgYWxzbyBzdXNwZW5kZWQuCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZCk6IEhhbmRsZSBu
ZXcgZW51bS4KKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0RG9jdW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldEFjdGl2ZURPTU9iamVjdHNQYXVzZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWU6OnNldEFjdGl2ZURPTU9iamVjdHNQYXVzZWRJbnRlcm5hbCk6Cisg
ICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmFjdGl2ZURP
TU9iamVjdHNQYXVzZWQpOgorCisgICAgICAgICAgICBGcmFtZSBub3cgbWFpbnRhaW5zIGEgc3Rh
dGUgb2YgYmVpbmcgcGF1c2VkLCB3aGljaCBpcyBpbmhlcml0ZWQgdG8gYWxsIGNoaWxkLWZyYW1l
cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyT2JqZWN0Ojp3aWxsUmVuZGVySW1hZ2UpOgorCisgICAgICAgICAgICBXaWxs
UmVuZGVySW1hZ2Ugbm93IGNoZWNrcyBmb3Igc3VzcGVuc2lvbi4gVGhpcyBjYXVzZXMgYW5pbWF0
ZWQgaW1hZ2VzIHRvIHBhdXNlIGxpa2UKKyAgICAgICAgICAgIGFsbCBvdGhlciB0aW1lLWJhc2Vk
IG9iamVjdHMgaW4gdGhlIERPTSBkb2VzIHdoZW4gc3VzcGVuZGVkLgorCiAyMDEyLTAxLTIwICBL
aW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgRGF0YVRy
YW5zZmVySXRlbXMgc3VwcG9ydCBmb3IgZHJhZy1hbmQtZHJvcCdlZCBmaWxlcyBhbmQgdGV4dHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBkYjdjYTY2Li5kNDViODNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC02Miw3ICs2Miw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgZW51bSBSZWFzb25Gb3JTdXNwZW5zaW9uIHsKICAgICAg
ICAgICAgIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCwKICAgICAgICAgICAgIFdpbGxTaG93RGlh
bG9nLAotICAgICAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgICAg
IERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlLAorICAgICAgICAgICAgRG9jdW1lbnRXaWxsQmVQ
YXVzZWQKICAgICAgICAgfTsKICAgICAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXggZWYw
NmMyOS4uZDUwZWFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcApAQCAtOTIsNiArOTIsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkKICAgICA6IG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyhm
YWxzZSkKICAgICAsIG1faW5EZXN0cnVjdG9yKGZhbHNlKQogICAgICwgbV9pbkRpc3BhdGNoRXJy
b3JFdmVudChmYWxzZSkKKyAgICAsIG1faXNTdXNwZW5kaW5nQWN0aXZlRE9NT2JqZWN0cyhmYWxz
ZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2VzKGZh
bHNlKQogI2VuZGlmCkBAIC0yMTAsNyArMjExLDcgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgICAgICAgICBtX2l0ZXJhdGlu
Z0FjdGl2ZURPTU9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQotICAgIH0gICAgCisgICAgfQogICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0
cyA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjI1LDEwICsyMjYsMTMgQEAgdm9p
ZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVE
T01PYmplY3Q6OlJlYXNvbkZvclMKICAgICAgICAgaXRlci0+Zmlyc3QtPnN1c3BlbmQod2h5KTsK
ICAgICB9CiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CisgICAgbV9p
c1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKKyAgICBtX3N1c3BlbmRSZWFzb24g
PSB3aHk7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0cygpCiB7CisgICAgbV9pc1N1c3BlbmRpbmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7
CiAgICAgLy8gTm8gcHJvdGVjdGlvbiBhZ2FpbnN0IG1fYWN0aXZlRE9NT2JqZWN0cyBjaGFuZ2lu
ZyBkdXJpbmcgaXRlcmF0aW9uOiByZXN1bWUoKSBzaG91bGRuJ3QgZXhlY3V0ZSBhcmJpdHJhcnkg
SlMuCiAgICAgbV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzID0gdHJ1ZTsKICAgICBIYXNoTWFw
PEFjdGl2ZURPTU9iamVjdCosIHZvaWQqPjo6aXRlcmF0b3IgYWN0aXZlT2JqZWN0c0VuZCA9IG1f
YWN0aXZlRE9NT2JqZWN0cy5lbmQoKTsKQEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkaWRDcmVhdGVBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0
KiBvYmplY3QsIHYKICAgICBpZiAobV9pdGVyYXRpbmdBY3RpdmVET01PYmplY3RzKQogICAgICAg
ICBDUkFTSCgpOwogICAgIG1fYWN0aXZlRE9NT2JqZWN0cy5hZGQob2JqZWN0LCB1cGNhc3RQb2lu
dGVyKTsKKworICAgIC8vIEVuc3VyZSBhbGwgQWN0aXZlRE9NT2JqZWN0cyBhcmUgc3VzcGVuZGVk
IGFsc28gbmV3bHkgY3JlYXRlZCBvbmVzLgorICAgIGlmIChtX2lzU3VzcGVuZGluZ0FjdGl2ZURP
TU9iamVjdHMpCisgICAgICAgIG9iamVjdC0+c3VzcGVuZChtX3N1c3BlbmRSZWFzb24pOwogfQog
CiB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OndpbGxEZXN0cm95QWN0aXZlRE9NT2JqZWN0
KEFjdGl2ZURPTU9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgKaW5kZXggZDc0NzIwMy4uYTYxNTEwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMDMsNiArMTAzLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BBY3RpdmVET01PYmplY3RzKCk7CiAKKyAgICBib29sIGlzU3VzcGVuZGluZ0Fj
dGl2ZURPTU9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVuZGluZ0FjdGl2ZURPTU9i
amVjdHM7IH0KKyAgICBBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1c3BlbnNpb24gcmVhc29u
Rm9yU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMoKSB7IHJldHVybiBtX3N1c3BlbmRSZWFzb247
IH0KKwogICAgIHZvaWQgZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KEFjdGl2ZURPTU9iamVjdCos
IHZvaWQqIHVwY2FzdFBvaW50ZXIpOwogICAgIHZvaWQgd2lsbERlc3Ryb3lBY3RpdmVET01PYmpl
Y3QoQWN0aXZlRE9NT2JqZWN0Kik7CiAKQEAgLTIwNiw2ICsyMDksOSBAQCBwcml2YXRlOgogICAg
IGNsYXNzIFBlbmRpbmdFeGNlcHRpb247CiAgICAgT3duUHRyPFZlY3RvcjxPd25QdHI8UGVuZGlu
Z0V4Y2VwdGlvbj4gPiA+IG1fcGVuZGluZ0V4Y2VwdGlvbnM7CiAKKyAgICBib29sIG1faXNTdXNw
ZW5kaW5nQWN0aXZlRE9NT2JqZWN0czsKKyAgICBBY3RpdmVET01PYmplY3Q6OlJlYXNvbkZvclN1
c3BlbnNpb24gbV9zdXNwZW5kUmVhc29uOworCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAg
ICBSZWZQdHI8RGF0YWJhc2VUaHJlYWQ+IG1fZGF0YWJhc2VUaHJlYWQ7CiAgICAgYm9vbCBtX2hh
c09wZW5EYXRhYmFzZXM7IC8vIFRoaXMgbmV2ZXIgY2hhbmdlcyBiYWNrIHRvIGZhbHNlLCBldmVu
IGFmdGVyIHRoZSBkYXRhYmFzZSB0aHJlYWQgaXMgY2xvc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L0NhY2hlZEZyYW1lLmNwcAppbmRleCA2MGZhYjA0Li45YjBkMmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
aXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAtMTY4LDcgKzE2OCw2IEBAIENhY2hlZEZyYW1lOjpD
YWNoZWRGcmFtZShGcmFtZSogZnJhbWUpCiAgICAgLy8gYnV0IGFmdGVyIHdlJ3ZlIGZpcmVkIHRo
ZSBwYWdlaGlkZSBldmVudCwgaW4gY2FzZSB0aGF0IGNyZWF0ZXMgbW9yZSBvYmplY3RzLgogICAg
IC8vIFN1c3BlbmRpbmcgbXVzdCBhbHNvIGhhcHBlbiBhZnRlciB3ZSd2ZSByZWN1cnNlZCBvdmVy
IGNoaWxkIGZyYW1lcywgaW4gY2FzZQogICAgIC8vIHRob3NlIGNyZWF0ZSBtb3JlIG9iamVjdHMu
Ci0gICAgLy8gRklYTUU6IEl0J3Mgc3RpbGwgcG9zc2libGUgdG8gaGF2ZSBvYmplY3RzIGNyZWF0
ZWQgYWZ0ZXIgc3VzcGVuZGluZyBpbiBzb21lIGNhc2VzLCBzZWUgaHR0cDovL3dlYmtpdC5vcmcv
Yi81MzczMyBmb3IgbW9yZSBkZXRhaWxzLgogICAgIG1fZG9jdW1lbnQtPmRvY3VtZW50V2lsbFN1
c3BlbmRGb3JQYWdlQ2FjaGUoKTsKICAgICBtX2RvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgbV9kb2N1bWVudC0+c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAwNWNjNWIyLi5j
OTNmODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTMx
NDIsMTIgKzMxNDIsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKIHsKICAgICBM
T0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0gICAgCisKICAgICBzd2l0
Y2ggKHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmU6
CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBE
b2N1bWVudFdpbGxCZVBhdXNlZDoKICAgICAgICAgY2FzZSBKYXZhU2NyaXB0RGVidWdnZXJQYXVz
ZWQ6CiAgICAgICAgIGNhc2UgV2lsbFNob3dEaWFsb2c6CiAgICAgICAgICAgICAvLyBEbyBub3Ro
aW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAKaW5kZXggZTFmNWJjZi4uNTc2NDEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTE2Niw2ICsxNjYsNyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxG
cmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAgICwgbV9pblZp
ZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxzZSkKICAgICAs
IG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQorICAgICwgbV9hY3RpdmVET01PYmplY3Rz
UGF1c2VkQ291bnQoMCkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5nOjpp
bml0KCk7CkBAIC0xOTYsNiArMTk3LDExIEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFn
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAjaWZu
ZGVmIE5ERUJVRwogICAgIGZyYW1lQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisgICAg
Ly8gUGF1c2UgZnV0dXJlIEFjdGl2ZURPTU9iamVjdHMgaWYgdGhpcyBmcmFtZSBpcyBiZWluZyBj
cmVhdGVkIHdoaWxlIHRoZSBwYWdlIGlzIGluIGEgcGF1c2VkIHN0YXRlLgorICAgIEZyYW1lKiBw
YXJlbnQgPSBwYXJlbnRGcm9tT3duZXJFbGVtZW50KG93bmVyRWxlbWVudCk7CisgICAgaWYgKHBh
cmVudCAmJiBwYXJlbnQtPmFjdGl2ZURPTU9iamVjdHNQYXVzZWQoKSkKKyAgICAgICAgc2V0QWN0
aXZlRE9NT2JqZWN0c1BhdXNlZCh0cnVlKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWU6
OmNyZWF0ZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwg
RnJhbWVMb2FkZXJDbGllbnQqIGNsaWVudCkKQEAgLTI5NSw2ICszMDEsMTIgQEAgdm9pZCBGcmFt
ZTo6c2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxEb2N1bWVudD4gbmV3RG9jKQogICAgICAgICBpZiAo
bV9wYWdlLT5tYWluRnJhbWUoKSA9PSB0aGlzKQogICAgICAgICAgICAgbm90aWZ5Q2hyb21lQ2xp
ZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICB9CisKKyAgICAvLyBTdXNw
ZW5kIGRvY3VtZW50IGlmIHRoaXMgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gc3VzcGVuZGVkIHN0YXRl
LgorICAgIGlmIChhY3RpdmVET01PYmplY3RzUGF1c2VkKCkpIHsKKyAgICAgICAgbV9kb2MtPnN1
c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgbV9k
b2MtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6RG9jdW1lbnRXaWxs
QmVQYXVzZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBA
IC0xMDAyLDYgKzEwMTQsMzcgQEAgZmxvYXQgRnJhbWU6OmZyYW1lU2NhbGVGYWN0b3IoKSBjb25z
dAogICAgIHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAordm9pZCBGcmFtZTo6
c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZChib29sIHBhdXNlKQoreworICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KHRoaXMpKQorICAgICAgICBmcmFtZS0+c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZEludGVybmFs
KHBhdXNlKTsKK30KKwordm9pZCBGcmFtZTo6c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZEludGVy
bmFsKGJvb2wgcGF1c2UpCit7CisgICAgYm9vbCB3YXNQYXVzZWQgPSBhY3RpdmVET01PYmplY3Rz
UGF1c2VkKCk7CisKKyAgICBpZiAocGF1c2UpCisgICAgICAgIG1fYWN0aXZlRE9NT2JqZWN0c1Bh
dXNlZENvdW50Kys7CisgICAgZWxzZQorICAgICAgICBtX2FjdGl2ZURPTU9iamVjdHNQYXVzZWRD
b3VudC0tOworCisgICAgQVNTRVJUKG1fYWN0aXZlRE9NT2JqZWN0c1BhdXNlZENvdW50ID49IDAp
OworCisgICAgaWYgKGFjdGl2ZURPTU9iamVjdHNQYXVzZWQoKSA9PSB3YXNQYXVzZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgpKSB7CisgICAgICAgIGlmIChtX2FjdGl2
ZURPTU9iamVjdHNQYXVzZWRDb3VudCkgeworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c3VzcGVu
ZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICAgICAgZG9j
dW1lbnQoKS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpEb2N1bWVu
dFdpbGxCZVBhdXNlZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkb2N1bWVudCgp
LT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRnJhbWU6OmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMThk
YTVmMy4uNjNmZjM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTg1LDEzICsxODUsMTUgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxs
KFJlZ3VsYXJFeHByZXNzaW9uKiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3Vs
dERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVs
c0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNp
emVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAg
ICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bGFiZWxzLCBFbGVtZW50Kik7Ci0gICAgICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAg
ICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNv
bnN0OwogICAgICAgICBOU0ltYWdlKiByYW5nZUltYWdlKFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNr
VGV4dCA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2Uo
Tm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKICAg
ICAgICAgTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0OwogI2VuZGlmCisgICAg
ICAgIHZvaWQgc2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZChib29sKTsKKyAgICAgICAgYm9vbCBh
Y3RpdmVET01PYmplY3RzUGF1c2VkKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVET01PYmplY3Rz
UGF1c2VkQ291bnQgPiAwOyB9CiAKICAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9u
IHRoZSBtYWluIGZyYW1lIG9mIGEgcGFnZS4KICAgICAgICAgdm9pZCBub3RpZnlDaHJvbWVDbGll
bnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpIGNvbnN0OwpAQCAtMjAxLDYgKzIwMyw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZShQYWdl
KiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKIAorICAgICAg
ICB2b2lkIHNldEFjdGl2ZURPTU9iamVjdHNQYXVzZWRJbnRlcm5hbChib29sKTsKICAgICAgICAg
dm9pZCBpbmplY3RVc2VyU2NyaXB0c0ZvcldvcmxkKERPTVdyYXBwZXJXb3JsZCosIGNvbnN0IFVz
ZXJTY3JpcHRWZWN0b3ImLCBVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAKICAgICAgICAgSGFz
aFNldDxGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqPiBtX2Rlc3RydWN0aW9uT2JzZXJ2ZXJzOwpA
QCAtMjUzLDYgKzI1Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT3duUHRyPFRp
bGVkQmFja2luZ1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0b3JlOwogI2VuZGlmCiAKKyAgICAgICAg
aW50IG1fYWN0aXZlRE9NT2JqZWN0c1BhdXNlZENvdW50OworCiAgICAgfTsKIAogICAgIGlubGlu
ZSB2b2lkIEZyYW1lOjppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKaW5kZXggZjRiZDJhMS4uOGNiZmRjZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKQEAgLTI1ODcsNiArMjU4NywxMCBAQCBib29sIFJlbmRlck9iamVj
dDo6d2lsbFJlbmRlckltYWdlKENhY2hlZEltYWdlKikKICAgICBpZiAoc3R5bGUoKS0+dmlzaWJp
bGl0eSgpICE9IFZJU0lCTEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIC8vIFdlIHdp
bGwgbm90IHJlbmRlciBhIG5ldyBpbWFnZSB3aGVuIEFjdGl2ZSBET00gaXMgc3VzcGVuZGVkCisg
ICAgaWYgKGRvY3VtZW50KCktPmlzU3VzcGVuZGluZ0FjdGl2ZURPTU9iamVjdHMoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgLy8gSWYgd2UncmUgbm90IGluIGEgd2luZG93IChpLmUu
LCB3ZSdyZSBkb3JtYW50IGZyb20gYmVpbmcgcHV0IGluIHRoZSBiL2YgY2FjaGUgb3IgaW4gYSBi
YWNrZ3JvdW5kIHRhYikKICAgICAvLyB0aGVuIHdlIGRvbid0IHdhbnQgdG8gcmVuZGVyIGVpdGhl
ci4KICAgICByZXR1cm4gIWRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkgJiYgIWRvY3VtZW50KCkt
PnZpZXcoKS0+aXNPZmZzY3JlZW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhNjFlYmI2Li5jMjM2ZGZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTItMDEtMTEgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU3VzcGVuZC9SZXN1bWUg
QVBJIGZvciBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjA2MworCisgICAgICAgIEJhc2VkIG9uIHRoZSBpbml0aWFsIHdvcmsgb2YgWmFs
YW4gQnVqdGFzIDx6YWxhbi5idWp0YXNAbm9raWEuY29tPiwKKworICAgICAgICBBZGRzIHN1c3Bl
bmQgYW5kIHJlc3VtZSBBUEkgZm9yIFdlYktpdDIgYW5kIHVzZXMgaXQgaW4gUXQgdG8KKyAgICAg
ICAgc3VzcGVuZCBhbmltYXRpb25zIGFuZCBET00gdGltZXJzIGR1cmluZyBwYW5uaW5nIGFuZCB6
b29tLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpfcV9zdXNwZW5kKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpf
cV9yZXN1bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpz
dXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpyZXN1bWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDEt
MjAgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDU0OTcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCA1NTk2NzUwLi5jYjMzZjNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmll
dy5jcHAKQEAgLTE4NSwxMSArMTg1LDEzIEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9x
X29uSWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkwsIGNvbnN0CiB2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9zdXNwZW5kKCkKIHsKICAgICBwYWdlSXNTdXNwZW5k
ZWQgPSB0cnVlOworICAgIHdlYlBhZ2VQcm94eS0+c3VzcGVuZCgpOwogfQogCiB2b2lkIFFRdWlj
a1dlYlZpZXdQcml2YXRlOjpfcV9yZXN1bWUoKQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IGZh
bHNlOworICAgIHdlYlBhZ2VQcm94eS0+cmVzdW1lKCk7CiAKICAgICBpZiAoaXNUcmFuc2l0aW9u
aW5nVG9OZXdQYWdlKSB7CiAgICAgICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAzN2YwM2Uz
Li42NWYxYjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtMTg1LDYgKzE4NSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQq
IHBhZ2VDbGllbnQsIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX25lZWRU
b3VjaEV2ZW50cyhmYWxzZSkKICNlbmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwg
bV9pc1BhZ2VTdXNwZW5kZWQoZmFsc2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKSkKICNlbmRpZgpAQCAtMTEwOSw2ICsxMTEwLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAgICAg
c2V0VXNlckFnZW50KG1fY3VzdG9tVXNlckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnJlc3VtZSgpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgbV9wYWdlSUQpOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZCgpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkg
fHwgbV9pc1BhZ2VTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZCgpLCBtX3BhZ2VJRCk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1Rl
eHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX21haW5GcmFtZUhhc0N1c3RvbVJl
cHJlc2VudGF0aW9uICYmIG1fbWFpbkZyYW1lICYmICFtX21haW5GcmFtZS0+aXNEaXNwbGF5aW5n
U3RhbmRhbG9uZUltYWdlRG9jdW1lbnQoKTsKQEAgLTMxMzUsNiArMzE1Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIEFTU0VSVChtX3BhZ2VDbGllbnQpOwog
CiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsK
IAogICAgIGlmIChtX21haW5GcmFtZSkgewogICAgICAgICBtX3VybEF0UHJvY2Vzc0V4aXQgPSBt
X21haW5GcmFtZS0+dXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggNjljZTk4Yi4uNzE1Y2I1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtNDAxLDYgKzQwMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNv
ZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAor
ICAgIHZvaWQgcmVzdW1lKCk7CisgICAgdm9pZCBzdXNwZW5kKCk7CisKICAgICBkb3VibGUgZXN0
aW1hdGVkUHJvZ3Jlc3MoKSBjb25zdDsKIAogICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcygpOwpA
QCAtOTgwLDYgKzk4Myw4IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAor
ICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9v
bCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYTYwZDNiMi4uN2Y4M2VlOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAt
MTYxNyw3ICsxNjE3LDMwIEBAIHZvaWQgV2ViUGFnZTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQogewogICAgIG1fdXNlckFnZW50ID0gdXNlckFnZW50OwogfQotICAKKwor
dm9pZCBXZWJQYWdlOjpzdXNwZW5kKCkKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCk7CisgICAgaWYgKGZyYW1lKSB7CisgICAgICAgIGZyYW1lLT5zZXRBY3Rp
dmVET01PYmplY3RzUGF1c2VkKHRydWUpOworICAgICAgICAvLyBTdXNwZW5kIENTUyBhbmltYXRp
b25zLgorICAgICAgICBmcmFtZS0+YW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zKCk7Cisg
ICAgfQorfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0g
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmIChmcmFtZSkgeworICAgICAgICBmcmFt
ZS0+c2V0QWN0aXZlRE9NT2JqZWN0c1BhdXNlZChmYWxzZSk7CisgICAgICAgIC8vIFJlc3VtZSBD
U1MgYW5pbWF0aW9ucy4KKyAgICAgICAgZnJhbWUtPmFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRp
b25zKCk7CisgICAgfQorICAgIC8vIFdlIG5lZWQgdG8gcmVwYWludCBvbiByZXN1bWUgdG8ga2lj
a3N0YXJ0IGFuaW1hdGVkIHBhaW50aW5nIGFnYWluLgorICAgIGRyYXdpbmdBcmVhKCktPnNldE5l
ZWRzRGlzcGxheShib3VuZHMoKSk7Cit9CisKKwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9X
aW5kb3coY29uc3QgSW50UG9pbnQmIHBvaW50KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTlj
MjEzMC4uN2FlMDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCkBAIC01NzgsNiArNTc4LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50
MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IGRvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0VXNl
ckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHN1c3BlbmQoKTsKKyAgICB2b2lkIHJlc3VtZSgp
OwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBB
dExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzAy
NDc5Yi4uNjE3MGQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTk3LDYgKzk3LDkgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZSB7CiAgICAgU2V0VXNlckFnZW50KFdURjo6U3RyaW5nIHVzZXJBZ2VudCkKICAgICBT
ZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKFdURjo6U3RyaW5nIGVuY29kaW5nTmFtZSkKIAorICAg
IFN1c3BlbmQoKQorICAgIFJlc3VtZSgpCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
ICAgICBTZXRGaXhlZFZpc2libGVDb250ZW50UmVjdChXZWJDb3JlOjpJbnRSZWN0IHJlY3QpCiAg
ICAgU2V0Vmlld3BvcnRTaXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkK
</data>
<flag name="review"
          id="124607"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="124608"
          type_id="3"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123748</attachid>
            <date>2012-01-24 09:20:04 -0800</date>
            <delta_ts>2012-02-27 03:39:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch-tuesday.diff</filename>
            <type>text/plain</type>
            <size>21925</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3Yzg5ZmU4Li4zMDU0YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAg
QEAKKzIwMTItMDEtMjQgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IEFQSSBmb3IgcmVsaWFibHkgc3VzcGVuZGluZyBh
Y3RpdmUgRE9NIG9iamVjdHMgYW5kIGFuaW1hdGlvbnMgaW4gRnJhbWVzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3Qu
aDoKKworICAgICAgICAgICAgTmV3IFJlYXNvbkZvclN1c3BlbnNpb246IERvY3VtZW50V2lsbEJl
UGF1c2VkLgorICAgICAgICAgICAgSWRlbnRpY2FsIHRvIG5hbWUgaW4gaU9TIGJyYW5jaCBvZiBX
ZWJDb3JlCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3Bl
bmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkQ3JlYXRlQWN0aXZlRE9NT2JqZWN0KToK
KyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCk6
CisKKyAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbm93IHJlbWVtYmVycyBpdCBp
cyBzdXNwZW5kaW5nIEFjdGl2ZURPTU9iamVjdHMKKyAgICAgICAgICAgIHNvIG5ldyBBY3RpdmVE
T01PYmplY3RzIGFyZSBhbHNvIHN1c3BlbmRlZC4KKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5k
KTogSGFuZGxlIG5ldyBlbnVtLgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWU6OkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXREb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyZXN1bWVBY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6c2V0U3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRm9yVGhpc0ZyYW1lKToKKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6YWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgorCisgICAgICAgICAgICBGcmFtZSBub3cgbWFpbnRhaW5z
IGEgc3RhdGUgb2Ygc3VzcGVuZGluZyBhbmltYXRpb24gYW5kIEFjdGl2ZURPTU9iamVjdHMsCisg
ICAgICAgICAgICB3aGljaCBpcyBpbmhlcml0ZWQgdG8gYWxsIGNoaWxkLWZyYW1lcy4KKworICAg
ICAgICAqIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdXNw
ZW5kYWJsZVRpbWVyOjpTdXNwZW5kYWJsZVRpbWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1c3Bl
bmRhYmxlVGltZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdXNw
ZW5kYWJsZVRpbWVyOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlN1c3BlbmRhYmxlVGlt
ZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpTdXNwZW5kYWJsZVRpbWVyOjpzdGFydCk6
CisgICAgICAgICogcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0v
VGltZXIuaDoKKworICAgICAgICAgICAgU3VzcGVuZGFibGVUaW1lciBub3cgb3ZlcmxvYWRzIFRp
bWVyQmFzZTo6c3RhcnQoKSB0byBlbnN1cmUgaXQgZG9lcworICAgICAgICAgICAgbm90IHJlc3Rh
cnQgd2hpbGUgc3VzcGVuZGVkLgorICAgICAgICAgICAgVGhpcyBpcyBuZWNlc3NhcnkgaWYgc3Rh
cnRlZCBieSBpbmhlcml0ZWQgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6d2lsbFJlbmRl
ckltYWdlKToKKworICAgICAgICAgICAgV2lsbFJlbmRlckltYWdlIG5vdyBjaGVja3MgZm9yIHN1
c3BlbnNpb24uIFRoaXMgY2F1c2VzIGFuaW1hdGVkIGltYWdlcyB0byBwYXVzZSBsaWtlCisgICAg
ICAgICAgICBhbGwgb3RoZXIgdGltZS1iYXNlZCBvYmplY3RzIGluIHRoZSBET00gZG9lcyB3aGVu
IHN1c3BlbmRlZC4KKwogMjAxMi0wMS0yMSAgRGF2aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gSW5jcmVtZW50YWwgdGV4dHVyZSB1cGRhdGVz
IGFyZSBub3QgYXRvbWljLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURP
TU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCmluZGV4IGRi
N2NhNjYuLmQ0NWI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01P
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKQEAgLTYy
LDcgKzYyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBlbnVtIFJlYXNvbkZvclN1
c3BlbnNpb24gewogICAgICAgICAgICAgSmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkLAogICAgICAg
ICAgICAgV2lsbFNob3dEaWFsb2csCi0gICAgICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFj
dGl2ZQorICAgICAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUsCisgICAgICAgICAg
ICBEb2N1bWVudFdpbGxCZVBhdXNlZAogICAgICAgICB9OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuU3VzcGVuZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25G
b3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVj
dXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAppbmRleCBlZjA2YzI5Li5hMDY3NWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC05Miw2ICs5Miw3IEBAIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAgIDogbV9pdGVyYXRpbmdB
Y3RpdmVET01PYmplY3RzKGZhbHNlKQogICAgICwgbV9pbkRlc3RydWN0b3IoZmFsc2UpCiAgICAg
LCBtX2luRGlzcGF0Y2hFcnJvckV2ZW50KGZhbHNlKQorICAgICwgbV9hY3RpdmVET01PYmplY3Rz
QXJlU3VzcGVuZGVkKGZhbHNlKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgLCBtX2hh
c09wZW5EYXRhYmFzZXMoZmFsc2UpCiAjZW5kaWYKQEAgLTIxMCw3ICsyMTEsNyBAQCBib29sIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCkKICAgICAg
ICAgICAgIG1faXRlcmF0aW5nQWN0aXZlRE9NT2JqZWN0cyA9IGZhbHNlOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgfSAgICAKKyAgICB9CiAgICAgbV9pdGVyYXRp
bmdBY3RpdmVET01PYmplY3RzID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yMjUs
MTAgKzIyNiwxMyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnN1c3BlbmRBY3RpdmVE
T01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UmVhc29uRm9yUwogICAgICAgICBpdGVyLT5maXJz
dC0+c3VzcGVuZCh3aHkpOwogICAgIH0KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMg
PSBmYWxzZTsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQgPSB0cnVlOworICAg
IG1fc3VzcGVuZFJlYXNvbiA9IHdoeTsKIH0KIAogdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpyZXN1bWVBY3RpdmVET01PYmplY3RzKCkKIHsKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBcmVT
dXNwZW5kZWQgPSBmYWxzZTsKICAgICAvLyBObyBwcm90ZWN0aW9uIGFnYWluc3QgbV9hY3RpdmVE
T01PYmplY3RzIGNoYW5naW5nIGR1cmluZyBpdGVyYXRpb246IHJlc3VtZSgpIHNob3VsZG4ndCBl
eGVjdXRlIGFyYml0cmFyeSBKUy4KICAgICBtX2l0ZXJhdGluZ0FjdGl2ZURPTU9iamVjdHMgPSB0
cnVlOwogICAgIEhhc2hNYXA8QWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCo+OjppdGVyYXRvciBhY3Rp
dmVPYmplY3RzRW5kID0gbV9hY3RpdmVET01PYmplY3RzLmVuZCgpOwpAQCAtMjYyLDYgKzI2Niwx
MCBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZENyZWF0ZUFjdGl2ZURPTU9iamVj
dChBY3RpdmVET01PYmplY3QqIG9iamVjdCwgdgogICAgIGlmIChtX2l0ZXJhdGluZ0FjdGl2ZURP
TU9iamVjdHMpCiAgICAgICAgIENSQVNIKCk7CiAgICAgbV9hY3RpdmVET01PYmplY3RzLmFkZChv
YmplY3QsIHVwY2FzdFBvaW50ZXIpOworCisgICAgLy8gRW5zdXJlIGFsbCBBY3RpdmVET01PYmpl
Y3RzIGFyZSBzdXNwZW5kZWQgYWxzbyBuZXdseSBjcmVhdGVkIG9uZXMuCisgICAgaWYgKG1fYWN0
aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCkKKyAgICAgICAgb2JqZWN0LT5zdXNwZW5kKG1fc3Vz
cGVuZFJlYXNvbik7CiB9CiAKIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6d2lsbERlc3Ry
b3lBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCBhZWQzNDExLi5mZDhiNTdiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTEwMyw2
ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVj
dHMoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKIAorICAgIGJv
b2wgYWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
RE9NT2JqZWN0c0FyZVN1c3BlbmRlZDsgfQorCiAgICAgdm9pZCBkaWRDcmVhdGVBY3RpdmVET01P
YmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7CiAgICAgdm9pZCB3
aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdChBY3RpdmVET01PYmplY3QqKTsKIApAQCAtMjA2LDYg
KzIwOCw5IEBAIHByaXZhdGU6CiAgICAgY2xhc3MgUGVuZGluZ0V4Y2VwdGlvbjsKICAgICBPd25Q
dHI8VmVjdG9yPE93blB0cjxQZW5kaW5nRXhjZXB0aW9uPiA+ID4gbV9wZW5kaW5nRXhjZXB0aW9u
czsKIAorICAgIGJvb2wgbV9hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVkOworICAgIEFjdGl2
ZURPTU9iamVjdDo6UmVhc29uRm9yU3VzcGVuc2lvbiBtX3N1c3BlbmRSZWFzb247CisKICNpZiBF
TkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIFJlZlB0cjxEYXRhYmFzZVRocmVhZD4gbV9kYXRhYmFz
ZVRocmVhZDsKICAgICBib29sIG1faGFzT3BlbkRhdGFiYXNlczsgLy8gVGhpcyBuZXZlciBjaGFu
Z2VzIGJhY2sgdG8gZmFsc2UsIGV2ZW4gYWZ0ZXIgdGhlIGRhdGFiYXNlIHRocmVhZCBpcyBjbG9z
ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCAwNWNjNWIy
Li5jOTNmODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAg
LTMxNDIsMTIgKzMxNDIsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKIHsKICAg
ICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0gICAgCisKICAgICBz
d2l0Y2ggKHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3Rp
dmU6CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBEb2N1bWVudFdpbGxCZVBhdXNlZDoKICAgICAgICAgY2FzZSBKYXZhU2NyaXB0RGVidWdnZXJQ
YXVzZWQ6CiAgICAgICAgIGNhc2UgV2lsbFNob3dEaWFsb2c6CiAgICAgICAgICAgICAvLyBEbyBu
b3RoaW5nLCB3ZSBkb24ndCBwYXVzZSBtZWRpYSBwbGF5YmFjayBpbiB0aGVzZSBjYXNlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5jcHAKaW5kZXggZTFmNWJjZi4uZGVlMjVjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTE2Niw2ICsxNjYsNyBAQCBpbmxpbmUgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhU
TUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlcgogICAgICwgbV9p
blZpZXdTb3VyY2VNb2RlKGZhbHNlKQogICAgICwgbV9pc0Rpc2Nvbm5lY3RlZChmYWxzZSkKICAg
ICAsIG1fZXhjbHVkZUZyb21UZXh0U2VhcmNoKGZhbHNlKQorICAgICwgbV9hY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50KDApCiB7CiAgICAgQVNTRVJUKHBhZ2UpOwog
ICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOwpAQCAtMTk2LDYgKzE5NywxMSBAQCBpbmxpbmUgRnJh
bWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50
LCBGcmFtZUxvYWRlcgogI2lmbmRlZiBOREVCVUcKICAgICBmcmFtZUNvdW50ZXIuaW5jcmVtZW50
KCk7CiAjZW5kaWYKKworICAgIC8vIFBhdXNlIGZ1dHVyZSBBY3RpdmVET01PYmplY3RzIGlmIHRo
aXMgZnJhbWUgaXMgYmVpbmcgY3JlYXRlZCB3aGlsZSB0aGUgcGFnZSBpcyBpbiBhIHBhdXNlZCBz
dGF0ZS4KKyAgICBGcmFtZSogcGFyZW50ID0gcGFyZW50RnJvbU93bmVyRWxlbWVudChvd25lckVs
ZW1lbnQpOworICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LT5hY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCgpKQorICAgICAgICBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWU6OmNyZWF0ZShQYWdlKiBw
YWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXJDbGll
bnQqIGNsaWVudCkKQEAgLTI5NSw2ICszMDEsMTMgQEAgdm9pZCBGcmFtZTo6c2V0RG9jdW1lbnQo
UGFzc1JlZlB0cjxEb2N1bWVudD4gbmV3RG9jKQogICAgICAgICBpZiAobV9wYWdlLT5tYWluRnJh
bWUoKSA9PSB0aGlzKQogICAgICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhh
bmRsZXJDb3VudENoYW5nZWQoKTsKICAgICB9CisKKyAgICAvLyBTdXNwZW5kIGRvY3VtZW50IGlm
IHRoaXMgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gc3VzcGVuZGVkIHN0YXRlLgorICAgIGlmIChhY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpKSB7CisgICAgICAgIGRvY3VtZW50
KCktPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAg
ICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7
CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9i
amVjdDo6RG9jdW1lbnRXaWxsQmVQYXVzZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklF
TlRBVElPTl9FVkVOVFMpCkBAIC0xMDAyLDYgKzEwMTUsNDUgQEAgZmxvYXQgRnJhbWU6OmZyYW1l
U2NhbGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsK
IH0KIAordm9pZCBGcmFtZTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkK
K3sKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHRoaXM7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCktPnRyYXZlcnNlTmV4dCh0aGlzKSkKKyAgICAgICAgZnJhbWUtPnNldFN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0ZvclRoaXNGcmFtZSh0cnVlKTsKK30KKwordm9pZCBG
cmFtZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQoreworICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVy
c2VOZXh0KHRoaXMpKQorICAgICAgICBmcmFtZS0+c2V0U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zRm9yVGhpc0ZyYW1lKGZhbHNlKTsKK30KKwordm9pZCBGcmFtZTo6c2V0U3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zRm9yVGhpc0ZyYW1lKGJvb2wgc3VzcGVu
ZCkKK3sKKyAgICBib29sIHdhc1N1c3BlbmRlZCA9IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zU3VzcGVuZGVkKCk7CisKKyAgICBpZiAoc3VzcGVuZCkKKyAgICAgICAgbV9hY3RpdmVET01P
YmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50Kys7CisgICAgZWxzZQorICAgICAgICBt
X2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQtLTsKKworICAgIEFT
U0VSVChtX2FjdGl2ZURPTU9iamVjdHNQYXVzZWRDb3VudCA+PSAwKTsKKworICAgIGlmIChhY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpID09IHdhc1N1c3BlbmRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAgaWYgKG1fYWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCkgeworICAgICAgICAgICAg
ZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OworICAgICAgICAgICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQo
ZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5zdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0cyhBY3RpdmVET01PYmplY3Q6OkRvY3VtZW50V2lsbEJlUGF1c2VkKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHMoKTsK
KyAgICAgICAgICAgIGFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9j
dW1lbnQoKSk7CisgICAgICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlv
bkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIHZvaWQgRnJhbWU6OmRldmljZU9yUGFnZVNjYWxlRmFj
dG9yQ2hhbmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggMThkYTVmMy4uM2NmOWI2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuaApAQCAtMTg1LDEzICsxODUsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9u
KiwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0
T2ZDZWxsKTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFu
Y2UsIGJvb2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJl
bHNBZ2FpbnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7
Ci0gICAgICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU0ltYWdlKiBzZWxlY3Rp
b25JbWFnZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNvbnN0OwogICAgICAgICBOU0lt
YWdlKiByYW5nZUltYWdlKFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25z
dDsKICAgICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoTm9kZSosIE5TUmVjdCogaW1h
Z2VSZWN0LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogaW1h
Z2VGcm9tUmVjdChOU1JlY3QpIGNvbnN0OwogI2VuZGlmCisgICAgICAgIHZvaWQgc3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAogICAgICAgICAvLyBTaG91bGQg
b25seSBiZSBjYWxsZWQgb24gdGhlIG1haW4gZnJhbWUgb2YgYSBwYWdlLgogICAgICAgICB2b2lk
IG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3Q7
CkBAIC0yMDEsNiArMjA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZhdGU6CiAg
ICAgICAgIEZyYW1lKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZUxvYWRlckNs
aWVudCopOwogCisgICAgICAgIHZvaWQgc2V0U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zRm9yVGhpc0ZyYW1lKGJvb2wpOwogICAgICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRz
Rm9yV29ybGQoRE9NV3JhcHBlcldvcmxkKiwgY29uc3QgVXNlclNjcmlwdFZlY3RvciYsIFVzZXJT
Y3JpcHRJbmplY3Rpb25UaW1lKTsKIAogICAgICAgICBIYXNoU2V0PEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlcio+IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnM7CkBAIC0yNTMsNiArMjU3LDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1fdGls
ZWRCYWNraW5nU3RvcmU7CiAjZW5kaWYKIAorICAgICAgICBpbnQgbV9hY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50OworCiAgICAgfTsKIAogICAgIGlubGluZSB2b2lk
IEZyYW1lOjppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFi
bGVUaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuY3BwCmlu
ZGV4IDJhNGQyZTUuLmQyNzRhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3Vz
cGVuZGFibGVUaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TdXNwZW5kYWJsZVRp
bWVyLmNwcApAQCAtMzUsMTAgKzM1LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6U3VzcGVuZGFibGVU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIDogQWN0aXZlRE9NT2Jq
ZWN0KGNvbnRleHQsIHRoaXMpCiAgICAgLCBtX25leHRGaXJlSW50ZXJ2YWwoMCkKICAgICAsIG1f
cmVwZWF0SW50ZXJ2YWwoMCkKLSNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2FjdGl2ZShm
YWxzZSkKICAgICAsIG1fc3VzcGVuZGVkKGZhbHNlKQotI2VuZGlmCiB7CiB9CiAKQEAgLTQ4LDcg
KzQ2LDggQEAgU3VzcGVuZGFibGVUaW1lcjo6flN1c3BlbmRhYmxlVGltZXIoKQogCiBib29sIFN1
c3BlbmRhYmxlVGltZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGlzQWN0aXZlKCk7CisgICAgLy8gSXMgY3VycmVudGx5IGFjdGl2ZSBvciBoYXMgc3VzcGVuZGVk
IGFjdGl2aXR5CisgICAgcmV0dXJuIFRpbWVyQmFzZTo6aXNBY3RpdmUoKSB8fCBtX2FjdGl2ZTsK
IH0KIAogdm9pZCBTdXNwZW5kYWJsZVRpbWVyOjpzdG9wKCkKQEAgLTU4LDEwICs1NywxMCBAQCB2
b2lkIFN1c3BlbmRhYmxlVGltZXI6OnN0b3AoKQogCiB2b2lkIFN1c3BlbmRhYmxlVGltZXI6OnN1
c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKIHsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAg
QVNTRVJUKCFtX3N1c3BlbmRlZCk7CisgICAgaWYgKG1fc3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisKICAgICBtX3N1c3BlbmRlZCA9IHRydWU7Ci0jZW5kaWYKICAgICBtX2FjdGl2ZSA9IGlz
QWN0aXZlKCk7CiAgICAgaWYgKG1fYWN0aXZlKSB7CiAgICAgICAgIG1fbmV4dEZpcmVJbnRlcnZh
bCA9IG5leHRGaXJlSW50ZXJ2YWwoKTsKQEAgLTcyLDEyICs3MSwxMiBAQCB2b2lkIFN1c3BlbmRh
YmxlVGltZXI6OnN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbikKIAogdm9pZCBTdXNwZW5kYWJs
ZVRpbWVyOjpyZXN1bWUoKQogewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBBU1NFUlQobV9z
dXNwZW5kZWQpOworICAgIGlmICghbV9zdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwogICAg
IG1fc3VzcGVuZGVkID0gZmFsc2U7Ci0jZW5kaWYKICAgICBpZiAobV9hY3RpdmUpCi0gICAgICAg
IHN0YXJ0KG1fbmV4dEZpcmVJbnRlcnZhbCwgbV9yZXBlYXRJbnRlcnZhbCk7CisgICAgICAgIFRp
bWVyQmFzZTo6c3RhcnQobV9uZXh0RmlyZUludGVydmFsLCBtX3JlcGVhdEludGVydmFsKTsKIH0K
IAogYm9vbCBTdXNwZW5kYWJsZVRpbWVyOjpjYW5TdXNwZW5kKCkgY29uc3QKQEAgLTg1LDQgKzg0
LDE0IEBAIGJvb2wgU3VzcGVuZGFibGVUaW1lcjo6Y2FuU3VzcGVuZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK3ZvaWQgU3VzcGVuZGFibGVUaW1lcjo6c3RhcnQoZG91YmxlIG5leHRG
aXJlSW50ZXJ2YWwsIGRvdWJsZSByZXBlYXRJbnRlcnZhbCkKK3sKKyAgICBpZiAobV9zdXNwZW5k
ZWQpIHsKKyAgICAgICAgbV9uZXh0RmlyZUludGVydmFsID0gbmV4dEZpcmVJbnRlcnZhbDsKKyAg
ICAgICAgbV9yZXBlYXRJbnRlcnZhbCA9IHJlcGVhdEludGVydmFsOworICAgICAgICBtX2FjdGl2
ZSA9IHRydWU7CisgICAgfSBlbHNlCisgICAgICAgIFRpbWVyQmFzZTo6c3RhcnQobmV4dEZpcmVJ
bnRlcnZhbCwgcmVwZWF0SW50ZXJ2YWwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1N1c3BlbmRhYmxlVGltZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCmluZGV4IGZhMDNkNmUuLmI2NDU2MDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU3VzcGVuZGFibGVUaW1lci5oCkBAIC00NCwxNSArNDQsMTYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24p
OwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKTsKIAorICAgIC8vIFRpbWVyQmFzZQorICAgIHZp
cnR1YWwgdm9pZCBzdGFydChkb3VibGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdElu
dGVydmFsKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZmlyZWQoKSA9IDA7CiAKICAg
ICBkb3VibGUgbV9uZXh0RmlyZUludGVydmFsOwogICAgIGRvdWJsZSBtX3JlcGVhdEludGVydmFs
OwogICAgIGJvb2wgbV9hY3RpdmU7Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIGJvb2wgbV9z
dXNwZW5kZWQ7Ci0jZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9UaW1lci5oCmluZGV4IDYzN2JiYzAuLjc4ZDk1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGlt
ZXIuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgVGltZXJCYXNlKCk7CiAgICAgdmly
dHVhbCB+VGltZXJCYXNlKCk7CiAKLSAgICB2b2lkIHN0YXJ0KGRvdWJsZSBuZXh0RmlyZUludGVy
dmFsLCBkb3VibGUgcmVwZWF0SW50ZXJ2YWwpOworICAgIHZpcnR1YWwgdm9pZCBzdGFydChkb3Vi
bGUgbmV4dEZpcmVJbnRlcnZhbCwgZG91YmxlIHJlcGVhdEludGVydmFsKTsKIAogICAgIHZvaWQg
c3RhcnRSZXBlYXRpbmcoZG91YmxlIHJlcGVhdEludGVydmFsKSB7IHN0YXJ0KHJlcGVhdEludGVy
dmFsLCByZXBlYXRJbnRlcnZhbCk7IH0KICAgICB2b2lkIHN0YXJ0T25lU2hvdChkb3VibGUgaW50
ZXJ2YWwpIHsgc3RhcnQoaW50ZXJ2YWwsIDApOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGY0YmQyYTEuLmI4ZmYyNGUgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNTg3LDYgKzI1ODcsMTAgQEAgYm9vbCBS
ZW5kZXJPYmplY3Q6OndpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopCiAgICAgaWYgKHN0eWxl
KCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICAvLyBXZSB3aWxsIG5vdCByZW5kZXIgYSBuZXcgaW1hZ2Ugd2hlbiBBY3RpdmUgRE9NIGlzIHN1
c3BlbmRlZAorICAgIGlmIChkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVuZGVk
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBhIHdp
bmRvdyAoaS5lLiwgd2UncmUgZG9ybWFudCBmcm9tIGJlaW5nIHB1dCBpbiB0aGUgYi9mIGNhY2hl
IG9yIGluIGEgYmFja2dyb3VuZCB0YWIpCiAgICAgLy8gdGhlbiB3ZSBkb24ndCB3YW50IHRvIHJl
bmRlciBlaXRoZXIuCiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpICYmICFk
b2N1bWVudCgpLT52aWV3KCktPmlzT2Zmc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYjExY2ZmYy4u
YTk1MmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTAxLTI0ICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1c3Bl
bmQvUmVzdW1lIEFQSSBmb3IgV2ViS2l0Mi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2MDYzCisKKyAgICAgICAgQmFzZWQgb24gdGhlIGluaXRpYWwg
d29yayBvZiBaYWxhbiBCdWp0YXMgPHphbGFuLmJ1anRhc0Bub2tpYS5jb20+LAorCisgICAgICAg
IEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3IgV2ViS2l0MiBhbmQgdXNlcyBpdCBpbiBR
dCB0bworICAgICAgICBzdXNwZW5kIGFuaW1hdGlvbnMgYW5kIERPTSB0aW1lcnMgZHVyaW5nIHBh
bm5pbmcgYW5kIHpvb20uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgorICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX3N1c3BlbmQpOgorICAgICAgICAoUVF1aWNrV2ViVmll
d1ByaXZhdGU6Ol9xX3Jlc3VtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nl
c3NEaWRDcmFzaCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTItMDEtMjEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUu
Y29tPgogCiAgICAgICAgIE1ha2UgV2ViS2l0MiByZW1lbWJlciB0aGUgaGVpZ2h0IG9mIHRoZSBX
ZWIgSW5zcGVjdG9yIHdoZW4gaXQgaXMgZG9ja2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggOTRiNTI1NS4uNGJmMGUyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcu
Y3BwCkBAIC0xODYsMTEgKzE4NiwxMyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9v
bkljb25DaGFuZ2VkRm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdlVVJMLCBjb25zdAogdm9pZCBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6X3Ffc3VzcGVuZCgpCiB7CiAgICAgcGFnZUlzU3VzcGVuZGVk
ID0gdHJ1ZTsKKyAgICB3ZWJQYWdlUHJveHktPnN1c3BlbmQoKTsKIH0KIAogdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6X3FfcmVzdW1lKCkKIHsKICAgICBwYWdlSXNTdXNwZW5kZWQgPSBmYWxz
ZTsKKyAgICB3ZWJQYWdlUHJveHktPnJlc3VtZSgpOwogCiAgICAgaWYgKGlzVHJhbnNpdGlvbmlu
Z1RvTmV3UGFnZSkgewogICAgICAgICBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzdmMDNlMy4u
NjVmMWIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTE4NSw2ICsxODUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50KiBw
YWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwgbV9uZWVkVG91
Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1f
aXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1faXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnREZWxldGVFbmFi
bGVkKCkpCiAjZW5kaWYKQEAgLTExMDksNiArMTExMCwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50KQogICAgIHNl
dFVzZXJBZ2VudChtX2N1c3RvbVVzZXJBZ2VudCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXN1bWUoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFtX2lzUGFnZVN1c3BlbmRlZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKKworICAgIHBy
b2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lKCksIG1fcGFnZUlEKTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8
IG1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGFnZVN1c3Bl
bmRlZCA9IHRydWU7CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1
c3BlbmQoKSwgbV9wYWdlSUQpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0
RW5jb2RpbmcoKSBjb25zdAogewogICAgIHJldHVybiAhbV9tYWluRnJhbWVIYXNDdXN0b21SZXBy
ZXNlbnRhdGlvbiAmJiBtX21haW5GcmFtZSAmJiAhbV9tYWluRnJhbWUtPmlzRGlzcGxheWluZ1N0
YW5kYWxvbmVJbWFnZURvY3VtZW50KCk7CkBAIC0zMTM1LDYgKzMxNTYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBBU1NFUlQobV9wYWdlQ2xpZW50KTsKIAog
ICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFsc2U7CiAK
ICAgICBpZiAobV9tYWluRnJhbWUpIHsKICAgICAgICAgbV91cmxBdFByb2Nlc3NFeGl0ID0gbV9t
YWluRnJhbWUtPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmlu
ZGV4IDY5Y2U5OGIuLjcxNWNiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTQwMSw2ICs0MDEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0
RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmluZyBjdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21UZXh0RW5jb2RpbmdOYW1lOyB9CiAKKyAg
ICB2b2lkIHJlc3VtZSgpOworICAgIHZvaWQgc3VzcGVuZCgpOworCiAgICAgZG91YmxlIGVzdGlt
YXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVByb2Nlc3MoKTsKQEAg
LTk4MCw2ICs5ODMsOCBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9wYWdlSUQ7CiAKKyAg
ICBib29sIG1faXNQYWdlU3VzcGVuZGVkOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wg
bV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDkwYTE4NjAuLjVmNDU3MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2
MTcsNyArMTYxNywyNSBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCkKIHsKICAgICBtX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDsKIH0KLSAgCisKK3Zv
aWQgV2ViUGFnZTo6c3VzcGVuZCgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgZnJhbWUtPnN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgp
Cit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlm
IChmcmFtZSkKKyAgICAgICAgZnJhbWUtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHJlcGFpbnQgb24gcmVzdW1lIHRvIGtpY2tzdGFy
dCBhbmltYXRlZCBwYWludGluZyBhZ2Fpbi4KKyAgICBkcmF3aW5nQXJlYSgpLT5zZXROZWVkc0Rp
c3BsYXkoYm91bmRzKCkpOworfQorCisKIEludFBvaW50IFdlYlBhZ2U6OnNjcmVlblRvV2luZG93
KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBJbnRQb2ludCB3aW5kb3dQb2ludDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGE5YzIxMzAu
LjdhZTA4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNTc4LDYgKzU3OCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3Qg
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCBzdXNwZW5kKCk7CisgICAgdm9pZCByZXN1bWUoKTsKIAog
I2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2Nh
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDcwMjQ3OWIu
LjYxNzBkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05Nyw2ICs5Nyw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgewogICAgIFNldFVzZXJBZ2VudChXVEY6OlN0cmluZyB1c2VyQWdlbnQpCiAgICAgU2V0Q3Vz
dG9tVGV4dEVuY29kaW5nTmFtZShXVEY6OlN0cmluZyBlbmNvZGluZ05hbWUpCiAKKyAgICBTdXNw
ZW5kKCkKKyAgICBSZXN1bWUoKQorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAg
U2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoV2ViQ29yZTo6SW50UmVjdCByZWN0KQogICAgIFNl
dFZpZXdwb3J0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129004</attachid>
            <date>2012-02-27 03:39:47 -0800</date>
            <delta_ts>2012-02-27 04:50:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120227123945.patch</filename>
            <type>text/plain</type>
            <size>16614</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI3ZTYyNDhjODZiMDkw
M2NiMTZjNDViN2EwNDdmOGQzZDA1ODU2Ni4uMjdkZjNhYTUxMjM5YzM3YWJkZDY4MWJiZTIzYzcz
Njg2ODlkNWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTI3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIEFQSSBmb3IgcGF1c2luZyB0aW1lcnMgYW5kIGFuaW1hdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0FjdGl2ZURP
TU9iamVjdC5oOgorICAgICAgICAgICAgTmV3IFJlYXNvbkZvclN1c3BlbnNpb246IFBhZ2VXaWxs
QmVQYXVzZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOiBIYW5kbGUgbmV3IFJlYXNvbkZv
clN1c3BlbnNpb24uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgorICAgICAg
ICAgICAgRnJhbWUgbm93IG1haW50YWlucyBhIHN0YXRlIG9mIHN1c3BlbmRpbmcgYW5pbWF0aW9u
IGFuZCBBY3RpdmVET01PYmplY3RzLAorICAgICAgICAgICAgd2hpY2ggaXMgaW5oZXJpdGVkIHRv
IGFsbCBjaGlsZC1mcmFtZXMuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICAgICBGdW5jdGlvbnMgZm9yIHN1c3Bl
bmRpbmcgYW5kIHJlc3VtaW5nIGFjdGl2ZSBET00gb2JqZWN0cyBhbmQgYW5pbWF0aW9ucyBpbiBh
bGwgZnJhbWVzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp3aWxsUmVuZGVySW1hZ2UpOgorICAgICAgICAgICAg
V2lsbFJlbmRlckltYWdlIG5vdyBjaGVja3MgZm9yIHN1c3BlbnNpb24uIFRoaXMgY2F1c2VzIGFu
aW1hdGVkIGltYWdlcyB0byBwYXVzZQorICAgICAgICAgICAgdG9nZXRoZXIgd2l0aCBhbGwgb3Ro
ZXIgdHlwZXMgb2YgYW5pbWF0aW9ucy4KKwogMjAxMi0wMi0yNCAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KIAogICAgICAgICBSZWZhY3RvciBFdmVudEhh
bmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NWE3ZjRiZGU0OGI5MTUz
YTNlOTgzYTIwMDI1ZWJhNmZjMTM3YzljLi4xYTE2NTdlYjg3MTZhYTJlM2RlNjcxMjY3ZjY0NjY1
MTAzMTJmM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDItMjcgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tpYS5jb20+CisKKyAgICAgICAgU3Vz
cGVuZC9SZXN1bWUgQVBJIGZvciBwYXVzaW5nIHRpbWVycyBhbmQgYW5pbWF0aW9ucy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDYzCisKKyAgICAg
ICAgQmFzZWQgb24gdGhlIGluaXRpYWwgd29yayBvZiBaYWxhbiBCdWp0YXMgPHphbGFuLmJ1anRh
c0Bub2tpYS5jb20+LAorCisgICAgICAgIEFkZHMgc3VzcGVuZCBhbmQgcmVzdW1lIEFQSSBmb3Ig
V2ViS2l0MiBhbmQgdXNlcyBpdCBpbiBRdCB0bworICAgICAgICBzdXNwZW5kIGFuaW1hdGlvbnMg
YW5kIERPTSB0aW1lcnMgZHVyaW5nIHBhbm5pbmcgYW5kIHpvb20uCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXcuY3BwOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9x
X3N1c3BlbmQpOgorICAgICAgICAoUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3Jl
c3VtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1c3Bl
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c3VzcGVuZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3VtZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbjoKKwogMjAxMi0wMi0yNCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVz
bWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBVc2UgcHJpdmF0ZSBRU0dSZW5kZXJOb2Rl
IGluIFFRdWlja1dlYlZpZXcgZm9yIGltcHJvdmVkIFF0IFNjZW5lIEdyYXBoIGludGVncmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZGNlNmI1NmRkY2IyMjBlNTU3
ZGNjNGZiNGI1NDFkOTZiYTgwMzcyOC4uNWYyNGRmZWE2ZGIwYjk4MjMyZTYwNmYyMmMxZmU0ZGFj
YmE5ZWU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNjksNyArNjks
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGVudW0gUmVhc29uRm9yU3VzcGVuc2lv
biB7CiAgICAgICAgICAgICBKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgICAgICBX
aWxsU2hvd0RpYWxvZywKLSAgICAgICAgICAgIERvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlCisg
ICAgICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSwKKyAgICAgICAgICAgIFBhZ2VX
aWxsQmVTdXNwZW5kZWQKICAgICAgICAgfTsKICAgICAgICAgdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVu
c2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiOTU2
ZDY2ZDk3YjZjNjg5MzBkNDkyYzUzYTI2OWM1ZDAzMGJkYjExLi40M2Y1ODk2MjVhYmNlN2JjZGIw
Y2M5ZWY0YWFlMzc4MjAyZmY0NmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTM0MDAsMTIgKzM0MDAsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
dG9wKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
IHdoeSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0g
ICAgCisKICAgICBzd2l0Y2ggKHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxs
QmVjb21lSW5hY3RpdmU6CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQYWdlV2lsbEJlU3VzcGVuZGVkOgogICAgICAgICBjYXNlIEphdmFTY3Jp
cHREZWJ1Z2dlclBhdXNlZDoKICAgICAgICAgY2FzZSBXaWxsU2hvd0RpYWxvZzoKICAgICAgICAg
ICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNl
IGNhc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlZTNjMDY4Yzg1MWZmMjk2NjU4NzJjYWRi
YTMzMzRiMWUzMWM0Nzc2Li4yZDMzNjE4MWMxN2I0NmQ5MTc1NTkzNDIyNDMxYWRkNzE0YWJiZTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIGlubGluZSBGcmFtZTo6
RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZy
YW1lTG9hZGVyCiAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAgLCBtX2lzRGlz
Y29ubmVjdGVkKGZhbHNlKQogICAgICwgbV9leGNsdWRlRnJvbVRleHRTZWFyY2goZmFsc2UpCisg
ICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQoMCkKIHsK
ICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkBAIC0xOTYsNiAr
MTk3LDExIEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAjaWZuZGVmIE5ERUJVRwogICAgIGZy
YW1lQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisgICAgLy8gUGF1c2UgZnV0dXJlIEFj
dGl2ZURPTU9iamVjdHMgaWYgdGhpcyBmcmFtZSBpcyBiZWluZyBjcmVhdGVkIHdoaWxlIHRoZSBw
YWdlIGlzIGluIGEgcGF1c2VkIHN0YXRlLgorICAgIEZyYW1lKiBwYXJlbnQgPSBwYXJlbnRGcm9t
T3duZXJFbGVtZW50KG93bmVyRWxlbWVudCk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkpCisgICAgICAgIHN1c3BlbmRB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCiBQYXNzUmVmUHRyPEZyYW1lPiBG
cmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQpAQCAtMzA2LDYgKzMxMiwxMyBAQCB2b2lk
IEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3VtZW50PiBuZXdEb2MpCiAgICAgICAg
IG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAg
ICAgIG5vdGlmeUNocm9tZUNsaWVudFRvdWNoRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAg
ICAgfQorCisgICAgLy8gU3VzcGVuZCBkb2N1bWVudCBpZiB0aGlzIGZyYW1lIHdhcyBjcmVhdGVk
IGluIHN1c3BlbmRlZCBzdGF0ZS4KKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWQoKSkgeworICAgICAgICBkb2N1bWVudCgpLT5zdXNwZW5kU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGFuaW1hdGlvbigpLT5zdXNwZW5k
QW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBkb2N1bWVudCgpLT5z
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlBhZ2VXaWxsQmVTdXNwZW5k
ZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC0xMDEx
LDYgKzEwMjQsMzggQEAgZmxvYXQgRnJhbWU6OmZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdAogICAg
IHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAordm9pZCBGcmFtZTo6c3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKK3sKKyAgICBib29sIHdhc1N1c3BlbmRl
ZCA9IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCk7CisKKyAgICBtX2Fj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQrKzsKKworICAgIGlmICh3
YXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgpKSB7Cisg
ICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxs
YmFja3MoKTsKKyAgICAgICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1l
bnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7CisgICAgfQorfQorCit2
b2lkIEZyYW1lOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCit7CisgICAg
QVNTRVJUKGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkpOworCisgICAg
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50LS07CisKKyAgICBp
ZiAoYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVzdW1l
QWN0aXZlRE9NT2JqZWN0cygpOworICAgICAgICBhbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9u
c0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICB9Cit9CisKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGUwNmMwZGZjN2YzMjhhNTExZjhm
MjNmNmNlZTczNDliZGI2MzI3ZmEuLjM5Y2Q3ZmY1MTY5MWQyYTE2NzMyNTI3MGM0ZGQxMzQ2NDBl
ZmRmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE4OCwxMyArMTg4LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChSZWd1bGFy
RXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5j
ZUZyb21TdGFydE9mQ2VsbCk7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJl
c3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAgU3RyaW5n
IG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywg
RWxlbWVudCopOwotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgTlNJbWFn
ZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25zdDsKICAg
ICAgICAgTlNJbWFnZSogcmFuZ2VJbWFnZShSYW5nZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBm
YWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqLCBO
U1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7CiAgICAgICAgIE5T
SW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKICNlbmRpZgorICAgICAgICB2b2lk
IHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgICAgICB2b2lkIHJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAKICAgICAgICAg
Ly8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBtYWluIGZyYW1lIG9mIGEgcGFnZS4KICAg
ICAgICAgdm9pZCBub3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdl
ZCgpIGNvbnN0OwpAQCAtMjU3LDYgKzI2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0b3JlOwogI2VuZGlm
CiAKKyAgICAgICAgaW50IG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRD
b3VudDsKKwogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5pdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCAxYmFkMGE0N2JiMjZlNDdmOThlZjFkZmE3MDZlYzQyMjg5NTgyZmEzLi43
N2FmOTJmNjI4ZDE5ZWJmYjY4MThlNTVjNTVlYWZhNGZkMjAyNDE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTEwNDksNiArMTA0OSwxOSBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVk
T2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplYwogICAgIH0K
IH0KIAordm9pZCBQYWdlOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQor
eworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICBmcmFtZS0+c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgUGFnZTo6cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgICAgICBmcmFtZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30K
KworCiB2b2lkIFBhZ2U6OnByb3ZpZGVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgUGFzc093blB0cjxQYWdlU3VwcGxlbWVudD4gc3VwcGxlbWVudCkKIHsKICAgICBBU1NFUlQo
IW1fc3VwcGxlbWVudHMuZ2V0KG5hbWUuaW1wbCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDY4NWVl
ZDdlNzA1YjU2N2FjOTMxMDRmNWI3ZDk4YzgyM2Y0YTRlOTQuLjMyZTY1OTJhOTE0NWEzYzZhMmVj
NGQxNmE2ODM1NzZhMDkxNjM3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0zMjQsNiArMzI0LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHN0YXJ0Q291bnRpbmdSZWxldmFudFJl
cGFpbnRlZE9iamVjdHMoKTsKICAgICAgICAgdm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZE9iamVj
dChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3QpOwogCisgICAg
ICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAg
IHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKwogICAgICAgICB2
b2lkIHByb3ZpZGVTdXBwbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYsIFBhc3NPd25QdHI8UGFn
ZVN1cHBsZW1lbnQ+KTsKICAgICAgICAgUGFnZVN1cHBsZW1lbnQqIHJlcXVpcmVTdXBwbGVtZW50
KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuY3BwCmluZGV4IGE5MWI3Zjg5YzVjOTY4YjVlYTc5MzdmMmNiYWM1Y2Y4Y2I5NGRkYTEu
LmFhYTRmMTM0OWY3ZDYyZTExMmYwMjdmMTUxYzBmNjU4OTlhMDY0YzkgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNjM1LDYgKzI2MzUsMTAgQEAgYm9v
bCBSZW5kZXJPYmplY3Q6OndpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopCiAgICAgaWYgKHN0
eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICAvLyBXZSB3aWxsIG5vdCByZW5kZXIgYSBuZXcgaW1hZ2Ugd2hlbiBBY3RpdmUgRE9NIGlz
IHN1c3BlbmRlZAorICAgIGlmIChkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3VzcGVu
ZGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCBpbiBh
IHdpbmRvdyAoaS5lLiwgd2UncmUgZG9ybWFudCBmcm9tIGJlaW5nIHB1dCBpbiB0aGUgYi9mIGNh
Y2hlIG9yIGluIGEgYmFja2dyb3VuZCB0YWIpCiAgICAgLy8gdGhlbiB3ZSBkb24ndCB3YW50IHRv
IHJlbmRlciBlaXRoZXIuCiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpICYm
ICFkb2N1bWVudCgpLT52aWV3KCktPmlzT2Zmc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBmNDBlMjg5MjQ1YWFh
MmY0NTAwYmM1MTI5YjA2YmQyZTU3NTYwYTZjLi5hYjc4ZDAxNmMxZGFhYmI2ODMwNTQzN2VmM2E5
ZWYxYzVkOGRiOGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHAKQEAgLTY0Miw2ICs2NDIsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQ
cml2YXRlOjpfcV9jb21taXRQb3NpdGlvbkNoYW5nZShjb25zdCBRUG9pbnRGJiB0cmFqZWN0b3J5
VmVjdAogdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3Ffc3VzcGVuZCgpCiB7
CiAgICAgcGFnZUlzU3VzcGVuZGVkID0gdHJ1ZTsKKyAgICB3ZWJQYWdlUHJveHktPnN1c3BlbmQo
KTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfcmVzdW1lKCkK
QEAgLTY1MCw2ICs2NTEsNyBAQCB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpf
cV9yZXN1bWUoKQogICAgICAgICByZXR1cm47CiAKICAgICBwYWdlSXNTdXNwZW5kZWQgPSBmYWxz
ZTsKKyAgICB3ZWJQYWdlUHJveHktPnJlc3VtZSgpOwogCiAgICAgaWYgKGlzVHJhbnNpdGlvbmlu
Z1RvTmV3UGFnZSkgewogICAgICAgICBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2UgPSBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVhM2ZlNGEx
NzcwNDg0MTQ1MjgwNDFhMzRmMTcwYTc1ZmZkNmJiYS4uMGMwNTRmZWY0ZWVkNjAwMDdiY2IyNDhm
Njc3NWQ0NWMxYmM2MzNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwg
bV9uZWVkVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
KyAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAs
IG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkpCiAjZW5kaWYKQEAgLTExMjYsNiArMTEyNywyNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50
KQogICAgIHNldFVzZXJBZ2VudChtX2N1c3RvbVVzZXJBZ2VudCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN1bWUoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8ICFtX2lzUGFnZVN1c3Bl
bmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsK
KworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lKCksIG1fcGFn
ZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoKQoreworICAgIGlmICghaXNW
YWxpZCgpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lz
UGFnZVN1c3BlbmRlZCA9IHRydWU7CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN1c3BlbmQoKSwgbV9wYWdlSUQpOworfQorCiBib29sIFdlYlBhZ2VQcm94eTo6c3Vw
cG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIHJldHVybiAhbV9tYWluRnJhbWVIYXND
dXN0b21SZXByZXNlbnRhdGlvbiAmJiBtX21haW5GcmFtZSAmJiAhbV9tYWluRnJhbWUtPmlzRGlz
cGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KCk7CkBAIC0zMTkxLDYgKzMyMTIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBBU1NFUlQobV9wYWdlQ2xp
ZW50KTsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1faXNQYWdlU3VzcGVuZGVkID0g
ZmFsc2U7CiAKICAgICBpZiAobV9tYWluRnJhbWUpIHsKICAgICAgICAgbV91cmxBdFByb2Nlc3NF
eGl0ID0gbV9tYWluRnJhbWUtPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IGFmOGRhMWJlZmE5MjQ2MWU4MjY3MzAyNjU1ODZjMGM3YmU3NDhmNzQuLjk5
ZjQwYTI5YjM0ZjJlZWIxMTk2MjEzNDU2MDM3YzI0OThkZmQ2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQwNyw2ICs0MDcsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwogICAgIFN0cmlu
ZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21UZXh0RW5j
b2RpbmdOYW1lOyB9CiAKKyAgICB2b2lkIHJlc3VtZSgpOworICAgIHZvaWQgc3VzcGVuZCgpOwor
CiAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIHRlcm1p
bmF0ZVByb2Nlc3MoKTsKQEAgLTk5Miw2ICs5OTUsOCBAQCBwcml2YXRlOgogCiAgICAgdWludDY0
X3QgbV9wYWdlSUQ7CiAKKyAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkOworCiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIGJvb2wgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGRh
ZDgxMDQ5MWI3MjkzYjQ2M2JkN2MyYWUyYjc0ZmE3ZjQwYTgyYjguLjc3ODVhMTA4ZmQxYzE0NDBi
NjRiOGRlNmUwNzY1MGRhMmU0YmUyZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2NjAsNyArMTY2MCwyNSBAQCB2b2lkIFdlYlBhZ2U6
OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICBtX3VzZXJBZ2Vu
dCA9IHVzZXJBZ2VudDsKIH0KLSAgCisKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZCgpCit7CisgICAg
RnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmIChmcmFtZSkK
KyAgICAgICAgZnJhbWUtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwor
fQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9tYWlu
RnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgZnJhbWUtPnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHJl
cGFpbnQgb24gcmVzdW1lIHRvIGtpY2tzdGFydCBhbmltYXRlZCBwYWludGluZyBhZ2Fpbi4KKyAg
ICBkcmF3aW5nQXJlYSgpLT5zZXROZWVkc0Rpc3BsYXkoYm91bmRzKCkpOworfQorCisKIEludFBv
aW50IFdlYlBhZ2U6OnNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAg
ICBJbnRQb2ludCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDc0NWJmNGQ0YWEyYzAyNzJjOWIwZmM3MGVjZjE3YmIyZTU5MjEw
ZGIuLmMyMzgxY2Q4NDhjN2UxMjZmM2JiMTIwNGZjNDA5OWQyOTU2ODViMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTk4LDYgKzU5OCw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBkb3dubG9hZElEKTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAg
ICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9p
ZCBzdXNwZW5kKCk7CisgICAgdm9pZCByZXN1bWUoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDc4MTNhZGYzYzQzMjE1ZjRkZjEwM2Q0NmM5MjAy
NjdmN2Q2MDg5Y2QuLmI5ZjUzYzkxNzI2OTIyZDNhNzA4ZTllMWY0YzcyZDQ4NWQyYjVlM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCkBAIC0xMDEsNiArMTAxLDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAg
U2V0VXNlckFnZW50KFdURjo6U3RyaW5nIHVzZXJBZ2VudCkKICAgICBTZXRDdXN0b21UZXh0RW5j
b2RpbmdOYW1lKFdURjo6U3RyaW5nIGVuY29kaW5nTmFtZSkKIAorICAgIFN1c3BlbmQoKQorICAg
IFJlc3VtZSgpCisKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBTZXRGaXhlZFZp
c2libGVDb250ZW50UmVjdChXZWJDb3JlOjpJbnRSZWN0IHJlY3QpCiAgICAgU2V0Vmlld3BvcnRT
aXplKFdlYkNvcmU6OkludFNpemUgc2l6ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129015</attachid>
            <date>2012-02-27 04:51:02 -0800</date>
            <delta_ts>2012-02-27 08:09:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76063-20120227135100.patch</filename>
            <type>text/plain</type>
            <size>16360</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGEzODI1M2RlZTYwZWZk
ZTI1NGJjNWYxMDY3MDUzOTVlZmEwNjdiZS4uY2ZmZWY4MzIzYTAyYjY2Mjg4NTZhODdlMTMxNGVm
YmUyZTczZmEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTI3ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIFN1
c3BlbmQvUmVzdW1lIEFQSSBmb3IgcGF1c2luZyB0aW1lcnMgYW5kIGFuaW1hdGlvbnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL0FjdGl2ZURP
TU9iamVjdC5oOgorICAgICAgICAgICAgTmV3IFJlYXNvbkZvclN1c3BlbnNpb246IFBhZ2VXaWxs
QmVQYXVzZWQuCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQpOiBIYW5kbGUgbmV3IFJlYXNvbkZv
clN1c3BlbnNpb24uCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnNldERvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNB
bmRBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQpOgorICAgICAg
ICAgICAgRnJhbWUgbm93IG1haW50YWlucyBhIHN0YXRlIG9mIHN1c3BlbmRpbmcgYW5pbWF0aW9u
IGFuZCBBY3RpdmVET01PYmplY3RzLAorICAgICAgICAgICAgd2hpY2ggaXMgaW5oZXJpdGVkIHRv
IGFsbCBjaGlsZC1mcmFtZXMuCisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6
CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICAgICBGdW5jdGlvbnMgZm9yIHN1c3Bl
bmRpbmcgYW5kIHJlc3VtaW5nIGFjdGl2ZSBET00gb2JqZWN0cyBhbmQgYW5pbWF0aW9ucyBpbiBh
bGwgZnJhbWVzLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp3aWxsUmVuZGVySW1hZ2UpOgorICAgICAgICAgICAg
V2lsbFJlbmRlckltYWdlIG5vdyBjaGVja3MgZm9yIHN1c3BlbnNpb24uIFRoaXMgY2F1c2VzIGFu
aW1hdGVkIGltYWdlcyB0byBwYXVzZQorICAgICAgICAgICAgdG9nZXRoZXIgd2l0aCBhbGwgb3Ro
ZXIgdHlwZXMgb2YgYW5pbWF0aW9ucy4KKwogMjAxMi0wMi0yNyAgUGF0cmljayBHYW5zdGVyZXIg
IDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBbQ01ha2VdIEJ1aWxkIGZpeCBhZnRlciBy
MTA4NzA5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGYxNjNkMjcxYmE4Nzc0OTg0MjM5YWQ5ZDRkNTNmZWZlYjJi
ZjE1OTkuLmQ1MDE2ZjdjODc4YmNjYzg3ZThkOTFhZjhiMGZiODVlYWU4NzBhYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMi0yNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTdXNwZW5kL1Jlc3VtZSBBUEkgZm9y
IHBhdXNpbmcgdGltZXJzIGFuZCBhbmltYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBCYXNlZCBvbiB0aGUgaW5p
dGlhbCB3b3JrIG9mIFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNvbT4sCisKKyAg
ICAgICAgQWRkcyBzdXNwZW5kIGFuZCByZXN1bWUgQVBJIGZvciBXZWJLaXQyIGFuZCB1c2VzIGl0
IGluIFF0IHRvCisgICAgICAgIHN1c3BlbmQgYW5pbWF0aW9ucyBhbmQgRE9NIHRpbWVycyBkdXJp
bmcgcGFubmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHA6CisgICAg
ICAgIChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3Ffc3VzcGVuZCk6CisgICAgICAg
IChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfcmVzdW1lKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3VzcGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorCiAy
MDEyLTAyLTI2ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3RhZWNrLnNvbmdAc2Ftc3VuZy5jb20+
CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgSW5qZWN0ZWRCdW5kbGVFZmwuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZTVmYjU4NjljMGU2YjhhYmYyNjdiMTMzYjkz
OGYyM2U4YzY2ZTFjZi4uMmE2YjFhZTgwNjJmMjlhNGI3MzMzMjRkNDI5ODlhYWU5Y2MxZTRkYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaApAQCAtNTQsNyArNTQsOCBAQCBwdWJs
aWM6CiAgICAgZW51bSBSZWFzb25Gb3JTdXNwZW5zaW9uIHsKICAgICAgICAgSmF2YVNjcmlwdERl
YnVnZ2VyUGF1c2VkLAogICAgICAgICBXaWxsU2hvd0RpYWxvZywKLSAgICAgICAgRG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdmUKKyAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUsCisg
ICAgICAgIFBhZ2VXaWxsQmVTdXNwZW5kZWQKICAgICB9OwogICAgIHZpcnR1YWwgYm9vbCBjYW5T
dXNwZW5kKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVu
c2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlOTZm
ZTEzNDcwZGFlNDA4MDQ0YjVjYzRjMDk1YjNlYzE2ZmRiODUyLi42OWQ5Y2Q0MjVhMjgzNDc3ZWVi
N2Q5YTFhM2IwMTFiMzFkYjdiZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTM0MDQsMTIgKzM0MDQsMTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpz
dG9wKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
IHdoeSkKIHsKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0g
ICAgCisKICAgICBzd2l0Y2ggKHdoeSkKICAgICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxs
QmVjb21lSW5hY3RpdmU6CiAgICAgICAgICAgICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQYWdlV2lsbEJlU3VzcGVuZGVkOgogICAgICAgICBjYXNlIEphdmFTY3Jp
cHREZWJ1Z2dlclBhdXNlZDoKICAgICAgICAgY2FzZSBXaWxsU2hvd0RpYWxvZzoKICAgICAgICAg
ICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNl
IGNhc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlZTNjMDY4Yzg1MWZmMjk2NjU4NzJjYWRi
YTMzMzRiMWUzMWM0Nzc2Li4yZDMzNjE4MWMxN2I0NmQ5MTc1NTkzNDIyNDMxYWRkNzE0YWJiZTNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIGlubGluZSBGcmFtZTo6
RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZy
YW1lTG9hZGVyCiAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUoZmFsc2UpCiAgICAgLCBtX2lzRGlz
Y29ubmVjdGVkKGZhbHNlKQogICAgICwgbV9leGNsdWRlRnJvbVRleHRTZWFyY2goZmFsc2UpCisg
ICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQoMCkKIHsK
ICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5nOjppbml0KCk7CkBAIC0xOTYsNiAr
MTk3LDExIEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAjaWZuZGVmIE5ERUJVRwogICAgIGZy
YW1lQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisgICAgLy8gUGF1c2UgZnV0dXJlIEFj
dGl2ZURPTU9iamVjdHMgaWYgdGhpcyBmcmFtZSBpcyBiZWluZyBjcmVhdGVkIHdoaWxlIHRoZSBw
YWdlIGlzIGluIGEgcGF1c2VkIHN0YXRlLgorICAgIEZyYW1lKiBwYXJlbnQgPSBwYXJlbnRGcm9t
T3duZXJFbGVtZW50KG93bmVyRWxlbWVudCk7CisgICAgaWYgKHBhcmVudCAmJiBwYXJlbnQtPmFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkpCisgICAgICAgIHN1c3BlbmRB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQogCiBQYXNzUmVmUHRyPEZyYW1lPiBG
cmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50LCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQpAQCAtMzA2LDYgKzMxMiwxMyBAQCB2b2lk
IEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3VtZW50PiBuZXdEb2MpCiAgICAgICAg
IG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAgICAg
ICAgIG5vdGlmeUNocm9tZUNsaWVudFRvdWNoRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCk7CiAg
ICAgfQorCisgICAgLy8gU3VzcGVuZCBkb2N1bWVudCBpZiB0aGlzIGZyYW1lIHdhcyBjcmVhdGVk
IGluIHN1c3BlbmRlZCBzdGF0ZS4KKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWQoKSkgeworICAgICAgICBkb2N1bWVudCgpLT5zdXNwZW5kU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGFuaW1hdGlvbigpLT5zdXNwZW5k
QW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBkb2N1bWVudCgpLT5z
dXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OlBhZ2VXaWxsQmVTdXNwZW5k
ZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC0xMDEx
LDYgKzEwMjQsMzggQEAgZmxvYXQgRnJhbWU6OmZyYW1lU2NhbGVGYWN0b3IoKSBjb25zdAogICAg
IHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0KIAordm9pZCBGcmFtZTo6c3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKK3sKKyAgICBib29sIHdhc1N1c3BlbmRl
ZCA9IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCk7CisKKyAgICBtX2Fj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQrKzsKKworICAgIGlmICh3
YXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkb2N1bWVudCgpKSB7Cisg
ICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxs
YmFja3MoKTsKKyAgICAgICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1l
bnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzKEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7CisgICAgfQorfQorCit2
b2lkIEZyYW1lOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCit7CisgICAg
QVNTRVJUKGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKCkpOworCisgICAg
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50LS07CisKKyAgICBp
ZiAoYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+cmVzdW1l
QWN0aXZlRE9NT2JqZWN0cygpOworICAgICAgICBhbmltYXRpb24oKS0+cmVzdW1lQW5pbWF0aW9u
c0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICB9Cit9CisKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZh
Y3RvckNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4IGUwNmMwZGZjN2YzMjhhNTExZjhm
MjNmNmNlZTczNDliZGI2MzI3ZmEuLjM5Y2Q3ZmY1MTY5MWQyYTE2NzMyNTI3MGM0ZGQxMzQ2NDBl
ZmRmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE4OCwxMyArMTg4LDE2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3ZlQ2VsbChSZWd1bGFy
RXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiByZXN1bHREaXN0YW5j
ZUZyb21TdGFydE9mQ2VsbCk7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JMYWJlbHNCZWZvcmVF
bGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQqLCBzaXplX3QqIHJl
c3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAgICAgICAgU3RyaW5n
IG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywg
RWxlbWVudCopOwotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgTlNJbWFn
ZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25zdDsKICAg
ICAgICAgTlNJbWFnZSogcmFuZ2VJbWFnZShSYW5nZSosIGJvb2wgZm9yY2VCbGFja1RleHQgPSBm
YWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdlKE5vZGUqLCBO
U1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7CiAgICAgICAgIE5T
SW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKICNlbmRpZgorICAgICAgICB2b2lk
IHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAgICAgICB2b2lkIHJl
c3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAgIGJvb2wgYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9CiAKICAgICAgICAg
Ly8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBtYWluIGZyYW1lIG9mIGEgcGFnZS4KICAg
ICAgICAgdm9pZCBub3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdl
ZCgpIGNvbnN0OwpAQCAtMjU3LDYgKzI2MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0b3JlOwogI2VuZGlm
CiAKKyAgICAgICAgaW50IG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRD
b3VudDsKKwogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5pdCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCAyMTdiYzJhZTAwOThkYTk5NTYxMmYwN2Q5ZDM4NzhiMjViNTYyODZkLi43
Y2I0OTIwNGVmOWFkYjk5NDI3ZTA0YWVjN2ZlY2E4MzcyYWViNTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTEwNDksNiArMTA0OSwxOCBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVk
T2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplYwogICAgIH0K
IH0KIAordm9pZCBQYWdlOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQor
eworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICBmcmFtZS0+c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgUGFnZTo6cmVzdW1lQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQor
ICAgICAgICBmcmFtZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30K
KwogUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAgICA6IGNocm9tZUNsaWVudCgw
KQogICAgICwgY29udGV4dE1lbnVDbGllbnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMzEwNTExMDEy
ZjdkODkwYzRiYjY4MGQ0NTg0MzRmY2E2MjBhOGU0Yy4uY2NkOTY2Y2U5ZWFjZGUyYTZjMTI0OGJl
YWU5MjA4Y2MyYWM4NGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMyNCw2ICszMjQsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWlu
dGVkT2JqZWN0cygpOwogICAgICAgICB2b2lkIGFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJl
bmRlck9iamVjdCosIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKKyAgICAgICAg
dm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgdm9p
ZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmNwcAppbmRleCBhOTFiN2Y4OWM1Yzk2OGI1ZWE3OTM3ZjJjYmFjNWNmOGNiOTRk
ZGExLi5hYWE0ZjEzNDlmN2Q2MmUxMTJmMDI3ZjE1MWMwZjY1ODk5YTA2NGM5IDEwMDc1NQotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjYzNSw2ICsyNjM1LDEwIEBA
IGJvb2wgUmVuZGVyT2JqZWN0Ojp3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1hZ2UqKQogICAgIGlm
IChzdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCisgICAgLy8gV2Ugd2lsbCBub3QgcmVuZGVyIGEgbmV3IGltYWdlIHdoZW4gQWN0aXZlIERP
TSBpcyBzdXNwZW5kZWQKKyAgICBpZiAoZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1
c3BlbmRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBJZiB3ZSdyZSBub3Qg
aW4gYSB3aW5kb3cgKGkuZS4sIHdlJ3JlIGRvcm1hbnQgZnJvbSBiZWluZyBwdXQgaW4gdGhlIGIv
ZiBjYWNoZSBvciBpbiBhIGJhY2tncm91bmQgdGFiKQogICAgIC8vIHRoZW4gd2UgZG9uJ3Qgd2Fu
dCB0byByZW5kZXIgZWl0aGVyLgogICAgIHJldHVybiAhZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUo
KSAmJiAhZG9jdW1lbnQoKS0+dmlldygpLT5pc09mZnNjcmVlbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKaW5kZXggMmVlZWZhODYx
MzJkM2ViZDhmOGM2NTI5YjhmMzI5OWQ1OGM3ZDI3Ni4uYjY3MjFhNmM5ZTViZjYyOTljNTFiMGI1
NTQ0MDFhNTA4ODhkNzc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FxdWlja3dlYnZpZXcuY3BwCkBAIC02NTUsNiArNjU1LDcgQEAgdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6X3FfY29tbWl0UG9zaXRpb25DaGFuZ2UoY29uc3QgUVBvaW50RiYgdHJhamVj
dG9yeVZlY3QKIHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3N1c3BlbmQo
KQogewogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IHRydWU7CisgICAgd2ViUGFnZVByb3h5LT5zdXNw
ZW5kKCk7CiB9CiAKIHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3Jlc3Vt
ZSgpCkBAIC02NjMsNiArNjY0LDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0
ZTo6X3FfcmVzdW1lKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcGFnZUlzU3VzcGVuZGVkID0g
ZmFsc2U7CisgICAgd2ViUGFnZVByb3h5LT5yZXN1bWUoKTsKIAogICAgIGlmIChpc1RyYW5zaXRp
b25pbmdUb05ld1BhZ2UpIHsKICAgICAgICAgaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlID0gZmFs
c2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlYTNm
ZTRhMTc3MDQ4NDE0NTI4MDQxYTM0ZjE3MGE3NWZmZDZiYmEuLjBjMDU0ZmVmNGVlZDYwMDA3YmNi
MjQ4ZjY3NzVkNDVjMWJjNjMzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0xODYsNiArMTg2LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCogcGFnZUNsaWVudCwgUGFzc1JlZlB0cjxXZWJQcm9jZXNzUHJveHk+IHAKICAg
ICAsIG1fbmVlZFRvdWNoRXZlbnRzKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX3BhZ2VJRChwYWdl
SUQpCisgICAgLCBtX2lzUGFnZVN1c3BlbmRlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLCBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKFRleHRDaGVja2VyOjppc1NtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCgpKQogI2VuZGlmCkBAIC0xMTI2LDYgKzExMjcsMjYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJB
Z2VudCkKICAgICBzZXRVc2VyQWdlbnQobV9jdXN0b21Vc2VyQWdlbnQpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6cmVzdW1lKCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSB8fCAhbV9pc1BhZ2VT
dXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gZmFs
c2U7CisKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZSgpLCBt
X3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kKCkKK3sKKyAgICBpZiAo
IWlzVmFsaWQoKSB8fCBtX2lzUGFnZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdXNwZW5kKCksIG1fcGFnZUlEKTsKK30KKwogYm9vbCBXZWJQYWdlUHJveHk6
OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gIW1fbWFpbkZyYW1l
SGFzQ3VzdG9tUmVwcmVzZW50YXRpb24gJiYgbV9tYWluRnJhbWUgJiYgIW1fbWFpbkZyYW1lLT5p
c0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2VEb2N1bWVudCgpOwpAQCAtMzE5MSw2ICszMjEyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCiAgICAgQVNTRVJUKG1fcGFn
ZUNsaWVudCk7CiAKICAgICBtX2lzVmFsaWQgPSBmYWxzZTsKKyAgICBtX2lzUGFnZVN1c3BlbmRl
ZCA9IGZhbHNlOwogCiAgICAgaWYgKG1fbWFpbkZyYW1lKSB7CiAgICAgICAgIG1fdXJsQXRQcm9j
ZXNzRXhpdCA9IG1fbWFpbkZyYW1lLT51cmwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBhZjhkYTFiZWZhOTI0NjFlODI2NzMwMjY1NTg2YzBjN2JlNzQ4Zjc0
Li45OWY0MGEyOWIzNGYyZWViMTE5NjIxMzQ1NjAzN2MyNDk4ZGZkNjBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00MDcsNiArNDA3LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKICAgICBT
dHJpbmcgY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVGV4
dEVuY29kaW5nTmFtZTsgfQogCisgICAgdm9pZCByZXN1bWUoKTsKKyAgICB2b2lkIHN1c3BlbmQo
KTsKKwogICAgIGRvdWJsZSBlc3RpbWF0ZWRQcm9ncmVzcygpIGNvbnN0OwogCiAgICAgdm9pZCB0
ZXJtaW5hdGVQcm9jZXNzKCk7CkBAIC05OTIsNiArOTk1LDggQEAgcHJpdmF0ZToKIAogICAgIHVp
bnQ2NF90IG1fcGFnZUlEOwogCisgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZDsKKwogI2lmIFBM
QVRGT1JNKE1BQykKICAgICBib29sIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBmODhlN2NkZDA0M2Y0MjgxZDc5YjRiODc0YmNlZWMxNjJjMTFjOWVjLi5jZThiNGQwMTgxOGMw
NDkxZDJkOGNiYzFhODEyODEyNDQyY2UxZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNjYwLDcgKzE2NjAsMjUgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CiAgICAgbV91c2Vy
QWdlbnQgPSB1c2VyQWdlbnQ7CiB9Ci0gIAorCit2b2lkIFdlYlBhZ2U6OnN1c3BlbmQoKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoZnJh
bWUpCisgICAgICAgIGZyYW1lLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KTsKK30KKwordm9pZCBXZWJQYWdlOjpyZXN1bWUoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIGZyYW1lLT5y
ZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworCisgICAgLy8gV2UgbmVlZCB0
byByZXBhaW50IG9uIHJlc3VtZSB0byBraWNrc3RhcnQgYW5pbWF0ZWQgcGFpbnRpbmcgYWdhaW4u
CisgICAgbV9kcmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoMCwg
MCksIG1fdmlld1NpemUpKTsKK30KKworCiBJbnRQb2ludCBXZWJQYWdlOjpzY3JlZW5Ub1dpbmRv
dyhjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NDViZjRk
NGFhMmMwMjcyYzliMGZjNzBlY2YxN2JiMmU1OTIxMGRiLi5jMjM4MWNkODQ4YzdlMTI2ZjNiYjEy
MDRmYzQwOTlkMjk1Njg1YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKQEAgLTU5OCw2ICs1OTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IHVpbnQzMl90IHBvbGljeUFjdGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3VzcGVuZCgpOworICAgIHZvaWQgcmVz
dW1lKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxv
b2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRl
eCA3ODEzYWRmM2M0MzIxNWY0ZGYxMDNkNDZjOTIwMjY3ZjdkNjA4OWNkLi5iOWY1M2M5MTcyNjky
MmQzYTcwOGU5ZTFmNGM3MmQ0ODVkMmI1ZTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTAxLDYgKzEwMSw5
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFVzZXJBZ2VudChXVEY6OlN0cmluZyB1
c2VyQWdlbnQpCiAgICAgU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXVEY6OlN0cmluZyBlbmNv
ZGluZ05hbWUpCiAKKyAgICBTdXNwZW5kKCkKKyAgICBSZXN1bWUoKQorCiAjaWYgVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCiAgICAgU2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3QoV2ViQ29yZTo6
SW50UmVjdCByZWN0KQogICAgIFNldFZpZXdwb3J0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129037</attachid>
            <date>2012-02-27 08:09:26 -0800</date>
            <delta_ts>2012-02-27 08:12:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>SuspendPatch</filename>
            <type>text/plain</type>
            <size>16447</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGNiMzFiMTUuLmY4OWE3NzcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZApAQCAtMjYyMiwxNCArMjYyMiwxNCBAQCBmYXN0L211dGF0aW9uL2VuZC1v
Zi10YXNrLWRlbGl2ZXJ5Lmh0bWwKIAogIyBbUXRdIFJFR1JFU1NJT04ocjEwNzUxOCk6IEl0IGJy
b2tlIG1hbnkgdGVzdHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4NDcxCi1mYXN0L2hpc3RvcnkvdGltZWQtcmVmcmVzaC1pbi1jYWNoZWQtZnJhbWUuaHRtbAot
ZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJlc3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCi1mYXN0
L2V2ZW50cy9zdXNwZW5kLXRpbWVycy5odG1sCi1mYXN0L292ZXJmbG93L2hvcml6b250YWwtc2Ny
b2xsLWFmdGVyLWJhY2suaHRtbAotZmFzdC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA0Lmh0bWwK
LWZhc3QvZXZlbnRzL3BhZ2VoaWRlLXRpbWVvdXQuaHRtbAotZmFzdC9ldmVudHMvcGFnZXNob3ct
cGFnZWhpZGUtb24tYmFjay1jYWNoZWQuaHRtbAotZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhp
ZGUtb24tYmFjay1jYWNoZWQtd2l0aC1mcmFtZXMuaHRtbAorI2Zhc3QvaGlzdG9yeS90aW1lZC1y
ZWZyZXNoLWluLWNhY2hlZC1mcmFtZS5odG1sCisjZmFzdC9pbWFnZXMvYW5pbWF0ZWQtZ2lmLXJl
c3RvcmVkLWZyb20tYmZjYWNoZS5odG1sCisjZmFzdC9ldmVudHMvc3VzcGVuZC10aW1lcnMuaHRt
bAorI2Zhc3Qvb3ZlcmZsb3cvaG9yaXpvbnRhbC1zY3JvbGwtYWZ0ZXItYmFjay5odG1sCisjZmFz
dC9tZWRpYS9tZWRpYS1xdWVyeS1saXN0LTA0Lmh0bWwKKyNmYXN0L2V2ZW50cy9wYWdlaGlkZS10
aW1lb3V0Lmh0bWwKKyNmYXN0L2V2ZW50cy9wYWdlc2hvdy1wYWdlaGlkZS1vbi1iYWNrLWNhY2hl
ZC5odG1sCisjZmFzdC9ldmVudHMvcGFnZXNob3ctcGFnZWhpZGUtb24tYmFjay1jYWNoZWQtd2l0
aC1mcmFtZXMuaHRtbAogCiAjIEZhaWxzIG9uIG1vc3QgcGxhdGZvcm1zLCBwcm9iYWJseSBmYWls
aW5nIGR1ZSB0byBhbiBlYXJsaWVyIHRlc3QuCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9pbnNwZWN0
LWVsZW1lbnQuaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRhMzgyNTMuLmRkYjgwNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMyBAQAorMjAxMi0wMi0yNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxs
YW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTdXNwZW5kL1Jlc3VtZSBBUEkgZm9yIHBh
dXNpbmcgdGltZXJzIGFuZCBhbmltYXRpb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRo
IFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIGRvbS9BY3RpdmVET01PYmplY3QuaDoK
KyAgICAgICAgICAgIE5ldyBSZWFzb25Gb3JTdXNwZW5zaW9uOiBQYWdlV2lsbEJlUGF1c2VkLgor
ICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKTogSGFuZGxlIG5ldyBSZWFzb25Gb3JTdXNwZW5zaW9u
LgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OkZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpzZXREb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cyk6CisgICAgICAgICogcGFnZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkKToKKyAgICAgICAgICAgIEZyYW1l
IG5vdyBtYWludGFpbnMgYSBzdGF0ZSBvZiBzdXNwZW5kaW5nIGFuaW1hdGlvbiBhbmQgQWN0aXZl
RE9NT2JqZWN0cywKKyAgICAgICAgICAgIHdoaWNoIGlzIGluaGVyaXRlZCB0byBhbGwgY2hpbGQt
ZnJhbWVzLgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IHBhZ2UvUGFnZS5oOgorICAgICAgICAgICAgRnVuY3Rpb25zIGZvciBzdXNwZW5kaW5nIGFuZCBy
ZXN1bWluZyBhY3RpdmUgRE9NIG9iamVjdHMgYW5kIGFuaW1hdGlvbnMgaW4gYWxsIGZyYW1lcy4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6d2lsbFJlbmRlckltYWdlKToKKyAgICAgICAgICAgIFdpbGxSZW5kZXJJ
bWFnZSBub3cgY2hlY2tzIGZvciBzdXNwZW5zaW9uLiBUaGlzIGNhdXNlcyBhbmltYXRlZCBpbWFn
ZXMgdG8gcGF1c2UKKyAgICAgICAgICAgIHRvZ2V0aGVyIHdpdGggYWxsIG90aGVyIHR5cGVzIG9m
IGFuaW1hdGlvbnMuCisKIDIwMTItMDItMjcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW0NNYWtlXSBCdWlsZCBmaXggYWZ0ZXIgcjEwODcwOS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBlNWZiNTg2Li4yYTZiMWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC01NCw3ICs1NCw4IEBAIHB1YmxpYzoK
ICAgICBlbnVtIFJlYXNvbkZvclN1c3BlbnNpb24gewogICAgICAgICBKYXZhU2NyaXB0RGVidWdn
ZXJQYXVzZWQsCiAgICAgICAgIFdpbGxTaG93RGlhbG9nLAotICAgICAgICBEb2N1bWVudFdpbGxC
ZWNvbWVJbmFjdGl2ZQorICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSwKKyAgICAg
ICAgUGFnZVdpbGxCZVN1c3BlbmRlZAogICAgIH07CiAgICAgdmlydHVhbCBib29sIGNhblN1c3Bl
bmQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGU5NmZlMTMu
LjY5ZDljZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAt
MzQwNCwxMiArMzQwNCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnN0b3AoKQogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNpb24gd2h5KQogewogICAg
IExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQiKTsKLSAgICAKKwogICAgIHN3
aXRjaCAod2h5KQogICAgIHsKICAgICAgICAgY2FzZSBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2
ZToKICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFBhZ2VXaWxsQmVTdXNwZW5kZWQ6CiAgICAgICAgIGNhc2UgSmF2YVNjcmlwdERlYnVnZ2VyUGF1
c2VkOgogICAgICAgICBjYXNlIFdpbGxTaG93RGlhbG9nOgogICAgICAgICAgICAgLy8gRG8gbm90
aGluZywgd2UgZG9uJ3QgcGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhlc2UgY2FzZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCmluZGV4IGVlM2MwNjguLjJkMzM2MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CkBAIC0xNjYsNiArMTY2LDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdlLCBIVE1M
RnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXIKICAgICAsIG1faW5W
aWV3U291cmNlTW9kZShmYWxzZSkKICAgICAsIG1faXNEaXNjb25uZWN0ZWQoZmFsc2UpCiAgICAg
LCBtX2V4Y2x1ZGVGcm9tVGV4dFNlYXJjaChmYWxzZSkKKyAgICAsIG1fYWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCgwKQogewogICAgIEFTU0VSVChwYWdlKTsKICAg
ICBBdG9taWNTdHJpbmc6OmluaXQoKTsKQEAgLTE5Niw2ICsxOTcsMTEgQEAgaW5saW5lIEZyYW1l
OjpGcmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwg
RnJhbWVMb2FkZXIKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJhbWVDb3VudGVyLmluY3JlbWVudCgp
OwogI2VuZGlmCisKKyAgICAvLyBQYXVzZSBmdXR1cmUgQWN0aXZlRE9NT2JqZWN0cyBpZiB0aGlz
IGZyYW1lIGlzIGJlaW5nIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMgaW4gYSBwYXVzZWQgc3Rh
dGUuCisgICAgRnJhbWUqIHBhcmVudCA9IHBhcmVudEZyb21Pd25lckVsZW1lbnQob3duZXJFbGVt
ZW50KTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnNTdXNwZW5kZWQoKSkKKyAgICAgICAgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lOjpjcmVhdGUoUGFnZSogcGFn
ZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyQ2xpZW50
KiBjbGllbnQpCkBAIC0zMDYsNiArMzEyLDEzIEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBh
c3NSZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50V2hl
ZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50
VG91Y2hFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICB9CisKKyAgICAvLyBTdXNwZW5k
IGRvY3VtZW50IGlmIHRoaXMgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gc3VzcGVuZGVkIHN0YXRlLgor
ICAgIGlmIChhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpKSB7CisgICAg
ICAgIGRvY3VtZW50KCktPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFj
a3MoKTsKKyAgICAgICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQo
ZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
KEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7CisgICAgfQogfQogCiAjaWYg
RU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKQEAgLTEwMTEsNiArMTAyNCwzOCBAQCBmbG9hdCBG
cmFtZTo6ZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJuIHBhZ2UtPnBhZ2VTY2Fs
ZUZhY3RvcigpOwogfQogCit2b2lkIEZyYW1lOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKQoreworICAgIGJvb2wgd2FzU3VzcGVuZGVkID0gYWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnNTdXNwZW5kZWQoKTsKKworICAgIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnNTdXNwZW5kZWRDb3VudCsrOworCisgICAgaWYgKHdhc1N1c3BlbmRlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAgZG9jdW1lbnQoKS0+c3Vz
cGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBhbmlt
YXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChkb2N1bWVudCgpKTsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpQ
YWdlV2lsbEJlU3VzcGVuZGVkKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJhbWU6OnJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKK3sKKyAgICBBU1NFUlQoYWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSk7CisKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zU3VzcGVuZGVkQ291bnQtLTsKKworICAgIGlmIChhY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9uc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZG9jdW1l
bnQoKSkgeworICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Cisg
ICAgICAgIGFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9jdW1lbnQo
KSk7CisgICAgICAgIGRvY3VtZW50KCktPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ckNhbGxiYWNrcygpOworICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIHZvaWQgRnJhbWU6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmgKaW5kZXggZTA2YzBkZi4uMzljZDdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTg4
LDEzICsxODgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcgc2VhcmNo
Rm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9uKiwgSFRNTFRhYmxlQ2VsbEVsZW1l
bnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxsKTsKICAgICAgICAgU3Ry
aW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
YmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJvb2wqIHJlc3VsdElzSW5D
ZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2FpbnN0RWxlbWVudChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7Ci0gICAgICAgIAorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgICAgICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFnZShib29sIGZvcmNlQmxh
Y2tUZXh0ID0gZmFsc2UpIGNvbnN0OwogICAgICAgICBOU0ltYWdlKiByYW5nZUltYWdlKFJhbmdl
KiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgTlNJbWFnZSog
c25hcHNob3REcmFnSW1hZ2UoTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1JlY3QqIGVsZW1l
bnRSZWN0KSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogaW1hZ2VGcm9tUmVjdChOU1JlY3QpIGNv
bnN0OwogI2VuZGlmCisgICAgICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCk7CisgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKTsKKyAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5k
ZWRDb3VudCA+IDA7IH0KIAogICAgICAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhl
IG1haW4gZnJhbWUgb2YgYSBwYWdlLgogICAgICAgICB2b2lkIG5vdGlmeUNocm9tZUNsaWVudFdo
ZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3Q7CkBAIC0yNTcsNiArMjYwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8VGlsZWRCYWNraW5nU3RvcmU+IG1f
dGlsZWRCYWNraW5nU3RvcmU7CiAjZW5kaWYKIAorICAgICAgICBpbnQgbV9hY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50OworCiAgICAgfTsKIAogICAgIGlubGluZSB2
b2lkIEZyYW1lOjppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIxN2JjMmEuLjdjYjQ5MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTA0OSw2ICsxMDQ5LDE4IEBAIHZvaWQgUGFnZTo6YWRk
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEludFJl
Y3QmIG9iamVjCiAgICAgfQogfQogCit2b2lkIFBhZ2U6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZy
YW1lLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBQ
YWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCit7CisgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpOworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAg
IDogY2hyb21lQ2xpZW50KDApCiAgICAgLCBjb250ZXh0TWVudUNsaWVudCgwKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAppbmRleCAzMTA1MTEwLi5jY2Q5NjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtMzI0LDYgKzMyNCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdGFydENvdW50aW5nUmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKIAor
ICAgICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAg
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGE5MWI3ZjguLmFhYTRmMTMgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNjM1LDYgKzI2MzUsMTAgQEAg
Ym9vbCBSZW5kZXJPYmplY3Q6OndpbGxSZW5kZXJJbWFnZShDYWNoZWRJbWFnZSopCiAgICAgaWYg
KHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICAvLyBXZSB3aWxsIG5vdCByZW5kZXIgYSBuZXcgaW1hZ2Ugd2hlbiBBY3RpdmUgRE9N
IGlzIHN1c3BlbmRlZAorICAgIGlmIChkb2N1bWVudCgpLT5hY3RpdmVET01PYmplY3RzQXJlU3Vz
cGVuZGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCBp
biBhIHdpbmRvdyAoaS5lLiwgd2UncmUgZG9ybWFudCBmcm9tIGJlaW5nIHB1dCBpbiB0aGUgYi9m
IGNhY2hlIG9yIGluIGEgYmFja2dyb3VuZCB0YWIpCiAgICAgLy8gdGhlbiB3ZSBkb24ndCB3YW50
IHRvIHJlbmRlciBlaXRoZXIuCiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgp
ICYmICFkb2N1bWVudCgpLT52aWV3KCktPmlzT2Zmc2NyZWVuKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjE2
M2QyNy4uNzQ0YzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTI3ICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAg
IFN1c3BlbmQvUmVzdW1lIEFQSSBmb3IgcGF1c2luZyB0aW1lcnMgYW5kIGFuaW1hdGlvbnMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2MworCisg
ICAgICAgIEJhc2VkIG9uIHRoZSBpbml0aWFsIHdvcmsgb2YgWmFsYW4gQnVqdGFzIDx6YWxhbi5i
dWp0YXNAbm9raWEuY29tPiwKKworICAgICAgICBBZGRzIHN1c3BlbmQgYW5kIHJlc3VtZSBBUEkg
Zm9yIFdlYktpdDIgYW5kIHVzZXMgaXQgaW4gUXQgdG8KKyAgICAgICAgc3VzcGVuZCBhbmltYXRp
b25zIGFuZCBET00gdGltZXJzIGR1cmluZyBwYW5uaW5nIGFuZCB6b29tLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlj
a2FibGVQcml2YXRlOjpfcV9zdXNwZW5kKToKKyAgICAgICAgKFFRdWlja1dlYlZpZXdGbGlja2Fi
bGVQcml2YXRlOjpfcV9yZXN1bWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkQ3Jhc2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWUpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTItMDItMjYgIFlvdW5nVGFlY2sg
U29uZyAgPHlvdW5ndGFlY2suc29uZ0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJd
IEFkZCBJbmplY3RlZEJ1bmRsZUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IDJlZWVmYTguLmI2NzIxYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApA
QCAtNjU1LDYgKzY1NSw3IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX2NvbW1pdFBv
c2l0aW9uQ2hhbmdlKGNvbnN0IFFQb2ludEYmIHRyYWplY3RvcnlWZWN0CiB2b2lkIFFRdWlja1dl
YlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9zdXNwZW5kKCkKIHsKICAgICBwYWdlSXNTdXNwZW5k
ZWQgPSB0cnVlOworICAgIHdlYlBhZ2VQcm94eS0+c3VzcGVuZCgpOwogfQogCiB2b2lkIFFRdWlj
a1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9yZXN1bWUoKQpAQCAtNjYzLDYgKzY2NCw3IEBA
IHZvaWQgUVF1aWNrV2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3Jlc3VtZSgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHBhZ2VJc1N1c3BlbmRlZCA9IGZhbHNlOworICAgIHdlYlBhZ2VQcm94
eS0+cmVzdW1lKCk7CiAKICAgICBpZiAoaXNUcmFuc2l0aW9uaW5nVG9OZXdQYWdlKSB7CiAgICAg
ICAgIGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZWEzZmU0Li4wYzA1NGZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTg2LDYgKzE4Niw3IEBAIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFBhc3NSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBwCiAgICAgLCBtX25lZWRUb3VjaEV2ZW50cyhmYWxzZSkKICNl
bmRpZgogICAgICwgbV9wYWdlSUQocGFnZUlEKQorICAgICwgbV9pc1BhZ2VTdXNwZW5kZWQoZmFs
c2UpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZChUZXh0Q2hlY2tlcjo6aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSkKICNlbmRpZgpAQCAt
MTEyNiw2ICsxMTI3LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCiAgICAgc2V0VXNlckFnZW50KG1fY3VzdG9t
VXNlckFnZW50KTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZSgpCit7CisgICAgaWYg
KCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWUoKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6c3VzcGVuZCgpCit7CisgICAgaWYgKCFpc1ZhbGlkKCkgfHwgbV9pc1BhZ2VTdXNwZW5kZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1faXNQYWdlU3VzcGVuZGVkID0gdHJ1ZTsKKworICAg
IHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZCgpLCBtX3BhZ2VJRCk7
Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuICFtX21haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uICYmIG1fbWFp
bkZyYW1lICYmICFtX21haW5GcmFtZS0+aXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlRG9jdW1l
bnQoKTsKQEAgLTMxOTEsNiArMzIxMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
Q3Jhc2goKQogICAgIEFTU0VSVChtX3BhZ2VDbGllbnQpOwogCiAgICAgbV9pc1ZhbGlkID0gZmFs
c2U7CisgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAogICAgIGlmIChtX21haW5GcmFt
ZSkgewogICAgICAgICBtX3VybEF0UHJvY2Vzc0V4aXQgPSBtX21haW5GcmFtZS0+dXJsKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYWY4ZGExYi4uOTlmNDBh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDA3LDYgKzQw
Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3Qg
U3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3RvbVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05hbWU7IH0KIAorICAgIHZvaWQgcmVzdW1lKCk7Cisg
ICAgdm9pZCBzdXNwZW5kKCk7CisKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3MoKSBjb25z
dDsKIAogICAgIHZvaWQgdGVybWluYXRlUHJvY2VzcygpOwpAQCAtOTkyLDYgKzk5NSw4IEBAIHBy
aXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BhZ2VJRDsKIAorICAgIGJvb2wgbV9pc1BhZ2VTdXNw
ZW5kZWQ7CisKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBtX2lzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggZjg4ZTdjZC4uMjU0YzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTY2MCw3ICsxNjYwLDIxIEBAIHZv
aWQgV2ViUGFnZTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogewogICAg
IG1fdXNlckFnZW50ID0gdXNlckFnZW50OwogfQotICAKKwordm9pZCBXZWJQYWdlOjpzdXNwZW5k
KCkKK3sKKyAgICBtX3BhZ2UtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
OworfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZSgpCit7CisgICAgbV9wYWdlLT5yZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworCisgICAgLy8gV2UgbmVlZCB0byByZXBhaW50
IG9uIHJlc3VtZSB0byBraWNrc3RhcnQgYW5pbWF0ZWQgcGFpbnRpbmcgYWdhaW4uCisgICAgbV9k
cmF3aW5nQXJlYS0+c2V0TmVlZHNEaXNwbGF5KEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fdmll
d1NpemUpKTsKK30KKworCiBJbnRQb2ludCBXZWJQYWdlOjpzY3JlZW5Ub1dpbmRvdyhjb25zdCBJ
bnRQb2ludCYgcG9pbnQpCiB7CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA3NDViZjRkLi5jMjM4MWNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTU5
OCw2ICs1OTgsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHVpbnQzMl90IHBvbGljeUFj
dGlvbiwgdWludDY0X3QgZG93bmxvYWRJRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc3VzcGVuZCgpOworICAgIHZvaWQgcmVzdW1lKCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgdm9pZCBwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA3ODEzYWRmLi5iOWY1M2M5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMTAxLDYgKzEwMSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ugewog
ICAgIFNldFVzZXJBZ2VudChXVEY6OlN0cmluZyB1c2VyQWdlbnQpCiAgICAgU2V0Q3VzdG9tVGV4
dEVuY29kaW5nTmFtZShXVEY6OlN0cmluZyBlbmNvZGluZ05hbWUpCiAKKyAgICBTdXNwZW5kKCkK
KyAgICBSZXN1bWUoKQorCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgU2V0Rml4
ZWRWaXNpYmxlQ29udGVudFJlY3QoV2ViQ29yZTo6SW50UmVjdCByZWN0KQogICAgIFNldFZpZXdw
b3J0U2l6ZShXZWJDb3JlOjpJbnRTaXplIHNpemUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129038</attachid>
            <date>2012-02-27 08:12:27 -0800</date>
            <delta_ts>2012-02-28 06:12:07 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>SuspendPatch</filename>
            <type>text/plain</type>
            <size>15236</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0YTM4MjUzLi5kZGI4MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTItMDItMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgU3VzcGVuZC9SZXN1bWUgQVBJIGZvciBwYXVzaW5nIHRpbWVycyBh
bmQgYW5pbWF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc2MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCisKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICAgICBO
ZXcgUmVhc29uRm9yU3VzcGVuc2lvbjogUGFnZVdpbGxCZVBhdXNlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c3VzcGVuZCk6IEhhbmRsZSBuZXcgUmVhc29uRm9yU3VzcGVuc2lvbi4KKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZCk6CisgICAgICAgICAgICBGcmFtZSBub3cgbWFpbnRhaW5z
IGEgc3RhdGUgb2Ygc3VzcGVuZGluZyBhbmltYXRpb24gYW5kIEFjdGl2ZURPTU9iamVjdHMsCisg
ICAgICAgICAgICB3aGljaCBpcyBpbmhlcml0ZWQgdG8gYWxsIGNoaWxkLWZyYW1lcy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgICAgIEZ1bmN0aW9ucyBmb3Igc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgYWN0aXZl
IERPTSBvYmplY3RzIGFuZCBhbmltYXRpb25zIGluIGFsbCBmcmFtZXMuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OndpbGxSZW5kZXJJbWFnZSk6CisgICAgICAgICAgICBXaWxsUmVuZGVySW1hZ2Ugbm93IGNoZWNr
cyBmb3Igc3VzcGVuc2lvbi4gVGhpcyBjYXVzZXMgYW5pbWF0ZWQgaW1hZ2VzIHRvIHBhdXNlCisg
ICAgICAgICAgICB0b2dldGhlciB3aXRoIGFsbCBvdGhlciB0eXBlcyBvZiBhbmltYXRpb25zLgor
CiAyMDEyLTAyLTI3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtDTWFrZV0gQnVpbGQgZml4IGFmdGVyIHIxMDg3MDkuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0
aXZlRE9NT2JqZWN0LmgKaW5kZXggZTVmYjU4Ni4uMmE2YjFhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9B
Y3RpdmVET01PYmplY3QuaApAQCAtNTQsNyArNTQsOCBAQCBwdWJsaWM6CiAgICAgZW51bSBSZWFz
b25Gb3JTdXNwZW5zaW9uIHsKICAgICAgICAgSmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkLAogICAg
ICAgICBXaWxsU2hvd0RpYWxvZywKLSAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUK
KyAgICAgICAgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUsCisgICAgICAgIFBhZ2VXaWxsQmVT
dXNwZW5kZWQKICAgICB9OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TdXNwZW5kKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHN1c3BlbmQoUmVhc29uRm9yU3VzcGVuc2lvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBlOTZmZTEzLi42OWQ5Y2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTM0MDQsMTIgKzM0MDQs
MTMgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdG9wKCkKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c3VzcGVuZChSZWFzb25Gb3JTdXNwZW5zaW9uIHdoeSkKIHsKICAgICBMT0coTWVkaWEsICJI
VE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kIik7Ci0gICAgCisKICAgICBzd2l0Y2ggKHdoeSkKICAg
ICB7CiAgICAgICAgIGNhc2UgRG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmU6CiAgICAgICAgICAg
ICBzdG9wKCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBQYWdlV2lsbEJlU3Vz
cGVuZGVkOgogICAgICAgICBjYXNlIEphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZDoKICAgICAgICAg
Y2FzZSBXaWxsU2hvd0RpYWxvZzoKICAgICAgICAgICAgIC8vIERvIG5vdGhpbmcsIHdlIGRvbid0
IHBhdXNlIG1lZGlhIHBsYXliYWNrIGluIHRoZXNlIGNhc2VzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApp
bmRleCBlZTNjMDY4Li4yZDMzNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTY2LDYgKzE2
Niw3IEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVt
ZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAgICAgLCBtX2luVmlld1NvdXJjZU1vZGUo
ZmFsc2UpCiAgICAgLCBtX2lzRGlzY29ubmVjdGVkKGZhbHNlKQogICAgICwgbV9leGNsdWRlRnJv
bVRleHRTZWFyY2goZmFsc2UpCisgICAgLCBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkQ291bnQoMCkKIHsKICAgICBBU1NFUlQocGFnZSk7CiAgICAgQXRvbWljU3RyaW5n
Ojppbml0KCk7CkBAIC0xOTYsNiArMTk3LDExIEBAIGlubGluZSBGcmFtZTo6RnJhbWUoUGFnZSog
cGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZyYW1lTG9hZGVyCiAj
aWZuZGVmIE5ERUJVRwogICAgIGZyYW1lQ291bnRlci5pbmNyZW1lbnQoKTsKICNlbmRpZgorCisg
ICAgLy8gUGF1c2UgZnV0dXJlIEFjdGl2ZURPTU9iamVjdHMgaWYgdGhpcyBmcmFtZSBpcyBiZWlu
ZyBjcmVhdGVkIHdoaWxlIHRoZSBwYWdlIGlzIGluIGEgcGF1c2VkIHN0YXRlLgorICAgIEZyYW1l
KiBwYXJlbnQgPSBwYXJlbnRGcm9tT3duZXJFbGVtZW50KG93bmVyRWxlbWVudCk7CisgICAgaWYg
KHBhcmVudCAmJiBwYXJlbnQtPmFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVk
KCkpCisgICAgICAgIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogfQog
CiBQYXNzUmVmUHRyPEZyYW1lPiBGcmFtZTo6Y3JlYXRlKFBhZ2UqIHBhZ2UsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQpAQCAt
MzA2LDYgKzMxMiwxMyBAQCB2b2lkIEZyYW1lOjpzZXREb2N1bWVudChQYXNzUmVmUHRyPERvY3Vt
ZW50PiBuZXdEb2MpCiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVy
Q291bnRDaGFuZ2VkKCk7CiAgICAgICAgIG5vdGlmeUNocm9tZUNsaWVudFRvdWNoRXZlbnRIYW5k
bGVyQ291bnRDaGFuZ2VkKCk7CiAgICAgfQorCisgICAgLy8gU3VzcGVuZCBkb2N1bWVudCBpZiB0
aGlzIGZyYW1lIHdhcyBjcmVhdGVkIGluIHN1c3BlbmRlZCBzdGF0ZS4KKyAgICBpZiAoYWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSkgeworICAgICAgICBkb2N1bWVudCgp
LT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAg
IGFuaW1hdGlvbigpLT5zdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOwor
ICAgICAgICBkb2N1bWVudCgpLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmpl
Y3Q6OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOworICAgIH0KIH0KIAogI2lmIEVOQUJMRShPUklFTlRB
VElPTl9FVkVOVFMpCkBAIC0xMDExLDYgKzEwMjQsMzggQEAgZmxvYXQgRnJhbWU6OmZyYW1lU2Nh
bGVGYWN0b3IoKSBjb25zdAogICAgIHJldHVybiBwYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKIH0K
IAordm9pZCBGcmFtZTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKK3sK
KyAgICBib29sIHdhc1N1c3BlbmRlZCA9IGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3Vz
cGVuZGVkKCk7CisKKyAgICBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVk
Q291bnQrKzsKKworICAgIGlmICh3YXNTdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChkb2N1bWVudCgpKSB7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgYW5pbWF0aW9uKCktPnN1c3Bl
bmRBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCkt
PnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3Bl
bmRlZCk7CisgICAgfQorfQorCit2b2lkIEZyYW1lOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpCit7CisgICAgQVNTRVJUKGFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
U3VzcGVuZGVkKCkpOworCisgICAgbV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZENvdW50LS07CisKKyAgICBpZiAoYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNw
ZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAg
ICAgZG9jdW1lbnQoKS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0cygpOworICAgICAgICBhbmltYXRp
b24oKS0+cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KGRvY3VtZW50KCkpOworICAgICAgICBk
b2N1bWVudCgpLT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsK
KyAgICB9Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIEZyYW1l
OjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4
IGUwNmMwZGYuLjM5Y2Q3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTE4OCwxMyArMTg4LDE2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0Fib3Zl
Q2VsbChSZWd1bGFyRXhwcmVzc2lvbiosIEhUTUxUYWJsZUNlbGxFbGVtZW50Kiwgc2l6ZV90KiBy
ZXN1bHREaXN0YW5jZUZyb21TdGFydE9mQ2VsbCk7CiAgICAgICAgIFN0cmluZyBzZWFyY2hGb3JM
YWJlbHNCZWZvcmVFbGVtZW50KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsYWJlbHMsIEVsZW1lbnQq
LCBzaXplX3QqIHJlc3VsdERpc3RhbmNlLCBib29sKiByZXN1bHRJc0luQ2VsbEFib3ZlKTsKICAg
ICAgICAgU3RyaW5nIG1hdGNoTGFiZWxzQWdhaW5zdEVsZW1lbnQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGxhYmVscywgRWxlbWVudCopOwotICAgICAgICAKKwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAgICAgTlNJbWFnZSogc2VsZWN0aW9uSW1hZ2UoYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNl
KSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogcmFuZ2VJbWFnZShSYW5nZSosIGJvb2wgZm9yY2VC
bGFja1RleHQgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0lt
YWdlKE5vZGUqLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNSZWN0KiBlbGVtZW50UmVjdCkgY29uc3Q7
CiAgICAgICAgIE5TSW1hZ2UqIGltYWdlRnJvbVJlY3QoTlNSZWN0KSBjb25zdDsKICNlbmRpZgor
ICAgICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworICAg
ICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAg
IGJvb2wgYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQgPiAwOyB9
CiAKICAgICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBtYWluIGZyYW1lIG9m
IGEgcGFnZS4KICAgICAgICAgdm9pZCBub3RpZnlDaHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50Q2hhbmdlZCgpIGNvbnN0OwpAQCAtMjU3LDYgKzI2MCw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBtX3RpbGVkQmFja2luZ1N0
b3JlOwogI2VuZGlmCiAKKyAgICAgICAgaW50IG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnNTdXNwZW5kZWRDb3VudDsKKwogICAgIH07CiAKICAgICBpbmxpbmUgdm9pZCBGcmFtZTo6aW5p
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyMTdiYzJhLi43Y2I0OTIwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTEwNDksNiArMTA0OSwxOCBAQCB2b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplYwogICAg
IH0KIH0KIAordm9pZCBQYWdlOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAgICBmcmFtZS0+c3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7Cit9CisKK3ZvaWQgUGFnZTo6cmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgp
KQorICAgICAgICBmcmFtZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
K30KKwogUGFnZTo6UGFnZUNsaWVudHM6OlBhZ2VDbGllbnRzKCkKICAgICA6IGNocm9tZUNsaWVu
dCgwKQogICAgICwgY29udGV4dE1lbnVDbGllbnQoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMzEwNTEx
MC4uY2NkOTY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTMyNCw2ICszMjQsOSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2Jq
ZWN0cygpOwogICAgICAgICB2b2lkIGFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9i
amVjdCosIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKKyAgICAgICAgdm9pZCBz
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgdm9pZCByZXN1
bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBpbml0R3JvdXAoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCBhOTFiN2Y4Li5hYWE0ZjEzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjYzNSw2ICsyNjM1LDEwIEBAIGJvb2wgUmVuZGVyT2Jq
ZWN0Ojp3aWxsUmVuZGVySW1hZ2UoQ2FjaGVkSW1hZ2UqKQogICAgIGlmIChzdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgLy8gV2Ug
d2lsbCBub3QgcmVuZGVyIGEgbmV3IGltYWdlIHdoZW4gQWN0aXZlIERPTSBpcyBzdXNwZW5kZWQK
KyAgICBpZiAoZG9jdW1lbnQoKS0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICAvLyBJZiB3ZSdyZSBub3QgaW4gYSB3aW5kb3cgKGku
ZS4sIHdlJ3JlIGRvcm1hbnQgZnJvbSBiZWluZyBwdXQgaW4gdGhlIGIvZiBjYWNoZSBvciBpbiBh
IGJhY2tncm91bmQgdGFiKQogICAgIC8vIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgZWl0
aGVyLgogICAgIHJldHVybiAhZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSAmJiAhZG9jdW1lbnQo
KS0+dmlldygpLT5pc09mZnNjcmVlbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGYxNjNkMjcuLjc0NGM3ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMi0wMi0yNyAgQWxsYW4gU2FuZGZlbGQg
SmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lhLmNvbT4KKworICAgICAgICBTdXNwZW5kL1Jlc3Vt
ZSBBUEkgZm9yIHBhdXNpbmcgdGltZXJzIGFuZCBhbmltYXRpb25zLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjMKKworICAgICAgICBCYXNlZCBv
biB0aGUgaW5pdGlhbCB3b3JrIG9mIFphbGFuIEJ1anRhcyA8emFsYW4uYnVqdGFzQG5va2lhLmNv
bT4sCisKKyAgICAgICAgQWRkcyBzdXNwZW5kIGFuZCByZXN1bWUgQVBJIGZvciBXZWJLaXQyIGFu
ZCB1c2VzIGl0IGluIFF0IHRvCisgICAgICAgIHN1c3BlbmQgYW5pbWF0aW9ucyBhbmQgRE9NIHRp
bWVycyBkdXJpbmcgcGFubmluZyBhbmQgem9vbS4KKworICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1
aWNrd2Vidmlldy5jcHA6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6
X3Ffc3VzcGVuZCk6CisgICAgICAgIChRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3Ff
cmVzdW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3Vz
cGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5k
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDEyLTAyLTI2ICBZb3VuZ1RhZWNrIFNvbmcgIDx5b3VuZ3Rh
ZWNrLnNvbmdAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBBZGQgSW5qZWN0ZWRC
dW5kbGVFZmwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVp
Y2t3ZWJ2aWV3LmNwcAppbmRleCAyZWVlZmE4Li5iNjcyMWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTY1NSw2ICs2NTUs
NyBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9jb21taXRQb3NpdGlvbkNoYW5nZShj
b25zdCBRUG9pbnRGJiB0cmFqZWN0b3J5VmVjdAogdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxl
UHJpdmF0ZTo6X3Ffc3VzcGVuZCgpCiB7CiAgICAgcGFnZUlzU3VzcGVuZGVkID0gdHJ1ZTsKKyAg
ICB3ZWJQYWdlUHJveHktPnN1c3BlbmQoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3RmxpY2th
YmxlUHJpdmF0ZTo6X3FfcmVzdW1lKCkKQEAgLTY2Myw2ICs2NjQsNyBAQCB2b2lkIFFRdWlja1dl
YlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9yZXN1bWUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBwYWdlSXNTdXNwZW5kZWQgPSBmYWxzZTsKKyAgICB3ZWJQYWdlUHJveHktPnJlc3VtZSgpOwog
CiAgICAgaWYgKGlzVHJhbnNpdGlvbmluZ1RvTmV3UGFnZSkgewogICAgICAgICBpc1RyYW5zaXRp
b25pbmdUb05ld1BhZ2UgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggOGVhM2ZlNC4uMGMwNTRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQ
cm94eT4gcAogICAgICwgbV9uZWVkVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1f
cGFnZUlEKHBhZ2VJRCkKKyAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAsIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6
OmlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkpCiAjZW5kaWYKQEAgLTExMjYsNiArMTEyNywy
NiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYg
Y3VzdG9tVXNlckFnZW50KQogICAgIHNldFVzZXJBZ2VudChtX2N1c3RvbVVzZXJBZ2VudCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWUoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8
ICFtX2lzUGFnZVN1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc1BhZ2VTdXNw
ZW5kZWQgPSBmYWxzZTsKKworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdW1lKCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmQoKQor
eworICAgIGlmICghaXNWYWxpZCgpIHx8IG1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CisKKyAgICBwcm9jZXNzKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmQoKSwgbV9wYWdlSUQpOworfQorCiBib29sIFdl
YlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdAogewogICAgIHJldHVybiAh
bV9tYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbiAmJiBtX21haW5GcmFtZSAmJiAhbV9t
YWluRnJhbWUtPmlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KCk7CkBAIC0zMTkx
LDYgKzMyMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICBB
U1NFUlQobV9wYWdlQ2xpZW50KTsKIAogICAgIG1faXNWYWxpZCA9IGZhbHNlOworICAgIG1faXNQ
YWdlU3VzcGVuZGVkID0gZmFsc2U7CiAKICAgICBpZiAobV9tYWluRnJhbWUpIHsKICAgICAgICAg
bV91cmxBdFByb2Nlc3NFeGl0ID0gbV9tYWluRnJhbWUtPnVybCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGFmOGRhMWIuLjk5ZjQwYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTQwNyw2ICs0MDcsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYpOwogICAg
IFN0cmluZyBjdXN0b21UZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9jdXN0b21U
ZXh0RW5jb2RpbmdOYW1lOyB9CiAKKyAgICB2b2lkIHJlc3VtZSgpOworICAgIHZvaWQgc3VzcGVu
ZCgpOworCiAgICAgZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lk
IHRlcm1pbmF0ZVByb2Nlc3MoKTsKQEAgLTk5Miw2ICs5OTUsOCBAQCBwcml2YXRlOgogCiAgICAg
dWludDY0X3QgbV9wYWdlSUQ7CiAKKyAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkOworCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgIGJvb2wgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGY4OGU3Y2QuLjI1NGMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE2NjAsNyArMTY2MCwyMSBAQCB2b2lkIFdlYlBhZ2U6OnNl
dFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICBtX3VzZXJBZ2VudCA9
IHVzZXJBZ2VudDsKIH0KLSAgCisKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZCgpCit7CisgICAgbV9w
YWdlLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpyZXN1bWUoKQoreworICAgIG1fcGFnZS0+cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKTsKKworICAgIC8vIFdlIG5lZWQgdG8gcmVwYWludCBvbiByZXN1bWUgdG8g
a2lja3N0YXJ0IGFuaW1hdGVkIHBhaW50aW5nIGFnYWluLgorICAgIG1fZHJhd2luZ0FyZWEtPnNl
dE5lZWRzRGlzcGxheShJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX3ZpZXdTaXplKSk7Cit9CisK
KwogSW50UG9pbnQgV2ViUGFnZTo6c2NyZWVuVG9XaW5kb3coY29uc3QgSW50UG9pbnQmIHBvaW50
KQogewogICAgIEludFBvaW50IHdpbmRvd1BvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNzQ1YmY0ZC4uYzIzODFjZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC01OTgsNiArNTk4LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCB1aW50MzJfdCBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90
IGRvd25sb2FkSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHN1c3BlbmQoKTsKKyAgICB2b2lkIHJlc3VtZSgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZs
b2F0UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzgxM2FkZi4uYjlmNTNjOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTEwMSw2ICsxMDEsOSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRVc2VyQWdl
bnQoV1RGOjpTdHJpbmcgdXNlckFnZW50KQogICAgIFNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
V1RGOjpTdHJpbmcgZW5jb2RpbmdOYW1lKQogCisgICAgU3VzcGVuZCgpCisgICAgUmVzdW1lKCkK
KwogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFNldEZpeGVkVmlzaWJsZUNvbnRl
bnRSZWN0KFdlYkNvcmU6OkludFJlY3QgcmVjdCkKICAgICBTZXRWaWV3cG9ydFNpemUoV2ViQ29y
ZTo6SW50U2l6ZSBzaXplKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129237</attachid>
            <date>2012-02-28 06:12:07 -0800</date>
            <delta_ts>2012-03-02 03:41:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>SuspendPatch2</filename>
            <type>text/plain</type>
            <size>15797</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4OGE1OGExLi45ZGY3YjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMg
QEAKKzIwMTItMDItMjggIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBub2tp
YS5jb20+CisKKyAgICAgICAgU3VzcGVuZC9SZXN1bWUgQVBJIGZvciBwYXVzaW5nIHRpbWVycyBh
bmQgYW5pbWF0aW9ucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc2MDYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3Rp
YW5zZW4uCisKKyAgICAgICAgKiBkb20vQWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgICAgICBO
ZXcgUmVhc29uRm9yU3VzcGVuc2lvbjogUGFnZVdpbGxCZVBhdXNlZC4KKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6c3VzcGVuZCk6IEhhbmRsZSBuZXcgUmVhc29uRm9yU3VzcGVuc2lvbi4KKyAgICAgICAgKiBw
YWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZTo6c2V0RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAq
IHBhZ2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjphY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9uc1N1c3BlbmRlZCk6CisgICAgICAgICAgICBGcmFtZSBub3cgbWFpbnRhaW5z
IGEgc3RhdGUgb2Ygc3VzcGVuZGluZyBhbmltYXRpb24gYW5kIEFjdGl2ZURPTU9iamVjdHMsCisg
ICAgICAgICAgICB3aGljaCBpcyBpbmhlcml0ZWQgdG8gYWxsIGNoaWxkLWZyYW1lcy4KKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgICAgIEZ1bmN0aW9ucyBmb3Igc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgYWN0aXZl
IERPTSBvYmplY3RzIGFuZCBhbmltYXRpb25zIGluIGFsbCBmcmFtZXMuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OndpbGxSZW5kZXJJbWFnZSk6CisgICAgICAgICAgICBXaWxsUmVuZGVySW1hZ2Ugbm93IGNoZWNr
cyBmb3Igc3VzcGVuc2lvbi4gVGhpcyBjYXVzZXMgYW5pbWF0ZWQgaW1hZ2VzIHRvIHBhdXNlCisg
ICAgICAgICAgICB0b2dldGhlciB3aXRoIGFsbCBvdGhlciB0eXBlcyBvZiBhbmltYXRpb25zLgor
CiAyMDEyLTAyLTI4ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIEludGVncmF0ZSBTVkdVc2VFbGVtZW50IHdpdGhpbiB0aGUgbmV3IHNoYWRvdyBy
b290IGNvbmNlcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BY3RpdmVET01PYmplY3QuaAppbmRleCBlNWZiNTg2
Li4yYTZiMWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oCkBAIC01NCw3ICs1
NCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIFJlYXNvbkZvclN1c3BlbnNpb24gewogICAgICAgICBK
YXZhU2NyaXB0RGVidWdnZXJQYXVzZWQsCiAgICAgICAgIFdpbGxTaG93RGlhbG9nLAotICAgICAg
ICBEb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZQorICAgICAgICBEb2N1bWVudFdpbGxCZWNvbWVJ
bmFjdGl2ZSwKKyAgICAgICAgUGFnZVdpbGxCZVN1c3BlbmRlZAogICAgIH07CiAgICAgdmlydHVh
bCBib29sIGNhblN1c3BlbmQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZChSZWFz
b25Gb3JTdXNwZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IGU5NmZlMTMuLjY5ZDljZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcApAQCAtMzQwNCwxMiArMzQwNCwxMyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnN0b3AoKQogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzdXNwZW5kKFJlYXNvbkZvclN1c3BlbnNp
b24gd2h5KQogewogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnN1c3BlbmQiKTsK
LSAgICAKKwogICAgIHN3aXRjaCAod2h5KQogICAgIHsKICAgICAgICAgY2FzZSBEb2N1bWVudFdp
bGxCZWNvbWVJbmFjdGl2ZToKICAgICAgICAgICAgIHN0b3AoKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFBhZ2VXaWxsQmVTdXNwZW5kZWQ6CiAgICAgICAgIGNhc2UgSmF2YVNj
cmlwdERlYnVnZ2VyUGF1c2VkOgogICAgICAgICBjYXNlIFdpbGxTaG93RGlhbG9nOgogICAgICAg
ICAgICAgLy8gRG8gbm90aGluZywgd2UgZG9uJ3QgcGF1c2UgbWVkaWEgcGxheWJhY2sgaW4gdGhl
c2UgY2FzZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGRkMzBkNzMuLmQ4MWUzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCkBAIC0xNjYsNiArMTY2LDcgQEAgaW5saW5lIEZyYW1lOjpGcmFtZShQ
YWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCwgRnJhbWVMb2Fk
ZXIKICAgICAsIG1faW5WaWV3U291cmNlTW9kZShmYWxzZSkKICAgICAsIG1faXNEaXNjb25uZWN0
ZWQoZmFsc2UpCiAgICAgLCBtX2V4Y2x1ZGVGcm9tVGV4dFNlYXJjaChmYWxzZSkKKyAgICAsIG1f
YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCgwKQogewogICAgIEFT
U0VSVChwYWdlKTsKICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKQEAgLTE5Niw2ICsxOTcsMTEg
QEAgaW5saW5lIEZyYW1lOjpGcmFtZShQYWdlKiBwYWdlLCBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCwgRnJhbWVMb2FkZXIKICNpZm5kZWYgTkRFQlVHCiAgICAgZnJhbWVDb3Vu
dGVyLmluY3JlbWVudCgpOwogI2VuZGlmCisKKyAgICAvLyBQYXVzZSBmdXR1cmUgQWN0aXZlRE9N
T2JqZWN0cyBpZiB0aGlzIGZyYW1lIGlzIGJlaW5nIGNyZWF0ZWQgd2hpbGUgdGhlIHBhZ2UgaXMg
aW4gYSBwYXVzZWQgc3RhdGUuCisgICAgRnJhbWUqIHBhcmVudCA9IHBhcmVudEZyb21Pd25lckVs
ZW1lbnQob3duZXJFbGVtZW50KTsKKyAgICBpZiAocGFyZW50ICYmIHBhcmVudC0+YWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSkKKyAgICAgICAgc3VzcGVuZEFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWU+IEZyYW1lOjpj
cmVhdGUoUGFnZSogcGFnZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIEZy
YW1lTG9hZGVyQ2xpZW50KiBjbGllbnQpCkBAIC0zMDYsNiArMzEyLDEzIEBAIHZvaWQgRnJhbWU6
OnNldERvY3VtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKICAgICAgICAgbm90aWZ5
Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICAgICAgbm90
aWZ5Q2hyb21lQ2xpZW50VG91Y2hFdmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICAgICB9CisK
KyAgICAvLyBTdXNwZW5kIGRvY3VtZW50IGlmIHRoaXMgZnJhbWUgd2FzIGNyZWF0ZWQgaW4gc3Vz
cGVuZGVkIHN0YXRlLgorICAgIGlmIChhY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3Bl
bmRlZCgpKSB7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgYW5pbWF0aW9uKCktPnN1c3BlbmRBbmltYXRp
b25zRm9yRG9jdW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7Cisg
ICAgfQogfQogCiAjaWYgRU5BQkxFKE9SSUVOVEFUSU9OX0VWRU5UUykKQEAgLTEwMTEsNiArMTAy
NCwzOCBAQCBmbG9hdCBGcmFtZTo6ZnJhbWVTY2FsZUZhY3RvcigpIGNvbnN0CiAgICAgcmV0dXJu
IHBhZ2UtPnBhZ2VTY2FsZUZhY3RvcigpOwogfQogCit2b2lkIEZyYW1lOjpzdXNwZW5kQWN0aXZl
RE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQoreworICAgIGJvb2wgd2FzU3VzcGVuZGVkID0gYWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKTsKKworICAgIG1fYWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWRDb3VudCsrOworCisgICAgaWYgKHdhc1N1c3Bl
bmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCkpIHsKKyAgICAgICAg
ZG9jdW1lbnQoKS0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OworICAgICAgICBhbmltYXRpb24oKS0+c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1bWVudChkb2N1
bWVudCgpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0
aXZlRE9NT2JqZWN0OjpQYWdlV2lsbEJlU3VzcGVuZGVkKTsKKyAgICB9Cit9CisKK3ZvaWQgRnJh
bWU6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKK3sKKyAgICBBU1NFUlQo
YWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNTdXNwZW5kZWQoKSk7CisKKyAgICBtX2FjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zU3VzcGVuZGVkQ291bnQtLTsKKworICAgIGlmIChhY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoZG9jdW1lbnQoKSkgeworICAgICAgICBkb2N1bWVudCgpLT5yZXN1bWVBY3RpdmVE
T01PYmplY3RzKCk7CisgICAgICAgIGFuaW1hdGlvbigpLT5yZXN1bWVBbmltYXRpb25zRm9yRG9j
dW1lbnQoZG9jdW1lbnQoKSk7CisgICAgICAgIGRvY3VtZW50KCktPnJlc3VtZVNjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIHZvaWQgRnJhbWU6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggZTA2YzBkZi4uMzljZDdmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWUuaApAQCAtMTg4LDEzICsxODgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBTdHJpbmcgc2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxsKFJlZ3VsYXJFeHByZXNzaW9uKiwgSFRN
TFRhYmxlQ2VsbEVsZW1lbnQqLCBzaXplX3QqIHJlc3VsdERpc3RhbmNlRnJvbVN0YXJ0T2ZDZWxs
KTsKICAgICAgICAgU3RyaW5nIHNlYXJjaEZvckxhYmVsc0JlZm9yZUVsZW1lbnQoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGxhYmVscywgRWxlbWVudCosIHNpemVfdCogcmVzdWx0RGlzdGFuY2UsIGJv
b2wqIHJlc3VsdElzSW5DZWxsQWJvdmUpOwogICAgICAgICBTdHJpbmcgbWF0Y2hMYWJlbHNBZ2Fp
bnN0RWxlbWVudChjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGFiZWxzLCBFbGVtZW50Kik7Ci0gICAg
ICAgIAorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBOU0ltYWdlKiBzZWxlY3Rpb25JbWFn
ZShib29sIGZvcmNlQmxhY2tUZXh0ID0gZmFsc2UpIGNvbnN0OwogICAgICAgICBOU0ltYWdlKiBy
YW5nZUltYWdlKFJhbmdlKiwgYm9vbCBmb3JjZUJsYWNrVGV4dCA9IGZhbHNlKSBjb25zdDsKICAg
ICAgICAgTlNJbWFnZSogc25hcHNob3REcmFnSW1hZ2UoTm9kZSosIE5TUmVjdCogaW1hZ2VSZWN0
LCBOU1JlY3QqIGVsZW1lbnRSZWN0KSBjb25zdDsKICAgICAgICAgTlNJbWFnZSogaW1hZ2VGcm9t
UmVjdChOU1JlY3QpIGNvbnN0OwogI2VuZGlmCisgICAgICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURP
TU9iamVjdHNBbmRBbmltYXRpb25zKCk7CisgICAgICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICAgICAgYm9vbCBhY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9uc1N1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnNTdXNwZW5kZWRDb3VudCA+IDA7IH0KIAogICAgICAgICAvLyBTaG91bGQgb25seSBi
ZSBjYWxsZWQgb24gdGhlIG1haW4gZnJhbWUgb2YgYSBwYWdlLgogICAgICAgICB2b2lkIG5vdGlm
eUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3Q7CkBAIC0y
NTcsNiArMjYwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPd25QdHI8VGlsZWRC
YWNraW5nU3RvcmU+IG1fdGlsZWRCYWNraW5nU3RvcmU7CiAjZW5kaWYKIAorICAgICAgICBpbnQg
bV9hY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc1N1c3BlbmRlZENvdW50OworCiAgICAgfTsK
IAogICAgIGlubGluZSB2b2lkIEZyYW1lOjppbml0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDIx
N2JjMmEuLjdjYjQ5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTA0OSw2ICsxMDQ5LDE4IEBA
IHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEludFJlY3QmIG9iamVjCiAgICAgfQogfQogCit2b2lkIFBhZ2U6OnN1c3BlbmRB
Y3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KCkpCisgICAgICAgIGZyYW1lLT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KTsKK30KKwordm9pZCBQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygp
Cit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5yZXN1bWVBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFn
ZUNsaWVudHMoKQogICAgIDogY2hyb21lQ2xpZW50KDApCiAgICAgLCBjb250ZXh0TWVudUNsaWVu
dCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCAzMTA1MTEwLi5jY2Q5NjZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApA
QCAtMzI0LDYgKzMyNCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzdGFy
dENvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCk7CiAgICAgICAgIHZvaWQgYWRkUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYgb2JqZWN0
UGFpbnRSZWN0KTsKIAorICAgICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOworICAgICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDg0NjcyYjEuLjExZmM5
MTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yNjQ1
LDYgKzI2NDUsMTAgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OndpbGxSZW5kZXJJbWFnZShDYWNoZWRJ
bWFnZSopCiAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKKyAgICAvLyBXZSB3aWxsIG5vdCByZW5kZXIgYSBuZXcgaW1hZ2Ug
d2hlbiBBY3RpdmUgRE9NIGlzIHN1c3BlbmRlZAorICAgIGlmIChkb2N1bWVudCgpLT5hY3RpdmVE
T01PYmplY3RzQXJlU3VzcGVuZGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8v
IElmIHdlJ3JlIG5vdCBpbiBhIHdpbmRvdyAoaS5lLiwgd2UncmUgZG9ybWFudCBmcm9tIGJlaW5n
IHB1dCBpbiB0aGUgYi9mIGNhY2hlIG9yIGluIGEgYmFja2dyb3VuZCB0YWIpCiAgICAgLy8gdGhl
biB3ZSBkb24ndCB3YW50IHRvIHJlbmRlciBlaXRoZXIuCiAgICAgcmV0dXJuICFkb2N1bWVudCgp
LT5pblBhZ2VDYWNoZSgpICYmICFkb2N1bWVudCgpLT52aWV3KCktPmlzT2Zmc2NyZWVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNWQ1MmNlZC4uNjk1YjhiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDEyLTAyLTI4ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEu
Y29tPgorCisgICAgICAgIFN1c3BlbmQvUmVzdW1lIEFQSSBmb3IgcGF1c2luZyB0aW1lcnMgYW5k
IGFuaW1hdGlvbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NjA2MworCisgICAgICAgIEJhc2VkIG9uIHRoZSBpbml0aWFsIHdvcmsgb2YgWmFsYW4g
QnVqdGFzIDx6YWxhbi5idWp0YXNAbm9raWEuY29tPiwKKworICAgICAgICBBZGRzIHN1c3BlbmQg
YW5kIHJlc3VtZSBBUEkgZm9yIFdlYktpdDIgYW5kIHVzZXMgaXQgaW4gUXQgdG8KKyAgICAgICAg
c3VzcGVuZCBhbmltYXRpb25zIGFuZCBET00gdGltZXJzIGR1cmluZyBwYW5uaW5nIGFuZCB6b29t
LgorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKFFR
dWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9zdXNwZW5kKToKKyAgICAgICAgKFFRdWlj
a1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9yZXN1bWUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxMi0w
Mi0yOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
RWxlbWVudCBzaG91bGQgYmUgYWJsZSB0byBoYXZlIG11bHRpcGxlIHNoYWRvdyByb290cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmlu
ZGV4IDJlZWVmYTguLmUzYTU2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcApAQCAtNjU1LDYgKzY1NSw3IEBAIHZvaWQgUVF1aWNr
V2ViVmlld1ByaXZhdGU6Ol9xX2NvbW1pdFBvc2l0aW9uQ2hhbmdlKGNvbnN0IFFQb2ludEYmIHRy
YWplY3RvcnlWZWN0CiB2b2lkIFFRdWlja1dlYlZpZXdGbGlja2FibGVQcml2YXRlOjpfcV9zdXNw
ZW5kKCkKIHsKICAgICBwYWdlSXNTdXNwZW5kZWQgPSB0cnVlOworICAgIHdlYlBhZ2VQcm94eS0+
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAKIHZvaWQgUVF1aWNr
V2ViVmlld0ZsaWNrYWJsZVByaXZhdGU6Ol9xX3Jlc3VtZSgpCkBAIC02NjMsNiArNjY0LDcgQEAg
dm9pZCBRUXVpY2tXZWJWaWV3RmxpY2thYmxlUHJpdmF0ZTo6X3FfcmVzdW1lKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgcGFnZUlzU3VzcGVuZGVkID0gZmFsc2U7CisgICAgd2ViUGFnZVByb3h5
LT5yZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCiAgICAgaWYgKGlzVHJh
bnNpdGlvbmluZ1RvTmV3UGFnZSkgewogICAgICAgICBpc1RyYW5zaXRpb25pbmdUb05ld1BhZ2Ug
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
OGVhM2ZlNC4uNzY5YjlkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE4Niw2ICsxODYsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgICwg
bV9uZWVkVG91Y2hFdmVudHMoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
KyAgICAsIG1faXNQYWdlU3VzcGVuZGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAs
IG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoVGV4dENoZWNrZXI6OmlzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkpCiAjZW5kaWYKQEAgLTExMjYsNiArMTEyNywyNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50
KQogICAgIHNldFVzZXJBZ2VudChtX2N1c3RvbVVzZXJBZ2VudCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCit7CisgICAgaWYg
KCFpc1ZhbGlkKCkgfHwgIW1faXNQYWdlU3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOworCisgICAgcHJvY2VzcygpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3Bh
Z2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKQoreworICAgIGlmICghaXNWYWxpZCgpIHx8IG1faXNQYWdlU3VzcGVuZGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CisKKyAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7Cit9CisKIGJvb2wgV2ViUGFnZVByb3h5Ojpz
dXBwb3J0c1RleHRFbmNvZGluZygpIGNvbnN0CiB7CiAgICAgcmV0dXJuICFtX21haW5GcmFtZUhh
c0N1c3RvbVJlcHJlc2VudGF0aW9uICYmIG1fbWFpbkZyYW1lICYmICFtX21haW5GcmFtZS0+aXNE
aXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlRG9jdW1lbnQoKTsKQEAgLTMxOTEsNiArMzIxMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIEFTU0VSVChtX3BhZ2VD
bGllbnQpOwogCiAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CisgICAgbV9pc1BhZ2VTdXNwZW5kZWQg
PSBmYWxzZTsKIAogICAgIGlmIChtX21haW5GcmFtZSkgewogICAgICAgICBtX3VybEF0UHJvY2Vz
c0V4aXQgPSBtX21haW5GcmFtZS0+dXJsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYWY4ZGExYi4uM2Y3NmUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNDA3LDYgKzQwNyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CiAgICAgU3RyaW5nIGN1c3Rv
bVRleHRFbmNvZGluZ05hbWUoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVRleHRFbmNvZGluZ05h
bWU7IH0KIAorICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsK
KyAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOworCiAgICAg
ZG91YmxlIGVzdGltYXRlZFByb2dyZXNzKCkgY29uc3Q7CiAKICAgICB2b2lkIHRlcm1pbmF0ZVBy
b2Nlc3MoKTsKQEAgLTk5Miw2ICs5OTUsOCBAQCBwcml2YXRlOgogCiAgICAgdWludDY0X3QgbV9w
YWdlSUQ7CiAKKyAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkOworCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGJvb2wgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA1N2E5Mjgu
LmE3N2YzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKQEAgLTE2NjAsNyArMTY2MCwyMSBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKICAgICBtX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDsK
IH0KLSAgCisKK3ZvaWQgV2ViUGFnZTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCkKK3sKKyAgICBtX3BhZ2UtPnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOworfQorCit2b2lkIFdlYlBhZ2U6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCkKK3sKKyAgICBtX3BhZ2UtPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
KCk7CisKKyAgICAvLyBXZSBuZWVkIHRvIHJlcGFpbnQgb24gcmVzdW1lIHRvIGtpY2tzdGFydCBh
bmltYXRlZCBwYWludGluZyBhZ2Fpbi4KKyAgICBtX2RyYXdpbmdBcmVhLT5zZXROZWVkc0Rpc3Bs
YXkoSW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV92aWV3U2l6ZSkpOworfQorCisKIEludFBvaW50
IFdlYlBhZ2U6OnNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JiBwb2ludCkKIHsKICAgICBJ
bnRQb2ludCB3aW5kb3dQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDc0NWJmNGQuLmJkNTYwZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTk4LDYgKzU5OCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3dubG9hZElE
KTsKICAgICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCBwZXJm
b3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCA3ODEzYWRmLi5jOTNiMjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTAxLDYg
KzEwMSw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFVzZXJBZ2VudChXVEY6OlN0
cmluZyB1c2VyQWdlbnQpCiAgICAgU2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShXVEY6OlN0cmlu
ZyBlbmNvZGluZ05hbWUpCiAKKyAgICBTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKQorICAgIFJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKKwogI2lmIFVT
RShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFNldEZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KFdl
YkNvcmU6OkludFJlY3QgcmVjdCkKICAgICBTZXRWaWV3cG9ydFNpemUoV2ViQ29yZTo6SW50U2l6
ZSBzaXplKQo=
</data>
<flag name="commit-queue"
          id="131860"
          type_id="3"
          status="-"
          setter="zoltan"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129882</attachid>
            <date>2012-03-02 04:54:19 -0800</date>
            <delta_ts>2012-03-02 04:58:34 -0800</delta_ts>
            <desc>BuildFix</desc>
            <filename>study</filename>
            <type>text/plain</type>
            <size>2001</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NDk4YjFhLi5hMzg5ODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOSBA
QAorMjAxMi0wMy0wMiAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lh
LmNvbT4KKworICAgICAgICBGaXggYnVpbGQgb24gQXBwbGVXZWJLaXQgYWZ0ZXIgMTA5NTQ4Lgor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisKIDIwMTItMDMtMDEgIEFsZXhhbmRlciBQYXZs
b3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBs
ZW1lbnQgc3VnZ2VzdGlvbnMgaW4gV2F0Y2ggRXhwcmVzc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
aW5kZXggMWFkYzQxOS4uZDFjNTczMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTc4MSw2ICs3
ODEsOCBAQCBfX1pON1dlYkNvcmU0UGFnZTI3c2V0SmF2YVNjcmlwdFVSTHNBcmVBbGxvd2VkRWIK
IF9fWk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplRWkKIF9f
Wk43V2ViQ29yZTRQYWdlMzFzZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQKIF9fWk43
V2ViQ29yZTRQYWdlMzJzZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZEViCitfX1pON1dl
YkNvcmU0UGFnZTM1cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnNFdgorX19aTjdX
ZWJDb3JlNFBhZ2UzNnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9uc0V2CiBfX1pO
N1dlYkNvcmU0UGFnZTM3c2V0SW5Mb3dRdWFsaXR5SW1hZ2VJbnRlcnBvbGF0aW9uTW9kZUViCiBf
X1pON1dlYkNvcmU0UGFnZTQzc2V0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQ291bnRlclRocmVz
aG9sZEV5CiBfX1pON1dlYkNvcmU0UGFnZTZnb0JhY2tFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDJiODQ2ZGIu
LmM3YzE0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5IEBACisyMDEyLTAzLTAyICBBbGxhbiBT
YW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEZpeCBi
dWlsZCBvbiBBcHBsZVdlYktpdCBhZnRlciAxMDk1NDguCisKKyAgICAgICAgKiBtYWMvV2ViS2l0
Mi5vcmRlcjoKKwogMjAxMi0wMy0wMiAgSm9vbmUgSHVyICA8am9vbmUuaHVyQGNvbGxhYm9yYS5j
by51az4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggV2ViS2l0MiBHVEsrIGJ1aWxkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvbWFjL1dlYktpdDIub3JkZXIgYi9Tb3VyY2UvV2ViS2l0
Mi9tYWMvV2ViS2l0Mi5vcmRlcgppbmRleCBmYWU5Nzg0Li40NTdhMDYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9tYWMvV2ViS2l0Mi5vcmRlcgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9tYWMv
V2ViS2l0Mi5vcmRlcgpAQCAtMzM4MiwzICszMzgyLDUgQEAgX1dLRHJhd0JlemVsZWRUZXh0QXJl
YQogX1dLR2V0Rm9udEluTGFuZ3VhZ2VGb3JDaGFyYWN0ZXIKIF9XS0FkdmFuY2VEZWZhdWx0QnV0
dG9uUHVsc2VBbmltYXRpb24KIF9XS0FwcEtpdERyYXdEZWNveVdpbmRvd19pc0tleVdpbmRvdwor
X19aTjZXZWJLaXQ3V2ViUGFnZTM2c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25z
RXYKK19fWk42V2ViS2l0N1dlYlBhZ2UzNXJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zRXYK
</data>

          </attachment>
      

    </bug>

</bugzilla>