<?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>79705</bug_id>
          
          <creation_ts>2012-02-27 14:44:00 -0800</creation_ts>
          <short_desc>didNewFirstVisuallyNonEmptyLayout should be enhanced to look at size instead of a raw tally</short_desc>
          <delta_ts>2012-02-29 15:10:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565988</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-27 14:44:00 -0800</bug_when>
    <thetext>didNewFirstVisuallyNonEmptyLayout currently works just by tallying relevant replanted objects until they reach a certain threshold. Instead, we should look at the size of the repainted objects, and we should also consider objects that are relevant but unpainted (such as images that are still loading)

&lt;rdar://problem/10821314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566004</commentid>
    <comment_count>1</comment_count>
      <attachid>129106</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-27 15:07:03 -0800</bug_when>
    <thetext>Created attachment 129106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566085</commentid>
    <comment_count>2</comment_count>
      <attachid>129106</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 16:25:04 -0800</bug_when>
    <thetext>Comment on attachment 129106
Patch

Attachment 129106 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11643251

New failing tests:
fast/gradients/generated-gradients.html
fast/canvas/webgl/css-webkit-canvas.html
fast/canvas/canvas-as-image.html
fast/canvas/webgl/css-webkit-canvas-repaint.html
fast/canvas/canvas-as-image-incremental-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566095</commentid>
    <comment_count>3</comment_count>
      <attachid>129125</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-27 16:33:56 -0800</bug_when>
    <thetext>Created attachment 129125
Attempt to fix tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566324</commentid>
    <comment_count>4</comment_count>
      <attachid>129125</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-27 20:24:38 -0800</bug_when>
    <thetext>Comment on attachment 129125
Attempt to fix tests

Attachment 129125 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11640424

New failing tests:
fast/gradients/generated-gradients.html
fast/canvas/webgl/css-webkit-canvas.html
fast/canvas/canvas-as-image.html
fast/canvas/webgl/css-webkit-canvas-repaint.html
fast/canvas/canvas-as-image-incremental-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566912</commentid>
    <comment_count>5</comment_count>
      <attachid>129125</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-02-28 11:29:22 -0800</bug_when>
    <thetext>Comment on attachment 129125
Attempt to fix tests

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

Looks mostly ok. My one high level objection is that I don&apos;t like putting stuff in the line box list class.

&gt; Source/WebCore/page/Page.h:427
&gt; +        int m_relevantPaintedArea;
&gt; +        int m_relevantUnpaintedArea;

These can be unsigned right?

&gt; Source/WebCore/rendering/InlineTextBox.cpp:499
&gt; +    root()-&gt;rendererLineBoxes()-&gt;addRelevantRepaintedInlineBox(this, IntRect(adjustedPaintOffset.x(), adjustedPaintOffset.y(), logicalWidth(), logicalHeight()));

I don&apos;t really get why you don&apos;t just put the function right in InlineTextBox. Why is it over in the line box list?

&gt; Source/WebCore/rendering/RenderLineBoxList.cpp:276
&gt; +    if (m_relevantPaintedArea) {
&gt; +        if (Frame* frame = renderer-&gt;frame()) {
&gt; +            if (Page* page = frame-&gt;page()) {
&gt; +                page-&gt;addRelevantRepaintedObject(renderer, m_relevantPaintedArea);
&gt; +                // m_relevantPaintedArea can be re-set once it&apos;s been reported to the Page.
&gt; +                m_relevantPaintedArea = 0;
&gt; +            }
&gt; +        }
&gt; +    }

Feels weird that this is here...

&gt; Source/WebCore/rendering/RenderLineBoxList.cpp:428
&gt; +void RenderLineBoxList::addRelevantRepaintedInlineBox(InlineBox* box, const IntRect&amp; lineBoxPaintRect)
&gt; +{
&gt; +    RenderObject* renderer = box-&gt;renderer();
&gt; +    if (!renderer)
&gt; +        return;
&gt; +
&gt; +    // If the Page is not currently counting repainted objects, then we shouldn&apos;t either.
&gt; +    if (Frame* frame = renderer-&gt;frame()) {
&gt; +        if (Page* page = frame-&gt;page()) {
&gt; +            if (!page-&gt;isCountingRelevantRepaintedObjects())
&gt; +                return;
&gt; +        }
&gt; +    }
&gt; +
&gt; +    // InlineBoxes are only relevant if they are being painted within the viewRect().
&gt; +    if (RenderView* view = renderer-&gt;view()) {
&gt; +        if (!lineBoxPaintRect.intersects(pixelSnappedIntRect(view-&gt;viewRect())))
&gt; +            return;
&gt; +    }
&gt; +
&gt; +    m_relevantPaintedArea += (lineBoxPaintRect.width() * lineBoxPaintRect.height());
&gt; +}
&gt; +

Can&apos;t this just be over in InlineTextBox?

&gt; Source/WebCore/rendering/RenderLineBoxList.h:42
&gt; +        , m_relevantPaintedArea(0)

I don&apos;t think the line box list is the appropriate place to track this sort of thing.

&gt; Source/WebCore/rendering/RenderRegion.cpp:145
&gt; +    if (!m_flowThread || !isValid()) {
&gt; +        if (Frame* frame = this-&gt;frame()) {
&gt; +            if (Page* page = frame-&gt;page())
&gt; +                page-&gt;addRelevantUnpaintedObject(this, visualOverflowRect());
&gt; +        }
&gt;          return;
&gt; +    }

Don&apos;t patch RenderRegion. Its contents will paint and be tracked on their own.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566950</commentid>
    <comment_count>6</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-28 12:02:58 -0800</bug_when>
    <thetext>Working on  a patch to address hyatt&apos;s comments now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567190</commentid>
    <comment_count>7</comment_count>
      <attachid>129347</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-28 16:02:37 -0800</bug_when>
    <thetext>Created attachment 129347
Patch that uses Regions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567296</commentid>
    <comment_count>8</comment_count>
      <attachid>129347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 18:05:32 -0800</bug_when>
    <thetext>Comment on attachment 129347
Patch that uses Regions

Attachment 129347 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11703024

New failing tests:
fast/gradients/generated-gradients.html
fast/canvas/webgl/css-webkit-canvas.html
fast/canvas/canvas-as-image.html
fast/canvas/webgl/css-webkit-canvas-repaint.html
fast/canvas/canvas-as-image-incremental-repaint.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567764</commentid>
    <comment_count>9</comment_count>
      <attachid>129347</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-02-29 11:19:32 -0800</bug_when>
    <thetext>Comment on attachment 129347
Patch that uses Regions

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

Let&apos;s limit the adding of unpainted and repainted objects to the foreground paint phase. Otherwise this is going to be called too much.

There seems to be an issue with unpainted objects that overlap with other unpainted objects. It looks like when an unpainted object becomes painted, you subtract out the object from the unpainted area. However by doing so you could run into a paint order issue where a previous unpainted object had added itself already. So for example you have unpainted object A and unpainted object B that use the same area. B is ready and so it removes itself from the unpainted region, but if it does so after A painted, then you now mistakenly believe the area consumed by A is ready.

The easy way to fix the above issue is to stop tracking changes to unpainted objects and trying to preserve state across multiple paints. You should simply be clearing the regions on every paint. Just start over every time. Then you&apos;re never looking at &quot;mutations.&quot; Every paint just computes the regions from scratch all over again, and so your data will always be correct.

&gt; Source/WebCore/page/Page.cpp:1061
&gt; +// FIXME: We should potentially move this to Region.h if we think it would be valuable elsewhere.
&gt; +static int totalAreaForRegion(Region region)
&gt; +{
&gt; +    Vector&lt;IntRect&gt; rects = region.rects();
&gt; +    size_t size = rects.size();
&gt; +    int totalArea = 0;
&gt; +
&gt; +    for (size_t i = 0; i &lt; size; ++i) {
&gt; +        IntRect rect = rects[i];
&gt; +        totalArea += (rect.width() * rect.height());
&gt; +    }
&gt; +
&gt; +    return totalArea;
&gt; +}

Put it on region! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567888</commentid>
    <comment_count>10</comment_count>
      <attachid>129510</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-29 13:41:50 -0800</bug_when>
    <thetext>Created attachment 129510
Patch that addresses some comments

This patch moves the totalArea function into the Region class and also only does any adding/removing of relevant objects during the foreground paint phase. I did not address Hyatt&apos;s concern about overlapping objects. We think it will be uncommon for replaced elements to overlap on a page, and we fear that Hyatt&apos;s solution of doing a fake paint could have a negative performance impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567976</commentid>
    <comment_count>11</comment_count>
      <attachid>129510</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2012-02-29 14:51:48 -0800</bug_when>
    <thetext>Comment on attachment 129510
Patch that addresses some comments

Make totalArea() return an unsigned.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567987</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-02-29 15:10:33 -0800</bug_when>
    <thetext>Committed change with http://trac.webkit.org/changeset/109273</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129106</attachid>
            <date>2012-02-27 15:07:03 -0800</date>
            <delta_ts>2012-02-27 16:33:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>for-review.txt</filename>
            <type>text/plain</type>
            <size>22325</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAyLTI3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MDUKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHNob3VsZCBiZSBlbmhhbmNlZCB0byBsb29rIGF0IHNpemUgaW5zdGVhZCAKKyAg
