<?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>61911</bug_id>
          
          <creation_ts>2011-06-02 00:24:27 -0700</creation_ts>
          <short_desc>REGRESSION: Page layout messed up after exiting full screen after video ends at jerryseinfeld.com</short_desc>
          <delta_ts>2012-05-11 18:19:06 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc>http://jerryseinfeld.com/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>61897</dependson>
    
    <dependson>62408</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>blahblah676</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jeffm</cc>
    
    <cc>mjs</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>webkit</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>413964</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:24:27 -0700</bug_when>
    <thetext>REGRESSION: Page layout messed up after exiting full screen after video ends at jerryseinfeld.com</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413966</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:25:40 -0700</bug_when>
    <thetext>1. Navigate to &lt;http://jerryseinfeld.com/&gt;
2. Click on one of the video titles
3. When the video starts playing, click the full screen button
4. Wait for the video to end
5. Click the exit full screen button in the HUD


The video (all black) shrinks back into place, then the page appears to relayout (see &lt;https://bugs.webkit.org/show_bug.cgi?id=61897&gt;), ending in a broken state where it’s showing a frame from the middle of the video stretched beyond the original bounds of the video element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413967</commentid>
    <comment_count>2</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:25:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/9523017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413968</commentid>
    <comment_count>3</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:26:22 -0700</bug_when>
    <thetext>This is a problem for all users of VideoJS (2.0.2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413969</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:26:49 -0700</bug_when>
    <thetext>We&apos;re going to have to lie to the callers of originWidth and originHeight (as well as Left and Top, just to be sure).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413972</commentid>
    <comment_count>5</comment_count>
      <attachid>95731</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:33:28 -0700</bug_when>
    <thetext>Created attachment 95731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413975</commentid>
    <comment_count>6</comment_count>
      <attachid>95733</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 00:47:04 -0700</bug_when>
    <thetext>Created attachment 95733
Patch

Added radar URL; moved some code between the two patches to allow them to apply cleanly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413978</commentid>
    <comment_count>7</comment_count>
      <attachid>95733</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 01:05:23 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

Attachment 95733 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8760065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413994</commentid>
    <comment_count>8</comment_count>
      <attachid>95733</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-06-02 01:41:23 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

Attachment 95733 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8758337</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414003</commentid>
    <comment_count>9</comment_count>
      <attachid>95733</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 02:11:42 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

Attachment 95733 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8755788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414014</commentid>
    <comment_count>10</comment_count>
      <attachid>95733</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-02 03:02:19 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

Attachment 95733 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8754734</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414133</commentid>
    <comment_count>11</comment_count>
      <attachid>95733</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-02 08:24:39 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

Looks like thsi doesn&apos;t build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414143</commentid>
    <comment_count>12</comment_count>
      <attachid>95733</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 08:32:25 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

This patch depends on the patch in bug #61897.  Can the EWS bots not track bug dependencies?  Setting back to r?, but leaving the cq-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414229</commentid>
    <comment_count>13</comment_count>
      <attachid>95733</attachid>
    <who name="Jeff Miller">jeffm</who>
    <bug_when>2011-06-02 10:11:20 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:47
&gt; +class RenderBlock;

Why did you need to forward declare RenderBlock? I don&apos;t see this class referenced anywhere in your other changes to this header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414233</commentid>
    <comment_count>14</comment_count>
      <attachid>95733</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-02 10:15:17 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

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

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:47
&gt;&gt; +class RenderBlock;
&gt; 
&gt; Why did you need to forward declare RenderBlock? I don&apos;t see this class referenced anywhere in your other changes to this header.

Ah, good catch.  I forgot to take this out before uploading.  I previously had made the elementPlaceholder() function a class-static, but changed it to a file-static function.  When I removed the declaration from the header, I forgot to take out the forward declaration of RenderBlock.  I&apos;ll remove this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414983</commentid>
    <comment_count>15</comment_count>
      <attachid>95733</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-03 10:21:08 -0700</bug_when>
    <thetext>Comment on attachment 95733
Patch

According to the bots this seems to break lots of builds. Please revise to fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415057</commentid>
    <comment_count>16</comment_count>
      <attachid>95941</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-03 11:54:39 -0700</bug_when>
    <thetext>Created attachment 95941
Patch

Re-uploading the same patch (with Jeff&apos;s comments addressed) to get the EWS bots chewing on it now that the fix for bug #61897 has landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416351</commentid>
    <comment_count>17</comment_count>
      <attachid>95941</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-06-06 22:49:27 -0700</bug_when>
    <thetext>Comment on attachment 95941
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:210
&gt; +    // Override Element implementations
&gt; +    int offsetLeft();
&gt; +    int offsetTop();
&gt; +    int offsetWidth();
&gt; +    int offsetHeight();

This approach seems pretty fragile. What if we add code elsewhere in HTMLMediaElement or subclasses that calls offsetLeft etc?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416355</commentid>
    <comment_count>18</comment_count>
      <attachid>95941</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-06 23:05:07 -0700</bug_when>
    <thetext>Comment on attachment 95941
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.idl:90
&gt; +    // Override Element functions
&gt; +    readonly attribute long offsetLeft;
&gt; +    readonly attribute long offsetTop;
&gt; +    readonly attribute long offsetWidth;
&gt; +    readonly attribute long offsetHeight;
&gt; +

This seems wrong to me. The right way to override is to make the methods virtual and override them at the C++ level. IDL overrides are not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416357</commentid>
    <comment_count>19</comment_count>
      <attachid>95941</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-06 23:07:21 -0700</bug_when>
    <thetext>Comment on attachment 95941
Patch

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

r- due to previous comment about additions to the IDL.

&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:210
&gt;&gt; +    int offsetHeight();
&gt; 
&gt; This approach seems pretty fragile. What if we add code elsewhere in HTMLMediaElement or subclasses that calls offsetLeft etc?

If these are virtual overrides, then this seems ok unless we have code that specifically needs the &quot;true&quot; offsetLeft/Top/Height/Width. However, I believe these methods exist almost entirely to implement the relevant JS API. So I think this is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416372</commentid>
    <comment_count>20</comment_count>
      <attachid>95941</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-06 23:29:35 -0700</bug_when>
    <thetext>Comment on attachment 95941
Patch

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

&gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:210

&gt;&gt; 
&gt;&gt; This approach seems pretty fragile. What if we add code elsewhere in HTMLMediaElement or subclasses that calls offsetLeft etc?
&gt; 
&gt; If these are virtual overrides, then this seems ok unless we have code that specifically needs the &quot;true&quot; offsetLeft/Top/Height/Width. However, I believe these methods exist almost entirely to implement the relevant JS API. So I think this is ok.

If that&apos;s the case; the reason I wrote this patch this way was that the offset functions would continue to return the &quot;truth&quot; unless you ask the media element directly, like the JS API does. But if these functions only exist to feed the JS API, then that&apos;s unnecessary.  I&apos;ll make these functions virtual instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417060</commentid>
    <comment_count>21</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-07 21:20:35 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 95941 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95941&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/html/HTMLMediaElement.h:210
&gt; 
&gt; &gt;&gt; 
&gt; &gt;&gt; This approach seems pretty fragile. What if we add code elsewhere in HTMLMediaElement or subclasses that calls offsetLeft etc?
&gt; &gt; 
&gt; &gt; If these are virtual overrides, then this seems ok unless we have code that specifically needs the &quot;true&quot; offsetLeft/Top/Height/Width. However, I believe these methods exist almost entirely to implement the relevant JS API. So I think this is ok.
&gt; 
&gt; If that&apos;s the case; the reason I wrote this patch this way was that the offset functions would continue to return the &quot;truth&quot; unless you ask the media element directly, like the JS API does. But if these functions only exist to feed the JS API, then that&apos;s unnecessary.  I&apos;ll make these functions virtual instead.

It&apos;s really dangerous to have non-virtual overrides that differ significantly in behavior. It means just down casting or upcasting the pointer can change the behavior of methods, which is pretty risky. If the vanilla offsetLeft/Top/Height/Width is really needed somewhere then it would be better to create separate non virtual methods with those names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417399</commentid>
    <comment_count>22</comment_count>
      <attachid>96453</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-08 12:12:23 -0700</bug_when>
    <thetext>Created attachment 96453
Patch

Made the offset functions in Element and HTMLMediaElement virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417529</commentid>
    <comment_count>23</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-08 14:22:10 -0700</bug_when>
    <thetext>The latest patch looks good to me. Two more requests before I sign off:

1) Please search for all uses of offsetLeft, offsetTop, offsetRight, offsetBottom and see if the new variable-behavior version is reasonable for that case. It looks to me like there are only a few uses (outside of JS code).

2) Let&apos;s run through the full-screen video test plan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417668</commentid>
    <comment_count>24</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-08 16:20:06 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; The latest patch looks good to me. Two more requests before I sign off:
&gt; 
&gt; 1) Please search for all uses of offsetLeft, offsetTop, offsetRight, offsetBottom and see if the new variable-behavior version is reasonable for that case. It looks to me like there are only a few uses (outside of JS code).

One use:  In SpatialNavigation.cpp.  offsetLeft and offsetTop are used for calculating the absolute position in a node, meaning in full-screen this calculation will be off for media elements and their children.

Second use: In PrintContext.cpp.  pageNumberForElement uses offsetLeft and offsetTop to determine the page number for a given element.  Printing in full-screen mode might lead to wrong page numbers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418094</commentid>
    <comment_count>25</comment_count>
      <attachid>96453</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-06-09 10:37:50 -0700</bug_when>
    <thetext>Comment on attachment 96453
Patch

Given the code inspection and testing, r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418150</commentid>
    <comment_count>26</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2011-06-09 11:47:39 -0700</bug_when>
    <thetext>Committed r88468: &lt;http://trac.webkit.org/changeset/88468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418324</commentid>
    <comment_count>27</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-09 14:53:20 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Committed r88468: &lt;http://trac.webkit.org/changeset/88468&gt;

It broke Qt build. :S Could you fix it, or should we roll it out?

Reopen to fix the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418342</commentid>
    <comment_count>28</comment_count>
      <attachid>96453</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-09 15:18:33 -0700</bug_when>
    <thetext>Comment on attachment 96453
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:2724
&gt; +    RenderFullScreen* fullScreen = parent &amp;&amp; parent-&gt;isRenderFullScreen() ? toRenderFullScreen(parent) : 0;

