<?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>95255</bug_id>
          
          <creation_ts>2012-08-28 15:33:52 -0700</creation_ts>
          <short_desc>Make RenderBox::computeInlineDirectionMargins const</short_desc>
          <delta_ts>2012-08-30 10:32:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>94982</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Tony Chang">tony</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>706795</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-28 15:33:52 -0700</bug_when>
    <thetext>Make RenderBox::computeInlineDirectionMargins const</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706799</commentid>
    <comment_count>1</comment_count>
      <attachid>161073</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-28 15:38:30 -0700</bug_when>
    <thetext>Created attachment 161073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706837</commentid>
    <comment_count>2</comment_count>
      <attachid>161073</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-28 16:16:56 -0700</bug_when>
    <thetext>Comment on attachment 161073
Patch

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

&gt; Source/WebCore/rendering/RenderBox.cpp:1718
&gt; +            cb-&gt;style()-&gt;isLeftToRightDirection() == style()-&gt;isLeftToRightDirection() ? marginValues.m_start : marginValues.m_end,
&gt; +            cb-&gt;style()-&gt;isLeftToRightDirection() == style()-&gt;isLeftToRightDirection() ? marginValues.m_end : marginValues.m_start);

This would be a lot more readable with a local bool, e.g. hasInvertedDirection?

&gt; Source/WebCore/rendering/RenderBox.cpp:1961
&gt; +static bool shouldFlipBeforeAfterMargins(WritingMode containingBlock, WritingMode child)

I think these should be containingBlockWritingMode and childWritingMode. I know it&apos;s verbose, but otherwise the code below is very confusing.

&gt; Source/WebCore/rendering/RenderBox.cpp:1974
&gt; +    if ((containingBlock == TopToBottomWritingMode &amp;&amp; child == LeftToRightWritingMode)
&gt; +        || (containingBlock == BottomToTopWritingMode &amp;&amp; child == LeftToRightWritingMode)
&gt; +        || (containingBlock == RightToLeftWritingMode &amp;&amp; child == TopToBottomWritingMode)
&gt; +        || (containingBlock == LeftToRightWritingMode &amp;&amp; child == TopToBottomWritingMode))
&gt; +        return false;
&gt; +    if ((containingBlock == TopToBottomWritingMode &amp;&amp; child == RightToLeftWritingMode)
&gt; +        || (containingBlock == BottomToTopWritingMode &amp;&amp; child == RightToLeftWritingMode)
&gt; +        || (containingBlock == RightToLeftWritingMode &amp;&amp; child == BottomToTopWritingMode)
&gt; +        || (containingBlock == LeftToRightWritingMode &amp;&amp; child == BottomToTopWritingMode))
&gt; +        return true;
&gt; +    ASSERT_NOT_REACHED(); // Writing modes should be perpendicular.
&gt; +    return false;

Did you try writing this as a switch statement? I imagine it&apos;d be much more readable, e.g.

switch(containingBlockWritingMode) {
case TopToBottomWritingMode:
    return childWritingMode != LeftToRightWritingMode;
...
}

&gt; Source/WebCore/rendering/RenderBox.cpp:2005
&gt; +                    shouldFlipBeforeAfterMargins(cb-&gt;style()-&gt;writingMode(), style()-&gt;writingMode()) ? marginValues.m_after : marginValues.m_before,
&gt; +                    shouldFlipBeforeAfterMargins(cb-&gt;style()-&gt;writingMode(), style()-&gt;writingMode()) ? marginValues.m_before : marginValues.m_after);

Ditto. Would be easier to read with a local bool.

&gt; Source/WebCore/rendering/RenderBox.cpp:2060
&gt; +                    shouldFlipBeforeAfterMargins(cb-&gt;style()-&gt;writingMode(), style()-&gt;writingMode()) ? marginValues.m_after : marginValues.m_before,
&gt; +                    shouldFlipBeforeAfterMargins(cb-&gt;style()-&gt;writingMode(), style()-&gt;writingMode()) ? marginValues.m_before : marginValues.m_after);

Ditto

&gt; Source/WebCore/rendering/RenderTable.cpp:266
&gt; +            cb-&gt;style()-&gt;isLeftToRightDirection() == style()-&gt;isLeftToRightDirection() ? marginValues.m_start : marginValues.m_end,
&gt; +            cb-&gt;style()-&gt;isLeftToRightDirection() == style()-&gt;isLeftToRightDirection() ? marginValues.m_end : marginValues.m_start);

Ditto

&gt; LayoutTests/fast/block/margins-perpendicular-containing-block.html:15
&gt; +.horizontal, .vertical {
&gt; +    position: relative;
&gt; +}
&gt; +.horizontal div {
&gt; +    margin-left: 10px;
&gt; +    margin-right: 20px;
&gt; +}
&gt; +.vertical div {
&gt; +    margin-top: 10px;
&gt; +    margin-bottom: 20px;
&gt; +}

Could you simplify this by always setting all four margin sides? That would also give slightly better test coverage.
.container {
    position: relative;
    margin: 10px 20px 20px 10px;
}

&gt; LayoutTests/fast/block/margins-perpendicular-containing-block.html:32
&gt; +&lt;div style=&quot;-webkit-writing-mode: horizontal-tb&quot; class=&quot;horizontal&quot;&gt;
&gt; +&lt;div data-offset-x=10 style=&quot;-webkit-writing-mode: vertical-rl&quot;&gt;
&gt; +    &lt;tr&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;/tr&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;div data-offset-x=10 style=&quot;-webkit-writing-mode: vertical-lr&quot;&gt;
&gt; +    &lt;tr&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;/tr&gt;
&gt; +&lt;/div&gt;
&gt; +&lt;/div&gt;

This is fine. I&apos;d rather see each case generated from script. Then it&apos;s easier to see that each case is covered. But, meh, up to you.

&gt; LayoutTests/fast/table/margins-perpendicular-containing-block.html:1
&gt; +&lt;!DOCTYPE html&gt;

Ditto the comments on the other perpendicular-containing-block.html test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706917</commentid>
    <comment_count>3</comment_count>
      <attachid>161099</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-28 17:33:55 -0700</bug_when>
    <thetext>Created attachment 161099
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706919</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-28 17:36:20 -0700</bug_when>
    <thetext>I did all the suggestions except those mentioned below.