ICAgICAgb2YgYSByYXcgdGFsbHkKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4MjEzMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBmaXJpbmcgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgd2hlbiBhIHJhdyB0YWxseSBvZiAKKyAgICAgICAgcmVsZXZhbnQg
cGFpbnRlZCBvYmplY3RzIGhhcyByZWFjaGVkIGEgcG9ydC1kZWZpbmVkIHRocmVzaG9sZCwgdGhp
cyBwYXRjaCAKKyAgICAgICAgbG9va3MgYXQgdGhlIHNpemUgb2YgdGhvc2Ugb2JqZWN0cyB3aXRo
IHJlc3BlY3QgdG8gdGhlIHZpZXcgYXJlYS4gVGhlIHBhdGNoIAorICAgICAgICBhbHNvIGxvb2tz
IGF0IHJlbGV2YW50IG9iamVjdHMgdGhhdCBjYW5ub3QgeWV0IGJlIGZ1bGx5IHBhaW50ZWQsIHN1
Y2ggYXMgCisgICAgICAgIGluY3JlbWVudGFsbHkgbGVhZGluZyBpbWFnZXMuIAorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNDb3VudGluZ1JlbGV2YW50UmVw
YWludGVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdGFydENvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2
YW50UmVwYWludGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50
VW5wYWludGVkT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2Up
OgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZyb20gSW5saW5lQm94IHNpbmNlIHdlIHJlYWxseSBv
bmx5IElubGluZVRleHRCb3ggaXMgcmVhbGx5IHRoZSAKKyAgICAgICAgb25seSByZWxldmFudCBJ
bmxpbmVCb3guLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lQm94OjpwYWludCk6CisKKyAgICAgICAgTWFueSBJbmxpbmVUZXh0Qm94
ZXMgY2FuIHNoYXJlIGEgUmVuZGVyT2JqZWN0LCBzbyB0aGV5IHJlcG9ydCB0aGVpciBzaXplcyB0
byAKKyAgICAgICAgdGhlIFJlbmRlckxpbmVCb3hMaXN0LiBSZW5kZXJMaW5lQm94TGlzdCBrZWVw
cyBhIHRhbGx5IG9mIHRoZSByZWxldmFudCAKKyAgICAgICAgcGFpbnRlZCBsaW5lIGJveCBhcmVh
LCBhbmQgcmVwb3J0cyB0aGF0IHRhbGx5IHRvIFBhZ2UgYWZ0ZXIgcGFpbnRpbmcgYWxsIG9mIAor
ICAgICAgICB0aGUgYm94ZXMgaW4gUmVuZGVyTGluZUJveExpc3Q6OnBhaW50KCkuIAorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjphZGRSZWxldmFudFJlcGFpbnRlZElubGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpSZW5kZXJM
aW5lQm94TGlzdCk6CisgICAgICAgIChSZW5kZXJMaW5lQm94TGlzdCk6CisKKyAgICAgICAgQWxs
IG9mIHRoZXNlIG90aGVyIGNhbGxlcnMgc2VuZCB0aGVpciB2aXN1YWxPdmVyZmxvd1JlY3QgaW5z
dGVhZCBvZiB0aGUgCisgICAgICAgIHBhaW50SW5mbydzIHBhaW50UmVjdCwgYW5kIHRoZXkgY2Fs
bCBhZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCB3aGVuIAorICAgICAgICBhcHByb3ByaWF0ZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2Fu
dmFzOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VmlkZW86OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2Vk
KToKKwogMjAxMi0wMi0yNyAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBzdGF0aWMgY29tcHJlc3Npb24gY3VydmUgcGFyYW1ldGVycyBmb3Ig
RHluYW1pY3NDb21wcmVzc29yTm9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAx
MDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEsNiArMTYxLDggQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRp
ZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyAgICAsIG1fcmVsZXZhbnRQYWludGVkQXJlYSgwKQor
ICAgICwgbV9yZWxldmFudFVucGFpbnRlZEFyZWEoMCkKICAgICAsIG1faXNDb3VudGluZ1JlbGV2
YW50UmVwYWludGVkT2JqZWN0cyhmYWxzZSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CkBAIC0x
MDA5LDI4ICsxMDExLDQxIEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUgUGFnZTo6dmlzaWJpbGl0eVN0
YXQKIH0KICNlbmRpZgogCisvLyBGSVhNRTogZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xk
IGlzIG5vIGxvbmdlciB1c2VkIGZvciBjYWxjdWxhdGluZyByZWxldmFudCByZXBhaW50ZWQgYXJl
YXMsCisvLyBhbmQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuIEZvciB0aGlzIHRpbWUgYmVpbmcsIGl0
IGlzIHVzZWZ1bCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBhdm9pZCBkb2luZworLy8gYW55IG9m
IHRoaXMgd29yayBmb3IgcG9ydHMgdGhhdCBkb24ndCBtYWtlIHN1cmUgb2YgZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0LiBXZSBzaG91bGQKKy8vIHJlc29sdmUgdGhpcyB3aGVuIHdl
IHJlc29sdmUgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCAKKy8vIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQKIHN0YXRpYyB1aW50NjRfdCBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQg
PSAwOwogCisvLyBUaGVzZSBhcmUgbWFnaWNhbCBjb25zdGFudHMgdGhhdCBtaWdodCBiZSBjaGFu
Z2VkIG9yIHR3ZWFrZWQgb3ZlciB0aW1lLgorc3RhdGljIGRvdWJsZSBnTWluaW11bVBhaW50ZWRB
cmVhUmF0aW8gPSAwLjE7CitzdGF0aWMgZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlv
ID0gMC4xOworCiB2b2lkIFBhZ2U6OnNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJU
aHJlc2hvbGQodWludDY0X3QgdGhyZXNob2xkKQogewogICAgIGdQYWludGVkT2JqZWN0Q291bnRl
clRocmVzaG9sZCA9IHRocmVzaG9sZDsKIH0KIAorYm9vbCBQYWdlOjppc0NvdW50aW5nUmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0NvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzICYmIGdQYWludGVkT2JqZWN0Q291bnRlclRocmVzaG9sZCA+
IDA7Cit9CisKIHZvaWQgUGFnZTo6c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0
cygpCiB7CiAgICAgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzID0gdHJ1ZTsK
IAotICAgIC8vIENsZWFyIHRoZSBIYXNoU2V0IGluIGNhc2Ugd2UgZGlkbid0IGhpdCB0aGUgdGhy
ZXNob2xkIGxhc3QgdGltZS4KKyAgICAvLyBDbGVhciB0aGUgSGFzaFNldHMgaW4gY2FzZSB3ZSBk
aWRuJ3QgaGl0IHRoZSB0aHJlc2hvbGQgbGFzdCB0aW1lLgogICAgIG1fcmVsZXZhbnRQYWludGVk
UmVuZGVyT2JqZWN0cy5jbGVhcigpOworICAgIG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmpl
Y3RzLmNsZWFyKCk7CisgICAgbV9yZWxldmFudFBhaW50ZWRBcmVhID0gMDsKKyAgICBtX3JlbGV2
YW50VW5wYWludGVkQXJlYSA9IDA7CiB9CiAKIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50
UmVjdCkKIHsKLSAgICBpZiAoIW1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBp
ZiB0aGVyZSBpcyBubyBjb3VudGVyIHRocmVzaG9sZC4KLSAgICBpZiAoIWdQYWludGVkT2JqZWN0
Q291bnRlclRocmVzaG9sZCkKKyAgICBpZiAoIWlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIG9iamVjdHMgYXJlIG9ubHkg
cmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhlIHZpZXdSZWN0KCku
CkBAIC0xMDM5LDE2ICsxMDU0LDU1IEBAIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3QoUmUKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbGV2YW50UGFp
bnRlZFJlbmRlck9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgYWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3Qob2JqZWN0LCBvYmplY3RQYWludFJlY3Qud2lkdGgoKSAqIG9iamVjdFBhaW50UmVjdC5o
ZWlnaHQoKSk7Cit9CiAKLSAgICBpZiAobV9yZWxldmFudFBhaW50ZWRSZW5kZXJPYmplY3RzLnNp
emUoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KGdQYWludGVkT2JqZWN0Q291bnRlclRocmVzaG9sZCkp
IHsKK3ZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGludCByZWxldmFudFJlcGFpbnRlZEFyZWEpCit7CisgICAgaWYgKG1fcmVsZXZhbnRV
bnBhaW50ZWRSZW5kZXJPYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpIHsKKyAgICAgICAgbV9yZWxl
dmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMucmVtb3ZlKG9iamVjdCk7CisgICAgICAgIG1fcmVs
ZXZhbnRVbnBhaW50ZWRBcmVhIC09IHJlbGV2YW50UmVwYWludGVkQXJlYTsKKyAgICB9CisKKyAg
ICBwYWlyPEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQg
PSBtX3JlbGV2YW50UGFpbnRlZFJlbmRlck9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgaWYgKGFk
ZFJlc3VsdC5zZWNvbmQpCisgICAgICAgIG1fcmVsZXZhbnRQYWludGVkQXJlYSArPSByZWxldmFu
dFJlcGFpbnRlZEFyZWE7CisKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gb2JqZWN0LT52aWV3KCk7
CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZmxvYXQgdmlld0Fy
ZWEgPSB2aWV3LT52aWV3UmVjdCgpLndpZHRoKCkgKiB2aWV3LT52aWV3UmVjdCgpLmhlaWdodCgp
OworICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzUGFpbnRlZCA9IG1fcmVsZXZhbnRQYWludGVk
QXJlYSAvIHZpZXdBcmVhOworICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzVW5wYWludGVkID0g
bV9yZWxldmFudFVucGFpbnRlZEFyZWEgLyB2aWV3QXJlYTsKKworICAgIGlmIChyYXRpb09mVmll
d1RoYXRJc1BhaW50ZWQgPiBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gJiYgcmF0aW9PZlZpZXdU
aGF0SXNVbnBhaW50ZWQgPCBnTWF4aW11bVVucGFpbnRlZEFyZWFSYXRpbykgewogICAgICAgICBt
X2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgbV9y
ZWxldmFudFBhaW50ZWRSZW5kZXJPYmplY3RzLmNsZWFyKCk7CisgICAgICAgIG1fcmVsZXZhbnRV
bnBhaW50ZWRSZW5kZXJPYmplY3RzLmNsZWFyKCk7CisgICAgICAgIG1fcmVsZXZhbnRQYWludGVk
QXJlYSA9IDA7CisgICAgICAgIG1fcmVsZXZhbnRVbnBhaW50ZWRBcmVhID0gMDsKICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKICAgICB9CiB9CiAKK3Zv
aWQgUGFnZTo6YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCkKK3sKKyAgICBpZiAoIWlzQ291bnRpbmdS
ZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhl
IG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRo
aW4gdGhlIHZpZXdSZWN0KCkuCisgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBvYmplY3QtPnZp
ZXcoKSkgeworICAgICAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHBpeGVsU25h
cHBlZEludFJlY3Qodmlldy0+dmlld1JlY3QoKSkpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHBhaXI8SGFzaFNldDxSZW5kZXJPYmplY3QqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZFJlc3VsdCA9IG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3RzLmFkZChvYmplY3QpOwor
ICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICBtX3JlbGV2YW50VW5wYWludGVkQXJl
YSArPSAob2JqZWN0UGFpbnRSZWN0LndpZHRoKCkgKiBvYmplY3RQYWludFJlY3QuaGVpZ2h0KCkp
OworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgIDogY2hyb21lQ2xp
ZW50KDApCiAgICAgLCBjb250ZXh0TWVudUNsaWVudCgwKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjAsOSArMzIwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCisgICAgICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJl
c2hvbGQodWludDY0X3QpOwogICAgICAgICB2b2lkIHN0YXJ0Q291bnRpbmdSZWxldmFudFJlcGFp
bnRlZE9iamVjdHMoKTsKICAgICAgICAgdm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChS
ZW5kZXJPYmplY3QqLCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3QpOworICAgICAgICB2
b2lkIGFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGludCByZWxldmFu
dFJlcGFpbnRlZEFyZWEpOworICAgICAgICB2b2lkIGFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCosIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwpAQCAtNDE5LDYgKzQyMiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7
CiAKICAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX3JlbGV2YW50UGFpbnRlZFJlbmRl
ck9iamVjdHM7CisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbV9yZWxldmFudFVucGFp
bnRlZFJlbmRlck9iamVjdHM7CisgICAgICAgIGludCBtX3JlbGV2YW50UGFpbnRlZEFyZWE7Cisg
ICAgICAgIGludCBtX3JlbGV2YW50VW5wYWludGVkQXJlYTsKICAgICAgICAgYm9vbCBtX2lzQ291
bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsMTEg
KzIxMyw2IEBAIHZvaWQgSW5saW5lQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW4KICAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgKHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0KHJlbmRlcmVyKCksIHBhaW50SW5mby5yZWN0KTsKLSAgICB9Ci0KICAgICBMYXlvdXRQb2lu
dCBjaGlsZFBvaW50ID0gcGFpbnRPZmZzZXQ7CiAgICAgaWYgKHBhcmVudCgpLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSAvLyBGYXN0ZXIgdGhhbiBj
YWxsaW5nIGNvbnRhaW5pbmdCbG9jaygpLgogICAgICAgICBjaGlsZFBvaW50ID0gcmVuZGVyZXIo
KS0+Y29udGFpbmluZ0Jsb2NrKCktPmZsaXBGb3JXcml0aW5nTW9kZUZvckNoaWxkKHRvUmVuZGVy
Qm94KHJlbmRlcmVyKCkpLCBjaGlsZFBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDEw
ICs0OTYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAg
ICAgIC8vIFdoZW4gb25seSBwYWludGluZyB0aGUgc2VsZWN0aW9uLCBkb24ndCBib3RoZXIgdG8g
cGFpbnQgaWYgdGhlcmUgaXMgbm9uZS4KICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEZyYW1l
KiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3QocmVuZGVyZXIoKSwgcGFpbnRJbmZvLnJlY3QpOwotICAgIH0KKyAgICByb290KCktPnJl
bmRlcmVyTGluZUJveGVzKCktPmFkZFJlbGV2YW50UmVwYWludGVkSW5saW5lQm94KHRoaXMsIElu
dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpLCBs
b2dpY2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpKSk7CiAKICAgICBpZiAobV90cnVuY2F0aW9u
ICE9IGNOb1RydW5jYXRpb24pIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmNvbnRhaW5pbmdC
bG9jaygpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxMCArMTQwLDE5IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldE1pc3NpbmdQ
bHUKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKHBsdWdpbkNyYXNo
ZWRPcldhc01pc3NpbmcoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAg
ICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3Vh
bE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgfQogICAgICAgICBSZW5kZXJSZXBsYWNlZDo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgIH0KKwogICAg
IFJlbmRlclBhcnQ6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCkBAIC0xNjcs
MTEgKzE3Niw2IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQKICAg
ICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgaWYgKCFnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShw
YWludE9mZnNldCwgY29udGVudFJlY3QsIHBhdGgsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGZvbnQs
IHJ1biwgdGV4dFdpZHRoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywg
cGFpbnRJbmZvLnJlY3QpOwotICAgIH0KICAgICAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJlY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVuZGVy
SFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWkKIHsKICAgICBpZiAoRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWlu
dEluZm8ucmVjdCk7CisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVj
dCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgfQogCiAgICAgTGF5b3V0UmVjdCBy
ZWN0ID0gY29udGVudEJveFJlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwxMSBAQCB2
b2lkIFJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgIGlmIChwYWlu
dEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsK
IAorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2Ut
PmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsK
KyAgICAgICAgfQorCiAgICAgICAgIGlmIChjV2lkdGggPiAyICYmIGNIZWlnaHQgPiAyKSB7CiAg
ICAgICAgICAgICAvLyBEcmF3IGFuIG91dGxpbmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxk
IGJlLgogICAgICAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwpA
QCAtMzI1LDEyICszMzAsMjMgQEAgdm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWlu
dEluZgogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdl
KCkgJiYgY1dpZHRoID4gMCAmJiBjSGVpZ2h0ID4gMCkgewogICAgICAgICBSZWZQdHI8SW1hZ2U+
IGltZyA9IG1faW1hZ2VSZXNvdXJjZS0+aW1hZ2UoY1dpZHRoLCBjSGVpZ2h0KTsKLSAgICAgICAg
aWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkKKyAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051
bGwoKSkgeworICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAg
ICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3Vh
bE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQogCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRk
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBub3cs
IGNvdW50IGltYWdlcyBhcyB1bnBhaW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVs
eSBsb2FkaW5nLiBXZSBtYXkgd2FudCAKKyAgICAgICAgICAgIC8vIHRvIHJlZmluZSB0aGlzIGlu
IHRoZSBmdXR1cmUgdG8gYWNjb3VudCBmb3IgdGhlIHBvcnRpb24gb2YgdGhlIGltYWdlIHRoYXQg
aGFzIHBhaW50ZWQuCisgICAgICAgICAgICBpZiAoY2FjaGVkSW1hZ2UoKS0+aXNMb2FkaW5nKCkp
CisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywg
dmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVj
dCgpKTsKKyAgICAgICAgfQogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAkocmV2aXNpb24g
MTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJSZW5kZXJMaW5lQm94TGlzdC5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJB
cmVuYS5oIgogI2luY2x1ZGUgIlJlbmRlcklubGluZS5oIgpAQCAtMjYzLDYgKzI2NSwxNiBAQCB2
b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpwYWludChSZW5kZXJCb3hNCiAgICAgICAgIH0KICAgICB9
CiAKKyAgICBpZiAobV9yZWxldmFudFBhaW50ZWRBcmVhKSB7CisgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSByZW5kZXJlci0+ZnJhbWUoKSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3QocmVuZGVyZXIsIG1fcmVsZXZhbnRQYWludGVkQXJlYSk7CisgICAgICAgICAg
ICAgICAgLy8gbV9yZWxldmFudFBhaW50ZWRBcmVhIGNhbiBiZSByZS1zZXQgb25jZSBpdCdzIGJl
ZW4gcmVwb3J0ZWQgdG8gdGhlIFBhZ2UuCisgICAgICAgICAgICAgICAgbV9yZWxldmFudFBhaW50
ZWRBcmVhID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChp
bmZvLnBoYXNlID09IFBhaW50UGhhc2VPdXRsaW5lIHx8IGluZm8ucGhhc2UgPT0gUGFpbnRQaGFz
ZVNlbGZPdXRsaW5lIHx8IGluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpIHsK
ICAgICAgICAgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj46Oml0ZXJhdG9yIGVuZCA9IGluZm8u
b3V0bGluZU9iamVjdHMtPmVuZCgpOwogICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFJlbmRlcklu
bGluZSo+OjppdGVyYXRvciBpdCA9IGluZm8ub3V0bGluZU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewpAQCAtMzkxLDYgKzQwMywyOSBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0
OjpkaXJ0eUxpbmVzRnJvbUNoCiAgICAgfQogfQogCit2b2lkIFJlbmRlckxpbmVCb3hMaXN0Ojph
ZGRSZWxldmFudFJlcGFpbnRlZElubGluZUJveChJbmxpbmVCb3gqIGJveCwgY29uc3QgSW50UmVj
dCYgbGluZUJveFBhaW50UmVjdCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gYm94
LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIElmIHRoZSBQYWdlIGlzIG5vdCBjdXJyZW50bHkgY291bnRpbmcgcmVwYWludGVkIG9iamVj
dHMsIHRoZW4gd2Ugc2hvdWxkbid0IGVpdGhlci4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVu
ZGVyZXItPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
KSB7CisgICAgICAgICAgICBpZiAoIXBhZ2UtPmlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICAvLyBJbmxpbmVCb3hlcyBhcmUgb25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWluZyBwYWlu
dGVkIHdpdGhpbiB0aGUgdmlld1JlY3QoKS4KKyAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IHJl
bmRlcmVyLT52aWV3KCkpIHsKKyAgICAgICAgaWYgKCFsaW5lQm94UGFpbnRSZWN0LmludGVyc2Vj
dHMocGl4ZWxTbmFwcGVkSW50UmVjdCh2aWV3LT52aWV3UmVjdCgpKSkpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9yZWxldmFudFBhaW50ZWRBcmVhICs9IChsaW5lQm94UGFp
bnRSZWN0LndpZHRoKCkgKiBsaW5lQm94UGFpbnRSZWN0LmhlaWdodCgpKTsKK30KKwogI2lmbmRl
ZiBOREVCVUcKIAogdm9pZCBSZW5kZXJMaW5lQm94TGlzdDo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNv
bnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
aAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxp
bmVCb3hMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAg
IFJlbmRlckxpbmVCb3hMaXN0KCkKICAgICAgICAgOiBtX2ZpcnN0TGluZUJveCgwKQogICAgICAg
ICAsIG1fbGFzdExpbmVCb3goMCkKKyAgICAgICAgLCBtX3JlbGV2YW50UGFpbnRlZEFyZWEoMCkK
ICAgICB7CiAgICAgfQogCkBAIC02NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYp
IGNvbnN0OwogICAgIGJvb2wgaGl0VGVzdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIGNvbnN0IEhp
dFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBwb2ludElu
Q29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RB
Y3Rpb24pIGNvbnN0OworCisgICAgdm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZElubGluZUJveChJ
bmxpbmVCb3gqLCBjb25zdCBJbnRSZWN0JiBsaW5lQm94UGFpbnRSZWN0KTsKICAgICAKIHByaXZh
dGU6CiAgICAgYm9vbCBhbnlMaW5lSW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxPYmplY3Qq
LCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHVzZVByaW50UmVj
dCA9IGZhbHNlLCBMYXlvdXRVbml0IG91dGxpbmVTaXplID0gMCkgY29uc3Q7CkBAIC03Niw2ICs3
OSw4IEBAIHByaXZhdGU6CiAgICAgLy8gRm9yIGlubGluZSBmbG93cywgZWFjaCBib3ggcmVwcmVz
ZW50cyBhIHBvcnRpb24gb2YgdGhhdCBpbmxpbmUuCiAgICAgSW5saW5lRmxvd0JveCogbV9maXJz
dExpbmVCb3g7CiAgICAgSW5saW5lRmxvd0JveCogbV9sYXN0TGluZUJveDsKKworICAgIG11dGFi
bGUgaW50IG1fcmVsZXZhbnRQYWludGVkQXJlYTsKIH07CiAKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzYsMTIgKzEzNiwxNyBAQCB2b2lkIFJlbmRlclJlZ2lvbjo6cmVzdG9yZVJlZ2lvbkJveGVzT3Jp
CiB2b2lkIFJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogewogICAgIC8vIERlbGVnYXRlIHBhaW50
aW5nIG9mIGNvbnRlbnQgaW4gcmVnaW9uIHRvIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgaWYgKCFt
X2Zsb3dUaHJlYWQgfHwgIWlzVmFsaWQoKSkKKyAgICBpZiAoIW1fZmxvd1RocmVhZCB8fCAhaXNW
YWxpZCgpKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAg
ICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dS
ZWN0KCkpOworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVj
dCh0aGlzLCBwYWludEluZm8ucmVjdCk7CisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJl
cGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgfQogCiAgICAg
c2V0UmVnaW9uQm94ZXNSZWdpb25TdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcs
MTEgKzEzNyw2IEBAIHZvaWQgUmVuZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAg
ICAgICAgZHJhd1NlbGVjdGlvblRpbnQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoRnJhbWUq
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0
aGlzLCBwYWludEluZm8ucmVjdCk7Ci0gICAgfQotCiAgICAgYm9vbCBjb21wbGV0ZWx5Q2xpcHBl
ZE91dCA9IGZhbHNlOwogICAgIGlmIChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAg
ICAgICBMYXlvdXRSZWN0IGJvcmRlclJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZz
ZXQsIHNpemUoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWRlby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OCwyMSArMTk4LDI5IEBAIHZvaWQgUmVuZGVy
VmlkZW86OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5
ZXIgPSBtZWRpYUVsZW1lbnQoKS0+cGxheWVyKCk7CiAgICAgYm9vbCBkaXNwbGF5aW5nUG9zdGVy
ID0gdmlkZW9FbGVtZW50KCktPnNob3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpOwogCisgICAgUGFn
ZSogcGFnZSA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisgICAg
ICAgIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworCiAgICAgaWYgKCFkaXNwbGF5aW5nUG9zdGVyKSB7
Ci0gICAgICAgIGlmICghbWVkaWFQbGF5ZXIpCisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIpIHsK
KyAgICAgICAgICAgIGlmIChwYWdlKQorICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50
VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgICAgICB1cGRhdGVQbGF5ZXIoKTsKICAgICB9CiAKICAg
ICBMYXlvdXRSZWN0IHJlY3QgPSB2aWRlb0JveCgpOwotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkK
KyAgICBpZiAocmVjdC5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAg
ICBwYWdlLT5hZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1Jl
Y3QoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgcmVjdC5tb3ZlQnkocGFpbnRPZmZz
ZXQpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOwotICAgIH0KKyAgICBp
ZiAocGFnZSkKKyAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywg
dmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAg
ICAgIHBhaW50SW50b1JlY3QocGFpbnRJbmZvLmNvbnRleHQsIHJlY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAx
MDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsMTMgKzI0MCwxOCBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6
OnBhaW50UmVwbGFjZWQoUGFpbnRJCiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2UgZG9uJ3QgaGF2
ZSBraWRzLCBleGNlcHQgaWYgd2UgaGF2ZSBmaWx0ZXJzIHdlIHNob3VsZCBwYWludCB0aG9zZS4K
ICAgICBpZiAoIWZpcnN0Q2hpbGQoKSkgewogICAgICAgICBTVkdSZXNvdXJjZXMqIHJlc291cmNl
cyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJPYmplY3QodGhp
cyk7Ci0gICAgICAgIGlmICghcmVzb3VyY2VzIHx8ICFyZXNvdXJjZXMtPmZpbHRlcigpKQorICAg
ICAgICBpZiAoIXJlc291cmNlcyB8fCAhcmVzb3VyY2VzLT5maWx0ZXIoKSkgeworICAgICAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHBhZ2Ut
PmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVw
YWludGVkT2JqZWN0KHRoaXMsIHBhaW50SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhZ2UtPmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAg
ICB9CiAKICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgUGFpbnRJbmZvIGJlY2F1c2UgYXBwbHlU
cmFuc2Zvcm0gd2lsbCBtb2RpZnkgdGhlIGRhbWFnZSByZWN0Lgo=
</data>
<flag name="commit-queue"
          id="131710"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129125</attachid>
            <date>2012-02-27 16:33:56 -0800</date>
            <delta_ts>2012-02-28 16:02:37 -0800</delta_ts>
            <desc>Attempt to fix tests</desc>
            <filename>for-review-2.txt</filename>
            <type>text/plain</type>
            <size>22703</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTAyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAyLTI3ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MDUKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHNob3VsZCBiZSBlbmhhbmNlZCB0byBsb29rIGF0IHNpemUgaW5zdGVhZCAKKyAg
