<?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>11272</bug_id>
          
          <creation_ts>2006-10-13 01:11:46 -0700</creation_ts>
          <short_desc>Implement currentScale(), setCurrentScale() and currentTranslate() in SVGSVGElement</short_desc>
          <delta_ts>2007-05-31 19:02:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Rob Buis">rwlbuis</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>53324</commentid>
    <comment_count>0</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2006-10-13 01:11:46 -0700</bug_when>
    <thetext>Implement the getting/setting of the property currentScale and getting of property currentTranslate so the FIXMEs can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9946</commentid>
    <comment_count>1</comment_count>
      <attachid>14563</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-15 05:21:45 -0700</bug_when>
    <thetext>Created attachment 14563
First attempt

This patch allows simple zooming and panning. I think some of the values can be stored in the svg container in the render tree as well, but that would need first some cleanup of the svg render classes, as
already listed in another bug report. Nevertheless I think this patch is valuable, going into the experimental branch first is also an option. Panning should work on all platforms, zooming only on Mac (since AFAIK others have no context menu&apos;s where I can easily add Zoom entries to).
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9862</commentid>
    <comment_count>2</comment_count>
      <attachid>14579</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-16 01:24:05 -0700</bug_when>
    <thetext>Created attachment 14579
Now should compile

Olliej noticed the previous patch didnt compile, this one should.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9811</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2007-05-16 15:27:56 -0700</bug_when>
    <thetext>Hi Rob,

I think the incZoom() etc methods should at least go into SVGDocument,
if not somewhere else where it fits better. Suggestions?

Greetings,
Niko</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9774</commentid>
    <comment_count>4</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-17 02:59:08 -0700</bug_when>
    <thetext>Hi Niko,

(In reply to comment #3)
&gt; Hi Rob,
&gt; 
&gt; I think the incZoom() etc methods should at least go into SVGDocument,
&gt; if not somewhere else where it fits better. Suggestions?

They are in SVGDocument now :)
I also added them to Document.h since SVGDocument.h was not visible for WebKit. I now know it can
be made visible. We could stick with the methods being only in SVGDocument, but some more #if ENABLE(SVG) constructions would be needed then, which are not always considered nice. Anyway this and other issues will probably come up during reviewing. Also notice that probably the svg render object handling the outer &lt;svg&gt; should know enough about it to ask the zoom and pan factor from
the SVGSVGElement, and other svg container render objects don&apos;t need to know about these values. But I propose to do that later (there already is a bug report for it).
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9742</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-05-17 17:42:03 -0700</bug_when>
    <thetext>Instead of having SVG-specific zoom in and out menu items, I would rather see SVG work off of the scale factor that is used for text zoom in HTML. Then Cmd-plus and Cmd-minus would work in apps that bind those to text zoom, as would the menu items. I think on mac at least we already do this for PDF.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9546</commentid>
    <comment_count>6</comment_count>
      <attachid>14629</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-19 12:09:54 -0700</bug_when>
    <thetext>Created attachment 14629
Using zoomFactor

This version uses zoomFactor from the Frame. Note that it behaves a bit differently, ie. the root svg increases/decreases along the zoom, also when embedded. I noticed this behaviour when testing with Opera, and it seems intuitive.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8826</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-05-29 01:42:57 -0700</bug_when>
    <thetext>I would suggest not adding the zoom items to the context menu - I think the menu items, keyboard shortcuts, and optional toolbar buttons are more than enough UI for zooming. The rest of this seems good to go for the feature branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8827</commentid>
    <comment_count>8</comment_count>
      <attachid>14629</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-05-29 01:44:14 -0700</bug_when>
    <thetext>Comment on attachment 14629
Using zoomFactor

r- for the context menu items, I think it&apos;s best not to add those and instead we should make the text zoom menu item labels dynamic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8774</commentid>
    <comment_count>9</comment_count>
      <attachid>14782</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-30 07:25:09 -0700</bug_when>
    <thetext>Created attachment 14782
Without the webkit changes

As agreed, this time without the webkit changes to the context menu.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8760</commentid>
    <comment_count>10</comment_count>
      <attachid>14782</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-05-30 07:50:03 -0700</bug_when>
    <thetext>Comment on attachment 14782
Without the webkit changes

I don&apos;t think we should necessarily mix the zoom factor together with the text size multiplier. The text size multiplier is still called &quot;zoomFactor&quot; in Frame.cpp, but I think we may want a separate way to manipulate the zoom factor and text size multiplier independently. And I think a zoom factor should zoom everything, not just SVG content.

+    if (document() &amp;&amp; document()-&gt;frame())
+        return float(document()-&gt;frame()-&gt;zoomFactor()) / 100.;
+    return 1.0;

The right way to write the above so it will be floating point is:

    if (document() &amp;&amp; document()-&gt;frame())
        return document()-&gt;frame()-&gt;zoomFactor() / 100.0f;
    return 1.0f;

There&apos;s no need for the cast to &quot;float&quot;.

+        document()-&gt;frame()-&gt;setZoomFactor(scale / 100.);

This will do the math as double. You want &quot;scale / 100.0f&quot;.

The word &quot;translate&quot; is a verb not a noun. It should be &quot;translation&quot; instead in the various function names.

-    //canvasView()-&gt;enableZoomAndPan(zoomAndPan == SVG_ZOOMANDPAN_MAGNIFY);

We normally don&apos;t check in commented-out code. if we must check this in, it needs a comment to indicate why it&apos;s commented out.

         return m_lastScrollbarUnderMouse-&gt;handleMouseMoveEvent(mouseEvent);
-
     // Treat mouse move events while the mouse is pressed as &quot;read-only&quot; in prepareMouseEvent

Why remove this blank line?