(In reply to comment #2)
&gt; (From update of attachment 161073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161073&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderBox.cpp:1974
&gt; &gt; +    if ((containingBlock == TopToBottomWritingMode &amp;&amp; child == LeftToRightWritingMode)
&gt; &gt; +        || (containingBlock == BottomToTopWritingMode &amp;&amp; child == LeftToRightWritingMode)
&gt; &gt; +        || (containingBlock == RightToLeftWritingMode &amp;&amp; child == TopToBottomWritingMode)
&gt; &gt; +        || (containingBlock == LeftToRightWritingMode &amp;&amp; child == TopToBottomWritingMode))
&gt; &gt; +        return false;
&gt; &gt; +    if ((containingBlock == TopToBottomWritingMode &amp;&amp; child == RightToLeftWritingMode)
&gt; &gt; +        || (containingBlock == BottomToTopWritingMode &amp;&amp; child == RightToLeftWritingMode)
&gt; &gt; +        || (containingBlock == RightToLeftWritingMode &amp;&amp; child == BottomToTopWritingMode)
&gt; &gt; +        || (containingBlock == LeftToRightWritingMode &amp;&amp; child == BottomToTopWritingMode))
&gt; &gt; +        return true;
&gt; &gt; +    ASSERT_NOT_REACHED(); // Writing modes should be perpendicular.
&gt; &gt; +    return false;
&gt; 
&gt; Did you try writing this as a switch statement? I imagine it&apos;d be much more readable, e.g.
&gt; 
&gt; switch(containingBlockWritingMode) {
&gt; case TopToBottomWritingMode:
&gt;     return childWritingMode != LeftToRightWritingMode;
&gt; ...
&gt; }

That&apos;s not quite correct. There are 16 possible combinations, but only 8 are valid (there are 8 perpendicular cases). I wanted the ASSERT_NOT_REACHED() to make sure that this function is only used in the valid cases.

&gt; &gt; LayoutTests/fast/block/margins-perpendicular-containing-block.html:32
&gt; &gt; +&lt;div style=&quot;-webkit-writing-mode: horizontal-tb&quot; class=&quot;horizontal&quot;&gt;
&gt; &gt; +&lt;div data-offset-x=10 style=&quot;-webkit-writing-mode: vertical-rl&quot;&gt;
&gt; &gt; +    &lt;tr&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;/tr&gt;
&gt; &gt; +&lt;/div&gt;
&gt; &gt; +&lt;div data-offset-x=10 style=&quot;-webkit-writing-mode: vertical-lr&quot;&gt;
&gt; &gt; +    &lt;tr&gt;&lt;td&gt;Hello&lt;/td&gt;&lt;/tr&gt;
&gt; &gt; +&lt;/div&gt;
&gt; &gt; +&lt;/div&gt;
&gt; 
&gt; This is fine. I&apos;d rather see each case generated from script. Then it&apos;s easier to see that each case is covered. But, meh, up to you.

Generating doesn&apos;t save much since it&apos;s only testing perpendicular cases, not all 16 cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>707991</commentid>
    <comment_count>5</comment_count>
      <attachid>161099</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-29 16:05:43 -0700</bug_when>
    <thetext>Comment on attachment 161099
Patch

Looks like fast/writing-mode/inline-direction-positioning.html is failing on the ews bot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708008</commentid>
    <comment_count>6</comment_count>
      <attachid>161099</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-29 16:14:57 -0700</bug_when>
    <thetext>Comment on attachment 161099
Patch

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

New failing tests:
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div.html
fast/loader/unload-form-post-about-blank.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-scrolled.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-outer.html
fullscreen/video-controls-timeline.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe.html
fast/canvas/webgl/shader-precision-format.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-composite.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-clipped.html
http/tests/xmlhttprequest/zero-length-response.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner-late-composite.html
fast/repaint/block-selection-gap-in-composited-layer.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scrolled.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-scrolled-inner.html
fast/frames/cached-frame-counter.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-2-iframe-composited-inner.html
fast/writing-mode/inline-direction-positioning.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-noncomposite.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-scrolled-late-composite.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-layout-change-2.html
fast/loader/local-CSS-from-local.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-overflow-div-composited-scroll-clip.html
platform/chromium-linux/compositing/gestures/gesture-tapHighlight-1-iframe-composited-scrolled-late-noncomposite.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708016</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-29 16:21:05 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=161099&amp;action=review

&gt; Source/WebCore/rendering/RenderBox.cpp:1975
&gt; +    if ((containingBlockWritingMode == TopToBottomWritingMode &amp;&amp; childWritingMode == LeftToRightWritingMode)
&gt; +        || (containingBlockWritingMode == BottomToTopWritingMode &amp;&amp; childWritingMode == LeftToRightWritingMode)
&gt; +        || (containingBlockWritingMode == RightToLeftWritingMode &amp;&amp; childWritingMode == TopToBottomWritingMode)
&gt; +        || (containingBlockWritingMode == LeftToRightWritingMode &amp;&amp; childWritingMode == TopToBottomWritingMode))
&gt; +        return false;
&gt; +    if ((containingBlockWritingMode == TopToBottomWritingMode &amp;&amp; childWritingMode == RightToLeftWritingMode)
&gt; +        || (containingBlockWritingMode == BottomToTopWritingMode &amp;&amp; childWritingMode == RightToLeftWritingMode)
&gt; +        || (containingBlockWritingMode == RightToLeftWritingMode &amp;&amp; childWritingMode == BottomToTopWritingMode)
&gt; +        || (containingBlockWritingMode == LeftToRightWritingMode &amp;&amp; childWritingMode == BottomToTopWritingMode))
&gt; +        return true;
&gt; +    ASSERT_NOT_REACHED(); // Writing modes should be perpendicular.
&gt; +    return false;

How about changing this function to take the containingblock and the child itself then doing the following?:
ASSERT(containingBlock-&gt;isHorizontalWritingMode() != child-&gt;isHorizontalWritingMode());
WritingMode childWritingMode = child-&gt;style()-&gt;writingMode();
switch (containingBlock-&gt;style()-&gt;writingMode()) {
    case TopToBottomWritingMode:
        return childWritingMode != LeftToRightWritingMode;
    ...
}

I think that&apos;s cleaner. It makes the calling sites smaller and asserts that the writing modes are perpendicular instead of having a comment to that affect.

Not a big deal, I just find this really hard to read.

&gt; Source/WebCore/rendering/RenderBox.cpp:2004
&gt; +                bool hasInvertedDirection = shouldFlipBeforeAfterMargins(cb-&gt;style()-&gt;writingMode(), style()-&gt;writingMode());

s/hasInvertedDirection/shouldFlipBeforeAfter? Since these aren&apos;t actually directions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708043</commentid>
    <comment_count>8</comment_count>
      <attachid>161355</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-29 16:41:03 -0700</bug_when>
    <thetext>Created attachment 161355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708050</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-08-29 16:44:34 -0700</bug_when>
    <thetext>I forgot that we need to swap before/after if the containing block is rtl.  Added some tests cases for that too.

I also made use of a switch and renamed the local variable to shouldFlipBeforeAfter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708799</commentid>
    <comment_count>10</comment_count>
      <attachid>161355</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 10:32:36 -0700</bug_when>
    <thetext>Comment on attachment 161355
Patch

Clearing flags on attachment: 161355

Committed r127157: &lt;http://trac.webkit.org/changeset/127157&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708801</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 10:32:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161073</attachid>
            <date>2012-08-28 15:38:30 -0700</date>
            <delta_ts>2012-08-28 17:33:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95255-20120828153904.patch</filename>
            <type>text/plain</type>
            <size>20928</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFjYWRkZGZmMzc1NDE0
YzQ2YWE1OGNhNjdkOGZiNzQ0NDM4MTEyMC4uZGVkNjQ5NWViYWVhZjM5MDRkM2QyNzE4NjExZGQw
N2ZhMDM4YTQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA4LTI4ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5kZXJCb3g6OmNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCBvZiBtYWtpbmcgY29tcHV0ZUxv
Z2ljYWx7SGVpZ2h0LFdpZHRofSByZXR1cm4gY29tcHV0ZWQgdmFsdWVzIHJhdGhlciB0aGFuCisg
ICAgICAgIG11dGF0aW5nIHRoZSBSZW5kZXJCb3ggZGlyZWN0bHkuIFRoaXMgbWFrZXMgYSBzdWJt
ZXRob2QgY29uc3QuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5k
aWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbAorICAgICAgICAgICAgICAgZmFzdC90YWJsZS9t
YXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24uaHRtbAorICAgICAgICAgICAgICAgZmFzdC90
YWJsZS9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCisKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKTogSGFuZGxlIGZsaXBwZWQgdGV4dCBkaXJl
Y3Rpb24gbWFudWFsbHkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVJbmxp
bmVEaXJlY3Rpb25NYXJnaW5zKTogTWFrZSBjb25zdCB3aXRoIG91dCBwYXJhbWV0ZXJzLgorICAg
ICAgICBObyBsb25nZXIgbmVlZCB0byBjYWxsIHNldE1hcmdpbntTdGFydCxFbmR9Rm9yQ2hpbGQu
CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRGbGlwQmVmb3JlQWZ0ZXJNYXJnaW5zKTogSGVscGVy
IGZ1bmN0aW9uIHRvIGZpZ3VyZSBvdXQgaG93IHRvIG1hcCBhIGxvZ2ljYWwKKyAgICAgICAgd3Jp
dGluZyBtb2RlIGRpcmVjdGlvbiB0byBhbm90aGVyIGxvZ2ljYWwgd3JpdGluZyBtb2RlIGRpcmVj
dGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQp
OiBVc2UgY29uc3QgbWV0aG9kLiBUaGlzIGFsc28gbWFrZXMgaXQgbW9yZQorICAgICAgICBvYnZp
b3VzIHRoYXQgd2hlbiBjb21wdXRpbmcgdGhlIGhlaWdodCwgd2Ugb25seSBtb2RpZnkgdGhlIGJl
Zm9yZS9hZnRlciBtYXJnaW5zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAg
ICAgICAgKFJlbmRlckJveCk6IE1ha2UgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMgY29u
c3Qgd2l0aCBvdXQgcGFyYW1ldGVycy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgp
OiBTYW1lIGFzIFJlbmRlckJveDo6Y29tcHR1ZUxvZ2ljYWxXaWR0aElucmVnaW9uLgorCiAyMDEy
LTA4LTI0ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBDbGVhbiB1cCBkZXBlbmRlbmNpZXMgb2YgV2ViU2Nyb2xsYmFyIGFuZCBXZWJT
Y3JvbGxiYXJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBk
NjkyYmNkOWU5MjM2OTRiMTU5OThlNjVlMDNkOTU1MzNkYzc0YWExLi43ODUzNWRkM2E1YzhkMTQ2
ODY2MTc5ZjI4YzEwODJkM2RlOGQ5MTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcApAQCAtMTcxMiw3ICsxNzEyLDEyIEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbFdpZHRoSW5SZWdpb24oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVuaXQgb2ZmCiAg
ICAgICAgIExheW91dFVuaXQgY29udGFpbmVyTG9naWNhbFdpZHRoRm9yQXV0b01hcmdpbnMgPSBj
b250YWluZXJMb2dpY2FsV2lkdGg7CiAgICAgICAgIGlmIChhdm9pZHNGbG9hdHMoKSAmJiBjYi0+
Y29udGFpbnNGbG9hdHMoKSkKICAgICAgICAgICAgIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1
dG9NYXJnaW5zID0gY29udGFpbmluZ0Jsb2NrQXZhaWxhYmxlTGluZVdpZHRoSW5SZWdpb24ocmVn
aW9uLCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQYWdlKTsKLSAgICAgICAgY29tcHV0ZUlu
bGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJn
aW5zLCBsb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIENvbXB1dGVkTWFyZ2luVmFsdWVzIG1hcmdp
blZhbHVlczsKKyAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRh
aW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zLCBsb2dpY2FsV2lkdGgoKSwKKyAgICAgICAg
ICAgIGNiLT5zdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPT0gc3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID8gbWFyZ2luVmFsdWVzLm1fc3RhcnQgOiBtYXJnaW5WYWx1
ZXMubV9lbmQsCisgICAgICAgICAgICBjYi0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID09IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IG1hcmdpblZhbHVlcy5t
X2VuZCA6IG1hcmdpblZhbHVlcy5tX3N0YXJ0KTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQobWFy
Z2luVmFsdWVzLm1fc3RhcnQpOworICAgICAgICBzZXRNYXJnaW5FbmQobWFyZ2luVmFsdWVzLm1f
ZW5kKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Js
b2NrICYmIGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAmJiBjb250YWluZXJMb2dpY2FsV2lkdGggIT0g
KGxvZ2ljYWxXaWR0aCgpICsgbWFyZ2luU3RhcnQoKSArIG1hcmdpbkVuZCgpKQpAQCAtMTgyMCw3
ICsxODI1LDcgQEAgYm9vbCBSZW5kZXJCb3g6OnNpemVzTG9naWNhbFdpZHRoVG9GaXRDb250ZW50
KFNpemVUeXBlIHdpZHRoVHlwZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
UmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29u
dGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0IGNvbnRhaW5lcldpZHRoLCBMYXlvdXRVbml0IGNoaWxk
V2lkdGgpCit2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVu
ZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5b3V0VW5pdCBjb250YWluZXJXaWR0aCwgTGF5
b3V0VW5pdCBjaGlsZFdpZHRoLCBMYXlvdXRVbml0JiBtYXJnaW5TdGFydCwgTGF5b3V0VW5pdCYg
bWFyZ2luRW5kKSBjb25zdAogewogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBjb250YWluaW5nQmxv
Y2tTdHlsZSA9IGNvbnRhaW5pbmdCbG9jay0+c3R5bGUoKTsKICAgICBMZW5ndGggbWFyZ2luU3Rh
cnRMZW5ndGggPSBzdHlsZSgpLT5tYXJnaW5TdGFydFVzaW5nKGNvbnRhaW5pbmdCbG9ja1N0eWxl
KTsKQEAgLTE4MjksOCArMTgzNCw4IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGly
ZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBMYXlvCiAKICAgICBp
ZiAoaXNGbG9hdGluZygpIHx8IGlzSW5saW5lKCkpIHsKICAgICAgICAgLy8gSW5saW5lIGJsb2Nr
cy90YWJsZXMgYW5kIGZsb2F0cyBkb24ndCBoYXZlIHRoZWlyIG1hcmdpbnMgaW5jcmVhc2VkLgot
ICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVu
ZGVyVmlldykpOwotICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNoaWxk
KHRoaXMsIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoLCByZW5kZXJWaWV3KSk7CisgICAgICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7Cisg
ICAgICAgIG1hcmdpbkVuZCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgs
IGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTg0MSwxNSArMTg0NiwxNSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVj
dGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5bwogICAgICAgICBM
YXlvdXRVbml0IG1hcmdpblN0YXJ0V2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2lu
U3RhcnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKICAgICAgICAgTGF5b3V0
VW5pdCBtYXJnaW5FbmRXaWR0aCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5n
dGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KTsKICAgICAgICAgTGF5b3V0VW5pdCBjZW50
ZXJlZE1hcmdpbkJveFN0YXJ0ID0gbWF4PExheW91dFVuaXQ+KDAsIChjb250YWluZXJXaWR0aCAt
IGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydFdpZHRoIC0gbWFyZ2luRW5kV2lkdGgpIC8gMik7Ci0g
ICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjZW50
ZXJlZE1hcmdpbkJveFN0YXJ0ICsgbWFyZ2luU3RhcnRXaWR0aCk7Ci0gICAgICAgIGNvbnRhaW5p
bmdCbG9jay0+c2V0TWFyZ2luRW5kRm9yQ2hpbGQodGhpcywgY29udGFpbmVyV2lkdGggLSBjaGls
ZFdpZHRoIC0gY29udGFpbmluZ0Jsb2NrLT5tYXJnaW5TdGFydEZvckNoaWxkKHRoaXMpICsgbWFy
Z2luRW5kV2lkdGgpOworICAgICAgICBtYXJnaW5TdGFydCA9IGNlbnRlcmVkTWFyZ2luQm94U3Rh
cnQgKyBtYXJnaW5TdGFydFdpZHRoOworICAgICAgICBtYXJnaW5FbmQgPSBjb250YWluZXJXaWR0
aCAtIGNoaWxkV2lkdGggLSBtYXJnaW5TdGFydCArIG1hcmdpbkVuZFdpZHRoOwogICAgICAgICBy
ZXR1cm47CiAgICAgfSAKICAgICAKICAgICAvLyBDYXNlIFR3bzogVGhlIG9iamVjdCBpcyBiZWlu
ZyBwdXNoZWQgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYXZhaWxhYmxl
IGxvZ2ljYWwgd2lkdGguCiAgICAgaWYgKG1hcmdpbkVuZExlbmd0aC5pc0F1dG8oKSAmJiBjaGls
ZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRN
YXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIHZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3Ro
LCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldykpOwotICAgICAgICBjb250YWluaW5nQmxvY2st
PnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAt
IGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSk7CisgICAgICAgIG1h
cmdpblN0YXJ0ID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoLCByZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmVyV2lkdGggLSBj
aGlsZFdpZHRoIC0gbWFyZ2luU3RhcnQ7CiAgICAgICAgIHJldHVybjsKICAgICB9IAogICAgIApA
QCAtMTg1NywxNSArMTg2MiwxNSBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVj
dGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5bwogICAgIGJvb2wg
cHVzaFRvRW5kRnJvbVRleHRBbGlnbiA9ICFtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgKCgh
Y29udGFpbmluZ0Jsb2NrU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWlu
aW5nQmxvY2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX0xFRlQpCiAgICAgICAgIHx8IChj
b250YWluaW5nQmxvY2tTdHlsZS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpICYmIGNvbnRhaW5p
bmdCbG9ja1N0eWxlLT50ZXh0QWxpZ24oKSA9PSBXRUJLSVRfUklHSFQpKTsKICAgICBpZiAoKG1h
cmdpblN0YXJ0TGVuZ3RoLmlzQXV0bygpICYmIGNoaWxkV2lkdGggPCBjb250YWluZXJXaWR0aCkg
fHwgcHVzaFRvRW5kRnJvbVRleHRBbGlnbikgewotICAgICAgICBjb250YWluaW5nQmxvY2stPnNl
dE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIHZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwg
Y29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5z
ZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAt
IGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luRW5kRm9yQ2hpbGQodGhpcykpOworICAgICAgICBtYXJn
aW5FbmQgPSB2YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCBy
ZW5kZXJWaWV3KTsKKyAgICAgICAgbWFyZ2luU3RhcnQgPSBjb250YWluZXJXaWR0aCAtIGNoaWxk
V2lkdGggLSBtYXJnaW5FbmQ7CiAgICAgICAgIHJldHVybjsKICAgICB9IAogICAgIAogICAgIC8v
IENhc2UgRm91cjogRWl0aGVyIG5vIGF1dG8gbWFyZ2lucywgb3Igb3VyIHdpZHRoIGlzID49IHRo
ZSBjb250YWluZXIgd2lkdGggKGNzczIuMSwgMTAuMy4zKS4gIEluIHRoYXQgY2FzZQogICAgIC8v
IGF1dG8gbWFyZ2lucyB3aWxsIGp1c3QgdHVybiBpbnRvIDAuCi0gICAgY29udGFpbmluZ0Jsb2Nr
LT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJn
aW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICBjb250YWlu
aW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIG1pbmltdW1WYWx1ZUZvckxlbmd0
aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KSk7CisgICAgbWFy
Z2luU3RhcnQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRh
aW5lcldpZHRoLCByZW5kZXJWaWV3KTsKKyAgICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CiB9CiAK
IFJlbmRlckJveFJlZ2lvbkluZm8qIFJlbmRlckJveDo6cmVuZGVyQm94UmVnaW9uSW5mbyhSZW5k
ZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0VW5pdCBvZmZzZXRGcm9tTG9naWNhbFRvcE9mRmlyc3RQ
YWdlLCBSZW5kZXJCb3hSZWdpb25JbmZvRmxhZ3MgY2FjaGVGbGFnKSBjb25zdApAQCAtMTk1Myw2
ICsxOTU4LDIyIEBAIFJlbmRlckJveFJlZ2lvbkluZm8qIFJlbmRlckJveDo6cmVuZGVyQm94UmVn
aW9uSW5mbyhSZW5kZXJSZWdpb24qIHJlZ2lvbiwgTGF5b3V0CiAgICAgcmV0dXJuIG5ldyBSZW5k
ZXJCb3hSZWdpb25JbmZvKGxvZ2ljYWxMZWZ0T2Zmc2V0LCBsb2dpY2FsV2lkdGhJblJlZ2lvbiwg
aXNTaGlmdGVkKTsKIH0KIAorc3RhdGljIGJvb2wgc2hvdWxkRmxpcEJlZm9yZUFmdGVyTWFyZ2lu
cyhXcml0aW5nTW9kZSBjb250YWluaW5nQmxvY2ssIFdyaXRpbmdNb2RlIGNoaWxkKQoreworICAg
IGlmICgoY29udGFpbmluZ0Jsb2NrID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgJiYgY2hpbGQg
PT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9jayA9
PSBCb3R0b21Ub1RvcFdyaXRpbmdNb2RlICYmIGNoaWxkID09IExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGUpCisgICAgICAgIHx8IChjb250YWluaW5nQmxvY2sgPT0gUmlnaHRUb0xlZnRXcml0aW5nTW9k
ZSAmJiBjaGlsZCA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKQorICAgICAgICB8fCAoY29udGFp
bmluZ0Jsb2NrID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgJiYgY2hpbGQgPT0gVG9wVG9Cb3R0
b21Xcml0aW5nTW9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKGNvbnRhaW5p
bmdCbG9jayA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlICYmIGNoaWxkID09IFJpZ2h0VG9MZWZ0
V3JpdGluZ01vZGUpCisgICAgICAgIHx8IChjb250YWluaW5nQmxvY2sgPT0gQm90dG9tVG9Ub3BX
cml0aW5nTW9kZSAmJiBjaGlsZCA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKQorICAgICAgICB8
fCAoY29udGFpbmluZ0Jsb2NrID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgJiYgY2hpbGQgPT0g
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKKyAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9jayA9PSBM
ZWZ0VG9SaWdodFdyaXRpbmdNb2RlICYmIGNoaWxkID09IEJvdHRvbVRvVG9wV3JpdGluZ01vZGUp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gV3Jp
dGluZyBtb2RlcyBzaG91bGQgYmUgcGVycGVuZGljdWxhci4KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgpCiB7CiAgICAgLy8gQ2Vs
bCBoZWlnaHQgaXMgbWFuYWdlZCBieSB0aGUgdGFibGUgYW5kIGlubGluZSBub24tcmVwbGFjZWQg
ZWxlbWVudHMgZG8gbm90IHN1cHBvcnQgYSBoZWlnaHQgcHJvcGVydHkuCkBAIC0xOTc3LDggKzE5
OTgsMTQgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKIAogICAgICAg
ICAvLyBGb3IgdGFibGVzLCBjYWxjdWxhdGUgbWFyZ2lucyBvbmx5LgogICAgICAgICBpZiAoaXNU
YWJsZSgpKSB7Ci0gICAgICAgICAgICBpZiAoaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9j
aykKLSAgICAgICAgICAgICAgICBjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29u
dGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpLCBsb2dpY2FsSGVpZ2h0KCkpOwor
ICAgICAgICAgICAgaWYgKGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spIHsKKyAgICAg
ICAgICAgICAgICBDb21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7CisgICAgICAgICAg
ICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5pbmdCbG9ja0xv
Z2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgbG9naWNhbEhlaWdodCgpLAorICAgICAgICAgICAgICAg
ICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXJNYXJnaW5zKGNiLT5zdHlsZSgpLT53cml0aW5nTW9k
ZSgpLCBzdHlsZSgpLT53cml0aW5nTW9kZSgpKSA/IG1hcmdpblZhbHVlcy5tX2FmdGVyIDogbWFy
Z2luVmFsdWVzLm1fYmVmb3JlLAorICAgICAgICAgICAgICAgICAgICBzaG91bGRGbGlwQmVmb3Jl
QWZ0ZXJNYXJnaW5zKGNiLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpLCBzdHlsZSgpLT53cml0aW5n
TW9kZSgpKSA/IG1hcmdpblZhbHVlcy5tX2JlZm9yZSA6IG1hcmdpblZhbHVlcy5tX2FmdGVyKTsK
KyAgICAgICAgICAgICAgICBzZXRNYXJnaW5CZWZvcmUobWFyZ2luVmFsdWVzLm1fYmVmb3JlKTsK
KyAgICAgICAgICAgICAgICBzZXRNYXJnaW5BZnRlcihtYXJnaW5WYWx1ZXMubV9hZnRlcik7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjAyNiw4
ICsyMDUzLDE0IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgpCiAKICAg
ICAgICAgc2V0TG9naWNhbEhlaWdodChoZWlnaHRSZXN1bHQpOwogICAgICAgICAKLSAgICAgICAg
aWYgKGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICBjb21wdXRl
SW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9y
Q29udGVudCgpLCBoZWlnaHRSZXN1bHQpOworICAgICAgICBpZiAoaGFzUGVycGVuZGljdWxhckNv
bnRhaW5pbmdCbG9jaykgeworICAgICAgICAgICAgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgbWFyZ2lu
VmFsdWVzOworICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNv
bnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgaGVpZ2h0UmVzdWx0LAorICAg
ICAgICAgICAgICAgICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXJNYXJnaW5zKGNiLT5zdHlsZSgp
LT53cml0aW5nTW9kZSgpLCBzdHlsZSgpLT53cml0aW5nTW9kZSgpKSA/IG1hcmdpblZhbHVlcy5t
X2FmdGVyIDogbWFyZ2luVmFsdWVzLm1fYmVmb3JlLAorICAgICAgICAgICAgICAgICAgICBzaG91
bGRGbGlwQmVmb3JlQWZ0ZXJNYXJnaW5zKGNiLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpLCBzdHls
ZSgpLT53cml0aW5nTW9kZSgpKSA/IG1hcmdpblZhbHVlcy5tX2JlZm9yZSA6IG1hcmdpblZhbHVl
cy5tX2FmdGVyKTsKKyAgICAgICAgICAgIHNldE1hcmdpbkJlZm9yZShtYXJnaW5WYWx1ZXMubV9i
ZWZvcmUpOworICAgICAgICAgICAgc2V0TWFyZ2luQWZ0ZXIobWFyZ2luVmFsdWVzLm1fYWZ0ZXIp
OworICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gV2luSUUgcXVpcms6IFRoZSA8aHRtbD4gYmxv
Y2sgYWx3YXlzIGZpbGxzIHRoZSBlbnRpcmUgY2FudmFzIGluIHF1aXJrcyBtb2RlLiAgVGhlIDxi
b2R5PiBhbHdheXMgZmlsbHMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5k
ZXggMjJmYmUxYzMxZDgxYTEwMGU1YzVlOGYzOGI1ZTE4ODRlNjcyNjgzYi4uZjg2N2Q5NTE5MTU3
Yjk3ZThiN2M1Nzg5YjUyNGExZDhiNWZhYmMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaApAQCAtMzMyLDcgKzMzMiw3IEBAIHB1YmxpYzoKICAgICB9OwogICAgIC8vIFJlc29s
dmUgYXV0byBtYXJnaW5zIGluIHRoZSBpbmxpbmUgZGlyZWN0aW9uIG9mIHRoZSBjb250YWluaW5n
IGJsb2NrIHNvIHRoYXQgb2JqZWN0cyBjYW4gYmUgcHVzaGVkIHRvIHRoZSBzdGFydCwgbWlkZGxl
IG9yIGVuZAogICAgIC8vIG9mIHRoZSBjb250YWluaW5nIGJsb2NrLgotICAgIHZvaWQgY29tcHV0
ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5
b3V0VW5pdCBjb250YWluZXJXaWR0aCwgTGF5b3V0VW5pdCBjaGlsZFdpZHRoKTsKKyAgICB2b2lk
IGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxv
Y2ssIExheW91dFVuaXQgY29udGFpbmVyV2lkdGgsIExheW91dFVuaXQgY2hpbGRXaWR0aCwgTGF5
b3V0VW5pdCYgbWFyZ2luU3RhcnQsIExheW91dFVuaXQmIG1hcmdpbkVuZCkgY29uc3Q7CiAKICAg
ICAvLyBVc2VkIHRvIHJlc29sdmUgbWFyZ2lucyBpbiB0aGUgY29udGFpbmluZyBibG9jaydzIGJs
b2NrLWZsb3cgZGlyZWN0aW9uLgogICAgIHZvaWQgY29tcHV0ZUJsb2NrRGlyZWN0aW9uTWFyZ2lu
cyhjb25zdCBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IGI1YzMwODM3M2RmMzZkNmIyODc2YzlhYzUzOWU3
ZWQwMGQ5NmU0YzcuLjZlNjVhYTBmOTBiZDU0NDA4OWE3ODYxYTZkMDZkMDg5MTUwZThmOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcApAQCAtMjYwLDcgKzI2MCwx
MiBAQCB2b2lkIFJlbmRlclRhYmxlOjpjb21wdXRlTG9naWNhbFdpZHRoKCkKICAgICAgICAgTGF5
b3V0VW5pdCBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9IGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aDsKICAgICAgICAgaWYgKGF2b2lkc0Zsb2F0cygpICYmIGNiLT5jb250YWluc0Zs
b2F0cygpKQogICAgICAgICAgICAgY29udGFpbmVyTG9naWNhbFdpZHRoRm9yQXV0b01hcmdpbnMg
PSBjb250YWluaW5nQmxvY2tBdmFpbGFibGVMaW5lV2lkdGhJblJlZ2lvbigwLCAwKTsgLy8gRklY
TUU6IFdvcmsgd2l0aCByZWdpb25zIHNvbWVkYXkuCi0gICAgICAgIGNvbXB1dGVJbmxpbmVEaXJl
Y3Rpb25NYXJnaW5zKGNiLCBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucywgbG9n
aWNhbFdpZHRoKCkpOworICAgICAgICBDb21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7
CisgICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBjb250YWluZXJMb2dp
Y2FsV2lkdGhGb3JBdXRvTWFyZ2lucywgbG9naWNhbFdpZHRoKCksCisgICAgICAgICAgICBjYi0+
c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID09IHN0eWxlKCktPmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSA/IG1hcmdpblZhbHVlcy5tX3N0YXJ0IDogbWFyZ2luVmFsdWVzLm1fZW5k
LAorICAgICAgICAgICAgY2ItPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA9PSBz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBtYXJnaW5WYWx1ZXMubV9lbmQgOiBt
YXJnaW5WYWx1ZXMubV9zdGFydCk7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KG1hcmdpblZhbHVl
cy5tX3N0YXJ0KTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKG1hcmdpblZhbHVlcy5tX2VuZCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgc2V0TWFyZ2luU3RhcnQobWluaW11bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPm1hcmdpblN0YXJ0KCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmll
dykpOwogICAgICAgICBzZXRNYXJnaW5FbmQobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
Pm1hcmdpbkVuZCgpLCBhdmFpbGFibGVMb2dpY2FsV2lkdGgsIHJlbmRlclZpZXcpKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAxZTI0NDUzZjAwNWZkOWY3NzliZGM3ZDk3MWZjYmYzOWRhMWUwMzMzLi5mZjZhMWJjOGVlNTRh
YzIwNjYxYzZjNDI4OTc2ZTgzMTY3YTg0NjUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTIt
MDgtMjggIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFJl
bmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMgY29uc3QKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MjU1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY2FzZXMgZm9yIHNl
dHRpbmcgbWFyZ2lucyB3aXRoIHBlcnBlbmRpY3VsYXIgYmxvY2tzIG9yIGZsaXBwZWQgdGV4dC4K
KworICAgICAgICAqIGZhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmct
YmxvY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Jsb2NrL21hcmdpbnMt
cGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvdGFibGUvbWFyZ2lucy1mbGlwcGVkLXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC90YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24u
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90YWJsZS9tYXJnaW5zLXBlcnBlbmRpY3VsYXIt
Y29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvdGFi
bGUvbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbDogQWRkZWQuCisK
IDIwMTItMDgtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEdh
cmRlbmluZzogU2tpcHBpbmcgdGVzdHMgZHVlIHRvIEpTQzo6QmluZGluZ3M6Okluc3RhbmNlOjpj
cmVhdGVSdW50aW1lT2JqZWN0KEpTQzo6RXhlY1N0YXRlKikgY3Jhc2hlcy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmct
YmxvY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBl
bmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NGYw
ZmYyNWFiYWZhNDc5N2EwNDc2NDQ4NDVjZjJmNDM3MzA1YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxv
Y2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0hlbGxvCitIZWxsbworUEFTUworSGVs
bG8KK0hlbGxvCitQQVNTCitIZWxsbworSGVsbG8KK1BBU1MKK0hlbGxvCitIZWxsbworUEFTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXIt
Y29udGFpbmluZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBl
cnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4NWMwN2U5Mzgz
Y2U4YWEyM2U2NzZiOGNhMTc2ZTg5ZmM5NzE2ODcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Jsb2NrL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLmh0
bWwKQEAgLTAsMCArMSw2MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorLmhvcml6b250YWwsIC52ZXJ0aWNhbCB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
fQorLmhvcml6b250YWwgZGl2IHsKKyAgICBtYXJnaW4tbGVmdDogMTBweDsKKyAgICBtYXJnaW4t
cmlnaHQ6IDIwcHg7Cit9CisudmVydGljYWwgZGl2IHsKKyAgICBtYXJnaW4tdG9wOiAxMHB4Owor
ICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNoZWNrTGF5b3V0KCcuaG9yaXpvbnRhbCwgLnZlcnRp
Y2FsJykiPgorPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGIi
IGNsYXNzPSJob3Jpem9udGFsIj4KKzxkaXYgZGF0YS1vZmZzZXQteD0xMCBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3Ry
PgorPC9kaXY+Cis8ZGl2IGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1t
b2RlOiB2ZXJ0aWNhbC1sciI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvZGl2Pgor
PC9kaXY+CisKKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0
IiBjbGFzcz0iaG9yaXpvbnRhbCI+Cis8ZGl2IGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJr
aXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90
cj4KKzwvZGl2PgorPGRpdiBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmct
bW9kZTogdmVydGljYWwtbHIiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwi
IGNsYXNzPSJ2ZXJ0aWNhbCI+Cis8ZGl2IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQt
d3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3Ry
PgorPC9kaXY+Cis8ZGl2IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1t
b2RlOiBob3Jpem9udGFsLWJ0Ij4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC9kaXY+
Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxy
IiBjbGFzcz0idmVydGljYWwiPgorPGRpdiBkYXRhLW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0
LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YiI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90
cj4KKzwvZGl2PgorPGRpdiBkYXRhLW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmct
bW9kZTogaG9yaXpvbnRhbC1idCI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvZGl2
PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDc1NWFmM2FiZDc1Y2Y1NmY4YTA5YTAwY2M1ZGExMWVmZTI5ZmEz
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1mbGlw
cGVkLXRleHQtZGlyZWN0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDYgQEAKK0hlbGxvCitI
ZWxsbworUEFTUworSGVsbG8KK0hlbGxvCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC90YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24uaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40M2I2ZWMzNDZmOWE1N2ZkZjhmZGUyMTgyMzkzNDA1YTM2YTRmOWQ1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJl
Y3Rpb24uaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c3R5bGU+CitkaXYgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDog
NjAwcHg7Cit9Cit0YWJsZSB7CisgICAgbWFyZ2luLWxlZnQ6IDEwcHg7CisgICAgbWFyZ2luLXJp
Z2h0OiAyMHB4OworICAgIHdpZHRoOiAyMDBweDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFj
azsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9h
ZD0iY2hlY2tMYXlvdXQoJ2RpdicpIj4KKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj4KKzx0
YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+CisgICAgPHRyPjx0
ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8dGFibGUgZGF0YS1vZmZzZXQteD0xMCBzdHls
ZT0iZGlyZWN0aW9uOiBydGwiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxl
PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9ImRpcmVjdGlvbjogcnRsIj4KKzx0YWJsZSBkYXRhLW9m
ZnNldC14PTM4MCBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPgorICAgIDx0cj48dGQ+SGVsbG88L3Rk
PjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXg9MzgwIHN0eWxlPSJkaXJlY3Rp
b246IHJ0bCI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4K
KworPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5p
bmctYmxvY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2OTRmMGZmMjVhYmFmYTQ3OTdhMDQ3
NjQ0ODQ1Y2YyZjQzNzMwNWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Rh
YmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDEyIEBACitIZWxsbworSGVsbG8KK1BBU1MKK0hlbGxvCitIZWxsbworUEFTUwor
SGVsbG8KK0hlbGxvCitQQVNTCitIZWxsbworSGVsbG8KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2su
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRh
aW5pbmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGI0OWIwZGUxM2I3OTgxNGUwNzc1NzEwMmM1
ODZhM2U3NjI5ZjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9t
YXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCkBAIC0wLDAgKzEsNjEg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2RpdiB7CisgICAg
cG9zaXRpb246IHJlbGF0aXZlOworfQorLmhvcml6b250YWwgdGFibGUgeworICAgIG1hcmdpbi1s
ZWZ0OiAxMHB4OworICAgIG1hcmdpbi1yaWdodDogMjBweDsKK30KKy52ZXJ0aWNhbCB0YWJsZSB7
CisgICAgbWFyZ2luLXRvcDogMTBweDsKKyAgICBtYXJnaW4tYm90dG9tOiAyMHB4OworfQorPC9z
dHlsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvY2hlY2stbGF5b3V0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7Cis8L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHkgb25sb2FkPSJjaGVja0xh
eW91dCgnZGl2JykiPgorPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250
YWwtdGIiIGNsYXNzPSJob3Jpem9udGFsIj4KKzx0YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxl
PSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiPgorICAgIDx0cj48dGQ+SGVsbG88
L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJr
aXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90
cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6
IGhvcml6b250YWwtYnQiIGNsYXNzPSJob3Jpem9udGFsIj4KKzx0YWJsZSBkYXRhLW9mZnNldC14
PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiPgorICAgIDx0cj48
dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXg9MTAgc3R5
bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciI+CisgICAgPHRyPjx0ZD5IZWxs
bzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0
aW5nLW1vZGU6IHZlcnRpY2FsLXJsIiBjbGFzcz0idmVydGljYWwiPgorPHRhYmxlIGRhdGEtb2Zm
c2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIj4KKyAg
ICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzx0YWJsZSBkYXRhLW9mZnNldC15
PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCI+CisgICAgPHRy
Pjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdl
YmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIiBjbGFzcz0idmVydGljYWwiPgorPHRhYmxl
IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFs
LXRiIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzx0YWJsZSBkYXRh
LW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCI+
CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161099</attachid>
            <date>2012-08-28 17:33:55 -0700</date>
            <delta_ts>2012-08-29 16:41:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95255-20120828173345.patch</filename>
            <type>text/plain</type>
            <size>20959</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2OTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZmYzJjNjAwMjM3ZjQ5
ZTdlZTY1YzczMGFhMWVlOTFmYWU0MTE5ZS4uNmFkMzJhOGUzZDVkNGJhODRhYjI3ODc3MzM5ZTEy
OGI4ZDI5MGFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA4LTI4ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5kZXJCb3g6OmNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCBvZiBtYWtpbmcgY29tcHV0ZUxv
Z2ljYWx7SGVpZ2h0LFdpZHRofSByZXR1cm4gY29tcHV0ZWQgdmFsdWVzIHJhdGhlciB0aGFuCisg
ICAgICAgIG11dGF0aW5nIHRoZSBSZW5kZXJCb3ggZGlyZWN0bHkuIFRoaXMgbWFrZXMgYSBzdWJt
ZXRob2QgY29uc3QuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMganVzdCBhIHJlZmFjdG9yLCBi
dXQgSSd2ZSBhZGRlZCBzb21lIHRlc3RzIHRvIGNvdmVyIGNvZGUgdGhhdCB3YXNuJ3QKKyAgICAg
ICAgcHJldmlvdXNseSBjb3ZlcmVkIGJ5IGxheW91dCB0ZXN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250
YWluaW5nLWJsb2NrLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24p
OiBIYW5kbGUgZmxpcHBlZCB0ZXh0IGRpcmVjdGlvbiBtYW51YWxseS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMpOiBNYWtlIGNvbnN0
IHdpdGggb3V0IHBhcmFtZXRlcnMuCisgICAgICAgIE5vIGxvbmdlciBuZWVkIHRvIGNhbGwgc2V0
TWFyZ2lue1N0YXJ0LEVuZH1Gb3JDaGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEZsaXBC
ZWZvcmVBZnRlck1hcmdpbnMpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBob3cgdG8g
bWFwIGEgbG9naWNhbAorICAgICAgICB3cml0aW5nIG1vZGUgZGlyZWN0aW9uIHRvIGFub3RoZXIg
bG9naWNhbCB3cml0aW5nIG1vZGUgZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6IFVzZSBjb25zdCBtZXRob2QuIFRoaXMgYWxzbyBt
YWtlcyBpdCBtb3JlCisgICAgICAgIG9idmlvdXMgdGhhdCB3aGVuIGNvbXB1dGluZyB0aGUgaGVp
Z2h0LCB3ZSBvbmx5IG1vZGlmeSB0aGUgYmVmb3JlL2FmdGVyIG1hcmdpbnMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KTogTWFrZSBjb21wdXRl
SW5saW5lRGlyZWN0aW9uTWFyZ2lucyBjb25zdCB3aXRoIG91dCBwYXJhbWV0ZXJzLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCk6IFNhbWUgYXMgUmVuZGVyQm94Ojpjb21wdHVlTG9n
aWNhbFdpZHRoSW5yZWdpb24uCisKIDIwMTItMDgtMjcgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxh
Y2hpY3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRmlsdGVyc10gRmlsdGVycyBzaG91bGQg
cmVuZGVyIHVzaW5nIHNSR0IgdW50aWwgdGhlIHNwZWNpZmljYXRpb24gc2F5cyBob3cgaXQgd29y
a3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZjc3YjYwOWJiNTk3
OGNkYTNkZDlkYjVlOTUzMGJkYzVlZTUzYTRkNi4uMTU0OTM3MThhNzU4NmJkMDg0MzM2NDhlNTM0
MGE5NDI3OWVmNWM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTE3MTIsNyArMTcxMiwxMyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aElu
UmVnaW9uKFJlbmRlclJlZ2lvbiogcmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBMYXlv
dXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zID0gY29udGFpbmVyTG9n
aWNhbFdpZHRoOwogICAgICAgICBpZiAoYXZvaWRzRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxv
YXRzKCkpCiAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9
IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKHJlZ2lvbiwgb2Zmc2V0
RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSk7Ci0gICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rp
b25NYXJnaW5zKGNiLCBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucywgbG9naWNh
bFdpZHRoKCkpOworICAgICAgICBDb21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7Cisg
ICAgICAgIGJvb2wgaGFzSW52ZXJ0ZWREaXJlY3Rpb24gPSAgY2ItPnN0eWxlKCktPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA9PSBzdHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7Cisg
ICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBjb250YWluZXJMb2dpY2Fs
V2lkdGhGb3JBdXRvTWFyZ2lucywgbG9naWNhbFdpZHRoKCksCisgICAgICAgICAgICBoYXNJbnZl
cnRlZERpcmVjdGlvbiA/IG1hcmdpblZhbHVlcy5tX3N0YXJ0IDogbWFyZ2luVmFsdWVzLm1fZW5k
LAorICAgICAgICAgICAgaGFzSW52ZXJ0ZWREaXJlY3Rpb24gPyBtYXJnaW5WYWx1ZXMubV9lbmQg
OiBtYXJnaW5WYWx1ZXMubV9zdGFydCk7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KG1hcmdpblZh
bHVlcy5tX3N0YXJ0KTsKKyAgICAgICAgc2V0TWFyZ2luRW5kKG1hcmdpblZhbHVlcy5tX2VuZCk7
CiAgICAgfQogICAgIAogICAgIGlmICghaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayAm
JiBjb250YWluZXJMb2dpY2FsV2lkdGggJiYgY29udGFpbmVyTG9naWNhbFdpZHRoICE9IChsb2dp
Y2FsV2lkdGgoKSArIG1hcmdpblN0YXJ0KCkgKyBtYXJnaW5FbmQoKSkKQEAgLTE4MjAsNyArMTgy
Niw3IEBAIGJvb2wgUmVuZGVyQm94OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChTaXpl
VHlwZSB3aWR0aFR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5p
bmdCbG9jaywgTGF5b3V0VW5pdCBjb250YWluZXJXaWR0aCwgTGF5b3V0VW5pdCBjaGlsZFdpZHRo
KQordm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJs
b2NrKiBjb250YWluaW5nQmxvY2ssIExheW91dFVuaXQgY29udGFpbmVyV2lkdGgsIExheW91dFVu
aXQgY2hpbGRXaWR0aCwgTGF5b3V0VW5pdCYgbWFyZ2luU3RhcnQsIExheW91dFVuaXQmIG1hcmdp
bkVuZCkgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSogY29udGFpbmluZ0Jsb2NrU3R5
bGUgPSBjb250YWluaW5nQmxvY2stPnN0eWxlKCk7CiAgICAgTGVuZ3RoIG1hcmdpblN0YXJ0TGVu
Z3RoID0gc3R5bGUoKS0+bWFyZ2luU3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSk7CkBA
IC0xODI5LDggKzE4MzUsOCBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlv
bk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5bwogCiAgICAgaWYgKGlz
RmxvYXRpbmcoKSB8fCBpc0lubGluZSgpKSB7CiAgICAgICAgIC8vIElubGluZSBibG9ja3MvdGFi
bGVzIGFuZCBmbG9hdHMgZG9uJ3QgaGF2ZSB0aGVpciBtYXJnaW5zIGluY3JlYXNlZC4KLSAgICAg
ICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1pbmltdW1W
YWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZp
ZXcpKTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlz
LCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwg
cmVuZGVyVmlldykpOworICAgICAgICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0
aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAg
ICBtYXJnaW5FbmQgPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250
YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4
NDEsMTUgKzE4NDcsMTUgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25N
YXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2ssIExheW8KICAgICAgICAgTGF5b3V0
VW5pdCBtYXJnaW5TdGFydFdpZHRoID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0
TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIExheW91dFVuaXQg
bWFyZ2luRW5kV2lkdGggPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBj
b250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRN
YXJnaW5Cb3hTdGFydCA9IG1heDxMYXlvdXRVbml0PigwLCAoY29udGFpbmVyV2lkdGggLSBjaGls
ZFdpZHRoIC0gbWFyZ2luU3RhcnRXaWR0aCAtIG1hcmdpbkVuZFdpZHRoKSAvIDIpOwotICAgICAg
ICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY2VudGVyZWRN
YXJnaW5Cb3hTdGFydCArIG1hcmdpblN0YXJ0V2lkdGgpOwotICAgICAgICBjb250YWluaW5nQmxv
Y2stPnNldE1hcmdpbkVuZEZvckNoaWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0
aCAtIGNvbnRhaW5pbmdCbG9jay0+bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSArIG1hcmdpbkVu
ZFdpZHRoKTsKKyAgICAgICAgbWFyZ2luU3RhcnQgPSBjZW50ZXJlZE1hcmdpbkJveFN0YXJ0ICsg
bWFyZ2luU3RhcnRXaWR0aDsKKyAgICAgICAgbWFyZ2luRW5kID0gY29udGFpbmVyV2lkdGggLSBj
aGlsZFdpZHRoIC0gbWFyZ2luU3RhcnQgKyBtYXJnaW5FbmRXaWR0aDsKICAgICAgICAgcmV0dXJu
OwogICAgIH0gCiAgICAgCiAgICAgLy8gQ2FzZSBUd286IFRoZSBvYmplY3QgaXMgYmVpbmcgcHVz
aGVkIHRvIHRoZSBzdGFydCBvZiB0aGUgY29udGFpbmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dp
Y2FsIHdpZHRoLgogICAgIGlmIChtYXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0
aCA8IGNvbnRhaW5lcldpZHRoKSB7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2lu
U3RhcnRGb3JDaGlsZCh0aGlzLCB2YWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29u
dGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRN
YXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBjb250
YWluaW5nQmxvY2stPm1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcykpOworICAgICAgICBtYXJnaW5T
dGFydCA9IHZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwg
cmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdpbkVuZCA9IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRX
aWR0aCAtIG1hcmdpblN0YXJ0OwogICAgICAgICByZXR1cm47CiAgICAgfSAKICAgICAKQEAgLTE4
NTcsMTUgKzE4NjMsMTUgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25N
YXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2ssIExheW8KICAgICBib29sIHB1c2hU
b0VuZEZyb21UZXh0QWxpZ24gPSAhbWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRh
aW5pbmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Js
b2NrU3R5bGUtPnRleHRBbGlnbigpID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAoY29udGFp
bmluZ0Jsb2NrU3R5bGUtPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxv
Y2tTdHlsZS0+dGV4dEFsaWduKCkgPT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5T
dGFydExlbmd0aC5pc0F1dG8oKSAmJiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1
c2hUb0VuZEZyb21UZXh0QWxpZ24pIHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJn
aW5FbmRGb3JDaGlsZCh0aGlzLCB2YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRh
aW5lcldpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFy
Z2luU3RhcnRGb3JDaGlsZCh0aGlzLCBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBjb250
YWluaW5nQmxvY2stPm1hcmdpbkVuZEZvckNoaWxkKHRoaXMpKTsKKyAgICAgICAgbWFyZ2luRW5k
ID0gdmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVy
Vmlldyk7CisgICAgICAgIG1hcmdpblN0YXJ0ID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRo
IC0gbWFyZ2luRW5kOwogICAgICAgICByZXR1cm47CiAgICAgfSAKICAgICAKICAgICAvLyBDYXNl
IEZvdXI6IEVpdGhlciBubyBhdXRvIG1hcmdpbnMsIG9yIG91ciB3aWR0aCBpcyA+PSB0aGUgY29u
dGFpbmVyIHdpZHRoIChjc3MyLjEsIDEwLjMuMykuICBJbiB0aGF0IGNhc2UKICAgICAvLyBhdXRv
IG1hcmdpbnMgd2lsbCBqdXN0IHR1cm4gaW50byAwLgotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0
TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3Rh
cnRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgY29udGFpbmluZ0Js
b2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFy
Z2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldykpOworICAgIG1hcmdpblN0
YXJ0ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJX
aWR0aCwgcmVuZGVyVmlldyk7CisgICAgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KG1hcmdpbkVuZExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOwogfQogCiBSZW5k
ZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVn
aW9uKiByZWdpb24sIExheW91dFVuaXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwg
UmVuZGVyQm94UmVnaW9uSW5mb0ZsYWdzIGNhY2hlRmxhZykgY29uc3QKQEAgLTE5NTMsNiArMTk1
OSwyMiBAQCBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbklu
Zm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dAogICAgIHJldHVybiBuZXcgUmVuZGVyQm94
UmVnaW9uSW5mbyhsb2dpY2FsTGVmdE9mZnNldCwgbG9naWNhbFdpZHRoSW5SZWdpb24sIGlzU2hp
ZnRlZCk7CiB9CiAKK3N0YXRpYyBib29sIHNob3VsZEZsaXBCZWZvcmVBZnRlck1hcmdpbnMoV3Jp
dGluZ01vZGUgY29udGFpbmluZ0Jsb2NrV3JpdGluZ01vZGUsIFdyaXRpbmdNb2RlIGNoaWxkV3Jp
dGluZ01vZGUpCit7CisgICAgaWYgKChjb250YWluaW5nQmxvY2tXcml0aW5nTW9kZSA9PSBUb3BU
b0JvdHRvbVdyaXRpbmdNb2RlICYmIGNoaWxkV3JpdGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0
aW5nTW9kZSkKKyAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1dyaXRpbmdNb2RlID09IEJvdHRv
bVRvVG9wV3JpdGluZ01vZGUgJiYgY2hpbGRXcml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRp
bmdNb2RlKQorICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrV3JpdGluZ01vZGUgPT0gUmlnaHRU
b0xlZnRXcml0aW5nTW9kZSAmJiBjaGlsZFdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGlu
Z01vZGUpCisgICAgICAgIHx8IChjb250YWluaW5nQmxvY2tXcml0aW5nTW9kZSA9PSBMZWZ0VG9S
aWdodFdyaXRpbmdNb2RlICYmIGNoaWxkV3JpdGluZ01vZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoKGNvbnRhaW5pbmdCbG9ja1dy
aXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgJiYgY2hpbGRXcml0aW5nTW9kZSA9
PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlKQorICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrV3Jp
dGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSAmJiBjaGlsZFdyaXRpbmdNb2RlID09
IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUpCisgICAgICAgIHx8IChjb250YWluaW5nQmxvY2tXcml0
aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlICYmIGNoaWxkV3JpdGluZ01vZGUgPT0g
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKKyAgICAgICAgfHwgKGNvbnRhaW5pbmdCbG9ja1dyaXRp
bmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgJiYgY2hpbGRXcml0aW5nTW9kZSA9PSBC
b3R0b21Ub1RvcFdyaXRpbmdNb2RlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IC8vIFdyaXRpbmcgbW9kZXMgc2hvdWxkIGJlIHBlcnBlbmRpY3VsYXIu
CisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxI
ZWlnaHQoKQogewogICAgIC8vIENlbGwgaGVpZ2h0IGlzIG1hbmFnZWQgYnkgdGhlIHRhYmxlIGFu
ZCBpbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1lbnRzIGRvIG5vdCBzdXBwb3J0IGEgaGVpZ2h0IHBy
b3BlcnR5LgpAQCAtMTk3Nyw4ICsxOTk5LDE1IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlTG9n
aWNhbEhlaWdodCgpCiAKICAgICAgICAgLy8gRm9yIHRhYmxlcywgY2FsY3VsYXRlIG1hcmdpbnMg
b25seS4KICAgICAgICAgaWYgKGlzVGFibGUoKSkgewotICAgICAgICAgICAgaWYgKGhhc1BlcnBl
bmRpY3VsYXJDb250YWluaW5nQmxvY2spCi0gICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQo
KSwgbG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAgIGlmIChoYXNQZXJwZW5kaWN1bGFyQ29u
dGFpbmluZ0Jsb2NrKSB7CisgICAgICAgICAgICAgICAgQ29tcHV0ZWRNYXJnaW5WYWx1ZXMgbWFy
Z2luVmFsdWVzOworICAgICAgICAgICAgICAgIGJvb2wgaGFzSW52ZXJ0ZWREaXJlY3Rpb24gPSBz
aG91bGRGbGlwQmVmb3JlQWZ0ZXJNYXJnaW5zKGNiLT5zdHlsZSgpLT53cml0aW5nTW9kZSgpLCBz
dHlsZSgpLT53cml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgICAgICBjb21wdXRlSW5saW5lRGly
ZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgp
LCBsb2dpY2FsSGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0
aW9uID8gbWFyZ2luVmFsdWVzLm1fYWZ0ZXIgOiBtYXJnaW5WYWx1ZXMubV9iZWZvcmUsCisgICAg
ICAgICAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9uID8gbWFyZ2luVmFsdWVzLm1fYmVm
b3JlIDogbWFyZ2luVmFsdWVzLm1fYWZ0ZXIpOworICAgICAgICAgICAgICAgIHNldE1hcmdpbkJl
Zm9yZShtYXJnaW5WYWx1ZXMubV9iZWZvcmUpOworICAgICAgICAgICAgICAgIHNldE1hcmdpbkFm
dGVyKG1hcmdpblZhbHVlcy5tX2FmdGVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMDI2LDggKzIwNTUsMTUgQEAgdm9pZCBSZW5kZXJCb3g6
OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KCkKIAogICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdo
dFJlc3VsdCk7CiAgICAgICAgIAotICAgICAgICBpZiAoaGFzUGVycGVuZGljdWxhckNvbnRhaW5p
bmdCbG9jaykKLSAgICAgICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBj
b250YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCksIGhlaWdodFJlc3VsdCk7Cisg
ICAgICAgIGlmIChoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CisgICAgICAgICAg
ICBDb21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7CisgICAgICAgICAgICBib29sIGhh
c0ludmVydGVkRGlyZWN0aW9uID0gc2hvdWxkRmxpcEJlZm9yZUFmdGVyTWFyZ2lucyhjYi0+c3R5
bGUoKS0+d3JpdGluZ01vZGUoKSwgc3R5bGUoKS0+d3JpdGluZ01vZGUoKSk7CisgICAgICAgICAg
ICBjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhjYiwgY29udGFpbmluZ0Jsb2NrTG9naWNh
bFdpZHRoRm9yQ29udGVudCgpLCBoZWlnaHRSZXN1bHQsCisgICAgICAgICAgICAgICAgICAgIGhh
c0ludmVydGVkRGlyZWN0aW9uID8gbWFyZ2luVmFsdWVzLm1fYWZ0ZXIgOiBtYXJnaW5WYWx1ZXMu
bV9iZWZvcmUsCisgICAgICAgICAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9uID8gbWFy
Z2luVmFsdWVzLm1fYmVmb3JlIDogbWFyZ2luVmFsdWVzLm1fYWZ0ZXIpOworICAgICAgICAgICAg
c2V0TWFyZ2luQmVmb3JlKG1hcmdpblZhbHVlcy5tX2JlZm9yZSk7CisgICAgICAgICAgICBzZXRN
YXJnaW5BZnRlcihtYXJnaW5WYWx1ZXMubV9hZnRlcik7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICAvLyBXaW5JRSBxdWlyazogVGhlIDxodG1sPiBibG9jayBhbHdheXMgZmlsbHMgdGhlIGVudGly
ZSBjYW52YXMgaW4gcXVpcmtzIG1vZGUuICBUaGUgPGJvZHk+IGFsd2F5cyBmaWxscyB0aGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA3YmQ4MzA4ZjYzZDk2ODRjYTM5ODQ4
ZjU0ZDFkNDNiZTViYTBiNTk4Li43ZDU1MWRmMzcwYjNhNmE3Mzg5ODlmODcwMmYyZDk1MjRhYWU4
N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0zMzIsNyArMzMyLDcg
QEAgcHVibGljOgogICAgIH07CiAgICAgLy8gUmVzb2x2ZSBhdXRvIG1hcmdpbnMgaW4gdGhlIGlu
bGluZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sgc28gdGhhdCBvYmplY3RzIGNh
biBiZSBwdXNoZWQgdG8gdGhlIHN0YXJ0LCBtaWRkbGUgb3IgZW5kCiAgICAgLy8gb2YgdGhlIGNv
bnRhaW5pbmcgYmxvY2suCi0gICAgdm9pZCBjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhS
ZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0IGNvbnRhaW5lcldpZHRoLCBM
YXlvdXRVbml0IGNoaWxkV2lkdGgpOworICAgIHZvaWQgY29tcHV0ZUlubGluZURpcmVjdGlvbk1h
cmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5b3V0VW5pdCBjb250YWluZXJX
aWR0aCwgTGF5b3V0VW5pdCBjaGlsZFdpZHRoLCBMYXlvdXRVbml0JiBtYXJnaW5TdGFydCwgTGF5
b3V0VW5pdCYgbWFyZ2luRW5kKSBjb25zdDsKIAogICAgIC8vIFVzZWQgdG8gcmVzb2x2ZSBtYXJn
aW5zIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgYmxvY2stZmxvdyBkaXJlY3Rpb24uCiAgICAg
dm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25NYXJnaW5zKGNvbnN0IFJlbmRlckJsb2NrKiBjb250
YWluaW5nQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5k
ZXggNGMzOGQ0ZWY0NTY3YmU0ZTA5MTA0YzgyYWEwZDA0NzY4NjExM2I1NC4uYWI4NTdhOThmMjA3
MGM1MmNkNjkwOTg3ODAxOWFkMjRkMTk2OTczMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGUuY3BwCkBAIC0yNjYsNyArMjY2LDEzIEBAIHZvaWQgUmVuZGVyVGFibGU6OmNv
bXB1dGVMb2dpY2FsV2lkdGgoKQogICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxX
aWR0aEZvckF1dG9NYXJnaW5zID0gYXZhaWxhYmxlTG9naWNhbFdpZHRoOwogICAgICAgICBpZiAo
YXZvaWRzRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCiAgICAgICAgICAgICBjb250
YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJs
ZUxpbmVXaWR0aEluUmVnaW9uKDAsIDApOyAvLyBGSVhNRTogV29yayB3aXRoIHJlZ2lvbnMgc29t
ZWRheS4KLSAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5l
ckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zLCBsb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIENv
bXB1dGVkTWFyZ2luVmFsdWVzIG1hcmdpblZhbHVlczsKKyAgICAgICAgYm9vbCBoYXNJbnZlcnRl
ZERpcmVjdGlvbiA9ICBjYi0+c3R5bGUoKS0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID09IHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKTsKKyAgICAgICAgY29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zLCBs
b2dpY2FsV2lkdGgoKSwKKyAgICAgICAgICAgIGhhc0ludmVydGVkRGlyZWN0aW9uID8gbWFyZ2lu
VmFsdWVzLm1fc3RhcnQgOiBtYXJnaW5WYWx1ZXMubV9lbmQsCisgICAgICAgICAgICBoYXNJbnZl
cnRlZERpcmVjdGlvbiA/IG1hcmdpblZhbHVlcy5tX2VuZCA6IG1hcmdpblZhbHVlcy5tX3N0YXJ0
KTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQobWFyZ2luVmFsdWVzLm1fc3RhcnQpOworICAgICAg
ICBzZXRNYXJnaW5FbmQobWFyZ2luVmFsdWVzLm1fZW5kKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBzZXRNYXJnaW5TdGFydChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3Rh
cnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCByZW5kZXJWaWV3KSk7CiAgICAgICAgIHNldE1h
cmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWls
YWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlMmRjODNhMmEwZjZmNDQ3
OGQ3MDU5ZmNmNjg1MDJiMjQxYTg1YmQuLjY3NjJiNjg1Zjc4MmI1NGNlZDNlZWRmOTUyZmMyZWZk
NmFjNDU1MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0yOCAgVG9ueSBDaGFuZyAg
PHRvbnlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgUmVuZGVyQm94Ojpjb21wdXRlSW5s
aW5lRGlyZWN0aW9uTWFyZ2lucyBjb25zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNlcyBmb3Igc2V0dGluZyBtYXJnaW5zIHdpdGgg
cGVycGVuZGljdWxhciBibG9ja3Mgb3IgZmxpcHBlZCB0ZXh0LgorCisgICAgICAgICogZmFzdC9i
bG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRh
aW5pbmctYmxvY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC90YWJsZS9tYXJnaW5zLWZs
aXBwZWQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC90YWJsZS9tYXJnaW5zLXBlcnBlbmRp
Y3VsYXItY29udGFpbmluZy1ibG9jay5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0yOCAgSnVsaWVu
IENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGdhcmRlbmluZywgbW9yZSByZWJhc2VsaW5pbmcgYWZ0ZXIgcjEyNjkxMS4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmct
YmxvY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBl
bmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5NGYw
ZmYyNWFiYWZhNDc5N2EwNDc2NDQ4NDVjZjJmNDM3MzA1YwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxv
Y2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0hlbGxvCitIZWxsbworUEFTUworSGVs
bG8KK0hlbGxvCitQQVNTCitIZWxsbworSGVsbG8KK1BBU1MKK0hlbGxvCitIZWxsbworUEFTUwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXIt
Y29udGFpbmluZy1ibG9jay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBl
cnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxN2UzOWEwMmU3
ZTM4MzhlMGI5YmYyYzlkYWUxYzlmY2E2YzAwZDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Jsb2NrL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLmh0
bWwKQEAgLTAsMCArMSw1NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0
eWxlPgorZGl2IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CitkaXYgPiBkaXYgeworICAg
IG1hcmdpbjogMTBweCAyMHB4IDIwcHggMTBweDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3Jp
cHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5jaGVjaycpIj4KKzxk
aXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIiBjbGFzcz0iY2hl
Y2siPgorPGRpdiBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtcmwiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L2Rpdj4KKzxkaXYg
ZGF0YS1vZmZzZXQteD0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxy
Ij4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBz
dHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGNsYXNzPSJjaGVjayI+
Cis8ZGl2IGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0
aWNhbC1ybCI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvZGl2PgorPGRpdiBkYXRh
LW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPgor
ICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxl
PSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiIGNsYXNzPSJjaGVjayI+Cis8ZGl2
IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFs
LXRiIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC9kaXY+Cis8ZGl2IGRhdGEtb2Zm
c2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0Ij4KKyAg
ICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0i
LXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIiBjbGFzcz0iY2hlY2siPgorPGRpdiBk
YXRhLW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10
YiI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvZGl2PgorPGRpdiBkYXRhLW9mZnNl
dC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCI+CisgICAg
PHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0
LWRpcmVjdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMt
ZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc1NWFmM2Fi
ZDc1Y2Y1NmY4YTA5YTAwY2M1ZGExMWVmZTI5ZmEzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1mbGlwcGVkLXRleHQtZGlyZWN0aW9uLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDYgQEAKK0hlbGxvCitIZWxsbworUEFTUworSGVsbG8KK0hlbGxvCitQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10
ZXh0LWRpcmVjdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5zLWZsaXBw
ZWQtdGV4dC1kaXJlY3Rpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40M2I2ZWMzNDZmOWE1N2ZkZjhmZGUy
MTgyMzkzNDA1YTM2YTRmOWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90
YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24uaHRtbApAQCAtMCwwICsxLDQ0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeworICAgIHBv
c2l0aW9uOiByZWxhdGl2ZTsKKyAgICB3aWR0aDogNjAwcHg7Cit9Cit0YWJsZSB7CisgICAgbWFy
Z2luLWxlZnQ6IDEwcHg7CisgICAgbWFyZ2luLXJpZ2h0OiAyMHB4OworICAgIHdpZHRoOiAyMDBw
eDsKKyAgICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJ2RpdicpIj4KKzxk
aXYgc3R5bGU9ImRpcmVjdGlvbjogbHRyIj4KKzx0YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxl
PSJkaXJlY3Rpb246IGx0ciI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+
Cis8dGFibGUgZGF0YS1vZmZzZXQteD0xMCBzdHlsZT0iZGlyZWN0aW9uOiBydGwiPgorICAgIDx0
cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgc3R5bGU9ImRp
cmVjdGlvbjogcnRsIj4KKzx0YWJsZSBkYXRhLW9mZnNldC14PTM4MCBzdHlsZT0iZGlyZWN0aW9u
OiBsdHIiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRh
dGEtb2Zmc2V0LXg9MzgwIHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+CisgICAgPHRyPjx0ZD5IZWxs
bzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxh
ci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUv
bWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI2OTRmMGZmMjVhYmFmYTQ3OTdhMDQ3NjQ0ODQ1Y2YyZjQzNzMwNWMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1j
b250YWluaW5nLWJsb2NrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitIZWxsbworSGVs
bG8KK1BBU1MKK0hlbGxvCitIZWxsbworUEFTUworSGVsbG8KK0hlbGxvCitQQVNTCitIZWxsbwor
SGVsbG8KK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1w
ZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGFi
bGUvbWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZmFjMDJlM2VkYzQzNjk4NmE3YzRiZGQzNjI5OTc1ZTViNmQwN2U3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFp
bmluZy1ibG9jay5odG1sCkBAIC0wLDAgKzEsNTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KK2RpdiB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQordGFi
bGUgeworICAgIG1hcmdpbjogMTBweCAyMHB4IDIwcHggMTBweDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNrLWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0iY2hlY2tMYXlvdXQoJ2Rpdicp
Ij4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIj4KKzx0
YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGlj
YWwtcmwiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRh
dGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciI+
CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBz
dHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiPgorPHRhYmxlIGRhdGEt
b2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1ybCI+Cisg
ICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8dGFibGUgZGF0YS1vZmZzZXQt
eD0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKyAgICA8dHI+
PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSItd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXk9MTAg
c3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIj4KKyAgICA8dHI+PHRk
PkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzx0YWJsZSBkYXRhLW9mZnNldC15PTEwIHN0eWxl
PSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCI+CisgICAgPHRyPjx0ZD5IZWxs
bzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0
aW5nLW1vZGU6IHZlcnRpY2FsLWxyIj4KKzx0YWJsZSBkYXRhLW9mZnNldC15PTEwIHN0eWxlPSIt
d2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YiI+CisgICAgPHRyPjx0ZD5IZWxsbzwv
dGQ+PC90cj4KKzwvdGFibGU+Cis8dGFibGUgZGF0YS1vZmZzZXQteT0xMCBzdHlsZT0iLXdlYmtp
dC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwv
dHI+Cis8L3RhYmxlPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161355</attachid>
            <date>2012-08-29 16:41:03 -0700</date>
            <delta_ts>2012-08-30 10:32:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95255-20120829164053.patch</filename>
            <type>text/plain</type>
            <size>22112</size>
            <attacher name="Tony Chang">tony</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTkxMTE4ODViYmM2YThk
MTYzNmVkODY3NWY5MzkzY2U2ZGE0Mzg4OC4uOWZjOWY0ZmJjOWE5OWE5OTczMjZlOTNhNGI0NDg4
NTJjMzE4YTRkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA4LTI5ICBUb255
IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBSZW5kZXJCb3g6OmNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zIGNvbnN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTI1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgcGFydCBvZiBtYWtpbmcgY29tcHV0ZUxv
Z2ljYWx7SGVpZ2h0LFdpZHRofSByZXR1cm4gY29tcHV0ZWQgdmFsdWVzIHJhdGhlciB0aGFuCisg
ICAgICAgIG11dGF0aW5nIHRoZSBSZW5kZXJCb3ggZGlyZWN0bHkuIFRoaXMgbWFrZXMgYSBzdWJt
ZXRob2QgY29uc3QuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaXMganVzdCBhIHJlZmFjdG9yLCBi
dXQgSSd2ZSBhZGRlZCBzb21lIHRlc3RzIHRvIGNvdmVyIGNvZGUgdGhhdCB3YXNuJ3QKKyAgICAg
ICAgcHJldmlvdXNseSBjb3ZlcmVkIGJ5IGxheW91dCB0ZXN0cy4KKworICAgICAgICBUZXN0czog
ZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVjdGlvbi5o
dG1sCisgICAgICAgICAgICAgICBmYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250
YWluaW5nLWJsb2NrLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbFdpZHRoSW5SZWdpb24p
OiBIYW5kbGUgZmxpcHBlZCB0ZXh0IGRpcmVjdGlvbiBtYW51YWxseS4KKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMpOiBNYWtlIGNvbnN0
IHdpdGggb3V0IHBhcmFtZXRlcnMuCisgICAgICAgIE5vIGxvbmdlciBuZWVkIHRvIGNhbGwgc2V0
TWFyZ2lue1N0YXJ0LEVuZH1Gb3JDaGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZEZsaXBC
ZWZvcmVBZnRlck1hcmdpbnMpOiBIZWxwZXIgZnVuY3Rpb24gdG8gZmlndXJlIG91dCBob3cgdG8g
bWFwIGEgbG9naWNhbAorICAgICAgICB3cml0aW5nIG1vZGUgZGlyZWN0aW9uIHRvIGFub3RoZXIg
bG9naWNhbCB3cml0aW5nIG1vZGUgZGlyZWN0aW9uLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCk6IFVzZSBjb25zdCBtZXRob2QuIFRoaXMgYWxzbyBt
YWtlcyBpdCBtb3JlCisgICAgICAgIG9idmlvdXMgdGhhdCB3aGVuIGNvbXB1dGluZyB0aGUgaGVp
Z2h0LCB3ZSBvbmx5IG1vZGlmeSB0aGUgYmVmb3JlL2FmdGVyIG1hcmdpbnMuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAoUmVuZGVyQm94KTogTWFrZSBjb21wdXRl
SW5saW5lRGlyZWN0aW9uTWFyZ2lucyBjb25zdCB3aXRoIG91dCBwYXJhbWV0ZXJzLgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
YWJsZTo6Y29tcHV0ZUxvZ2ljYWxXaWR0aCk6IFNhbWUgYXMgUmVuZGVyQm94Ojpjb21wdHVlTG9n
aWNhbFdpZHRoSW5yZWdpb24uCisKIDIwMTItMDgtMjkgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtOZXcgTXVsdGljb2x1bW5dIFJlbmFtZSBtZXRob2RzIHRvIHBy
ZXBhcmUgZm9yIHByb3BlciBwYWdpbmF0aW9uIG9mIGNvbHVtbnMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAKaW5kZXggZjc3YjYwOWJiNTk3OGNkYTNkZDlkYjVlOTUzMGJkYzVl
ZTUzYTRkNi4uYzVjOTc5MGYxMzcwMWQzODJkYmNlOTE0YjQ3NjI2YWMyNDE4N2ZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE3MTIsNyArMTcxMiwxMyBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxXaWR0aEluUmVnaW9uKFJlbmRlclJlZ2lvbiog
cmVnaW9uLCBMYXlvdXRVbml0IG9mZgogICAgICAgICBMYXlvdXRVbml0IGNvbnRhaW5lckxvZ2lj
YWxXaWR0aEZvckF1dG9NYXJnaW5zID0gY29udGFpbmVyTG9naWNhbFdpZHRoOwogICAgICAgICBp
ZiAoYXZvaWRzRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5zRmxvYXRzKCkpCiAgICAgICAgICAgICBj
b250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucyA9IGNvbnRhaW5pbmdCbG9ja0F2YWls
YWJsZUxpbmVXaWR0aEluUmVnaW9uKHJlZ2lvbiwgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0
UGFnZSk7Ci0gICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBjb250YWlu
ZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucywgbG9naWNhbFdpZHRoKCkpOworICAgICAgICBD
b21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7CisgICAgICAgIGJvb2wgaGFzSW52ZXJ0
ZWREaXJlY3Rpb24gPSAgY2ItPnN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA9PSBz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7CisgICAgICAgIGNvbXB1dGVJbmxpbmVE
aXJlY3Rpb25NYXJnaW5zKGNiLCBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lucywg
bG9naWNhbFdpZHRoKCksCisgICAgICAgICAgICBoYXNJbnZlcnRlZERpcmVjdGlvbiA/IG1hcmdp
blZhbHVlcy5tX3N0YXJ0IDogbWFyZ2luVmFsdWVzLm1fZW5kLAorICAgICAgICAgICAgaGFzSW52
ZXJ0ZWREaXJlY3Rpb24gPyBtYXJnaW5WYWx1ZXMubV9lbmQgOiBtYXJnaW5WYWx1ZXMubV9zdGFy
dCk7CisgICAgICAgIHNldE1hcmdpblN0YXJ0KG1hcmdpblZhbHVlcy5tX3N0YXJ0KTsKKyAgICAg
ICAgc2V0TWFyZ2luRW5kKG1hcmdpblZhbHVlcy5tX2VuZCk7CiAgICAgfQogICAgIAogICAgIGlm
ICghaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdCbG9jayAmJiBjb250YWluZXJMb2dpY2FsV2lk
dGggJiYgY29udGFpbmVyTG9naWNhbFdpZHRoICE9IChsb2dpY2FsV2lkdGgoKSArIG1hcmdpblN0
YXJ0KCkgKyBtYXJnaW5FbmQoKSkKQEAgLTE4MjAsNyArMTgyNiw3IEBAIGJvb2wgUmVuZGVyQm94
OjpzaXplc0xvZ2ljYWxXaWR0aFRvRml0Q29udGVudChTaXplVHlwZSB3aWR0aFR5cGUpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jaywgTGF5b3V0VW5pdCBj
b250YWluZXJXaWR0aCwgTGF5b3V0VW5pdCBjaGlsZFdpZHRoKQordm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2ss
IExheW91dFVuaXQgY29udGFpbmVyV2lkdGgsIExheW91dFVuaXQgY2hpbGRXaWR0aCwgTGF5b3V0
VW5pdCYgbWFyZ2luU3RhcnQsIExheW91dFVuaXQmIG1hcmdpbkVuZCkgY29uc3QKIHsKICAgICBj
b25zdCBSZW5kZXJTdHlsZSogY29udGFpbmluZ0Jsb2NrU3R5bGUgPSBjb250YWluaW5nQmxvY2st
PnN0eWxlKCk7CiAgICAgTGVuZ3RoIG1hcmdpblN0YXJ0TGVuZ3RoID0gc3R5bGUoKS0+bWFyZ2lu
U3RhcnRVc2luZyhjb250YWluaW5nQmxvY2tTdHlsZSk7CkBAIC0xODI5LDggKzE4MzUsOCBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sq
IGNvbnRhaW5pbmdCbG9jaywgTGF5bwogCiAgICAgaWYgKGlzRmxvYXRpbmcoKSB8fCBpc0lubGlu
ZSgpKSB7CiAgICAgICAgIC8vIElubGluZSBibG9ja3MvdGFibGVzIGFuZCBmbG9hdHMgZG9uJ3Qg
aGF2ZSB0aGVpciBtYXJnaW5zIGluY3JlYXNlZC4KLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5z
ZXRNYXJnaW5TdGFydEZvckNoaWxkKHRoaXMsIG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5T
dGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpKTsKLSAgICAgICAgY29udGFp
bmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCBtaW5pbXVtVmFsdWVGb3JMZW5n
dGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldykpOworICAgICAg
ICBtYXJnaW5TdGFydCA9IG1pbmltdW1WYWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwg
Y29udGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOworICAgICAgICBtYXJnaW5FbmQgPSBtaW5pbXVt
VmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmll
dyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE4NDEsMTUgKzE4NDcsMTUgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBj
b250YWluaW5nQmxvY2ssIExheW8KICAgICAgICAgTGF5b3V0VW5pdCBtYXJnaW5TdGFydFdpZHRo
ID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0
aCwgcmVuZGVyVmlldyk7CiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luRW5kV2lkdGggPSBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVy
Vmlldyk7CiAgICAgICAgIExheW91dFVuaXQgY2VudGVyZWRNYXJnaW5Cb3hTdGFydCA9IG1heDxM
YXlvdXRVbml0PigwLCAoY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luU3RhcnRX
aWR0aCAtIG1hcmdpbkVuZFdpZHRoKSAvIDIpOwotICAgICAgICBjb250YWluaW5nQmxvY2stPnNl
dE1hcmdpblN0YXJ0Rm9yQ2hpbGQodGhpcywgY2VudGVyZWRNYXJnaW5Cb3hTdGFydCArIG1hcmdp
blN0YXJ0V2lkdGgpOwotICAgICAgICBjb250YWluaW5nQmxvY2stPnNldE1hcmdpbkVuZEZvckNo
aWxkKHRoaXMsIGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIGNvbnRhaW5pbmdCbG9jay0+
bWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzKSArIG1hcmdpbkVuZFdpZHRoKTsKKyAgICAgICAgbWFy
Z2luU3RhcnQgPSBjZW50ZXJlZE1hcmdpbkJveFN0YXJ0ICsgbWFyZ2luU3RhcnRXaWR0aDsKKyAg
ICAgICAgbWFyZ2luRW5kID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luU3Rh
cnQgKyBtYXJnaW5FbmRXaWR0aDsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCiAgICAgCiAgICAg
Ly8gQ2FzZSBUd286IFRoZSBvYmplY3QgaXMgYmVpbmcgcHVzaGVkIHRvIHRoZSBzdGFydCBvZiB0
aGUgY29udGFpbmluZyBibG9jaydzIGF2YWlsYWJsZSBsb2dpY2FsIHdpZHRoLgogICAgIGlmICht
YXJnaW5FbmRMZW5ndGguaXNBdXRvKCkgJiYgY2hpbGRXaWR0aCA8IGNvbnRhaW5lcldpZHRoKSB7
Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlzLCB2
YWx1ZUZvckxlbmd0aChtYXJnaW5TdGFydExlbmd0aCwgY29udGFpbmVyV2lkdGgsIHJlbmRlclZp
ZXcpKTsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlz
LCBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBjb250YWluaW5nQmxvY2stPm1hcmdpblN0
YXJ0Rm9yQ2hpbGQodGhpcykpOworICAgICAgICBtYXJnaW5TdGFydCA9IHZhbHVlRm9yTGVuZ3Ro
KG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAg
IG1hcmdpbkVuZCA9IGNvbnRhaW5lcldpZHRoIC0gY2hpbGRXaWR0aCAtIG1hcmdpblN0YXJ0Owog
ICAgICAgICByZXR1cm47CiAgICAgfSAKICAgICAKQEAgLTE4NTcsMTUgKzE4NjMsMTUgQEAgdm9p
ZCBSZW5kZXJCb3g6OmNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKFJlbmRlckJsb2NrKiBj
b250YWluaW5nQmxvY2ssIExheW8KICAgICBib29sIHB1c2hUb0VuZEZyb21UZXh0QWxpZ24gPSAh
bWFyZ2luRW5kTGVuZ3RoLmlzQXV0bygpICYmICgoIWNvbnRhaW5pbmdCbG9ja1N0eWxlLT5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCkgJiYgY29udGFpbmluZ0Jsb2NrU3R5bGUtPnRleHRBbGlnbigp
ID09IFdFQktJVF9MRUZUKQogICAgICAgICB8fCAoY29udGFpbmluZ0Jsb2NrU3R5bGUtPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSAmJiBjb250YWluaW5nQmxvY2tTdHlsZS0+dGV4dEFsaWduKCkg
PT0gV0VCS0lUX1JJR0hUKSk7CiAgICAgaWYgKChtYXJnaW5TdGFydExlbmd0aC5pc0F1dG8oKSAm
JiBjaGlsZFdpZHRoIDwgY29udGFpbmVyV2lkdGgpIHx8IHB1c2hUb0VuZEZyb21UZXh0QWxpZ24p
IHsKLSAgICAgICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JDaGlsZCh0aGlzLCB2
YWx1ZUZvckxlbmd0aChtYXJnaW5FbmRMZW5ndGgsIGNvbnRhaW5lcldpZHRoLCByZW5kZXJWaWV3
KSk7Ci0gICAgICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0aGlz
LCBjb250YWluZXJXaWR0aCAtIGNoaWxkV2lkdGggLSBjb250YWluaW5nQmxvY2stPm1hcmdpbkVu
ZEZvckNoaWxkKHRoaXMpKTsKKyAgICAgICAgbWFyZ2luRW5kID0gdmFsdWVGb3JMZW5ndGgobWFy
Z2luRW5kTGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7CisgICAgICAgIG1hcmdp
blN0YXJ0ID0gY29udGFpbmVyV2lkdGggLSBjaGlsZFdpZHRoIC0gbWFyZ2luRW5kOwogICAgICAg
ICByZXR1cm47CiAgICAgfSAKICAgICAKICAgICAvLyBDYXNlIEZvdXI6IEVpdGhlciBubyBhdXRv
IG1hcmdpbnMsIG9yIG91ciB3aWR0aCBpcyA+PSB0aGUgY29udGFpbmVyIHdpZHRoIChjc3MyLjEs
IDEwLjMuMykuICBJbiB0aGF0IGNhc2UKICAgICAvLyBhdXRvIG1hcmdpbnMgd2lsbCBqdXN0IHR1
cm4gaW50byAwLgotICAgIGNvbnRhaW5pbmdCbG9jay0+c2V0TWFyZ2luU3RhcnRGb3JDaGlsZCh0
aGlzLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luU3RhcnRMZW5ndGgsIGNvbnRhaW5lcldp
ZHRoLCByZW5kZXJWaWV3KSk7Ci0gICAgY29udGFpbmluZ0Jsb2NrLT5zZXRNYXJnaW5FbmRGb3JD
aGlsZCh0aGlzLCBtaW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luRW5kTGVuZ3RoLCBjb250YWlu
ZXJXaWR0aCwgcmVuZGVyVmlldykpOworICAgIG1hcmdpblN0YXJ0ID0gbWluaW11bVZhbHVlRm9y
TGVuZ3RoKG1hcmdpblN0YXJ0TGVuZ3RoLCBjb250YWluZXJXaWR0aCwgcmVuZGVyVmlldyk7Cisg
ICAgbWFyZ2luRW5kID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpbkVuZExlbmd0aCwgY29u
dGFpbmVyV2lkdGgsIHJlbmRlclZpZXcpOwogfQogCiBSZW5kZXJCb3hSZWdpb25JbmZvKiBSZW5k
ZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdpb24sIExheW91dFVu
aXQgb2Zmc2V0RnJvbUxvZ2ljYWxUb3BPZkZpcnN0UGFnZSwgUmVuZGVyQm94UmVnaW9uSW5mb0Zs
YWdzIGNhY2hlRmxhZykgY29uc3QKQEAgLTE5NTMsNiArMTk1OSwzMiBAQCBSZW5kZXJCb3hSZWdp
b25JbmZvKiBSZW5kZXJCb3g6OnJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyUmVnaW9uKiByZWdp
b24sIExheW91dAogICAgIHJldHVybiBuZXcgUmVuZGVyQm94UmVnaW9uSW5mbyhsb2dpY2FsTGVm
dE9mZnNldCwgbG9naWNhbFdpZHRoSW5SZWdpb24sIGlzU2hpZnRlZCk7CiB9CiAKK3N0YXRpYyBi
b29sIHNob3VsZEZsaXBCZWZvcmVBZnRlck1hcmdpbnMoY29uc3QgUmVuZGVyU3R5bGUqIGNvbnRh
aW5pbmdCbG9ja1N0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSogY2hpbGRTdHlsZSkKK3sKKyAgICBB
U1NFUlQoY29udGFpbmluZ0Jsb2NrU3R5bGUtPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
Y2hpbGRTdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSk7CisgICAgV3JpdGluZ01vZGUg
Y2hpbGRXcml0aW5nTW9kZSA9IGNoaWxkU3R5bGUtPndyaXRpbmdNb2RlKCk7CisgICAgYm9vbCBz
aG91bGRGbGlwID0gZmFsc2U7CisgICAgc3dpdGNoIChjb250YWluaW5nQmxvY2tTdHlsZS0+d3Jp
dGluZ01vZGUoKSkgeworICAgIGNhc2UgVG9wVG9Cb3R0b21Xcml0aW5nTW9kZToKKyAgICAgICAg
c2hvdWxkRmxpcCA9IChjaGlsZFdyaXRpbmdNb2RlID09IFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJvdHRvbVRvVG9wV3JpdGluZ01vZGU6CisgICAg
ICAgIHNob3VsZEZsaXAgPSAoY2hpbGRXcml0aW5nTW9kZSA9PSBSaWdodFRvTGVmdFdyaXRpbmdN
b2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSaWdodFRvTGVmdFdyaXRpbmdNb2RlOgor
ICAgICAgICBzaG91bGRGbGlwID0gKGNoaWxkV3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0
aW5nTW9kZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZToKKyAgICAgICAgc2hvdWxkRmxpcCA9IChjaGlsZFdyaXRpbmdNb2RlID09IEJvdHRvbVRvVG9w
V3JpdGluZ01vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRhaW5p
bmdCbG9ja1N0eWxlLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCisgICAgICAgIHNob3VsZEZs
aXAgPSAhc2hvdWxkRmxpcDsKKworICAgIHJldHVybiBzaG91bGRGbGlwOworfQorCiB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZUxvZ2ljYWxIZWlnaHQoKQogewogICAgIC8vIENlbGwgaGVpZ2h0IGlz
IG1hbmFnZWQgYnkgdGhlIHRhYmxlIGFuZCBpbmxpbmUgbm9uLXJlcGxhY2VkIGVsZW1lbnRzIGRv
IG5vdCBzdXBwb3J0IGEgaGVpZ2h0IHByb3BlcnR5LgpAQCAtMTk3Nyw4ICsyMDA5LDE1IEBAIHZv
aWQgUmVuZGVyQm94Ojpjb21wdXRlTG9naWNhbEhlaWdodCgpCiAKICAgICAgICAgLy8gRm9yIHRh
YmxlcywgY2FsY3VsYXRlIG1hcmdpbnMgb25seS4KICAgICAgICAgaWYgKGlzVGFibGUoKSkgewot
ICAgICAgICAgICAgaWYgKGhhc1BlcnBlbmRpY3VsYXJDb250YWluaW5nQmxvY2spCi0gICAgICAg
ICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5pbmdCbG9j
a0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgbG9naWNhbEhlaWdodCgpKTsKKyAgICAgICAgICAg
IGlmIChoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CisgICAgICAgICAgICAgICAg
Q29tcHV0ZWRNYXJnaW5WYWx1ZXMgbWFyZ2luVmFsdWVzOworICAgICAgICAgICAgICAgIGJvb2wg
c2hvdWxkRmxpcEJlZm9yZUFmdGVyID0gc2hvdWxkRmxpcEJlZm9yZUFmdGVyTWFyZ2lucyhjYi0+
c3R5bGUoKSwgc3R5bGUoKSk7CisgICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlv
bk1hcmdpbnMoY2IsIGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgbG9n
aWNhbEhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXIg
PyBtYXJnaW5WYWx1ZXMubV9hZnRlciA6IG1hcmdpblZhbHVlcy5tX2JlZm9yZSwKKyAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkRmxpcEJlZm9yZUFmdGVyID8gbWFyZ2luVmFsdWVzLm1fYmVmb3Jl
IDogbWFyZ2luVmFsdWVzLm1fYWZ0ZXIpOworICAgICAgICAgICAgICAgIHNldE1hcmdpbkJlZm9y
ZShtYXJnaW5WYWx1ZXMubV9iZWZvcmUpOworICAgICAgICAgICAgICAgIHNldE1hcmdpbkFmdGVy
KG1hcmdpblZhbHVlcy5tX2FmdGVyKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yMDI2LDggKzIwNjUsMTUgQEAgdm9pZCBSZW5kZXJCb3g6OmNv
bXB1dGVMb2dpY2FsSGVpZ2h0KCkKIAogICAgICAgICBzZXRMb2dpY2FsSGVpZ2h0KGhlaWdodFJl
c3VsdCk7CiAgICAgICAgIAotICAgICAgICBpZiAoaGFzUGVycGVuZGljdWxhckNvbnRhaW5pbmdC
bG9jaykKLSAgICAgICAgICAgIGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25NYXJnaW5zKGNiLCBjb250
YWluaW5nQmxvY2tMb2dpY2FsV2lkdGhGb3JDb250ZW50KCksIGhlaWdodFJlc3VsdCk7CisgICAg
ICAgIGlmIChoYXNQZXJwZW5kaWN1bGFyQ29udGFpbmluZ0Jsb2NrKSB7CisgICAgICAgICAgICBD
b21wdXRlZE1hcmdpblZhbHVlcyBtYXJnaW5WYWx1ZXM7CisgICAgICAgICAgICBib29sIHNob3Vs
ZEZsaXBCZWZvcmVBZnRlciA9IHNob3VsZEZsaXBCZWZvcmVBZnRlck1hcmdpbnMoY2ItPnN0eWxl
KCksIHN0eWxlKCkpOworICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMo
Y2IsIGNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgaGVpZ2h0UmVzdWx0
LAorICAgICAgICAgICAgICAgICAgICBzaG91bGRGbGlwQmVmb3JlQWZ0ZXIgPyBtYXJnaW5WYWx1
ZXMubV9hZnRlciA6IG1hcmdpblZhbHVlcy5tX2JlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkRmxpcEJlZm9yZUFmdGVyID8gbWFyZ2luVmFsdWVzLm1fYmVmb3JlIDogbWFyZ2luVmFs
dWVzLm1fYWZ0ZXIpOworICAgICAgICAgICAgc2V0TWFyZ2luQmVmb3JlKG1hcmdpblZhbHVlcy5t
X2JlZm9yZSk7CisgICAgICAgICAgICBzZXRNYXJnaW5BZnRlcihtYXJnaW5WYWx1ZXMubV9hZnRl
cik7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBXaW5JRSBxdWlyazogVGhlIDxodG1sPiBi
bG9jayBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBjYW52YXMgaW4gcXVpcmtzIG1vZGUuICBUaGUg
PGJvZHk+IGFsd2F5cyBmaWxscyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApp
bmRleCA3YmQ4MzA4ZjYzZDk2ODRjYTM5ODQ4ZjU0ZDFkNDNiZTViYTBiNTk4Li43ZDU1MWRmMzcw
YjNhNmE3Mzg5ODlmODcwMmYyZDk1MjRhYWU4N2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCkBAIC0zMzIsNyArMzMyLDcgQEAgcHVibGljOgogICAgIH07CiAgICAgLy8gUmVz
b2x2ZSBhdXRvIG1hcmdpbnMgaW4gdGhlIGlubGluZSBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5p
bmcgYmxvY2sgc28gdGhhdCBvYmplY3RzIGNhbiBiZSBwdXNoZWQgdG8gdGhlIHN0YXJ0LCBtaWRk
bGUgb3IgZW5kCiAgICAgLy8gb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2suCi0gICAgdm9pZCBjb21w
dXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyhSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrLCBM
YXlvdXRVbml0IGNvbnRhaW5lcldpZHRoLCBMYXlvdXRVbml0IGNoaWxkV2lkdGgpOworICAgIHZv
aWQgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdC
bG9jaywgTGF5b3V0VW5pdCBjb250YWluZXJXaWR0aCwgTGF5b3V0VW5pdCBjaGlsZFdpZHRoLCBM
YXlvdXRVbml0JiBtYXJnaW5TdGFydCwgTGF5b3V0VW5pdCYgbWFyZ2luRW5kKSBjb25zdDsKIAog
ICAgIC8vIFVzZWQgdG8gcmVzb2x2ZSBtYXJnaW5zIGluIHRoZSBjb250YWluaW5nIGJsb2NrJ3Mg
YmxvY2stZmxvdyBkaXJlY3Rpb24uCiAgICAgdm9pZCBjb21wdXRlQmxvY2tEaXJlY3Rpb25NYXJn
aW5zKGNvbnN0IFJlbmRlckJsb2NrKiBjb250YWluaW5nQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggNGMzOGQ0ZWY0NTY3YmU0ZTA5MTA0YzgyYWEw
ZDA0NzY4NjExM2I1NC4uYWI4NTdhOThmMjA3MGM1MmNkNjkwOTg3ODAxOWFkMjRkMTk2OTczMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCkBAIC0yNjYsNyArMjY2
LDEzIEBAIHZvaWQgUmVuZGVyVGFibGU6OmNvbXB1dGVMb2dpY2FsV2lkdGgoKQogICAgICAgICBM
YXlvdXRVbml0IGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zID0gYXZhaWxhYmxl
TG9naWNhbFdpZHRoOwogICAgICAgICBpZiAoYXZvaWRzRmxvYXRzKCkgJiYgY2ItPmNvbnRhaW5z
RmxvYXRzKCkpCiAgICAgICAgICAgICBjb250YWluZXJMb2dpY2FsV2lkdGhGb3JBdXRvTWFyZ2lu
cyA9IGNvbnRhaW5pbmdCbG9ja0F2YWlsYWJsZUxpbmVXaWR0aEluUmVnaW9uKDAsIDApOyAvLyBG
SVhNRTogV29yayB3aXRoIHJlZ2lvbnMgc29tZWRheS4KLSAgICAgICAgY29tcHV0ZUlubGluZURp
cmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxvZ2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zLCBs
b2dpY2FsV2lkdGgoKSk7CisgICAgICAgIENvbXB1dGVkTWFyZ2luVmFsdWVzIG1hcmdpblZhbHVl
czsKKyAgICAgICAgYm9vbCBoYXNJbnZlcnRlZERpcmVjdGlvbiA9ICBjYi0+c3R5bGUoKS0+aXNM
ZWZ0VG9SaWdodERpcmVjdGlvbigpID09IHN0eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24o
KTsKKyAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvbk1hcmdpbnMoY2IsIGNvbnRhaW5lckxv
Z2ljYWxXaWR0aEZvckF1dG9NYXJnaW5zLCBsb2dpY2FsV2lkdGgoKSwKKyAgICAgICAgICAgIGhh
c0ludmVydGVkRGlyZWN0aW9uID8gbWFyZ2luVmFsdWVzLm1fc3RhcnQgOiBtYXJnaW5WYWx1ZXMu
bV9lbmQsCisgICAgICAgICAgICBoYXNJbnZlcnRlZERpcmVjdGlvbiA/IG1hcmdpblZhbHVlcy5t
X2VuZCA6IG1hcmdpblZhbHVlcy5tX3N0YXJ0KTsKKyAgICAgICAgc2V0TWFyZ2luU3RhcnQobWFy
Z2luVmFsdWVzLm1fc3RhcnQpOworICAgICAgICBzZXRNYXJnaW5FbmQobWFyZ2luVmFsdWVzLm1f
ZW5kKTsKICAgICB9IGVsc2UgewogICAgICAgICBzZXRNYXJnaW5TdGFydChtaW5pbXVtVmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+bWFyZ2luU3RhcnQoKSwgYXZhaWxhYmxlTG9naWNhbFdpZHRoLCBy
ZW5kZXJWaWV3KSk7CiAgICAgICAgIHNldE1hcmdpbkVuZChtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bWFyZ2luRW5kKCksIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCwgcmVuZGVyVmlldykp
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDJkNWVmZjk0ODQzMWNjOGNkNzAwZjJhNTJlOWM1OTQ4MzVlM2I2YmQuLmFiZjMz
MGJlODYyNmMzZjAyYTVmMWQ4OWU5YTk5NWYyMTdlNDg4OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMSBA
QAogMjAxMi0wOC0yOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCisgICAgICAg
IE1ha2UgUmVuZGVyQm94Ojpjb21wdXRlSW5saW5lRGlyZWN0aW9uTWFyZ2lucyBjb25zdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTUyNTUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBjYXNl
cyBmb3Igc2V0dGluZyBtYXJnaW5zIHdpdGggcGVycGVuZGljdWxhciBibG9ja3Mgb3IgZmxpcHBl
ZCB0ZXh0LgorCisgICAgICAgICogZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29u
dGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvYmxvY2sv
bWFyZ2lucy1wZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC90YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRp
cmVjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3RhYmxlL21hcmdpbnMtcGVycGVu
ZGljdWxhci1jb250YWluaW5nLWJsb2NrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC90YWJsZS9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5odG1sOiBB
ZGRlZC4KKworMjAxMi0wOC0yOSAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgorCiAg
ICAgICAgIFVucmV2aWV3ZWQsIG1hcmsgY3NzMy9mbGV4Ym94L2ZsZXhpdGVtLmh0bWwgYXMgZmFp
bGluZyBvbiBlZmwuIFRoZXJlCiAgICAgICAgIGFyZSBkaWZmZXJlbmNlcyB3aXRoIGZvcm0gY29u
dHJvbHMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJw
ZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDBmOTQ5ZjRjMTY4OTE3Mzk0YjNmOThhZTIxZmQwZGE0NTYyZDA2NAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5k
aWN1bGFyLWNvbnRhaW5pbmctYmxvY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1BB
U1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1wZXJwZW5kaWN1bGFy
LWNvbnRhaW5pbmctYmxvY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvYmxvY2svbWFyZ2lucy1w
ZXJwZW5kaWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzIwYjMyMDVi
YjgzYzkxZDA5OTYxOTM2YmU5M2NmMzY3MDQ2MDFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ibG9jay9tYXJnaW5zLXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay5o
dG1sCkBAIC0wLDAgKzEsNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KK2Rpdi5jaGVjayB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHdpZHRoOiA2
MDBweDsKK30KK2RpdiA+IGRpdiB7CisgICAgbWFyZ2luOiAxMHB4IDIwcHggMjBweCAxMHB4Owor
ICAgIHdpZHRoOiA1MHB4OworICAgIGhlaWdodDogNTBweDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBncmVlbjsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2NoZWNr
LWxheW91dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5
IG9ubG9hZD0iY2hlY2tMYXlvdXQoJy5jaGVjaycpIj4KKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3Jp
dGluZy1tb2RlOiBob3Jpem9udGFsLXRiIiBjbGFzcz0iY2hlY2siPgorICAgIDxkaXYgZGF0YS1v
ZmZzZXQteD0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsIj48L2Rp
dj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2Rl
OiB2ZXJ0aWNhbC1sciI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0
aW5nLW1vZGU6IGhvcml6b250YWwtYnQiIGNsYXNzPSJjaGVjayI+CisgICAgPGRpdiBkYXRhLW9m
ZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiPjwvZGl2
PgorICAgIDxkaXYgZGF0YS1vZmZzZXQteD0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6
IHZlcnRpY2FsLWxyIj48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRp
bmctbW9kZTogaG9yaXpvbnRhbC10YjsgZGlyZWN0aW9uOiBydGwiIGNsYXNzPSJjaGVjayI+Cisg
ICAgPGRpdiBkYXRhLW9mZnNldC14PTUzMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLXJsIj48L2Rpdj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXg9NTMwIHN0eWxlPSItd2Vi
a2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHIiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5
bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0OyBkaXJlY3Rpb246IHJ0bCIg
Y2xhc3M9ImNoZWNrIj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXg9NTMwIHN0eWxlPSItd2Via2l0
LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmwiPjwvZGl2PgorICAgIDxkaXYgZGF0YS1vZmZzZXQt
eD01MzAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciI+PC9kaXY+Cis8
L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsIiBj
bGFzcz0iY2hlY2siPgorICAgIDxkaXYgZGF0YS1vZmZzZXQteT0xMCBzdHlsZT0iLXdlYmtpdC13
cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGIiPjwvZGl2PgorICAgIDxkaXYgZGF0YS1vZmZzZXQt
eT0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiPjwvZGl2Pgor
PC9kaXY+CisKKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciIg
Y2xhc3M9ImNoZWNrIj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQt
d3JpdGluZy1tb2RlOiBob3Jpem9udGFsLXRiIj48L2Rpdj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0
LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0Ij48L2Rpdj4K
KzwvZGl2PgorCis8ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtcmw7
IGRpcmVjdGlvbjogcnRsIiBjbGFzcz0iY2hlY2siPgorICAgIDxkaXYgZGF0YS1vZmZzZXQteT0x
MCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGIiPjwvZGl2PgorICAg
IDxkaXYgZGF0YS1vZmZzZXQteT0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6
b250YWwtYnQiPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1t
b2RlOiB2ZXJ0aWNhbC1scjsgZGlyZWN0aW9uOiBydGwiIGNsYXNzPSJjaGVjayI+CisgICAgPGRp
diBkYXRhLW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRh
bC10YiI+PC9kaXY+CisgICAgPGRpdiBkYXRhLW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdy
aXRpbmctbW9kZTogaG9yaXpvbnRhbC1idCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0i
LXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsIiBjbGFzcz0iY2hlY2siPgorICAgIDxk
aXYgZGF0YS1vZmZzZXQteT0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250
YWwtdGI7IGRpcmVjdGlvbjogcnRsIj48L2Rpdj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXk9MTAg
c3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0OyBkaXJlY3Rpb246IHJ0
bCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZl
cnRpY2FsLWxyIiBjbGFzcz0iY2hlY2siPgorICAgIDxkaXYgZGF0YS1vZmZzZXQteT0xMCBzdHls
ZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGI7IGRpcmVjdGlvbjogcnRsIj48
L2Rpdj4KKyAgICA8ZGl2IGRhdGEtb2Zmc2V0LXk9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1t
b2RlOiBob3Jpem9udGFsLWJ0OyBkaXJlY3Rpb246IHJ0bCI+PC9kaXY+Cis8L2Rpdj4KKworPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5z
LWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC90
YWJsZS9tYXJnaW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ3NTVhZjNhYmQ3NWNmNTZmOGEwOWEwMGNjNWRhMTFlZmUyOWZhMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtZmxpcHBlZC10ZXh0LWRpcmVj
dGlvbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitIZWxsbworSGVsbG8KK1BBU1MKK0hl
bGxvCitIZWxsbworUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJn
aW5zLWZsaXBwZWQtdGV4dC1kaXJlY3Rpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUv
bWFyZ2lucy1mbGlwcGVkLXRleHQtZGlyZWN0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDNiNmVjMzQ2
ZjlhNTdmZGY4ZmRlMjE4MjM5MzQwNWEzNmE0ZjlkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1mbGlwcGVkLXRleHQtZGlyZWN0aW9uLmh0bWwKQEAg
LTAsMCArMSw0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
ZGl2IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgd2lkdGg6IDYwMHB4OworfQordGFi
bGUgeworICAgIG1hcmdpbi1sZWZ0OiAxMHB4OworICAgIG1hcmdpbi1yaWdodDogMjBweDsKKyAg
ICB3aWR0aDogMjAwcHg7CisgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNoZWNrTGF5b3V0
KCdkaXYnKSI+Cis8ZGl2IHN0eWxlPSJkaXJlY3Rpb246IGx0ciI+Cis8dGFibGUgZGF0YS1vZmZz
ZXQteD0xMCBzdHlsZT0iZGlyZWN0aW9uOiBsdHIiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwv
dHI+Cis8L3RhYmxlPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9ImRpcmVjdGlvbjog
cnRsIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzwvZGl2PgorCis8
ZGl2IHN0eWxlPSJkaXJlY3Rpb246IHJ0bCI+Cis8dGFibGUgZGF0YS1vZmZzZXQteD0zODAgc3R5
bGU9ImRpcmVjdGlvbjogbHRyIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJs
ZT4KKzx0YWJsZSBkYXRhLW9mZnNldC14PTM4MCBzdHlsZT0iZGlyZWN0aW9uOiBydGwiPgorICAg
IDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5z
LXBlcnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNjk0ZjBmZjI1YWJhZmE0Nzk3YTA0NzY0NDg0NWNmMmY0Mzcz
MDVjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC90YWJsZS9tYXJnaW5zLXBl
cnBlbmRpY3VsYXItY29udGFpbmluZy1ibG9jay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorSGVsbG8KK0hlbGxvCitQQVNTCitIZWxsbworSGVsbG8KK1BBU1MKK0hlbGxvCitIZWxsbwor
UEFTUworSGVsbG8KK0hlbGxvCitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Rh
YmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L3RhYmxlL21hcmdpbnMtcGVycGVuZGljdWxhci1jb250YWluaW5nLWJsb2NrLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2ZhYzAyZTNlZGM0MzY5ODZhN2M0YmRkMzYyOTk3NWU1YjZkMDdlNwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvdGFibGUvbWFyZ2lucy1wZXJwZW5k
aWN1bGFyLWNvbnRhaW5pbmctYmxvY2suaHRtbApAQCAtMCwwICsxLDU2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CitkaXYgeworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKK30KK3RhYmxlIHsKKyAgICBtYXJnaW46IDEwcHggMjBweCAyMHB4IDEwcHg7Cit9Cis8
L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9jaGVjay1sYXlvdXQuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9ImNoZWNr
TGF5b3V0KCdkaXYnKSI+Cis8ZGl2IHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpv
bnRhbC10YiI+Cis8dGFibGUgZGF0YS1vZmZzZXQteD0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5n
LW1vZGU6IHZlcnRpY2FsLXJsIj4KKyAgICA8dHI+PHRkPkhlbGxvPC90ZD48L3RyPgorPC90YWJs
ZT4KKzx0YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTog
dmVydGljYWwtbHIiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9k
aXY+CisKKzxkaXYgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0Ij4K
Kzx0YWJsZSBkYXRhLW9mZnNldC14PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogdmVy
dGljYWwtcmwiPgorICAgIDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxl
IGRhdGEtb2Zmc2V0LXg9MTAgc3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1s
ciI+CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8L2Rpdj4KKworPGRp
diBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IHZlcnRpY2FsLXJsIj4KKzx0YWJsZSBkYXRh
LW9mZnNldC15PTEwIHN0eWxlPSItd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC10YiI+
CisgICAgPHRyPjx0ZD5IZWxsbzwvdGQ+PC90cj4KKzwvdGFibGU+Cis8dGFibGUgZGF0YS1vZmZz
ZXQteT0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtYnQiPgorICAg
IDx0cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPC9kaXY+CisKKzxkaXYgc3R5bGU9
Ii13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1sciI+Cis8dGFibGUgZGF0YS1vZmZzZXQt
eT0xMCBzdHlsZT0iLXdlYmtpdC13cml0aW5nLW1vZGU6IGhvcml6b250YWwtdGIiPgorICAgIDx0
cj48dGQ+SGVsbG88L3RkPjwvdHI+Cis8L3RhYmxlPgorPHRhYmxlIGRhdGEtb2Zmc2V0LXk9MTAg
c3R5bGU9Ii13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFsLWJ0Ij4KKyAgICA8dHI+PHRk
PkhlbGxvPC90ZD48L3RyPgorPC90YWJsZT4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>