isRenderFullScreen is defined inside ENABLE(FULLSCREEN_API) block, 
but it is used outside of ENABLE(FULLSCREEN_API) block, that&apos;s why
this patch broke Qt build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418348</commentid>
    <comment_count>29</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-06-09 15:25:24 -0700</bug_when>
    <thetext>Rolled out by http://trac.webkit.org/changeset/88490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514654</commentid>
    <comment_count>30</comment_count>
    <who name="Heff">webkit</who>
    <bug_when>2011-12-04 00:56:19 -0800</bug_when>
    <thetext>I&apos;m trying to figure out if this is related to an issue I&apos;m having. I&apos;m finding the element that requests fullscreen doesn&apos;t report zero for offsetLeft while in fullscreen, as I would expect.

The use case is building a draggable currentTime/progress bar. When the user is dragging (mousemove), I need to calculate the event&apos;s pageX in relation to the x value of the progress bar, which is inside the fullscreen element. I use the following function to get the x value.

  findPosX: function(obj) {
    var curleft = obj.offsetLeft;
    while(obj = obj.offsetParent) {
      curleft += obj.offsetLeft;
    }
    return curleft;
  }

In the chain of parent objects is the fullscreen element, which compared to the event&apos;s x should have an offsetleft of 0, but doesn&apos;t.

http://videojs.com/offsetleft/dev.html
If you go to this link, go into fullscreen, click somewhere on the timeline (nothing will happen), exit fullscreen, then pull up the console, you&apos;ll see offsetleft is reported as 520. The element&apos;s offset left is 285 when not in fullscreen, so I&apos;m not sure where the 520 is coming from. If you play the video, go into fullscreen, and drag on the timeline you can see the result. The progress bar + handle lag 520px behind the cursor.

Is this related?