+       static_cast&lt;SVGDocument*&gt;(m_frame-&gt;document())-&gt;zoomEnabled()) {

Why does zoomEnabled() control panning? Should it be named zoomAndPanEnabled() instead?

+        AffineTransform ctm;

This local variable is unused?

+        m_width = float(m_width) * svg-&gt;currentScale();
+        m_height = float(m_height) * svg-&gt;currentScale();

No need for the cast to float here.

review- at least for the &quot;translate&quot; name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8768</commentid>
    <comment_count>11</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-30 08:34:23 -0700</bug_when>
    <thetext>Hi Darin,

(In reply to comment #10)
&gt; (From update of attachment 14782 [edit])
&gt; I don&apos;t think we should necessarily mix the zoom factor together with the text
&gt; size multiplier. The text size multiplier is still called &quot;zoomFactor&quot; in
&gt; Frame.cpp, but I think we may want a separate way to manipulate the zoom factor
&gt; and text size multiplier independently. And I think a zoom factor should zoom
&gt; everything, not just SVG content.

Right, Text zoom seems very specific and doesn&apos;t translate well to the svg world. My original patch had them separated.

&gt; +    if (document() &amp;&amp; document()-&gt;frame())
&gt; +        return float(document()-&gt;frame()-&gt;zoomFactor()) / 100.;
&gt; +    return 1.0;
&gt; 
&gt; The right way to write the above so it will be floating point is:
&gt; 
&gt;     if (document() &amp;&amp; document()-&gt;frame())
&gt;         return document()-&gt;frame()-&gt;zoomFactor() / 100.0f;
&gt;     return 1.0f;
&gt; 
&gt; There&apos;s no need for the cast to &quot;float&quot;.

Fixed.

&gt; +        document()-&gt;frame()-&gt;setZoomFactor(scale / 100.);
&gt; 
&gt; This will do the math as double. You want &quot;scale / 100.0f&quot;.

Fixed.
 
&gt; The word &quot;translate&quot; is a verb not a noun. It should be &quot;translation&quot; instead
&gt; in the various function names.

Fixed.

&gt; -    //canvasView()-&gt;enableZoomAndPan(zoomAndPan == SVG_ZOOMANDPAN_MAGNIFY);
&gt; 
&gt; We normally don&apos;t check in commented-out code. if we must check this in, it
&gt; needs a comment to indicate why it&apos;s commented out.

Its being removed here :)

&gt;          return m_lastScrollbarUnderMouse-&gt;handleMouseMoveEvent(mouseEvent);
&gt; -
&gt;      // Treat mouse move events while the mouse is pressed as &quot;read-only&quot; in
&gt; prepareMouseEvent
&gt; 
&gt; Why remove this blank line?

No particular reason. Fixed.

&gt; +       static_cast&lt;SVGDocument*&gt;(m_frame-&gt;document())-&gt;zoomEnabled()) {
&gt; 
&gt; Why does zoomEnabled() control panning? Should it be named zoomAndPanEnabled()
&gt; instead?

Agreed. Fixed.

&gt; +        AffineTransform ctm;
&gt; 
&gt; This local variable is unused?

Maybe copy and paste error. Fixed.

&gt; +        m_width = float(m_width) * svg-&gt;currentScale();
&gt; +        m_height = float(m_height) * svg-&gt;currentScale();
&gt; 
&gt; No need for the cast to float here.

Fixed.
Cheers,

Rob.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8754</commentid>
    <comment_count>12</comment_count>
      <attachid>14784</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-30 08:35:26 -0700</bug_when>
    <thetext>Created attachment 14784
Cleaning up

This should address Darin&apos;s issues.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8755</commentid>
    <comment_count>13</comment_count>
      <attachid>14784</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-05-30 09:18:04 -0700</bug_when>
    <thetext>Comment on attachment 14784
Cleaning up

+        rootElement()-&gt;setCurrentTranslate(FloatPoint(pos.x() - m_translate.x(), m_translate.y() - pos.y()));
+        if (renderer())
+            renderer()-&gt;repaint();

Shouldn&apos;t setCurrentTranslate be the code doing the repaint?

+        FloatPoint m_translate;

I think this should be removed.

+    if (m_svgPan) {
+        m_svgPan = false;
+        return true;
+    }

I think we want to do a final &quot;updatePan&quot; at the end location.

+        m_width = float(m_width) * svg-&gt;currentScale();
+        m_height = float(m_height) * svg-&gt;currentScale();

This still has the cast, even though you mentioned removing it in your comments.

review+, although I think this needs a little refinement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8750</commentid>
    <comment_count>14</comment_count>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2007-05-30 10:20:03 -0700</bug_when>
    <thetext>Hi Darin,

(In reply to comment #13)
&gt; (From update of attachment 14784 [edit])
&gt; +        rootElement()-&gt;setCurrentTranslate(FloatPoint(pos.x() -
&gt; m_translate.x(), m_translate.y() - pos.y()));
&gt; +        if (renderer())
&gt; +            renderer()-&gt;repaint();
&gt; 
&gt; Shouldn&apos;t setCurrentTranslate be the code doing the repaint?

Right, that is better, will do.

&gt; +        FloatPoint m_translate;
&gt; 
&gt; I think this should be removed.

I am not sure that is possible. We have to keep track of intermendiate results like that I think.

&gt; +    if (m_svgPan) {
&gt; +        m_svgPan = false;
&gt; +        return true;
&gt; +    }
&gt; 
&gt; I think we want to do a final &quot;updatePan&quot; at the end location.

Right, will fix.

&gt; +        m_width = float(m_width) * svg-&gt;currentScale();
&gt; +        m_height = float(m_height) * svg-&gt;currentScale();
&gt; 
&gt; This still has the cast, even though you mentioned removing it in your
&gt; comments.

Right, I searched for (float), should have searched for float(. Will also fix.
Patch will go to the feature branch.
Cheers,

Rob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>8596</commentid>
    <comment_count>15</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-05-31 19:02:53 -0700</bug_when>
    <thetext>Landed in r21925.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14563</attachid>
            <date>2007-05-15 05:21:45 -0700</date>
            <delta_ts>2007-05-16 01:24:05 -0700</delta_ts>
            <desc>First attempt</desc>
            <filename>11272-2.diff</filename>
            <type>text/plain</type>
            <size>16973</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTQ4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDctMDUtMTUgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJy
ZW50U2NhbGUoKSwgc2V0Q3VycmVudFNjYWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBT
VkdTVkdFbGVtZW50CisKKyAgICAgICAgQWxsb3cgem9vbWluZyBhbmQgcGFubmluZywgdGhlcmVi
eSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIG1ldGhvZHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbmNab29tKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpkZWNab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZXNldFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Onpvb21FbmFibGVkKToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnQ6OmluY1pvb20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OmRlY1pv
b20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnJlc2V0Wm9vbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6em9vbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnQ6OnVwZGF0ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6
OnN0YXJ0UGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojp1cGRhdGVQYW4pOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OlNWR1NW
R0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50VHJhbnNsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorCiAyMDA3LTA1LTE1ICBNaXR6IFBldHRl
bCAgPG1pdHpAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIeWF0dC4KSW5kZXg6
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkocmV2aXNpb24gMjE0ODEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NDMsNiArNjQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvd0JhbmR3
aWR0aERpc3BsYXkoYm9vbCBsb3dCYW5kV2lkdGgpIHsgbV9pbkxvd0JhbmR3aWR0aERpc3BsYXkg
PSBsb3dCYW5kV2lkdGg7IH0KICNlbmRpZiAgICAgCiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5jWm9v
bSgpIHt9CisgICAgdmlydHVhbCB2b2lkIGRlY1pvb20oKSB7fQorICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFpvb20oKSB7fQorICAgIHZpcnR1YWwgYm9vbCB6b29tRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBtX3N0eWxl
U2VsZWN0b3I7CiAgICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAyMTQ4MSkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAg
ICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI2
LDEwICsyNiwxMyBAQAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5j
bHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgorI2luY2x1
ZGUgIlNWR1pvb21BbmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw2ICs3
Nyw1NiBAQCB2b2lkIFNWR0RvY3VtZW50OjpkaXNwYXRjaFNjcm9sbEV2ZW50KCkKICAgICByb290
RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwogfQogCisjZGVm
aW5lIFpPT01fRkFDVE9SIDEuMgorCit2b2lkIFNWR0RvY3VtZW50OjppbmNab29tKCkKK3sKKyAg
ICBpZiAocm9vdEVsZW1lbnQoKSkKKyAgICAgICAgdXBkYXRlWm9vbShyb290RWxlbWVudCgpLT5j
dXJyZW50U2NhbGUoKSAqIFpPT01fRkFDVE9SKTsKK30KKwordm9pZCBTVkdEb2N1bWVudDo6ZGVj
Wm9vbSgpCit7CisgICAgaWYgKHJvb3RFbGVtZW50KCkpCisgICAgICAgIHVwZGF0ZVpvb20ocm9v
dEVsZW1lbnQoKS0+Y3VycmVudFNjYWxlKCkgLyBaT09NX0ZBQ1RPUik7Cit9CisKK3ZvaWQgU1ZH
RG9jdW1lbnQ6OnJlc2V0Wm9vbSgpCit7CisgICAgaWYgKHJvb3RFbGVtZW50KCkpCisgICAgICAg
IHVwZGF0ZVpvb20oMS4wKTsKK30KKworYm9vbCBTVkdEb2N1bWVudDo6em9vbUVuYWJsZWQoKSBj
b25zdAoreworICAgIGlmIChyb290RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdEVsZW1l
bnQoKS0+em9vbUFuZFBhbigpID09IFNWR1pvb21BbmRQYW46OlNWR19aT09NQU5EUEFOX01BR05J
Rlk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnVwZGF0ZVpv
b20oZmxvYXQgem9vbVZhbHVlKQoreworICAgIHJvb3RFbGVtZW50KCktPnNldEN1cnJlbnRTY2Fs
ZSh6b29tVmFsdWUpOworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT5y
ZXBhaW50KCk7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKGNvbnN0IEZsb2F0UG9p
bnQmIHN0YXJ0KQoreworICAgIGlmIChyb290RWxlbWVudCgpKQorICAgICAgICBtX3RyYW5zbGF0
ZSA9IEZsb2F0UG9pbnQoc3RhcnQueCgpIC0gcm9vdEVsZW1lbnQoKS0+Y3VycmVudFRyYW5zbGF0
ZSgpLngoKSwgcm9vdEVsZW1lbnQoKS0+Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSArIHN0YXJ0Lnko
KSk7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBw
b3MpIGNvbnN0Cit7CisgICAgaWYgKHJvb3RFbGVtZW50KCkpIHsKKyAgICAgICAgcm9vdEVsZW1l
bnQoKS0+c2V0Q3VycmVudFRyYW5zbGF0ZShGbG9hdFBvaW50KHBvcy54KCkgLSBtX3RyYW5zbGF0
ZS54KCksIG1fdHJhbnNsYXRlLnkoKSAtIHBvcy55KCkpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVy
KCkpCisgICAgICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgfQorfQorCiB9CiAK
IC8vIHZpbTp0cz00Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24g
MjE0ODEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xh
cyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAy
MDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjUsMTIgKzI1LDEzIEBACiAjaWYg
RU5BQkxFKFNWRykKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlv
bjsKICAgICBjbGFzcyBTVkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci0gICAg
Y2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiAKICAgICBjbGFzcyBTVkdEb2N1bWVudCA6IHB1Ymxp
YyBEb2N1bWVudCB7CiAgICAgcHVibGljOgpAQCAtNDUsNiArNDYsMTggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAKICAgICAgICAgdm9pZCBkaXNwYXRjaFpvb21FdmVudChmbG9hdCBw
cmV2U2NhbGUsIGZsb2F0IG5ld1NjYWxlKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaFNjcm9sbEV2
ZW50KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGluY1pvb20oKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGRlY1pvb20oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgem9vbUVuYWJsZWQoKSBjb25zdDsKKworICAgICAgICB2b2lkIHN0
YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KTsKKyAgICAgICAgdm9pZCB1cGRhdGVQYW4o
Y29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZv
aWQgdXBkYXRlWm9vbShmbG9hdCk7CisgICAgICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiAg
ICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNDgxKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgU1ZHU1ZHRWxlbWVu
dDo6U1ZHU1ZHRWxlbWVudChjb25zdCBRdWFsaQogICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3Ro
TW9kZUhlaWdodCkKICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2UpCiAgICAgLCBtX3RpbWVT
Y2hlZHVsZXIobmV3IFRpbWVTY2hlZHVsZXIoZG9jKSkKKyAgICAsIG1fc2NhbGUoMS4wKQogewog
ICAgIHNldFdpZHRoQmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIx
MDAlIikpOwogICAgIHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9k
ZUhlaWdodCwgIjEwMCUiKSk7CkBAIC0xNTIsMTkgKzE1MywzNCBAQCB2b2lkIFNWR1NWR0VsZW1l
bnQ6OnNldFVzZUN1cnJlbnRWaWV3KGJvCiAKIGZsb2F0IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRT
Y2FsZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFJldHVybiB0aGUgY3VycmVudCB6b29tL3Nj
YWxlIHZhbHVlIChzZWUgYnVnIDExMjcyKQotICAgIHJldHVybiAxLjsKKyAgICByZXR1cm4gbV9z
Y2FsZTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2Nh
bGUpCiB7Ci0gICAgLy8gRklYTUU6IFNldCB0aGUgY3VycmVudCB6b29tL3NjYWxlIHZhbHVlIChz
ZWUgYnVnIDExMjcyKQorICAgIG1fc2NhbGUgPSBzY2FsZTsKKyAgICBpZiAocmVuZGVyZXIoKSkg
eworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0OworICAgICAgICBtYXQuc2NhbGUobV9zY2Fs
ZSk7CisgICAgICAgIG1hdC50cmFuc2xhdGUobV90cmFuc2xhdGUueCgpLCBtX3RyYW5zbGF0ZS55
KCkpOworICAgICAgICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtYXQpOworICAgIH0K
IH0KIAogRmxvYXRQb2ludCBTVkdTVkdFbGVtZW50OjpjdXJyZW50VHJhbnNsYXRlKCkgY29uc3QK
IHsKLSAgICAvLyBGSVhNRTogUmV0dXJuIHRoZSBjdXJyZW50IHBhbi90cmFuc2xhdGUgdmFsdWUg
KHNlZSBidWcgMTEyNzIpCi0gICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKKyAgICByZXR1cm4gbV90
cmFuc2xhdGU7Cit9CisKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShj
b25zdCBGbG9hdFBvaW50ICZ0cmFuc2xhdGUpCit7CisgICAgbV90cmFuc2xhdGUgPSB0cmFuc2xh
dGU7CisgICAgaWYgKHJlbmRlcmVyKCkpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsK
KyAgICAgICAgbWF0LnNjYWxlKG1fc2NhbGUpOworICAgICAgICBtYXQudHJhbnNsYXRlKG1fdHJh
bnNsYXRlLngoKSwgbV90cmFuc2xhdGUueSgpKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9j
YWxUcmFuc2Zvcm0obWF0KTsKKyAgICB9CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6YWRkU1ZH
V2luZG93RXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3Qg
QXR0cmlidXRlKiBhdHRyKQpAQCAtMzcwLDEyICszODYsNiBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoCiAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6cmVt
b3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OnNldFpvb21BbmRQ
YW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbikKLXsKLSAgICBTVkdab29tQW5kUGFuOjpzZXRa
b29tQW5kUGFuKHpvb21BbmRQYW4pOwotICAgIC8vY2FudmFzVmlldygpLT5lbmFibGVab29tQW5k
UGFuKHpvb21BbmRQYW4gPT0gU1ZHX1pPT01BTkRQQU5fTUFHTklGWSk7Ci19Ci0KIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6cGF1c2VBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fdGltZVNjaGVkdWxl
ci0+YW5pbWF0aW9uc1BhdXNlZCgpKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAko
cmV2aXNpb24gMjE0ODEpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAg
ICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAg
ICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC03
Nyw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFNj
YWxlKGZsb2F0IHNjYWxlKTsKIAogICAgICAgICBGbG9hdFBvaW50IGN1cnJlbnRUcmFuc2xhdGUo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRDdXJyZW50VHJhbnNsYXRlKGNvbnN0IEZsb2F0UG9p
bnQmKTsKICAgICAgICAgCiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIHRpbWVTY2hlZHVsZXIoKSB7
IHJldHVybiBtX3RpbWVTY2hlZHVsZXI7IH0KICAgICAgICAgCkBAIC0xMTksOSArMTIwLDYgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSAg
ICAgICAgLy8gJ3ZpcnR1YWwgU1ZHWm9vbUFuZFBhbiBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVh
bCB2b2lkIHNldFpvb21BbmRQYW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbik7Ci0KICAgICAg
ICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2
ZURlY2xzID0gZmFsc2UpOwogCiAgICAgcHJvdGVjdGVkOgpAQCAtMTQ0LDYgKzE0Miw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICAgICAgICAgYm9vbCBtX3VzZUN1cnJlbnRWaWV3OwogICAgICAg
ICBUaW1lU2NoZWR1bGVyKiBtX3RpbWVTY2hlZHVsZXI7CisgICAgICAgIGZsb2F0IG1fc2NhbGU7
CisgICAgICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDIxNDgxKQorKysg
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYx
LDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgor
I2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVk
ZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgpAQCAtOTksNiArMTAwLDkgQEAgRXZlbnRIYW5kbGVyOjpF
dmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVyZXIoMCkK
ICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3Vz
ZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQorI2lmIEVOQUJMRShTVkcpCisgICAgLCBtX3N2Z1Bh
bihmYWxzZSkKKyNlbmRpZgogICAgICwgbV9yZXNpemVMYXllcigwKQogICAgICwgbV9jYXB0dXJp
bmdNb3VzZUV2ZW50c05vZGUoMCkKICAgICAsIG1fY2xpY2tDb3VudCgwKQpAQCAtMjc2LDYgKzI4
MCwxNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgaWYg
KHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGV2ZW50KSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5p
c1NWR0RvY3VtZW50KCkgJiYKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+em9vbUVuYWJs
ZWQoKSkgeworICAgICAgICBpZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNs
aWNrKSB7CisgICAgICAgICAgICBtX3N2Z1BhbiA9IHRydWU7CisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihldmVudC5l
dmVudCgpLnBvcygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQorI2VuZGlmCisKICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGF0IHRoZSBzdGFydCBvZiBtb3Vz
ZSBkb3duIGhhbmRsaW5nLAogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBkbyBpdCB1
bnRpbCB3ZSBrbm93IHdlIGRpZG4ndCBoaXQgYSB3aWRnZXQuCiAgICAgaWYgKHNpbmdsZUNsaWNr
KQpAQCAtODg3LDEzICs5MDIsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92
ZUV2ZW50KAogICAgIGlmIChtX2hvdmVyVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9ob3Zl
clRpbWVyLnN0b3AoKTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1fc3ZnUGFuKSB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnVw
ZGF0ZVBhbihtX2N1cnJlbnRNb3VzZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmCiAgICAgaWYgKG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQpCiAgICAgICAgIHJl
dHVybiBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2Vtb3ZlRXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jl
c2l6ZWQuZ2V0KCksIGZhbHNlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CiAKICAgICAvLyBTZW5k
IGV2ZW50cyByaWdodCB0byBhIHNjcm9sbGJhciBpZiB0aGUgbW91c2UgaXMgcHJlc3NlZC4KICAg
ICBpZiAobV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSAmJiBtX21vdXNlUHJlc3NlZCkKICAgICAg
ICAgcmV0dXJuIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPmhhbmRsZU1vdXNlTW92ZUV2ZW50
KG1vdXNlRXZlbnQpOwotCiAgICAgLy8gVHJlYXQgbW91c2UgbW92ZSBldmVudHMgd2hpbGUgdGhl
IG1vdXNlIGlzIHByZXNzZWQgYXMgInJlYWQtb25seSIgaW4gcHJlcGFyZU1vdXNlRXZlbnQKICAg
ICAvLyBpZiB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QuCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0
IDpob3ZlciBhbmQgOmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRoZXkgd2VyZSBpbiB3aGVu
IHRoZSBtb3VzZQpAQCAtOTY3LDYgKzk4NywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
TW91c2VSZWxlYXNlRXZlCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBtX2N1cnJl
bnRNb3VzZVBvc2l0aW9uID0gbW91c2VFdmVudC5wb3MoKTsKIAorI2lmIEVOQUJMRShTVkcpCisg
ICAgaWYgKG1fc3ZnUGFuKSB7CisgICAgICAgIG1fc3ZnUGFuID0gZmFsc2U7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fZnJhbWVTZXRCZWluZ1Jlc2l6
ZWQpCiAgICAgICAgIHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2V1cEV2ZW50LCBtX2Zy
YW1lU2V0QmVpbmdSZXNpemVkLmdldCgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIG1vdXNlRXZlbnQs
IGZhbHNlKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMjE0ODEpCisrKyBXZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsOSBA
QCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7CiAgICAg
Ym9vbCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBib29sIG1fbW91c2VEb3du
V2FzSW5TdWJmcmFtZTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGJvb2wgbV9zdmdQYW47CisjZW5k
aWYKIAogICAgIFJlbmRlckxheWVyKiBtX3Jlc2l6ZUxheWVyOwogCkluZGV4OiBXZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNDgxKQor
KysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA3
LTA1LTE1ICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTI3MgorICAgICAgICBJbXBsZW1lbnQgY3VycmVudFNjYWxlKCksIHNldEN1cnJl
bnRTY2FsZSgpIGFuZCBjdXJyZW50VHJhbnNsYXRlKCkgaW4gU1ZHU1ZHRWxlbWVudAorCisgICAg
ICAgIFNldHVwIGNvbnRleHQgbWVudSBlbnRyaWVzIGZvciB6b29taW5nIGFuZCBwZXJmb3JtIGFj
dGlvbnMgb24gU1ZHIGRvY3VtZW50IHdoZW4gZW5hYmxlZC4KKworICAgICAgICAqIEVuZ2xpc2gu
bHByb2ovTG9jYWxpemFibGUuc3RyaW5nczoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF96b29tSW5Eb2N1bWVudDpd
KToKKyAgICAgICAgKC1bV2ViVmlldyBfem9vbU91dERvY3VtZW50Ol0pOgorICAgICAgICAoLVtX
ZWJWaWV3IF96b29tUmVzZXREb2N1bWVudDpdKToKKwogMjAwNy0wNS0xNSAgTWFjaWVqIFN0YWNo
b3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEh5YXR0IGFuZCBM
YXJzLgpJbmRleDogV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCShyZXZp
c2lvbiAyMTQ4MSkKKysrIFdlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNCw2ICsxMjQsMTUgQEAKIAAvACoAIABJAG4AcwBwAGUAYwB0
ACAARQBsAGUAbQBlAG4AdAAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoA
LwAKIAAiAEkAbgBzAHAAZQBjAHQAIABFAGwAZQBtAGUAbgB0ACIAIAA9ACAAIgBJAG4AcwBwAGUA
YwB0ACAARQBsAGUAbQBlAG4AdAAiADsACiAACisALwAqACAAWgBvAG8AbQAgAEkAbgAgAGMAbwBu
AHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFoAbwBvAG0AIABJAG4AIgAg
AD0AIAAiAFoAbwBvAG0AIABJAG4AIgA7AAorAAorAC8AKgAgAFoAbwBvAG0AIABPAHUAdAAgAGMA
bwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKKwAiAFoAbwBvAG0AIABPAHUA
dAAiACAAPQAgACIAWgBvAG8AbQAgAE8AdQB0ACIAOwAKKwAKKwAvACoAIABaAG8AbwBtACAAUgBl
AHMAZQB0ACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAWgBv
AG8AbQAgAFIAZQBzAGUAdAAiACAAPQAgACIAWgBvAG8AbQAgAFIAZQBzAGUAdAAiADsACisACiAA
LwAqACAASQB0AGEAbABpAGMAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAq
AC8ACiAAIgBJAHQAYQBsAGkAYwAiACAAPQAgACIASQB0AGEAbABpAGMAIgA7AAogAApJbmRleDog
V2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZp
ZXcvV2ViSFRNTFZpZXcubW0JKHJldmlzaW9uIDIxNDgxKQorKysgV2ViS2l0L1dlYlZpZXcvV2Vi
SFRNTFZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2OTQsNiArMjY5NCwzMiBAQCBzdGF0aWMg
TlNVUkwqIHVuaXF1ZVVSTFdpdGhSZWxhdGl2ZVBhcnQoCiAgICAgICAgIFttZW51IGFkZEl0ZW06
aW5zcGVjdG9ySXRlbV07CiAgICAgICAgIFtpbnNwZWN0b3JJdGVtIHJlbGVhc2VdOwogICAgIH0K
KyAgICAvLyBTaG93IFpvb20gaWYgc3RhbmRhbG9uZSBzdmcgZG9jCisgICAgaWYgKGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpICYmCisgICAgICAgIGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+em9vbUVuYWJsZWQoKSkgeworICAgICAgICBpZiAoIW1lbnUpCisgICAgICAgICAg
ICBtZW51ID0gW1tbTlNNZW51IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAgIGVs
c2UgaWYgKFttZW51IG51bWJlck9mSXRlbXNdKQorICAgICAgICAgICAgW21lbnUgYWRkSXRlbTpb
TlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAgICAgIE5TTWVudUl0ZW0gKnpvb21Jbkl0
ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdOworICAgICAgICBbem9vbUluSXRlbSBzZXRB
Y3Rpb246QHNlbGVjdG9yKF96b29tSW5Eb2N1bWVudDopXTsKKyAgICAgICAgW3pvb21Jbkl0ZW0g
c2V0VGl0bGU6VUlfU1RSSU5HKCJab29tIEluIiwgIlpvb20gaW50byBTVkcgZG9jdW1lbnQiKV07
CisgICAgICAgIFttZW51IGFkZEl0ZW06em9vbUluSXRlbV07CisgICAgICAgIFt6b29tSW5JdGVt
IHJlbGVhc2VdOworCisgICAgICAgIE5TTWVudUl0ZW0gKnpvb21PdXRJdGVtID0gW1tOU01lbnVJ
dGVtIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3pvb21PdXRJdGVtIHNldEFjdGlvbjpAc2VsZWN0
b3IoX3pvb21PdXREb2N1bWVudDopXTsKKyAgICAgICAgW3pvb21PdXRJdGVtIHNldFRpdGxlOlVJ
X1NUUklORygiWm9vbSBPdXQiLCAiWm9vbSBvdXQgb2YgU1ZHIGRvY3VtZW50IildOworICAgICAg
ICBbbWVudSBhZGRJdGVtOnpvb21PdXRJdGVtXTsKKyAgICAgICAgW3pvb21PdXRJdGVtIHJlbGVh
c2VdOworCisgICAgICAgIE5TTWVudUl0ZW0gKnpvb21SZXNldEl0ZW0gPSBbW05TTWVudUl0ZW0g
YWxsb2NdIGluaXRdOworICAgICAgICBbem9vbVJlc2V0SXRlbSBzZXRBY3Rpb246QHNlbGVjdG9y
KF96b29tUmVzZXREb2N1bWVudDopXTsKKyAgICAgICAgW3pvb21SZXNldEl0ZW0gc2V0VGl0bGU6
VUlfU1RSSU5HKCJab29tIFJlc2V0IiwgIlJlc2V0IHpvb20gb2YgU1ZHIGRvY3VtZW50IildOwor
ICAgICAgICBbbWVudSBhZGRJdGVtOnpvb21SZXNldEl0ZW1dOworICAgICAgICBbem9vbVJlc2V0
SXRlbSByZWxlYXNlXTsKKyAgICB9CisKIAogICAgIHJldHVybiBtZW51OwogfQpJbmRleDogV2Vi
S2l0L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJW
aWV3Lm1tCShyZXZpc2lvbiAyMTQ4MSkKKysrIFdlYktpdC9XZWJWaWV3L1dlYlZpZXcubW0JKHdv
cmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRXhjZXB0aW9u
SGFuZGxlcnMuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUv
RnJhbWVMb2FkZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lVHJlZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MTmFtZXMuaD4KICNpbXBv
cnQgPFdlYkNvcmUvSGlzdG9yeUl0ZW0uaD4KQEAgLTExMyw2ICsxMTQsOSBAQAogI2ltcG9ydCA8
V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVGV4
dFJlbmRlcmVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVWaWV3Lmg+CisjaWYgRU5BQkxF
KFNWRykKKyNpbmNsdWRlIDxXZWJDb3JlL1NWR0RvY3VtZW50Lmg+CisjZW5kaWYKICNpbXBvcnQg
PFdlYktpdC9ET00uaD4KICNpbXBvcnQgPFdlYktpdC9ET01FeHRlbnNpb25zLmg+CiAjaW1wb3J0
IDxXZWJLaXQvRE9NUHJpdmF0ZS5oPgpAQCAtMjQ2MCw2ICsyNDY0LDMzIEBAIHN0YXRpYyBXZWJG
cmFtZSAqaW5jcmVtZW50RnJhbWUoV2ViRnJhbWUKICAgICByZXR1cm4gX3ByaXZhdGUtPmRyYXdz
QmFja2dyb3VuZDsKIH0KIAorLSAodm9pZClfem9vbUluRG9jdW1lbnQ6KGlkKXNlbmRlcgorewor
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIG1haW5GcmFtZV0pOworICAgIGlmICgh
Y29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+aXNTVkdEb2N1bWVudCgpKQorICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmluY1pv
b20oKTsKK30KKworLSAodm9pZClfem9vbU91dERvY3VtZW50OihpZClzZW5kZXIKK3sKKyAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBtYWluRnJhbWVdKTsKKyAgICBpZiAoIWNvcmVG
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlz
U1ZHRG9jdW1lbnQoKSkKKyAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWNab29tKCk7
Cit9CisKKy0gKHZvaWQpX3pvb21SZXNldERvY3VtZW50OihpZClzZW5kZXIKK3sKKyAgICBGcmFt
ZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBtYWluRnJhbWVdKTsKKyAgICBpZiAoIWNvcmVGcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKSkKKyAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5yZXNldFpvb20oKTsK
K30KKwogLSAodm9pZClfaW5zcGVjdEVsZW1lbnQ6KGlkKXNlbmRlcgogewogICAgIE5TRGljdGlv
bmFyeSAqZWxlbWVudCA9IFtzZW5kZXIgcmVwcmVzZW50ZWRPYmplY3RdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14579</attachid>
            <date>2007-05-16 01:24:05 -0700</date>
            <delta_ts>2007-05-19 12:09:54 -0700</delta_ts>
            <desc>Now should compile</desc>
            <filename>11272-3.diff</filename>
            <type>text/plain</type>
            <size>16756</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTUxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDctMDUtMTUgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJy
ZW50U2NhbGUoKSwgc2V0Q3VycmVudFNjYWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBT
VkdTVkdFbGVtZW50CisKKyAgICAgICAgQWxsb3cgem9vbWluZyBhbmQgcGFubmluZywgdGhlcmVi
eSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIG1ldGhvZHMuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjppbmNab29tKToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpkZWNab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpy
ZXNldFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Onpvb21FbmFibGVkKToKKyAg
ICAgICAgKiBrc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RG9jdW1lbnQ6OmluY1pvb20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OmRlY1pv
b20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6OnJlc2V0Wm9vbSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6em9vbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRG9jdW1lbnQ6OnVwZGF0ZVpvb20pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6
OnN0YXJ0UGFuKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50Ojp1cGRhdGVQYW4pOgor
ICAgICAgICAqIGtzdmcyL3N2Zy9TVkdEb2N1bWVudC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OlNWR1NW
R0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFNjYWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50VHJhbnNsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUpOgorICAgICAg
ICAqIGtzdmcyL3N2Zy9TVkdTVkdFbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFzZUV2ZW50KToK
KyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5oOgorCiAyMDA3LTA1LTE1ICBEYXZpZCBIeWF0
dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIEZyYW1lTG9hZGVyIHdyaXRlICI8
aHRtbD48Ym9keT4iIGluc3RlYWQgb2YganVzdCAiPGJvZHk+Ii4KSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNp
b24gMjE1MTApCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02
NDMsNiArNjQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExvd0JhbmR3aWR0aERpc3BsYXko
Ym9vbCBsb3dCYW5kV2lkdGgpIHsgbV9pbkxvd0JhbmR3aWR0aERpc3BsYXkgPSBsb3dCYW5kV2lk
dGg7IH0KICNlbmRpZiAgICAgCiAKKyAgICB2aXJ0dWFsIHZvaWQgaW5jWm9vbSgpIHt9CisgICAg
dmlydHVhbCB2b2lkIGRlY1pvb20oKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXNldFpvb20oKSB7
fQorICAgIHZpcnR1YWwgYm9vbCB6b29tRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZVNlbGVjdG9yKiBtX3N0eWxlU2VsZWN0b3I7CiAg
ICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiAyMTUxMCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
IE5pa29sYXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI2LDEwICsyNiwxMyBA
QAogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZH
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgorI2luY2x1ZGUgIlNWR1pvb21B
bmRQYW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw2ICs3Nyw1NiBAQCB2b2lk
IFNWR0RvY3VtZW50OjpkaXNwYXRjaFNjcm9sbEV2ZW50KCkKICAgICByb290RWxlbWVudCgpLT5k
aXNwYXRjaEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwogfQogCisjZGVmaW5lIFpPT01fRkFD
VE9SIDEuMgorCit2b2lkIFNWR0RvY3VtZW50OjppbmNab29tKCkKK3sKKyAgICBpZiAocm9vdEVs
ZW1lbnQoKSkKKyAgICAgICAgdXBkYXRlWm9vbShyb290RWxlbWVudCgpLT5jdXJyZW50U2NhbGUo
KSAqIFpPT01fRkFDVE9SKTsKK30KKwordm9pZCBTVkdEb2N1bWVudDo6ZGVjWm9vbSgpCit7Cisg
ICAgaWYgKHJvb3RFbGVtZW50KCkpCisgICAgICAgIHVwZGF0ZVpvb20ocm9vdEVsZW1lbnQoKS0+
Y3VycmVudFNjYWxlKCkgLyBaT09NX0ZBQ1RPUik7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnJl
c2V0Wm9vbSgpCit7CisgICAgaWYgKHJvb3RFbGVtZW50KCkpCisgICAgICAgIHVwZGF0ZVpvb20o
MS4wKTsKK30KKworYm9vbCBTVkdEb2N1bWVudDo6em9vbUVuYWJsZWQoKSBjb25zdAoreworICAg
IGlmIChyb290RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdEVsZW1lbnQoKS0+em9vbUFu
ZFBhbigpID09IFNWR1pvb21BbmRQYW46OlNWR19aT09NQU5EUEFOX01BR05JRlk7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnVwZGF0ZVpvb20oZmxvYXQgem9v
bVZhbHVlKQoreworICAgIHJvb3RFbGVtZW50KCktPnNldEN1cnJlbnRTY2FsZSh6b29tVmFsdWUp
OworICAgIGlmIChyZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7Cit9
CisKK3ZvaWQgU1ZHRG9jdW1lbnQ6OnN0YXJ0UGFuKGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0KQor
eworICAgIGlmIChyb290RWxlbWVudCgpKQorICAgICAgICBtX3RyYW5zbGF0ZSA9IEZsb2F0UG9p
bnQoc3RhcnQueCgpIC0gcm9vdEVsZW1lbnQoKS0+Y3VycmVudFRyYW5zbGF0ZSgpLngoKSwgcm9v
dEVsZW1lbnQoKS0+Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSArIHN0YXJ0LnkoKSk7Cit9CisKK3Zv
aWQgU1ZHRG9jdW1lbnQ6OnVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBwb3MpIGNvbnN0Cit7
CisgICAgaWYgKHJvb3RFbGVtZW50KCkpIHsKKyAgICAgICAgcm9vdEVsZW1lbnQoKS0+c2V0Q3Vy
cmVudFRyYW5zbGF0ZShGbG9hdFBvaW50KHBvcy54KCkgLSBtX3RyYW5zbGF0ZS54KCksIG1fdHJh
bnNsYXRlLnkoKSAtIHBvcy55KCkpKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgfQorfQorCiB9CiAKIC8vIHZpbTp0cz00
Om5vZXQKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAkocmV2aXNpb24gMjE1MTApCisrKyBX
ZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEs
NiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5u
IDx3aWxkZm94QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBv
ZiB0aGUgS0RFIHByb2plY3QKIApAQCAtMjUsMTIgKzI1LDEzIEBACiAjaWYgRU5BQkxFKFNWRykK
IAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKICAgICBjbGFz
cyBTVkdFbGVtZW50OwogICAgIGNsYXNzIFNWR1NWR0VsZW1lbnQ7Ci0gICAgY2xhc3MgRE9NSW1w
bGVtZW50YXRpb247CiAKICAgICBjbGFzcyBTVkdEb2N1bWVudCA6IHB1YmxpYyBEb2N1bWVudCB7
CiAgICAgcHVibGljOgpAQCAtNDUsNiArNDYsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICAKICAgICAgICAgdm9pZCBkaXNwYXRjaFpvb21FdmVudChmbG9hdCBwcmV2U2NhbGUsIGZs
b2F0IG5ld1NjYWxlKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaFNjcm9sbEV2ZW50KCk7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGluY1pvb20oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRlY1pv
b20oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJlc2V0Wm9vbSgpOworICAgICAgICB2aXJ0dWFs
IGJvb2wgem9vbUVuYWJsZWQoKSBjb25zdDsKKworICAgICAgICB2b2lkIHN0YXJ0UGFuKGNvbnN0
IEZsb2F0UG9pbnQmIHN0YXJ0KTsKKyAgICAgICAgdm9pZCB1cGRhdGVQYW4oY29uc3QgRmxvYXRQ
b2ludCYgcG9zKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgdXBkYXRlWm9v
bShmbG9hdCk7CisgICAgICAgIEZsb2F0UG9pbnQgbV90cmFuc2xhdGU7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIxNTEwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDcgQEAgU1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxl
bWVudChjb25zdCBRdWFsaQogICAgICwgbV9oZWlnaHQodGhpcywgTGVuZ3RoTW9kZUhlaWdodCkK
ICAgICAsIG1fdXNlQ3VycmVudFZpZXcoZmFsc2UpCiAgICAgLCBtX3RpbWVTY2hlZHVsZXIobmV3
IFRpbWVTY2hlZHVsZXIoZG9jKSkKKyAgICAsIG1fc2NhbGUoMS4wKQogewogICAgIHNldFdpZHRo
QmFzZVZhbHVlKFNWR0xlbmd0aCh0aGlzLCBMZW5ndGhNb2RlV2lkdGgsICIxMDAlIikpOwogICAg
IHNldEhlaWdodEJhc2VWYWx1ZShTVkdMZW5ndGgodGhpcywgTGVuZ3RoTW9kZUhlaWdodCwgIjEw
MCUiKSk7CkBAIC0xNTIsMTkgKzE1MywzNCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldFVzZUN1
cnJlbnRWaWV3KGJvCiAKIGZsb2F0IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRTY2FsZSgpIGNvbnN0
CiB7Ci0gICAgLy8gRklYTUU6IFJldHVybiB0aGUgY3VycmVudCB6b29tL3NjYWxlIHZhbHVlIChz
ZWUgYnVnIDExMjcyKQotICAgIHJldHVybiAxLjsKKyAgICByZXR1cm4gbV9zY2FsZTsKIH0KIAog
dm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiB7Ci0gICAg
Ly8gRklYTUU6IFNldCB0aGUgY3VycmVudCB6b29tL3NjYWxlIHZhbHVlIChzZWUgYnVnIDExMjcy
KQorICAgIG1fc2NhbGUgPSBzY2FsZTsKKyAgICBpZiAocmVuZGVyZXIoKSkgeworICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gbWF0OworICAgICAgICBtYXQuc2NhbGUobV9zY2FsZSk7CisgICAgICAg
IG1hdC50cmFuc2xhdGUobV90cmFuc2xhdGUueCgpLCBtX3RyYW5zbGF0ZS55KCkpOworICAgICAg
ICByZW5kZXJlcigpLT5zZXRMb2NhbFRyYW5zZm9ybShtYXQpOworICAgIH0KIH0KIAogRmxvYXRQ
b2ludCBTVkdTVkdFbGVtZW50OjpjdXJyZW50VHJhbnNsYXRlKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogUmV0dXJuIHRoZSBjdXJyZW50IHBhbi90cmFuc2xhdGUgdmFsdWUgKHNlZSBidWcgMTEy
NzIpCi0gICAgcmV0dXJuIEZsb2F0UG9pbnQoKTsKKyAgICByZXR1cm4gbV90cmFuc2xhdGU7Cit9
CisKK3ZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBv
aW50ICZ0cmFuc2xhdGUpCit7CisgICAgbV90cmFuc2xhdGUgPSB0cmFuc2xhdGU7CisgICAgaWYg
KHJlbmRlcmVyKCkpIHsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdDsKKyAgICAgICAgbWF0
LnNjYWxlKG1fc2NhbGUpOworICAgICAgICBtYXQudHJhbnNsYXRlKG1fdHJhbnNsYXRlLngoKSwg
bV90cmFuc2xhdGUueSgpKTsKKyAgICAgICAgcmVuZGVyZXIoKS0+c2V0TG9jYWxUcmFuc2Zvcm0o
bWF0KTsKKyAgICB9CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6YWRkU1ZHV2luZG93RXZlbnRM
aXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgQXR0cmlidXRlKiBh
dHRyKQpAQCAtMzcwLDEyICszODYsNiBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnJlbW92ZWRGcm9t
RG9jdW1lbnQoCiAgICAgU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1
bWVudCgpOwogfQogCi12b2lkIFNWR1NWR0VsZW1lbnQ6OnNldFpvb21BbmRQYW4odW5zaWduZWQg
c2hvcnQgem9vbUFuZFBhbikKLXsKLSAgICBTVkdab29tQW5kUGFuOjpzZXRab29tQW5kUGFuKHpv
b21BbmRQYW4pOwotICAgIC8vY2FudmFzVmlldygpLT5lbmFibGVab29tQW5kUGFuKHpvb21BbmRQ
YW4gPT0gU1ZHX1pPT01BTkRQQU5fTUFHTklGWSk7Ci19Ci0KIHZvaWQgU1ZHU1ZHRWxlbWVudDo6
cGF1c2VBbmltYXRpb25zKCkKIHsKICAgICBpZiAoIW1fdGltZVNjaGVkdWxlci0+YW5pbWF0aW9u
c1BhdXNlZCgpKQpJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkocmV2aXNpb24gMjE1
MTApCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBO
aWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAgICAgICAgICAgICAgICAg
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAgICAgICAgICAgICAg
ICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KIAogICAg
IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAogCkBAIC03Nyw2ICs3Nyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZvaWQgc2V0Q3VycmVudFNjYWxlKGZsb2F0IHNj
YWxlKTsKIAogICAgICAgICBGbG9hdFBvaW50IGN1cnJlbnRUcmFuc2xhdGUoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRDdXJyZW50VHJhbnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICAg
ICAgCiAgICAgICAgIFRpbWVTY2hlZHVsZXIqIHRpbWVTY2hlZHVsZXIoKSB7IHJldHVybiBtX3Rp
bWVTY2hlZHVsZXI7IH0KICAgICAgICAgCkBAIC0xMTksOSArMTIwLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUKICAgICAgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAKLSAgICAgICAgLy8gJ3Zp
cnR1YWwgU1ZHWm9vbUFuZFBhbiBmdW5jdGlvbnMKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFpv
b21BbmRQYW4odW5zaWduZWQgc2hvcnQgem9vbUFuZFBhbik7Ci0KICAgICAgICAgdmlydHVhbCB2
b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFs
c2UpOwogCiAgICAgcHJvdGVjdGVkOgpAQCAtMTQ0LDYgKzE0Miw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICAgICAgICAgYm9vbCBtX3VzZUN1cnJlbnRWaWV3OwogICAgICAgICBUaW1lU2NoZWR1
bGVyKiBtX3RpbWVTY2hlZHVsZXI7CisgICAgICAgIGZsb2F0IG1fc2NhbGU7CisgICAgICAgIEZs
b2F0UG9pbnQgbV90cmFuc2xhdGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDIxNTEwKQorKysgV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDcgQEAKIAogI2lm
IEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVudC5oIgorI2luY2x1ZGUgIlNW
R0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMu
aCIKICNlbmRpZgpAQCAtOTksNiArMTAwLDkgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIo
RnJhbWUqIGZyYW1lKQogICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVyZXIoMCkKICAgICAsIG1fbW91
c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwgbV9tb3VzZURvd25XYXNJblN1
YmZyYW1lKGZhbHNlKQorI2lmIEVOQUJMRShTVkcpCisgICAgLCBtX3N2Z1BhbihmYWxzZSkKKyNl
bmRpZgogICAgICwgbV9yZXNpemVMYXllcigwKQogICAgICwgbV9jYXB0dXJpbmdNb3VzZUV2ZW50
c05vZGUoMCkKICAgICAsIG1fY2xpY2tDb3VudCgwKQpAQCAtMjc2LDYgKzI4MCwxNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAgICAgaWYgKHBhc3NXaWRnZXRN
b3VzZURvd25FdmVudFRvV2lkZ2V0KGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50
KCkgJiYKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+em9vbUVuYWJsZWQoKSkgeworICAg
ICAgICBpZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgpICYmIHNpbmdsZUNsaWNrKSB7CisgICAg
ICAgICAgICBtX3N2Z1BhbiA9IHRydWU7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1
bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFydFBhbihldmVudC5ldmVudCgpLnBvcygp
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisK
ICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGF0IHRoZSBzdGFydCBvZiBtb3VzZSBkb3duIGhhbmRs
aW5nLAogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBkbyBpdCB1bnRpbCB3ZSBrbm93
IHdlIGRpZG4ndCBoaXQgYSB3aWRnZXQuCiAgICAgaWYgKHNpbmdsZUNsaWNrKQpAQCAtODg3LDEz
ICs5MDIsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KAogICAg
IGlmIChtX2hvdmVyVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV9ob3ZlclRpbWVyLnN0b3Ao
KTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1fc3ZnUGFuKSB7CisgICAgICAgIHN0YXRp
Y19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnVwZGF0ZVBhbihtX2N1
cnJlbnRNb3VzZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlm
CiAgICAgaWYgKG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQpCiAgICAgICAgIHJldHVybiBkaXNwYXRj
aE1vdXNlRXZlbnQobW91c2Vtb3ZlRXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCks
IGZhbHNlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CiAKICAgICAvLyBTZW5kIGV2ZW50cyByaWdo
dCB0byBhIHNjcm9sbGJhciBpZiB0aGUgbW91c2UgaXMgcHJlc3NlZC4KICAgICBpZiAobV9sYXN0
U2Nyb2xsYmFyVW5kZXJNb3VzZSAmJiBtX21vdXNlUHJlc3NlZCkKICAgICAgICAgcmV0dXJuIG1f
bGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPmhhbmRsZU1vdXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQp
OwotCiAgICAgLy8gVHJlYXQgbW91c2UgbW92ZSBldmVudHMgd2hpbGUgdGhlIG1vdXNlIGlzIHBy
ZXNzZWQgYXMgInJlYWQtb25seSIgaW4gcHJlcGFyZU1vdXNlRXZlbnQKICAgICAvLyBpZiB3ZSBh
cmUgYWxsb3dlZCB0byBzZWxlY3QuCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IDpob3ZlciBhbmQg
OmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRoZXkgd2VyZSBpbiB3aGVuIHRoZSBtb3VzZQpA
QCAtOTY3LDYgKzk4NywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNl
RXZlCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsKICAgICBtX2N1cnJlbnRNb3VzZVBvc2l0
aW9uID0gbW91c2VFdmVudC5wb3MoKTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1fc3Zn
UGFuKSB7CisgICAgICAgIG1fc3ZnUGFuID0gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQpCiAgICAgICAg
IHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2V1cEV2ZW50LCBtX2ZyYW1lU2V0QmVpbmdS
ZXNpemVkLmdldCgpLCB0cnVlLCBtX2NsaWNrQ291bnQsIG1vdXNlRXZlbnQsIGZhbHNlKTsKIApJ
bmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMjE1MTApCisrKyBXZWJDb3JlL3BhZ2UvRXZl
bnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2OCw2ICsyNjgsOSBAQCBwcml2YXRlOgog
ICAgIFJlbmRlck9iamVjdCogbV9hdXRvc2Nyb2xsUmVuZGVyZXI7CiAgICAgYm9vbCBtX21vdXNl
RG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBib29sIG1fbW91c2VEb3duV2FzSW5TdWJmcmFt
ZTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGJvb2wgbV9zdmdQYW47CisjZW5kaWYKIAogICAgIFJl
bmRlckxheWVyKiBtX3Jlc2l6ZUxheWVyOwogCkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNTEwKQorKysgV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDA3LTA1LTE1ICBSb2Ig
QnVpcyAgPGJ1aXNAa2RlLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI3
MgorICAgICAgICBJbXBsZW1lbnQgY3VycmVudFNjYWxlKCksIHNldEN1cnJlbnRTY2FsZSgpIGFu
ZCBjdXJyZW50VHJhbnNsYXRlKCkgaW4gU1ZHU1ZHRWxlbWVudAorCisgICAgICAgIFNldHVwIGNv
bnRleHQgbWVudSBlbnRyaWVzIGZvciB6b29taW5nIGFuZCBwZXJmb3JtIGFjdGlvbnMgb24gU1ZH
IGRvY3VtZW50IHdoZW4gZW5hYmxlZC4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxp
emFibGUuc3RyaW5nczoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJIVE1MVmlldyBtZW51Rm9yRXZlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF96b29tSW5Eb2N1bWVudDpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBfem9vbU91dERvY3VtZW50Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF96b29t
UmVzZXREb2N1bWVudDpdKToKKwogMjAwNy0wNS0xNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBhbmQgR2VvZmYuCkluZGV4OiBXZWJL
aXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MJKHJldmlzaW9uIDIxNTEwKQorKysg
V2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDYgKzEyNCwxNSBAQAogAC8AKgAgAEkAbgBzAHAAZQBjAHQAIABFAGwAZQBtAGUAbgB0
ACAAYwBvAG4AdABlAHgAdAAgAG0AZQBuAHUAIABpAHQAZQBtACAAKgAvAAogACIASQBuAHMAcABl
AGMAdAAgAEUAbABlAG0AZQBuAHQAIgAgAD0AIAAiAEkAbgBzAHAAZQBjAHQAIABFAGwAZQBtAGUA
bgB0ACIAOwAKIAAKKwAvACoAIABaAG8AbwBtACAASQBuACAAYwBvAG4AdABlAHgAdAAgAG0AZQBu
AHUAIABpAHQAZQBtACAAKgAvAAorACIAWgBvAG8AbQAgAEkAbgAiACAAPQAgACIAWgBvAG8AbQAg
AEkAbgAiADsACisACisALwAqACAAWgBvAG8AbQAgAE8AdQB0ACAAYwBvAG4AdABlAHgAdAAgAG0A
ZQBuAHUAIABpAHQAZQBtACAAKgAvAAorACIAWgBvAG8AbQAgAE8AdQB0ACIAIAA9ACAAIgBaAG8A
bwBtACAATwB1AHQAIgA7AAorAAorAC8AKgAgAFoAbwBvAG0AIABSAGUAcwBlAHQAIABjAG8AbgB0
AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBaAG8AbwBtACAAUgBlAHMAZQB0
ACIAIAA9ACAAIgBaAG8AbwBtACAAUgBlAHMAZQB0ACIAOwAKKwAKIAAvACoAIABJAHQAYQBsAGkA
YwAgAGMAbwBuAHQAZQB4AHQAIABtAGUAbgB1ACAAaQB0AGUAbQAgACoALwAKIAAiAEkAdABhAGwA
aQBjACIAIAA9ACAAIgBJAHQAYQBsAGkAYwAiADsACiAACkluZGV4OiBXZWJLaXQvV2ViVmlldy9X
ZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5t
bQkocmV2aXNpb24gMjE1MTApCisrKyBXZWJLaXQvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjUzNCw2ICsyNTM0LDMzIEBAIHN0YXRpYyBOU1VSTCogdW5pcXVlVVJM
V2l0aFJlbGF0aXZlUGFydCgKICAgICAgICAgW21lbnUgYWRkSXRlbTppbnNwZWN0b3JJdGVtXTsK
ICAgICAgICAgW2luc3BlY3Rvckl0ZW0gcmVsZWFzZV07CiAgICAgfQorI2lmIEVOQUJMRShTVkcp
CisgICAgLy8gU2hvdyBab29tIGlmIHN0YW5kYWxvbmUgc3ZnIGRvYworICAgIGlmIChjb3JlRnJh
bWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSAmJgorICAgICAgICBjb3JlRnJhbWUtPmRv
Y3VtZW50KCktPnpvb21FbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFtZW51KQorICAgICAgICAg
ICAgbWVudSA9IFtbW05TTWVudSBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBl
bHNlIGlmIChbbWVudSBudW1iZXJPZkl0ZW1zXSkKKyAgICAgICAgICAgIFttZW51IGFkZEl0ZW06
W05TTWVudUl0ZW0gc2VwYXJhdG9ySXRlbV1dOworICAgICAgICBOU01lbnVJdGVtICp6b29tSW5J
dGVtID0gW1tOU01lbnVJdGVtIGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3pvb21Jbkl0ZW0gc2V0
QWN0aW9uOkBzZWxlY3Rvcihfem9vbUluRG9jdW1lbnQ6KV07CisgICAgICAgIFt6b29tSW5JdGVt
IHNldFRpdGxlOlVJX1NUUklORygiWm9vbSBJbiIsICJab29tIGludG8gU1ZHIGRvY3VtZW50Iild
OworICAgICAgICBbbWVudSBhZGRJdGVtOnpvb21Jbkl0ZW1dOworICAgICAgICBbem9vbUluSXRl
bSByZWxlYXNlXTsKKworICAgICAgICBOU01lbnVJdGVtICp6b29tT3V0SXRlbSA9IFtbTlNNZW51
SXRlbSBhbGxvY10gaW5pdF07CisgICAgICAgIFt6b29tT3V0SXRlbSBzZXRBY3Rpb246QHNlbGVj
dG9yKF96b29tT3V0RG9jdW1lbnQ6KV07CisgICAgICAgIFt6b29tT3V0SXRlbSBzZXRUaXRsZTpV
SV9TVFJJTkcoIlpvb20gT3V0IiwgIlpvb20gb3V0IG9mIFNWRyBkb2N1bWVudCIpXTsKKyAgICAg
ICAgW21lbnUgYWRkSXRlbTp6b29tT3V0SXRlbV07CisgICAgICAgIFt6b29tT3V0SXRlbSByZWxl
YXNlXTsKKworICAgICAgICBOU01lbnVJdGVtICp6b29tUmVzZXRJdGVtID0gW1tOU01lbnVJdGVt
IGFsbG9jXSBpbml0XTsKKyAgICAgICAgW3pvb21SZXNldEl0ZW0gc2V0QWN0aW9uOkBzZWxlY3Rv
cihfem9vbVJlc2V0RG9jdW1lbnQ6KV07CisgICAgICAgIFt6b29tUmVzZXRJdGVtIHNldFRpdGxl
OlVJX1NUUklORygiWm9vbSBSZXNldCIsICJSZXNldCB6b29tIG9mIFNWRyBkb2N1bWVudCIpXTsK
KyAgICAgICAgW21lbnUgYWRkSXRlbTp6b29tUmVzZXRJdGVtXTsKKyAgICAgICAgW3pvb21SZXNl
dEl0ZW0gcmVsZWFzZV07CisgICAgfQorI2VuZGlmCiAKICAgICByZXR1cm4gbWVudTsKIH0KSW5k
ZXg6IFdlYktpdC9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjE1MTApCisrKyBXZWJLaXQvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw2ICs5OCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0V4
Y2VwdGlvbkhhbmRsZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CisjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZVRyZWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTE5hbWVzLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+CkBAIC0yNTI5LDYgKzI1MzAsMzMgQEAg
c3RhdGljIFdlYkZyYW1lICppbmNyZW1lbnRGcmFtZShXZWJGcmFtZQogICAgIHJldHVybiBfcHJp
dmF0ZS0+ZHJhd3NCYWNrZ3JvdW5kOwogfQogCistICh2b2lkKV96b29tSW5Eb2N1bWVudDooaWQp
c2VuZGVyCit7CisgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgbWFpbkZyYW1lXSk7
CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoY29yZUZyYW1l
LT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpCisgICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1l
bnQoKS0+aW5jWm9vbSgpOworfQorCistICh2b2lkKV96b29tT3V0RG9jdW1lbnQ6KGlkKXNlbmRl
cgoreworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIG1haW5GcmFtZV0pOworICAg
IGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKQorICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmRlY1pvb20oKTsKK30KKworLSAodm9pZClfem9vbVJlc2V0RG9jdW1lbnQ6KGlkKXNlbmRlcgor
eworICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIG1haW5GcmFtZV0pOworICAgIGlm
ICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1l
bnQoKS0+aXNTVkdEb2N1bWVudCgpKQorICAgICAgICBjb3JlRnJhbWUtPmRvY3VtZW50KCktPnJl
c2V0Wm9vbSgpOworfQorCiAtICh2b2lkKV9pbnNwZWN0RWxlbWVudDooaWQpc2VuZGVyCiB7CiAg
ICAgTlNEaWN0aW9uYXJ5ICplbGVtZW50ID0gW3NlbmRlciByZXByZXNlbnRlZE9iamVjdF07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14629</attachid>
            <date>2007-05-19 12:09:54 -0700</date>
            <delta_ts>2007-05-30 07:25:09 -0700</delta_ts>
            <desc>Using zoomFactor</desc>
            <filename>11272-4.diff</filename>
            <type>text/plain</type>
            <size>16004</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTYwMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDctMDUtMTkgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJy
ZW50U2NhbGUoKSwgc2V0Q3VycmVudFNjYWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBT
VkdTVkdFbGVtZW50CisKKyAgICAgICAgQWxsb3cgem9vbWluZyBhbmQgcGFubmluZywgdGhlcmVi
eSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIG1ldGhvZHMuCisKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6Onpvb21FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpzdGFydFBhbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6dXBkYXRlUGFuKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6
OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKwogMjAwNy0wNS0x
OSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE1pdHouCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
MTYwMCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI2LDEwICsyNiwxMyBAQAogCiAj
aW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZH
RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNWR1pvb21FdmVudC5oIgorI2luY2x1ZGUgIlNWR1pvb21BbmRQYW4u
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC03NCw2ICs3NywyOSBAQCB2b2lkIFNWR0Rv
Y3VtZW50OjpkaXNwYXRjaFNjcm9sbEV2ZW50KCkKICAgICByb290RWxlbWVudCgpLT5kaXNwYXRj
aEV2ZW50KGV2ZW50LnJlbGVhc2UoKSwgZWMpOwogfQogCitib29sIFNWR0RvY3VtZW50Ojp6b29t
RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgaWYgKHJvb3RFbGVtZW50KCkpCisgICAgICAgIHJldHVy
biByb290RWxlbWVudCgpLT56b29tQW5kUGFuKCkgPT0gU1ZHWm9vbUFuZFBhbjo6U1ZHX1pPT01B
TkRQQU5fTUFHTklGWTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTVkdEb2N1bWVu
dDo6c3RhcnRQYW4oY29uc3QgRmxvYXRQb2ludCYgc3RhcnQpCit7CisgICAgaWYgKHJvb3RFbGVt
ZW50KCkpCisgICAgICAgIG1fdHJhbnNsYXRlID0gRmxvYXRQb2ludChzdGFydC54KCkgLSByb290
RWxlbWVudCgpLT5jdXJyZW50VHJhbnNsYXRlKCkueCgpLCByb290RWxlbWVudCgpLT5jdXJyZW50
VHJhbnNsYXRlKCkueSgpICsgc3RhcnQueSgpKTsKK30KKwordm9pZCBTVkdEb2N1bWVudDo6dXBk
YXRlUGFuKGNvbnN0IEZsb2F0UG9pbnQmIHBvcykgY29uc3QKK3sKKyAgICBpZiAocm9vdEVsZW1l
bnQoKSkgeworICAgICAgICByb290RWxlbWVudCgpLT5zZXRDdXJyZW50VHJhbnNsYXRlKEZsb2F0
UG9pbnQocG9zLngoKSAtIG1fdHJhbnNsYXRlLngoKSwgbV90cmFuc2xhdGUueSgpIC0gcG9zLnko
KSkpOworICAgICAgICBpZiAocmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyKCktPnJl
cGFpbnQoKTsKKyAgICB9Cit9CisKIH0KIAogLy8gdmltOnRzPTQ6bm9ldApJbmRleDogV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2
Zy9TVkdEb2N1bWVudC5oCShyZXZpc2lvbiAyMTYwMCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NW
R0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICAgIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHdpbGRmb3hAa2RlLm9yZz4K
LSAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9y
Zz4KKyAgICAgICAgICAgICAgICAgIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1
aXNAa2RlLm9yZz4KIAogICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgcHJvamVjdAog
CkBAIC0yNSwxMiArMjUsMTMgQEAKICNpZiBFTkFCTEUoU1ZHKQogCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
ICAgIGNsYXNzIERPTUltcGxlbWVudGF0aW9uOwogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAgICAg
Y2xhc3MgU1ZHU1ZHRWxlbWVudDsKLSAgICBjbGFzcyBET01JbXBsZW1lbnRhdGlvbjsKIAogICAg
IGNsYXNzIFNWR0RvY3VtZW50IDogcHVibGljIERvY3VtZW50IHsKICAgICBwdWJsaWM6CkBAIC00
NSw2ICs0NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2b2lk
IGRpc3BhdGNoWm9vbUV2ZW50KGZsb2F0IHByZXZTY2FsZSwgZmxvYXQgbmV3U2NhbGUpOwogICAg
ICAgICB2b2lkIGRpc3BhdGNoU2Nyb2xsRXZlbnQoKTsKKworICAgICAgICB2aXJ0dWFsIGJvb2wg
em9vbUVuYWJsZWQoKSBjb25zdDsKKworICAgICAgICB2b2lkIHN0YXJ0UGFuKGNvbnN0IEZsb2F0
UG9pbnQmIHN0YXJ0KTsKKyAgICAgICAgdm9pZCB1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYg
cG9zKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZsb2F0UG9pbnQgbV90cmFuc2xh
dGU7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9rc3Zn
Mi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIxNjAwKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxOSArMTUyLDI1IEBAIHZv
aWQgU1ZHU1ZHRWxlbWVudDo6c2V0VXNlQ3VycmVudFZpZXcoYm8KIAogZmxvYXQgU1ZHU1ZHRWxl
bWVudDo6Y3VycmVudFNjYWxlKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogUmV0dXJuIHRoZSBj
dXJyZW50IHpvb20vc2NhbGUgdmFsdWUgKHNlZSBidWcgMTEyNzIpCi0gICAgcmV0dXJuIDEuOwor
ICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIHJldHVy
biBmbG9hdChkb2N1bWVudCgpLT5mcmFtZSgpLT56b29tRmFjdG9yKCkpIC8gMTAwLjsKKyAgICBy
ZXR1cm4gMS4wOwogfQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRTY2FsZShmbG9h
dCBzY2FsZSkKIHsKLSAgICAvLyBGSVhNRTogU2V0IHRoZSBjdXJyZW50IHpvb20vc2NhbGUgdmFs
dWUgKHNlZSBidWcgMTEyNzIpCisgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+ZnJh
bWUoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2V0Wm9vbUZhY3RvcihzY2FsZSAv
IDEwMC4pOwogfQogCiBGbG9hdFBvaW50IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUo
KSBjb25zdAogewotICAgIC8vIEZJWE1FOiBSZXR1cm4gdGhlIGN1cnJlbnQgcGFuL3RyYW5zbGF0
ZSB2YWx1ZSAoc2VlIGJ1ZyAxMTI3MikKLSAgICByZXR1cm4gRmxvYXRQb2ludCgpOworICAgIHJl
dHVybiBtX3RyYW5zbGF0ZTsKK30KKwordm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50VHJh
bnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQgJnRyYW5zbGF0ZSkKK3sKKyAgICBtX3RyYW5zbGF0ZSA9
IHRyYW5zbGF0ZTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50OjphZGRTVkdXaW5kb3dFdmVudExp
c3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBBdHRyaWJ1dGUqIGF0
dHIpCkBAIC0zNzAsMTIgKzM3Niw2IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCgKICAgICBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KCk7CiB9CiAKLXZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Wm9vbUFuZFBhbih1bnNpZ25lZCBz
aG9ydCB6b29tQW5kUGFuKQotewotICAgIFNWR1pvb21BbmRQYW46OnNldFpvb21BbmRQYW4oem9v
bUFuZFBhbik7Ci0gICAgLy9jYW52YXNWaWV3KCktPmVuYWJsZVpvb21BbmRQYW4oem9vbUFuZFBh
biA9PSBTVkdfWk9PTUFORFBBTl9NQUdOSUZZKTsKLX0KLQogdm9pZCBTVkdTVkdFbGVtZW50Ojpw
YXVzZUFuaW1hdGlvbnMoKQogewogICAgIGlmICghbV90aW1lU2NoZWR1bGVyLT5hbmltYXRpb25z
UGF1c2VkKCkpCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAyMTYw
MCkKKysrIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IE5p
a29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgotICAgICAgICAgICAgICAgICAg
MjAwNCwgMjAwNSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAg
ICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAg
VGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTc3LDYgKzc3LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgdm9pZCBzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2Nh
bGUpOwogCiAgICAgICAgIEZsb2F0UG9pbnQgY3VycmVudFRyYW5zbGF0ZSgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYpOwogICAgICAg
ICAKICAgICAgICAgVGltZVNjaGVkdWxlciogdGltZVNjaGVkdWxlcigpIHsgcmV0dXJuIG1fdGlt
ZVNjaGVkdWxlcjsgfQogICAgICAgICAKQEAgLTExOSw5ICsxMjAsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIAotICAgICAgICAvLyAndmly
dHVhbCBTVkdab29tQW5kUGFuIGZ1bmN0aW9ucwotICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0Wm9v
bUFuZFBhbih1bnNpZ25lZCBzaG9ydCB6b29tQW5kUGFuKTsKLQogICAgICAgICB2aXJ0dWFsIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxz
ZSk7CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC0xNDQsNiArMTQyLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKIAogICAgICAgICBib29sIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgICAgIFRpbWVTY2hlZHVs
ZXIqIG1fdGltZVNjaGVkdWxlcjsKKyAgICAgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKICAg
ICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAko
cmV2aXNpb24gMjE2MDApCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjEsNiArNjEsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJT
VkdDdXJzb3JFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJT
VkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2VuZGlmCkBAIC05OSw2ICsxMDAs
OSBAQCBFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcihGcmFtZSogZnJhbWUpCiAgICAgLCBtX2F1
dG9zY3JvbGxSZW5kZXJlcigwKQogICAgICwgbV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwo
ZmFsc2UpCiAgICAgLCBtX21vdXNlRG93bldhc0luU3ViZnJhbWUoZmFsc2UpCisjaWYgRU5BQkxF
KFNWRykKKyAgICAsIG1fc3ZnUGFuKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX3Jlc2l6ZUxheWVy
KDApCiAgICAgLCBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSgwKQogICAgICwgbV9jbGlja0Nv
dW50KDApCkBAIC0yNzYsNiArMjgwLDE3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3Vz
ZVByZXNzRXZlbnQKICAgICBpZiAocGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoZXZl
bnQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1f
ZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSAmJgorICAgICAgIHN0YXRpY19jYXN0
PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9jdW1lbnQoKSktPnpvb21FbmFibGVkKCkpIHsKKyAg
ICAgICAgaWYgKGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSAmJiBzaW5nbGVDbGljaykgeworICAg
ICAgICAgICAgbV9zdmdQYW4gPSB0cnVlOworICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U1ZHRG9j
dW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgpKS0+c3RhcnRQYW4oZXZlbnQuZXZlbnQoKS5wb3Mo
KSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
CiAgICAgLy8gV2UgZG9uJ3QgZG8gdGhpcyBhdCB0aGUgc3RhcnQgb2YgbW91c2UgZG93biBoYW5k
bGluZywKICAgICAvLyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gZG8gaXQgdW50aWwgd2Uga25v
dyB3ZSBkaWRuJ3QgaGl0IGEgd2lkZ2V0LgogICAgIGlmIChzaW5nbGVDbGljaykKQEAgLTg4Nywx
MyArOTAyLDE4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAg
ICBpZiAobV9ob3ZlclRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1faG92ZXJUaW1lci5zdG9w
KCk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z1BhbikgeworICAgICAgICBzdGF0
aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQYW4obV9j
dXJyZW50TW91c2VQb3NpdGlvbik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRp
ZgogICAgIGlmIChtX2ZyYW1lU2V0QmVpbmdSZXNpemVkKQogICAgICAgICByZXR1cm4gZGlzcGF0
Y2hNb3VzZUV2ZW50KG1vdXNlbW92ZUV2ZW50LCBtX2ZyYW1lU2V0QmVpbmdSZXNpemVkLmdldCgp
LCBmYWxzZSwgMCwgbW91c2VFdmVudCwgZmFsc2UpOwogCiAgICAgLy8gU2VuZCBldmVudHMgcmln
aHQgdG8gYSBzY3JvbGxiYXIgaWYgdGhlIG1vdXNlIGlzIHByZXNzZWQuCiAgICAgaWYgKG1fbGFz
dFNjcm9sbGJhclVuZGVyTW91c2UgJiYgbV9tb3VzZVByZXNzZWQpCiAgICAgICAgIHJldHVybiBt
X2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlLT5oYW5kbGVNb3VzZU1vdmVFdmVudChtb3VzZUV2ZW50
KTsKLQogICAgIC8vIFRyZWF0IG1vdXNlIG1vdmUgZXZlbnRzIHdoaWxlIHRoZSBtb3VzZSBpcyBw
cmVzc2VkIGFzICJyZWFkLW9ubHkiIGluIHByZXBhcmVNb3VzZUV2ZW50CiAgICAgLy8gaWYgd2Ug
YXJlIGFsbG93ZWQgdG8gc2VsZWN0LgogICAgIC8vIFRoaXMgbWVhbnMgdGhhdCA6aG92ZXIgYW5k
IDphY3RpdmUgZnJlZXplIGluIHRoZSBzdGF0ZSB0aGV5IHdlcmUgaW4gd2hlbiB0aGUgbW91c2UK
QEAgLTk2Nyw2ICs5ODcsMTMgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVsZWFz
ZUV2ZQogICAgIG1fbW91c2VQcmVzc2VkID0gZmFsc2U7CiAgICAgbV9jdXJyZW50TW91c2VQb3Np
dGlvbiA9IG1vdXNlRXZlbnQucG9zKCk7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2
Z1BhbikgeworICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtX2ZyYW1lU2V0QmVpbmdSZXNpemVkKQogICAgICAg
ICByZXR1cm4gZGlzcGF0Y2hNb3VzZUV2ZW50KG1vdXNldXBFdmVudCwgbV9mcmFtZVNldEJlaW5n
UmVzaXplZC5nZXQoKSwgdHJ1ZSwgbV9jbGlja0NvdW50LCBtb3VzZUV2ZW50LCBmYWxzZSk7CiAK
SW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDIxNjAwKQorKysgV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjgsNiArMjY4LDkgQEAgcHJpdmF0ZToK
ICAgICBSZW5kZXJPYmplY3QqIG1fYXV0b3Njcm9sbFJlbmRlcmVyOwogICAgIGJvb2wgbV9tb3Vz
ZURvd25NYXlTdGFydEF1dG9zY3JvbGw7CiAgICAgYm9vbCBtX21vdXNlRG93bldhc0luU3ViZnJh
bWU7CisjaWYgRU5BQkxFKFNWRykKKyAgICBib29sIG1fc3ZnUGFuOworI2VuZGlmCiAKICAgICBS
ZW5kZXJMYXllciogbV9yZXNpemVMYXllcjsKIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAyMTYwMCkK
KysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4MSw5ICs2ODEs
MTYgQEAgdm9pZCBGcmFtZTo6c2V0Wm9vbUZhY3RvcihpbnQgcGVyY2VudCkKICAgICAgIHJldHVy
bjsKIAogICBkLT5tX3pvb21GYWN0b3IgPSBwZXJjZW50OwotCi0gIGlmIChkLT5tX2RvYykKKyAg
aWYgKGQtPm1fZG9jKSB7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAoZC0+bV9kb2MtPmlzU1ZH
RG9jdW1lbnQoKSkgeworICAgICAgICAgaWYgKGQtPm1fZG9jLT5yZW5kZXJlcigpKQorICAgICAg
ICAgICAgIGQtPm1fZG9jLT5yZW5kZXJlcigpLT5yZXBhaW50KCk7CisgICAgICAgICByZXR1cm47
CisgICAgfQorI2VuZGlmCiAgICAgICBkLT5tX2RvYy0+cmVjYWxjU3R5bGUoTm9kZTo6Rm9yY2Up
OworICB9CiAKICAgZm9yIChGcmFtZSogY2hpbGQgPSB0cmVlKCktPmZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKICAgICAgIGNoaWxkLT5z
ZXRab29tRmFjdG9yKGQtPm1fem9vbUZhY3Rvcik7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdDb250YWluZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNWR0NvbnRhaW5lci5jcHAJKHJldmlzaW9uIDIxNjAwKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDYgKzExNywx
MiBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKICAgICBjYWxjSGVpZ2h0KCk7
CiAKICAgICBtX2Fic29sdXRlQm91bmRzID0gYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7
CisgICAgaWYgKCFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgICAgICBTVkdTVkdF
bGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCgpKTsKKyAg
ICAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bTsKKyAgICAgICAgbV93aWR0aCA9IGZsb2F0KG1fd2lk
dGgpICogc3ZnLT5jdXJyZW50U2NhbGUoKTsKKyAgICAgICAgbV9oZWlnaHQgPSBmbG9hdChtX2hl
aWdodCkgKiBzdmctPmN1cnJlbnRTY2FsZSgpOworICAgIH0KIAogICAgIGlmIChzZWxmTmVlZHNM
YXlvdXQoKSAmJiBjaGVja0ZvclJlcGFpbnQpCiAgICAgICAgIHJlcGFpbnRBZnRlckxheW91dElm
TmVlZGVkKG9sZEJvdW5kcywgb2xkT3V0bGluZUJveCk7CkBAIC0xNjgsNiArMTc0LDggQEAgdm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KFBhaW50SW5mbwogICAgICAgICAgICAgcGFpbnRJ
bmZvLnJlY3QubW92ZSgtb3JpZ2luLngoKSwgLW9yaWdpbi55KCkpOwogICAgICAgICB9CiAgICAg
ICAgIHBhcmVudFggPSBwYXJlbnRZID0gMDsKKyAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0g
c3RhdGljX2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgICAgIHBhaW50SW5m
by5jb250ZXh0LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkuc2NhbGUoc3ZnLT5jdXJyZW50
U2NhbGUoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE9ubHkgdGhlIHJvb3QgPHN2Zz4g
ZWxlbWVudCBzaG91bGQgbmVlZCBhbnkgdHJhbnNsYXRpb25zIHVzaW5nIHRoZSBIVE1ML0NTUyBz
eXN0ZW0KICAgICAgICAgLy8gcGFyZW50WCwgcGFyZW50WSBhcmUgYWxzbyBub24temVybyBmb3Ig
Zmlyc3QtbGV2ZWwga2lkcyBvZiB0aGVzZQpAQCAtMTgzLDkgKzE5MSwxMiBAQCB2b2lkIFJlbmRl
clNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJbmZvCiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRl
eHQtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0oKS50cmFuc2xhdGUodmlld3BvcnQoKS54KCks
IHZpZXdwb3J0KCkueSgpKSk7CiAgICAgfQotCiAgICAgaWYgKCFsb2NhbFRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKSkKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShsb2NhbFRy
YW5zZm9ybSgpKTsKKyAgICBpZiAoIXBhcmVudCgpLT5pc1NWR0NvbnRhaW5lcigpKSB7CisgICAg
ICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVt
ZW50KCkpOworICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5z
Zm9ybSgpLnRyYW5zbGF0ZShzdmctPmN1cnJlbnRUcmFuc2xhdGUoKS54KCksIHN2Zy0+Y3VycmVu
dFRyYW5zbGF0ZSgpLnkoKSkpOworICAgIH0KIAogICAgIEZsb2F0UmVjdCBzdHJva2VCQm94ID0g
cmVsYXRpdmVCQm94KHRydWUpOwogCkBAIC0zMzcsNiArMzQ4LDExIEBAIHZvaWQgUmVuZGVyU1ZH
Q29udGFpbmVyOjphYnNvbHV0ZVJlY3RzKFYKIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdDb250
YWluZXI6OmFic29sdXRlVHJhbnNmb3JtKCkgY29uc3QKIHsKICAgICBBZmZpbmVUcmFuc2Zvcm0g
Y3RtID0gUmVuZGVyQ29udGFpbmVyOjphYnNvbHV0ZVRyYW5zZm9ybSgpOworICAgIGlmICghcGFy
ZW50KCktPmlzU1ZHQ29udGFpbmVyKCkpIHsKKyAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0g
c3RhdGljX2Nhc3Q8U1ZHU1ZHRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgICAgIGN0bS5zY2Fs
ZShzdmctPmN1cnJlbnRTY2FsZSgpKTsKKyAgICAgICAgY3RtLnRyYW5zbGF0ZShzdmctPmN1cnJl
bnRUcmFuc2xhdGUoKS54KCksIHN2Zy0+Y3VycmVudFRyYW5zbGF0ZSgpLnkoKSk7CisgICAgfQog
ICAgIGN0bS50cmFuc2xhdGUodmlld3BvcnQoKS54KCksIHZpZXdwb3J0KCkueSgpKTsKICAgICBy
ZXR1cm4gdmlld3BvcnRUcmFuc2Zvcm0oKSAqIGN0bTsKIH0KSW5kZXg6IFdlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjE2MDApCisrKyBX
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDctMDUt
MTkgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJyZW50U2NhbGUoKSwgc2V0Q3VycmVudFNj
YWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBTVkdTVkdFbGVtZW50CisKKyAgICAgICAg
U2V0dXAgY29udGV4dCBtZW51IGVudHJpZXMgZm9yIHpvb21pbmcgYW5kIHBlcmZvcm0gYWN0aW9u
cyBvbiBTVkcgZG9jdW1lbnQgd2hlbiBlbmFibGVkLgorCisgICAgICAgICogRW5nbGlzaC5scHJv
ai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06
CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1lbnVGb3JFdmVudDpdKToKKwogMjAwNy0wNS0xOCAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNh
bS4KSW5kZXg6IFdlYktpdC9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNp
b24gMjE2MDApCisrKyBXZWJLaXQvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDEyIEBACiAALwAqACAASQBuAHMAcABlAGMAdAAg
AEUAbABlAG0AZQBuAHQAIABjAG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8A
CiAAIgBJAG4AcwBwAGUAYwB0ACAARQBsAGUAbQBlAG4AdAAiACAAPQAgACIASQBuAHMAcABlAGMA
dAAgAEUAbABlAG0AZQBuAHQAIgA7AAogAAorAC8AKgAgAFoAbwBvAG0AIABJAG4AIABjAG8AbgB0
AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBaAG8AbwBtACAASQBuACIAIAA9
ACAAIgBaAG8AbwBtACAASQBuACIAOwAKKwAKKwAvACoAIABaAG8AbwBtACAATwB1AHQAIABjAG8A
bgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACisAIgBaAG8AbwBtACAATwB1AHQA
IgAgAD0AIAAiAFoAbwBvAG0AIABPAHUAdAAiADsACisACiAALwAqACAASQB0AGEAbABpAGMAIABj
AG8AbgB0AGUAeAB0ACAAbQBlAG4AdQAgAGkAdABlAG0AIAAqAC8ACiAAIgBJAHQAYQBsAGkAYwAi
ACAAPQAgACIASQB0AGEAbABpAGMAIgA7AAogAApJbmRleDogV2ViS2l0L1dlYlZpZXcvV2ViSFRN
TFZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJl
dmlzaW9uIDIxNjAwKQorKysgV2ViS2l0L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTI1NjUsNiArMjU2NSwyNyBAQCBzdGF0aWMgTlNVUkwqIHVuaXF1ZVVSTFdpdGhS
ZWxhdGl2ZVBhcnQoCiAgICAgICAgIFttZW51IGFkZEl0ZW06aW5zcGVjdG9ySXRlbV07CiAgICAg
ICAgIFtpbnNwZWN0b3JJdGVtIHJlbGVhc2VdOwogICAgIH0KKyNpZiBFTkFCTEUoU1ZHKQorICAg
IC8vIFNob3cgWm9vbSBpZiBzdGFuZGFsb25lIHN2ZyBkb2MKKyAgICBpZiAoY29yZUZyYW1lLT5k
b2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpIHsgLy8mJgorICAgICAgICAvL2NvcmVGcmFtZS0+
ZG9jdW1lbnQoKS0+em9vbUVuYWJsZWQoKSkgeworICAgICAgICBpZiAoIW1lbnUpCisgICAgICAg
ICAgICBtZW51ID0gW1tbTlNNZW51IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgICAg
IGVsc2UgaWYgKFttZW51IG51bWJlck9mSXRlbXNdKQorICAgICAgICAgICAgW21lbnUgYWRkSXRl
bTpbTlNNZW51SXRlbSBzZXBhcmF0b3JJdGVtXV07CisgICAgICAgIE5TTWVudUl0ZW0gKnpvb21J
bkl0ZW0gPSBbW05TTWVudUl0ZW0gYWxsb2NdIGluaXRdOworICAgICAgICBbem9vbUluSXRlbSBz
ZXRBY3Rpb246QHNlbGVjdG9yKG1ha2VUZXh0TGFyZ2VyOildOworICAgICAgICBbem9vbUluSXRl
bSBzZXRUaXRsZTpVSV9TVFJJTkcoIlpvb20gSW4iLCAiWm9vbSBpbnRvIFNWRyBkb2N1bWVudCIp
XTsKKyAgICAgICAgW21lbnUgYWRkSXRlbTp6b29tSW5JdGVtXTsKKyAgICAgICAgW3pvb21Jbkl0
ZW0gcmVsZWFzZV07CisKKyAgICAgICAgTlNNZW51SXRlbSAqem9vbU91dEl0ZW0gPSBbW05TTWVu
dUl0ZW0gYWxsb2NdIGluaXRdOworICAgICAgICBbem9vbU91dEl0ZW0gc2V0QWN0aW9uOkBzZWxl
Y3RvcihtYWtlVGV4dFNtYWxsZXI6KV07CisgICAgICAgIFt6b29tT3V0SXRlbSBzZXRUaXRsZTpV
SV9TVFJJTkcoIlpvb20gT3V0IiwgIlpvb20gb3V0IG9mIFNWRyBkb2N1bWVudCIpXTsKKyAgICAg
ICAgW21lbnUgYWRkSXRlbTp6b29tT3V0SXRlbV07CisgICAgICAgIFt6b29tT3V0SXRlbSByZWxl
YXNlXTsKKyAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBtZW51OwogfQo=
</data>
<flag name="review"
          id="6002"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14782</attachid>
            <date>2007-05-30 07:25:09 -0700</date>
            <delta_ts>2007-05-30 08:35:26 -0700</delta_ts>
            <desc>Without the webkit changes</desc>
            <filename>11272-5.diff</filename>
            <type>text/plain</type>
            <size>13283</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTg5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDctMDUtMzAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJy
ZW50U2NhbGUoKSwgc2V0Q3VycmVudFNjYWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBT
VkdTVkdFbGVtZW50CisKKyAgICAgICAgQWxsb3cgem9vbWluZyBhbmQgcGFubmluZywgdGhlcmVi
eSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIG1ldGhvZHMuCisKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6Onpvb21FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpzdGFydFBhbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6dXBkYXRlUGFuKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6
OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKwogMjAwNy0wNS0z
MCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVzIGFm
dGVyIHIyMTg4OS4gIEFkZCBtaXNzaW5nICNpbmNsdWRlcy4KSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIxODkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0g
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApA
QCAtMjYsMTAgKzI2LDEzIEBACiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCisj
aW5jbHVkZSAiU1ZHWm9vbUFuZFBhbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0
LDYgKzc3LDI5IEBAIHZvaWQgU1ZHRG9jdW1lbnQ6OmRpc3BhdGNoU2Nyb2xsRXZlbnQoKQogICAg
IHJvb3RFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CiB9CiAK
K2Jvb2wgU1ZHRG9jdW1lbnQ6Onpvb21FbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAocm9vdEVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3RFbGVtZW50KCktPnpvb21BbmRQYW4oKSA9PSBT
Vkdab29tQW5kUGFuOjpTVkdfWk9PTUFORFBBTl9NQUdOSUZZOworCisgICAgcmV0dXJuIGZhbHNl
OworfQorCit2b2lkIFNWR0RvY3VtZW50OjpzdGFydFBhbihjb25zdCBGbG9hdFBvaW50JiBzdGFy
dCkKK3sKKyAgICBpZiAocm9vdEVsZW1lbnQoKSkKKyAgICAgICAgbV90cmFuc2xhdGUgPSBGbG9h
dFBvaW50KHN0YXJ0LngoKSAtIHJvb3RFbGVtZW50KCktPmN1cnJlbnRUcmFuc2xhdGUoKS54KCks
IHJvb3RFbGVtZW50KCktPmN1cnJlbnRUcmFuc2xhdGUoKS55KCkgKyBzdGFydC55KCkpOworfQor
Cit2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9zKSBjb25z
dAoreworICAgIGlmIChyb290RWxlbWVudCgpKSB7CisgICAgICAgIHJvb3RFbGVtZW50KCktPnNl
dEN1cnJlbnRUcmFuc2xhdGUoRmxvYXRQb2ludChwb3MueCgpIC0gbV90cmFuc2xhdGUueCgpLCBt
X3RyYW5zbGF0ZS55KCkgLSBwb3MueSgpKSk7CisgICAgICAgIGlmIChyZW5kZXJlcigpKQorICAg
ICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOworICAgIH0KK30KKwogfQogCiAvLyB2aW06
dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDIxODkzKQor
KysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2
ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMgWmltbWVy
bWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAw
NiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI1LDEyICsyNSwxMyBAQAogI2lmIEVOQUJMRShT
VkcpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb247CiAgICAg
Y2xhc3MgU1ZHRWxlbWVudDsKICAgICBjbGFzcyBTVkdTVkdFbGVtZW50OwotICAgIGNsYXNzIERP
TUltcGxlbWVudGF0aW9uOwogCiAgICAgY2xhc3MgU1ZHRG9jdW1lbnQgOiBwdWJsaWMgRG9jdW1l
bnQgewogICAgIHB1YmxpYzoKQEAgLTQ1LDYgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hab29tRXZlbnQoZmxvYXQgcHJldlNjYWxl
LCBmbG9hdCBuZXdTY2FsZSk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hTY3JvbGxFdmVudCgpOwor
CisgICAgICAgIHZpcnR1YWwgYm9vbCB6b29tRW5hYmxlZCgpIGNvbnN0OworCisgICAgICAgIHZv
aWQgc3RhcnRQYW4oY29uc3QgRmxvYXRQb2ludCYgc3RhcnQpOworICAgICAgICB2b2lkIHVwZGF0
ZVBhbihjb25zdCBGbG9hdFBvaW50JiBwb3MpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAg
ICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4OTMp
CisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTU4LDE5ICsxNTgsMjUgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRVc2VDdXJyZW50Vmll
dyhibwogCiBmbG9hdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUoKSBjb25zdAogewotICAg
IC8vIEZJWE1FOiBSZXR1cm4gdGhlIGN1cnJlbnQgem9vbS9zY2FsZSB2YWx1ZSAoc2VlIGJ1ZyAx
MTI3MikKLSAgICByZXR1cm4gMS47CisgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+
ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZsb2F0KGRvY3VtZW50KCktPmZyYW1lKCktPnpvb21G
YWN0b3IoKSkgLyAxMDAuOworICAgIHJldHVybiAxLjA7CiB9CiAKIHZvaWQgU1ZHU1ZHRWxlbWVu
dDo6c2V0Q3VycmVudFNjYWxlKGZsb2F0IHNjYWxlKQogewotICAgIC8vIEZJWE1FOiBTZXQgdGhl
IGN1cnJlbnQgem9vbS9zY2FsZSB2YWx1ZSAoc2VlIGJ1ZyAxMTI3MikKKyAgICBpZiAoZG9jdW1l
bnQoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICBkb2N1bWVudCgpLT5mcmFtZSgp
LT5zZXRab29tRmFjdG9yKHNjYWxlIC8gMTAwLik7CiB9CiAKIEZsb2F0UG9pbnQgU1ZHU1ZHRWxl
bWVudDo6Y3VycmVudFRyYW5zbGF0ZSgpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFJldHVybiB0
aGUgY3VycmVudCBwYW4vdHJhbnNsYXRlIHZhbHVlIChzZWUgYnVnIDExMjcyKQotICAgIHJldHVy
biBGbG9hdFBvaW50KCk7CisgICAgcmV0dXJuIG1fdHJhbnNsYXRlOworfQorCit2b2lkIFNWR1NW
R0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCAmdHJhbnNsYXRl
KQoreworICAgIG1fdHJhbnNsYXRlID0gdHJhbnNsYXRlOwogfQogCiB2b2lkIFNWR1NWR0VsZW1l
bnQ6OmFkZFNWR1dpbmRvd0V2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIGNvbnN0IEF0dHJpYnV0ZSogYXR0cikKQEAgLTM5OCwxMiArNDA0LDYgQEAgdm9pZCBTVkdT
VkdFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogICAgIFNWR1N0eWxlZExvY2F0YWJsZUVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KIAotdm9pZCBTVkdTVkdFbGVtZW50Ojpz
ZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4pCi17Ci0gICAgU1ZHWm9vbUFu
ZFBhbjo6c2V0Wm9vbUFuZFBhbih6b29tQW5kUGFuKTsKLSAgICAvL2NhbnZhc1ZpZXcoKS0+ZW5h
YmxlWm9vbUFuZFBhbih6b29tQW5kUGFuID09IFNWR19aT09NQU5EUEFOX01BR05JRlkpOwotfQot
CiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhdXNlQW5pbWF0aW9ucygpCiB7CiAgICAgaWYgKCFtX3Rp
bWVTY2hlZHVsZXItPmFuaW1hdGlvbnNQYXVzZWQoKSkKSW5kZXg6IFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdF
bGVtZW50LmgJKHJldmlzaW9uIDIxODkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHU1ZHRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQg
KEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtk
ZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlz
IDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2pl
Y3QKIApAQCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogICAgICAgICB2b2lkIHNl
dEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSk7CiAKICAgICAgICAgRmxvYXRQb2ludCBjdXJyZW50
VHJhbnNsYXRlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q3VycmVudFRyYW5zbGF0ZShjb25z
dCBGbG9hdFBvaW50Jik7CiAgICAgICAgIAogICAgICAgICBUaW1lU2NoZWR1bGVyKiB0aW1lU2No
ZWR1bGVyKCkgeyByZXR1cm4gbV90aW1lU2NoZWR1bGVyOyB9CiAgICAgICAgIApAQCAtMTE5LDkg
KzEyMCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVu
dCgpOwogCi0gICAgICAgIC8vICd2aXJ0dWFsIFNWR1pvb21BbmRQYW4gZnVuY3Rpb25zCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4p
OwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSosIGJv
b2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAogICAgIHByb3RlY3RlZDoKQEAgLTE0NCw2ICsx
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGJvb2wgbV91c2VDdXJyZW50Vmll
dzsKICAgICAgICAgVGltZVNjaGVkdWxlciogbV90aW1lU2NoZWR1bGVyOworICAgICAgICBGbG9h
dFBvaW50IG1fdHJhbnNsYXRlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lvbiAyMTg5MykKKysrIFdlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw3IEBACiAKICNpZiBF
TkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0N1cnNvckVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgi
CiAjZW5kaWYKQEAgLTk5LDYgKzEwMCw5IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZy
YW1lKiBmcmFtZSkKICAgICAsIG1fYXV0b3Njcm9sbFJlbmRlcmVyKDApCiAgICAgLCBtX21vdXNl
RG93bk1heVN0YXJ0QXV0b3Njcm9sbChmYWxzZSkKICAgICAsIG1fbW91c2VEb3duV2FzSW5TdWJm
cmFtZShmYWxzZSkKKyNpZiBFTkFCTEUoU1ZHKQorICAgICwgbV9zdmdQYW4oZmFsc2UpCisjZW5k
aWYKICAgICAsIG1fcmVzaXplTGF5ZXIoMCkKICAgICAsIG1fY2FwdHVyaW5nTW91c2VFdmVudHNO
b2RlKDApCiAgICAgLCBtX2NsaWNrQ291bnQoMCkKQEAgLTI3Niw2ICsyODAsMTcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudAogICAgIGlmIChwYXNzV2lkZ2V0TW91
c2VEb3duRXZlbnRUb1dpZGdldChldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisjaWYg
RU5BQkxFKFNWRykKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgp
ICYmCisgICAgICAgc3RhdGljX2Nhc3Q8U1ZHRG9jdW1lbnQqPihtX2ZyYW1lLT5kb2N1bWVudCgp
KS0+em9vbUVuYWJsZWQoKSkgeworICAgICAgICBpZiAoZXZlbnQuZXZlbnQoKS5zaGlmdEtleSgp
ICYmIHNpbmdsZUNsaWNrKSB7CisgICAgICAgICAgICBtX3N2Z1BhbiA9IHRydWU7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT5zdGFy
dFBhbihldmVudC5ldmVudCgpLnBvcygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAvLyBXZSBkb24ndCBkbyB0aGlzIGF0IHRoZSBz
dGFydCBvZiBtb3VzZSBkb3duIGhhbmRsaW5nLAogICAgIC8vIGJlY2F1c2Ugd2UgZG9uJ3Qgd2Fu
dCB0byBkbyBpdCB1bnRpbCB3ZSBrbm93IHdlIGRpZG4ndCBoaXQgYSB3aWRnZXQuCiAgICAgaWYg
KHNpbmdsZUNsaWNrKQpAQCAtODkyLDEzICs5MDcsMTggQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZU1vdXNlTW92ZUV2ZW50KAogICAgIGlmIChtX2hvdmVyVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgbV9ob3ZlclRpbWVyLnN0b3AoKTsKIAorI2lmIEVOQUJMRShTVkcpCisgICAgaWYgKG1f
c3ZnUGFuKSB7CisgICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4obV9mcmFtZS0+ZG9j
dW1lbnQoKSktPnVwZGF0ZVBhbihtX2N1cnJlbnRNb3VzZVBvc2l0aW9uKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQp
CiAgICAgICAgIHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2Vtb3ZlRXZlbnQsIG1fZnJh
bWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCksIGZhbHNlLCAwLCBtb3VzZUV2ZW50LCBmYWxzZSk7CiAK
ICAgICAvLyBTZW5kIGV2ZW50cyByaWdodCB0byBhIHNjcm9sbGJhciBpZiB0aGUgbW91c2UgaXMg
cHJlc3NlZC4KICAgICBpZiAobV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZSAmJiBtX21vdXNlUHJl
c3NlZCkKICAgICAgICAgcmV0dXJuIG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UtPmhhbmRsZU1v
dXNlTW92ZUV2ZW50KG1vdXNlRXZlbnQpOwotCiAgICAgLy8gVHJlYXQgbW91c2UgbW92ZSBldmVu
dHMgd2hpbGUgdGhlIG1vdXNlIGlzIHByZXNzZWQgYXMgInJlYWQtb25seSIgaW4gcHJlcGFyZU1v
dXNlRXZlbnQKICAgICAvLyBpZiB3ZSBhcmUgYWxsb3dlZCB0byBzZWxlY3QuCiAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IDpob3ZlciBhbmQgOmFjdGl2ZSBmcmVlemUgaW4gdGhlIHN0YXRlIHRoZXkg
d2VyZSBpbiB3aGVuIHRoZSBtb3VzZQpAQCAtOTcyLDYgKzk5MiwxMyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlCiAgICAgbV9tb3VzZVByZXNzZWQgPSBmYWxzZTsK
ICAgICBtX2N1cnJlbnRNb3VzZVBvc2l0aW9uID0gbW91c2VFdmVudC5wb3MoKTsKIAorI2lmIEVO
QUJMRShTVkcpCisgICAgaWYgKG1fc3ZnUGFuKSB7CisgICAgICAgIG1fc3ZnUGFuID0gZmFsc2U7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fZnJhbWVT
ZXRCZWluZ1Jlc2l6ZWQpCiAgICAgICAgIHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2V1
cEV2ZW50LCBtX2ZyYW1lU2V0QmVpbmdSZXNpemVkLmdldCgpLCB0cnVlLCBtX2NsaWNrQ291bnQs
IG1vdXNlRXZlbnQsIGZhbHNlKTsKIApJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2aXNpb24gMjE4
OTMpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
OCw2ICsyNjgsOSBAQCBwcml2YXRlOgogICAgIFJlbmRlck9iamVjdCogbV9hdXRvc2Nyb2xsUmVu
ZGVyZXI7CiAgICAgYm9vbCBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbDsKICAgICBib29s
IG1fbW91c2VEb3duV2FzSW5TdWJmcmFtZTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGJvb2wgbV9z
dmdQYW47CisjZW5kaWYKIAogICAgIFJlbmRlckxheWVyKiBtX3Jlc2l6ZUxheWVyOwogCkluZGV4
OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHJldmlzaW9uIDIxODkzKQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQxLDkgKzY0MSwxNiBAQCB2b2lkIEZyYW1lOjpzZXRab29tRmFjdG9yKGlu
dCBwZXJjZW50KQogICAgICAgcmV0dXJuOwogCiAgIGQtPm1fem9vbUZhY3RvciA9IHBlcmNlbnQ7
Ci0KLSAgaWYgKGQtPm1fZG9jKQorICBpZiAoZC0+bV9kb2MpIHsKKyNpZiBFTkFCTEUoU1ZHKQor
ICAgIGlmIChkLT5tX2RvYy0+aXNTVkdEb2N1bWVudCgpKSB7CisgICAgICAgICBpZiAoZC0+bV9k
b2MtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgZC0+bV9kb2MtPnJlbmRlcmVyKCktPnJlcGFp
bnQoKTsKKyAgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICAgIGQtPm1fZG9jLT5y
ZWNhbGNTdHlsZShOb2RlOjpGb3JjZSk7CisgIH0KIAogICBmb3IgKEZyYW1lKiBjaGlsZCA9IHRy
ZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2li
bGluZygpKQogICAgICAgY2hpbGQtPnNldFpvb21GYWN0b3IoZC0+bV96b29tRmFjdG9yKTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMjE4
OTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTcsNiArMTE3LDEyIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlv
dXQoKQogICAgIGNhbGNIZWlnaHQoKTsKIAogICAgIG1fYWJzb2x1dGVCb3VuZHMgPSBhYnNvbHV0
ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICBpZiAoIXBhcmVudCgpLT5pc1NWR0NvbnRhaW5l
cigpKSB7CisgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRpY19jYXN0PFNWR1NWR0Vs
ZW1lbnQqPihlbGVtZW50KCkpOworICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtOworICAgICAg
ICBtX3dpZHRoID0gZmxvYXQobV93aWR0aCkgKiBzdmctPmN1cnJlbnRTY2FsZSgpOworICAgICAg
ICBtX2hlaWdodCA9IGZsb2F0KG1faGVpZ2h0KSAqIHN2Zy0+Y3VycmVudFNjYWxlKCk7CisgICAg
fQogCiAgICAgaWYgKHNlbGZOZWVkc0xheW91dCgpICYmIGNoZWNrRm9yUmVwYWludCkKICAgICAg
ICAgcmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQob2xkQm91bmRzLCBvbGRPdXRsaW5lQm94KTsK
QEAgLTE2OCw2ICsxNzQsOCBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6cGFpbnQoUGFpbnRJ
bmZvCiAgICAgICAgICAgICBwYWludEluZm8ucmVjdC5tb3ZlKC1vcmlnaW4ueCgpLCAtb3JpZ2lu
LnkoKSk7CiAgICAgICAgIH0KICAgICAgICAgcGFyZW50WCA9IHBhcmVudFkgPSAwOworICAgICAg
ICBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVu
dCgpKTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zv
cm0oKS5zY2FsZShzdmctPmN1cnJlbnRTY2FsZSgpKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8gT25seSB0aGUgcm9vdCA8c3ZnPiBlbGVtZW50IHNob3VsZCBuZWVkIGFueSB0cmFuc2xhdGlv
bnMgdXNpbmcgdGhlIEhUTUwvQ1NTIHN5c3RlbQogICAgICAgICAvLyBwYXJlbnRYLCBwYXJlbnRZ
IGFyZSBhbHNvIG5vbi16ZXJvIGZvciBmaXJzdC1sZXZlbCBraWRzIG9mIHRoZXNlCkBAIC0xODMs
OSArMTkxLDEyIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KIAog
ICAgICAgICBwYWludEluZm8uY29udGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgpLnRy
YW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwgdmlld3BvcnQoKS55KCkpKTsKICAgICB9Ci0KICAgICBp
ZiAoIWxvY2FsVHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpKQogICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+Y29uY2F0Q1RNKGxvY2FsVHJhbnNmb3JtKCkpOworICAgIGlmICghcGFyZW50KCktPmlz
U1ZHQ29udGFpbmVyKCkpIHsKKyAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nh
c3Q8U1ZHU1ZHRWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgICAgIHBhaW50SW5mby5jb250ZXh0
LT5jb25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKHN2Zy0+Y3VycmVudFRyYW5z
bGF0ZSgpLngoKSwgc3ZnLT5jdXJyZW50VHJhbnNsYXRlKCkueSgpKSk7CisgICAgfQogCiAgICAg
RmxvYXRSZWN0IHN0cm9rZUJCb3ggPSByZWxhdGl2ZUJCb3godHJ1ZSk7CiAKQEAgLTM0MSw2ICsz
NTIsMTEgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmFic29sdXRlUmVjdHMoVgogQWZmaW5l
VHJhbnNmb3JtIFJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKSBjb25zdAog
ewogICAgIEFmZmluZVRyYW5zZm9ybSBjdG0gPSBSZW5kZXJDb250YWluZXI6OmFic29sdXRlVHJh
bnNmb3JtKCk7CisgICAgaWYgKCFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgICAg
ICBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVu
dCgpKTsKKyAgICAgICAgY3RtLnNjYWxlKHN2Zy0+Y3VycmVudFNjYWxlKCkpOworICAgICAgICBj
dG0udHJhbnNsYXRlKHN2Zy0+Y3VycmVudFRyYW5zbGF0ZSgpLngoKSwgc3ZnLT5jdXJyZW50VHJh
bnNsYXRlKCkueSgpKTsKKyAgICB9CiAgICAgY3RtLnRyYW5zbGF0ZSh2aWV3cG9ydCgpLngoKSwg
dmlld3BvcnQoKS55KCkpOwogICAgIHJldHVybiB2aWV3cG9ydFRyYW5zZm9ybSgpICogY3RtOwog
fQo=
</data>
<flag name="review"
          id="6098"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14784</attachid>
            <date>2007-05-30 08:35:26 -0700</date>
            <delta_ts>2007-05-30 09:18:04 -0700</delta_ts>
            <desc>Cleaning up</desc>
            <filename>11272-6.diff</filename>
            <type>text/plain</type>
            <size>12856</size>
            <attacher name="Rob Buis">rwlbuis</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTg5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDctMDUtMzAgIFJvYiBCdWlzICA8YnVpc0BrZGUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjcyCisgICAgICAgIEltcGxlbWVudCBjdXJy
ZW50U2NhbGUoKSwgc2V0Q3VycmVudFNjYWxlKCkgYW5kIGN1cnJlbnRUcmFuc2xhdGUoKSBpbiBT
VkdTVkdFbGVtZW50CisKKyAgICAgICAgQWxsb3cgem9vbWluZyBhbmQgcGFubmluZywgdGhlcmVi
eSBpbXBsZW1lbnRpbmcgdGhlIGFib3ZlIG1ldGhvZHMuCisKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnQ6Onpvb21FbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50OjpzdGFydFBhbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdEb2N1bWVudDo6dXBkYXRlUGFuKToKKyAgICAgICAgKiBrc3ZnMi9zdmcv
U1ZHRG9jdW1lbnQuaDoKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFNjYWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZSk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR1NWR0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZTo6c2V0Wm9vbUZhY3Rvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6
OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuaDoKKwogMjAwNy0wNS0z
MCAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVzIGFm
dGVyIHIyMTg4OS4gIEFkZCBtaXNzaW5nICNpbmNsdWRlcy4KSW5kZXg6IFdlYkNvcmUva3N2ZzIv
c3ZnL1NWR0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdE
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIxODkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDQsIDIwMDUgTmlrb2xhcyBaaW1tZXJtYW5uIDx3aWxkZm94QGtkZS5vcmc+Ci0g
ICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+
CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIHByb2plY3QKIApA
QCAtMjYsMTAgKzI2LDEzIEBACiAKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHWm9vbUV2ZW50LmgiCisj
aW5jbHVkZSAiU1ZHWm9vbUFuZFBhbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc0
LDYgKzc3LDI5IEBAIHZvaWQgU1ZHRG9jdW1lbnQ6OmRpc3BhdGNoU2Nyb2xsRXZlbnQoKQogICAg
IHJvb3RFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoZXZlbnQucmVsZWFzZSgpLCBlYyk7CiB9CiAK
K2Jvb2wgU1ZHRG9jdW1lbnQ6Onpvb21BbmRQYW5FbmFibGVkKCkgY29uc3QKK3sKKyAgICBpZiAo
cm9vdEVsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3RFbGVtZW50KCktPnpvb21BbmRQYW4o
KSA9PSBTVkdab29tQW5kUGFuOjpTVkdfWk9PTUFORFBBTl9NQUdOSUZZOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFNWR0RvY3VtZW50OjpzdGFydFBhbihjb25zdCBGbG9hdFBvaW50
JiBzdGFydCkKK3sKKyAgICBpZiAocm9vdEVsZW1lbnQoKSkKKyAgICAgICAgbV90cmFuc2xhdGUg
PSBGbG9hdFBvaW50KHN0YXJ0LngoKSAtIHJvb3RFbGVtZW50KCktPmN1cnJlbnRUcmFuc2xhdGUo
KS54KCksIHJvb3RFbGVtZW50KCktPmN1cnJlbnRUcmFuc2xhdGUoKS55KCkgKyBzdGFydC55KCkp
OworfQorCit2b2lkIFNWR0RvY3VtZW50Ojp1cGRhdGVQYW4oY29uc3QgRmxvYXRQb2ludCYgcG9z
KSBjb25zdAoreworICAgIGlmIChyb290RWxlbWVudCgpKSB7CisgICAgICAgIHJvb3RFbGVtZW50
KCktPnNldEN1cnJlbnRUcmFuc2xhdGUoRmxvYXRQb2ludChwb3MueCgpIC0gbV90cmFuc2xhdGUu
eCgpLCBtX3RyYW5zbGF0ZS55KCkgLSBwb3MueSgpKSk7CisgICAgICAgIGlmIChyZW5kZXJlcigp
KQorICAgICAgICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOworICAgIH0KK30KKwogfQogCiAv
LyB2aW06dHM9NDpub2V0CkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdEb2N1bWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RvY3VtZW50LmgJKHJldmlzaW9uIDIx
ODkzKQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IE5pa29sYXMg
WmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNCwgMjAw
NSwgMjAwNiBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICAgICAgICAgICAgICAgICAgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgogCiAgICAgVGhpcyBmaWxl
IGlzIHBhcnQgb2YgdGhlIEtERSBwcm9qZWN0CiAKQEAgLTI1LDEyICsyNSwxMyBAQAogI2lmIEVO
QUJMRShTVkcpCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisgICAgY2xhc3MgRE9NSW1wbGVtZW50YXRpb247
CiAgICAgY2xhc3MgU1ZHRWxlbWVudDsKICAgICBjbGFzcyBTVkdTVkdFbGVtZW50OwotICAgIGNs
YXNzIERPTUltcGxlbWVudGF0aW9uOwogCiAgICAgY2xhc3MgU1ZHRG9jdW1lbnQgOiBwdWJsaWMg
RG9jdW1lbnQgewogICAgIHB1YmxpYzoKQEAgLTQ1LDYgKzQ2LDE0IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgZGlzcGF0Y2hab29tRXZlbnQoZmxvYXQgcHJl
dlNjYWxlLCBmbG9hdCBuZXdTY2FsZSk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hTY3JvbGxFdmVu
dCgpOworCisgICAgICAgIHZpcnR1YWwgYm9vbCB6b29tQW5kUGFuRW5hYmxlZCgpIGNvbnN0Owor
CisgICAgICAgIHZvaWQgc3RhcnRQYW4oY29uc3QgRmxvYXRQb2ludCYgc3RhcnQpOworICAgICAg
ICB2b2lkIHVwZGF0ZVBhbihjb25zdCBGbG9hdFBvaW50JiBwb3MpIGNvbnN0OworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0ZTsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkocmV2
aXNpb24gMjE4OTMpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU4LDE5ICsxNTgsMjUgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRV
c2VDdXJyZW50VmlldyhibwogCiBmbG9hdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50U2NhbGUoKSBj
b25zdAogewotICAgIC8vIEZJWE1FOiBSZXR1cm4gdGhlIGN1cnJlbnQgem9vbS9zY2FsZSB2YWx1
ZSAoc2VlIGJ1ZyAxMTI3MikKLSAgICByZXR1cm4gMS47CisgICAgaWYgKGRvY3VtZW50KCkgJiYg
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50KCktPmZyYW1lKCkt
Pnpvb21GYWN0b3IoKSAvIDEwMC4wZjsKKyAgICByZXR1cm4gMS4wZjsKIH0KIAogdm9pZCBTVkdT
VkdFbGVtZW50OjpzZXRDdXJyZW50U2NhbGUoZmxvYXQgc2NhbGUpCiB7Ci0gICAgLy8gRklYTUU6
IFNldCB0aGUgY3VycmVudCB6b29tL3NjYWxlIHZhbHVlIChzZWUgYnVnIDExMjcyKQorICAgIGlm
IChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIGRvY3VtZW50KCkt
PmZyYW1lKCktPnNldFpvb21GYWN0b3Ioc2NhbGUgLyAxMDAuMGYpOwogfQogCiBGbG9hdFBvaW50
IFNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRUcmFuc2xhdGUoKSBjb25zdAogewotICAgIC8vIEZJWE1F
OiBSZXR1cm4gdGhlIGN1cnJlbnQgcGFuL3RyYW5zbGF0ZSB2YWx1ZSAoc2VlIGJ1ZyAxMTI3MikK
LSAgICByZXR1cm4gRmxvYXRQb2ludCgpOworICAgIHJldHVybiBtX3RyYW5zbGF0aW9uOworfQor
Cit2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2lu
dCAmdHJhbnNsYXRpb24pCit7CisgICAgbV90cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uOwogfQog
CiB2b2lkIFNWR1NWR0VsZW1lbnQ6OmFkZFNWR1dpbmRvd0V2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEF0dHJpYnV0ZSogYXR0cikKQEAgLTM5OCwxMiAr
NDA0LDYgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KAogICAgIFNW
R1N0eWxlZExvY2F0YWJsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KIAotdm9p
ZCBTVkdTVkdFbGVtZW50OjpzZXRab29tQW5kUGFuKHVuc2lnbmVkIHNob3J0IHpvb21BbmRQYW4p
Ci17Ci0gICAgU1ZHWm9vbUFuZFBhbjo6c2V0Wm9vbUFuZFBhbih6b29tQW5kUGFuKTsKLSAgICAv
L2NhbnZhc1ZpZXcoKS0+ZW5hYmxlWm9vbUFuZFBhbih6b29tQW5kUGFuID09IFNWR19aT09NQU5E
UEFOX01BR05JRlkpOwotfQotCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhdXNlQW5pbWF0aW9ucygp
CiB7CiAgICAgaWYgKCFtX3RpbWVTY2hlZHVsZXItPmFuaW1hdGlvbnNQYXVzZWQoKSkKSW5kZXg6
IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2tzdmcyL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDIxODkzKQorKysgV2ViQ29yZS9r
c3ZnMi9zdmcvU1ZHU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAog
LyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2
IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CisgICAgICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+CiAKICAgICBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgS0RFIHByb2plY3QKIApAQCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZQogICAgICAgICB2b2lkIHNldEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSk7CiAKICAgICAgICAg
RmxvYXRQb2ludCBjdXJyZW50VHJhbnNsYXRlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q3Vy
cmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50Jik7CiAgICAgICAgIAogICAgICAgICBUaW1l
U2NoZWR1bGVyKiB0aW1lU2NoZWR1bGVyKCkgeyByZXR1cm4gbV90aW1lU2NoZWR1bGVyOyB9CiAg
ICAgICAgIApAQCAtMTE5LDkgKzEyMCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogCi0gICAgICAgIC8vICd2aXJ0dWFsIFNWR1pvb21BbmRQ
YW4gZnVuY3Rpb25zCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRab29tQW5kUGFuKHVuc2lnbmVk
IHNob3J0IHpvb21BbmRQYW4pOwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFu
Z2VkKEF0dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKIAogICAgIHByb3Rl
Y3RlZDoKQEAgLTE0NCw2ICsxNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZQogCiAgICAgICAgIGJv
b2wgbV91c2VDdXJyZW50VmlldzsKICAgICAgICAgVGltZVNjaGVkdWxlciogbV90aW1lU2NoZWR1
bGVyOworICAgICAgICBGbG9hdFBvaW50IG1fdHJhbnNsYXRpb247CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDIxODkz
KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYx
LDYgKzYxLDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQ3Vyc29yRWxlbWVu
dC5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgpAQCAtOTksNiArMTAwLDkgQEAgRXZlbnRIYW5k
bGVyOjpFdmVudEhhbmRsZXIoRnJhbWUqIGZyYW1lKQogICAgICwgbV9hdXRvc2Nyb2xsUmVuZGVy
ZXIoMCkKICAgICAsIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKGZhbHNlKQogICAgICwg
bV9tb3VzZURvd25XYXNJblN1YmZyYW1lKGZhbHNlKQorI2lmIEVOQUJMRShTVkcpCisgICAgLCBt
X3N2Z1BhbihmYWxzZSkKKyNlbmRpZgogICAgICwgbV9yZXNpemVMYXllcigwKQogICAgICwgbV9j
YXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCkKICAgICAsIG1fY2xpY2tDb3VudCgwKQpAQCAtMjc2
LDYgKzI4MCwxNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50CiAg
ICAgaWYgKHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGV2ZW50KSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pc1NWR0RvY3VtZW50KCkgJiYKKyAgICAgICBzdGF0aWNfY2FzdDxTVkdEb2N1bWVudCo+
KG1fZnJhbWUtPmRvY3VtZW50KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKSB7CisgICAgICAgIGlm
IChldmVudC5ldmVudCgpLnNoaWZ0S2V5KCkgJiYgc2luZ2xlQ2xpY2spIHsKKyAgICAgICAgICAg
IG1fc3ZnUGFuID0gdHJ1ZTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PFNWR0RvY3VtZW50Kj4o
bV9mcmFtZS0+ZG9jdW1lbnQoKSktPnN0YXJ0UGFuKGV2ZW50LmV2ZW50KCkucG9zKCkpOworICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIC8v
IFdlIGRvbid0IGRvIHRoaXMgYXQgdGhlIHN0YXJ0IG9mIG1vdXNlIGRvd24gaGFuZGxpbmcsCiAg
ICAgLy8gYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGRvIGl0IHVudGlsIHdlIGtub3cgd2UgZGlk
bid0IGhpdCBhIHdpZGdldC4KICAgICBpZiAoc2luZ2xlQ2xpY2spCkBAIC04OTIsNiArOTA3LDEy
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZU1vdmVFdmVudCgKICAgICBpZiAobV9o
b3ZlclRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1faG92ZXJUaW1lci5zdG9wKCk7CiAKKyNp
ZiBFTkFCTEUoU1ZHKQorICAgIGlmIChtX3N2Z1BhbikgeworICAgICAgICBzdGF0aWNfY2FzdDxT
VkdEb2N1bWVudCo+KG1fZnJhbWUtPmRvY3VtZW50KCkpLT51cGRhdGVQYW4obV9jdXJyZW50TW91
c2VQb3NpdGlvbik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgogICAgIGlm
IChtX2ZyYW1lU2V0QmVpbmdSZXNpemVkKQogICAgICAgICByZXR1cm4gZGlzcGF0Y2hNb3VzZUV2
ZW50KG1vdXNlbW92ZUV2ZW50LCBtX2ZyYW1lU2V0QmVpbmdSZXNpemVkLmdldCgpLCBmYWxzZSwg
MCwgbW91c2VFdmVudCwgZmFsc2UpOwogCkBAIC05NzIsNiArOTkzLDEzIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpoYW5kbGVNb3VzZVJlbGVhc2VFdmUKICAgICBtX21vdXNlUHJlc3NlZCA9IGZhbHNl
OwogICAgIG1fY3VycmVudE1vdXNlUG9zaXRpb24gPSBtb3VzZUV2ZW50LnBvcygpOwogCisjaWYg
RU5BQkxFKFNWRykKKyAgICBpZiAobV9zdmdQYW4pIHsKKyAgICAgICAgbV9zdmdQYW4gPSBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAobV9mcmFt
ZVNldEJlaW5nUmVzaXplZCkKICAgICAgICAgcmV0dXJuIGRpc3BhdGNoTW91c2VFdmVudChtb3Vz
ZXVwRXZlbnQsIG1fZnJhbWVTZXRCZWluZ1Jlc2l6ZWQuZ2V0KCksIHRydWUsIG1fY2xpY2tDb3Vu
dCwgbW91c2VFdmVudCwgZmFsc2UpOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCShyZXZpc2lvbiAy
MTg5MykKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjY4LDYgKzI2OCw5IEBAIHByaXZhdGU6CiAgICAgUmVuZGVyT2JqZWN0KiBtX2F1dG9zY3JvbGxS
ZW5kZXJlcjsKICAgICBib29sIG1fbW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsOwogICAgIGJv
b2wgbV9tb3VzZURvd25XYXNJblN1YmZyYW1lOworI2lmIEVOQUJMRShTVkcpCisgICAgYm9vbCBt
X3N2Z1BhbjsKKyNlbmRpZgogCiAgICAgUmVuZGVyTGF5ZXIqIG1fcmVzaXplTGF5ZXI7CiAKSW5k
ZXg6IFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcAkocmV2aXNpb24gMjE4OTMpCisrKyBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NDEsOSArNjQxLDE2IEBAIHZvaWQgRnJhbWU6OnNldFpvb21GYWN0b3Io
aW50IHBlcmNlbnQpCiAgICAgICByZXR1cm47CiAKICAgZC0+bV96b29tRmFjdG9yID0gcGVyY2Vu
dDsKLQotICBpZiAoZC0+bV9kb2MpCisgIGlmIChkLT5tX2RvYykgeworI2lmIEVOQUJMRShTVkcp
CisgICAgaWYgKGQtPm1fZG9jLT5pc1NWR0RvY3VtZW50KCkpIHsKKyAgICAgICAgIGlmIChkLT5t
X2RvYy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICBkLT5tX2RvYy0+cmVuZGVyZXIoKS0+cmVw
YWludCgpOworICAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgICAgZC0+bV9kb2Mt
PnJlY2FsY1N0eWxlKE5vZGU6OkZvcmNlKTsKKyAgfQogCiAgIGZvciAoRnJhbWUqIGNoaWxkID0g
dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRT
aWJsaW5nKCkpCiAgICAgICBjaGlsZC0+c2V0Wm9vbUZhY3RvcihkLT5tX3pvb21GYWN0b3IpOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdDb250YWluZXIuY3BwCShyZXZpc2lvbiAy
MTg5MykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0NvbnRhaW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNyw2ICsxMTcsMTEgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6Omxh
eW91dCgpCiAgICAgY2FsY0hlaWdodCgpOwogCiAgICAgbV9hYnNvbHV0ZUJvdW5kcyA9IGFic29s
dXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpOworICAgIGlmICghcGFyZW50KCktPmlzU1ZHQ29udGFp
bmVyKCkpIHsKKyAgICAgICAgU1ZHU1ZHRWxlbWVudCogc3ZnID0gc3RhdGljX2Nhc3Q8U1ZHU1ZH
RWxlbWVudCo+KGVsZW1lbnQoKSk7CisgICAgICAgIG1fd2lkdGggPSBmbG9hdChtX3dpZHRoKSAq
IHN2Zy0+Y3VycmVudFNjYWxlKCk7CisgICAgICAgIG1faGVpZ2h0ID0gZmxvYXQobV9oZWlnaHQp
ICogc3ZnLT5jdXJyZW50U2NhbGUoKTsKKyAgICB9CiAKICAgICBpZiAoc2VsZk5lZWRzTGF5b3V0
KCkgJiYgY2hlY2tGb3JSZXBhaW50KQogICAgICAgICByZXBhaW50QWZ0ZXJMYXlvdXRJZk5lZWRl
ZChvbGRCb3VuZHMsIG9sZE91dGxpbmVCb3gpOwpAQCAtMTY4LDYgKzE3Myw4IEBAIHZvaWQgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpwYWludChQYWludEluZm8KICAgICAgICAgICAgIHBhaW50SW5mby5y
ZWN0Lm1vdmUoLW9yaWdpbi54KCksIC1vcmlnaW4ueSgpKTsKICAgICAgICAgfQogICAgICAgICBw
YXJlbnRYID0gcGFyZW50WSA9IDA7CisgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRp
Y19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkpOworICAgICAgICBwYWludEluZm8uY29u
dGV4dC0+Y29uY2F0Q1RNKEFmZmluZVRyYW5zZm9ybSgpLnNjYWxlKHN2Zy0+Y3VycmVudFNjYWxl
KCkpKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBPbmx5IHRoZSByb290IDxzdmc+IGVsZW1l
bnQgc2hvdWxkIG5lZWQgYW55IHRyYW5zbGF0aW9ucyB1c2luZyB0aGUgSFRNTC9DU1Mgc3lzdGVt
CiAgICAgICAgIC8vIHBhcmVudFgsIHBhcmVudFkgYXJlIGFsc28gbm9uLXplcm8gZm9yIGZpcnN0
LWxldmVsIGtpZHMgb2YgdGhlc2UKQEAgLTE4Myw5ICsxOTAsMTIgQEAgdm9pZCBSZW5kZXJTVkdD
b250YWluZXI6OnBhaW50KFBhaW50SW5mbwogCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5j
b25jYXRDVE0oQWZmaW5lVHJhbnNmb3JtKCkudHJhbnNsYXRlKHZpZXdwb3J0KCkueCgpLCB2aWV3
cG9ydCgpLnkoKSkpOwogICAgIH0KLQogICAgIGlmICghbG9jYWxUcmFuc2Zvcm0oKS5pc0lkZW50
aXR5KCkpCiAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT5jb25jYXRDVE0obG9jYWxUcmFuc2Zv
cm0oKSk7CisgICAgaWYgKCFwYXJlbnQoKS0+aXNTVkdDb250YWluZXIoKSkgeworICAgICAgICBT
VkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCgp
KTsKKyAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNvbmNhdENUTShBZmZpbmVUcmFuc2Zvcm0o
KS50cmFuc2xhdGUoc3ZnLT5jdXJyZW50VHJhbnNsYXRlKCkueCgpLCBzdmctPmN1cnJlbnRUcmFu
c2xhdGUoKS55KCkpKTsKKyAgICB9CiAKICAgICBGbG9hdFJlY3Qgc3Ryb2tlQkJveCA9IHJlbGF0
aXZlQkJveCh0cnVlKTsKIApAQCAtMzQxLDYgKzM1MSwxMSBAQCB2b2lkIFJlbmRlclNWR0NvbnRh
aW5lcjo6YWJzb2x1dGVSZWN0cyhWCiBBZmZpbmVUcmFuc2Zvcm0gUmVuZGVyU1ZHQ29udGFpbmVy
OjphYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0CiB7CiAgICAgQWZmaW5lVHJhbnNmb3JtIGN0bSA9
IFJlbmRlckNvbnRhaW5lcjo6YWJzb2x1dGVUcmFuc2Zvcm0oKTsKKyAgICBpZiAoIXBhcmVudCgp
LT5pc1NWR0NvbnRhaW5lcigpKSB7CisgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRp
Y19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KCkpOworICAgICAgICBjdG0uc2NhbGUoc3Zn
LT5jdXJyZW50U2NhbGUoKSk7CisgICAgICAgIGN0bS50cmFuc2xhdGUoc3ZnLT5jdXJyZW50VHJh
bnNsYXRlKCkueCgpLCBzdmctPmN1cnJlbnRUcmFuc2xhdGUoKS55KCkpOworICAgIH0KICAgICBj
dG0udHJhbnNsYXRlKHZpZXdwb3J0KCkueCgpLCB2aWV3cG9ydCgpLnkoKSk7CiAgICAgcmV0dXJu
IHZpZXdwb3J0VHJhbnNmb3JtKCkgKiBjdG07CiB9Cg==
</data>
<flag name="review"
          id="6100"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>