ICAgICAgb2YgYSByYXcgdGFsbHkKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4MjEzMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBmaXJpbmcgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgd2hlbiBhIHJhdyB0YWxseSBvZiAKKyAgICAgICAgcmVsZXZhbnQg
cGFpbnRlZCBvYmplY3RzIGhhcyByZWFjaGVkIGEgcG9ydC1kZWZpbmVkIHRocmVzaG9sZCwgdGhp
cyBwYXRjaCAKKyAgICAgICAgbG9va3MgYXQgdGhlIHNpemUgb2YgdGhvc2Ugb2JqZWN0cyB3aXRo
IHJlc3BlY3QgdG8gdGhlIHZpZXcgYXJlYS4gVGhlIHBhdGNoIAorICAgICAgICBhbHNvIGxvb2tz
IGF0IHJlbGV2YW50IG9iamVjdHMgdGhhdCBjYW5ub3QgeWV0IGJlIGZ1bGx5IHBhaW50ZWQsIHN1
Y2ggYXMgCisgICAgICAgIGluY3JlbWVudGFsbHkgbGVhZGluZyBpbWFnZXMuIAorICAgICAgICAq
IHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXNDb3VudGluZ1JlbGV2YW50UmVw
YWludGVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzdGFydENvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2
YW50UmVwYWludGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZFJlbGV2YW50
VW5wYWludGVkT2JqZWN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2Up
OgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZyb20gSW5saW5lQm94IHNpbmNlIHdlIHJlYWxseSBv
bmx5IElubGluZVRleHRCb3ggaXMgcmVhbGx5IHRoZSAKKyAgICAgICAgb25seSByZWxldmFudCBJ
bmxpbmVCb3guLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5saW5lQm94OjpwYWludCk6CisKKyAgICAgICAgTWFueSBJbmxpbmVUZXh0Qm94
ZXMgY2FuIHNoYXJlIGEgUmVuZGVyT2JqZWN0LCBzbyB0aGV5IHJlcG9ydCB0aGVpciBzaXplcyB0
byAKKyAgICAgICAgdGhlIFJlbmRlckxpbmVCb3hMaXN0LiBSZW5kZXJMaW5lQm94TGlzdCBrZWVw
cyBhIHRhbGx5IG9mIHRoZSByZWxldmFudCAKKyAgICAgICAgcGFpbnRlZCBsaW5lIGJveCBhcmVh
LCBhbmQgcmVwb3J0cyB0aGF0IHRhbGx5IHRvIFBhZ2UgYWZ0ZXIgcGFpbnRpbmcgYWxsIG9mIAor
ICAgICAgICB0aGUgYm94ZXMgaW4gUmVuZGVyTGluZUJveExpc3Q6OnBhaW50KCkuIAorICAgICAg
ICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJveExpc3Q6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjphZGRSZWxldmFudFJlcGFpbnRlZElubGlu
ZUJveCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJveExpc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxpbmVCb3hMaXN0OjpSZW5kZXJM
aW5lQm94TGlzdCk6CisgICAgICAgIChSZW5kZXJMaW5lQm94TGlzdCk6CisKKyAgICAgICAgQWxs
IG9mIHRoZXNlIG90aGVyIGNhbGxlcnMgc2VuZCB0aGVpciB2aXN1YWxPdmVyZmxvd1JlY3QgaW5z
dGVhZCBvZiB0aGUgCisgICAgICAgIHBhaW50SW5mbydzIHBhaW50UmVjdCwgYW5kIHRoZXkgY2Fs
bCBhZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCB3aGVuIAorICAgICAgICBhcHByb3ByaWF0ZS4K
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVySFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2Fu
dmFzOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
UmVnaW9uOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVwbGFj
ZWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVwbGFjZWQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VmlkZW86OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2Vk
KToKKwogMjAxMi0wMi0yNyAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bnb29nbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBzdGF0aWMgY29tcHJlc3Npb24gY3VydmUgcGFyYW1ldGVycyBmb3Ig
RHluYW1pY3NDb21wcmVzc29yTm9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAx
MDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjEsNiArMTYxLDggQEAgUGFnZTo6UGFnZShQYWdlQ2xpZW50cyYgcGFnZUNsaWVudHMpCiAg
ICAgLCBtX3Zpc2liaWxpdHlTdGF0ZShQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRp
ZgogICAgICwgbV9kaXNwbGF5SUQoMCkKKyAgICAsIG1fcmVsZXZhbnRQYWludGVkQXJlYSgwKQor
ICAgICwgbV9yZWxldmFudFVucGFpbnRlZEFyZWEoMCkKICAgICAsIG1faXNDb3VudGluZ1JlbGV2
YW50UmVwYWludGVkT2JqZWN0cyhmYWxzZSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CkBAIC0x
MDA5LDI4ICsxMDExLDQxIEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUgUGFnZTo6dmlzaWJpbGl0eVN0
YXQKIH0KICNlbmRpZgogCisvLyBGSVhNRTogZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xk
IGlzIG5vIGxvbmdlciB1c2VkIGZvciBjYWxjdWxhdGluZyByZWxldmFudCByZXBhaW50ZWQgYXJl
YXMsCisvLyBhbmQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuIEZvciB0aGlzIHRpbWUgYmVpbmcsIGl0
IGlzIHVzZWZ1bCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBhdm9pZCBkb2luZworLy8gYW55IG9m
IHRoaXMgd29yayBmb3IgcG9ydHMgdGhhdCBkb24ndCBtYWtlIHN1cmUgb2YgZGlkTmV3Rmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0LiBXZSBzaG91bGQKKy8vIHJlc29sdmUgdGhpcyB3aGVuIHdl
IHJlc29sdmUgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVkIHRvIG1lcmdlIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dCAKKy8vIGFuZCBkaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQKIHN0YXRpYyB1aW50NjRfdCBnUGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQg
PSAwOwogCisvLyBUaGVzZSBhcmUgbWFnaWNhbCBjb25zdGFudHMgdGhhdCBtaWdodCBiZSBjaGFu
Z2VkIG9yIHR3ZWFrZWQgb3ZlciB0aW1lLgorc3RhdGljIGRvdWJsZSBnTWluaW11bVBhaW50ZWRB
cmVhUmF0aW8gPSAwLjE7CitzdGF0aWMgZG91YmxlIGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlv
ID0gMC4xOworCiB2b2lkIFBhZ2U6OnNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJU
aHJlc2hvbGQodWludDY0X3QgdGhyZXNob2xkKQogewogICAgIGdQYWludGVkT2JqZWN0Q291bnRl
clRocmVzaG9sZCA9IHRocmVzaG9sZDsKIH0KIAorYm9vbCBQYWdlOjppc0NvdW50aW5nUmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0NvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzICYmIGdQYWludGVkT2JqZWN0Q291bnRlclRocmVzaG9sZCA+
IDA7Cit9CisKIHZvaWQgUGFnZTo6c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0
cygpCiB7CiAgICAgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzID0gdHJ1ZTsK
IAotICAgIC8vIENsZWFyIHRoZSBIYXNoU2V0IGluIGNhc2Ugd2UgZGlkbid0IGhpdCB0aGUgdGhy
ZXNob2xkIGxhc3QgdGltZS4KKyAgICAvLyBDbGVhciB0aGUgSGFzaFNldHMgaW4gY2FzZSB3ZSBk
aWRuJ3QgaGl0IHRoZSB0aHJlc2hvbGQgbGFzdCB0aW1lLgogICAgIG1fcmVsZXZhbnRQYWludGVk
UmVuZGVyT2JqZWN0cy5jbGVhcigpOworICAgIG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmpl
Y3RzLmNsZWFyKCk7CisgICAgbV9yZWxldmFudFBhaW50ZWRBcmVhID0gMDsKKyAgICBtX3JlbGV2
YW50VW5wYWludGVkQXJlYSA9IDA7CiB9CiAKIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50
UmVjdCkKIHsKLSAgICBpZiAoIW1faXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cykK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBp
ZiB0aGVyZSBpcyBubyBjb3VudGVyIHRocmVzaG9sZC4KLSAgICBpZiAoIWdQYWludGVkT2JqZWN0
Q291bnRlclRocmVzaG9sZCkKKyAgICBpZiAoIWlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIG9iamVjdHMgYXJlIG9ubHkg
cmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRoaW4gdGhlIHZpZXdSZWN0KCku
CkBAIC0xMDM5LDE2ICsxMDU0LDU1IEBAIHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3QoUmUKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3JlbGV2YW50UGFp
bnRlZFJlbmRlck9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgYWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3Qob2JqZWN0LCBvYmplY3RQYWludFJlY3Qud2lkdGgoKSAqIG9iamVjdFBhaW50UmVjdC5o
ZWlnaHQoKSk7Cit9CiAKLSAgICBpZiAobV9yZWxldmFudFBhaW50ZWRSZW5kZXJPYmplY3RzLnNp
emUoKSA9PSBzdGF0aWNfY2FzdDxpbnQ+KGdQYWludGVkT2JqZWN0Q291bnRlclRocmVzaG9sZCkp
IHsKK3ZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBv
YmplY3QsIGludCByZWxldmFudFJlcGFpbnRlZEFyZWEpCit7CisgICAgaWYgKG1fcmVsZXZhbnRV
bnBhaW50ZWRSZW5kZXJPYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpIHsKKyAgICAgICAgbV9yZWxl
dmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMucmVtb3ZlKG9iamVjdCk7CisgICAgICAgIG1fcmVs
ZXZhbnRVbnBhaW50ZWRBcmVhIC09IHJlbGV2YW50UmVwYWludGVkQXJlYTsKKyAgICB9CisKKyAg
ICBwYWlyPEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj46Oml0ZXJhdG9yLCBib29sPiBhZGRSZXN1bHQg
PSBtX3JlbGV2YW50UGFpbnRlZFJlbmRlck9iamVjdHMuYWRkKG9iamVjdCk7CisgICAgaWYgKGFk
ZFJlc3VsdC5zZWNvbmQpCisgICAgICAgIG1fcmVsZXZhbnRQYWludGVkQXJlYSArPSByZWxldmFu
dFJlcGFpbnRlZEFyZWE7CisKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gb2JqZWN0LT52aWV3KCk7
CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZmxvYXQgdmlld0Fy
ZWEgPSB2aWV3LT52aWV3UmVjdCgpLndpZHRoKCkgKiB2aWV3LT52aWV3UmVjdCgpLmhlaWdodCgp
OworICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzUGFpbnRlZCA9IG1fcmVsZXZhbnRQYWludGVk
QXJlYSAvIHZpZXdBcmVhOworICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzVW5wYWludGVkID0g
bV9yZWxldmFudFVucGFpbnRlZEFyZWEgLyB2aWV3QXJlYTsKKworICAgIGlmIChyYXRpb09mVmll
d1RoYXRJc1BhaW50ZWQgPiBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gJiYgcmF0aW9PZlZpZXdU
aGF0SXNVbnBhaW50ZWQgPCBnTWF4aW11bVVucGFpbnRlZEFyZWFSYXRpbykgewogICAgICAgICBt
X2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSBmYWxzZTsKICAgICAgICAgbV9y
ZWxldmFudFBhaW50ZWRSZW5kZXJPYmplY3RzLmNsZWFyKCk7CisgICAgICAgIG1fcmVsZXZhbnRV
bnBhaW50ZWRSZW5kZXJPYmplY3RzLmNsZWFyKCk7CisgICAgICAgIG1fcmVsZXZhbnRQYWludGVk
QXJlYSA9IDA7CisgICAgICAgIG1fcmVsZXZhbnRVbnBhaW50ZWRBcmVhID0gMDsKICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKQogICAgICAgICAgICAgZnJhbWUtPmxvYWRl
cigpLT5kaWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQoKTsKICAgICB9CiB9CiAKK3Zv
aWQgUGFnZTo6YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3Qs
IGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCkKK3sKKyAgICBpZiAoIWlzQ291bnRpbmdS
ZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhl
IG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVpbmcgcGFpbnRlZCB3aXRo
aW4gdGhlIHZpZXdSZWN0KCkuCisgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBvYmplY3QtPnZp
ZXcoKSkgeworICAgICAgICBpZiAoIW9iamVjdFBhaW50UmVjdC5pbnRlcnNlY3RzKHBpeGVsU25h
cHBlZEludFJlY3Qodmlldy0+dmlld1JlY3QoKSkpKQorICAgICAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHBhaXI8SGFzaFNldDxSZW5kZXJPYmplY3QqPjo6aXRlcmF0b3IsIGJvb2w+IGFk
ZFJlc3VsdCA9IG1fcmVsZXZhbnRVbnBhaW50ZWRSZW5kZXJPYmplY3RzLmFkZChvYmplY3QpOwor
ICAgIGlmIChhZGRSZXN1bHQuc2Vjb25kKQorICAgICAgICBtX3JlbGV2YW50VW5wYWludGVkQXJl
YSArPSAob2JqZWN0UGFpbnRSZWN0LndpZHRoKCkgKiBvYmplY3RQYWludFJlY3QuaGVpZ2h0KCkp
OworfQorCiBQYWdlOjpQYWdlQ2xpZW50czo6UGFnZUNsaWVudHMoKQogICAgIDogY2hyb21lQ2xp
ZW50KDApCiAgICAgLCBjb250ZXh0TWVudUNsaWVudCgwKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjAsOSArMzIwLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBQ
bGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlJRDsg
fQogCisgICAgICAgIGJvb2wgaXNDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpIGNv
bnN0OwogICAgICAgICB2b2lkIHNldFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0NvdW50ZXJUaHJl
c2hvbGQodWludDY0X3QpOwogICAgICAgICB2b2lkIHN0YXJ0Q291bnRpbmdSZWxldmFudFJlcGFp
bnRlZE9iamVjdHMoKTsKICAgICAgICAgdm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChS
ZW5kZXJPYmplY3QqLCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3QpOworICAgICAgICB2
b2lkIGFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9iamVjdCosIGludCByZWxldmFu
dFJlcGFpbnRlZEFyZWEpOworICAgICAgICB2b2lkIGFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0
KFJlbmRlck9iamVjdCosIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGluaXRHcm91cCgpOwpAQCAtNDE5LDYgKzQyMiw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7
CiAKICAgICAgICAgSGFzaFNldDxSZW5kZXJPYmplY3QqPiBtX3JlbGV2YW50UGFpbnRlZFJlbmRl
ck9iamVjdHM7CisgICAgICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbV9yZWxldmFudFVucGFp
bnRlZFJlbmRlck9iamVjdHM7CisgICAgICAgIGludCBtX3JlbGV2YW50UGFpbnRlZEFyZWE7Cisg
ICAgICAgIGludCBtX3JlbGV2YW50VW5wYWludGVkQXJlYTsKICAgICAgICAgYm9vbCBtX2lzQ291
bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHM7CiAgICAgfTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTMsMTEg
KzIxMyw2IEBAIHZvaWQgSW5saW5lQm94OjpwYWludChQYWludEluZm8mIHBhaW50SW4KICAgICBp
ZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3QocmVuZGVyZXIoKSkgfHwgKHBhaW50
SW5mby5waGFzZSAhPSBQYWludFBoYXNlRm9yZWdyb3VuZCAmJiBwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZVNlbGVjdGlvbikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSByZW5kZXJlcigpLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0g
ZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0KHJlbmRlcmVyKCksIHBhaW50SW5mby5yZWN0KTsKLSAgICB9Ci0KICAgICBMYXlvdXRQb2lu
dCBjaGlsZFBvaW50ID0gcGFpbnRPZmZzZXQ7CiAgICAgaWYgKHBhcmVudCgpLT5yZW5kZXJlcigp
LT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKSAvLyBGYXN0ZXIgdGhhbiBj
YWxsaW5nIGNvbnRhaW5pbmdCbG9jaygpLgogICAgICAgICBjaGlsZFBvaW50ID0gcmVuZGVyZXIo
KS0+Y29udGFpbmluZ0Jsb2NrKCktPmZsaXBGb3JXcml0aW5nTW9kZUZvckNoaWxkKHRvUmVuZGVy
Qm94KHJlbmRlcmVyKCkpLCBjaGlsZFBvaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVUZXh0Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDk2LDEw
ICs0OTYsNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAg
ICAgIC8vIFdoZW4gb25seSBwYWludGluZyB0aGUgc2VsZWN0aW9uLCBkb24ndCBib3RoZXIgdG8g
cGFpbnQgaWYgdGhlcmUgaXMgbm9uZS4KICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKEZyYW1l
KiBmcmFtZSA9IHJlbmRlcmVyKCktPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRP
YmplY3QocmVuZGVyZXIoKSwgcGFpbnRJbmZvLnJlY3QpOwotICAgIH0KKyAgICByb290KCktPnJl
bmRlcmVyTGluZUJveGVzKCktPmFkZFJlbGV2YW50UmVwYWludGVkSW5saW5lQm94KHRoaXMsIElu
dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFkanVzdGVkUGFpbnRPZmZzZXQueSgpLCBs
b2dpY2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpKSk7CiAKICAgICBpZiAobV90cnVuY2F0aW9u
ICE9IGNOb1RydW5jYXRpb24pIHsKICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmNvbnRhaW5pbmdC
bG9jaygpLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgIT0gaXNMZWZ0VG9SaWdo
dERpcmVjdGlvbigpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0MCwxMCArMTQwLDE5IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnNldE1pc3NpbmdQ
bHUKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZv
LCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAgaWYgKHBsdWdpbkNyYXNo
ZWRPcldhc01pc3NpbmcoKSkgeworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAg
ICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3Vh
bE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgfQogICAgICAgICBSZW5kZXJSZXBsYWNlZDo6cGFp
bnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgIH0KKwogICAg
IFJlbmRlclBhcnQ6OnBhaW50KHBhaW50SW5mbywgcGFpbnRPZmZzZXQpOwogfQogCkBAIC0xNjcs
MTEgKzE3Niw2IEBAIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50UmVwbGFjZWQKICAg
ICBmbG9hdCB0ZXh0V2lkdGg7CiAgICAgaWYgKCFnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShw
YWludE9mZnNldCwgY29udGVudFJlY3QsIHBhdGgsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGZvbnQs
IHJ1biwgdGV4dFdpZHRoKSkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKEZyYW1lKiBmcmFt
ZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywg
cGFpbnRJbmZvLnJlY3QpOwotICAgIH0KICAgICAKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNh
dmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPmNsaXAoY29udGVudFJlY3Qp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJIVE1MQ2FudmFzLmNw
cAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhU
TUxDYW52YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMyArNTgsMTQgQEAgYm9vbCBSZW5k
ZXJIVE1MQ2FudmFzOjpyZXF1aXJlc0xheWVyKCkgYwogCiB2b2lkIFJlbmRlckhUTUxDYW52YXM6
OnBhaW50UmVwbGFjZWQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBw
YWludE9mZnNldCkKIHsKKyAgICBMYXlvdXRSZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwor
ICAgIHJlY3QubW92ZUJ5KHBhaW50T2Zmc2V0KTsKKwogICAgIGlmIChGcmFtZSogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkK
LSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHBhaW50
SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KHRoaXMsIHJlY3QpOwogICAgIH0KIAotICAgIExheW91dFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hS
ZWN0KCk7Ci0gICAgcmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogICAgIGJvb2wgdXNlTG93UXVh
bGl0eVNjYWxlID0gc3R5bGUoKS0+aW1hZ2VSZW5kZXJpbmcoKSA9PSBJbWFnZVJlbmRlcmluZ09w
dGltaXplQ29udHJhc3Q7CiAgICAgc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihub2Rl
KCkpLT5wYWludChwYWludEluZm8uY29udGV4dCwgcmVjdCwgdXNlTG93UXVhbGl0eVNjYWxlKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAkocmV2aXNp
b24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjY4LDYgKzI2OCwxMSBAQCB2b2lkIFJlbmRlckltYWdlOjpwYWlu
dFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgIGlmIChwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQ
aGFzZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKQorICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVk
T2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGlmIChjV2lkdGggPiAyICYmIGNIZWlnaHQgPiAyKSB7CiAgICAgICAgICAgICAvLyBEcmF3IGFu
IG91dGxpbmUgcmVjdCB3aGVyZSB0aGUgaW1hZ2Ugc2hvdWxkIGJlLgogICAgICAgICAgICAgY29u
dGV4dC0+c2V0U3Ryb2tlU3R5bGUoU29saWRTdHJva2UpOwpAQCAtMzI1LDEyICszMzAsMjMgQEAg
dm9pZCBSZW5kZXJJbWFnZTo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChtX2ltYWdlUmVzb3VyY2UtPmhhc0ltYWdlKCkgJiYgY1dpZHRoID4gMCAmJiBj
SGVpZ2h0ID4gMCkgewogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltZyA9IG1faW1hZ2VSZXNvdXJj
ZS0+aW1hZ2UoY1dpZHRoLCBjSGVpZ2h0KTsKLSAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051
bGwoKSkKKyAgICAgICAgaWYgKCFpbWcgfHwgaW1nLT5pc051bGwoKSkgeworICAgICAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmFk
ZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBub3csIGNvdW50IGltYWdlcyBhcyB1bnBh
aW50ZWQgaWYgdGhleSBhcmUgc3RpbGwgcHJvZ3Jlc3NpdmVseSBsb2FkaW5nLiBXZSBtYXkgd2Fu
dCAKKyAgICAgICAgICAgIC8vIHRvIHJlZmluZSB0aGlzIGluIHRoZSBmdXR1cmUgdG8gYWNjb3Vu
dCBmb3IgdGhlIHBvcnRpb24gb2YgdGhlIGltYWdlIHRoYXQgaGFzIHBhaW50ZWQuCisgICAgICAg
ICAgICBpZiAoY2FjaGVkSW1hZ2UoKS0+aXNMb2FkaW5nKCkpCisgICAgICAgICAgICAgICAgcGFn
ZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVw
YWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgfQogICAg
IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaW5lQm94TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksOCArMjksMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJMaW5l
Qm94TGlzdC5oIgogCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0
LmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgogI2luY2x1ZGUgIlJl
bmRlcklubGluZS5oIgpAQCAtMjYzLDYgKzI2NSwxNiBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0
OjpwYWludChSZW5kZXJCb3hNCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAobV9yZWxldmFu
dFBhaW50ZWRBcmVhKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSByZW5kZXJlci0+ZnJh
bWUoKSkgeworICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7Cisg
ICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QocmVuZGVyZXIs
IG1fcmVsZXZhbnRQYWludGVkQXJlYSk7CisgICAgICAgICAgICAgICAgLy8gbV9yZWxldmFudFBh
aW50ZWRBcmVhIGNhbiBiZSByZS1zZXQgb25jZSBpdCdzIGJlZW4gcmVwb3J0ZWQgdG8gdGhlIFBh
Z2UuCisgICAgICAgICAgICAgICAgbV9yZWxldmFudFBhaW50ZWRBcmVhID0gMDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChpbmZvLnBoYXNlID09IFBhaW50UGhh
c2VPdXRsaW5lIHx8IGluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lIHx8IGluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpIHsKICAgICAgICAgTGlzdEhhc2hTZXQ8
UmVuZGVySW5saW5lKj46Oml0ZXJhdG9yIGVuZCA9IGluZm8ub3V0bGluZU9iamVjdHMtPmVuZCgp
OwogICAgICAgICBmb3IgKExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+OjppdGVyYXRvciBpdCA9
IGluZm8ub3V0bGluZU9iamVjdHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewpAQCAtMzkx
LDYgKzQwMywyOSBAQCB2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjpkaXJ0eUxpbmVzRnJvbUNoCiAg
ICAgfQogfQogCit2b2lkIFJlbmRlckxpbmVCb3hMaXN0OjphZGRSZWxldmFudFJlcGFpbnRlZElu
bGluZUJveChJbmxpbmVCb3gqIGJveCwgY29uc3QgSW50UmVjdCYgbGluZUJveFBhaW50UmVjdCkK
K3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gYm94LT5yZW5kZXJlcigpOworICAgIGlm
ICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSBQYWdlIGlzIG5v
dCBjdXJyZW50bHkgY291bnRpbmcgcmVwYWludGVkIG9iamVjdHMsIHRoZW4gd2Ugc2hvdWxkbid0
IGVpdGhlci4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXItPmZyYW1lKCkpIHsKKyAg
ICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKSB7CisgICAgICAgICAgICBpZiAo
IXBhZ2UtPmlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBJbmxpbmVCb3hlcyBhcmUg
b25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWluZyBwYWludGVkIHdpdGhpbiB0aGUgdmlld1Jl
Y3QoKS4KKyAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IHJlbmRlcmVyLT52aWV3KCkpIHsKKyAg
ICAgICAgaWYgKCFsaW5lQm94UGFpbnRSZWN0LmludGVyc2VjdHMocGl4ZWxTbmFwcGVkSW50UmVj
dCh2aWV3LT52aWV3UmVjdCgpKSkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9yZWxldmFudFBhaW50ZWRBcmVhICs9IChsaW5lQm94UGFpbnRSZWN0LndpZHRoKCkgKiBsaW5l
Qm94UGFpbnRSZWN0LmhlaWdodCgpKTsKK30KKwogI2lmbmRlZiBOREVCVUcKIAogdm9pZCBSZW5k
ZXJMaW5lQm94TGlzdDo6Y2hlY2tDb25zaXN0ZW5jeSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuaAkocmV2aXNpb24gMTA5MDEwKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIFJlbmRlckxpbmVCb3hMaXN0KCkK
ICAgICAgICAgOiBtX2ZpcnN0TGluZUJveCgwKQogICAgICAgICAsIG1fbGFzdExpbmVCb3goMCkK
KyAgICAgICAgLCBtX3JlbGV2YW50UGFpbnRlZEFyZWEoMCkKICAgICB7CiAgICAgfQogCkBAIC02
NSw2ICs2Niw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcGFpbnQoUmVuZGVyQm94TW9kZWxPYmpl
Y3QqLCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgaGl0
VGVzdChSZW5kZXJCb3hNb2RlbE9iamVjdCosIGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIGNvbnN0OworCisgICAg
dm9pZCBhZGRSZWxldmFudFJlcGFpbnRlZElubGluZUJveChJbmxpbmVCb3gqLCBjb25zdCBJbnRS
ZWN0JiBsaW5lQm94UGFpbnRSZWN0KTsKICAgICAKIHByaXZhdGU6CiAgICAgYm9vbCBhbnlMaW5l
SW50ZXJzZWN0c1JlY3QoUmVuZGVyQm94TW9kZWxPYmplY3QqLCBjb25zdCBMYXlvdXRSZWN0Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmLCBib29sIHVzZVByaW50UmVjdCA9IGZhbHNlLCBMYXlvdXRVbml0
IG91dGxpbmVTaXplID0gMCkgY29uc3Q7CkBAIC03Niw2ICs3OSw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gRm9yIGlubGluZSBmbG93cywgZWFjaCBib3ggcmVwcmVzZW50cyBhIHBvcnRpb24gb2YgdGhh
dCBpbmxpbmUuCiAgICAgSW5saW5lRmxvd0JveCogbV9maXJzdExpbmVCb3g7CiAgICAgSW5saW5l
Rmxvd0JveCogbV9sYXN0TGluZUJveDsKKworICAgIG11dGFibGUgaW50IG1fcmVsZXZhbnRQYWlu
dGVkQXJlYTsKIH07CiAKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTIgKzEzNiwxNyBAQCB2b2lk
IFJlbmRlclJlZ2lvbjo6cmVzdG9yZVJlZ2lvbkJveGVzT3JpCiB2b2lkIFJlbmRlclJlZ2lvbjo6
cGFpbnRSZXBsYWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBh
aW50T2Zmc2V0KQogewogICAgIC8vIERlbGVnYXRlIHBhaW50aW5nIG9mIGNvbnRlbnQgaW4gcmVn
aW9uIHRvIFJlbmRlckZsb3dUaHJlYWQuCi0gICAgaWYgKCFtX2Zsb3dUaHJlYWQgfHwgIWlzVmFs
aWQoKSkKKyAgICBpZiAoIW1fZmxvd1RocmVhZCB8fCAhaXNWYWxpZCgpKSB7CisgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoUGFnZSog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRV
bnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJh
bWUoKSkgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWludEluZm8ucmVj
dCk7CisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCB2
aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgfQogCiAgICAgc2V0UmVnaW9uQm94ZXNSZWdpb25T
dHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQu
Y3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
UmVwbGFjZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsMTEgKzEzNyw2IEBAIHZvaWQgUmVu
ZGVyUmVwbGFjZWQ6OnBhaW50KFBhaW50SW5mbyYgcGEKICAgICAgICAgZHJhd1NlbGVjdGlvblRp
bnQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUo
KSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAg
ICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWludEluZm8ucmVjdCk7
Ci0gICAgfQotCiAgICAgYm9vbCBjb21wbGV0ZWx5Q2xpcHBlZE91dCA9IGZhbHNlOwogICAgIGlm
IChzdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSkgewogICAgICAgICBMYXlvdXRSZWN0IGJvcmRl
clJlY3QgPSBMYXlvdXRSZWN0KGFkanVzdGVkUGFpbnRPZmZzZXQsIHNpemUoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHJldmlzaW9uIDEwOTAxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OCwyMSArMTk4LDI5IEBAIHZvaWQgUmVuZGVyVmlkZW86OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmYKICAgICBNZWRpYVBsYXllciogbWVkaWFQbGF5ZXIgPSBtZWRpYUVsZW1lbnQoKS0+
cGxheWVyKCk7CiAgICAgYm9vbCBkaXNwbGF5aW5nUG9zdGVyID0gdmlkZW9FbGVtZW50KCktPnNo
b3VsZERpc3BsYXlQb3N0ZXJJbWFnZSgpOwogCisgICAgUGFnZSogcGFnZSA9IDA7CisgICAgaWYg
KEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisgICAgICAgIHBhZ2UgPSBmcmFtZS0+cGFn
ZSgpOworCiAgICAgaWYgKCFkaXNwbGF5aW5nUG9zdGVyKSB7Ci0gICAgICAgIGlmICghbWVkaWFQ
bGF5ZXIpCisgICAgICAgIGlmICghbWVkaWFQbGF5ZXIpIHsKKyAgICAgICAgICAgIGlmIChwYWdl
KQorICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMs
IHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
ICAgICAgICB1cGRhdGVQbGF5ZXIoKTsKICAgICB9CiAKICAgICBMYXlvdXRSZWN0IHJlY3QgPSB2
aWRlb0JveCgpOwotICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAocmVjdC5pc0VtcHR5
KCkpIHsKKyAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFVu
cGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgICAgIHJldHVy
bjsKKyAgICB9CiAgICAgcmVjdC5tb3ZlQnkocGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKEZyYW1l
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFt
ZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3Qo
dGhpcywgcGFpbnRJbmZvLnJlY3QpOwotICAgIH0KKyAgICBpZiAocGFnZSkKKyAgICAgICAgcGFn
ZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkp
OwogCiAgICAgaWYgKGRpc3BsYXlpbmdQb3N0ZXIpCiAgICAgICAgIHBhaW50SW50b1JlY3QocGFp
bnRJbmZvLmNvbnRleHQsIHJlY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDAsMTMgKzI0MCwxOCBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQoUGFpbnRJ
CiAgICAgLy8gRG9uJ3QgcGFpbnQgaWYgd2UgZG9uJ3QgaGF2ZSBraWRzLCBleGNlcHQgaWYgd2Ug
aGF2ZSBmaWx0ZXJzIHdlIHNob3VsZCBwYWludCB0aG9zZS4KICAgICBpZiAoIWZpcnN0Q2hpbGQo
KSkgewogICAgICAgICBTVkdSZXNvdXJjZXMqIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hl
OjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJPYmplY3QodGhpcyk7Ci0gICAgICAgIGlmICghcmVz
b3VyY2VzIHx8ICFyZXNvdXJjZXMtPmZpbHRlcigpKQorICAgICAgICBpZiAoIXJlc291cmNlcyB8
fCAhcmVzb3VyY2VzLT5maWx0ZXIoKSkgeworICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IHRoaXMtPmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1l
LT5wYWdlKCkpCisgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVk
T2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChGcmFtZSogZnJhbWUg
PSB0aGlzLT5mcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHBh
aW50SW5mby5yZWN0KTsKKyAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2Jq
ZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAgICB9CiAKICAgICAvLyBNYWtlIGEg
Y29weSBvZiB0aGUgUGFpbnRJbmZvIGJlY2F1c2UgYXBwbHlUcmFuc2Zvcm0gd2lsbCBtb2RpZnkg
dGhlIGRhbWFnZSByZWN0Lgo=
</data>
<flag name="commit-queue"
          id="131783"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129347</attachid>
            <date>2012-02-28 16:02:37 -0800</date>
            <delta_ts>2012-02-29 13:41:50 -0800</delta_ts>
            <desc>Patch that uses Regions</desc>
            <filename>for-review-3.txt</filename>
            <type>text/plain</type>
            <size>19360</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTE2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYwIEBACisyMDEyLTAyLTI4ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MDUKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHNob3VsZCBiZSBlbmhhbmNlZCB0byBsb29rIGF0IHNpemUgaW5zdGVhZCAKKyAg