-Steve Heffernan (VideoJS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514879</commentid>
    <comment_count>31</comment_count>
    <who name="Heff">webkit</who>
    <bug_when>2011-12-04 21:12:23 -0800</bug_when>
    <thetext>Switched to using getBoundingClientRect which works as expected, so no longer an issue for me.

(In reply to comment #30)
&gt; I&apos;m trying to figure out if this is related to an issue I&apos;m having. I&apos;m finding the element that requests fullscreen doesn&apos;t report zero for offsetLeft while in fullscreen, as I would expect.
&gt; 
&gt; The use case is building a draggable currentTime/progress bar. When the user is dragging (mousemove), I need to calculate the event&apos;s pageX in relation to the x value of the progress bar, which is inside the fullscreen element. I use the following function to get the x value.
&gt; 
&gt;   findPosX: function(obj) {
&gt;     var curleft = obj.offsetLeft;
&gt;     while(obj = obj.offsetParent) {
&gt;       curleft += obj.offsetLeft;
&gt;     }
&gt;     return curleft;
&gt;   }
&gt; 
&gt; In the chain of parent objects is the fullscreen element, which compared to the event&apos;s x should have an offsetleft of 0, but doesn&apos;t.
&gt; 
&gt; http://videojs.com/offsetleft/dev.html
&gt; If you go to this link, go into fullscreen, click somewhere on the timeline (nothing will happen), exit fullscreen, then pull up the console, you&apos;ll see offsetleft is reported as 520. The element&apos;s offset left is 285 when not in fullscreen, so I&apos;m not sure where the 520 is coming from. If you play the video, go into fullscreen, and drag on the timeline you can see the result. The progress bar + handle lag 520px behind the cursor.
&gt; 
&gt; Is this related?
&gt; 
&gt; -Steve Heffernan (VideoJS)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622170</commentid>
    <comment_count>32</comment_count>
    <who name="">blahblah676</who>
    <bug_when>2012-05-11 18:19:06 -0700</bug_when>
    <thetext>(In reply to comment #30)

I&apos;m having the same problem - offsetTop and offsetLeft are really messed up when in full-screen in Safari, and slightly wrong in Chrome. Firefox doesn&apos;t have this problem.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95731</attachid>
            <date>2011-06-02 00:33:28 -0700</date>
            <delta_ts>2011-06-02 00:47:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61911-20110602003327.patch</filename>
            <type>text/plain</type>
            <size>11030</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzZjU5MjgzNTFlN2VhZTljNzBlMGM1
Y2Y2NDA5NmU5YjQ0OWM0Yzc4Li5iMjY3OGFlZTg1MzJlYTgyOWZjZjczNWYzZjRkMzZjN2E0Mjc5
NGUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDYtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUkVHUkVTU0lPTjogUGFnZSBsYXlvdXQgbWVzc2VkIHVwIGFmdGVyIGV4aXRpbmcg
ZnVsbCBzY3JlZW4gYWZ0ZXIgdmlkZW8gZW5kcyBhdCBqZXJyeXNlaW5mZWxkLmNvbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MTEKKworICAgICAg
ICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi12aWRlby1vZmZzZXQuaHRtbDog
QWRkZWQuCisKIDIwMTEtMDYtMDEgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzliNmYwMGI1YmFjYzUyOTVlZGJkOTY5MDcyYjc2YWQ5NmUyODhjZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdmlk
ZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK1RoaXMgbGF5b3V0IHRlc3Qg
Y2hlY2tzIHRoYXQgdGhlIG9mZnNldCBzaXplIGFuZCBwb3NpdGlvbiBvZiBhIHZpZGVvIGVsZW1l
bnQgZG9lcyBub3QgY2hhbmdlIHdoZW4gdGhlIGl0IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiBQ
cmVzcyBnbyBmdWxsLXNjcmVlbiB0byBiZWdpbi4KK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09
ICdbb2JqZWN0IEhUTUxWaWRlb0VsZW1lbnRdJykgT0sKK0VYUEVDVEVEICh2aWRlby5vZmZzZXRM
ZWZ0ID09ICc4JykgT0sKK0VYUEVDVEVEICh2aWRlby5vZmZzZXRUb3AgPT0gJzQ4JykgT0sKK0VY
UEVDVEVEICh2aWRlby5vZmZzZXRXaWR0aCA9PSAnMzAwJykgT0sKK0VYUEVDVEVEICh2aWRlby5v
ZmZzZXRIZWlnaHQgPT0gJzE1MCcpIE9LCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC5odG1sIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi12aWRlby1vZmZzZXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMTMyN2FhOGFmNmMzMjhhNDE1N2E4NGI5ZjE0ZTYxZmJhOTM4MzNiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi12aWRlby1vZmZzZXQuaHRt
bApAQCAtMCwwICsxLDMwIEBACis8Ym9keSBvbmxvYWQ9ImluaXQoKSI+CisgICAgPGRpdj5UaGlz
IGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQgc2l6ZSBhbmQgcG9zaXRpb24gb2Yg
YSB2aWRlbyBlbGVtZW50IGRvZXMgbm90IGNoYW5nZSB3aGVuIHRoZSBpdCBlbnRlcnMgZnVsbC1z
Y3JlZW4gbW9kZS4gIFByZXNzIDxidXR0b24gb25jbGljaz0idmlkZW8ud2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW4oKSI+Z28gZnVsbC1zY3JlZW48L2E+IHRvIGJlZ2luLjwvZGl2PgorICAgIDx2aWRl
byBpZD0idmlkZW8iIGNvbnRyb2xzPjwvdmlkZW8+CisgICAgPHNjcmlwdCBzcmM9ImZ1bGwtc2Ny
ZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB2aWRlbyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aWRlbycpOworICAgICAgICBmdW5jdGlvbiBpbml0
KCkgeworCisgICAgICAgICAgICAvLyBCYWlsIG91dCBlYXJseSBpZiB0aGUgZnVsbCBzY3JlZW4g
QVBJIGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Npbmc6CisgICAgICAgICAgICBpZiAoRWxlbWVu
dC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSB7CisgICAg
ICAgICAgICAgICAgbG9nUmVzdWx0KGZhbHNlLCAiRWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkIik7CisgICAgICAgICAgICAgICAgZW5kVGVzdCgp
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgdmlkZW9TdGF0ZSA9
IHsnb2Zmc2V0TGVmdCc6IHZpZGVvLm9mZnNldExlZnQsICdvZmZzZXRUb3AnOiB2aWRlby5vZmZz
ZXRUb3AsICdvZmZzZXRXaWR0aCc6IHZpZGVvLm9mZnNldFdpZHRoLCAnb2Zmc2V0SGVpZ2h0Jzog
dmlkZW8ub2Zmc2V0SGVpZ2h0IH07CisKKyAgICAgICAgICAgICAgICB2YXIgZnVsbHNjcmVlbkNo
YW5nZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50IiwgdmlkZW8pOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm9m
ZnNldExlZnQiLCB2aWRlb1N0YXRlLm9mZnNldExlZnQpOworICAgICAgICAgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInZpZGVvLm9mZnNldFRvcCIsIHZpZGVvU3RhdGUub2Zmc2V0VG9wKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5vZmZzZXRXaWR0aCIsIHZpZGVv
U3RhdGUub2Zmc2V0V2lkdGgpOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZp
ZGVvLm9mZnNldEhlaWdodCIsIHZpZGVvU3RhdGUub2Zmc2V0SGVpZ2h0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAg
d2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3Jl
ZW5DaGFuZ2VkKTsgICAgCisgICAgICAgICAgICAgICAgcnVuV2l0aEtleURvd24oZnVuY3Rpb24o
KXt2aWRlby53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZTRhOWI5NGEyMjhm
YjY3N2Q0NDU3NjkzN2UzYjE2NmFjZjgxMzc2Li41NDFiYzI4NmZhMDE4OTY3ZTk2ZGYxZDY1Mzkx
NTg1OTFkZjAzYTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDYtMDIgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTjogUGFnZSBsYXlvdXQgbWVzc2VkIHVw
IGFmdGVyIGV4aXRpbmcgZnVsbCBzY3JlZW4gYWZ0ZXIgdmlkZW8gZW5kcyBhdCBqZXJyeXNlaW5m
ZWxkLmNvbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjE5MTEKKworICAgICAgICBUZXN0OiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNl
dC5odG1sCisKKyAgICAgICAgV2hlbiB0aGUgdmlkZW8gZWxlbWVudCBpcyB0YWtlbiBmdWxsLXNj
cmVlbiBpbiB0aGUgbmV3IGVsZW1lbnQgZnVsbC1zY3JlZW4gQVBJLCByZXR1cm4gdGhlCisgICAg
ICAgIG9mZnNldCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBwbGFjZWhvbGRlciByZW5kZXJlciB3
aGljaCBpcyBmaWxsaW5nIGluIGZvciB0aGUgZnVsbC1zY3JlZW4KKyAgICAgICAgZWxlbWVudC4g
IFRvIGRvIHNvLCBvdmVycmlkZSBvZmZzZXRXaWR0aCwgSGVpZ2h0LCBMZWZ0LCBhbmQgVG9wIGZy
b20gRWxlbWVudC4gIFRoZXNlIGFyZQorICAgICAgICBub24tdmlydHVhbCBmdW5jdGlvbnMsIHNv
IHRoZSBvdmVycmlkZW4gaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGJlIHVzZWQgaWYgY2FsbGVk
IGRpcmVjdGx5CisgICAgICAgIGZyb20gYSBIVE1MTWVkaWFFbGVtZW50LiAgVGhpcyBpcyBmaW5l
LCBhbmQgaW50ZW50aW9uYWwsIGFzIHRoZSBIVE1MTWVkaWFFbGVtZW50LmlkbCBmaWxlIHdpbGwK
KyAgICAgICAgZ2VuZXJhdGUgYmluZGluZ3Mgd2hpY2ggd2lsbCBjYWxsIHRoZXNlIGZ1bmN0aW9u
cyBpbiB0aGF0IGRpcmVjdCB3YXkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGp1c3RGb3JMb2NhbFpvb20pOiBNYWRlIGludG8gYSBj
bGFzcy1zdGF0aWMgZnVuY3Rpb24uCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudFBs
YWNlaG9sZGVyKTogQWRkZWQ7IHV0aWxpdHkgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpvZmZzZXRMZWZ0KTogQWRkZWQ7IG5vbi12aXJ0dWFsIG92ZXJyaWRl
IG9mIHRoZSAKKyAgICAgICAgICAgIEVsZW1lbnQgZnVuY3Rpb24uIFdpbGwgYmUgY2FsbGVkIGRp
cmVjdGx5IHZpYSBqYXZhc2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6b2Zmc2V0VG9wKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpvZmZzZXRXaWR0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6b2Zmc2V0SGVpZ2h0KTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50
Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkZWQgZW50cmllcyBm
b3Igb2Zmc2V0IHdpZHRoLCBoZWlnaHQsIGxlZnQsIGFuZCB0b3AuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorICAgICAgICAoUmVuZGVyRnVsbFNjcmVlbjo6Y3Jl
YXRlUGxhY2Vob2xkZXIpOiBBZGRlZDsgY3JlYXRlcyBhIFJlbmRlckJsb2NrIHdoaWNoIGhvbGRz
IHRoZSAKKyAgICAgICAgICAgIHBsYWNlIG9mIGFueSBmdWxsLXNjcmVlbiBlbGVtZW50cy4KKwog
MjAxMS0wNi0wMSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3N2Mz
N2YxNzU3NmI4NTAxMDIxYzQ5YzEzMGM3YThmYjU0YzM2NTYyLi44NTM2MDA0YWQzMGRmZTA3YmVl
Y2Y3OThjYzJjNWMwODIyOGY4YjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNTgsNyAr
MzU4LDcgQEAgc3RhdGljIGZsb2F0IGxvY2FsWm9vbUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgcmV0dXJuIHpvb21GYWN0b3I7CiB9CiAKLXN0YXRpYyBpbnQgYWRqdXN0
Rm9yTG9jYWxab29tKGludCB2YWx1ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2ludCBFbGVt
ZW50OjphZGp1c3RGb3JMb2NhbFpvb20oaW50IHZhbHVlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KQogewogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBsb2NhbFpvb21Gb3JSZW5kZXJlcihyZW5kZXJl
cik7CiAgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGUxNGU0
OGI4ZTIzNDI0YmQ0ZjA2NTY5NzI0MDRhZTRmMjkzYjA4ZGQuLjhlYmYwNjk5YTRlOTc0Y2M2MGFk
MDk1NGUzM2JhYWE5MTVlNTVjMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzg0LDYgKzM4NCw3
IEBAIHByb3RlY3RlZDoKICAgICAKICAgICB2b2lkIGlkQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1
dGUqKTsKIAorICAgIHN0YXRpYyBpbnQgYWRqdXN0Rm9yTG9jYWxab29tKGludCB2YWx1ZSwgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcik7CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsQnlVbml0cyhp
bnQgdW5pdHMsIFNjcm9sbEdyYW51bGFyaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKaW5kZXggYjFlZGZkNjdiZWM2MDFhODc3OGI5ZDhlODAwYjY5N2Y0ZTQy
ODU0Zi4uMjdjNzg5YmNlNjY4OGM0ODgzNzBlMTA0ZjM1ZjNmY2Q3ZTUzNjQ3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5j
bHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZGVvLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdEV2
ZW50TGlzdGVuZXIuaCIKQEAgLTI3MTYsNiArMjcxNyw0NiBAQCB2b2lkKiBIVE1MTWVkaWFFbGVt
ZW50OjpwcmVEaXNwYXRjaEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIDA7
CiB9CiAKK3N0YXRpYyBSZW5kZXJCbG9jayogZWxlbWVudFBsYWNlaG9sZGVyKEVsZW1lbnQqIGVs
ZW1lbnQpCit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVy
KCk7CisgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5wYXJl
bnQoKSA6IDA7CisgICAgUmVuZGVyRnVsbFNjcmVlbiogZnVsbFNjcmVlbiA9IHBhcmVudCAmJiBw
YXJlbnQtPmlzUmVuZGVyRnVsbFNjcmVlbigpID8gdG9SZW5kZXJGdWxsU2NyZWVuKHBhcmVudCkg
OiAwOworCisgICAgcmV0dXJuIGZ1bGxTY3JlZW4gPyBmdWxsU2NyZWVuLT5wbGFjZWhvbGRlcigp
IDogMDsKK30KKworaW50IEhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldExlZnQoKQoreworICAgIGlu
dCBsZWZ0ID0gRWxlbWVudDo6b2Zmc2V0TGVmdCgpOworICAgIGlmIChSZW5kZXJCbG9jayogYmxv
Y2sgPSBlbGVtZW50UGxhY2Vob2xkZXIodGhpcykpCisgICAgICAgIGxlZnQgPSBFbGVtZW50Ojph
ZGp1c3RGb3JMb2NhbFpvb20oYmxvY2stPm9mZnNldExlZnQoKSwgYmxvY2spOworICAgIHJldHVy
biBsZWZ0OworfQorCitpbnQgSFRNTE1lZGlhRWxlbWVudDo6b2Zmc2V0VG9wKCkKK3sKKyAgICBp
bnQgdG9wID0gRWxlbWVudDo6b2Zmc2V0VG9wKCk7CisgICAgaWYgKFJlbmRlckJsb2NrKiBibG9j
ayA9IGVsZW1lbnRQbGFjZWhvbGRlcih0aGlzKSkKKyAgICAgICAgdG9wID0gRWxlbWVudDo6YWRq
dXN0Rm9yTG9jYWxab29tKGJsb2NrLT5vZmZzZXRUb3AoKSwgYmxvY2spOworICAgIHJldHVybiB0
b3A7Cit9CisKK2ludCBIVE1MTWVkaWFFbGVtZW50OjpvZmZzZXRXaWR0aCgpCit7CisgICAgaW50
IHdpZHRoID0gRWxlbWVudDo6b2Zmc2V0V2lkdGgoKTsKKyAgICBpZiAoUmVuZGVyQmxvY2sqIGJs
b2NrID0gZWxlbWVudFBsYWNlaG9sZGVyKHRoaXMpKQorICAgICAgICB3aWR0aCA9IEVsZW1lbnQ6
OmFkanVzdEZvckxvY2FsWm9vbShibG9jay0+b2Zmc2V0V2lkdGgoKSwgYmxvY2spOworICAgIHJl
dHVybiB3aWR0aDsKK30KKworaW50IEhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldEhlaWdodCgpCit7
CisgICAgaW50IGhlaWdodCA9IEVsZW1lbnQ6Om9mZnNldEhlaWdodCgpOworICAgIGlmIChSZW5k
ZXJCbG9jayogYmxvY2sgPSBlbGVtZW50UGxhY2Vob2xkZXIodGhpcykpCisgICAgICAgIGhlaWdo
dCA9IEVsZW1lbnQ6OmFkanVzdEZvckxvY2FsWm9vbShibG9jay0+b2Zmc2V0SGVpZ2h0KCksIGJs
b2NrKTsKKyAgICByZXR1cm4gaGVpZ2h0OworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmgKaW5kZXggMjcxNjM5ZWNmZmU1Yjk4NDU5OTZmMjc0N2RmMGI1MzBhYTBh
OTZhNS4uZTI5MThmNjM0NWU3N2Y0NmJjY2MyYWQ4N2ZmN2VhODMxYmI4MGY4NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgSFRN
TFNvdXJjZUVsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xzOwogY2xhc3MgTWVkaWFFcnJvcjsK
IGNsYXNzIEtVUkw7CitjbGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFRpbWVSYW5nZXM7CiAjaWYg
RU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiBjbGFzcyBXaWRnZXQ7CkBAIC0yMDMsNiAr
MjA0LDEyIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNQbGF5aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF5aW5nOyB9CiAKKyAgICAvLyBPdmVycmlkZSBFbGVtZW50IGltcGxlbWVudGF0aW9ucwor
ICAgIGludCBvZmZzZXRMZWZ0KCk7CisgICAgaW50IG9mZnNldFRvcCgpOworICAgIGludCBvZmZz
ZXRXaWR0aCgpOworICAgIGludCBvZmZzZXRIZWlnaHQoKTsKKwogcHJvdGVjdGVkOgogICAgIEhU
TUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmly
dHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5pZGwKaW5kZXggMGJjYTU2OWU2ODE3NTllODQ4MTgyYzQyYzNjMGY4OTFhMmU0Y2I2MS4u
ZDhjNzkxNjY4NzNiZmRiOGI3OTJjMjZhZGE1YjdmNjQ5ZjIxODRlMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCkBAIC04Miw2ICs4MiwxMiBAQCBpbnRlcmZhY2Ug
W0NvbmRpdGlvbmFsPVZJREVPXSBIVE1MTWVkaWFFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdEhhc0Nsb3NlZENhcHRpb25zOwogICAg
IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdENsb3NlZENhcHRpb25zVmlzaWJsZTsKIAorICAgIC8v
IE92ZXJyaWRlIEVsZW1lbnQgZnVuY3Rpb25zCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
b2Zmc2V0TGVmdDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRUb3A7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0V2lkdGg7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGxvbmcgb2Zmc2V0SGVpZ2h0OworCiAjaWYgZGVmaW5lZChFTkFCTEVfTUVESUFfU1RBVElT
VElDUykgJiYgRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MKICAgICAvLyBUaGUgbnVtYmVyIG9mIGJ5
dGVzIGNvbnN1bWVkIGJ5IHRoZSBtZWRpYSBkZWNvZGVyLgogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIHdlYmtpdEF1ZGlvRGVjb2RlZEJ5dGVDb3VudDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGdWxsU2NyZWVuLmNwcAppbmRleCBmYTY2Yzg5NDY4Mzdk
MDgzNjNhZTQ5Nzg0NzIyYTU4Njc4YjRkMzZjLi40NjE1MTAyYjUwZmI1MzgyYWRhOTAyMWU4OGZm
ODYzMTI1NGI2ZDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnVsbFNjcmVlbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZ1bGxT
Y3JlZW4uY3BwCkBAIC04OCw2ICs4OCwxMSBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBSZW5k
ZXJGdWxsU2NyZWVuOjpjcmVhdGVGdWxsU2NyZWVuU3R5bGUoKQogCiB2b2lkIFJlbmRlckZ1bGxT
Y3JlZW46OmNyZWF0ZVBsYWNlaG9sZGVyKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlLCBj
b25zdCBJbnRSZWN0JiBmcmFtZVJlY3QpCiB7CisgICAgaWYgKHN0eWxlLT53aWR0aCgpLmlzQXV0
bygpKQorICAgICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKGZyYW1lUmVjdC53aWR0aCgpLCBG
aXhlZCkpOworICAgIGlmIChzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHN0eWxl
LT5zZXRIZWlnaHQoTGVuZ3RoKGZyYW1lUmVjdC5oZWlnaHQoKSwgRml4ZWQpKTsKKwogICAgIGlm
ICghbV9wbGFjZWhvbGRlcikgewogICAgICAgICBtX3BsYWNlaG9sZGVyID0gbmV3IChkb2N1bWVu
dCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJCbG9jayhkb2N1bWVudCgpKTsKICAgICAgICAgbV9w
bGFjZWhvbGRlci0+c2V0U3R5bGUoc3R5bGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95733</attachid>
            <date>2011-06-02 00:47:04 -0700</date>
            <delta_ts>2011-06-03 11:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61911-20110602004703.patch</filename>
            <type>text/plain</type>
            <size>10117</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODc4ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5ZDMxMjE5ZDE4YTE4MWMwOTU3NTg4
ZmFiOWFjNGJkZjQzOTU0MTYyLi44NmQwMjlhMDJjZDY0ODY3ZDQwZjIwMGQ1OGQyNjU0MjA5ZDlj
NmVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUkVHUkVTU0lPTjogUGFnZSBsYXlvdXQgbWVzc2VkIHVwIGFmdGVyIGV4aXRpbmcg
ZnVsbCBzY3JlZW4gYWZ0ZXIgdmlkZW8gZW5kcyBhdCBqZXJyeXNlaW5mZWxkLmNvbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk1MjMwMTc+CisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTAxICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi12aWRlby1vZmZzZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi12aWRlby1vZmZzZXQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5YjZmMDBi
NWJhY2M1Mjk1ZWRiZDk2OTA3MmI3NmFkOTZlMjg4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw5IEBACitUaGlzIGxheW91dCB0ZXN0IGNoZWNrcyB0aGF0IHRoZSBvZmZzZXQg
c2l6ZSBhbmQgcG9zaXRpb24gb2YgYSB2aWRlbyBlbGVtZW50IGRvZXMgbm90IGNoYW5nZSB3aGVu
IHRoZSBpdCBlbnRlcnMgZnVsbC1zY3JlZW4gbW9kZS4gUHJlc3MgZ28gZnVsbC1zY3JlZW4gdG8g
YmVnaW4uCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50
LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MVmlkZW9FbGVt
ZW50XScpIE9LCitFWFBFQ1RFRCAodmlkZW8ub2Zmc2V0TGVmdCA9PSAnOCcpIE9LCitFWFBFQ1RF
RCAodmlkZW8ub2Zmc2V0VG9wID09ICc0OCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ub2Zmc2V0V2lk
dGggPT0gJzMwMCcpIE9LCitFWFBFQ1RFRCAodmlkZW8ub2Zmc2V0SGVpZ2h0ID09ICcxNTAnKSBP
SworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi12aWRlby1vZmZzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjEzMjdhYThhZjZjMzI4YTQxNTdh
ODRiOWYxNGU2MWZiYTkzODMzYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPGJv
ZHkgb25sb2FkPSJpbml0KCkiPgorICAgIDxkaXY+VGhpcyBsYXlvdXQgdGVzdCBjaGVja3MgdGhh
dCB0aGUgb2Zmc2V0IHNpemUgYW5kIHBvc2l0aW9uIG9mIGEgdmlkZW8gZWxlbWVudCBkb2VzIG5v
dCBjaGFuZ2Ugd2hlbiB0aGUgaXQgZW50ZXJzIGZ1bGwtc2NyZWVuIG1vZGUuICBQcmVzcyA8YnV0
dG9uIG9uY2xpY2s9InZpZGVvLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkiPmdvIGZ1bGwtc2Ny
ZWVuPC9hPiB0byBiZWdpbi48L2Rpdj4KKyAgICA8dmlkZW8gaWQ9InZpZGVvIiBjb250cm9scz48
L3ZpZGVvPgorICAgIDxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndmlkZW8nKTsKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKworICAgICAgICAgICAgLy8g
QmFpbCBvdXQgZWFybHkgaWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBub3QgZW5hYmxlZCBvciBp
cyBtaXNzaW5nOgorICAgICAgICAgICAgaWYgKEVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIGxvZ1Jlc3VsdChm
YWxzZSwgIkVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVm
aW5lZCIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgdmFyIHZpZGVvU3RhdGUgPSB7J29mZnNldExlZnQnOiB2aWRlby5v
ZmZzZXRMZWZ0LCAnb2Zmc2V0VG9wJzogdmlkZW8ub2Zmc2V0VG9wLCAnb2Zmc2V0V2lkdGgnOiB2
aWRlby5vZmZzZXRXaWR0aCwgJ29mZnNldEhlaWdodCc6IHZpZGVvLm9mZnNldEhlaWdodCB9Owor
CisgICAgICAgICAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQp
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRv
Y3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIHZpZGVvKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5vZmZzZXRMZWZ0IiwgdmlkZW9TdGF0ZS5v
ZmZzZXRMZWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5vZmZz
ZXRUb3AiLCB2aWRlb1N0YXRlLm9mZnNldFRvcCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidmlkZW8ub2Zmc2V0V2lkdGgiLCB2aWRlb1N0YXRlLm9mZnNldFdpZHRoKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ2aWRlby5vZmZzZXRIZWlnaHQiLCB2aWRl
b1N0YXRlLm9mZnNldEhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwg
J3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7ICAgIAorICAgICAg
ICAgICAgICAgIHJ1bldpdGhLZXlEb3duKGZ1bmN0aW9uKCl7dmlkZW8ud2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW4oKX0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8
L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2E3OTZjZDllOWIxNGNhY2I2NmRhNzVhYTZkNTU0ZThkZTJi
NmIyYy4uMGIyNjJkNWI2ZGFmY2RmZWFjOTJjYzY4ZGY3ZDkxZWM0YWNmYmVhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTA2LTAyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJFR1JFU1NJT046IFBhZ2UgbGF5b3V0IG1lc3NlZCB1cCBhZnRlciBleGl0aW5nIGZ1bGwgc2Ny
ZWVuIGFmdGVyIHZpZGVvIGVuZHMgYXQgamVycnlzZWluZmVsZC5jb20KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxOTExCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS85NTIzMDE3PgorCisgICAgICAgIFRlc3Q6IGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dmlkZW8tb2Zmc2V0Lmh0bWwKKworICAgICAgICBXaGVuIHRoZSB2aWRlbyBlbGVtZW50IGlzIHRh
a2VuIGZ1bGwtc2NyZWVuIGluIHRoZSBuZXcgZWxlbWVudCBmdWxsLXNjcmVlbiBBUEksIHJldHVy
biB0aGUKKyAgICAgICAgb2Zmc2V0IHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHBsYWNlaG9sZGVy
IHJlbmRlcmVyIHdoaWNoIGlzIGZpbGxpbmcgaW4gZm9yIHRoZSBmdWxsLXNjcmVlbgorICAgICAg
ICBlbGVtZW50LiAgVG8gZG8gc28sIG92ZXJyaWRlIG9mZnNldFdpZHRoLCBIZWlnaHQsIExlZnQs
IGFuZCBUb3AgZnJvbSBFbGVtZW50LiAgVGhlc2UgYXJlCisgICAgICAgIG5vbi12aXJ0dWFsIGZ1
bmN0aW9ucywgc28gdGhlIG92ZXJyaWRlbiBpbXBsZW1lbnRhdGlvbiB3aWxsIG9ubHkgYmUgdXNl
ZCBpZiBjYWxsZWQgZGlyZWN0bHkKKyAgICAgICAgZnJvbSBhIEhUTUxNZWRpYUVsZW1lbnQuICBU
aGlzIGlzIGZpbmUsIGFuZCBpbnRlbnRpb25hbCwgYXMgdGhlIEhUTUxNZWRpYUVsZW1lbnQuaWRs
IGZpbGUgd2lsbAorICAgICAgICBnZW5lcmF0ZSBiaW5kaW5ncyB3aGljaCB3aWxsIGNhbGwgdGhl
c2UgZnVuY3Rpb25zIGluIHRoYXQgZGlyZWN0IHdheS4KKworICAgICAgICAqIGRvbS9FbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkanVzdEZvckxvY2FsWm9vbSk6IE1h
ZGUgaW50byBhIGNsYXNzLXN0YXRpYyBmdW5jdGlvbi4KKyAgICAgICAgKiBkb20vRWxlbWVudC5o
OgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjplbGVtZW50UGxhY2Vob2xkZXIpOiBBZGRlZDsgdXRpbGl0eSBmdW5jdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldExlZnQpOiBBZGRlZDsgbm9uLXZpcnR1
YWwgb3ZlcnJpZGUgb2YgdGhlIAorICAgICAgICAgICAgRWxlbWVudCBmdW5jdGlvbi4gV2lsbCBi
ZSBjYWxsZWQgZGlyZWN0bHkgdmlhIGphdmFzY3JpcHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpvZmZzZXRUb3ApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om9mZnNldFdpZHRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpvZmZzZXRIZWlnaHQpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsOiBBZGRl
ZCBlbnRyaWVzIGZvciBvZmZzZXQgd2lkdGgsIGhlaWdodCwgbGVmdCwgYW5kIHRvcC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRnVsbFNjcmVlbi5jcHA6CisKIDIwMTEtMDYtMDEgIEplciBO
b2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzdjMzdmMTc1NzZiODUwMTAyMWM0
OWMxMzBjN2E4ZmI1NGMzNjU2Mi4uODUzNjAwNGFkMzBkZmUwN2JlZWNmNzk4Y2MyYzVjMDgyMjhm
OGI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyBm
bG9hdCBsb2NhbFpvb21Gb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJl
dHVybiB6b29tRmFjdG9yOwogfQogCi1zdGF0aWMgaW50IGFkanVzdEZvckxvY2FsWm9vbShpbnQg
dmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitpbnQgRWxlbWVudDo6YWRqdXN0Rm9yTG9j
YWxab29tKGludCB2YWx1ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICBmbG9hdCB6
b29tRmFjdG9yID0gbG9jYWxab29tRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAgIGlmICh6b29t
RmFjdG9yID09IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBlMTRlNDhiOGUyMzQyNGJkNGYwNjU2
OTcyNDA0YWU0ZjI5M2IwOGRkLi44ZWJmMDY5OWE0ZTk3NGNjNjBhZDA5NTRlMzNiYWFhOTE1ZTU1
YzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTM4NCw2ICszODQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgCiAgICAgdm9pZCBpZEF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKik7CiAKKyAgICBzdGF0
aWMgaW50IGFkanVzdEZvckxvY2FsWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpOwogcHJpdmF0ZToKICAgICB2b2lkIHNjcm9sbEJ5VW5pdHMoaW50IHVuaXRzLCBTY3JvbGxH
cmFudWxhcml0eSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IGIxZWRmZDY3YmVjNjAxYTg3NzhiOWQ4ZTgwMGI2OTdmNGU0Mjg1NGYuLjI3Yzc4OWJjZTY2
ODhjNDg4MzcwZTEwNGYzNWYzZmNkN2U1MzY0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgogI2lu
Y2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCkBA
IC0yNzE2LDYgKzI3MTcsNDYgQEAgdm9pZCogSFRNTE1lZGlhRWxlbWVudDo6cHJlRGlzcGF0Y2hF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUmVu
ZGVyQmxvY2sqIGVsZW1lbnRQbGFjZWhvbGRlcihFbGVtZW50KiBlbGVtZW50KQoreworICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIFJlbmRlck9i
amVjdCogcGFyZW50ID0gcmVuZGVyZXIgPyByZW5kZXJlci0+cGFyZW50KCkgOiAwOworICAgIFJl
bmRlckZ1bGxTY3JlZW4qIGZ1bGxTY3JlZW4gPSBwYXJlbnQgJiYgcGFyZW50LT5pc1JlbmRlckZ1
bGxTY3JlZW4oKSA/IHRvUmVuZGVyRnVsbFNjcmVlbihwYXJlbnQpIDogMDsKKworICAgIHJldHVy
biBmdWxsU2NyZWVuID8gZnVsbFNjcmVlbi0+cGxhY2Vob2xkZXIoKSA6IDA7Cit9CisKK2ludCBI
VE1MTWVkaWFFbGVtZW50OjpvZmZzZXRMZWZ0KCkKK3sKKyAgICBpbnQgbGVmdCA9IEVsZW1lbnQ6
Om9mZnNldExlZnQoKTsKKyAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrID0gZWxlbWVudFBsYWNl
aG9sZGVyKHRoaXMpKQorICAgICAgICBsZWZ0ID0gRWxlbWVudDo6YWRqdXN0Rm9yTG9jYWxab29t
KGJsb2NrLT5vZmZzZXRMZWZ0KCksIGJsb2NrKTsKKyAgICByZXR1cm4gbGVmdDsKK30KKworaW50
IEhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldFRvcCgpCit7CisgICAgaW50IHRvcCA9IEVsZW1lbnQ6
Om9mZnNldFRvcCgpOworICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSBlbGVtZW50UGxhY2Vo
b2xkZXIodGhpcykpCisgICAgICAgIHRvcCA9IEVsZW1lbnQ6OmFkanVzdEZvckxvY2FsWm9vbShi
bG9jay0+b2Zmc2V0VG9wKCksIGJsb2NrKTsKKyAgICByZXR1cm4gdG9wOworfQorCitpbnQgSFRN
TE1lZGlhRWxlbWVudDo6b2Zmc2V0V2lkdGgoKQoreworICAgIGludCB3aWR0aCA9IEVsZW1lbnQ6
Om9mZnNldFdpZHRoKCk7CisgICAgaWYgKFJlbmRlckJsb2NrKiBibG9jayA9IGVsZW1lbnRQbGFj
ZWhvbGRlcih0aGlzKSkKKyAgICAgICAgd2lkdGggPSBFbGVtZW50OjphZGp1c3RGb3JMb2NhbFpv
b20oYmxvY2stPm9mZnNldFdpZHRoKCksIGJsb2NrKTsKKyAgICByZXR1cm4gd2lkdGg7Cit9CisK
K2ludCBIVE1MTWVkaWFFbGVtZW50OjpvZmZzZXRIZWlnaHQoKQoreworICAgIGludCBoZWlnaHQg
PSBFbGVtZW50OjpvZmZzZXRIZWlnaHQoKTsKKyAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrID0g
ZWxlbWVudFBsYWNlaG9sZGVyKHRoaXMpKQorICAgICAgICBoZWlnaHQgPSBFbGVtZW50OjphZGp1
c3RGb3JMb2NhbFpvb20oYmxvY2stPm9mZnNldEhlaWdodCgpLCBibG9jayk7CisgICAgcmV0dXJu
IGhlaWdodDsKK30KIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmlu
ZGV4IDI3MTYzOWVjZmZlNWI5ODQ1OTk2ZjI3NDdkZjBiNTMwYWEwYTk2YTUuLmUyOTE4ZjYzNDVl
NzdmNDZiY2NjMmFkODdmZjdlYTgzMWJiODBmODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIEhUTUxTb3VyY2VFbGVtZW50Owog
Y2xhc3MgTWVkaWFDb250cm9sczsKIGNsYXNzIE1lZGlhRXJyb3I7CiBjbGFzcyBLVVJMOworY2xh
c3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQogY2xhc3MgV2lkZ2V0OwpAQCAtMjAzLDYgKzIwNCwxMiBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsgfQogCisg
ICAgLy8gT3ZlcnJpZGUgRWxlbWVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICBpbnQgb2Zmc2V0TGVm
dCgpOworICAgIGludCBvZmZzZXRUb3AoKTsKKyAgICBpbnQgb2Zmc2V0V2lkdGgoKTsKKyAgICBp
bnQgb2Zmc2V0SGVpZ2h0KCk7CisKIHByb3RlY3RlZDoKICAgICBIVE1MTWVkaWFFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgfkhUTUxNZWRpYUVs
ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IDBi
Y2E1NjllNjgxNzU5ZTg0ODE4MmM0MmMzYzBmODkxYTJlNGNiNjEuLmQ4Yzc5MTY2ODczYmZkYjhi
NzkyYzI2YWRhNWI3ZjY0OWYyMTg0ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmlkbApAQCAtODIsNiArODIsMTIgQEAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1WSURF
T10gSFRNTE1lZGlhRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiB3ZWJraXRIYXNDbG9zZWRDYXB0aW9uczsKICAgICBhdHRyaWJ1dGUgYm9vbGVh
biB3ZWJraXRDbG9zZWRDYXB0aW9uc1Zpc2libGU7CiAKKyAgICAvLyBPdmVycmlkZSBFbGVtZW50
IGZ1bmN0aW9ucworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldExlZnQ7CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgb2Zmc2V0VG9wOworICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBsb25nIG9mZnNldFdpZHRoOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIG9mZnNldEhl
aWdodDsKKwogI2lmIGRlZmluZWQoRU5BQkxFX01FRElBX1NUQVRJU1RJQ1MpICYmIEVOQUJMRV9N
RURJQV9TVEFUSVNUSUNTCiAgICAgLy8gVGhlIG51bWJlciBvZiBieXRlcyBjb25zdW1lZCBieSB0
aGUgbWVkaWEgZGVjb2Rlci4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3
ZWJraXRBdWRpb0RlY29kZWRCeXRlQ291bnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95941</attachid>
            <date>2011-06-03 11:54:39 -0700</date>
            <delta_ts>2011-06-08 12:12:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61911-20110603115438.patch</filename>
            <type>text/plain</type>
            <size>9926</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgwMzQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Y2VkZjlkZTZhMmVhMzc2ZjBiZmJi
MTZhOTY2NmI0OTE3NDQ2NWIyLi4xM2I5NTkwOWI2ZTQyNDQ3MTQzYzAyYmJhN2Y4NGI0NWJjZmE5
ODI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUkVHUkVTU0lPTjogUGFnZSBsYXlvdXQgbWVzc2VkIHVwIGFmdGVyIGV4aXRpbmcg
ZnVsbCBzY3JlZW4gYWZ0ZXIgdmlkZW8gZW5kcyBhdCBqZXJyeXNlaW5mZWxkLmNvbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk1MjMwMTc+CisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTAxICBK
ZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tdmlkZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tdmlkZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OWI2ZjAwYjVi
YWNjNTI5NWVkYmQ5NjkwNzJiNzZhZDk2ZTI4OGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi12aWRlby1vZmZzZXQtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsOSBAQAorVGhpcyBsYXlvdXQgdGVzdCBjaGVja3MgdGhhdCB0aGUgb2Zmc2V0IHNp
emUgYW5kIHBvc2l0aW9uIG9mIGEgdmlkZW8gZWxlbWVudCBkb2VzIG5vdCBjaGFuZ2Ugd2hlbiB0
aGUgaXQgZW50ZXJzIGZ1bGwtc2NyZWVuIG1vZGUuIFByZXNzIGdvIGZ1bGwtc2NyZWVuIHRvIGJl
Z2luLgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTFZpZGVvRWxlbWVu
dF0nKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldExlZnQgPT0gJzgnKSBPSworRVhQRUNURUQg
KHZpZGVvLm9mZnNldFRvcCA9PSAnNDgnKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldFdpZHRo
ID09ICczMDAnKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldEhlaWdodCA9PSAnMTUwJykgT0sK
K0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXZpZGVvLW9mZnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxMzI3YWE4YWY2YzMyOGE0MTU3YTg0
YjlmMTRlNjFmYmE5MzgzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5
IG9ubG9hZD0iaW5pdCgpIj4KKyAgICA8ZGl2PlRoaXMgbGF5b3V0IHRlc3QgY2hlY2tzIHRoYXQg
dGhlIG9mZnNldCBzaXplIGFuZCBwb3NpdGlvbiBvZiBhIHZpZGVvIGVsZW1lbnQgZG9lcyBub3Qg
Y2hhbmdlIHdoZW4gdGhlIGl0IGVudGVycyBmdWxsLXNjcmVlbiBtb2RlLiAgUHJlc3MgPGJ1dHRv
biBvbmNsaWNrPSJ2aWRlby53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpIj5nbyBmdWxsLXNjcmVl
bjwvYT4gdG8gYmVnaW4uPC9kaXY+CisgICAgPHZpZGVvIGlkPSJ2aWRlbyIgY29udHJvbHM+PC92
aWRlbz4KKyAgICA8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ZpZGVvJyk7CisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisKKyAgICAgICAgICAgIC8vIEJh
aWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMg
bWlzc2luZzoKKyAgICAgICAgICAgIGlmIChFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBsb2dSZXN1bHQoZmFs
c2UsICJFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmlu
ZWQiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHZhciB2aWRlb1N0YXRlID0geydvZmZzZXRMZWZ0JzogdmlkZW8ub2Zm
c2V0TGVmdCwgJ29mZnNldFRvcCc6IHZpZGVvLm9mZnNldFRvcCwgJ29mZnNldFdpZHRoJzogdmlk
ZW8ub2Zmc2V0V2lkdGgsICdvZmZzZXRIZWlnaHQnOiB2aWRlby5vZmZzZXRIZWlnaHQgfTsKKwor
ICAgICAgICAgICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1
bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCB2aWRlbyk7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ub2Zmc2V0TGVmdCIsIHZpZGVvU3RhdGUub2Zm
c2V0TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ub2Zmc2V0
VG9wIiwgdmlkZW9TdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInZpZGVvLm9mZnNldFdpZHRoIiwgdmlkZW9TdGF0ZS5vZmZzZXRXaWR0aCk7CisgICAg
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ub2Zmc2V0SGVpZ2h0IiwgdmlkZW9T
dGF0ZS5vZmZzZXRIZWlnaHQpOworICAgICAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3
ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOyAgICAKKyAgICAgICAg
ICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe3ZpZGVvLndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDgzOWI3YmE2MDNiMWMwOGU3Nzk2YmE1Mjk0OTliZGU5ODIzNWYz
MWUuLmVkNWI4OWI1ODY2ZjkyM2NkYTQ5OGIwMDlmMDg5YTZjMzhlMmVlYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzNCBAQAorMjAxMS0wNi0wMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
RUdSRVNTSU9OOiBQYWdlIGxheW91dCBtZXNzZWQgdXAgYWZ0ZXIgZXhpdGluZyBmdWxsIHNjcmVl
biBhZnRlciB2aWRlbyBlbmRzIGF0IGplcnJ5c2VpbmZlbGQuY29tCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkxMQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vOTUyMzAxNz4KKworICAgICAgICBUZXN0OiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZp
ZGVvLW9mZnNldC5odG1sCisKKyAgICAgICAgV2hlbiB0aGUgdmlkZW8gZWxlbWVudCBpcyB0YWtl
biBmdWxsLXNjcmVlbiBpbiB0aGUgbmV3IGVsZW1lbnQgZnVsbC1zY3JlZW4gQVBJLCByZXR1cm4g
dGhlCisgICAgICAgIG9mZnNldCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBwbGFjZWhvbGRlciBy
ZW5kZXJlciB3aGljaCBpcyBmaWxsaW5nIGluIGZvciB0aGUgZnVsbC1zY3JlZW4KKyAgICAgICAg
ZWxlbWVudC4gIFRvIGRvIHNvLCBvdmVycmlkZSBvZmZzZXRXaWR0aCwgSGVpZ2h0LCBMZWZ0LCBh
bmQgVG9wIGZyb20gRWxlbWVudC4gIFRoZXNlIGFyZQorICAgICAgICBub24tdmlydHVhbCBmdW5j
dGlvbnMsIHNvIHRoZSBvdmVycmlkZW4gaW1wbGVtZW50YXRpb24gd2lsbCBvbmx5IGJlIHVzZWQg
aWYgY2FsbGVkIGRpcmVjdGx5CisgICAgICAgIGZyb20gYSBIVE1MTWVkaWFFbGVtZW50LiAgVGhp
cyBpcyBmaW5lLCBhbmQgaW50ZW50aW9uYWwsIGFzIHRoZSBIVE1MTWVkaWFFbGVtZW50LmlkbCBm
aWxlIHdpbGwKKyAgICAgICAgZ2VuZXJhdGUgYmluZGluZ3Mgd2hpY2ggd2lsbCBjYWxsIHRoZXNl
IGZ1bmN0aW9ucyBpbiB0aGF0IGRpcmVjdCB3YXkuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphZGp1c3RGb3JMb2NhbFpvb20pOiBNYWRl
IGludG8gYSBjbGFzcy1zdGF0aWMgZnVuY3Rpb24uCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZWxlbWVudFBsYWNlaG9sZGVyKTogQWRkZWQ7IHV0aWxpdHkgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpvZmZzZXRMZWZ0KTogQWRkZWQ7IG5vbi12aXJ0dWFs
IG92ZXJyaWRlIG9mIHRoZSAKKyAgICAgICAgICAgIEVsZW1lbnQgZnVuY3Rpb24uIFdpbGwgYmUg
Y2FsbGVkIGRpcmVjdGx5IHZpYSBqYXZhc2NyaXB0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6b2Zmc2V0VG9wKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpvZmZzZXRXaWR0aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6b2Zmc2V0SGVpZ2h0KTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDogQWRkZWQg
ZW50cmllcyBmb3Igb2Zmc2V0IHdpZHRoLCBoZWlnaHQsIGxlZnQsIGFuZCB0b3AuCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckZ1bGxTY3JlZW4uY3BwOgorCiAyMDExLTA2LTAxICBKZXIgTm9i
bGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3N2MzN2YxNzU3NmI4NTAxMDIxYzQ5YzEz
MGM3YThmYjU0YzM2NTYyLi44NTM2MDA0YWQzMGRmZTA3YmVlY2Y3OThjYzJjNWMwODIyOGY4YjQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgc3RhdGljIGZsb2F0
IGxvY2FsWm9vbUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJu
IHpvb21GYWN0b3I7CiB9CiAKLXN0YXRpYyBpbnQgYWRqdXN0Rm9yTG9jYWxab29tKGludCB2YWx1
ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2ludCBFbGVtZW50OjphZGp1c3RGb3JMb2NhbFpv
b20oaW50IHZhbHVlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGZsb2F0IHpvb21G
YWN0b3IgPSBsb2NhbFpvb21Gb3JSZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKHpvb21GYWN0
b3IgPT0gMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGUxNGU0OGI4ZTIzNDI0YmQ0ZjA2NTY5NzI0
MDRhZTRmMjkzYjA4ZGQuLjhlYmYwNjk5YTRlOTc0Y2M2MGFkMDk1NGUzM2JhYWE5MTVlNTVjMWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzg0LDYgKzM4NCw3IEBAIHByb3RlY3RlZDoKICAgICAK
ICAgICB2b2lkIGlkQXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqKTsKIAorICAgIHN0YXRpYyBp
bnQgYWRqdXN0Rm9yTG9jYWxab29tKGludCB2YWx1ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcik7
CiBwcml2YXRlOgogICAgIHZvaWQgc2Nyb2xsQnlVbml0cyhpbnQgdW5pdHMsIFNjcm9sbEdyYW51
bGFyaXR5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
YjFlZGZkNjdiZWM2MDFhODc3OGI5ZDhlODAwYjY5N2Y0ZTQyODU0Zi4uMjdjNzg5YmNlNjY4OGM0
ODgzNzBlMTA0ZjM1ZjNmY2Q3ZTUzNjQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgog
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUmVuZGVyRnVsbFNjcmVlbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZGVvLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKQEAgLTI3
MTYsNiArMjcxNyw0NiBAQCB2b2lkKiBIVE1MTWVkaWFFbGVtZW50OjpwcmVEaXNwYXRjaEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBSZW5kZXJC
bG9jayogZWxlbWVudFBsYWNlaG9sZGVyKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyT2JqZWN0
KiBwYXJlbnQgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5wYXJlbnQoKSA6IDA7CisgICAgUmVuZGVy
RnVsbFNjcmVlbiogZnVsbFNjcmVlbiA9IHBhcmVudCAmJiBwYXJlbnQtPmlzUmVuZGVyRnVsbFNj
cmVlbigpID8gdG9SZW5kZXJGdWxsU2NyZWVuKHBhcmVudCkgOiAwOworCisgICAgcmV0dXJuIGZ1
bGxTY3JlZW4gPyBmdWxsU2NyZWVuLT5wbGFjZWhvbGRlcigpIDogMDsKK30KKworaW50IEhUTUxN
ZWRpYUVsZW1lbnQ6Om9mZnNldExlZnQoKQoreworICAgIGludCBsZWZ0ID0gRWxlbWVudDo6b2Zm
c2V0TGVmdCgpOworICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSBlbGVtZW50UGxhY2Vob2xk
ZXIodGhpcykpCisgICAgICAgIGxlZnQgPSBFbGVtZW50OjphZGp1c3RGb3JMb2NhbFpvb20oYmxv
Y2stPm9mZnNldExlZnQoKSwgYmxvY2spOworICAgIHJldHVybiBsZWZ0OworfQorCitpbnQgSFRN
TE1lZGlhRWxlbWVudDo6b2Zmc2V0VG9wKCkKK3sKKyAgICBpbnQgdG9wID0gRWxlbWVudDo6b2Zm
c2V0VG9wKCk7CisgICAgaWYgKFJlbmRlckJsb2NrKiBibG9jayA9IGVsZW1lbnRQbGFjZWhvbGRl
cih0aGlzKSkKKyAgICAgICAgdG9wID0gRWxlbWVudDo6YWRqdXN0Rm9yTG9jYWxab29tKGJsb2Nr
LT5vZmZzZXRUb3AoKSwgYmxvY2spOworICAgIHJldHVybiB0b3A7Cit9CisKK2ludCBIVE1MTWVk
aWFFbGVtZW50OjpvZmZzZXRXaWR0aCgpCit7CisgICAgaW50IHdpZHRoID0gRWxlbWVudDo6b2Zm
c2V0V2lkdGgoKTsKKyAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2NrID0gZWxlbWVudFBsYWNlaG9s
ZGVyKHRoaXMpKQorICAgICAgICB3aWR0aCA9IEVsZW1lbnQ6OmFkanVzdEZvckxvY2FsWm9vbShi
bG9jay0+b2Zmc2V0V2lkdGgoKSwgYmxvY2spOworICAgIHJldHVybiB3aWR0aDsKK30KKworaW50
IEhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldEhlaWdodCgpCit7CisgICAgaW50IGhlaWdodCA9IEVs
ZW1lbnQ6Om9mZnNldEhlaWdodCgpOworICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSBlbGVt
ZW50UGxhY2Vob2xkZXIodGhpcykpCisgICAgICAgIGhlaWdodCA9IEVsZW1lbnQ6OmFkanVzdEZv
ckxvY2FsWm9vbShibG9jay0+b2Zmc2V0SGVpZ2h0KCksIGJsb2NrKTsKKyAgICByZXR1cm4gaGVp
Z2h0OworfQogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKaW5kZXgg
MjcxNjM5ZWNmZmU1Yjk4NDU5OTZmMjc0N2RmMGI1MzBhYTBhOTZhNS4uMmZjM2Y4ZjBkMzAxMTUz
MDc0N2FkZjU0YjcyN2YwNmYyODAyNzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgKQEAgLTIwMyw2ICsyMDMsMTIgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1BsYXlp
bmcoKSBjb25zdCB7IHJldHVybiBtX3BsYXlpbmc7IH0KIAorICAgIC8vIE92ZXJyaWRlIEVsZW1l
bnQgaW1wbGVtZW50YXRpb25zCisgICAgaW50IG9mZnNldExlZnQoKTsKKyAgICBpbnQgb2Zmc2V0
VG9wKCk7CisgICAgaW50IG9mZnNldFdpZHRoKCk7CisgICAgaW50IG9mZnNldEhlaWdodCgpOwor
CiBwcm90ZWN0ZWQ6CiAgICAgSFRNTE1lZGlhRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5IVE1MTWVkaWFFbGVtZW50KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbAppbmRleCAwYmNhNTY5ZTY4MTc1OWU4NDgxODJj
NDJjM2MwZjg5MWEyZTRjYjYxLi5kOGM3OTE2Njg3M2JmZGI4Yjc5MmMyNmFkYTViN2Y2NDlmMjE4
NGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5pZGwKQEAgLTgyLDYg
KzgyLDEyIEBAIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9VklERU9dIEhUTUxNZWRpYUVsZW1lbnQg
OiBIVE1MRWxlbWVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SGFz
Q2xvc2VkQ2FwdGlvbnM7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0Q2xvc2VkQ2FwdGlv
bnNWaXNpYmxlOwogCisgICAgLy8gT3ZlcnJpZGUgRWxlbWVudCBmdW5jdGlvbnMKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRMZWZ0OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIG9mZnNldFRvcDsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRXaWR0aDsK
KyAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBvZmZzZXRIZWlnaHQ7CisKICNpZiBkZWZpbmVk
KEVOQUJMRV9NRURJQV9TVEFUSVNUSUNTKSAmJiBFTkFCTEVfTUVESUFfU1RBVElTVElDUwogICAg
IC8vIFRoZSBudW1iZXIgb2YgYnl0ZXMgY29uc3VtZWQgYnkgdGhlIG1lZGlhIGRlY29kZXIuCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2Via2l0QXVkaW9EZWNvZGVkQnl0
ZUNvdW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96453</attachid>
            <date>2011-06-08 12:12:23 -0700</date>
            <delta_ts>2011-06-09 15:18:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61911-20110608121222.patch</filename>
            <type>text/plain</type>
            <size>9167</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgzNTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMmYwZDU0MTczMGQ1ZjM1NmVkZmQw
NDAwZDA5MzcwYjlhYzEwYWJiLi4yZTJmOTcwMDM5YzAzMGE0YjZhM2NiNjk4Yzc4NTEwN2Y2NzJj
NTY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDYtMDIgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUkVHUkVTU0lPTjogUGFnZSBsYXlvdXQgbWVzc2VkIHVwIGFmdGVyIGV4aXRpbmcg
ZnVsbCBzY3JlZW4gYWZ0ZXIgdmlkZW8gZW5kcyBhdCBqZXJyeXNlaW5mZWxkLmNvbQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjE5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzk1MjMwMTc+CisKKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXZpZGVvLW9mZnNldC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWw6IEFkZGVkLgorCiAyMDExLTA2LTA4ICBB
bGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1F0XSBV
bnJldmlld2VkLCBza2lwIGZhaWxpbmcgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43OWI2ZjAwYjViYWNjNTI5NWVkYmQ5NjkwNzJiNzZhZDk2ZTI4OGNmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi12aWRlby1vZmZz
ZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorVGhpcyBsYXlvdXQgdGVzdCBjaGVja3Mg
dGhhdCB0aGUgb2Zmc2V0IHNpemUgYW5kIHBvc2l0aW9uIG9mIGEgdmlkZW8gZWxlbWVudCBkb2Vz
IG5vdCBjaGFuZ2Ugd2hlbiB0aGUgaXQgZW50ZXJzIGZ1bGwtc2NyZWVuIG1vZGUuIFByZXNzIGdv
IGZ1bGwtc2NyZWVuIHRvIGJlZ2luLgorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VY
UEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmpl
Y3QgSFRNTFZpZGVvRWxlbWVudF0nKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldExlZnQgPT0g
JzgnKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldFRvcCA9PSAnNDgnKSBPSworRVhQRUNURUQg
KHZpZGVvLm9mZnNldFdpZHRoID09ICczMDAnKSBPSworRVhQRUNURUQgKHZpZGVvLm9mZnNldEhl
aWdodCA9PSAnMTUwJykgT0sKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdmlkZW8tb2Zmc2V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxMzI3
YWE4YWY2YzMyOGE0MTU3YTg0YjlmMTRlNjFmYmE5MzgzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC5odG1sCkBAIC0w
LDAgKzEsMzAgQEAKKzxib2R5IG9ubG9hZD0iaW5pdCgpIj4KKyAgICA8ZGl2PlRoaXMgbGF5b3V0
IHRlc3QgY2hlY2tzIHRoYXQgdGhlIG9mZnNldCBzaXplIGFuZCBwb3NpdGlvbiBvZiBhIHZpZGVv
IGVsZW1lbnQgZG9lcyBub3QgY2hhbmdlIHdoZW4gdGhlIGl0IGVudGVycyBmdWxsLXNjcmVlbiBt
b2RlLiAgUHJlc3MgPGJ1dHRvbiBvbmNsaWNrPSJ2aWRlby53ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bigpIj5nbyBmdWxsLXNjcmVlbjwvYT4gdG8gYmVnaW4uPC9kaXY+CisgICAgPHZpZGVvIGlkPSJ2
aWRlbyIgY29udHJvbHM+PC92aWRlbz4KKyAgICA8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3ZpZGVvJyk7CisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisK
KyAgICAgICAgICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMg
bm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICAgICAgICAgIGlmIChFbGVtZW50LnByb3Rv
dHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAg
ICAgICBsb2dSZXN1bHQoZmFsc2UsICJFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbiA9PSB1bmRlZmluZWQiKTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciB2aWRlb1N0YXRlID0geydvZmZz
ZXRMZWZ0JzogdmlkZW8ub2Zmc2V0TGVmdCwgJ29mZnNldFRvcCc6IHZpZGVvLm9mZnNldFRvcCwg
J29mZnNldFdpZHRoJzogdmlkZW8ub2Zmc2V0V2lkdGgsICdvZmZzZXRIZWlnaHQnOiB2aWRlby5v
ZmZzZXRIZWlnaHQgfTsKKworICAgICAgICAgICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9
IGZ1bmN0aW9uKGV2ZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCB2
aWRlbyk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ub2Zmc2V0TGVm
dCIsIHZpZGVvU3RhdGUub2Zmc2V0TGVmdCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgidmlkZW8ub2Zmc2V0VG9wIiwgdmlkZW9TdGF0ZS5vZmZzZXRUb3ApOworICAgICAgICAg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInZpZGVvLm9mZnNldFdpZHRoIiwgdmlkZW9TdGF0ZS5v
ZmZzZXRXaWR0aCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidmlkZW8ub2Zm
c2V0SGVpZ2h0IiwgdmlkZW9TdGF0ZS5vZmZzZXRIZWlnaHQpOworICAgICAgICAgICAgICAgICAg
ICBlbmRUZXN0KCk7CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9y
RXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5n
ZWQpOyAgICAKKyAgICAgICAgICAgICAgICBydW5XaXRoS2V5RG93bihmdW5jdGlvbigpe3ZpZGVv
LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCl9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIDwvc2NyaXB0PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDdkMWQ0OWJlNGExNDFjNzk2ZWI1
Y2FmMDE4MTIzY2U0MjcxOWM0MWQuLjVjOTIyM2JmZWNjZTAxZjdjYzNkYjk2ODU2NGJlNzI5OWZj
YWQ5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMS0wNi0wMiAgSmVyIE5vYmxl
ICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OOiBQYWdlIGxheW91dCBtZXNzZWQgdXAgYWZ0ZXIg
ZXhpdGluZyBmdWxsIHNjcmVlbiBhZnRlciB2aWRlbyBlbmRzIGF0IGplcnJ5c2VpbmZlbGQuY29t
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTkxMQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTUyMzAxNz4KKworICAgICAgICBUZXN0OiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXZpZGVvLW9mZnNldC5odG1sCisKKyAgICAgICAgV2hlbiB0aGUgdmlk
ZW8gZWxlbWVudCBpcyB0YWtlbiBmdWxsLXNjcmVlbiBpbiB0aGUgbmV3IGVsZW1lbnQgZnVsbC1z
Y3JlZW4gQVBJLCByZXR1cm4gdGhlCisgICAgICAgIG9mZnNldCB3aWR0aCBhbmQgaGVpZ2h0IG9m
IHRoZSBwbGFjZWhvbGRlciByZW5kZXJlciB3aGljaCBpcyBmaWxsaW5nIGluIGZvciB0aGUgZnVs
bC1zY3JlZW4KKyAgICAgICAgZWxlbWVudC4gIFRvIGRvIHNvLCBvdmVycmlkZSBvZmZzZXRXaWR0
aCwgSGVpZ2h0LCBMZWZ0LCBhbmQgVG9wIGZyb20gRWxlbWVudC4gIFRoZXNlIGFyZQorICAgICAg
ICBub24tdmlydHVhbCBmdW5jdGlvbnMsIHNvIG1ha2UgdGhlbSB2aXJ0dWFsLgorCisgICAgICAg
ICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YWRqdXN0Rm9y
TG9jYWxab29tKTogTWFkZSBpbnRvIGEgY2xhc3Mtc3RhdGljIGZ1bmN0aW9uLgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6IE1hZGUgb2Zmc2V0IGZ1bmN0aW9ucyB2aXJ0dWFsLgorICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbGVtZW50UGxh
Y2Vob2xkZXIpOiBBZGRlZDsgdXRpbGl0eSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6Om9mZnNldExlZnQpOiBBZGRlZDsgdmlydHVhbCBvdmVycmlkZSBvZiB0
aGUgCisgICAgICAgICAgICBFbGVtZW50IGZ1bmN0aW9uLiBXaWxsIGJlIGNhbGxlZCBkaXJlY3Rs
eSB2aWEgamF2YXNjcmlwdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9m
ZnNldFRvcCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6b2Zm
c2V0V2lkdGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om9m
ZnNldEhlaWdodCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgor
CiAyMDExLTA2LTA4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IGFjYmEwM2MwMGVhNzI5NTJhYWJmY2Y0NzhjYmQ4NWVjMTk5YjJmM2YuLjMyZjhlYzdjNWZhN2Iz
Y2U4NzY1NjY1MjE5YmEyYzU4ZDMxMWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTM1
Miw3ICszNTIsNyBAQCBzdGF0aWMgZmxvYXQgbG9jYWxab29tRm9yUmVuZGVyZXIoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gem9vbUZhY3RvcjsKIH0KIAotc3RhdGljIGludCBh
ZGp1c3RGb3JMb2NhbFpvb20oaW50IHZhbHVlLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoraW50
IEVsZW1lbnQ6OmFkanVzdEZvckxvY2FsWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCiB7CiAgICAgZmxvYXQgem9vbUZhY3RvciA9IGxvY2FsWm9vbUZvclJlbmRlcmVyKHJl
bmRlcmVyKTsKICAgICBpZiAoem9vbUZhY3RvciA9PSAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
ZTE0ZTQ4YjhlMjM0MjRiZDRmMDY1Njk3MjQwNGFlNGYyOTNiMDhkZC4uNDdmZWFkYzU0MDY1M2U5
ZDhlN2FjNDRkNTI5OWEzOWRkYzY0YmZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0xNTEsMTAg
KzE1MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxCeUxpbmVzKGludCBsaW5lcyk7CiAg
ICAgdm9pZCBzY3JvbGxCeVBhZ2VzKGludCBwYWdlcyk7CiAKLSAgICBpbnQgb2Zmc2V0TGVmdCgp
OwotICAgIGludCBvZmZzZXRUb3AoKTsKLSAgICBpbnQgb2Zmc2V0V2lkdGgoKTsKLSAgICBpbnQg
b2Zmc2V0SGVpZ2h0KCk7CisgICAgdmlydHVhbCBpbnQgb2Zmc2V0TGVmdCgpOworICAgIHZpcnR1
YWwgaW50IG9mZnNldFRvcCgpOworICAgIHZpcnR1YWwgaW50IG9mZnNldFdpZHRoKCk7CisgICAg
dmlydHVhbCBpbnQgb2Zmc2V0SGVpZ2h0KCk7CiAgICAgRWxlbWVudCogb2Zmc2V0UGFyZW50KCk7
CiAgICAgaW50IGNsaWVudExlZnQoKTsKICAgICBpbnQgY2xpZW50VG9wKCk7CkBAIC0zODQsNiAr
Mzg0LDcgQEAgcHJvdGVjdGVkOgogICAgIAogICAgIHZvaWQgaWRBdHRyaWJ1dGVDaGFuZ2VkKEF0
dHJpYnV0ZSopOwogCisgICAgc3RhdGljIGludCBhZGp1c3RGb3JMb2NhbFpvb20oaW50IHZhbHVl
LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKTsKIHByaXZhdGU6CiAgICAgdm9pZCBzY3JvbGxCeVVu
aXRzKGludCB1bml0cywgU2Nyb2xsR3JhbnVsYXJpdHkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCBiMWVkZmQ2N2JlYzYwMWE4Nzc4YjlkOGU4MDBiNjk3
ZjRlNDI4NTRmLi4yN2M3ODliY2U2Njg4YzQ4ODM3MGUxMDRmMzVmM2ZjZDdlNTM2NDdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKQEAgLTU4LDYgKzU4LDcgQEAK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlkZW8uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXZlbnRMaXN0ZW5lci5oIgpAQCAtMjcxNiw2ICsyNzE3LDQ2IEBAIHZvaWQqIEhUTUxNZWRp
YUVsZW1lbnQ6OnByZURpc3BhdGNoRXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICByZXR1
cm4gMDsKIH0KIAorc3RhdGljIFJlbmRlckJsb2NrKiBlbGVtZW50UGxhY2Vob2xkZXIoRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVu
ZGVyZXIoKTsKKyAgICBSZW5kZXJPYmplY3QqIHBhcmVudCA9IHJlbmRlcmVyID8gcmVuZGVyZXIt
PnBhcmVudCgpIDogMDsKKyAgICBSZW5kZXJGdWxsU2NyZWVuKiBmdWxsU2NyZWVuID0gcGFyZW50
ICYmIHBhcmVudC0+aXNSZW5kZXJGdWxsU2NyZWVuKCkgPyB0b1JlbmRlckZ1bGxTY3JlZW4ocGFy
ZW50KSA6IDA7CisKKyAgICByZXR1cm4gZnVsbFNjcmVlbiA/IGZ1bGxTY3JlZW4tPnBsYWNlaG9s
ZGVyKCkgOiAwOworfQorCitpbnQgSFRNTE1lZGlhRWxlbWVudDo6b2Zmc2V0TGVmdCgpCit7Cisg
ICAgaW50IGxlZnQgPSBFbGVtZW50OjpvZmZzZXRMZWZ0KCk7CisgICAgaWYgKFJlbmRlckJsb2Nr
KiBibG9jayA9IGVsZW1lbnRQbGFjZWhvbGRlcih0aGlzKSkKKyAgICAgICAgbGVmdCA9IEVsZW1l
bnQ6OmFkanVzdEZvckxvY2FsWm9vbShibG9jay0+b2Zmc2V0TGVmdCgpLCBibG9jayk7CisgICAg
cmV0dXJuIGxlZnQ7Cit9CisKK2ludCBIVE1MTWVkaWFFbGVtZW50OjpvZmZzZXRUb3AoKQorewor
ICAgIGludCB0b3AgPSBFbGVtZW50OjpvZmZzZXRUb3AoKTsKKyAgICBpZiAoUmVuZGVyQmxvY2sq
IGJsb2NrID0gZWxlbWVudFBsYWNlaG9sZGVyKHRoaXMpKQorICAgICAgICB0b3AgPSBFbGVtZW50
OjphZGp1c3RGb3JMb2NhbFpvb20oYmxvY2stPm9mZnNldFRvcCgpLCBibG9jayk7CisgICAgcmV0
dXJuIHRvcDsKK30KKworaW50IEhUTUxNZWRpYUVsZW1lbnQ6Om9mZnNldFdpZHRoKCkKK3sKKyAg
ICBpbnQgd2lkdGggPSBFbGVtZW50OjpvZmZzZXRXaWR0aCgpOworICAgIGlmIChSZW5kZXJCbG9j
ayogYmxvY2sgPSBlbGVtZW50UGxhY2Vob2xkZXIodGhpcykpCisgICAgICAgIHdpZHRoID0gRWxl
bWVudDo6YWRqdXN0Rm9yTG9jYWxab29tKGJsb2NrLT5vZmZzZXRXaWR0aCgpLCBibG9jayk7Cisg
ICAgcmV0dXJuIHdpZHRoOworfQorCitpbnQgSFRNTE1lZGlhRWxlbWVudDo6b2Zmc2V0SGVpZ2h0
KCkKK3sKKyAgICBpbnQgaGVpZ2h0ID0gRWxlbWVudDo6b2Zmc2V0SGVpZ2h0KCk7CisgICAgaWYg
KFJlbmRlckJsb2NrKiBibG9jayA9IGVsZW1lbnRQbGFjZWhvbGRlcih0aGlzKSkKKyAgICAgICAg
aGVpZ2h0ID0gRWxlbWVudDo6YWRqdXN0Rm9yTG9jYWxab29tKGJsb2NrLT5vZmZzZXRIZWlnaHQo
KSwgYmxvY2spOworICAgIHJldHVybiBoZWlnaHQ7Cit9CiAKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCAyNzE2MzllY2ZmZTViOTg0NTk5NmYyNzQ3ZGYwYjUz
MGFhMGE5NmE1Li5jZjQyZDEzNzBjY2YwZGMyNzIwZjdkMjYwNjFlODI2YmQ3ZjdjNTFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjAzLDYgKzIwMywxMiBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzUGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWluZzsg
fQogCisgICAgLy8gT3ZlcnJpZGUgRWxlbWVudCBpbXBsZW1lbnRhdGlvbnMKKyAgICB2aXJ0dWFs
IGludCBvZmZzZXRMZWZ0KCk7CisgICAgdmlydHVhbCBpbnQgb2Zmc2V0VG9wKCk7CisgICAgdmly
dHVhbCBpbnQgb2Zmc2V0V2lkdGgoKTsKKyAgICB2aXJ0dWFsIGludCBvZmZzZXRIZWlnaHQoKTsK
KwogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+SFRNTE1lZGlhRWxlbWVudCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>