ICAgICAgb2YgYSByYXcgdGFsbHkKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4MjEzMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBmaXJpbmcgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgd2hlbiBhIHJhdyB0YWxseSBvZiAKKyAgICAgICAgcmVsZXZhbnQg
cGFpbnRlZCBvYmplY3RzIGhhcyByZWFjaGVkIGEgcG9ydC1kZWZpbmVkIHRocmVzaG9sZCwgdGhp
cyBwYXRjaCAKKyAgICAgICAgbG9va3MgYXQgdGhlIHNpemUgb2YgdGhvc2Ugb2JqZWN0cyB3aXRo
IHJlc3BlY3QgdG8gdGhlIHZpZXcgYXJlYS4gVGhlIHBhdGNoIAorICAgICAgICBhbHNvIGxvb2tz
IGF0IHJlbGV2YW50IG9iamVjdHMgdGhhdCBjYW5ub3QgeWV0IGJlIGZ1bGx5IHBhaW50ZWQsIHN1
Y2ggYXMgCisgICAgICAgIGluY3JlbWVudGFsbHkgbGVhZGluZyBpbWFnZXMuIAorCisgICAgICAg
IFdlIG5vIGxvbmdlciBuZWVkIGEgSGFzaFNldCBmb3IgdGhlIHJlbGV2YW50IHBhaW50ZWQgb2Jq
ZWN0cyBzaW5jZSBSZWdpb24gY2FuIAorICAgICAgICBkbyBhbGwgb2YgdGhlIGhlYXZ5IGxpZnRp
bmcuIFdlIG5vdyBoYXZlIGEgUmVnaW9uIGZvciB0aGUgcGFpbnRlZCBhbmQgCisgICAgICAgIHVu
cGFpbnRlZCByZWdpb25zLiBXZSBkbyBuZWVkIGEgSGFzaFNldCBmb3IgdGhlIHVucGFpbnRlZCBv
YmplY3RzIHRob3VnaCwgCisgICAgICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBrbm93IGlmIGEgcGFp
bnRlZCBvYmplY3QgbmVlZHMgdG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSAKKyAgICAgICAgdW5w
YWludGVkIHJlZ2lvbiBiZWZvcmUgYmVpbmcgYWRkZWQgdG8gdGhlIHBhaW50ZWQgcmVnaW9uLgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6CisgICAgICAgICogcGFnZS9Q
YWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aXND
b3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpzdGFydENvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnJlc2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjp0b3RhbEFyZWFGb3JSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRk
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVs
ZXZhbnRVbnBhaW50ZWRPYmplY3QpOgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZyb20gdGhlc2Ug
Y2xhc3NlcyBzaW5jZSB0aGV5IGFyZSBub3QgYWN0dWFsbHkgcmVsZXZhbnQgb2JqZWN0cy4KKyAg
ICAgICAgKiByZW5kZXJpbmcvSW5saW5lQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUJveDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJSZXBsYWNlZDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUmVnaW9uOjpw
YWludFJlcGxhY2VkKToKKworICAgICAgICBBbGwgb2YgdGhlc2Ugb3RoZXIgY2FsbGVycyBzZW5k
IGEgcmVjdCB0aGF0IGFjdHVhbGx5IHJlcHJlc2VudHMgdGhlaXIgc2l6ZSAKKyAgICAgICAgKHVz
dWFsbHkgdGhlIHZpc3VhbE92ZXJmbG93UmVjdCkgaW5zdGVhZCBvZiB0aGUgcGFpbnRJbmZvJ3Mg
cGFpbnRSZWN0LCBhbmQgCisgICAgICAgIHRoZXkgY2FsbCBhZGRSZWxldmFudFVucGFpbnRlZE9i
amVjdCB3aGVuIGFwcHJvcHJpYXRlLgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZVRleHRCb3g6OnBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
SFRNTENhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJIVE1MQ2FudmFzOjpwYWlu
dFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWRlbzo6cGFp
bnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnBhaW50UmVwbGFjZWQpOgorCiAyMDEy
LTAyLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTA4ODM0LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDA5LDI4ICsxMDA5LDYwIEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUg
UGFnZTo6dmlzaWJpbGl0eVN0YXQKIH0KICNlbmRpZgogCisvLyBGSVhNRTogZ1BhaW50ZWRPYmpl
Y3RDb3VudGVyVGhyZXNob2xkIGlzIG5vIGxvbmdlciB1c2VkIGZvciBjYWxjdWxhdGluZyByZWxl
dmFudCByZXBhaW50ZWQgYXJlYXMsCisvLyBhbmQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuIEZvciB0
aGlzIHRpbWUgYmVpbmcsIGl0IGlzIHVzZWZ1bCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBhdm9p
ZCBkb2luZworLy8gYW55IG9mIHRoaXMgd29yayBmb3IgcG9ydHMgdGhhdCBkb24ndCBtYWtlIHN1
cmUgb2YgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0LiBXZSBzaG91bGQKKy8vIHJl
c29sdmUgdGhpcyB3aGVuIHdlIHJlc29sdmUgPHJkYXI6Ly9wcm9ibGVtLzEwNzkxNjgwPiBOZWVk
IHRvIG1lcmdlIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCAKKy8vIGFuZCBkaWROZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQKIHN0YXRpYyB1aW50NjRfdCBnUGFpbnRlZE9iamVj
dENvdW50ZXJUaHJlc2hvbGQgPSAwOwogCisvLyBUaGVzZSBhcmUgbWFnaWNhbCBjb25zdGFudHMg
dGhhdCBtaWdodCBiZSBjaGFuZ2VkIG9yIHR3ZWFrZWQgb3ZlciB0aW1lLgorc3RhdGljIGRvdWJs
ZSBnTWluaW11bVBhaW50ZWRBcmVhUmF0aW8gPSAwLjE7CitzdGF0aWMgZG91YmxlIGdNYXhpbXVt
VW5wYWludGVkQXJlYVJhdGlvID0gMC4xOworCiB2b2lkIFBhZ2U6OnNldFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0c0NvdW50ZXJUaHJlc2hvbGQodWludDY0X3QgdGhyZXNob2xkKQogewogICAgIGdQ
YWludGVkT2JqZWN0Q291bnRlclRocmVzaG9sZCA9IHRocmVzaG9sZDsKIH0KIAorYm9vbCBQYWdl
Ojppc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzICYmIGdQYWludGVkT2JqZWN0
Q291bnRlclRocmVzaG9sZCA+IDA7Cit9CisKIHZvaWQgUGFnZTo6c3RhcnRDb3VudGluZ1JlbGV2
YW50UmVwYWludGVkT2JqZWN0cygpCiB7CiAgICAgbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzID0gdHJ1ZTsKIAotICAgIC8vIENsZWFyIHRoZSBIYXNoU2V0IGluIGNhc2Ugd2Ug
ZGlkbid0IGhpdCB0aGUgdGhyZXNob2xkIGxhc3QgdGltZS4KLSAgICBtX3JlbGV2YW50UGFpbnRl
ZFJlbmRlck9iamVjdHMuY2xlYXIoKTsKKyAgICAvLyBSZXNldCBldmVyeXRoaW5nIGluIGNhc2Ug
d2UgZGlkbid0IGhpdCB0aGUgdGhyZXNob2xkIGxhc3QgdGltZS4KKyAgICByZXNldFJlbGV2YW50
UGFpbnRlZE9iamVjdENvdW50ZXIoKTsKIH0KIAotdm9pZCBQYWdlOjphZGRSZWxldmFudFJlcGFp
bnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgSW50UmVjdCYgb2JqZWN0UGFp
bnRSZWN0KQordm9pZCBQYWdlOjpyZXNldFJlbGV2YW50UGFpbnRlZE9iamVjdENvdW50ZXIoKQog
ewotICAgIGlmICghbV9pc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKQotICAgICAg
ICByZXR1cm47CisgICAgbV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMuY2xlYXIoKTsK
KyAgICBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbiA9IFJlZ2lvbigpOworICAgIG1fcmVsZXZhbnRV
bnBhaW50ZWRSZWdpb24gPSBSZWdpb24oKTsKK30KIAotICAgIC8vIFdlIGRvbid0IG5lZWQgdG8g
ZG8gYW55dGhpbmcgaWYgdGhlcmUgaXMgbm8gY291bnRlciB0aHJlc2hvbGQuCi0gICAgaWYgKCFn
UGFpbnRlZE9iamVjdENvdW50ZXJUaHJlc2hvbGQpCisvLyBGSVhNRTogV2Ugc2hvdWxkIHBvdGVu
dGlhbGx5IG1vdmUgdGhpcyB0byBSZWdpb24uaCBpZiB3ZSB0aGluayBpdCB3b3VsZCBiZSB2YWx1
YWJsZSBlbHNld2hlcmUuCitzdGF0aWMgaW50IHRvdGFsQXJlYUZvclJlZ2lvbihSZWdpb24gcmVn
aW9uKQoreworICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygpOworICAg
IHNpemVfdCBzaXplID0gcmVjdHMuc2l6ZSgpOworICAgIGludCB0b3RhbEFyZWEgPSAwOworCisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgSW50UmVjdCBy
ZWN0ID0gcmVjdHNbaV07CisgICAgICAgIHRvdGFsQXJlYSArPSAocmVjdC53aWR0aCgpICogcmVj
dC5oZWlnaHQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIHRvdGFsQXJlYTsKK30KKwordm9pZCBQ
YWdlOjphZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29u
c3QgSW50UmVjdCYgb2JqZWN0UGFpbnRSZWN0KQoreworICAgIGlmICghaXNDb3VudGluZ1JlbGV2
YW50UmVwYWludGVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGUgb2Jq
ZWN0cyBhcmUgb25seSByZWxldmFudCBpZiB0aGV5IGFyZSBiZWluZyBwYWludGVkIHdpdGhpbiB0
aGUgdmlld1JlY3QoKS4KQEAgLTEwMzksMTYgKzEwNzEsNDYgQEAgdm9pZCBQYWdlOjphZGRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdChSZQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fcmVsZXZhbnRQYWludGVkUmVuZGVyT2JqZWN0cy5hZGQob2JqZWN0KTsKKyAgICAvLyBJZiB0
aGlzIG9iamVjdCB3YXMgcHJldmlvdXNseSBjb3VudGVkIGFzIGFuIHVucGFpbnRlZCBvYmplY3Qs
IHJlbW92ZSBpdCBmcm9tIHRoYXQgSGFzaFNldAorICAgIC8vIGFuZCBjb3JyZXNwb25kaW5nIFJl
Z2lvbi4KKyAgICBpZiAobV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVjdHMuY29udGFpbnMo
b2JqZWN0KSkgeworICAgICAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5yZW1v
dmUob2JqZWN0KTsKKyAgICAgICAgbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbi5zdWJ0cmFjdChv
YmplY3RQYWludFJlY3QpOworICAgIH0KIAotICAgIGlmIChtX3JlbGV2YW50UGFpbnRlZFJlbmRl
ck9iamVjdHMuc2l6ZSgpID09IHN0YXRpY19jYXN0PGludD4oZ1BhaW50ZWRPYmplY3RDb3VudGVy
VGhyZXNob2xkKSkgeworICAgIG1fcmVsZXZhbnRQYWludGVkUmVnaW9uLnVuaXRlKG9iamVjdFBh
aW50UmVjdCk7CisKKyAgICBSZW5kZXJWaWV3KiB2aWV3ID0gb2JqZWN0LT52aWV3KCk7CisgICAg
aWYgKCF2aWV3KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZmxvYXQgdmlld0FyZWEgPSB2
aWV3LT52aWV3UmVjdCgpLndpZHRoKCkgKiB2aWV3LT52aWV3UmVjdCgpLmhlaWdodCgpOworICAg
IGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzUGFpbnRlZCA9IHRvdGFsQXJlYUZvclJlZ2lvbihtX3Jl
bGV2YW50UGFpbnRlZFJlZ2lvbikgLyB2aWV3QXJlYTsKKyAgICBmbG9hdCByYXRpb09mVmlld1Ro
YXRJc1VucGFpbnRlZCA9IHRvdGFsQXJlYUZvclJlZ2lvbihtX3JlbGV2YW50VW5wYWludGVkUmVn
aW9uKSAvIHZpZXdBcmVhOworCisgICAgaWYgKHJhdGlvT2ZWaWV3VGhhdElzUGFpbnRlZCA+IGdN
aW5pbXVtUGFpbnRlZEFyZWFSYXRpbyAmJiByYXRpb09mVmlld1RoYXRJc1VucGFpbnRlZCA8IGdN
YXhpbXVtVW5wYWludGVkQXJlYVJhdGlvKSB7CiAgICAgICAgIG1faXNDb3VudGluZ1JlbGV2YW50
UmVwYWludGVkT2JqZWN0cyA9IGZhbHNlOwotICAgICAgICBtX3JlbGV2YW50UGFpbnRlZFJlbmRl
ck9iamVjdHMuY2xlYXIoKTsKKyAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRPYmplY3RDb3Vu
dGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkKICAgICAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KCk7
CiAgICAgfQogfQogCit2b2lkIFBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3QpCit7CisgICAg
aWYgKCFpc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIC8vIFRoZSBvYmplY3RzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRoZXkgYXJlIGJl
aW5nIHBhaW50ZWQgd2l0aGluIHRoZSB2aWV3UmVjdCgpLgorICAgIGlmIChSZW5kZXJWaWV3KiB2
aWV3ID0gb2JqZWN0LT52aWV3KCkpIHsKKyAgICAgICAgaWYgKCFvYmplY3RQYWludFJlY3QuaW50
ZXJzZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KHZpZXctPnZpZXdSZWN0KCkpKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0
cy5hZGQob2JqZWN0KTsKKyAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnVuaXRlKG9iamVj
dFBhaW50UmVjdCk7Cit9CisKIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50cygpCiAgICAg
OiBjaHJvbWVDbGllbnQoMCkKICAgICAsIGNvbnRleHRNZW51Q2xpZW50KDApCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0
eVN0YXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlN1cHBsZW1lbnRhYmxl
LmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgpAQCAtMzIwLDkgKzMyMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
UGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5SUQ7
IH0KIAorICAgICAgICBib29sIGlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNDb3VudGVyVGhy
ZXNob2xkKHVpbnQ2NF90KTsKICAgICAgICAgdm9pZCBzdGFydENvdW50aW5nUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzKCk7CisgICAgICAgIHZvaWQgcmVzZXRSZWxldmFudFBhaW50ZWRPYmplY3RD
b3VudGVyKCk7CiAgICAgICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVy
T2JqZWN0KiwgY29uc3QgSW50UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKKyAgICAgICAgdm9pZCBh
ZGRSZWxldmFudFVucGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRSZWN0JiBv
YmplY3RQYWludFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAo
KTsKQEAgLTQxOCw3ICs0MjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5kaWYKICAgICAg
ICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAKLSAgICAgICAgSGFzaFNldDxSZW5k
ZXJPYmplY3QqPiBtX3JlbGV2YW50UGFpbnRlZFJlbmRlck9iamVjdHM7CisgICAgICAgIEhhc2hT
ZXQ8UmVuZGVyT2JqZWN0Kj4gbV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVjdHM7CisgICAg
ICAgIFJlZ2lvbiBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbjsKKyAgICAgICAgUmVnaW9uIG1fcmVs
ZXZhbnRVbnBhaW50ZWRSZWdpb247CiAgICAgICAgIGJvb2wgbV9pc0NvdW50aW5nUmVsZXZhbnRS
ZXBhaW50ZWRPYmplY3RzOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9J
bmxpbmVCb3guY3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEzLDExICsyMTMsNiBAQCB2b2lk
IElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluCiAgICAgaWYgKCFwYWludEluZm8u
c2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IChwYWludEluZm8ucGhhc2UgIT0g
UGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNlICE9IFBhaW50UGhhc2VTZWxl
Y3Rpb24pKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVy
ZXIoKS0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChyZW5kZXJlcigp
LCBwYWludEluZm8ucmVjdCk7Ci0gICAgfQotCiAgICAgTGF5b3V0UG9pbnQgY2hpbGRQb2ludCA9
IHBhaW50T2Zmc2V0OwogICAgIGlmIChwYXJlbnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNG
bGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgLy8gRmFzdGVyIHRoYW4gY2FsbGluZyBjb250YWlu
aW5nQmxvY2soKS4KICAgICAgICAgY2hpbGRQb2ludCA9IHJlbmRlcmVyKCktPmNvbnRhaW5pbmdC
bG9jaygpLT5mbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZCh0b1JlbmRlckJveChyZW5kZXJlcigp
KSwgY2hpbGRQb2ludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCShyZXZpc2lvbiAxMDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw4ICs0OTcsMTMgQEAgdm9p
ZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkgewotICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdChyZW5kZXJlcigpLCBwYWludEluZm8ucmVjdCk7CisgICAgICAg
IGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFJpZ2h0IG5vdywgSW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50
ZWRPYmplY3QoKSBldmVuIHRob3VnaCB0aGV5IG1pZ2h0IAorICAgICAgICAgICAgLy8gbGVnaXRp
bWF0ZWx5IGJlIHVucGFpbnRlZCBpZiB0aGV5IGFyZSB3YWl0aW5nIG9uIGEgc2xvdy1sb2FkaW5n
IHdlYiBmb250LiBXZSBzaG91bGQgZml4IHRoYXQsIGFuZAorICAgICAgICAgICAgLy8gd2hlbiB3
ZSBkbywgd2Ugd2lsbCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoZSBJbmxpbmVUZXh0
Qm94ZXMgZG8gbm90IGFsd2F5cyBoYXZlIHVuaXF1ZQorICAgICAgICAgICAgLy8gcmVuZGVyZXJz
IGFuZCBQYWdlIGN1cnJlbnRseSByZWxpZXMgb24gZWFjaCB1bnBhaW50ZWQgb2JqZWN0IGhhdmlu
ZyBhIHVuaXF1ZSByZW5kZXJlci4KKyAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWlu
dGVkT2JqZWN0KHJlbmRlcmVyKCksIEludFJlY3QoYWRqdXN0ZWRQYWludE9mZnNldC54KCksIGFk
anVzdGVkUGFpbnRPZmZzZXQueSgpLCBsb2dpY2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpKSk7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobV90cnVuY2F0aW9uICE9IGNOb1RydW5jYXRp
b24pIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVj
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVk
ZGVkT2JqZWN0LmNwcAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDEwICsx
NDAsMTkgQEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6c2V0TWlzc2luZ1BsdQogdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExh
eW91dFBvaW50JiBwYWludE9mZnNldCkKIHsKICAgICBpZiAocGx1Z2luQ3Jhc2hlZE9yV2FzTWlz
c2luZygpKSB7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICAg
ICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dS
ZWN0KCkpOworICAgICAgICB9CiAgICAgICAgIFJlbmRlclJlcGxhY2VkOjpwYWludChwYWludElu
Zm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKKyAgICBpZiAo
RnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICBpZiAoUGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCkpCisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9i
amVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CisgICAgfQorCiAgICAgUmVuZGVyUGFy
dDo6cGFpbnQocGFpbnRJbmZvLCBwYWludE9mZnNldCk7CiB9CiAKQEAgLTE2NywxMSArMTc2LDYg
QEAgdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZAogICAgIGZsb2F0IHRl
eHRXaWR0aDsKICAgICBpZiAoIWdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KHBhaW50T2Zmc2V0
LCBjb250ZW50UmVjdCwgcGF0aCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgZm9udCwgcnVuLCB0ZXh0
V2lkdGgpKQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+
ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAg
ICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWludEluZm8u
cmVjdCk7Ci0gICAgfQogICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVT
YXZlcigqY29udGV4dCk7CiAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCShyZXZpc2lv
biAxMDkwMTApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEzICs1OCwxNCBAQCBib29sIFJlbmRlckhUTUxDYW52
YXM6OnJlcXVpcmVzTGF5ZXIoKSBjCiAKIHZvaWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBs
YWNlZChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0
KQogeworICAgIExheW91dFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAgcmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQpOworCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAg
ICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3Qp
OworICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcmVj
dCk7CiAgICAgfQogCi0gICAgTGF5b3V0UmVjdCByZWN0ID0gY29udGVudEJveFJlY3QoKTsKLSAg
ICByZWN0Lm1vdmVCeShwYWludE9mZnNldCk7CiAgICAgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUg
PSBzdHlsZSgpLT5pbWFnZVJlbmRlcmluZygpID09IEltYWdlUmVuZGVyaW5nT3B0aW1pemVDb250
cmFzdDsKICAgICBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KG5vZGUoKSktPnBhaW50
KHBhaW50SW5mby5jb250ZXh0LCByZWN0LCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAxMDkwMTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjgsNiArMjY4LDExIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQo
UGFpbnRJbmYKICAgICAgICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0
aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0
aGlzLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdl
KCkpCisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhp
cywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKGNXaWR0
aCA+IDIgJiYgY0hlaWdodCA+IDIpIHsKICAgICAgICAgICAgIC8vIERyYXcgYW4gb3V0bGluZSBy
ZWN0IHdoZXJlIHRoZSBpbWFnZSBzaG91bGQgYmUuCiAgICAgICAgICAgICBjb250ZXh0LT5zZXRT
dHJva2VTdHlsZShTb2xpZFN0cm9rZSk7CkBAIC0zMjUsMTIgKzMzMCwyMyBAQCB2b2lkIFJlbmRl
ckltYWdlOjpwYWludFJlcGxhY2VkKFBhaW50SW5mCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KG1faW1hZ2VSZXNvdXJjZS0+aGFzSW1hZ2UoKSAmJiBjV2lkdGggPiAwICYmIGNIZWlnaHQgPiAw
KSB7CiAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1nID0gbV9pbWFnZVJlc291cmNlLT5pbWFnZShj
V2lkdGgsIGNIZWlnaHQpOwotICAgICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKQorICAg
ICAgICBpZiAoIWltZyB8fCBpbWctPmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAoRnJhbWUq
IGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRV
bnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdl
KCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBw
YWludEluZm8ucmVjdCk7CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkg
eworICAgICAgICAgICAgLy8gRm9yIG5vdywgY291bnQgaW1hZ2VzIGFzIHVucGFpbnRlZCBpZiB0
aGV5IGFyZSBzdGlsbCBwcm9ncmVzc2l2ZWx5IGxvYWRpbmcuIFdlIG1heSB3YW50IAorICAgICAg
ICAgICAgLy8gdG8gcmVmaW5lIHRoaXMgaW4gdGhlIGZ1dHVyZSB0byBhY2NvdW50IGZvciB0aGUg
cG9ydGlvbiBvZiB0aGUgaW1hZ2UgdGhhdCBoYXMgcGFpbnRlZC4KKyAgICAgICAgICAgIGlmIChj
YWNoZWRJbWFnZSgpLT5pc0xvYWRpbmcoKSkKKyAgICAgICAgICAgICAgICBwYWdlLT5hZGRSZWxl
dmFudFVucGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworICAgICAgICB9CiAgICAgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lv
bi5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJSZWdpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksMTEgKzEzOSw2IEBAIHZvaWQgUmVu
ZGVyUmVnaW9uOjpwYWludFJlcGxhY2VkKFBhaW50SW4KICAgICBpZiAoIW1fZmxvd1RocmVhZCB8
fCAhaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0g
dGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkp
Ci0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWlu
dEluZm8ucmVjdCk7Ci0gICAgfQotCiAgICAgc2V0UmVnaW9uQm94ZXNSZWdpb25TdHlsZSgpOwog
ICAgIG1fZmxvd1RocmVhZC0+cGFpbnRJbnRvUmVnaW9uKHBhaW50SW5mbywgdGhpcywgTGF5b3V0
UG9pbnQocGFpbnRPZmZzZXQueCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKSwgcGFp
bnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKTsKICAgICByZXN0b3Jl
UmVnaW9uQm94ZXNPcmlnaW5hbFN0eWxlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyUmVwbGFjZWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHJldmlzaW9uIDEwOTAxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNywx
MSArMTM3LDYgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6cGFpbnQoUGFpbnRJbmZvJiBwYQogICAg
ICAgICBkcmF3U2VsZWN0aW9uVGludCA9IGZhbHNlOwogICAgIH0KIAotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRo
aXMsIHBhaW50SW5mby5yZWN0KTsKLSAgICB9Ci0KICAgICBib29sIGNvbXBsZXRlbHlDbGlwcGVk
T3V0ID0gZmFsc2U7CiAgICAgaWYgKHN0eWxlKCktPmhhc0JvcmRlclJhZGl1cygpKSB7CiAgICAg
ICAgIExheW91dFJlY3QgYm9yZGVyUmVjdCA9IExheW91dFJlY3QoYWRqdXN0ZWRQYWludE9mZnNl
dCwgc2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNw
cAkocmV2aXNpb24gMTA5MDEwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZGVvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDIxICsxOTgsMjkgQEAgdm9pZCBSZW5kZXJW
aWRlbzo6cGFpbnRSZXBsYWNlZChQYWludEluZgogICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXll
ciA9IG1lZGlhRWxlbWVudCgpLT5wbGF5ZXIoKTsKICAgICBib29sIGRpc3BsYXlpbmdQb3N0ZXIg
PSB2aWRlb0VsZW1lbnQoKS0+c2hvdWxkRGlzcGxheVBvc3RlckltYWdlKCk7CiAKKyAgICBQYWdl
KiBwYWdlID0gMDsKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAg
ICAgcGFnZSA9IGZyYW1lLT5wYWdlKCk7CisKICAgICBpZiAoIWRpc3BsYXlpbmdQb3N0ZXIpIHsK
LSAgICAgICAgaWYgKCFtZWRpYVBsYXllcikKKyAgICAgICAgaWYgKCFtZWRpYVBsYXllcikgewor
ICAgICAgICAgICAgaWYgKHBhZ2UpCisgICAgICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRV
bnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwogICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAgICAgICAgIHVwZGF0ZVBsYXllcigpOwogICAgIH0KIAogICAg
IExheW91dFJlY3QgcmVjdCA9IHZpZGVvQm94KCk7Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQor
ICAgIGlmIChyZWN0LmlzRW1wdHkoKSkgeworICAgICAgICBpZiAocGFnZSkKKyAgICAgICAgICAg
IHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVj
dCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KICAgICByZWN0Lm1vdmVCeShwYWludE9mZnNl
dCk7CiAKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAgICAgICBp
ZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxl
dmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWludEluZm8ucmVjdCk7Ci0gICAgfQorICAgIGlm
IChwYWdlKQorICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCB2
aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAKICAgICBpZiAoZGlzcGxheWluZ1Bvc3RlcikKICAgICAg
ICAgcGFpbnRJbnRvUmVjdChwYWludEluZm8uY29udGV4dCwgcmVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDEw
OTAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0MCwxMyArMjQwLDE4IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6
cGFpbnRSZXBsYWNlZChQYWludEkKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBkb24ndCBoYXZl
IGtpZHMsIGV4Y2VwdCBpZiB3ZSBoYXZlIGZpbHRlcnMgd2Ugc2hvdWxkIHBhaW50IHRob3NlLgog
ICAgIGlmICghZmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2Vz
ID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdCh0aGlz
KTsKLSAgICAgICAgaWYgKCFyZXNvdXJjZXMgfHwgIXJlc291cmNlcy0+ZmlsdGVyKCkpCisgICAg
ICAgIGlmICghcmVzb3VyY2VzIHx8ICFyZXNvdXJjZXMtPmZpbHRlcigpKSB7CisgICAgICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgeworICAgICAgICAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+
YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBh
aW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICAgICAgcGFnZS0+YWRk
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOwogICAg
IH0KIAogICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8gYmVjYXVzZSBhcHBseVRy
YW5zZm9ybSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCg==
</data>
<flag name="review"
          id="132023"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="132049"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129510</attachid>
            <date>2012-02-29 13:41:50 -0800</date>
            <delta_ts>2012-02-29 14:51:47 -0800</delta_ts>
            <desc>Patch that addresses some comments</desc>
            <filename>for-review-4.txt</filename>
            <type>text/plain</type>
            <size>20935</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTI1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAyLTI5ICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Nzk3MDUKKyAgICAgICAgZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0IHNob3VsZCBiZSBlbmhhbmNlZCB0byBsb29rIGF0IHNpemUgaW5zdGVhZCAKKyAg
ICAgICAgb2YgYSByYXcgdGFsbHkKKyAgICAgICAgLWFuZCBjb3JyZXNwb25kaW5nLQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTA4MjEzMTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBmaXJpbmcgZGlkTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0KCkgd2hlbiBhIHJhdyB0YWxseSBvZiAKKyAgICAgICAgcmVsZXZhbnQg
cGFpbnRlZCBvYmplY3RzIGhhcyByZWFjaGVkIGEgcG9ydC1kZWZpbmVkIHRocmVzaG9sZCwgdGhp
cyBwYXRjaCAKKyAgICAgICAgbG9va3MgYXQgdGhlIHNpemUgb2YgdGhvc2Ugb2JqZWN0cyB3aXRo
IHJlc3BlY3QgdG8gdGhlIHZpZXcgYXJlYS4gVGhlIHBhdGNoIAorICAgICAgICBhbHNvIGxvb2tz
IGF0IHJlbGV2YW50IG9iamVjdHMgdGhhdCBjYW5ub3QgeWV0IGJlIGZ1bGx5IHBhaW50ZWQsIHN1
Y2ggYXMgCisgICAgICAgIGluY3JlbWVudGFsbHkgbG9hZGluZyBpbWFnZXMuIAorCisgICAgICAg
IFdlIG5vIGxvbmdlciBuZWVkIGEgSGFzaFNldCBmb3IgdGhlIHJlbGV2YW50IHBhaW50ZWQgb2Jq
ZWN0cyBzaW5jZSBSZWdpb24gY2FuIAorICAgICAgICBkbyBhbGwgb2YgdGhlIGhlYXZ5IGxpZnRp
bmcuIFdlIG5vdyBoYXZlIGEgUmVnaW9uIGZvciB0aGUgcGFpbnRlZCBhbmQgCisgICAgICAgIHVu
cGFpbnRlZCByZWdpb25zLiBXZSBkbyBuZWVkIGEgSGFzaFNldCBmb3IgdGhlIHVucGFpbnRlZCBv
YmplY3RzIHRob3VnaCwgCisgICAgICAgIGJlY2F1c2Ugd2UgbmVlZCB0byBrbm93IGlmIGEgcGFp
bnRlZCBvYmplY3QgbmVlZHMgdG8gYmUgc3VidHJhY3RlZCBmcm9tIHRoZSAKKyAgICAgICAgdW5w
YWludGVkIHJlZ2lvbiBiZWZvcmUgYmVpbmcgYWRkZWQgdG8gdGhlIHBhaW50ZWQgcmVnaW9uLgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZTo6c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXNldFJlbGV2YW50UGFpbnRlZE9iamVjdENvdW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5oOgorICAgICAgICAoUGFnZSk6CisKKyAgICAgICAgTmV3IGZ1
bmN0aW9uIG9uIFJlZ2lvbiBpdGVyYXRlcyB0aHJvdWdoIHRoZSByZWN0cyBhbmQgY2FsY3VsYXRl
cyB0aGUgdG90YWwgCisgICAgICAgIGFyZWEuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
UmVnaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lvbjo6dG90YWxBcmVhKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oOgorICAg
ICAgICAoUmVnaW9uKToKKworICAgICAgICBSZW1vdmUgY29kZSBmcm9tIHRoZXNlIGNsYXNzZXMg
c2luY2UgdGhleSBhcmUgbm90IGFjdHVhbGx5IHJlbGV2YW50IG9iamVjdHMuCisgICAgICAgICog
cmVuZGVyaW5nL0lubGluZUJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OnBh
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclJlZ2lvbjo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlcGxhY2VkOjpw
YWludCk6CisKKyAgICAgICAgQWxsIG9mIHRoZXNlIG90aGVyIGNhbGxlcnMgc2VuZCBhIHJlY3Qg
dGhhdCBhY3R1YWxseSByZXByZXNlbnRzIHRoZWlyIHNpemUgCisgICAgICAgICh1c3VhbGx5IHRo
ZSB2aXN1YWxPdmVyZmxvd1JlY3QpIGluc3RlYWQgb2YgdGhlIHBhaW50SW5mbydzIHBhaW50UmVj
dCwgYW5kIAorICAgICAgICB0aGV5IGNhbGwgYWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3Qgd2hl
biBhcHByb3ByaWF0ZS4KKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludCk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbWJlZGRlZE9i
amVjdDo6cGFpbnRSZXBsYWNlZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52
YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNl
ZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckltYWdlOjpwYWludFJlcGxhY2VkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlkZW86OnBhaW50UmVwbGFj
ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpwYWludFJlcGxhY2VkKToKKwogMjAxMi0wMi0yOSAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHVz
ZSBvZiBDRyByb3VuZGVkLXJlY3QgcHJpbWl0aXZlcwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAxMDkyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDA5LDI4ICsxMDA5LDQ1IEBAIFBhZ2VWaXNpYmlsaXR5U3RhdGUgUGFnZTo6
dmlzaWJpbGl0eVN0YXQKIH0KICNlbmRpZgogCisvLyBGSVhNRTogZ1BhaW50ZWRPYmplY3RDb3Vu
dGVyVGhyZXNob2xkIGlzIG5vIGxvbmdlciB1c2VkIGZvciBjYWxjdWxhdGluZyByZWxldmFudCBy
ZXBhaW50ZWQgYXJlYXMsCisvLyBhbmQgaXQgc2hvdWxkIGJlIHJlbW92ZWQuIEZvciB0aGUgdGlt
ZSBiZWluZywgaXQgaXMgdXNlZnVsIGJlY2F1c2UgaXQgYWxsb3dzIHVzIHRvIGF2b2lkIGRvaW5n
CisvLyBhbnkgb2YgdGhpcyB3b3JrIGZvciBwb3J0cyB0aGF0IGRvbid0IG1ha2Ugc3VyZSBvZiBk
aWROZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQuIFdlIHNob3VsZAorLy8gcmVtb3ZlIHRo
aXMgd2hlbiB3ZSByZXNvbHZlIDxyZGFyOi8vcHJvYmxlbS8xMDc5MTY4MD4gTmVlZCB0byBtZXJn
ZSBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgCisvLyBhbmQgZGlkTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0CiBzdGF0aWMgdWludDY0X3QgZ1BhaW50ZWRPYmplY3RDb3VudGVy
VGhyZXNob2xkID0gMDsKIAorLy8gVGhlc2UgYXJlIG1hZ2ljYWwgY29uc3RhbnRzIHRoYXQgbWln
aHQgYmUgdHdlYWtlZCBvdmVyIHRpbWUuCitzdGF0aWMgZG91YmxlIGdNaW5pbXVtUGFpbnRlZEFy
ZWFSYXRpbyA9IDAuMTsKK3N0YXRpYyBkb3VibGUgZ01heGltdW1VbnBhaW50ZWRBcmVhUmF0aW8g
PSAwLjE7CisKIHZvaWQgUGFnZTo6c2V0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQ291bnRlclRo
cmVzaG9sZCh1aW50NjRfdCB0aHJlc2hvbGQpCiB7CiAgICAgZ1BhaW50ZWRPYmplY3RDb3VudGVy
VGhyZXNob2xkID0gdGhyZXNob2xkOwogfQogCitib29sIFBhZ2U6OmlzQ291bnRpbmdSZWxldmFu
dFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxl
dmFudFJlcGFpbnRlZE9iamVjdHMgJiYgZ1BhaW50ZWRPYmplY3RDb3VudGVyVGhyZXNob2xkID4g
MDsKK30KKwogdm9pZCBQYWdlOjpzdGFydENvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3Rz
KCkKIHsKICAgICBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgPSB0cnVlOwog
Ci0gICAgLy8gQ2xlYXIgdGhlIEhhc2hTZXQgaW4gY2FzZSB3ZSBkaWRuJ3QgaGl0IHRoZSB0aHJl
c2hvbGQgbGFzdCB0aW1lLgotICAgIG1fcmVsZXZhbnRQYWludGVkUmVuZGVyT2JqZWN0cy5jbGVh
cigpOworICAgIC8vIFJlc2V0IGV2ZXJ5dGhpbmcgaW4gY2FzZSB3ZSBkaWRuJ3QgaGl0IHRoZSB0
aHJlc2hvbGQgbGFzdCB0aW1lLgorICAgIHJlc2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRl
cigpOwogfQogCi12b2lkIFBhZ2U6OmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3QpCit2b2lkIFBhZ2U6
OnJlc2V0UmVsZXZhbnRQYWludGVkT2JqZWN0Q291bnRlcigpCiB7Ci0gICAgaWYgKCFtX2lzQ291
bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMpCi0gICAgICAgIHJldHVybjsKKyAgICBtX3Jl
bGV2YW50VW5wYWludGVkUmVuZGVyT2JqZWN0cy5jbGVhcigpOworICAgIG1fcmVsZXZhbnRQYWlu
dGVkUmVnaW9uID0gUmVnaW9uKCk7CisgICAgbV9yZWxldmFudFVucGFpbnRlZFJlZ2lvbiA9IFJl
Z2lvbigpOworfQogCi0gICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBpZiB0aGVy
ZSBpcyBubyBjb3VudGVyIHRocmVzaG9sZC4KLSAgICBpZiAoIWdQYWludGVkT2JqZWN0Q291bnRl
clRocmVzaG9sZCkKK3ZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEludFJlY3QmIG9iamVjdFBhaW50UmVjdCkKK3sKKyAgICBp
ZiAoIWlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gVGhlIG9iamVjdHMgYXJlIG9ubHkgcmVsZXZhbnQgaWYgdGhleSBhcmUgYmVp
bmcgcGFpbnRlZCB3aXRoaW4gdGhlIHZpZXdSZWN0KCkuCkBAIC0xMDM5LDE2ICsxMDU2LDQ2IEBA
IHZvaWQgUGFnZTo6YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QoUmUKICAgICAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3JlbGV2YW50UGFpbnRlZFJlbmRlck9iamVjdHMuYWRkKG9i
amVjdCk7CisgICAgLy8gSWYgdGhpcyBvYmplY3Qgd2FzIHByZXZpb3VzbHkgY291bnRlZCBhcyBh
biB1bnBhaW50ZWQgb2JqZWN0LCByZW1vdmUgaXQgZnJvbSB0aGF0IEhhc2hTZXQKKyAgICAvLyBh
bmQgY29ycmVzcG9uZGluZyBSZWdpb24uIEZJWE1FOiBUaGlzIGRvZXNuJ3QgZG8gdGhlIHJpZ2h0
IHRoaW5nIGlmIHRoZSBvYmplY3RzIG92ZXJsYXAuCisgICAgaWYgKG1fcmVsZXZhbnRVbnBhaW50
ZWRSZW5kZXJPYmplY3RzLmNvbnRhaW5zKG9iamVjdCkpIHsKKyAgICAgICAgbV9yZWxldmFudFVu
cGFpbnRlZFJlbmRlck9iamVjdHMucmVtb3ZlKG9iamVjdCk7CisgICAgICAgIG1fcmVsZXZhbnRV
bnBhaW50ZWRSZWdpb24uc3VidHJhY3Qob2JqZWN0UGFpbnRSZWN0KTsKKyAgICB9CisKKyAgICBt
X3JlbGV2YW50UGFpbnRlZFJlZ2lvbi51bml0ZShvYmplY3RQYWludFJlY3QpOworCisgICAgUmVu
ZGVyVmlldyogdmlldyA9IG9iamVjdC0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIGZsb2F0IHZpZXdBcmVhID0gdmlldy0+dmlld1JlY3QoKS53aWR0
aCgpICogdmlldy0+dmlld1JlY3QoKS5oZWlnaHQoKTsKKyAgICBmbG9hdCByYXRpb09mVmlld1Ro
YXRJc1BhaW50ZWQgPSBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKSAvIHZpZXdB
cmVhOworICAgIGZsb2F0IHJhdGlvT2ZWaWV3VGhhdElzVW5wYWludGVkID0gbV9yZWxldmFudFVu
cGFpbnRlZFJlZ2lvbi50b3RhbEFyZWEoKSAvIHZpZXdBcmVhOwogCi0gICAgaWYgKG1fcmVsZXZh
bnRQYWludGVkUmVuZGVyT2JqZWN0cy5zaXplKCkgPT0gc3RhdGljX2Nhc3Q8aW50PihnUGFpbnRl
ZE9iamVjdENvdW50ZXJUaHJlc2hvbGQpKSB7CisgICAgaWYgKHJhdGlvT2ZWaWV3VGhhdElzUGFp
bnRlZCA+IGdNaW5pbXVtUGFpbnRlZEFyZWFSYXRpbyAmJiByYXRpb09mVmlld1RoYXRJc1VucGFp
bnRlZCA8IGdNYXhpbXVtVW5wYWludGVkQXJlYVJhdGlvKSB7CiAgICAgICAgIG1faXNDb3VudGlu
Z1JlbGV2YW50UmVwYWludGVkT2JqZWN0cyA9IGZhbHNlOwotICAgICAgICBtX3JlbGV2YW50UGFp
bnRlZFJlbmRlck9iamVjdHMuY2xlYXIoKTsKKyAgICAgICAgcmVzZXRSZWxldmFudFBhaW50ZWRP
YmplY3RDb3VudGVyKCk7CiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKSkK
ICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+ZGlkTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KCk7CiAgICAgfQogfQogCit2b2lkIFBhZ2U6OmFkZFJlbGV2YW50VW5wYWludGVkT2Jq
ZWN0KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBJbnRSZWN0JiBvYmplY3RQYWludFJlY3Qp
Cit7CisgICAgaWYgKCFpc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIFRoZSBvYmplY3RzIGFyZSBvbmx5IHJlbGV2YW50IGlmIHRo
ZXkgYXJlIGJlaW5nIHBhaW50ZWQgd2l0aGluIHRoZSB2aWV3UmVjdCgpLgorICAgIGlmIChSZW5k
ZXJWaWV3KiB2aWV3ID0gb2JqZWN0LT52aWV3KCkpIHsKKyAgICAgICAgaWYgKCFvYmplY3RQYWlu
dFJlY3QuaW50ZXJzZWN0cyhwaXhlbFNuYXBwZWRJbnRSZWN0KHZpZXctPnZpZXdSZWN0KCkpKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3JlbGV2YW50VW5wYWludGVkUmVu
ZGVyT2JqZWN0cy5hZGQob2JqZWN0KTsKKyAgICBtX3JlbGV2YW50VW5wYWludGVkUmVnaW9uLnVu
aXRlKG9iamVjdFBhaW50UmVjdCk7Cit9CisKIFBhZ2U6OlBhZ2VDbGllbnRzOjpQYWdlQ2xpZW50
cygpCiAgICAgOiBjaHJvbWVDbGllbnQoMCkKICAgICAsIGNvbnRleHRNZW51Q2xpZW50KDApCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTA5MjI4KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQYWdl
VmlzaWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlN1cHBs
ZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgpAQCAtMzIwLDkgKzMyMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5SUQ7IH0KIAorICAgICAgICBib29sIGlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHND
b3VudGVyVGhyZXNob2xkKHVpbnQ2NF90KTsKICAgICAgICAgdm9pZCBzdGFydENvdW50aW5nUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3RzKCk7CisgICAgICAgIHZvaWQgcmVzZXRSZWxldmFudFBhaW50
ZWRPYmplY3RDb3VudGVyKCk7CiAgICAgICAgIHZvaWQgYWRkUmVsZXZhbnRSZXBhaW50ZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYgb2JqZWN0UGFpbnRSZWN0KTsKKyAgICAg
ICAgdm9pZCBhZGRSZWxldmFudFVucGFpbnRlZE9iamVjdChSZW5kZXJPYmplY3QqLCBjb25zdCBJ
bnRSZWN0JiBvYmplY3RQYWludFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBp
bml0R3JvdXAoKTsKQEAgLTQxOCw3ICs0MjIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZW5k
aWYKICAgICAgICAgUGxhdGZvcm1EaXNwbGF5SUQgbV9kaXNwbGF5SUQ7CiAKLSAgICAgICAgSGFz
aFNldDxSZW5kZXJPYmplY3QqPiBtX3JlbGV2YW50UGFpbnRlZFJlbmRlck9iamVjdHM7CisgICAg
ICAgIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gbV9yZWxldmFudFVucGFpbnRlZFJlbmRlck9iamVj
dHM7CisgICAgICAgIFJlZ2lvbiBtX3JlbGV2YW50UGFpbnRlZFJlZ2lvbjsKKyAgICAgICAgUmVn
aW9uIG1fcmVsZXZhbnRVbnBhaW50ZWRSZWdpb247CiAgICAgICAgIGJvb2wgbV9pc0NvdW50aW5n
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAkocmV2aXNpb24gMTA5MjI4KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzcsNiArNzcsMjAgQEAgYm9vbCBSZWdpb246OmNvbnRhaW5zKGNvbnN0IEludFBvaW50JiBw
bwogICAgIHJldHVybiBjb250YWlucyhJbnRSZWN0KHBvaW50LCBJbnRTaXplKDEsIDEpKSk7CiB9
CiAKK2ludCBSZWdpb246OnRvdGFsQXJlYSgpIGNvbnN0Cit7CisgICAgVmVjdG9yPEludFJlY3Q+
IHJlY3RzID0gdGhpcy0+cmVjdHMoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IHJlY3RzLnNpemUoKTsK
KyAgICBpbnQgdG90YWxBcmVhID0gMDsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIEludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICB0b3Rh
bEFyZWEgKz0gKHJlY3Qud2lkdGgoKSAqIHJlY3QuaGVpZ2h0KCkpOworICAgIH0KKworICAgIHJl
dHVybiB0b3RhbEFyZWE7Cit9CisKIFJlZ2lvbjo6U2hhcGU6OlNoYXBlKCkKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JlZ2lvbi5oCShyZXZpc2lvbiAxMDky
MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNvbnRhaW5zKGNv
bnN0IEludFBvaW50JikgY29uc3Q7CiAKKyAgICBpbnQgdG90YWxBcmVhKCkgY29uc3Q7CisKICNp
Zm5kZWYgTkRFQlVHCiAgICAgdm9pZCBkdW1wKCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCShyZXZpc2lvbiAxMDkyMjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEz
LDExICsyMTMsNiBAQCB2b2lkIElubGluZUJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluCiAg
ICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290KHJlbmRlcmVyKCkpIHx8IChw
YWludEluZm8ucGhhc2UgIT0gUGFpbnRQaGFzZUZvcmVncm91bmQgJiYgcGFpbnRJbmZvLnBoYXNl
ICE9IFBhaW50UGhhc2VTZWxlY3Rpb24pKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoRnJh
bWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJhbWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFn
ZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdChyZW5kZXJlcigpLCBwYWludEluZm8ucmVjdCk7Ci0gICAgfQotCiAgICAgTGF5b3V0
UG9pbnQgY2hpbGRQb2ludCA9IHBhaW50T2Zmc2V0OwogICAgIGlmIChwYXJlbnQoKS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkgLy8gRmFzdGVyIHRo
YW4gY2FsbGluZyBjb250YWluaW5nQmxvY2soKS4KICAgICAgICAgY2hpbGRQb2ludCA9IHJlbmRl
cmVyKCktPmNvbnRhaW5pbmdCbG9jaygpLT5mbGlwRm9yV3JpdGluZ01vZGVGb3JDaGlsZCh0b1Jl
bmRlckJveChyZW5kZXJlcigpKSwgY2hpbGRQb2ludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCShyZXZpc2lvbiAxMDkyMjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5
Nyw4ICs0OTcsMTQgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoRnJhbWUqIGZyYW1lID0gcmVuZGVyZXIoKS0+ZnJh
bWUoKSkgewotICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICBwYWdlLT5hZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdChyZW5kZXJlcigpLCBwYWludElu
Zm8ucmVjdCk7CisgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IFJpZ2h0IG5vdywgSW5saW5lVGV4dEJveGVzIG5ldmVyIGNhbGwg
YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QoKSBldmVuIHRob3VnaCB0aGV5IG1pZ2h0IAorICAg
ICAgICAgICAgLy8gbGVnaXRpbWF0ZWx5IGJlIHVucGFpbnRlZCBpZiB0aGV5IGFyZSB3YWl0aW5n
IG9uIGEgc2xvdy1sb2FkaW5nIHdlYiBmb250LiBXZSBzaG91bGQgZml4IHRoYXQsIGFuZAorICAg
ICAgICAgICAgLy8gd2hlbiB3ZSBkbywgd2Ugd2lsbCBoYXZlIHRvIGFjY291bnQgZm9yIHRoZSBm
YWN0IHRoZSBJbmxpbmVUZXh0Qm94ZXMgZG8gbm90IGFsd2F5cyBoYXZlIHVuaXF1ZQorICAgICAg
ICAgICAgLy8gcmVuZGVyZXJzIGFuZCBQYWdlIGN1cnJlbnRseSByZWxpZXMgb24gZWFjaCB1bnBh
aW50ZWQgb2JqZWN0IGhhdmluZyBhIHVuaXF1ZSByZW5kZXJlci4KKyAgICAgICAgICAgIGlmIChw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgICAgICAgICAgICAg
cGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QocmVuZGVyZXIoKSwgSW50UmVjdChhZGp1
c3RlZFBhaW50T2Zmc2V0LngoKSwgYWRqdXN0ZWRQYWludE9mZnNldC55KCksIGxvZ2ljYWxXaWR0
aCgpLCBsb2dpY2FsSGVpZ2h0KCkpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChtX3Ry
dW5jYXRpb24gIT0gY05vVHJ1bmNhdGlvbikgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCShyZXZpc2lvbiAxMDkyMjgpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzksMTEgKzEzOSwyMCBAQCB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0
OjpzZXRNaXNzaW5nUGx1CiAKIHZvaWQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CisgICAg
UGFnZSogcGFnZSA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisg
ICAgICAgIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworCiAgICAgaWYgKHBsdWdpbkNyYXNoZWRPcldh
c01pc3NpbmcoKSkgeworICAgICAgICBpZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFp
bnRQaGFzZUZvcmVncm91bmQpCisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFVucGFpbnRl
ZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgICAgIFJlbmRlclJlcGxh
Y2VkOjpwYWludChwYWludEluZm8sIHBhaW50T2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICAKKworICAgIGlmIChwYWdlICYmIHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNl
Rm9yZWdyb3VuZCkKKyAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhp
cywgdmlzdWFsT3ZlcmZsb3dSZWN0KCkpOworCiAgICAgUmVuZGVyUGFydDo6cGFpbnQocGFpbnRJ
bmZvLCBwYWludE9mZnNldCk7CiB9CiAKQEAgLTE2NywxMSArMTc2LDYgQEAgdm9pZCBSZW5kZXJF
bWJlZGRlZE9iamVjdDo6cGFpbnRSZXBsYWNlZAogICAgIGZsb2F0IHRleHRXaWR0aDsKICAgICBp
ZiAoIWdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KHBhaW50T2Zmc2V0LCBjb250ZW50UmVjdCwg
cGF0aCwgcmVwbGFjZW1lbnRUZXh0UmVjdCwgZm9udCwgcnVuLCB0ZXh0V2lkdGgpKQogICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkgewotICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICBwYWdlLT5h
ZGRSZWxldmFudFJlcGFpbnRlZE9iamVjdCh0aGlzLCBwYWludEluZm8ucmVjdCk7Ci0gICAgfQog
ICAgIAogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7
CiAgICAgY29udGV4dC0+Y2xpcChjb250ZW50UmVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckhUTUxDYW52YXMuY3BwCShyZXZpc2lvbiAxMDkyMjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySFRNTENhbnZhcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU4LDEzICs1OCwxNiBAQCBib29sIFJlbmRlckhUTUxDYW52YXM6OnJlcXVpcmVzTGF5
ZXIoKSBjCiAKIHZvaWQgUmVuZGVySFRNTENhbnZhczo6cGFpbnRSZXBsYWNlZChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0KQogeworICAgIExheW91
dFJlY3QgcmVjdCA9IGNvbnRlbnRCb3hSZWN0KCk7CisgICAgcmVjdC5tb3ZlQnkocGFpbnRPZmZz
ZXQpOworCiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVs
ZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOworICAgICAgICBpZiAo
UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWludEluZm8u
cGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgICAgICAgICAgICAgcGFnZS0+YWRk
UmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcmVjdCk7CisgICAgICAgIH0KICAgICB9CiAK
LSAgICBMYXlvdXRSZWN0IHJlY3QgPSBjb250ZW50Qm94UmVjdCgpOwotICAgIHJlY3QubW92ZUJ5
KHBhaW50T2Zmc2V0KTsKICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSA9IHN0eWxlKCktPmlt
YWdlUmVuZGVyaW5nKCkgPT0gSW1hZ2VSZW5kZXJpbmdPcHRpbWl6ZUNvbnRyYXN0OwogICAgIHN0
YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4obm9kZSgpKS0+cGFpbnQocGFpbnRJbmZvLmNv
bnRleHQsIHJlY3QsIHVzZUxvd1F1YWxpdHlTY2FsZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHJldmlzaW9uIDEwOTIyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCwx
MCArMjY0LDE3IEBAIHZvaWQgUmVuZGVySW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0OwogCisgICAg
UGFnZSogcGFnZSA9IDA7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpCisg
ICAgICAgIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOworCiAgICAgaWYgKCFtX2ltYWdlUmVzb3VyY2Ut
Pmhhc0ltYWdlKCkgfHwgbV9pbWFnZVJlc291cmNlLT5lcnJvck9jY3VycmVkKCkpIHsKICAgICAg
ICAgaWYgKHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlU2VsZWN0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgIGlmIChwYWdlICYmIHBhaW50SW5mby5waGFzZSA9PSBQYWlu
dFBoYXNlRm9yZWdyb3VuZCkKKyAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50VW5wYWludGVk
T2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKKwogICAgICAgICBpZiAoY1dpZHRo
ID4gMiAmJiBjSGVpZ2h0ID4gMikgewogICAgICAgICAgICAgLy8gRHJhdyBhbiBvdXRsaW5lIHJl
Y3Qgd2hlcmUgdGhlIGltYWdlIHNob3VsZCBiZS4KICAgICAgICAgICAgIGNvbnRleHQtPnNldFN0
cm9rZVN0eWxlKFNvbGlkU3Ryb2tlKTsKQEAgLTMyNSwxMiArMzMyLDE5IEBAIHZvaWQgUmVuZGVy
SW1hZ2U6OnBhaW50UmVwbGFjZWQoUGFpbnRJbmYKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAo
bV9pbWFnZVJlc291cmNlLT5oYXNJbWFnZSgpICYmIGNXaWR0aCA+IDAgJiYgY0hlaWdodCA+IDAp
IHsKICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWcgPSBtX2ltYWdlUmVzb3VyY2UtPmltYWdlKGNX
aWR0aCwgY0hlaWdodCk7Ci0gICAgICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpCisgICAg
ICAgIGlmICghaW1nIHx8IGltZy0+aXNOdWxsKCkpIHsKKyAgICAgICAgICAgIGlmIChwYWdlICYm
IHBhaW50SW5mby5waGFzZSA9PSBQYWludFBoYXNlRm9yZWdyb3VuZCkKKyAgICAgICAgICAgICAg
ICBwYWdlLT5hZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1Jl
Y3QoKSk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSB0aGlzLT5mcmFtZSgpKSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRo
aXMsIHBhaW50SW5mby5yZWN0KTsKKyAgICBpZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0g
UGFpbnRQaGFzZUZvcmVncm91bmQpIHsKKyAgICAgICAgLy8gRm9yIG5vdywgY291bnQgaW1hZ2Vz
IGFzIHVucGFpbnRlZCBpZiB0aGV5IGFyZSBzdGlsbCBwcm9ncmVzc2l2ZWx5IGxvYWRpbmcuIFdl
IG1heSB3YW50IAorICAgICAgICAvLyB0byByZWZpbmUgdGhpcyBpbiB0aGUgZnV0dXJlIHRvIGFj
Y291bnQgZm9yIHRoZSBwb3J0aW9uIG9mIHRoZSBpbWFnZSB0aGF0IGhhcyBwYWludGVkLgorICAg
ICAgICBpZiAoY2FjaGVkSW1hZ2UoKS0+aXNMb2FkaW5nKCkpCisgICAgICAgICAgICBwYWdlLT5h
ZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCh0aGlzLCB2aXN1YWxPdmVyZmxvd1JlY3QoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0
KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKICAgICB9CiAKICNpZiBQTEFURk9STShNQUMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcAkocmV2aXNp
b24gMTA5MjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDYgQEAgdm9pZCBSZW5kZXJSZWdpb246OnBh
aW50UmVwbGFjZWQoUGFpbnRJbgogICAgIGlmICghbV9mbG93VGhyZWFkIHx8ICFpc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgp
KSB7Ci0gICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAg
IHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHBhaW50SW5mby5yZWN0KTsK
LSAgICB9Ci0KICAgICBzZXRSZWdpb25Cb3hlc1JlZ2lvblN0eWxlKCk7CiAgICAgbV9mbG93VGhy
ZWFkLT5wYWludEludG9SZWdpb24ocGFpbnRJbmZvLCB0aGlzLCBMYXlvdXRQb2ludChwYWludE9m
ZnNldC54KCkgKyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBwYWludE9mZnNldC55KCkg
KyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkpOwogICAgIHJlc3RvcmVSZWdpb25Cb3hlc09y
aWdpbmFsU3R5bGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBs
YWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
cGxhY2VkLmNwcAkocmV2aXNpb24gMTA5MjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclJlcGxhY2VkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDExICsxMzcsNiBAQCB2
b2lkIFJlbmRlclJlcGxhY2VkOjpwYWludChQYWludEluZm8mIHBhCiAgICAgICAgIGRyYXdTZWxl
Y3Rpb25UaW50ID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMt
PmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAg
ICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZv
LnJlY3QpOwotICAgIH0KLQogICAgIGJvb2wgY29tcGxldGVseUNsaXBwZWRPdXQgPSBmYWxzZTsK
ICAgICBpZiAoc3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkpIHsKICAgICAgICAgTGF5b3V0UmVj
dCBib3JkZXJSZWN0ID0gTGF5b3V0UmVjdChhZGp1c3RlZFBhaW50T2Zmc2V0LCBzaXplKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCShyZXZpc2lvbiAx
MDkyMjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlkZW8uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTgsMjEgKzE5OCwyOSBAQCB2b2lkIFJlbmRlclZpZGVvOjpwYWludFJl
cGxhY2VkKFBhaW50SW5mCiAgICAgTWVkaWFQbGF5ZXIqIG1lZGlhUGxheWVyID0gbWVkaWFFbGVt
ZW50KCktPnBsYXllcigpOwogICAgIGJvb2wgZGlzcGxheWluZ1Bvc3RlciA9IHZpZGVvRWxlbWVu
dCgpLT5zaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKTsKIAorICAgIFBhZ2UqIHBhZ2UgPSAwOwor
ICAgIGlmIChGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpKQorICAgICAgICBwYWdlID0gZnJh
bWUtPnBhZ2UoKTsKKwogICAgIGlmICghZGlzcGxheWluZ1Bvc3RlcikgewotICAgICAgICBpZiAo
IW1lZGlhUGxheWVyKQorICAgICAgICBpZiAoIW1lZGlhUGxheWVyKSB7CisgICAgICAgICAgICBp
ZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAg
ICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFs
T3ZlcmZsb3dSZWN0KCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgICAg
IHVwZGF0ZVBsYXllcigpOwogICAgIH0KIAogICAgIExheW91dFJlY3QgcmVjdCA9IHZpZGVvQm94
KCk7Ci0gICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChyZWN0LmlzRW1wdHkoKSkgewor
ICAgICAgICBpZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91
bmQpCisgICAgICAgICAgICBwYWdlLT5hZGRSZWxldmFudFVucGFpbnRlZE9iamVjdCh0aGlzLCB2
aXN1YWxPdmVyZmxvd1JlY3QoKSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgcmVjdC5t
b3ZlQnkocGFpbnRPZmZzZXQpOwogCi0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAg
ICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3Qp
OwotICAgIH0KKyAgICBpZiAocGFnZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZv
cmVncm91bmQpCisgICAgICAgIHBhZ2UtPmFkZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMs
IHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKIAogICAgIGlmIChkaXNwbGF5aW5nUG9zdGVyKQogICAg
ICAgICBwYWludEludG9SZWN0KHBhaW50SW5mby5jb250ZXh0LCByZWN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAkocmV2aXNpb24g
MTA5MjI4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQ5LDE3ICsyNDksMjIgQEAgdm9pZCBSZW5kZXJTVkdSb290
OjpwYWludFJlcGxhY2VkKFBhaW50SQogICAgIGlmIChwYWludEluZm8uY29udGV4dC0+cGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBQYWdlKiBwYWdlID0gMDsKKyAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKSkKKyAgICAgICAgcGFnZSA9IGZyYW1l
LT5wYWdlKCk7CisKICAgICAvLyBEb24ndCBwYWludCBpZiB3ZSBkb24ndCBoYXZlIGtpZHMsIGV4
Y2VwdCBpZiB3ZSBoYXZlIGZpbHRlcnMgd2Ugc2hvdWxkIHBhaW50IHRob3NlLgogICAgIGlmICgh
Zmlyc3RDaGlsZCgpKSB7CiAgICAgICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVz
b3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdCh0aGlzKTsKLSAgICAg
ICAgaWYgKCFyZXNvdXJjZXMgfHwgIXJlc291cmNlcy0+ZmlsdGVyKCkpCisgICAgICAgIGlmICgh
cmVzb3VyY2VzIHx8ICFyZXNvdXJjZXMtPmZpbHRlcigpKSB7CisgICAgICAgICAgICBpZiAocGFn
ZSAmJiBwYWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgICAgICAg
ICAgICAgcGFnZS0+YWRkUmVsZXZhbnRVbnBhaW50ZWRPYmplY3QodGhpcywgdmlzdWFsT3ZlcmZs
b3dSZWN0KCkpOwogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQogCi0gICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1lKCkpIHsKLSAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+YWRkUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3QodGhpcywgcGFpbnRJbmZvLnJlY3QpOwotICAgIH0KKyAgICBpZiAocGFnZSAmJiBw
YWludEluZm8ucGhhc2UgPT0gUGFpbnRQaGFzZUZvcmVncm91bmQpCisgICAgICAgIHBhZ2UtPmFk
ZFJlbGV2YW50UmVwYWludGVkT2JqZWN0KHRoaXMsIHZpc3VhbE92ZXJmbG93UmVjdCgpKTsKIAog
ICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBQYWludEluZm8gYmVjYXVzZSBhcHBseVRyYW5zZm9y
bSB3aWxsIG1vZGlmeSB0aGUgZGFtYWdlIHJlY3QuCiAgICAgUGFpbnRJbmZvIGNoaWxkUGFpbnRJ
bmZvKHBhaW50SW5mbyk7Cg==
</data>
<flag name="review"
          id="132238"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>