<?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>81663</bug_id>
          
          <creation_ts>2012-03-20 07:20:34 -0700</creation_ts>
          <short_desc>[chromium] make trackpad gesture curves configurable externally</short_desc>
          <delta_ts>2012-07-27 07:19:34 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Kroeger">rjkroege</reporter>
          <assigned_to name="Robert Kroeger">rjkroege</assigned_to>
          <cc>abarth</cc>
    
    <cc>davemoore</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583045</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 07:20:34 -0700</bug_when>
    <thetext>Provide a mechanism so that the embedder can configure a trackpad gesture curve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583088</commentid>
    <comment_count>1</comment_count>
      <attachid>132829</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 08:25:57 -0700</bug_when>
    <thetext>Created attachment 132829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583089</commentid>
    <comment_count>2</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 08:27:31 -0700</bug_when>
    <thetext>Early feedback welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583090</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 08:28:47 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583120</commentid>
    <comment_count>4</comment_count>
      <attachid>132829</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 09:08:55 -0700</bug_when>
    <thetext>Comment on attachment 132829
Patch

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

New failing tests:
fast/events/touch/gesture/pad-gesture-cancel.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583128</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 09:19:13 -0700</bug_when>
    <thetext>Doesn&apos;t handle threaded compositor case. Can you put the parameters on the GestureFlingStart itself?  Seems reasonable that the browser would want to use different parameters for different inputs in the same WebView - say for instance if there were multiple input devices connected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583152</commentid>
    <comment_count>6</comment_count>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-03-20 09:42:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Doesn&apos;t handle threaded compositor case. Can you put the parameters on the GestureFlingStart itself?  Seems reasonable that the browser would want to use different parameters for different inputs in the same WebView - say for instance if there were multiple input devices connected.

If we do this (which is a good idea by the way), can we plumb though tau, and also &apos;alpha&apos; to replace the hard-coded 1000 in the constructor for the time scale factor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583171</commentid>
    <comment_count>7</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 10:01:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Doesn&apos;t handle threaded compositor case. Can you put the parameters on the GestureFlingStart itself?  Seems reasonable that the browser would want to use different parameters for different inputs in the same WebView - say for instance if there were multiple input devices connected.
&gt; 
&gt; If we do this (which is a good idea by the way), can we plumb though tau, and also &apos;alpha&apos; to replace the hard-coded 1000 in the constructor for the time scale factor?

wjmaclean@: can we have more descriptive names than tau and alpha? And the patch already plumbs through a value that replaces the 1000.

jamesr@: sounds logical to send the params on the GFS. I&apos;ll change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583234</commentid>
    <comment_count>8</comment_count>
      <attachid>132853</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 11:01:30 -0700</bug_when>
    <thetext>Created attachment 132853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583305</commentid>
    <comment_count>9</comment_count>
      <attachid>132853</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-20 11:47:20 -0700</bug_when>
    <thetext>Comment on attachment 132853
Patch

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

&gt; Source/WebKit/chromium/public/WebInputEvent.h:375
&gt; +        , unitTimeScaleVelocityThreshold(0.0f)

I think it&apos;s worth making a dedicated type for fling, these don&apos;t make much sense for other types do they?

Otherwise the public WK changes lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583411</commentid>
    <comment_count>10</comment_count>
      <attachid>132853</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 13:55:20 -0700</bug_when>
    <thetext>Comment on attachment 132853
Patch

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

New failing tests:
fast/events/touch/gesture/pad-gesture-cancel.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583445</commentid>
    <comment_count>11</comment_count>
      <attachid>132896</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 14:22:05 -0700</bug_when>
    <thetext>Created attachment 132896
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583451</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 14:24:36 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583608</commentid>
    <comment_count>13</comment_count>
      <attachid>132896</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-20 16:37:47 -0700</bug_when>
    <thetext>Comment on attachment 132896
Patch

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

New failing tests:
fast/dom/error-to-string-stack-overflow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583692</commentid>
    <comment_count>14</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-03-20 18:54:07 -0700</bug_when>
    <thetext>I need to extend the approach here to add additional parameters per the changes in https://bugs.webkit.org/show_bug.cgi?id=81713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584191</commentid>
    <comment_count>15</comment_count>
      <attachid>132896</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-21 09:06:05 -0700</bug_when>
    <thetext>Comment on attachment 132896
Patch

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

Seems mostly OK. Some issues to resolve before landing.

&gt; Source/WebCore/platform/TouchFlingPlatformGestureCurve.h:43
&gt; +    static PassOwnPtr&lt;PlatformGestureCurve&gt; create(const FloatPoint&amp; velocity, float unitTimeScaleVelocityThreshold = 1000, float flingLaunchDuration = .25);

Why the default parameters? It appears these values are always set.

&gt; Source/WebCore/platform/TouchFlingPlatformGestureCurve.h:49
&gt; +    explicit TouchFlingPlatformGestureCurve(const FloatPoint&amp; velocity, float unitTimeScaleVelocityThreshold, float flingLaunchDuration);

no explicit for c&apos;tors with &gt;1 arg

&gt; Source/WebCore/platform/TouchFlingPlatformGestureCurve.h:55
&gt; +

extra newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602450</commentid>
    <comment_count>16</comment_count>
      <attachid>137162</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-13 15:22:14 -0700</bug_when>
    <thetext>Created attachment 137162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602452</commentid>
    <comment_count>17</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-13 15:23:32 -0700</bug_when>
    <thetext>jamesr@: please look again as you see fit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602465</commentid>
    <comment_count>18</comment_count>
      <attachid>137162</attachid>
    <who name="W. James MacLean">wjmaclean</who>
    <bug_when>2012-04-13 15:41:17 -0700</bug_when>
    <thetext>Comment on attachment 137162
Patch

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

&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:72
&gt; +        p[i] = provided &amp;&amp; !isnan(provided[i]) ? provided[i] : defaultEmpircalParameters[i];

This could lead to weird behaviour if one (but not all) values in provided were NaN (presumably not done on purpose) - do we want to worry about pathological cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603188</commentid>
    <comment_count>19</comment_count>
      <attachid>137162</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-16 08:55:56 -0700</bug_when>
    <thetext>Comment on attachment 137162
Patch

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

&gt;&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:72
&gt;&gt; +        p[i] = provided &amp;&amp; !isnan(provided[i]) ? provided[i] : defaultEmpircalParameters[i];
&gt; 
&gt; This could lead to weird behaviour if one (but not all) values in provided were NaN (presumably not done on purpose) - do we want to worry about pathological cases?

My thinking was:

1. do the right thing if the browser provides no parameters -- because that&apos;s what will be happening between landing this and the browser side.
2. do something non-exception-generating if the browser provides less than the currently required parameters. 

Yes, behaviour would be weird with a partial set of parameters. The config flag is intended to facilitate debugging of curves (and presumes that one has read the comment in this file).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603362</commentid>
    <comment_count>20</comment_count>
      <attachid>137162</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-04-16 12:58:21 -0700</bug_when>
    <thetext>Comment on attachment 137162
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Reviewed by James Robinson.

Leave this &quot;Reviewed by NOBODY (OOPS!)&quot; until you get an r+ on a patch.

&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:58
&gt; +const float defaultEmpircalParameters[] = {1.5395e+01, 2.0466e+04, -2.9899e+04, 2.0577e+04, -5.4966e+03, 1.128445};

In this patch we have the default values here (near the end use) and lot of code leading up to this point that has to deal with the fact that a user may specify their own values or want to use these values. Seems like the whole world would be simpler if these default values were higher up the stack and always set if the user didn&apos;t specify them explicitly.

&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:71
&gt; +    for (unsigned i = 0; i &lt; sizeof(defaultEmpircalParameters) / sizeof(float); i++)

&quot;sizeof(defaultEmpircalParameters) / sizeof(float)&quot; is a mouthful to repeat - could you store it in a local? i notice that in other places in the code this is just a static number. why the pretend generality here?

&gt; Source/WebKit/chromium/public/WebInputEvent.h:388
&gt; +        const float NaN = 0.0f / 0.0f;

It&apos;s very weird to initialize to NaN - why would we want to do that instead of initializing to something sane (like the default curve parameters) or something like all 0s?  NaN is a footgun

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:638
&gt; +        if (event.size == sizeof(WebGestureFlingEvent)) {

Branching on the event.size seems pretty bizarre.  Is there no better way to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610046</commentid>
    <comment_count>21</comment_count>
      <attachid>137162</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-25 14:24:37 -0700</bug_when>
    <thetext>Comment on attachment 137162
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:6
&gt;&gt; +        Reviewed by James Robinson.
&gt; 
&gt; Leave this &quot;Reviewed by NOBODY (OOPS!)&quot; until you get an r+ on a patch.

fixed in p5.

&gt;&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:58
&gt;&gt; +const float defaultEmpircalParameters[] = {1.5395e+01, 2.0466e+04, -2.9899e+04, 2.0577e+04, -5.4966e+03, 1.128445};
&gt; 
&gt; In this patch we have the default values here (near the end use) and lot of code leading up to this point that has to deal with the fact that a user may specify their own values or want to use these values. Seems like the whole world would be simpler if these default values were higher up the stack and always set if the user didn&apos;t specify them explicitly.

Good point. 

I would like to keep the parameters here because they are specific to this kind of curve and a different kind of curve would end up having different parameters.

However, in p5 I attempted to make the rest of the stack oblivious to the value of the parameters other than how many it has to pass along.

&gt;&gt; Source/WebCore/platform/TouchpadFlingPlatformGestureCurve.cpp:71
&gt;&gt; +    for (unsigned i = 0; i &lt; sizeof(defaultEmpircalParameters) / sizeof(float); i++)
&gt; 
&gt; &quot;sizeof(defaultEmpircalParameters) / sizeof(float)&quot; is a mouthful to repeat - could you store it in a local? i notice that in other places in the code this is just a static number. why the pretend generality here?

done in p5

&gt;&gt; Source/WebKit/chromium/public/WebInputEvent.h:388
&gt;&gt; +        const float NaN = 0.0f / 0.0f;
&gt; 
&gt; It&apos;s very weird to initialize to NaN - why would we want to do that instead of initializing to something sane (like the default curve parameters) or something like all 0s?  NaN is a footgun

fixed. p5.

&gt;&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:638
&gt;&gt; +        if (event.size == sizeof(WebGestureFlingEvent)) {
&gt; 
&gt; Branching on the event.size seems pretty bizarre.  Is there no better way to do this?

Yes: I added the number of params to GestureEvent. Seems nicer (p5)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610048</commentid>
    <comment_count>22</comment_count>
      <attachid>138873</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-25 14:28:51 -0700</bug_when>
    <thetext>Created attachment 138873
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610315</commentid>
    <comment_count>23</comment_count>
      <attachid>138873</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-25 19:38:59 -0700</bug_when>
    <thetext>Comment on attachment 138873
Patch

Attachment 138873 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12518744</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610669</commentid>
    <comment_count>24</comment_count>
      <attachid>139015</attachid>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-26 09:10:40 -0700</bug_when>
    <thetext>Created attachment 139015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>610671</commentid>
    <comment_count>25</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-26 09:11:38 -0700</bug_when>
    <thetext>fixed build issue from previous version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>611478</commentid>
    <comment_count>26</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-04-27 07:21:15 -0700</bug_when>
    <thetext>jamesr@ please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680311</commentid>
    <comment_count>27</comment_count>
      <attachid>139015</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-27 01:56:06 -0700</bug_when>
    <thetext>Comment on attachment 139015
Patch

Are you still interested in having this patch reviewed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680580</commentid>
    <comment_count>28</comment_count>
    <who name="Robert Kroeger">rjkroege</who>
    <bug_when>2012-07-27 06:57:17 -0700</bug_when>
    <thetext>During an offline discussion with jamesr@, we decided to not proceed with this until necessary. My apologies for failing to update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680611</commentid>
    <comment_count>29</comment_count>
      <attachid>139015</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-27 07:19:34 -0700</bug_when>
    <thetext>Comment on attachment 139015
Patch

Cleared review? from attachment 139015 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132829</attachid>
            <date>2012-03-20 08:25:57 -0700</date>
            <delta_ts>2012-03-20 11:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120320112555.patch</filename>
            <type>text/plain</type>
            <size>6503</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAppbmRleCA0M2Ri
ZjBhYzZmMWQ5NzEzYTYzYTZmZGYwZWMxNjc2MjE4NTY2YWZlLi45NTM0ZTBjZmE5Njg4MDNiN2Q1
YjkzNTk2Yzg3YWFhYzM0NzllMGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKQEAgLTMzLDE0ICsz
MywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKLVBh
c3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KQorUGFzc093blB0cjxQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUo
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGRvdWJsZSB0aW1lU2NhbGVTdHJldGNoLCBkb3Vi
bGUgdGF1KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlKHZlbG9jaXR5KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHksIHRpbWVTY2FsZVN0cmV0Y2gsIHRhdSkpOwog
fQogCi1Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKK1RvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0
UG9pbnQmIHZlbG9jaXR5LCBkb3VibGUgdGltZVNjYWxlU3RyZXRjaCwgZG91YmxlIHRhdSkKICAg
ICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCi0gICAgLCBtX3RpbWVTY2FsZUZhY3RvcigxMDAwIC8g
bWF4KDEuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkpKSkpCisg
ICAgLCBtX3RhdSh0YXUpCisgICAgLCBtX3RpbWVTY2FsZUZhY3Rvcih0aW1lU2NhbGVTdHJldGNo
IC8gbWF4KDEuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkpKSkp
CiB7CiAgICAgQVNTRVJUKHZlbG9jaXR5ICE9IEZsb2F0UG9pbnQ6Onplcm8oKSk7CiB9CkBAIC02
MCw4ICs2MSw3IEBAIGJvb2wgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShk
b3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJlQ3VydmVUYXJnCiAgICAgLy8gYXMgYSBmdW5jdGlv
biBvZiB0aW1lLCBhbmQgbm90IHZlbG9jaXR5LgogICAgIHRpbWUgKj0gbV90aW1lU2NhbGVGYWN0
b3I7CiAKLSAgICBzdGF0aWMgZG91YmxlIHRhdSA9IDAuMjU7Ci0gICAgc3RhdGljIGRvdWJsZSBw
MSA9ICAzLjAgKyAxIC8gdGF1OworICAgIHN0YXRpYyBkb3VibGUgcDEgPSAgMy4wICsgMSAvIG1f
dGF1OwogICAgIC8vIE5vdGU6ICJkaXNwbGFjZW1lbnQiIGJlbG93IGlzIHRoZSBpbnRlZ3JhbCBv
ZiB0aGUgY3ViaWMgYmV6aWVyIGN1cnZlIGRlZmluZWQgYnkgW3AwIHAxIHAyIHAzXS4KIAogICAg
IGZsb2F0IGRpc3BsYWNlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggYTdlMWNlYzEwMWUwMTJh
Y2VlMmIxZmMyMWQ5YzUzMDYwYTE3YzM0ZS4uMjlhYjg4YzAyMzNiZDFmZTIxY2Q5OWI4OTM2ZTli
ZTI0NWU3MzE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQwLDE3ICs0MCwxOSBAQCBjbGFzcyBQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldDsKIC8vIHRoZSBpbml0aWFsIHZlbG9jaXR5LgogY2xh
c3MgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlIDogcHVibGljIFBsYXRmb3JtR2VzdHVy
ZUN1cnZlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBkb3VibGUgdGltZVNjYWxlU3RyZXRjaCA9IDEwMDAsIGRvdWJsZSB0YXUgPSAuMjUp
OwogICAgIHZpcnR1YWwgflRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAg
dmlydHVhbCBib29sIGFwcGx5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZVRhcmdldCopOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CisgICAgZXhwbGljaXQg
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
LCBkb3VibGUgdGltZVNjYWxlU3RyZXRjaCwgZG91YmxlIHRhdSk7CiAKICAgICBGbG9hdFBvaW50
IG1fdmVsb2NpdHk7CisgICAgZG91YmxlIG1fdGF1OwogICAgIGZsb2F0IG1fdGltZVNjYWxlRmFj
dG9yOwogICAgIEludFBvaW50IG1fY3VtdWxhdGl2ZVNjcm9sbDsKKwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4
IDNjOGFlNDQ4NGRhMjUzYTgzNDVkMWQ2ZjUyYjEyMWM5NDY1NGYxMzMuLmRkNDQyNTU3ZDdlM2Nl
MDE4MjZkZDRhZGEwMjRkMTM1OWNjYjZlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmgKQEAgLTQ1Miw2ICs0NTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gU2ltdWxhdGVz
IGEgY29tcG9zaXRvciBsb3N0IGNvbnRleHQuCiAgICAgdmlydHVhbCB2b2lkIGxvc2VDb21wb3Np
dG9yQ29udGV4dChpbnQgbnVtVGltZXMpID0gMDsKIAorICAgIC8vIEdlc3R1cmUgQ29uZmlndXJh
dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uZmlndXJlIHRoZSB0
cmFjayBwYWQgZmxpbmcgcmVzcG9uc2UgY3VydmVzLgorICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFj
a3BhZEdlc3R1cmVGbGluZ0N1cnZlUGFyYW1ldGVycyhkb3VibGUsIGRvdWJsZSk7CiAKIHByb3Rl
Y3RlZDoKICAgICB+V2ViVmlldygpIHt9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggMTFhZWViYTc1MTlkN2ExYjlhODZlODI3Y2E3YjZjYWMzYWU1NmY4
Ny4uYzFlOTU1M2RlMzI4NmZjOWFlN2Q4ZTVlNDc1ZTdhYTk2YzZjYTIxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMzY3LDYgKzM2Nyw4IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3Vz
ZXJNZWRpYUNsaWVudEltcGwodGhpcykKICNlbmRpZgogICAgICwgbV9mbGluZ01vZGlmaWVyKDAp
CisgICAgLCBtX2ZsaW5nQ3VydmVUaW1lU3RyZXRjaFBhcmFtZXRlcigwKQorICAgICwgbV9mbGlu
Z0N1cnZlVGF1UGFyYW1ldGVyKDApCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBk
b2VzIHRoZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVj
aWZpYyB3cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGlu
ZwpAQCAtNjM0LDcgKzYzNiw3IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQogICAgICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0
aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1f
ZmxpbmdNb2RpZmllciA9IGV2ZW50Lm1vZGlmaWVyczsKICAgICAgICAgLy8gRklYTUU6IE1ha2Ug
dGhlIGN1cnZlIHBhcmFtZXRyaXphYmxlIGZyb20gdGhlIGJyb3dzZXIuCi0gICAgICAgIG1fZ2Vz
dHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQuZGVs
dGFYLCBldmVudC5kZWx0YVkpKSwgdGhpcyk7CisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9
IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRvdWNoRmxpbmdQbGF0Zm9y
bUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0
YVkpLCBtX2ZsaW5nQ3VydmVUaW1lU3RyZXRjaFBhcmFtZXRlciwgbV9mbGluZ0N1cnZlVGF1UGFy
YW1ldGVyKSwgdGhpcyk7CiAgICAgICAgIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KQEAgLTI4MjksNiArMjgzMSwxMiBAQCB2b2lkIFdlYlZpZXdJbXBs
OjpzZXRTY3JvbGxiYXJDb2xvcnModW5zaWduZWQgaW5hY3RpdmVDb2xvciwKICNlbmRpZgogfQog
Cit2b2lkIFdlYlZpZXdJbXBsOjpzZXRUcmFja3BhZEdlc3R1cmVGbGluZ0N1cnZlUGFyYW1ldGVy
cyhkb3VibGUgIGZsaW5nQ3VydmVUaW1lU3RyZXRjaFBhcmFtZXRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZmxpbmdDdXJ2ZVRhdVBhcmFtZXRlcikgewor
ICAgIG1fZmxpbmdDdXJ2ZVRpbWVTdHJldGNoUGFyYW1ldGVyID0gZmxpbmdDdXJ2ZVRpbWVTdHJl
dGNoUGFyYW1ldGVyOworICAgIG1fZmxpbmdDdXJ2ZVRhdVBhcmFtZXRlciA9IGZsaW5nQ3VydmVU
YXVQYXJhbWV0ZXI7Cit9CisKIHZvaWQgV2ViVmlld0ltcGw6OnNldFNlbGVjdGlvbkNvbG9ycyh1
bnNpZ25lZCBhY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgYWN0aXZlRm9yZWdyb3VuZENvbG9yLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9y
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMjI5MzhhZDZi
ZDZjNDk3NWY3NGZlMzdlNDE1NDg3ZmVlY2ExMjE1Yi4uNDRkZGIyY2M0MmFhOGUxYTNmMjZmNTkx
NmQ4MDMwOTNhNTNkZmFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC0yNTIsNiArMjUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3Jt
Q3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKICAgICB2aXJ0dWFsIHZv
aWQgYWRkUGFnZU92ZXJsYXkoV2ViUGFnZU92ZXJsYXkqLCBpbnQgLyogek9yZGVyICovKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUGFnZU92ZXJsYXkoV2ViUGFnZU92ZXJsYXkqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VHJhY2twYWRHZXN0dXJlRmxpbmdDdXJ2ZVBhcmFtZXRlcnMoZG91Ymxl
LCBkb3VibGUpOwogCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0NsaWVudAogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVBbmltYXRpb25zKGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7CkBAIC03MjgsNiAr
NzI5LDggQEAgcHJpdmF0ZToKICAgICBXZWJQb2ludCBtX2xhc3RXaGVlbFBvc2l0aW9uOwogICAg
IFdlYlBvaW50IG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb247CiAgICAgaW50IG1fZmxpbmdNb2Rp
ZmllcjsKKyAgICBkb3VibGUgbV9mbGluZ0N1cnZlVGltZVN0cmV0Y2hQYXJhbWV0ZXI7CisgICAg
ZG91YmxlIG1fZmxpbmdDdXJ2ZVRhdVBhcmFtZXRlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132853</attachid>
            <date>2012-03-20 11:01:30 -0700</date>
            <delta_ts>2012-03-20 14:22:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120320140129.patch</filename>
            <type>text/plain</type>
            <size>8470</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhOTFhMTI1MTNkZmM4
YzlhOGE0YTJhNGUzNmM3NWE3NDE3M2U5Yy4uYTEzNTNjMTlkODI0MjVhYzMxZjgwNjYwYzA1MjM4
MDVhM2M1NTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTIwICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkgW25v
dCByZWFkeSBmb3IgcmV2aWV3XQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODE2NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0
ZSk6IE1hZGUgY29uc3RhbnRzIGNvbmZpZ3VyYWJsZSB3aXRoIGRlZmF1bHQgdmFsdWVzLgorICAg
ICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlOjphcHBseSk6CisgICAgICAgICogcGxhdGZvcm0vVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmg6CisgICAgICAgIChUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUpOgorCiAyMDEyLTAzLTIwICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRyZWF0IFVpbnQqIGV4dGVybmFsIGFycmF5
cyBhcyBhcnJheXMgaW4gY29uc29sZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOTA1
NWRiNWUwODJjZTA4YWMxMTAwN2ExYjdiMGM4MGViNTk2NzNiOS4uMTNkODFiNTIzZTQyM2QxODBi
ZTM0YTI0NDQ0N2NkMDVlNDAzYmUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxMi0wMy0yMCAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBtYWtlIHRyYWNrcGFkIGdlc3R1cmUgY3VydmVz
IGNvbmZpZ3VyYWJsZSBleHRlcm5hbGx5IFtub3QgcmVhZHkgZm9yIHJldmlld10KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRF
dmVudC5oOgorICAgICAgICAoV2ViR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
R2VzdHVyZUV2ZW50OjpXZWJHZXN0dXJlRXZlbnQpOiBBZGRlZCBwYXJhbWV0ZXJzIHRvIGNvbmZp
Z3VyZSB0aGUgc2hhcGUgb2YgYW4gaW52b2tlZCBmbGluZyBjdXJ2ZS4KKyAgICAgICAgKiBzcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nKTogRm9yd2FyZCB0
aGUgcGFyYW1ldGVycyB0byB0aGUgY3JlYXRlZCBmbGluZyBjdXJ2ZS4KKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUV2
ZW50KTogRm9yd2FyZCB0aGUgcGFyYW1ldGVycyB0byB0aGUgY3JlYXRlZCBmbGluZyBjdXJ2ZS4K
KwogMjAxMi0wMy0yMCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIE1hcmtpbmcgV2ViRnJhbWVUZXN0LkRpdkF1dG9ab29tUGFyYW1zVGVz
dCBhcyBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Rv
dWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAKaW5kZXggNDNkYmYwYWM2ZjFkOTcxM2E2
M2E2ZmRmMGVjMTY3NjIxODU2NmFmZS4uYmFmZGQ3MzQ4NWYyYzliNzdjYmE2ZTk1Nzc3ZDFhZWZi
MmRkYWQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1Bs
YXRmb3JtR2VzdHVyZUN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCkBAIC0zMywxNCArMzMsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCi1QYXNzT3duUHRyPFBsYXRm
b3JtR2VzdHVyZUN1cnZlPiBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShj
b25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSkKK1Bhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3Vy
dmU+IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9p
bnQmIHZlbG9jaXR5LCBmbG9hdCB1bml0VGltZVNjYWxlVmVsb2NpdHlUaHJlc2hvbGQsIGZsb2F0
IGZsaW5nTGF1bmNoRHVyYXRpb24pCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUodmVsb2NpdHkpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0eSwgdW5pdFRpbWVTY2Fs
ZVZlbG9jaXR5VGhyZXNob2xkLCBmbGluZ0xhdW5jaER1cmF0aW9uKSk7CiB9CiAKLVRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNv
bnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KQorVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZl
OjpUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIGZsb2F0IHVuaXRUaW1lU2NhbGVWZWxvY2l0eVRocmVzaG9sZCwgZmxvYXQgZmxpbmdMYXVu
Y2hEdXJhdGlvbikKICAgICA6IG1fdmVsb2NpdHkodmVsb2NpdHkpCi0gICAgLCBtX3RpbWVTY2Fs
ZUZhY3RvcigxMDAwIC8gbWF4KDEuZiwgbWF4KGZhYnModmVsb2NpdHkueCgpKSwgZmFicyh2ZWxv
Y2l0eS55KCkpKSkpCisgICAgLCBtX2ZsaW5nTGF1bmNoRHVyYXRpb24oZmxpbmdMYXVuY2hEdXJh
dGlvbikKKyAgICAsIG1fdGltZVNjYWxlRmFjdG9yKHVuaXRUaW1lU2NhbGVWZWxvY2l0eVRocmVz
aG9sZCAvIG1heCgxLmYsIG1heChmYWJzKHZlbG9jaXR5LngoKSksIGZhYnModmVsb2NpdHkueSgp
KSkpKQogewogICAgIEFTU0VSVCh2ZWxvY2l0eSAhPSBGbG9hdFBvaW50Ojp6ZXJvKCkpOwogfQpA
QCAtNjAsOCArNjEsNyBAQCBib29sIFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBw
bHkoZG91YmxlIHRpbWUsIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZwogICAgIC8vIGFzIGEgZnVu
Y3Rpb24gb2YgdGltZSwgYW5kIG5vdCB2ZWxvY2l0eS4KICAgICB0aW1lICo9IG1fdGltZVNjYWxl
RmFjdG9yOwogCi0gICAgc3RhdGljIGRvdWJsZSB0YXUgPSAwLjI1OwotICAgIHN0YXRpYyBkb3Vi
bGUgcDEgPSAgMy4wICsgMSAvIHRhdTsKKyAgICBzdGF0aWMgZG91YmxlIHAxID0gIDMuMCArIDEg
LyBtX2ZsaW5nTGF1bmNoRHVyYXRpb247CiAgICAgLy8gTm90ZTogImRpc3BsYWNlbWVudCIgYmVs
b3cgaXMgdGhlIGludGVncmFsIG9mIHRoZSBjdWJpYyBiZXppZXIgY3VydmUgZGVmaW5lZCBieSBb
cDAgcDEgcDIgcDNdLgogCiAgICAgZmxvYXQgZGlzcGxhY2VtZW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApp
bmRleCBhN2UxY2VjMTAxZTAxMmFjZWUyYjFmYzIxZDljNTMwNjBhMTdjMzRlLi5hMzkzZjcxOTEz
NTg2MTViZDUyMGRlMTBlNGFkZTAyMDk2ZWRkMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDAs
MTcgKzQwLDE5IEBAIGNsYXNzIFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0OwogLy8gdGhlIGlu
aXRpYWwgdmVsb2NpdHkuCiBjbGFzcyBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgOiBw
dWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHkpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUo
Y29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHVuaXRUaW1lU2NhbGVWZWxvY2l0eVRo
cmVzaG9sZCA9IDEwMDAsIGZsb2F0IGZsaW5nTGF1bmNoRHVyYXRpb24gPSAuMjUpOwogICAgIHZp
cnR1YWwgflRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCiAgICAgdmlydHVhbCBi
b29sIGFwcGx5KGRvdWJsZSBtb25vdG9uaWNUaW1lLCBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdl
dCopOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CisgICAgZXhwbGljaXQgVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5LCBmbG9hdCB1
bml0VGltZVNjYWxlVmVsb2NpdHlUaHJlc2hvbGQsIGZsb2F0IGZsaW5nTGF1bmNoRHVyYXRpb24p
OwogCiAgICAgRmxvYXRQb2ludCBtX3ZlbG9jaXR5OworICAgIGRvdWJsZSBtX2ZsaW5nTGF1bmNo
RHVyYXRpb247CiAgICAgZmxvYXQgbV90aW1lU2NhbGVGYWN0b3I7CiAgICAgSW50UG9pbnQgbV9j
dW11bGF0aXZlU2Nyb2xsOworCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKaW5kZXggMzhmZmZiODhm
NGUzY2QyMjY0MGQ0ZDYzNDljNDY5NjExODA5YzZmYi4uMDJjYWQ3MWZjZWI1MWMxOTc3NTc2Mjlh
NTJmNDcxNTIwNzVlYmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViSW5wdXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YklucHV0RXZlbnQuaApAQCAtMzYwLDYgKzM2MCwxMCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZGVs
dGFYOwogICAgIGZsb2F0IGRlbHRhWTsKIAorICAgIC8vIFBhcmFtZXRlcnMgY29udHJvbGxpbmcg
dGhlIHNoYXBlIG9mIGEgdG91Y2hwYWQgZmxpbmcgY3VydmUuCisgICAgZmxvYXQgdW5pdFRpbWVT
Y2FsZVZlbG9jaXR5VGhyZXNob2xkOworICAgIGZsb2F0IGZsaW5nTGF1bmNoRHVyYXRpb247CisK
ICAgICBXZWJHZXN0dXJlRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYkdlc3R1
cmVFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRFdmVudChzaXplUGFyYW0pCiAgICAgICAgICwg
eCgwKQpAQCAtMzY4LDYgKzM3Miw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBnbG9iYWxZKDApCiAg
ICAgICAgICwgZGVsdGFYKDAuMGYpCiAgICAgICAgICwgZGVsdGFZKDAuMGYpCisgICAgICAgICwg
dW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkKDAuMGYpCisgICAgICAgICwgZmxpbmdMYXVu
Y2hEdXJhdGlvbigwLjBmKQogICAgIHsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3Bw
CmluZGV4IGE0Y2M3MTgyY2RiOTI3MTMwYWJmMGEzMGM4NjlhMGE2NTQ3MjAwZDguLjEyMDRmOGQ4
Nzk2MWZlNjBjNTYwMDY5ZjMzMDVmNDg4N2E2NjMyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5j
cHAKQEAgLTI1OSw3ICsyNTksNyBAQCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZl
bnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgIHN3aXRj
aCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgY2FzZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
U3RhcnRlZDogewogICAgICAgICBUUkFDRV9FVkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAg
ICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGVs
dGFYLCAtZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0
dXJlQ3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShGbG9hdFBvaW50KC1nZXN0dXJlRXZlbnQuZGVsdGFYLCAtZ2VzdHVyZUV2ZW50LmRlbHRh
WSksIGdlc3R1cmVFdmVudC51bml0VGltZVNjYWxlVmVsb2NpdHlUaHJlc2hvbGQsIGdlc3R1cmVF
dmVudC5mbGluZ0xhdW5jaER1cmF0aW9uKTsKICAgICAgICAgbV93aGVlbEZsaW5nQW5pbWF0aW9u
ID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1HZXN0dXJlVG9DQ0dl
c3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCkpLCB0aGlzKTsKICAgICAg
ICAgbV93aGVlbEZsaW5nUG9pbnQgPSBJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2
ZW50LnkpOwogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAxMWFl
ZWJhNzUxOWQ3YTFiOWE4NmU4MjdjYTdiNmNhYzNhZTU2Zjg3Li5lMDk2NTRiODk3NmY4N2Q4ZTNm
YTU5MzExZmFiZGNjM2UwMThjYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC02MzQsNyArNjM0LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Z2VzdHVy
ZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAgICAgIG1fbGFzdFdoZWVs
R2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9iYWxYLCBldmVudC5nbG9iYWxZKTsK
ICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJzOwogICAgICAgICAvLyBG
SVhNRTogTWFrZSB0aGUgY3VydmUgcGFyYW1ldHJpemFibGUgZnJvbSB0aGUgYnJvd3Nlci4KLSAg
ICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9u
OjpjcmVhdGUoVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2lu
dChldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWSkpLCB0aGlzKTsKKyAgICAgICAgbV9nZXN0dXJl
QW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoVG91Y2hG
bGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChldmVudC5kZWx0YVgs
IGV2ZW50LmRlbHRhWSksIGV2ZW50LnVuaXRUaW1lU2NhbGVWZWxvY2l0eVRocmVzaG9sZCwgZXZl
bnQuZmxpbmdMYXVuY2hEdXJhdGlvbiksIHRoaXMpOwogICAgICAgICBzY2hlZHVsZUFuaW1hdGlv
bigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132896</attachid>
            <date>2012-03-20 14:22:05 -0700</date>
            <delta_ts>2012-04-13 15:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120320172204.patch</filename>
            <type>text/plain</type>
            <size>19135</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJhOTFhMTI1MTNkZmM4
YzlhOGE0YTJhNGUzNmM3NWE3NDE3M2U5Yy4uOGViNGU0OWM5MTAzZDIyZjhhZjhkMWZlYTNlNjcz
ZGZiOTA2ZjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAzLTIwICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
b3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VG91
Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUpOiBBZGRlZCBjb25maWd1cmFibGUg
cGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6YXBwbHkpOgorICAgICAgICAqIHBsYXRm
b3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAoVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKwogMjAxMi0wMy0yMCAgUGF2ZWwgRmVsZG1hbiAgPHBm
ZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0cmVhdCBVaW50
KiBleHRlcm5hbCBhcnJheXMgYXMgYXJyYXlzIGluIGNvbnNvbGUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDkwNTVkYjVlMDgyY2UwOGFjMTEwMDdhMWI3YjBjODBlYjU5NjczYjkuLjQ1
Y2IyODE1ZDkwMjVlMmE2ZDE4OTA1MzRkNjFjNGNmYTA3Y2YyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMDMtMjAgIFJvYmVydCBLcm9lZ2VyICA8
cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gbWFrZSB0cmFja3Bh
ZCBnZXN0dXJlIGN1cnZlcyBjb25maWd1cmFibGUgZXh0ZXJuYWxseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2NjMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6
CisgICAgICAgIChXZWJHZXN0dXJlRmxpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdl
c3R1cmVGbGluZ0V2ZW50OjpXZWJHZXN0dXJlRmxpbmdFdmVudCk6IEFkZGVkIG5ldyBzdWItdHlw
ZSB3aXRoIGN1cnZlIHBhcmFtZXRlcnMuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNy
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHA6IFVwZGF0ZWQgZm9yIG5ldyBXZWJH
ZXN0dXJlRmxpbmdFdmVudC4KKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OmhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcpOgorICAgICAg
ICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpnZXN0dXJlRXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Z2VzdHVyZUZsaW5nRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmhhbmRsZUlu
cHV0RXZlbnQpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYlZpZXdJbXBsKToKKyAgICAgICAgKiB0ZXN0cy9XZWJDb21wb3NpdG9y
SW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOgorCiAyMDEyLTAzLTIwICBLZWlzaGkgSGF0dG9yaSAg
PGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFya2luZyBXZWJGcmFt
ZVRlc3QuRGl2QXV0b1pvb21QYXJhbXNUZXN0IGFzIGZhaWxpbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNw
cAppbmRleCA0M2RiZjBhYzZmMWQ5NzEzYTYzYTZmZGYwZWMxNjc2MjE4NTY2YWZlLi5iYWZkZDcz
NDg1ZjJjOWI3N2NiYTZlOTU3NzdkMWFlZmIyZGRhZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5jcHAK
QEAgLTMzLDE0ICszMywxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKLVBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5KQorUGFz
c093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHVuaXRUaW1lU2Nh
bGVWZWxvY2l0eVRocmVzaG9sZCwgZmxvYXQgZmxpbmdMYXVuY2hEdXJhdGlvbikKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSh2ZWxvY2l0
eSkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1
cnZlKHZlbG9jaXR5LCB1bml0VGltZVNjYWxlVmVsb2NpdHlUaHJlc2hvbGQsIGZsaW5nTGF1bmNo
RHVyYXRpb24pKTsKIH0KIAotVG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpUb3VjaEZs
aW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHkpCitUb3Vj
aEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OlRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgdW5pdFRpbWVTY2FsZVZlbG9jaXR5
VGhyZXNob2xkLCBmbG9hdCBmbGluZ0xhdW5jaER1cmF0aW9uKQogICAgIDogbV92ZWxvY2l0eSh2
ZWxvY2l0eSkKLSAgICAsIG1fdGltZVNjYWxlRmFjdG9yKDEwMDAgLyBtYXgoMS5mLCBtYXgoZmFi
cyh2ZWxvY2l0eS54KCkpLCBmYWJzKHZlbG9jaXR5LnkoKSkpKSkKKyAgICAsIG1fZmxpbmdMYXVu
Y2hEdXJhdGlvbihmbGluZ0xhdW5jaER1cmF0aW9uKQorICAgICwgbV90aW1lU2NhbGVGYWN0b3Io
dW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkIC8gbWF4KDEuZiwgbWF4KGZhYnModmVsb2Np
dHkueCgpKSwgZmFicyh2ZWxvY2l0eS55KCkpKSkpCiB7CiAgICAgQVNTRVJUKHZlbG9jaXR5ICE9
IEZsb2F0UG9pbnQ6Onplcm8oKSk7CiB9CkBAIC02MCw4ICs2MSw3IEBAIGJvb2wgVG91Y2hGbGlu
Z1BsYXRmb3JtR2VzdHVyZUN1cnZlOjphcHBseShkb3VibGUgdGltZSwgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnCiAgICAgLy8gYXMgYSBmdW5jdGlvbiBvZiB0aW1lLCBhbmQgbm90IHZlbG9jaXR5
LgogICAgIHRpbWUgKj0gbV90aW1lU2NhbGVGYWN0b3I7CiAKLSAgICBzdGF0aWMgZG91YmxlIHRh
dSA9IDAuMjU7Ci0gICAgc3RhdGljIGRvdWJsZSBwMSA9ICAzLjAgKyAxIC8gdGF1OworICAgIHN0
YXRpYyBkb3VibGUgcDEgPSAgMy4wICsgMSAvIG1fZmxpbmdMYXVuY2hEdXJhdGlvbjsKICAgICAv
LyBOb3RlOiAiZGlzcGxhY2VtZW50IiBiZWxvdyBpcyB0aGUgaW50ZWdyYWwgb2YgdGhlIGN1Ymlj
IGJlemllciBjdXJ2ZSBkZWZpbmVkIGJ5IFtwMCBwMSBwMiBwM10uCiAKICAgICBmbG9hdCBkaXNw
bGFjZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaEZsaW5n
UGxhdGZvcm1HZXN0dXJlQ3VydmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oCmluZGV4IGE3ZTFjZWMxMDFlMDEyYWNlZTJiMWZjMjFk
OWM1MzA2MGExN2MzNGUuLmEzOTNmNzE5MTM1ODYxNWJkNTIwZGUxMGU0YWRlMDIwOTZlZGQwNGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNoRmxpbmdQbGF0
Zm9ybUdlc3R1cmVDdXJ2ZS5oCkBAIC00MCwxNyArNDAsMTkgQEAgY2xhc3MgUGxhdGZvcm1HZXN0
dXJlQ3VydmVUYXJnZXQ7CiAvLyB0aGUgaW5pdGlhbCB2ZWxvY2l0eS4KIGNsYXNzIFRvdWNoRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSA6IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0
ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8UGxh
dGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxv
YXQgdW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkID0gMTAwMCwgZmxvYXQgZmxpbmdMYXVu
Y2hEdXJhdGlvbiA9IC4yNSk7CiAgICAgdmlydHVhbCB+VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoZG91YmxlIG1vbm90b25pY1RpbWUs
IFBsYXRmb3JtR2VzdHVyZUN1cnZlVGFyZ2V0Kik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
VG91Y2hGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKGNvbnN0IEZsb2F0UG9pbnQmIHZlbG9jaXR5
KTsKKyAgICBleHBsaWNpdCBUb3VjaEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUoY29uc3QgRmxv
YXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHVuaXRUaW1lU2NhbGVWZWxvY2l0eVRocmVzaG9sZCwg
ZmxvYXQgZmxpbmdMYXVuY2hEdXJhdGlvbik7CiAKICAgICBGbG9hdFBvaW50IG1fdmVsb2NpdHk7
CisgICAgZG91YmxlIG1fZmxpbmdMYXVuY2hEdXJhdGlvbjsKICAgICBmbG9hdCBtX3RpbWVTY2Fs
ZUZhY3RvcjsKICAgICBJbnRQb2ludCBtX2N1bXVsYXRpdmVTY3JvbGw7CisKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RXZlbnQuaAppbmRleCAzOGZmZmI4OGY0ZTNjZDIyNjQwZDRkNjM0OWM0Njk2MTE4MDljNmZi
Li45M2Q4MWVlOGU4NjgxZGYzNzNiMWUyMWYwMDc5MzcyZjkyODYxMGIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCkBAIC0zNzIsNiArMzcyLDIw
IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCitjbGFzcyBXZWJHZXN0dXJlRmxpbmdFdmVudCA6IHB1
YmxpYyBXZWJHZXN0dXJlRXZlbnQgeworcHVibGljOgorICAgIC8vIFBhcmFtZXRlcnMgY29udHJv
bGxpbmcgdGhlIHNoYXBlIG9mIGEgdG91Y2hwYWQgZmxpbmcgY3VydmUuCisgICAgZmxvYXQgdW5p
dFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkOworICAgIGZsb2F0IGZsaW5nTGF1bmNoRHVyYXRp
b247CisKKyAgICBXZWJHZXN0dXJlRmxpbmdFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXpl
b2YoV2ViR2VzdHVyZUZsaW5nRXZlbnQpKQorICAgICAgICA6IFdlYkdlc3R1cmVFdmVudChzaXpl
UGFyYW0pCisgICAgICAgICwgdW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkKDAuMGYpCisg
ICAgICAgICwgZmxpbmdMYXVuY2hEdXJhdGlvbigwLjBmKQorICAgIHsKKyAgICB9Cit9OworCiAv
LyBXZWJUb3VjaEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFdlYlRvdWNoRXZlbnQgOiBwdWJsaWMgV2Vi
SW5wdXRFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5kZXggYTRjYzcxODJjZGI5Mjcx
MzBhYmYwYTMwYzg2OWEwYTY1NDcyMDBkOC4uYjVlMjI0YmYxOTdiZDljMTQyNzJkMjQ5ODJjOTAz
Nzc5MzljYzA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApAQCAtMjQzLDggKzI0Myw4IEBA
IFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5w
aW5jaEdlc3R1cmVVcGRhdGUoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgSW50UG9pbnQoZ2VzdHVyZUV2
ZW50LngsIGdlc3R1cmVFdmVudC55KSk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAg
fSBlbHNlIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
KSB7Ci0gICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIHJldHVybiBo
YW5kbGVHZXN0dXJlRmxpbmcoZ2VzdHVyZUV2ZW50KTsKKyAgICAgICAgY29uc3QgV2ViR2VzdHVy
ZUZsaW5nRXZlbnQmIGdlc3R1cmVGbGluZ0V2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdl
c3R1cmVGbGluZ0V2ZW50Kj4oJmV2ZW50KTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1cmVG
bGluZyhnZXN0dXJlRmxpbmdFdmVudCk7CiAgICAgfSBlbHNlIGlmIChldmVudC50eXBlID09IFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbCkgewogICAgICAgICBpZiAoY2FuY2VsQ3Vy
cmVudEZsaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwpAQCAtMjUzLDE1ICsy
NTMsMTUgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24g
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICByZXR1cm4gRGlkTm90SGFuZGxl
OwogfQogCi1XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBX
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nKGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQorV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRs
ZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRmxpbmdFdmVudCYgZ2VzdHVyZUZsaW5nRXZl
bnQpCiB7Ci0gICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxTdGF0
dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoZ2VzdHVyZUV2
ZW50LngsIGdlc3R1cmVFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6Okdlc3R1cmUpOwor
ICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9p
bnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2luKEludFBvaW50KGdlc3R1cmVGbGluZ0V2ZW50
LngsIGdlc3R1cmVGbGluZ0V2ZW50LnkpLCBDQ0lucHV0SGFuZGxlckNsaWVudDo6R2VzdHVyZSk7
CiAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICBjYXNlIENDSW5wdXRIYW5kbGVyQ2xp
ZW50OjpTY3JvbGxTdGFydGVkOiB7CiAgICAgICAgIFRSQUNFX0VWRU5UX0lOU1RBTlQwKCJjYyIs
ICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2VzdHVyZUZsaW5nOjpzdGFy
dGVkIik7Ci0gICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9
IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoLWdlc3R1
cmVFdmVudC5kZWx0YVgsIC1nZXN0dXJlRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIE93blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoLWdlc3R1cmVGbGluZ0V2ZW50LmRlbHRhWCwgLWdl
c3R1cmVGbGluZ0V2ZW50LmRlbHRhWSksIGdlc3R1cmVGbGluZ0V2ZW50LnVuaXRUaW1lU2NhbGVW
ZWxvY2l0eVRocmVzaG9sZCwgZ2VzdHVyZUZsaW5nRXZlbnQuZmxpbmdMYXVuY2hEdXJhdGlvbik7
CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlv
bjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5n
Q3VydmUucmVsZWFzZSgpKSwgdGhpcyk7Ci0gICAgICAgIG1fd2hlZWxGbGluZ1BvaW50ID0gSW50
UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKKyAgICAgICAgbV93aGVlbEZs
aW5nUG9pbnQgPSBJbnRQb2ludChnZXN0dXJlRmxpbmdFdmVudC54LCBnZXN0dXJlRmxpbmdFdmVu
dC55KTsKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjaGVkdWxlQW5pbWF0aW9uKCk7
CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKaW5k
ZXggYzlmZjVlMzUxMTkxNTRiN2FhZDhmZDJkYTRhZTZlM2Q0ODc1MGY2NC4uYTRiYzc1YTRjZjBi
NjU2OTM2Y2E3NjEwN2IyNzA4MGNiZGQ0ZTNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oCkBAIC03
Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgLy8gYW55IGNhbGxzIG91dCB0byB0aGUgV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckNsaWVudC4gU29tZSBpbnB1dCB0eXBlcyBkZWZlciB0byBoZWxw
ZXJzLgogICAgIEV2ZW50RGlzcG9zaXRpb24gaGFuZGxlSW5wdXRFdmVudEludGVybmFsKGNvbnN0
IFdlYklucHV0RXZlbnQmKTsKIAotICAgIEV2ZW50RGlzcG9zaXRpb24gaGFuZGxlR2VzdHVyZUZs
aW5nKGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIEV2ZW50RGlzcG9zaXRpb24gaGFuZGxl
R2VzdHVyZUZsaW5nKGNvbnN0IFdlYkdlc3R1cmVGbGluZ0V2ZW50Jik7CiAKICAgICAvLyBSZXR1
cm5zIHRydWUgaWYgd2UgYWN0dWFsbHkgaGFkIGFuIGFjdGl2ZSBmbGluZyB0byBjYW5jZWwuCiAg
ICAgYm9vbCBjYW5jZWxDdXJyZW50RmxpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAppbmRleCAxMWFlZWJhNzUxOWQ3YTFiOWE4NmU4MjdjYTdiNmNhYzNh
ZTU2Zjg3Li5hZWJiMTkxYjU5ZjdjY2UzNmE3NWVjZTQ3YzBmMTNlODgwMDA5NTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MjksMTUgKzYyOSw2
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNjcm9sbEJ5KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBk
ZWx0YSkKIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZl
bnQmIGV2ZW50KQogewogICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewotICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6IHsKLSAgICAgICAgbV9sYXN0V2hlZWxQb3NpdGlv
biA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50LnkpOwotICAgICAgICBtX2xhc3RXaGVlbEdsb2Jh
bFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZlbnQuZ2xvYmFsWSk7Ci0gICAg
ICAgIG1fZmxpbmdNb2RpZmllciA9IGV2ZW50Lm1vZGlmaWVyczsKLSAgICAgICAgLy8gRklYTUU6
IE1ha2UgdGhlIGN1cnZlIHBhcmFtZXRyaXphYmxlIGZyb20gdGhlIGJyb3dzZXIuCi0gICAgICAg
IG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3Jl
YXRlKFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZl
bnQuZGVsdGFYLCBldmVudC5kZWx0YVkpKSwgdGhpcyk7Ci0gICAgICAgIHNjaGVkdWxlQW5pbWF0
aW9uKCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KICAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKICAgICAgICAgaWYgKG1fZ2VzdHVyZUFuaW1hdGlvbikg
ewogICAgICAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uLmNsZWFyKCk7CkBAIC02NjIsNiArNjUz
LDE2IEBAIGJvb2wgV2ViVmlld0ltcGw6Omdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZl
bnQmIGV2ZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6Z2Vz
dHVyZUZsaW5nRXZlbnQoY29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQmIGV2ZW50KQoreworICAg
IG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKKyAgICBt
X2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQuZ2xvYmFsWCwgZXZlbnQu
Z2xvYmFsWSk7CisgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9kaWZpZXJzOworICAgIG1f
Z2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRl
KFRvdWNoRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQu
ZGVsdGFYLCBldmVudC5kZWx0YVkpLCBldmVudC51bml0VGltZVNjYWxlVmVsb2NpdHlUaHJlc2hv
bGQsIGV2ZW50LmZsaW5nTGF1bmNoRHVyYXRpb24pLCB0aGlzKTsKKyAgICBzY2hlZHVsZUFuaW1h
dGlvbigpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzdGFydFBh
Z2VTY2FsZUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYgc2Nyb2xsLCBib29sIHVzZUFuY2hvciwg
ZmxvYXQgbmV3U2NhbGUsIGRvdWJsZSBkdXJhdGlvblNlYykKIHsKICAgICBpZiAoIW1fbGF5ZXJU
cmVlVmlldy5pc051bGwoKSkKQEAgLTE2MTQsMTMgKzE2MTUsMTUgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAg
IGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOgogICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVTY3JvbGxVcGRhdGU6Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFy
dDoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDoKICAgICBjYXNl
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlVGFwRG93bjoKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVEb3VibGVUYXA6CiAg
ICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRXZlbnQoKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1
cmVFdmVudCo+KCZpbnB1dEV2ZW50KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ6CisgICAgICAgIGhhbmRsZWQgPSBnZXN0dXJlRmxp
bmdFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQqPigmaW5wdXRF
dmVudCkpOworICAgICAgICBicmVhazsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDIyOTM4YWQ2
YmQ2YzQ5NzVmNzRmZTM3ZTQxNTQ4N2ZlZWNhMTIxNWIuLmFhZjExZTI0N2E5NWUwZjg1NjM5Mjk3
MzEyZWRmOWVjMjEzMTVlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtOTIsNiArOTIsNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50Q2xpZW50OwogY2xh
c3MgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGU7CiBjbGFzcyBXZWJGcmFtZUltcGw7CiBjbGFzcyBX
ZWJHZXN0dXJlRXZlbnQ7CitjbGFzcyBXZWJHZXN0dXJlRmxpbmdFdmVudDsKIGNsYXNzIFdlYklt
YWdlOwogY2xhc3MgV2ViS2V5Ym9hcmRFdmVudDsKIGNsYXNzIFdlYk1vdXNlRXZlbnQ7CkBAIC0z
MjgsNiArMzI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgbW91c2VEb3VibGVDbGljayhjb25zdCBX
ZWJNb3VzZUV2ZW50Jik7CiAgICAgYm9vbCBtb3VzZVdoZWVsKGNvbnN0IFdlYk1vdXNlV2hlZWxF
dmVudCYpOwogICAgIGJvb2wgZ2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwor
ICAgIGJvb2wgZ2VzdHVyZUZsaW5nRXZlbnQoY29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQmKTsK
ICAgICB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiB0YXJnZXRQb3NpdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1NjYWxlLCBkb3VibGUg
ZHVyYXRpb25TZWMpOwogICAgIGJvb2wga2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYp
OwogICAgIGJvb2wgY2hhckV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCBmYTgyNDdiMTEwYzA3ZWIxNTdmZDU0NDkw
MjY0OWUxZGI1MGYwZDA2Li5jM2I2MTllM2JmZWYwYjU4ZjE2Y2IxNTgzZWU2MDAzNzUzMGE0ZDhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0xNjAsNiArMTYwLDcg
QEAgcHJvdGVjdGVkOgogICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4g
bV9pbnB1dEhhbmRsZXI7CiAgICAgTW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQg
bV9tb2NrQ2xpZW50OwogICAgIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGdlc3R1cmU7CisgICAg
V2ViS2l0OjpXZWJHZXN0dXJlRmxpbmdFdmVudCBmbGluZzsKIAogICAgIGVudW0gRXhwZWN0ZWRE
aXNwb3NpdGlvbiB7IERpZEhhbmRsZSwgRGlkTm90SGFuZGxlLCBEcm9wRXZlbnQgfTsKICAgICBF
eHBlY3RlZERpc3Bvc2l0aW9uIG1fZXhwZWN0ZWREaXNwb3NpdGlvbjsKQEAgLTI4MSwxMCArMjgy
LDEzIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVG
bGluZ1N0YXJ0ZWQpCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQs
IHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2Uo
dGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFy
dGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJLaXQ6OldlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ1N0YXJ0OwotICAgIGdlc3R1cmUuZGVsdGFYID0gMTA7CisgICAgZmxpbmcudHlwZSA9
IFdlYktpdDo6V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmcuZGVs
dGFYID0gMTA7CisgICAgZmxpbmcudW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkID0gMTAw
MDsKKyAgICBmbGluZy5mbGluZ0xhdW5jaER1cmF0aW9uID0gLjI1OworCiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAg
IG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGZsaW5nKTsKIAogICAgIHZlcmlmeUFuZFJlc2V0TW9j
a3MoKTsKIApAQCAtMzAyLDggKzMwNiw4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6Xykp
CiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRs
ZXJDbGllbnQ6OlNjcm9sbEZhaWxlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFu
ZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBmbGluZy50eXBlID0gV2ViS2l0OjpXZWJJbnB1
dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5w
dXRFdmVudChmbGluZyk7CiAKICAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CiAKQEAgLTMyMCw4
ICszMjQsOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0
dXJlRmxpbmdJZ25vcmVkKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xp
ZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxP
bmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xs
SWdub3JlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlRmxpbmdTdGFydDsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChn
ZXN0dXJlKTsKKyAgICBmbGluZy50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7
CiAKICAgICB2ZXJpZnlBbmRSZXNldE1vY2tzKCk7CiAKQEAgLTMzOCwxMiArMzQyLDE0IEBAIFRF
U1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1h
dGVzKQogCiAgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4g
YW5pbWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCi0gICAg
Z2VzdHVyZS50eXBlID0gV2ViS2l0OjpXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsK
LSAgICBnZXN0dXJlLmRlbHRhWCA9IC0xMDAwOworICAgIGZsaW5nLnR5cGUgPSBXZWJLaXQ6Oldl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGZsaW5nLmRlbHRhWCA9IC0xMDAw
OworICAgIGZsaW5nLnVuaXRUaW1lU2NhbGVWZWxvY2l0eVRocmVzaG9sZCA9IDEwMDA7CisgICAg
ZmxpbmcuZmxpbmdMYXVuY2hEdXJhdGlvbiA9IC4yNTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tD
Q0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRl
c3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXIt
PmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlu
cHV0RXZlbnQoZmxpbmcpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBl
Y3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKICAgICAvLyBUaGUgZmlyc3Qg
YW5pbWF0ZSBjYWxsIHNob3VsZCBsZXQgdXMgcGljayB1cCBhbiBhbmltYXRpb24gc3RhcnQgdGlt
ZSwgYnV0IHdlCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZDkzZmY5MzEwOWY0ZmU4MmRjMTMzZGY2MjY5YTVlM2FmODcxNmZlMi4uMmQ4MDE4N2Ix
NGUxYzlhZDZkZWU5MGRlNmZjMWQwYmIxNGViMGE3NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAzLTIwICBS
b2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChFdmVudFNlbmRlcjo6
Z2VzdHVyZUZsaW5nU3RhcnQpOiBBZGRlZCBhZGRpdGlvbmFsIGRlZmF1bHQgY3VydmUgcGFyYW1l
dGVycy4KKwogMjAxMi0wMy0yMCAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW0Nocm9taXVtXSBVcGRhdGUgdG8gQW5kcm9pZCBOREsgcjdiCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5kZXggMmQ5MmI0ZTZj
ZTgwNmNhZWEyZDQxYWNjMDkzMzg2YWI1N2Q0YWU0MC4uYTI1ZGNlMWNlNTIxNTBlYjZlZjUzMWVj
NzRlMzc0OGZmZDVmMjljYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcApAQCAtMTE2NiwxNiArMTE2NiwyNiBAQCB2b2lkIEV2ZW50U2VuZGVyOjpn
ZXN0dXJlRmxpbmdTdGFydChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFy
aWFudAogICAgICAgICBpZiAoIWFyZ3VtZW50c1tpXS5pc051bWJlcigpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIFdlYkdlc3R1cmVGbGlu
Z0V2ZW50IGV2ZW50OwogICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxp
bmdTdGFydDsKIAogICAgIGV2ZW50LnggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzBd
LnRvRG91YmxlKCkpOwogICAgIGV2ZW50LnkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRz
WzFdLnRvRG91YmxlKCkpOwogICAgIGV2ZW50Lmdsb2JhbFggPSBldmVudC54OwogICAgIGV2ZW50
Lmdsb2JhbFkgPSBldmVudC55OwotCiAgICAgZXZlbnQuZGVsdGFYID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKICAgICBldmVudC5kZWx0YVkgPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworCisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPj0gNSAmJiBhcmd1bWVudHNbNF0uaXNOdW1iZXIoKSkKKyAgICAgICAgZXZlbnQu
dW5pdFRpbWVTY2FsZVZlbG9jaXR5VGhyZXNob2xkID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3Vt
ZW50c1s0XS50b0RvdWJsZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGV2ZW50LnVuaXRUaW1lU2Nh
bGVWZWxvY2l0eVRocmVzaG9sZCA9IDEwMDA7CisKKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+
PSA2ICYmIGFyZ3VtZW50c1s1XS5pc051bWJlcigpKQorICAgICAgICBldmVudC5mbGluZ0xhdW5j
aER1cmF0aW9uID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1s1XS50b0RvdWJsZSgpKTsK
KyAgICBlbHNlCisgICAgICAgIGV2ZW50LmZsaW5nTGF1bmNoRHVyYXRpb24gPSAuMjU7CisKICAg
ICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0gZ2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwogICAg
IHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVudChldmVudCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137162</attachid>
            <date>2012-04-13 15:22:14 -0700</date>
            <delta_ts>2012-04-25 14:28:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120413182213.patch</filename>
            <type>text/plain</type>
            <size>23896</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MDQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUzZjhkOTUwZWMyZjgz
ODY3YmM5ZTE5MzFhZmEzYTZlNGFmNzdhZC4uZjU2NDRmMWFlYTJlNDZkZmVlZjk4NTNiMjZmZWE4
NmJlNjIwNDQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTEzICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
b3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZSk6IE5ldyBjb25zdHJ1Y3RvciB0YWtlcyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAq
IHBsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKwogMjAxMi0wNC0xMiAgQmFsYXpz
IEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBGaXggV2ViS2l0
MSBidWlsZCB3aXRoIFY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGUxYjNhNTUzZWIx
YjI5OTk3NTgwZDEzMzg4ODlmY2E2MzdhY2Y4NjEuLjgwZmVlMWNjZmFmYWEzZDgyYzQwOTFmZTNi
YTU4Mjk4ZDVhODk3NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAg
QEAKKzIwMTItMDQtMTMgIFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gbWFrZSB0cmFja3BhZCBnZXN0dXJlIGN1cnZlcyBjb25maWd1
cmFibGUgZXh0ZXJuYWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODE2NjMKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOgorICAgICAg
ICAoV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMpOiBBZGRlZCBmbGluZyBwYXJhbWV0ZXJz
LgorICAgICAgICAqIHB1YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJHZXN0dXJl
RmxpbmdFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVGbGluZ0V2ZW50OjpXZWJH
ZXN0dXJlRmxpbmdFdmVudCk6IEFkZGVkIG5ldyBXZWJHZXN0dXJlRXZlbnQKKyAgICAgICAgc3Vi
Y2xhc3MgdGhhdCBjb250YWlucyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVu
dEludGVybmFsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmhhbmRsZUdlc3R1cmVGbGluZyk6IEFkZCBzdXBwb3J0IGZvciBvcHRpb25hbAorICAgICAg
ICBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5k
bGVySW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAg
KiB0ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOiBVcGRhdGVkIHRl
c3RzIGZvciBjb25maWd1cmFibGUKKyAgICAgICAgcGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6
CisKIDIwMTItMDQtMTIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gRW5hYmxlIElOUFVUX1RZUEVfREFURQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZS5jcHAKaW5kZXggNWY5YmFjZGEyZmMwMWQyNzI1ZDE5ODRjZTFkNzZjODJlMWVmMjZmYi4uOGIx
ODdkNDAxNDUzYjg4ZDQ4ZWYwYWI0ODc4NmVhM2UyNzVlZjAyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJl
Q3VydmUuY3BwCkBAIC01MywxMCArNTMsMjUgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogY29u
c3QgaW50IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6bV9tYXhTZWFyY2hJdGVy
YXRpb25zID0gMjA7CiAKK25hbWVzcGFjZSB7CisvLyBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGxp
c3RlZCBiZWxvdyBhcmUgYSBtYXRjaGVkIHNldCwgYW5kIHNob3VsZCBub3QgYmUgY2hhbmdlZCBp
bmRlcGVuZGVudGx5IG9mIG9uZSBhbm90aGVyLgorY29uc3QgZmxvYXQgZGVmYXVsdEVtcGlyY2Fs
UGFyYW1ldGVyc1tdID0gezEuNTM5NWUrMDEsIDIuMDQ2NmUrMDQsIC0yLjk4OTllKzA0LCAyLjA1
NzdlKzA0LCAtNS40OTY2ZSswMywgMS4xMjg0NDV9OworfQorCiBQYXNzT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShj
b25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKIHsK
LSAgICAvLyBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIGxpc3RlZCBiZWxvdyBhcmUgYSBtYXRjaGVk
IHNldCwgYW5kIHNob3VsZCBub3QgYmUgY2hhbmdlZCBpbmRlcGVuZGVudGx5IG9mIG9uZSBhbm90
aGVyLgotICAgIHJldHVybiBjcmVhdGUodmVsb2NpdHksIDEuNTM5NWUrMDEsIDIuMDQ2NmUrMDQs
IC0yLjk4OTllKzA0LCAyLjA1NzdlKzA0LCAtNS40OTY2ZSswMywgMS4xMjg0NDUsIGN1bXVsYXRp
dmVTY3JvbGwpOworICAgIGNvbnN0IGZsb2F0ICpwID0gZGVmYXVsdEVtcGlyY2FsUGFyYW1ldGVy
czsKKyAgICByZXR1cm4gY3JlYXRlKHZlbG9jaXR5LCBwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBw
WzRdLCBwWzVdLCBjdW11bGF0aXZlU2Nyb2xsKTsKK30KKworUGFzc093blB0cjxQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZT4gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29u
c3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0KiBwcm92aWRlZCwgSW50UG9pbnQg
Y3VtdWxhdGl2ZVNjcm9sbCkKK3sKKyAgICBmbG9hdCBwW3NpemVvZihkZWZhdWx0RW1waXJjYWxQ
YXJhbWV0ZXJzKSAvIHNpemVvZihmbG9hdCldOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemVvZihkZWZhdWx0RW1waXJjYWxQYXJhbWV0ZXJzKSAvIHNpemVvZihmbG9hdCk7IGkr
KykKKyAgICAgICAgcFtpXSA9IHByb3ZpZGVkICYmICFpc25hbihwcm92aWRlZFtpXSkgPyBwcm92
aWRlZFtpXSA6IGRlZmF1bHRFbXBpcmNhbFBhcmFtZXRlcnNbaV07CisgICAgICAgIAorICAgIHJl
dHVybiBjcmVhdGUodmVsb2NpdHksIHBbMF0sIHBbMV0sIHBbMl0sIHBbM10sIHBbNF0sIHBbNV0s
IGN1bXVsYXRpdmVTY3JvbGwpOwogfQogCiBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZl
PiBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBv
aW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAsIGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgcDMsIGZs
b2F0IHA0LCBmbG9hdCBjdXJ2ZUR1cmF0aW9uLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3Jt
R2VzdHVyZUN1cnZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUuaAppbmRleCA0NmIwYWE1YjZiOTAzOGQwYTMyMWQ2MzBkOGM0MmYy
MjkzZmU0ZDQ2Li43ZDZjZDQxNjk4MDllMjA4MjY3NzdkMzQ0MDNjMGM1NzhlNWZiZGZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmUuaApAQCAtNDEsNiArNDEsNyBAQCBjbGFzcyBQbGF0Zm9ybUdlc3R1
cmVDdXJ2ZVRhcmdldDsKIGNsYXNzIFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSA6
IHB1YmxpYyBQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxv
Y2l0eSwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IEludFBvaW50KCkpOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIGNvbnN0IGZsb2F0KiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCA9IElu
dFBvaW50KCkpOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBj
cmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxv
YXQgcDIsIGZsb2F0IHAzLCBmbG9hdCBwNCwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQg
Y3VtdWxhdGl2ZVNjcm9sbCA9IEludFBvaW50KCkpOwogICAgIHZpcnR1YWwgflRvdWNocGFkRmxp
bmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMuaAppbmRl
eCBlZjI3N2Q1ZmQ0YzY3ZGYxYTI0MWZhNmFhMmNiMjVjYTQ5NjRhYjRjLi44YTZiNDYwMjllMzRh
MDc5ZmQ2NjQyMjcwYWJhNGRhZDdlZDEzM2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzLmgK
QEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnNf
aAogI2RlZmluZSBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyc19oCiAKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCi0KICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViUG9p
bnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTaXplLmgiCkBAIC00MSw2ICs0MSw3IEBAIHN0
cnVjdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyB7CiAgICAgaW50IG1vZGlmaWVyczsK
ICAgICBXZWJTaXplIGN1bXVsYXRpdmVTY3JvbGw7CiAgICAgZG91YmxlIHN0YXJ0VGltZTsKKyAg
ICBmbG9hdCBmbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xbV2ViS2l0OjpXZWJHZXN0dXJlRmxpbmdF
dmVudDo6TnVtYmVyT2ZHZXN0dXJlRmxpbmdQYXJhbWV0ZXJzXTsKIAogICAgIFdlYkFjdGl2ZVdo
ZWVsRmxpbmdQYXJhbWV0ZXJzKCkKICAgICAgICAgOiBtb2RpZmllcnMoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCA3YmM3NmI1YmQyYWI0
OTdiY2RkNDc2NDUwNGE4NmI2NmM2Y2ExN2YxLi5jYjU3YmU2MjI2MWIxZjk5NmE4Mzc1MDg0YTVi
MTdiYjk4OGI2ZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCkBAIC0zNzUsNiArMzc1LDIyIEBAIHB1YmxpYzoKICAgICB9CiB9OwogCitjbGFz
cyBXZWJHZXN0dXJlRmxpbmdFdmVudCA6IHB1YmxpYyBXZWJHZXN0dXJlRXZlbnQgeworcHVibGlj
OgorICAgIGVudW0gU2l6ZSB7IE51bWJlck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVycyA9IDYgfTsK
KworICAgIC8vIFBhcmFtZXRlcnMgY29udHJvbGxpbmcgdGhlIHNoYXBlIG9mIGEgdG91Y2hwYWQg
ZmxpbmcgY3VydmUuCisgICAgZmxvYXQgZmxpbmdBY2NlbGVyYXRpb25Db250cm9sW051bWJlck9m
R2VzdHVyZUZsaW5nUGFyYW1ldGVyc107CisKKyAgICBXZWJHZXN0dXJlRmxpbmdFdmVudCh1bnNp
Z25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViR2VzdHVyZUZsaW5nRXZlbnQpKQorICAgICAgICA6
IFdlYkdlc3R1cmVFdmVudChzaXplUGFyYW0pCisgICAgeworICAgICAgICBjb25zdCBmbG9hdCBO
YU4gPSAwLjBmIC8gMC4wZjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE51bWJl
ck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVyczsgaSsrKQorICAgICAgICAgICAgZmxpbmdBY2NlbGVy
YXRpb25Db250cm9sW2ldID0gTmFOOworICAgIH0KK307CisKIC8vIFdlYlRvdWNoRXZlbnQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogY2xhc3MgV2ViVG91Y2hFdmVudCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4ZTBjNjEzYTQyYTM5NjY3ZWE2M2U2NWU5MjVhMjJhN2Ez
NGIxNDlkLi40ZTk0YWU4NGY2NDg3ZGQxNjBmMGZhNTRiY2ZiNjI4M2YyMGJhMDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklu
cHV0SGFuZGxlckltcGwuY3BwCkBAIC0yNTEsOCArMjUxLDEwIEBAIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpoCiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5waW5jaEdlc3R1cmVVcGRhdGUo
Z2VzdHVyZUV2ZW50LmRlbHRhWCwgSW50UG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVu
dC55KSk7CiAgICAgICAgIHJldHVybiBEaWRIYW5kbGU7CiAgICAgfSBlbHNlIGlmIChldmVudC50
eXBlID09IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0KSB7Ci0gICAgICAgIGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdl
c3R1cmVFdmVudCo+KCZldmVudCk7Ci0gICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRmxpbmco
Z2VzdHVyZUV2ZW50KTsKKyAgICAgICAgY29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQmIGdlc3R1
cmVGbGluZ0V2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYkdlc3R1cmVGbGluZ0V2ZW50Kj4o
JmV2ZW50KTsKKyAgICAgICAgaWYgKGV2ZW50LnNpemUgPT0gc2l6ZW9mKFdlYkdlc3R1cmVGbGlu
Z0V2ZW50KSkKKyAgICAgICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRmxpbmcoZ2VzdHVyZUZs
aW5nRXZlbnQsIGdlc3R1cmVGbGluZ0V2ZW50LmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbCk7Cisg
ICAgICAgIHJldHVybiBoYW5kbGVHZXN0dXJlRmxpbmcoZ2VzdHVyZUZsaW5nRXZlbnQsIDApOwog
ICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdD
YW5jZWwpIHsKICAgICAgICAgaWYgKGNhbmNlbEN1cnJlbnRGbGluZygpKQogICAgICAgICAgICAg
cmV0dXJuIERpZEhhbmRsZTsKQEAgLTI2MywxOCArMjY1LDI0IEBAIFdlYkNvbXBvc2l0b3JJbnB1
dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJ
bXBsOjpoCiAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsKIH0KIAotV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlcklt
cGw6OmhhbmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCkKK1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcoY29uc3QgV2ViR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQsIGNvbnN0IGZsb2F0KiBmbGluZ0FjY2VsZXJhdGlvbkNv
bnRyb2wpCiB7CiAgICAgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXR1cyBzY3JvbGxT
dGF0dXMgPSBtX2lucHV0SGFuZGxlckNsaWVudC0+c2Nyb2xsQmVnaW4oSW50UG9pbnQoZ2VzdHVy
ZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KSwgQ0NJbnB1dEhhbmRsZXJDbGllbnQ6OldoZWVsKTsK
ICAgICBzd2l0Y2ggKHNjcm9sbFN0YXR1cykgewogICAgIGNhc2UgQ0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbFN0YXJ0ZWQ6IHsKICAgICAgICAgVFJBQ0VfRVZFTlRfSU5TVEFOVDAoImNjIiwg
IldlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmc6OnN0YXJ0
ZWQiKTsKLSAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlID0g
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChnZXN0
dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKSk7CisgICAgICAgIE93blB0cjxQ
bGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2ZTsKKyAgICAgICAgaWYgKGZsaW5nQWNjZWxl
cmF0aW9uQ29udHJvbCkKKyAgICAgICAgICAgIGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxh
dGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgs
IGdlc3R1cmVFdmVudC5kZWx0YVkpLCBmbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2wpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmbGluZ0N1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2Vz
dHVyZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJl
RXZlbnQuZGVsdGFZKSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ0FuaW1hdGlvbiA9IENDQWN0aXZl
R2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2VzdHVyZVRvQ0NHZXN0dXJlQWRhcHRl
cjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhpcyk7CiAgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMuZGVsdGEgPSBXZWJGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgs
IGdlc3R1cmVFdmVudC5kZWx0YVkpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLnBv
aW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1cmVFdmVudC55KTsKICAgICAgICAg
bV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludCA9IFdlYlBvaW50KGdlc3R1cmVFdmVu
dC5nbG9iYWxYLCBnZXN0dXJlRXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1Bh
cmFtZXRlcnMubW9kaWZpZXJzID0gZ2VzdHVyZUV2ZW50Lm1vZGlmaWVyczsKKyAgICAgICAgaWYg
KGZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbCkKKyAgICAgICAgICAgICBtZW1jcHkobV93aGVlbEZs
aW5nUGFyYW1ldGVycy5mbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2wsIGZsaW5nQWNjZWxlcmF0aW9u
Q29udHJvbCwgc2l6ZW9mKG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZmxpbmdBY2NlbGVyYXRpb25D
b250cm9sKSk7CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY2hlZHVsZUFuaW1hdGlv
bigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5o
CmluZGV4IDY0NjQ3MTA1YjAzYzcyZGRjNzZiOThmZTk5OGUyOGJjZTdmMjdkMzcuLjQzYTA4NzA2
ZWU4Y2YyYmI3YjBlOGVhYTIzZjA1ODQzMDA3MmRhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuaApA
QCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIC8vIGFueSBjYWxscyBvdXQgdG8gdGhlIFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuIFNvbWUgaW5wdXQgdHlwZXMgZGVmZXIgdG8g
aGVscGVycy4KICAgICBFdmVudERpc3Bvc2l0aW9uIGhhbmRsZUlucHV0RXZlbnRJbnRlcm5hbChj
b25zdCBXZWJJbnB1dEV2ZW50Jik7CiAKLSAgICBFdmVudERpc3Bvc2l0aW9uIGhhbmRsZUdlc3R1
cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICBFdmVudERpc3Bvc2l0aW9uIGhh
bmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmLCBjb25zdCBmbG9hdCogZmxp
bmdBY2NlbGVyYXRpb25Db250cm9sKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBhY3R1
YWxseSBoYWQgYW4gYWN0aXZlIGZsaW5nIHRvIGNhbmNlbC4KICAgICBib29sIGNhbmNlbEN1cnJl
bnRGbGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmlu
ZGV4IGNiZGViYjRlNGQwMGUxYzUyYzBjZjA1N2Y1N2U4OGYwYzkzZWYzZGUuLjY5NDM3ODNjNjJj
NDI4MTVlMjBhNmQ2N2I1OTJjNTM0OTg5ZjAzNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTYzNCw4ICs2MzQsMTMgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQpCiAgICAg
ICAgIG1fbGFzdFdoZWVsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC54LCBldmVudC55KTsKICAg
ICAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50Lmdsb2JhbFgs
IGV2ZW50Lmdsb2JhbFkpOwogICAgICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBldmVudC5tb2RpZmll
cnM7Ci0gICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjdXJ2ZSBwYXJhbWV0cml6YWJsZSBmcm9t
IHRoZSBicm93c2VyLgotICAgICAgICBtX2dlc3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9y
bUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3Vy
dmU6OmNyZWF0ZShGbG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSksIHRoaXMp
OworICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmU7CisgICAg
ICAgIGlmIChldmVudC5zaXplID09IHNpemVvZihXZWJHZXN0dXJlRmxpbmdFdmVudCkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVGbGluZ0V2ZW50JiBmbGluZ0V2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVGbGluZ0V2ZW50Kj4oJmV2ZW50KTsKKyAgICAgICAgICAg
IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSwgZmxpbmdFdmVudC5mbGluZ0Fj
Y2VsZXJhdGlvbkNvbnRyb2wpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGZsaW5nQ3Vy
dmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBvaW50
KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSk7CisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlv
biA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVs
ZWFzZSgpLCB0aGlzKTsKICAgICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNjg2LDcgKzY5MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnRy
YW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyCiAgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMucG9pbnQ7CiAgICAgbV9s
YXN0V2hlZWxHbG9iYWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMuZ2xvYmFsUG9pbnQ7CiAgICAgbV9m
bGluZ01vZGlmaWVyID0gcGFyYW1ldGVycy5tb2RpZmllcnM7Ci0gICAgT3duUHRyPFBsYXRmb3Jt
R2VzdHVyZUN1cnZlPiBjdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6
Y3JlYXRlKHBhcmFtZXRlcnMuZGVsdGEsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNj
cm9sbCkpOworICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShwYXJhbWV0ZXJzLmRlbHRhLCBwYXJh
bWV0ZXJzLmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbCwgSW50UG9pbnQocGFyYW1ldGVycy5jdW11
bGF0aXZlU2Nyb2xsKSk7CiAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1H
ZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUucmVsZWFzZSgpLCB0aGlzLCBwYXJhbWV0ZXJz
LnN0YXJ0VGltZSk7CiAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0
SGFuZGxlckltcGxUZXN0LmNwcAppbmRleCA5MmYwMDYxODQxNDc5NTZlMTAxOWZjNjkwMTVmNjM5
ZTQ4OTRmMzMxLi5hMjczMmI2MWM5ZWQzYjQxNDdkNzg5Nzg5YWQ5YzI1ZmU0MDE4MWNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCkBAIC0xNjYsNiArMTY2LDcgQEAgcHJv
dGVjdGVkOgogICAgIE93blB0cjxXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbD4gbV9pbnB1
dEhhbmRsZXI7CiAgICAgTW9ja1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQgbV9tb2Nr
Q2xpZW50OwogICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlOworICAgIFdlYkdlc3R1cmVGbGlu
Z0V2ZW50IGZsaW5nOwogCiAgICAgZW51bSBFeHBlY3RlZERpc3Bvc2l0aW9uIHsgRGlkSGFuZGxl
LCBEaWROb3RIYW5kbGUsIERyb3BFdmVudCB9OwogICAgIEV4cGVjdGVkRGlzcG9zaXRpb24gbV9l
eHBlY3RlZERpc3Bvc2l0aW9uOwpAQCAtMjg3LDEwICsyODgsMTEgQEAgVEVTVF9GKFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nU3RhcnRlZCkKICAgICBFWFBF
Q1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6
XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29y
ZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKIAotICAgIGdlc3R1cmUu
dHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIGdlc3R1cmUuZGVs
dGFYID0gMTA7CisgICAgZmxpbmcudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0
YXJ0OworICAgIGZsaW5nLmRlbHRhWCA9IDEwOworCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwotICAgIG1faW5wdXRIYW5k
bGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5k
bGVJbnB1dEV2ZW50KGZsaW5nKTsKIAogICAgIFZFUklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIApA
QCAtMzA4LDggKzMxMCw4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRl
c3QsIGdlc3R1cmVGbGluZ0ZhaWxlZCkKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAg
IC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbEZhaWxlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUZsaW5nU3RhcnQ7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CisgICAgZmxpbmcudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGZsaW5nKTsKIAogICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIApAQCAtMzI2LDggKzMyOCw4IEBAIFRFU1RfRihXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0lnbm9yZWQpCiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxJZ25vcmVkKSk7CiAKLSAgICBnZXN0
dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBtX2lucHV0
SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBmbGluZy50eXBlID0gV2Vi
SW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRs
ZUlucHV0RXZlbnQoZmxpbmcpOwogCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCkBA
IC0zNDQsMjIgKzM0NiwyMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlRmxpbmdBbmltYXRlcykKIAogICAgIC8vIE9uIHRoZSBmbGluZyBzdGFydCwg
d2Ugc2hvdWxkIHNjaGVkdWxlIGFuIGFuaW1hdGlvbiBidXQgbm90IGFjdHVhbGx5IHN0YXJ0CiAg
ICAgLy8gc2Nyb2xsaW5nLgotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVGbGluZ1N0YXJ0OworICAgIGZsaW5nLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxp
bmdTdGFydDsKICAgICBXZWJGbG9hdFBvaW50IGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDEw
MDAsIDApOwogICAgIFdlYlBvaW50IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg3LCAxMyk7CiAgICAg
V2ViUG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDE3LCAyMyk7CiAgICAgaW50IG1v
ZGlmaWVycyA9IDc7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRhLng7Ci0gICAgZ2Vz
dHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7Ci0gICAgZ2VzdHVyZS54ID0gZmxpbmdQb2ludC54
OwotICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueTsKLSAgICBnZXN0dXJlLmdsb2JhbFggPSBm
bGluZ0dsb2JhbFBvaW50Lng7Ci0gICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2lu
dC55OwotICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIGZsaW5nLmRlbHRh
WCA9IGZsaW5nRGVsdGEueDsKKyAgICBmbGluZy5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7CisgICAg
ZmxpbmcueCA9IGZsaW5nUG9pbnQueDsKKyAgICBmbGluZy55ID0gZmxpbmdQb2ludC55OworICAg
IGZsaW5nLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7CisgICAgZmxpbmcuZ2xvYmFsWSA9
IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBmbGluZy5tb2RpZmllcnMgPSBtb2RpZmllcnM7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0
aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3Jv
bGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rp
bmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkp
OwotICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIG1f
aW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGZsaW5nKTsKIAogICAgIHRlc3Rpbmc6Ok1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVu
dCk7CiAgICAgLy8gVGhlIGZpcnN0IGFuaW1hdGUgY2FsbCBzaG91bGQgbGV0IHVzIHBpY2sgdXAg
YW4gYW5pbWF0aW9uIHN0YXJ0IHRpbWUsIGJ1dCB3ZQpAQCAtNDI4LDIyICs0MzAsMjYgQEAgVEVT
VF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNm
ZXJSZXNldHMpCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCiAgICAgLy8gU3RhcnQg
YSBnZXN0dXJlIGZsaW5nIGluIHRoZSAtWCBkaXJlY3Rpb24gd2l0aCB6ZXJvIFkgbW92ZW1lbnQu
Ci0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7Cisg
ICAgZmxpbmcudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIFdl
YkZsb2F0UG9pbnQgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMTAwMCwgMCk7CiAgICAgV2Vi
UG9pbnQgZmxpbmdQb2ludCA9IFdlYlBvaW50KDcsIDEzKTsKICAgICBXZWJQb2ludCBmbGluZ0ds
b2JhbFBvaW50ID0gV2ViUG9pbnQoMTcsIDIzKTsKICAgICBpbnQgbW9kaWZpZXJzID0gMTsKLSAg
ICBnZXN0dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IGZs
aW5nRGVsdGEueTsKLSAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7Ci0gICAgZ2VzdHVyZS55
ID0gZmxpbmdQb2ludC55OwotICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQu
eDsKLSAgICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7Ci0gICAgZ2VzdHVy
ZS5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAgZmxpbmcuZGVsdGFYID0gZmxpbmdEZWx0YS54
OworICAgIGZsaW5nLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBmbGluZy54ID0gZmxpbmdQ
b2ludC54OworICAgIGZsaW5nLnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZmxpbmcuZ2xvYmFsWCA9
IGZsaW5nR2xvYmFsUG9pbnQueDsKKyAgICBmbGluZy5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2lu
dC55OworICAgIGZsaW5nLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBmbG9hdCBpbmNsdWRl
ZEVtcGlyaWNhbFBhcmFtc1tdID0gezEuNWUrMDEsIDIuMGUrMDQsIC0zLjBlKzA0LCAyLjFlKzA0
LCAtNS41ZSswMywgMS4zfTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZW9mKGZs
aW5nLmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbCkgLyBzaXplb2YoZmxvYXQpOyBpKyspCisgICAg
ICAgICBmbGluZy5mbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xbaV0gPSBpbmNsdWRlZEVtcGlyaWNh
bFBhcmFtc1tpXTsKKwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50
LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAg
IC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6
OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChn
ZXN0dXJlKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7CiAK
ICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJ
bnB1dEhhbmRsZXJDbGllbnQpOwogCkBAIC00NzgsNiArNDg0LDggQEAgVEVTVF9GKFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAg
ICAgLy8gKikgc3RhcnRUaW1lIHNob3VsZCBiZSAxMCB0byBtYXRjaCB0aGUgdGltZSBwYXJhbWV0
ZXIgb2YgdGhlIGZpcnN0IGFuaW1hdGUoKSBjYWxsIGFmdGVyIHRoZSBHZXN0dXJlRmxpbmdTdGFy
dAogICAgIC8vICopIGN1bXVsYXRpdmVTY3JvbGwgZGVwZW5kcyBvbiB0aGUgY3VydmUsIGJ1dCBz
aW5jZSB3ZSd2ZSBhbmltYXRlZCBpbiB0aGUgLVggZGlyZWN0aW9uIHRoZSBYIHZhbHVlIHNob3Vs
ZCBiZSA8IDAKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVyQWN0aXZlV2hl
ZWxGbGluZ0FuaW1hdGlvbih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQo
JldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpmbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2ws
CisgICAgICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZUFycmF5KGluY2x1ZGVkRW1waXJpY2Fs
UGFyYW1zLCA2KSksCiAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5n
UGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKICAgICAgICAgdGVz
dGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGlu
Zzo6RXEoZmxpbmdQb2ludCkpLAogICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBv
aW50KSksCkBAIC01MDcsMjIgKzUxNSwyMiBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBTdGFydCBhIHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0
aGlzIHRpbWUgaW4gdGhlICtZIGRpcmVjdGlvbiB3aXRoIG5vIFguCi0gICAgZ2VzdHVyZS50eXBl
ID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmcudHlwZSA9IFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIGZsaW5nRGVsdGEgPSBXZWJGbG9h
dFBvaW50KDAsIC0xMDAwKTsKICAgICBmbGluZ1BvaW50ID0gV2ViUG9pbnQoOTUsIDg3KTsKICAg
ICBmbGluZ0dsb2JhbFBvaW50ID0gV2ViUG9pbnQoMzIsIDcxKTsKICAgICBtb2RpZmllcnMgPSAy
OwotICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54OwotICAgIGdlc3R1cmUuZGVsdGFZ
ID0gZmxpbmdEZWx0YS55OwotICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKLSAgICBnZXN0
dXJlLnkgPSBmbGluZ1BvaW50Lnk7Ci0gICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQ
b2ludC54OwotICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKLSAgICBn
ZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBmbGluZy5kZWx0YVggPSBmbGluZ0Rl
bHRhLng7CisgICAgZmxpbmcuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGZsaW5nLnggPSBm
bGluZ1BvaW50Lng7CisgICAgZmxpbmcueSA9IGZsaW5nUG9pbnQueTsKKyAgICBmbGluZy5nbG9i
YWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAgIGZsaW5nLmdsb2JhbFkgPSBmbGluZ0dsb2Jh
bFBvaW50Lnk7CisgICAgZmxpbmcubW9kaWZpZXJzID0gbW9kaWZpZXJzOwogICAgIEVYUEVDVF9D
QUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAg
ICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVz
dGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4o
V2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBtX2lu
cHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBtX2lucHV0SGFuZGxl
ci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwogCkBAIC01
NTIsNiArNTYwLDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwg
Z2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAKICAgICAvLyBXZSBzaG91bGQgZ2V0IHBhcmFt
ZXRlcnMgZnJvbSB0aGUgc2Vjb25kIGZsaW5nLCBub3RoaW5nIGZyb20gdGhlIGZpcnN0IGZsaW5n
IHNob3VsZCAibGVhayIuCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ2xpZW50LCB0cmFuc2ZlckFj
dGl2ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGluZzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6
OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZmxpbmdBY2NlbGVyYXRpb25D
b250cm9sLAorICAgICAgICAgICAgdGVzdGluZzo6RWxlbWVudHNBcmVBcnJheShpbmNsdWRlZEVt
cGlyaWNhbFBhcmFtcywgNikpLAogICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6OmRlbHRhLCB0ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSksCiAgICAg
ICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQs
IHRlc3Rpbmc6OkVxKGZsaW5nUG9pbnQpKSwKICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFj
dGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdH
bG9iYWxQb2ludCkpLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IGE5YTI1Y2FhZDlhOGUxZjkyMzk0MTRiNWI2Yjc0YjcxYjRmOGEyMzUuLmFmOWRl
NzViMDRlYjAxOWM0ODIyNDBmZDc1NmE0MTlhZWZmOTk1NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNC0x
MyAgUm9iZXJ0IEtyb2VnZXIgIDxyamtyb2VnZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2No
cm9taXVtXSBtYWtlIHRyYWNrcGFkIGdlc3R1cmUgY3VydmVzIGNvbmZpZ3VyYWJsZSBleHRlcm5h
bGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY2
MworCisgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwOiBBZGRlZCBhYmlsaXR5IHRvIHNl
dCBvcHRpb25hbAorICAgICAgICBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAoRXZlbnRTZW5k
ZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KToKKwogMjAxMi0wNC0xMiAgQmFsYXpzIEtlbGVtZW4gIDxr
YmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBGaXggV2ViS2l0MSBidWlsZCB3aXRo
IFY4CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKaW5k
ZXggYWQ0YTA4ZTBmNDU3MThkZGY0NzRmNzIxZGFlMmRiNzU3YzgwMzA0Mi4uYmQ0ZmI3MjhlOTEy
ZmJmYTY0MWM2ZDliMDJmODU3MjJlNDU0NDgwNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcApAQCAtMTE2OSwxNiArMTE2OSwyMCBAQCB2b2lkIEV2
ZW50U2VuZGVyOjpnZXN0dXJlRmxpbmdTdGFydChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudAogICAgICAgICBpZiAoIWFyZ3VtZW50c1tpXS5pc051bWJlcigpKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViR2VzdHVyZUV2ZW50IGV2ZW50OworICAgIFdl
Ykdlc3R1cmVGbGluZ0V2ZW50IGV2ZW50OwogICAgIGV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdTdGFydDsKIAogICAgIGV2ZW50LnggPSBzdGF0aWNfY2FzdDxmbG9hdD4o
YXJndW1lbnRzWzBdLnRvRG91YmxlKCkpOwogICAgIGV2ZW50LnkgPSBzdGF0aWNfY2FzdDxmbG9h
dD4oYXJndW1lbnRzWzFdLnRvRG91YmxlKCkpOwogICAgIGV2ZW50Lmdsb2JhbFggPSBldmVudC54
OwogICAgIGV2ZW50Lmdsb2JhbFkgPSBldmVudC55OwotCiAgICAgZXZlbnQuZGVsdGFYID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1syXS50b0RvdWJsZSgpKTsKICAgICBldmVudC5kZWx0
YVkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzNdLnRvRG91YmxlKCkpOworCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFdlYkdlc3R1cmVGbGluZ0V2ZW50OjpOdW1iZXJPZkdl
c3R1cmVGbGluZ1BhcmFtZXRlcnMgJiYgaSArIDQgPCBhcmd1bWVudHMuc2l6ZSgpOyBpKyspCisg
ICAgICAgIGlmIChhcmd1bWVudHNbaSArIDRdLmlzTnVtYmVyKCkpCisgICAgICAgICAgICBldmVu
dC5mbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xbaV0gPSAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3Vt
ZW50c1tpICsgNF0udG9Eb3VibGUoKSk7CisKICAgICBldmVudC50aW1lU3RhbXBTZWNvbmRzID0g
Z2V0Q3VycmVudEV2ZW50VGltZVNlYygpOwogICAgIHdlYnZpZXcoKS0+aGFuZGxlSW5wdXRFdmVu
dChldmVudCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>138873</attachid>
            <date>2012-04-25 14:28:51 -0700</date>
            <delta_ts>2012-04-26 09:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120425172850.patch</filename>
            <type>text/plain</type>
            <size>25958</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3ZjAzNmM0OGFjMmM1
NTczM2NiZjQyNGNlZWRjYzFiZWI4MmY2Yi4uYWMzY2JhZTlkNmM4MGEwMDNhOGYxYjBlN2YwNzI5
MzIyOWIzMzJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTEzICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
b3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZSk6IE5ldyBjb25zdHJ1Y3RvciB0YWtlcyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAq
IHBsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKwogMjAxMi0wNC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MTIwMTU1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDliMmZjZjc1YjZjYjQ1YzViNGYwNDhiNTM2
MDRlNzllNjcxOTZmMGQuLjk2ZTBlODcyMzNiM2ZlOGQ1Mjc2YTBmMmFiNDhiODZhNGQ4OWVkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDQtMTMg
IFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gbWFrZSB0cmFja3BhZCBnZXN0dXJlIGN1cnZlcyBjb25maWd1cmFibGUgZXh0ZXJuYWxs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMpOiBBZGRlZCBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAqIHB1
YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJHZXN0dXJlRmxpbmdFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVGbGluZ0V2ZW50OjpXZWJHZXN0dXJlRmxpbmdFdmVu
dCk6IEFkZGVkIG5ldyBXZWJHZXN0dXJlRXZlbnQKKyAgICAgICAgc3ViY2xhc3MgdGhhdCBjb250
YWlucyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1
cmVGbGluZyk6IEFkZCBzdXBwb3J0IGZvciBvcHRpb25hbAorICAgICAgICBmbGluZyBwYXJhbWV0
ZXJzLgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJh
bnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjb25maWd1
cmFibGUKKyAgICAgICAgcGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTItMDQtMjQg
IFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBEb24ndCBrZWVwIHBvaW50ZXJzIHRvIHJlbGVhc2VkIGxheWVyIHRyZWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUuY3BwCmluZGV4IDVmOWJhY2RhMmZjMDFkMjcyNWQxOTg0Y2UxZDc2YzgyZTFl
ZjI2ZmIuLjc5YzNlYjU4NDdlNDNkYmQ5ZjQ1ZThiNWU1NTdjYTUyM2E0OTA4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmNwcApAQCAtNTMsMTAgKzUzLDI5IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIGNvbnN0IGludCBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6Om1fbWF4
U2VhcmNoSXRlcmF0aW9ucyA9IDIwOwogCituYW1lc3BhY2UgeworLy8gVGhlIGRlZmF1bHQgcGFy
YW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEgbWF0Y2hlZCBzZXQsIGFuZCBzaG91bGQgbm90IGJl
IGNoYW5nZWQgaW5kZXBlbmRlbnRseSBvZiBvbmUgYW5vdGhlci4KK2NvbnN0IGZsb2F0IGRlZmF1
bHRFbXBpcmNhbFBhcmFtZXRlcnNbXSA9IHsxLjUzOTVlKzAxLCAyLjA0NjZlKzA0LCAtMi45ODk5
ZSswNCwgMi4wNTc3ZSswNCwgLTUuNDk2NmUrMDMsIDEuMTI4NDQ1fTsKK2NvbnN0IHVuc2lnbmVk
ICBwYXJhbWV0ZXJDb3VudCA9IHNpemVvZihkZWZhdWx0RW1waXJjYWxQYXJhbWV0ZXJzKSAvIHNp
emVvZihmbG9hdCk7Cit9CisKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNo
cGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewotICAgIC8vIFRoZSBkZWZhdWx0
IHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1hdGNoZWQgc2V0LCBhbmQgc2hvdWxkIG5v
dCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25lIGFub3RoZXIuCi0gICAgcmV0dXJuIGNy
ZWF0ZSh2ZWxvY2l0eSwgMS41Mzk1ZSswMSwgMi4wNDY2ZSswNCwgLTIuOTg5OWUrMDQsIDIuMDU3
N2UrMDQsIC01LjQ5NjZlKzAzLCAxLjEyODQ0NSwgY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgY29u
c3QgZmxvYXQgKnAgPSBkZWZhdWx0RW1waXJjYWxQYXJhbWV0ZXJzOworICAgIHJldHVybiBjcmVh
dGUodmVsb2NpdHksIHBbMF0sIHBbMV0sIHBbMl0sIHBbM10sIHBbNF0sIHBbNV0sIGN1bXVsYXRp
dmVTY3JvbGwpOworfQorCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxv
Y2l0eSwgY29uc3QgdW5zaWduZWQgb3B0aW9uYWxQYXJhbWV0ZXJDb3VudCwgY29uc3QgZmxvYXQq
IHByb3ZpZGVkLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIGZsb2F0IHBbcGFy
YW1ldGVyQ291bnRdOworCisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGFy
YW1ldGVyQ291bnQgJiYgaSA8IG9wdGlvbmFsUGFyYW1ldGVyQ291bnQ7IGkrKykKKyAgICAgICAg
cFtpXSA9IHByb3ZpZGVkW2ldOworICAgIGZvciAoOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykK
KyAgICAgICAgcFtpXSA9IGRlZmF1bHRFbXBpcmNhbFBhcmFtZXRlcnNbaV07CisKKyAgICByZXR1
cm4gY3JlYXRlKHZlbG9jaXR5LCBwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdLCBwWzVdLCBj
dW11bGF0aXZlU2Nyb2xsKTsKIH0KIAogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4g
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IHAzLCBmbG9h
dCBwNCwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggNDZiMGFhNWI2YjkwMzhkMGEzMjFkNjMwZDhjNDJmMjI5
M2ZlNGQ0Ni4uOTEzNTkyNTNhNGQ2ZjU2NDUwZjljZDZkY2JiMGFmMWRkMzhiMTFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQ7CiBjbGFzcyBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgOiBw
dWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQm
IHZlbG9jaXR5LCBjb25zdCB1bnNpZ25lZCwgY29uc3QgZmxvYXQqLCBJbnRQb2ludCBjdW11bGF0
aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAs
IGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgcDMsIGZsb2F0IHA0LCBmbG9hdCBjdXJ2ZUR1cmF0
aW9uLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAgICAgdmlydHVh
bCB+VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oCmluZGV4IGVmMjc3ZDVmZDRjNjdkZjFhMjQxZmE2YWEyY2IyNWNhNDk2NGFiNGMu
LmU4MjU2MzdmYmE4MDQ3ZjBiYWVkN2NlMjI0OTk1NzgyM2M3YzRjYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyc19oCiAjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gK
IAorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKQEAgLTQx
LDEwICs0MSwxMyBAQCBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgewogICAg
IGludCBtb2RpZmllcnM7CiAgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOwogICAgIGRvdWJs
ZSBzdGFydFRpbWU7CisgICAgdW5zaWduZWQgbnVtYmVyT2ZBY2NlbGVyYXRpb25Db250cm9sUGFy
YW1ldGVyczsKKyAgICBmbG9hdCBmbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xbV2ViR2VzdHVyZUZs
aW5nRXZlbnQ6OkRlZmF1bHROdW1iZXJPZkdlc3R1cmVGbGluZ1BhcmFtZXRlcnNdOwogCiAgICAg
V2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMoKQogICAgICAgICA6IG1vZGlmaWVycygwKQog
ICAgICAgICAsIHN0YXJ0VGltZSgwKQorICAgICAgICAsIG51bWJlck9mQWNjZWxlcmF0aW9uQ29u
dHJvbFBhcmFtZXRlcnMoMCkKICAgICB7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCBkNWQ2Mzk0Zjg3MDYyYzFjN2QyNmQy
MTQ2MzU1N2I4NDExMTk0NTBkLi5lZTExYTBhNWNkY2FiNGZkZDAzN2RmMmI0YmVjZTZhMGU0NWU5
NzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5o
CkBAIC0zNTgsNiArMzU4LDcgQEAgcHVibGljOgogICAgIGludCB5OwogICAgIGludCBnbG9iYWxY
OwogICAgIGludCBnbG9iYWxZOworICAgIHVuc2lnbmVkIGludCBudW1iZXJPZkZsaW5nQ29uZmln
UGFyYW1ldGVyczsKIAogICAgIC8vIE5PVEU6IHxkZWx0YVh8IGFuZCB8ZGVsdGFZfCByZXByZXNl
bnRzIHRoZSBhbW91bnQgdG8gc2Nyb2xsIGZvciBTY3JvbGwgZ2VzdHVyZSBldmVudHMuIEZvciBQ
aW5jaCBnZXN0dXJlIGV2ZW50cywgfGRlbHRhWHwgcmVwcmVzZW50cyB0aGUgc2NhbGluZy9tYWdu
aWZpY2F0aW9uIGZhY3Rvci4gRm9yIFRhcCBhbmQgUHJlc3MgZXZlbnRzLCB8ZGVsdGFYfCx8ZGVs
dGFZfCBhbmQgfGdhbW1hWHwsfGdhbW1hWXwgY29ycmVzcG9uZCB0byB0aGUgdG9wIGxlZnQgYW5k
IGJvdHRvbSByaWdodCBjb3JuZXJzIG9mIHRoZSBlbGxpcHNlJ3MgZW5sb3NpbmcgcmVjdGFuZ2xl
IGZvciB0YXAgdGFyZ2V0IGZ1enppbmcuCiAgICAgZmxvYXQgZGVsdGFYOwpAQCAtMzY1LDEyICsz
NjYsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGdhbW1hWDsKICAgICBmbG9hdCBnYW1tYVk7CiAK
KwogICAgIFdlYkdlc3R1cmVFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViR2Vz
dHVyZUV2ZW50KSkKICAgICAgICAgOiBXZWJJbnB1dEV2ZW50KHNpemVQYXJhbSkKICAgICAgICAg
LCB4KDApCiAgICAgICAgICwgeSgwKQogICAgICAgICAsIGdsb2JhbFgoMCkKICAgICAgICAgLCBn
bG9iYWxZKDApCisgICAgICAgICwgbnVtYmVyT2ZGbGluZ0NvbmZpZ1BhcmFtZXRlcnMoMCkKICAg
ICAgICAgLCBkZWx0YVgoMC4wZikKICAgICAgICAgLCBkZWx0YVkoMC4wZikKICAgICAgICAgLCBn
YW1tYVgoMC4wZikKQEAgLTM3OSw2ICszODIsMTkgQEAgcHVibGljOgogICAgIH0KIH07CiAKK2Ns
YXNzIFdlYkdlc3R1cmVGbGluZ0V2ZW50IDogcHVibGljIFdlYkdlc3R1cmVFdmVudCB7CitwdWJs
aWM6CisgICAgZW51bSB7IERlZmF1bHROdW1iZXJPZkdlc3R1cmVGbGluZ1BhcmFtZXRlcnMgPSA4
IH07CisKKyAgICAvLyBQYXJhbWV0ZXJzIGNvbnRyb2xsaW5nIHRoZSBzaGFwZSBvZiBhIHRvdWNo
cGFkIGZsaW5nIGN1cnZlLgorICAgIGZsb2F0IGZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbFBhcmFt
ZXRlcnNbRGVmYXVsdE51bWJlck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVyc107CisKKyAgICBXZWJH
ZXN0dXJlRmxpbmdFdmVudCh1bnNpZ25lZCBzaXplUGFyYW0gPSBzaXplb2YoV2ViR2VzdHVyZUZs
aW5nRXZlbnQpKQorICAgICAgICA6IFdlYkdlc3R1cmVFdmVudChzaXplUGFyYW0pCisgICAgewor
ICAgIH0KK307CisKIC8vIFdlYlRvdWNoRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgV2ViVG91Y2hFdmVu
dCA6IHB1YmxpYyBXZWJJbnB1dEV2ZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcAppbmRleCA4
ZTBjNjEzYTQyYTM5NjY3ZWE2M2U2NWU5MjVhMjJhN2EzNGIxNDlkLi5iYTdjZWJiZjVmMGIzZWJj
MDA5MDhjZDkzY2JlMDEzY2EwZDQ4YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCkBAIC0z
Nyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5oIgorI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJp
bWl0aXZlcy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTI1MSw3ICsyNTIsNyBA
QCBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aAogICAgICAgICBtX2lucHV0SGFuZGxlckNsaWVudC0+
cGluY2hHZXN0dXJlVXBkYXRlKGdlc3R1cmVFdmVudC5kZWx0YVgsIEludFBvaW50KGdlc3R1cmVF
dmVudC54LCBnZXN0dXJlRXZlbnQueSkpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAg
IH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFy
dCkgewotICAgICAgICBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0
aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmZXZlbnQpOworICAgICAgICBjb25zdCBX
ZWJHZXN0dXJlRmxpbmdFdmVudCYgZ2VzdHVyZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdl
Ykdlc3R1cmVGbGluZ0V2ZW50Kj4oJmV2ZW50KTsKICAgICAgICAgcmV0dXJuIGhhbmRsZUdlc3R1
cmVGbGluZyhnZXN0dXJlRXZlbnQpOwogICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWwpIHsKICAgICAgICAgaWYgKGNhbmNlbEN1cnJl
bnRGbGluZygpKQpAQCAtMjYzLDE4ICsyNjQsMjMgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgK
ICAgICByZXR1cm4gRGlkTm90SGFuZGxlOwogfQogCi1XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbDo6RXZlbnREaXNwb3NpdGlvbiBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFu
ZGxlR2VzdHVyZUZsaW5nKGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQorV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRmxp
bmdFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIENDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGF0dXMgc2Nyb2xsU3RhdHVzID0gbV9pbnB1dEhhbmRsZXJDbGllbnQtPnNjcm9sbEJlZ2lu
KEludFBvaW50KGdlc3R1cmVFdmVudC54LCBnZXN0dXJlRXZlbnQueSksIENDSW5wdXRIYW5kbGVy
Q2xpZW50OjpXaGVlbCk7CiAgICAgc3dpdGNoIChzY3JvbGxTdGF0dXMpIHsKICAgICBjYXNlIEND
SW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkOiB7CiAgICAgICAgIFRSQUNFX0VWRU5U
X0lOU1RBTlQwKCJjYyIsICJXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlR2Vz
dHVyZUZsaW5nOjpzdGFydGVkIik7Ci0gICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2
ZT4gZmxpbmdDdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRl
KEZsb2F0UG9pbnQoZ2VzdHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSkpOwor
ICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGZsaW5nQ3VydmU7CisgICAgICAg
IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShG
bG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpLCBnZXN0
dXJlRXZlbnQubnVtYmVyT2ZGbGluZ0NvbmZpZ1BhcmFtZXRlcnMsIGdlc3R1cmVFdmVudC5mbGlu
Z0FjY2VsZXJhdGlvbkNvbnRyb2xQYXJhbWV0ZXJzKTsKICAgICAgICAgbV93aGVlbEZsaW5nQW5p
bWF0aW9uID0gQ0NBY3RpdmVHZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoUGxhdGZvcm1HZXN0dXJl
VG9DQ0dlc3R1cmVBZGFwdGVyOjpjcmVhdGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCkpLCB0aGlzKTsK
ICAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5kZWx0YSA9IFdlYkZsb2F0UG9pbnQoZ2Vz
dHVyZUV2ZW50LmRlbHRhWCwgZ2VzdHVyZUV2ZW50LmRlbHRhWSk7CiAgICAgICAgIG1fd2hlZWxG
bGluZ1BhcmFtZXRlcnMucG9pbnQgPSBXZWJQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2
ZW50LnkpOwogICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLmdsb2JhbFBvaW50ID0gV2Vi
UG9pbnQoZ2VzdHVyZUV2ZW50Lmdsb2JhbFgsIGdlc3R1cmVFdmVudC5nbG9iYWxZKTsKICAgICAg
ICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5tb2RpZmllcnMgPSBnZXN0dXJlRXZlbnQubW9kaWZp
ZXJzOworICAgICAgICBtX3doZWVsRmxpbmdQYXJhbWV0ZXJzLm51bWJlck9mQWNjZWxlcmF0aW9u
Q29udHJvbFBhcmFtZXRlcnMgPSBnZXN0dXJlRXZlbnQubnVtYmVyT2ZGbGluZ0NvbmZpZ1BhcmFt
ZXRlcnM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxpbWl0ID0gZm1pbmYoZ2VzdHVyZUV2ZW50
Lm51bWJlck9mRmxpbmdDb25maWdQYXJhbWV0ZXJzLCBXZWJHZXN0dXJlRmxpbmdFdmVudDo6RGVm
YXVsdE51bWJlck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVycyk7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsaW1pdDsgaSsrKQorICAgICAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFt
ZXRlcnMuZmxpbmdBY2NlbGVyYXRpb25Db250cm9sW2ldID0gZ2VzdHVyZUV2ZW50LmZsaW5nQWNj
ZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRlcnNbaV07CiAgICAgICAgIG1faW5wdXRIYW5kbGVyQ2xp
ZW50LT5zY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gRGlkSGFuZGxlOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJ
bnB1dEhhbmRsZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5oCmluZGV4IDY0NjQ3MTA1YjAzYzcyZGRjNzZiOThmZTk5OGUy
OGJjZTdmMjdkMzcuLjVmNDBiYjM2YjIyNGZjY2VmMTM0ZTI1ZmFiZjc1YzI0Mzk5ZWI2MTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRv
cklucHV0SGFuZGxlckltcGwuaApAQCAtNzgsNyArNzgsNyBAQCBwcml2YXRlOgogICAgIC8vIGFu
eSBjYWxscyBvdXQgdG8gdGhlIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJDbGllbnQuIFNvbWUg
aW5wdXQgdHlwZXMgZGVmZXIgdG8gaGVscGVycy4KICAgICBFdmVudERpc3Bvc2l0aW9uIGhhbmRs
ZUlucHV0RXZlbnRJbnRlcm5hbChjb25zdCBXZWJJbnB1dEV2ZW50Jik7CiAKLSAgICBFdmVudERp
c3Bvc2l0aW9uIGhhbmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAg
ICBFdmVudERpc3Bvc2l0aW9uIGhhbmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRmxp
bmdFdmVudCYpOwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFjdHVhbGx5IGhhZCBhbiBh
Y3RpdmUgZmxpbmcgdG8gY2FuY2VsLgogICAgIGJvb2wgY2FuY2VsQ3VycmVudEZsaW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnQuY3BwCmluZGV4IGQyMDRk
ZmFjMmRhYTU5ZmFhYjgxZmUxMGEyNTM4MDU4OTlkNDQ1M2IuLmJmYjA1MWRhOTVlZjIyZGU0YTEx
Zjk2YzQ5NTYyN2JiZjgwYTY3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklucHV0RXZlbnQuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGNsYXNzIFNhbWVTaXplQXNXZWJNb3Vz
ZVdoZWVsRXZlbnQgOiBwdWJsaWMgU2FtZVNpemVBc1dlYk1vdXNlRXZlbnQgewogfTsKIAogY2xh
c3MgU2FtZVNpemVBc1dlYkdlc3R1cmVFdmVudCA6IHB1YmxpYyBTYW1lU2l6ZUFzV2ViSW5wdXRF
dmVudCB7Ci0gICAgaW50IGdlc3R1cmVEYXRhWzhdOworICAgIGludCBnZXN0dXJlRGF0YVs5XTsK
IH07CiAKIGNsYXNzIFNhbWVTaXplQXNXZWJUb3VjaEV2ZW50IDogcHVibGljIFNhbWVTaXplQXNX
ZWJJbnB1dEV2ZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAppbmRleCA4OGU0YmQ4YzBjOWNhMWI0N2QwMmI0YjIzNmNhN2FkYjE4YWY2OGRhLi5iNmRmMDk3
NWZlZDFiMzE2NzY5MTZiNzUzOTMwOTIyNTIyNmM1NjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC02MzIsOCArNjMyLDEwIEBAIGJvb2wgV2ViVmll
d0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50KQog
ICAgICAgICBtX2xhc3RXaGVlbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7
CiAgICAgICAgIG1fbGFzdFdoZWVsR2xvYmFsUG9zaXRpb24gPSBXZWJQb2ludChldmVudC5nbG9i
YWxYLCBldmVudC5nbG9iYWxZKTsKICAgICAgICAgbV9mbGluZ01vZGlmaWVyID0gZXZlbnQubW9k
aWZpZXJzOwotICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGUgY3VydmUgcGFyYW1ldHJpemFibGUg
ZnJvbSB0aGUgYnJvd3Nlci4KLSAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxh
dGZvcm1HZXN0dXJlQW5pbWF0aW9uOjpjcmVhdGUoVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlOjpjcmVhdGUoRmxvYXRQb2ludChldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWSkpLCB0
aGlzKTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlOwor
ICAgICAgICBjb25zdCBXZWJHZXN0dXJlRmxpbmdFdmVudCYgZmxpbmdFdmVudCA9ICpzdGF0aWNf
Y2FzdDxjb25zdCBXZWJHZXN0dXJlRmxpbmdFdmVudCo+KCZldmVudCk7CisgICAgICAgIGZsaW5n
Q3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShGbG9hdFBv
aW50KGV2ZW50LmRlbHRhWCwgZXZlbnQuZGVsdGFZKSwgZmxpbmdFdmVudC5udW1iZXJPZkZsaW5n
Q29uZmlnUGFyYW1ldGVycywgZmxpbmdFdmVudC5mbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xQYXJh
bWV0ZXJzKTsKKyAgICAgICAgbV9nZXN0dXJlQW5pbWF0aW9uID0gQWN0aXZlUGxhdGZvcm1HZXN0
dXJlQW5pbWF0aW9uOjpjcmVhdGUoZmxpbmdDdXJ2ZS5yZWxlYXNlKCksIHRoaXMpOwogICAgICAg
ICBzY2hlZHVsZUFuaW1hdGlvbigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC02
ODQsNyArNjg2LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5n
QW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXIKICAgICBtX2xhc3RXaGVlbFBv
c2l0aW9uID0gcGFyYW1ldGVycy5wb2ludDsKICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9u
ID0gcGFyYW1ldGVycy5nbG9iYWxQb2ludDsKICAgICBtX2ZsaW5nTW9kaWZpZXIgPSBwYXJhbWV0
ZXJzLm1vZGlmaWVyczsKLSAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IGN1cnZlID0g
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUocGFyYW1ldGVycy5kZWx0
YSwgSW50UG9pbnQocGFyYW1ldGVycy5jdW11bGF0aXZlU2Nyb2xsKSk7CisgICAgT3duUHRyPFBs
YXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZTo6Y3JlYXRlKHBhcmFtZXRlcnMuZGVsdGEsIHBhcmFtZXRlcnMubnVtYmVyT2ZBY2NlbGVy
YXRpb25Db250cm9sUGFyYW1ldGVycywgcGFyYW1ldGVycy5mbGluZ0FjY2VsZXJhdGlvbkNvbnRy
b2wsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCkpOwogICAgIG1fZ2VzdHVy
ZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZl
LnJlbGVhc2UoKSwgdGhpcywgcGFyYW1ldGVycy5zdGFydFRpbWUpOwogICAgIHNjaGVkdWxlQW5p
bWF0aW9uKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdC5jcHAKaW5kZXggOTJm
MDA2MTg0MTQ3OTU2ZTEwMTlmYzY5MDE1ZjYzOWU0ODk0ZjMzMS4uYTllYWU5MmJmMjM5ZmJhYTIx
YmVjYTFkZTgxOTMxMjMwMTJhYThkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LmNwcApAQCAtMTY2LDYgKzE2Niw3IEBAIHByb3RlY3RlZDoKICAgICBPd25QdHI8V2ViQ29tcG9z
aXRvcklucHV0SGFuZGxlckltcGw+IG1faW5wdXRIYW5kbGVyOwogICAgIE1vY2tXZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVyQ2xpZW50IG1fbW9ja0NsaWVudDsKICAgICBXZWJHZXN0dXJlRXZlbnQg
Z2VzdHVyZTsKKyAgICBXZWJHZXN0dXJlRmxpbmdFdmVudCBmbGluZzsKIAogICAgIGVudW0gRXhw
ZWN0ZWREaXNwb3NpdGlvbiB7IERpZEhhbmRsZSwgRGlkTm90SGFuZGxlLCBEcm9wRXZlbnQgfTsK
ICAgICBFeHBlY3RlZERpc3Bvc2l0aW9uIG1fZXhwZWN0ZWREaXNwb3NpdGlvbjsKQEAgLTI4Nywx
MCArMjg4LDExIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdl
c3R1cmVGbGluZ1N0YXJ0ZWQpCiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJD
bGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2ls
bE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3Jv
bGxTdGFydGVkKSk7CiAKLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
RmxpbmdTdGFydDsKLSAgICBnZXN0dXJlLmRlbHRhWCA9IDEwOworICAgIGZsaW5nLnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBmbGluZy5kZWx0YVggPSAxMDsK
KwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFu
aW1hdGlvbigpKTsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJl
KTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7CiAKICAgICBW
RVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKQEAgLTMwOCw4ICszMTAsOCBAQCBURVNUX0YoV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdGYWlsZWQpCiAgICAg
RVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rp
bmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdl
YkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxGYWlsZWQpKTsKIAotICAgIGdlc3R1
cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIG1faW5wdXRI
YW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGdlc3R1cmUpOworICAgIGZsaW5nLnR5cGUgPSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxl
SW5wdXRFdmVudChmbGluZyk7CiAKICAgICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKQEAg
LTMyNiw4ICszMjgsOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlRmxpbmdJZ25vcmVkKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsSWdub3JlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUZsaW5nU3RhcnQ7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CisgICAgZmxpbmcudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0
OworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGZsaW5nKTsKIAogICAgIFZF
UklGWV9BTkRfUkVTRVRfTU9DS1MoKTsKIApAQCAtMzQ0LDIyICszNDYsMjIgQEAgVEVTVF9GKFdl
YkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nQW5pbWF0ZXMpCiAK
ICAgICAvLyBPbiB0aGUgZmxpbmcgc3RhcnQsIHdlIHNob3VsZCBzY2hlZHVsZSBhbiBhbmltYXRp
b24gYnV0IG5vdCBhY3R1YWxseSBzdGFydAogICAgIC8vIHNjcm9sbGluZy4KLSAgICBnZXN0dXJl
LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBmbGluZy50eXBl
ID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgV2ViRmxvYXRQb2ludCBm
bGluZ0RlbHRhID0gV2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKICAgICBXZWJQb2ludCBmbGluZ1Bv
aW50ID0gV2ViUG9pbnQoNywgMTMpOwogICAgIFdlYlBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBX
ZWJQb2ludCgxNywgMjMpOwogICAgIGludCBtb2RpZmllcnMgPSA3OwotICAgIGdlc3R1cmUuZGVs
dGFYID0gZmxpbmdEZWx0YS54OwotICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55Owot
ICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKLSAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50
Lnk7Ci0gICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OwotICAgIGdlc3R1
cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKLSAgICBnZXN0dXJlLm1vZGlmaWVycyA9
IG1vZGlmaWVyczsKKyAgICBmbGluZy5kZWx0YVggPSBmbGluZ0RlbHRhLng7CisgICAgZmxpbmcu
ZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGZsaW5nLnggPSBmbGluZ1BvaW50Lng7CisgICAg
ZmxpbmcueSA9IGZsaW5nUG9pbnQueTsKKyAgICBmbGluZy5nbG9iYWxYID0gZmxpbmdHbG9iYWxQ
b2ludC54OworICAgIGZsaW5nLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7CisgICAgZmxp
bmcubW9kaWZpZXJzID0gbW9kaWZpZXJzOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRI
YW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsKICAgICBFWFBFQ1RfQ0FMTChtX21v
Y2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6
XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhh
bmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxl
SW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVu
dChmbGluZyk7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwogICAgIC8vIFRoZSBmaXJzdCBhbmltYXRl
IGNhbGwgc2hvdWxkIGxldCB1cyBwaWNrIHVwIGFuIGFuaW1hdGlvbiBzdGFydCB0aW1lLCBidXQg
d2UKQEAgLTQyOCwyMiArNDMwLDI4IEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVy
SW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogICAgIFZFUklGWV9BTkRfUkVT
RVRfTU9DS1MoKTsKIAogICAgIC8vIFN0YXJ0IGEgZ2VzdHVyZSBmbGluZyBpbiB0aGUgLVggZGly
ZWN0aW9uIHdpdGggemVybyBZIG1vdmVtZW50LgotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGZsaW5nLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBXZWJGbG9hdFBvaW50IGZsaW5nRGVsdGEgPSBXZWJG
bG9hdFBvaW50KDEwMDAsIDApOwogICAgIFdlYlBvaW50IGZsaW5nUG9pbnQgPSBXZWJQb2ludCg3
LCAxMyk7CiAgICAgV2ViUG9pbnQgZmxpbmdHbG9iYWxQb2ludCA9IFdlYlBvaW50KDE3LCAyMyk7
CiAgICAgaW50IG1vZGlmaWVycyA9IDE7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSBmbGluZ0RlbHRh
Lng7Ci0gICAgZ2VzdHVyZS5kZWx0YVkgPSBmbGluZ0RlbHRhLnk7Ci0gICAgZ2VzdHVyZS54ID0g
ZmxpbmdQb2ludC54OwotICAgIGdlc3R1cmUueSA9IGZsaW5nUG9pbnQueTsKLSAgICBnZXN0dXJl
Lmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7Ci0gICAgZ2VzdHVyZS5nbG9iYWxZID0gZmxp
bmdHbG9iYWxQb2ludC55OwotICAgIGdlc3R1cmUubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAg
IGZsaW5nLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKKyAgICBmbGluZy5kZWx0YVkgPSBmbGluZ0Rl
bHRhLnk7CisgICAgZmxpbmcueCA9IGZsaW5nUG9pbnQueDsKKyAgICBmbGluZy55ID0gZmxpbmdQ
b2ludC55OworICAgIGZsaW5nLmdsb2JhbFggPSBmbGluZ0dsb2JhbFBvaW50Lng7CisgICAgZmxp
bmcuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKKyAgICBmbGluZy5tb2RpZmllcnMgPSBt
b2RpZmllcnM7CisgICAgZmxvYXQgbW9ja0VtcGlyaWNhbFBhcmFtc1tdID0gezEuNWUrMDEsIDIu
MGUrMDQsIC0zLjBlKzA0LCAyLjFlKzA0LCAtNS41ZSswMywgMS4zfTsKKyAgICBjb25zdCB1bnNp
Z25lZCBpbnQgbnVtYmVyT2ZQYXJhbWV0ZXJzID0gc2l6ZW9mKG1vY2tFbXBpcmljYWxQYXJhbXMp
IC8gc2l6ZW9mKGZsb2F0KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZQ
YXJhbWV0ZXJzOyBpKyspCisgICAgICAgICBmbGluZy5mbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xQ
YXJhbWV0ZXJzW2ldID0gbW9ja0VtcGlyaWNhbFBhcmFtc1tpXTsKKyAgICBmbGluZy5udW1iZXJP
ZkZsaW5nQ29uZmlnUGFyYW1ldGVycyA9IG51bWJlck9mUGFyYW1ldGVyczsKKwogICAgIEVYUEVD
VF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY2hlZHVsZUFuaW1hdGlvbigpKTsK
ICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4o
dGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAgICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1
cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGllbnQ6OlNjcm9sbFN0YXJ0ZWQpKTsKLSAgICBt
X2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBtX2lucHV0SGFu
ZGxlci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7CiAKICAgICB0ZXN0aW5nOjpNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQpOwogCkBA
IC00NzgsNiArNDg2LDExIEBAIFRFU1RfRihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRl
c3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVyUmVzZXRzKQogICAgIC8vICopIHN0YXJ0VGltZSBzaG91
bGQgYmUgMTAgdG8gbWF0Y2ggdGhlIHRpbWUgcGFyYW1ldGVyIG9mIHRoZSBmaXJzdCBhbmltYXRl
KCkgY2FsbCBhZnRlciB0aGUgR2VzdHVyZUZsaW5nU3RhcnQKICAgICAvLyAqKSBjdW11bGF0aXZl
U2Nyb2xsIGRlcGVuZHMgb24gdGhlIGN1cnZlLCBidXQgc2luY2Ugd2UndmUgYW5pbWF0ZWQgaW4g
dGhlIC1YIGRpcmVjdGlvbiB0aGUgWCB2YWx1ZSBzaG91bGQgYmUgPCAwCiAgICAgRVhQRUNUX0NB
TEwobV9tb2NrQ2xpZW50LCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdBbmltYXRpb24odGVzdGlu
Zzo6QWxsT2YoCisgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVyczo6bnVtYmVyT2ZBY2NlbGVyYXRpb25Db250cm9sUGFyYW1ldGVycywKKyAgICAgICAg
ICAgIHRlc3Rpbmc6OkVxKG51bWJlck9mUGFyYW1ldGVycykpLAorICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6OmZsaW5nQWNjZWxlcmF0aW9uQ29u
dHJvbCwKKyAgICAgICAgICAgIHRlc3Rpbmc6OkVsZW1lbnRzQXJlKG1vY2tFbXBpcmljYWxQYXJh
bXNbMF0sIHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8sCisg
ICAgICAgICAgICBtb2NrRW1waXJpY2FsUGFyYW1zWzVdLCB0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpf
KSksCiAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVy
czo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVsdGEpKSwKICAgICAgICAgdGVzdGluZzo6Rmll
bGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxp
bmdQb2ludCkpLAogICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1Bh
cmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCkBA
IC01MDcsMjIgKzUyMCwyMyBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxU
ZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAgICBWRVJJRllfQU5EX1JFU0VUX01P
Q0tTKCk7CiAKICAgICAvLyBTdGFydCBhIHNlY29uZCBnZXN0dXJlIGZsaW5nLCB0aGlzIHRpbWUg
aW4gdGhlICtZIGRpcmVjdGlvbiB3aXRoIG5vIFguCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5w
dXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmcudHlwZSA9IFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIGZsaW5nRGVsdGEgPSBXZWJGbG9hdFBvaW50KDAs
IC0xMDAwKTsKICAgICBmbGluZ1BvaW50ID0gV2ViUG9pbnQoOTUsIDg3KTsKICAgICBmbGluZ0ds
b2JhbFBvaW50ID0gV2ViUG9pbnQoMzIsIDcxKTsKICAgICBtb2RpZmllcnMgPSAyOwotICAgIGdl
c3R1cmUuZGVsdGFYID0gZmxpbmdEZWx0YS54OwotICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdE
ZWx0YS55OwotICAgIGdlc3R1cmUueCA9IGZsaW5nUG9pbnQueDsKLSAgICBnZXN0dXJlLnkgPSBm
bGluZ1BvaW50Lnk7Ci0gICAgZ2VzdHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54Owot
ICAgIGdlc3R1cmUuZ2xvYmFsWSA9IGZsaW5nR2xvYmFsUG9pbnQueTsKLSAgICBnZXN0dXJlLm1v
ZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBmbGluZy5kZWx0YVggPSBmbGluZ0RlbHRhLng7Cisg
ICAgZmxpbmcuZGVsdGFZID0gZmxpbmdEZWx0YS55OworICAgIGZsaW5nLnggPSBmbGluZ1BvaW50
Lng7CisgICAgZmxpbmcueSA9IGZsaW5nUG9pbnQueTsKKyAgICBmbGluZy5nbG9iYWxYID0gZmxp
bmdHbG9iYWxQb2ludC54OworICAgIGZsaW5nLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7
CisgICAgZmxpbmcubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIGZsaW5nLm51bWJlck9mRmxp
bmdDb25maWdQYXJhbWV0ZXJzID0gMDsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFu
ZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwobV9tb2Nr
Q0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8p
KQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5wdXRIYW5k
bGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlu
cHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQo
ZmxpbmcpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIApAQCAtNTUyLDYgKzU2Niw4IEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ1RyYW5zZmVy
UmVzZXRzKQogCiAgICAgLy8gV2Ugc2hvdWxkIGdldCBwYXJhbWV0ZXJzIGZyb20gdGhlIHNlY29u
ZCBmbGluZywgbm90aGluZyBmcm9tIHRoZSBmaXJzdCBmbGluZyBzaG91bGQgImxlYWsiLgogICAg
IEVYUEVDVF9DQUxMKG1fbW9ja0NsaWVudCwgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0
aW9uKHRlc3Rpbmc6OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnM6Om51bWJlck9mQWNjZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRlcnMs
CisgICAgICAgICAgICB0ZXN0aW5nOjpFcSgwKSksCiAgICAgICAgIHRlc3Rpbmc6OkZpZWxkKCZX
ZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6OkVxKGZsaW5nRGVs
dGEpKSwKICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0
ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAogICAgICAgICB0ZXN0aW5nOjpG
aWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBvaW50LCB0ZXN0aW5n
OjpFcShmbGluZ0dsb2JhbFBvaW50KSksCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggZWU5ZTJjYTFmNmIxNTdkMDRlYTAxZjQ0ZDBjYjYxMzQzNGUy
YzQ0Zi4uOTkxZmUxMmY4YmE0MjE4ZjIzZTUxNDM1OGVmOTE0YzAxZDYzY2U0MCAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA0LTEzICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBbY2hyb21pdW1dIG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJh
YmxlIGV4dGVybmFsbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHA6IEFkZGVkIGFi
aWxpdHkgdG8gc2V0IG9wdGlvbmFsCisgICAgICAgIGZsaW5nIHBhcmFtZXRlcnMuCisgICAgICAg
IChFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQpOgorCiAyMDEyLTA0LTI0ICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAx
MjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NjQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcAppbmRleCBh
ZDRhMDhlMGY0NTcxOGRkZjQ3NGY3MjFkYWUyZGI3NTdjODAzMDQyLi5kOWFlOTdjZWEyYzQ3ZWYw
Zjc0NWMyMzUxNWJkMjY3MDM1MTkyYTM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC0xMTY5LDE2ICsxMTY5LDIyIEBAIHZvaWQgRXZlbnRT
ZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRz
LCBDcHBWYXJpYW50CiAgICAgICAgIGlmICghYXJndW1lbnRzW2ldLmlzTnVtYmVyKCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICBXZWJHZXN0dXJlRXZlbnQgZXZlbnQ7CisgICAgV2ViR2Vz
dHVyZUZsaW5nRXZlbnQgZXZlbnQ7CiAgICAgZXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdl
c3R1cmVGbGluZ1N0YXJ0OwogCiAgICAgZXZlbnQueCA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1
bWVudHNbMF0udG9Eb3VibGUoKSk7CiAgICAgZXZlbnQueSA9IHN0YXRpY19jYXN0PGZsb2F0Pihh
cmd1bWVudHNbMV0udG9Eb3VibGUoKSk7CiAgICAgZXZlbnQuZ2xvYmFsWCA9IGV2ZW50Lng7CiAg
ICAgZXZlbnQuZ2xvYmFsWSA9IGV2ZW50Lnk7Ci0KICAgICBldmVudC5kZWx0YVggPSBzdGF0aWNf
Y2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwogICAgIGV2ZW50LmRlbHRhWSA9
IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7CisKKyAgICB1bnNp
Z25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBXZWJHZXN0dXJlRmxpbmdFdmVudDo6RGVmYXVs
dE51bWJlck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVycyAmJiBpICsgNCA8IGFyZ3VtZW50cy5zaXpl
KCk7IGkrKykKKyAgICAgICAgaWYgKGFyZ3VtZW50c1tpICsgNF0uaXNOdW1iZXIoKSkKKyAgICAg
ICAgICAgIGV2ZW50LmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRlcnNbaV0gPSAgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1tpICsgNF0udG9Eb3VibGUoKSk7CisgICAgZXZlbnQu
bnVtYmVyT2ZGbGluZ0NvbmZpZ1BhcmFtZXRlcnMgPSBpOworCiAgICAgZXZlbnQudGltZVN0YW1w
U2Vjb25kcyA9IGdldEN1cnJlbnRFdmVudFRpbWVTZWMoKTsKICAgICB3ZWJ2aWV3KCktPmhhbmRs
ZUlucHV0RXZlbnQoZXZlbnQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>139015</attachid>
            <date>2012-04-26 09:10:40 -0700</date>
            <delta_ts>2012-07-27 07:19:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81663-20120426121038.patch</filename>
            <type>text/plain</type>
            <size>25970</size>
            <attacher name="Robert Kroeger">rjkroege</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE1MDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTg3ZjAzNmM0OGFjMmM1
NTczM2NiZjQyNGNlZWRjYzFiZWI4MmY2Yi4uYWMzY2JhZTlkNmM4MGEwMDNhOGYxYjBlN2YwNzI5
MzIyOWIzMzJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA0LTEzICBSb2Jl
cnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9U
b3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZSk6IE5ldyBjb25zdHJ1Y3RvciB0YWtlcyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAq
IHBsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZS5oOgorICAgICAgICAo
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKToKKwogMjAxMi0wNC0yNCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MTIwMTU1PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyNjY0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDliMmZjZjc1YjZjYjQ1YzViNGYwNDhiNTM2
MDRlNzllNjcxOTZmMGQuLjk2ZTBlODcyMzNiM2ZlOGQ1Mjc2YTBmMmFiNDhiODZhNGQ4OWVkNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDQtMTMg
IFJvYmVydCBLcm9lZ2VyICA8cmprcm9lZ2VAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gbWFrZSB0cmFja3BhZCBnZXN0dXJlIGN1cnZlcyBjb25maWd1cmFibGUgZXh0ZXJuYWxs
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1Ymxp
Yy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycy5oOgorICAgICAgICAoV2ViQWN0aXZlV2hl
ZWxGbGluZ1BhcmFtZXRlcnMpOiBBZGRlZCBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAqIHB1
YmxpYy9XZWJJbnB1dEV2ZW50Lmg6CisgICAgICAgIChXZWJHZXN0dXJlRmxpbmdFdmVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdlc3R1cmVGbGluZ0V2ZW50OjpXZWJHZXN0dXJlRmxpbmdFdmVu
dCk6IEFkZGVkIG5ldyBXZWJHZXN0dXJlRXZlbnQKKyAgICAgICAgc3ViY2xhc3MgdGhhdCBjb250
YWlucyBmbGluZyBwYXJhbWV0ZXJzLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMv
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbDo6aGFuZGxlSW5wdXRFdmVudEludGVybmFsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRsZUdlc3R1
cmVGbGluZyk6IEFkZCBzdXBwb3J0IGZvciBvcHRpb25hbAorICAgICAgICBmbGluZyBwYXJhbWV0
ZXJzLgorICAgICAgICAqIHNyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpoYW5kbGVHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6dHJh
bnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKToKKyAgICAgICAgKiB0ZXN0cy9XZWJDb21w
b3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwOiBVcGRhdGVkIHRlc3RzIGZvciBjb25maWd1
cmFibGUKKyAgICAgICAgcGFyYW1ldGVycy4KKyAgICAgICAgKFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6CisKIDIwMTItMDQtMjQg
IFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBEb24ndCBrZWVwIHBvaW50ZXJzIHRvIHJlbGVhc2VkIGxheWVyIHRyZWUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Ub3VjaHBhZEZsaW5nUGxhdGZvcm1H
ZXN0dXJlQ3VydmUuY3BwCmluZGV4IDVmOWJhY2RhMmZjMDFkMjcyNWQxOTg0Y2UxZDc2YzgyZTFl
ZjI2ZmIuLjc5YzNlYjU4NDdlNDNkYmQ5ZjQ1ZThiNWU1NTdjYTUyM2E0OTA4MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVD
dXJ2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmNwcApAQCAtNTMsMTAgKzUzLDI5IEBAIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7CiAKIGNvbnN0IGludCBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6Om1fbWF4
U2VhcmNoSXRlcmF0aW9ucyA9IDIwOwogCituYW1lc3BhY2UgeworLy8gVGhlIGRlZmF1bHQgcGFy
YW1ldGVycyBsaXN0ZWQgYmVsb3cgYXJlIGEgbWF0Y2hlZCBzZXQsIGFuZCBzaG91bGQgbm90IGJl
IGNoYW5nZWQgaW5kZXBlbmRlbnRseSBvZiBvbmUgYW5vdGhlci4KK2NvbnN0IGZsb2F0IGRlZmF1
bHRFbXBpcmNhbFBhcmFtZXRlcnNbXSA9IHsxLjUzOTVlKzAxLCAyLjA0NjZlKzA0LCAtMi45ODk5
ZSswNCwgMi4wNTc3ZSswNCwgLTUuNDk2NmUrMDMsIDEuMTI4NDQ1fTsKK2NvbnN0IHVuc2lnbmVk
ICBwYXJhbWV0ZXJDb3VudCA9IHNpemVvZihkZWZhdWx0RW1waXJjYWxQYXJhbWV0ZXJzKSAvIHNp
emVvZihmbG9hdCk7Cit9CisKIFBhc3NPd25QdHI8UGxhdGZvcm1HZXN0dXJlQ3VydmU+IFRvdWNo
cGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHZl
bG9jaXR5LCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQogewotICAgIC8vIFRoZSBkZWZhdWx0
IHBhcmFtZXRlcnMgbGlzdGVkIGJlbG93IGFyZSBhIG1hdGNoZWQgc2V0LCBhbmQgc2hvdWxkIG5v
dCBiZSBjaGFuZ2VkIGluZGVwZW5kZW50bHkgb2Ygb25lIGFub3RoZXIuCi0gICAgcmV0dXJuIGNy
ZWF0ZSh2ZWxvY2l0eSwgMS41Mzk1ZSswMSwgMi4wNDY2ZSswNCwgLTIuOTg5OWUrMDQsIDIuMDU3
N2UrMDQsIC01LjQ5NjZlKzAzLCAxLjEyODQ0NSwgY3VtdWxhdGl2ZVNjcm9sbCk7CisgICAgY29u
c3QgZmxvYXQgKnAgPSBkZWZhdWx0RW1waXJjYWxQYXJhbWV0ZXJzOworICAgIHJldHVybiBjcmVh
dGUodmVsb2NpdHksIHBbMF0sIHBbMV0sIHBbMl0sIHBbM10sIHBbNF0sIHBbNV0sIGN1bXVsYXRp
dmVTY3JvbGwpOworfQorCitQYXNzT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBUb3VjaHBh
ZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxv
Y2l0eSwgY29uc3QgdW5zaWduZWQgb3B0aW9uYWxQYXJhbWV0ZXJDb3VudCwgY29uc3QgZmxvYXQq
IHByb3ZpZGVkLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsKQoreworICAgIGZsb2F0IHBbcGFy
YW1ldGVyQ291bnRdOworCisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgcGFy
YW1ldGVyQ291bnQgJiYgaSA8IG9wdGlvbmFsUGFyYW1ldGVyQ291bnQ7IGkrKykKKyAgICAgICAg
cFtpXSA9IHByb3ZpZGVkW2ldOworICAgIGZvciAoOyBpIDwgcGFyYW1ldGVyQ291bnQ7IGkrKykK
KyAgICAgICAgcFtpXSA9IGRlZmF1bHRFbXBpcmNhbFBhcmFtZXRlcnNbaV07CisKKyAgICByZXR1
cm4gY3JlYXRlKHZlbG9jaXR5LCBwWzBdLCBwWzFdLCBwWzJdLCBwWzNdLCBwWzRdLCBwWzVdLCBj
dW11bGF0aXZlU2Nyb2xsKTsKIH0KIAogUGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4g
VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoY29uc3QgRmxvYXRQb2lu
dCYgdmVsb2NpdHksIGZsb2F0IHAwLCBmbG9hdCBwMSwgZmxvYXQgcDIsIGZsb2F0IHAzLCBmbG9h
dCBwNCwgZmxvYXQgY3VydmVEdXJhdGlvbiwgSW50UG9pbnQgY3VtdWxhdGl2ZVNjcm9sbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKaW5kZXggNDZiMGFhNWI2YjkwMzhkMGEzMjFkNjMwZDhjNDJmMjI5
M2ZlNGQ0Ni4uOTEzNTkyNTNhNGQ2ZjU2NDUwZjljZDZkY2JiMGFmMWRkMzhiMTFlNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVy
ZUN1cnZlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVG91Y2hwYWRGbGluZ1BsYXRm
b3JtR2VzdHVyZUN1cnZlLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgUGxhdGZvcm1HZXN0dXJl
Q3VydmVUYXJnZXQ7CiBjbGFzcyBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmUgOiBw
dWJsaWMgUGxhdGZvcm1HZXN0dXJlQ3VydmUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgdmVsb2Np
dHksIEludFBvaW50IGN1bXVsYXRpdmVTY3JvbGwgPSBJbnRQb2ludCgpKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3JlYXRlKGNvbnN0IEZsb2F0UG9pbnQm
IHZlbG9jaXR5LCBjb25zdCB1bnNpZ25lZCwgY29uc3QgZmxvYXQqLCBJbnRQb2ludCBjdW11bGF0
aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGxhdGZvcm1H
ZXN0dXJlQ3VydmU+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB2ZWxvY2l0eSwgZmxvYXQgcDAs
IGZsb2F0IHAxLCBmbG9hdCBwMiwgZmxvYXQgcDMsIGZsb2F0IHA0LCBmbG9hdCBjdXJ2ZUR1cmF0
aW9uLCBJbnRQb2ludCBjdW11bGF0aXZlU2Nyb2xsID0gSW50UG9pbnQoKSk7CiAgICAgdmlydHVh
bCB+VG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBY3RpdmVXaGVlbEZsaW5nUGFy
YW1ldGVycy5oCmluZGV4IGVmMjc3ZDVmZDRjNjdkZjFhMjQxZmE2YWEyY2IyNWNhNDk2NGFiNGMu
LmM2NTUxY2IwMzYyMThmYzQ5YzQyNjdiMjExNTI2ODhlOGI3ZWRlMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQWN0aXZlV2hlZWxGbGlu
Z1BhcmFtZXRlcnMuaApAQCAtMjYsOCArMjYsOCBAQAogI2lmbmRlZiBXZWJBY3RpdmVXaGVlbEZs
aW5nUGFyYW1ldGVyc19oCiAjZGVmaW5lIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzX2gK
IAorI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21t
b24uaCIKLQogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJQb2ludC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNpemUuaCIKQEAgLTQx
LDEwICs0MSwxMyBAQCBzdHJ1Y3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMgewogICAg
IGludCBtb2RpZmllcnM7CiAgICAgV2ViU2l6ZSBjdW11bGF0aXZlU2Nyb2xsOwogICAgIGRvdWJs
ZSBzdGFydFRpbWU7CisgICAgdW5zaWduZWQgaW50IG51bWJlck9mQWNjZWxlcmF0aW9uQ29udHJv
bFBhcmFtZXRlcnM7CisgICAgZmxvYXQgZmxpbmdBY2NlbGVyYXRpb25Db250cm9sW1dlYkdlc3R1
cmVGbGluZ0V2ZW50OjpEZWZhdWx0TnVtYmVyT2ZHZXN0dXJlRmxpbmdQYXJhbWV0ZXJzXTsKIAog
ICAgIFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzKCkKICAgICAgICAgOiBtb2RpZmllcnMo
MCkKICAgICAgICAgLCBzdGFydFRpbWUoMCkKKyAgICAgICAgLCBudW1iZXJPZkFjY2VsZXJhdGlv
bkNvbnRyb2xQYXJhbWV0ZXJzKDApCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKaW5kZXggZDVkNjM5NGY4NzA2MmMxYzdk
MjZkMjE0NjM1NTdiODQxMTE5NDUwZC4uZWUxMWEwYTVjZGNhYjRmZGQwMzdkZjJiNGJlY2U2YTBl
NDVlOTc4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZl
bnQuaApAQCAtMzU4LDYgKzM1OCw3IEBAIHB1YmxpYzoKICAgICBpbnQgeTsKICAgICBpbnQgZ2xv
YmFsWDsKICAgICBpbnQgZ2xvYmFsWTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtYmVyT2ZGbGluZ0Nv
bmZpZ1BhcmFtZXRlcnM7CiAKICAgICAvLyBOT1RFOiB8ZGVsdGFYfCBhbmQgfGRlbHRhWXwgcmVw
cmVzZW50cyB0aGUgYW1vdW50IHRvIHNjcm9sbCBmb3IgU2Nyb2xsIGdlc3R1cmUgZXZlbnRzLiBG
b3IgUGluY2ggZ2VzdHVyZSBldmVudHMsIHxkZWx0YVh8IHJlcHJlc2VudHMgdGhlIHNjYWxpbmcv
bWFnbmlmaWNhdGlvbiBmYWN0b3IuIEZvciBUYXAgYW5kIFByZXNzIGV2ZW50cywgfGRlbHRhWHws
fGRlbHRhWXwgYW5kIHxnYW1tYVh8LHxnYW1tYVl8IGNvcnJlc3BvbmQgdG8gdGhlIHRvcCBsZWZ0
IGFuZCBib3R0b20gcmlnaHQgY29ybmVycyBvZiB0aGUgZWxsaXBzZSdzIGVubG9zaW5nIHJlY3Rh
bmdsZSBmb3IgdGFwIHRhcmdldCBmdXp6aW5nLgogICAgIGZsb2F0IGRlbHRhWDsKQEAgLTM2NSwx
MiArMzY2LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBnYW1tYVg7CiAgICAgZmxvYXQgZ2FtbWFZ
OwogCisKICAgICBXZWJHZXN0dXJlRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdl
Ykdlc3R1cmVFdmVudCkpCiAgICAgICAgIDogV2ViSW5wdXRFdmVudChzaXplUGFyYW0pCiAgICAg
ICAgICwgeCgwKQogICAgICAgICAsIHkoMCkKICAgICAgICAgLCBnbG9iYWxYKDApCiAgICAgICAg
ICwgZ2xvYmFsWSgwKQorICAgICAgICAsIG51bWJlck9mRmxpbmdDb25maWdQYXJhbWV0ZXJzKDAp
CiAgICAgICAgICwgZGVsdGFYKDAuMGYpCiAgICAgICAgICwgZGVsdGFZKDAuMGYpCiAgICAgICAg
ICwgZ2FtbWFYKDAuMGYpCkBAIC0zNzksNiArMzgyLDE5IEBAIHB1YmxpYzoKICAgICB9CiB9Owog
CitjbGFzcyBXZWJHZXN0dXJlRmxpbmdFdmVudCA6IHB1YmxpYyBXZWJHZXN0dXJlRXZlbnQgewor
cHVibGljOgorICAgIGVudW0geyBEZWZhdWx0TnVtYmVyT2ZHZXN0dXJlRmxpbmdQYXJhbWV0ZXJz
ID0gOCB9OworCisgICAgLy8gUGFyYW1ldGVycyBjb250cm9sbGluZyB0aGUgc2hhcGUgb2YgYSB0
b3VjaHBhZCBmbGluZyBjdXJ2ZS4KKyAgICBmbG9hdCBmbGluZ0FjY2VsZXJhdGlvbkNvbnRyb2xQ
YXJhbWV0ZXJzW0RlZmF1bHROdW1iZXJPZkdlc3R1cmVGbGluZ1BhcmFtZXRlcnNdOworCisgICAg
V2ViR2VzdHVyZUZsaW5nRXZlbnQodW5zaWduZWQgc2l6ZVBhcmFtID0gc2l6ZW9mKFdlYkdlc3R1
cmVGbGluZ0V2ZW50KSkKKyAgICAgICAgOiBXZWJHZXN0dXJlRXZlbnQoc2l6ZVBhcmFtKQorICAg
IHsKKyAgICB9Cit9OworCiAvLyBXZWJUb3VjaEV2ZW50IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNsYXNzIFdlYlRvdWNo
RXZlbnQgOiBwdWJsaWMgV2ViSW5wdXRFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAKaW5k
ZXggOGUwYzYxM2E0MmEzOTY2N2VhNjNlNjVlOTI1YTIyYTdhMzRiMTQ5ZC4uYmE3Y2ViYmY1ZjBi
M2ViYzAwOTA4Y2Q5M2NiZTAxM2NhMGQ0OGE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmNwcApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNjL0NDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbi5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlIDxtYXRoLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGlu
Z1ByaW1pdGl2ZXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTEsNyArMjUy
LDcgQEAgV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2Vi
Q29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmgKICAgICAgICAgbV9pbnB1dEhhbmRsZXJDbGll
bnQtPnBpbmNoR2VzdHVyZVVwZGF0ZShnZXN0dXJlRXZlbnQuZGVsdGFYLCBJbnRQb2ludChnZXN0
dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsK
ICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5n
U3RhcnQpIHsKLSAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQgPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmV2ZW50KTsKKyAgICAgICAgY29u
c3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQmIGdlc3R1cmVFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25z
dCBXZWJHZXN0dXJlRmxpbmdFdmVudCo+KCZldmVudCk7CiAgICAgICAgIHJldHVybiBoYW5kbGVH
ZXN0dXJlRmxpbmcoZ2VzdHVyZUV2ZW50KTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT0g
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nQ2FuY2VsKSB7CiAgICAgICAgIGlmIChjYW5jZWxD
dXJyZW50RmxpbmcoKSkKQEAgLTI2MywxOCArMjY0LDIzIEBAIFdlYkNvbXBvc2l0b3JJbnB1dEhh
bmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
OjpoCiAgICAgcmV0dXJuIERpZE5vdEhhbmRsZTsKIH0KIAotV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGw6OkV2ZW50RGlzcG9zaXRpb24gV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6
OmhhbmRsZUdlc3R1cmVGbGluZyhjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
K1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpFdmVudERpc3Bvc2l0aW9uIFdlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsOjpoYW5kbGVHZXN0dXJlRmxpbmcoY29uc3QgV2ViR2VzdHVy
ZUZsaW5nRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhdHVzIHNjcm9sbFN0YXR1cyA9IG1faW5wdXRIYW5kbGVyQ2xpZW50LT5zY3JvbGxC
ZWdpbihJbnRQb2ludChnZXN0dXJlRXZlbnQueCwgZ2VzdHVyZUV2ZW50LnkpLCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6V2hlZWwpOwogICAgIHN3aXRjaCAoc2Nyb2xsU3RhdHVzKSB7CiAgICAgY2Fz
ZSBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3RhcnRlZDogewogICAgICAgICBUUkFDRV9F
VkVOVF9JTlNUQU5UMCgiY2MiLCAiV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGw6OmhhbmRs
ZUdlc3R1cmVGbGluZzo6c3RhcnRlZCIpOwotICAgICAgICBPd25QdHI8UGxhdGZvcm1HZXN0dXJl
Q3VydmU+IGZsaW5nQ3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0dXJlQ3VydmU6OmNy
ZWF0ZShGbG9hdFBvaW50KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkp
KTsKKyAgICAgICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBmbGluZ0N1cnZlOworICAg
ICAgICBmbGluZ0N1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVh
dGUoRmxvYXRQb2ludChnZXN0dXJlRXZlbnQuZGVsdGFYLCBnZXN0dXJlRXZlbnQuZGVsdGFZKSwg
Z2VzdHVyZUV2ZW50Lm51bWJlck9mRmxpbmdDb25maWdQYXJhbWV0ZXJzLCBnZXN0dXJlRXZlbnQu
ZmxpbmdBY2NlbGVyYXRpb25Db250cm9sUGFyYW1ldGVycyk7CiAgICAgICAgIG1fd2hlZWxGbGlu
Z0FuaW1hdGlvbiA9IENDQWN0aXZlR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFBsYXRmb3JtR2Vz
dHVyZVRvQ0NHZXN0dXJlQWRhcHRlcjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpKSwgdGhp
cyk7CiAgICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMuZGVsdGEgPSBXZWJGbG9hdFBvaW50
KGdlc3R1cmVFdmVudC5kZWx0YVgsIGdlc3R1cmVFdmVudC5kZWx0YVkpOwogICAgICAgICBtX3do
ZWVsRmxpbmdQYXJhbWV0ZXJzLnBvaW50ID0gV2ViUG9pbnQoZ2VzdHVyZUV2ZW50LngsIGdlc3R1
cmVFdmVudC55KTsKICAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5nbG9iYWxQb2ludCA9
IFdlYlBvaW50KGdlc3R1cmVFdmVudC5nbG9iYWxYLCBnZXN0dXJlRXZlbnQuZ2xvYmFsWSk7CiAg
ICAgICAgIG1fd2hlZWxGbGluZ1BhcmFtZXRlcnMubW9kaWZpZXJzID0gZ2VzdHVyZUV2ZW50Lm1v
ZGlmaWVyczsKKyAgICAgICAgbV93aGVlbEZsaW5nUGFyYW1ldGVycy5udW1iZXJPZkFjY2VsZXJh
dGlvbkNvbnRyb2xQYXJhbWV0ZXJzID0gZ2VzdHVyZUV2ZW50Lm51bWJlck9mRmxpbmdDb25maWdQ
YXJhbWV0ZXJzOworICAgICAgICBjb25zdCB1bnNpZ25lZCBsaW1pdCA9IGZtaW5mKGdlc3R1cmVF
dmVudC5udW1iZXJPZkZsaW5nQ29uZmlnUGFyYW1ldGVycywgV2ViR2VzdHVyZUZsaW5nRXZlbnQ6
OkRlZmF1bHROdW1iZXJPZkdlc3R1cmVGbGluZ1BhcmFtZXRlcnMpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbGltaXQ7IGkrKykKKyAgICAgICAgICAgICBtX3doZWVsRmxpbmdQ
YXJhbWV0ZXJzLmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbFtpXSA9IGdlc3R1cmVFdmVudC5mbGlu
Z0FjY2VsZXJhdGlvbkNvbnRyb2xQYXJhbWV0ZXJzW2ldOwogICAgICAgICBtX2lucHV0SGFuZGxl
ckNsaWVudC0+c2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0dXJuIERpZEhhbmRsZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3Np
dG9ySW5wdXRIYW5kbGVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuaAppbmRleCA2NDY0NzEwNWIwM2M3MmRkYzc2Yjk4ZmU5
OThlMjhiY2U3ZjI3ZDM3Li41ZjQwYmIzNmIyMjRmY2NlZjEzNGUyNWZhYmY3NWMyNDM5OWViNjE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb21wb3NpdG9ySW5w
dXRIYW5kbGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbXBv
c2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBhbnkgY2FsbHMgb3V0IHRvIHRoZSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50LiBT
b21lIGlucHV0IHR5cGVzIGRlZmVyIHRvIGhlbHBlcnMuCiAgICAgRXZlbnREaXNwb3NpdGlvbiBo
YW5kbGVJbnB1dEV2ZW50SW50ZXJuYWwoY29uc3QgV2ViSW5wdXRFdmVudCYpOwogCi0gICAgRXZl
bnREaXNwb3NpdGlvbiBoYW5kbGVHZXN0dXJlRmxpbmcoY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7
CisgICAgRXZlbnREaXNwb3NpdGlvbiBoYW5kbGVHZXN0dXJlRmxpbmcoY29uc3QgV2ViR2VzdHVy
ZUZsaW5nRXZlbnQmKTsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBhY3R1YWxseSBoYWQg
YW4gYWN0aXZlIGZsaW5nIHRvIGNhbmNlbC4KICAgICBib29sIGNhbmNlbEN1cnJlbnRGbGluZygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFdmVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50LmNwcAppbmRleCBk
MjA0ZGZhYzJkYWE1OWZhYWI4MWZlMTBhMjUzODA1ODk5ZDQ0NTNiLi5iZmIwNTFkYTk1ZWYyMmRl
NGExMWY5NmM0OTU2MjdiYmY4MGE2N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnB1dEV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEV2ZW50LmNwcApAQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBTYW1lU2l6ZUFzV2Vi
TW91c2VXaGVlbEV2ZW50IDogcHVibGljIFNhbWVTaXplQXNXZWJNb3VzZUV2ZW50IHsKIH07CiAK
IGNsYXNzIFNhbWVTaXplQXNXZWJHZXN0dXJlRXZlbnQgOiBwdWJsaWMgU2FtZVNpemVBc1dlYklu
cHV0RXZlbnQgewotICAgIGludCBnZXN0dXJlRGF0YVs4XTsKKyAgICBpbnQgZ2VzdHVyZURhdGFb
OV07CiB9OwogCiBjbGFzcyBTYW1lU2l6ZUFzV2ViVG91Y2hFdmVudCA6IHB1YmxpYyBTYW1lU2l6
ZUFzV2ViSW5wdXRFdmVudCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKaW5kZXggODhlNGJkOGMwYzljYTFiNDdkMDJiNGIyMzZjYTdhZGIxOGFmNjhkYS4uYjZk
ZjA5NzVmZWQxYjMxNjc2OTE2Yjc1MzkzMDkyMjUyMjZjNTYxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNjMyLDggKzYzMiwxMCBAQCBib29sIFdl
YlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBldmVu
dCkKICAgICAgICAgbV9sYXN0V2hlZWxQb3NpdGlvbiA9IFdlYlBvaW50KGV2ZW50LngsIGV2ZW50
LnkpOwogICAgICAgICBtX2xhc3RXaGVlbEdsb2JhbFBvc2l0aW9uID0gV2ViUG9pbnQoZXZlbnQu
Z2xvYmFsWCwgZXZlbnQuZ2xvYmFsWSk7CiAgICAgICAgIG1fZmxpbmdNb2RpZmllciA9IGV2ZW50
Lm1vZGlmaWVyczsKLSAgICAgICAgLy8gRklYTUU6IE1ha2UgdGhlIGN1cnZlIHBhcmFtZXRyaXph
YmxlIGZyb20gdGhlIGJyb3dzZXIuCi0gICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2
ZVBsYXRmb3JtR2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdl
c3R1cmVDdXJ2ZTo6Y3JlYXRlKEZsb2F0UG9pbnQoZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0YVkp
KSwgdGhpcyk7CisgICAgICAgIE93blB0cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gZmxpbmdDdXJ2
ZTsKKyAgICAgICAgY29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQmIGZsaW5nRXZlbnQgPSAqc3Rh
dGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUZsaW5nRXZlbnQqPigmZXZlbnQpOworICAgICAgICBm
bGluZ0N1cnZlID0gVG91Y2hwYWRGbGluZ1BsYXRmb3JtR2VzdHVyZUN1cnZlOjpjcmVhdGUoRmxv
YXRQb2ludChldmVudC5kZWx0YVgsIGV2ZW50LmRlbHRhWSksIGZsaW5nRXZlbnQubnVtYmVyT2ZG
bGluZ0NvbmZpZ1BhcmFtZXRlcnMsIGZsaW5nRXZlbnQuZmxpbmdBY2NlbGVyYXRpb25Db250cm9s
UGFyYW1ldGVycyk7CisgICAgICAgIG1fZ2VzdHVyZUFuaW1hdGlvbiA9IEFjdGl2ZVBsYXRmb3Jt
R2VzdHVyZUFuaW1hdGlvbjo6Y3JlYXRlKGZsaW5nQ3VydmUucmVsZWFzZSgpLCB0aGlzKTsKICAg
ICAgICAgc2NoZWR1bGVBbmltYXRpb24oKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtNjg0LDcgKzY4Niw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyCiAgICAgbV9sYXN0V2hl
ZWxQb3NpdGlvbiA9IHBhcmFtZXRlcnMucG9pbnQ7CiAgICAgbV9sYXN0V2hlZWxHbG9iYWxQb3Np
dGlvbiA9IHBhcmFtZXRlcnMuZ2xvYmFsUG9pbnQ7CiAgICAgbV9mbGluZ01vZGlmaWVyID0gcGFy
YW1ldGVycy5tb2RpZmllcnM7Ci0gICAgT3duUHRyPFBsYXRmb3JtR2VzdHVyZUN1cnZlPiBjdXJ2
ZSA9IFRvdWNocGFkRmxpbmdQbGF0Zm9ybUdlc3R1cmVDdXJ2ZTo6Y3JlYXRlKHBhcmFtZXRlcnMu
ZGVsdGEsIEludFBvaW50KHBhcmFtZXRlcnMuY3VtdWxhdGl2ZVNjcm9sbCkpOworICAgIE93blB0
cjxQbGF0Zm9ybUdlc3R1cmVDdXJ2ZT4gY3VydmUgPSBUb3VjaHBhZEZsaW5nUGxhdGZvcm1HZXN0
dXJlQ3VydmU6OmNyZWF0ZShwYXJhbWV0ZXJzLmRlbHRhLCBwYXJhbWV0ZXJzLm51bWJlck9mQWNj
ZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRlcnMsIHBhcmFtZXRlcnMuZmxpbmdBY2NlbGVyYXRpb25D
b250cm9sLCBJbnRQb2ludChwYXJhbWV0ZXJzLmN1bXVsYXRpdmVTY3JvbGwpKTsKICAgICBtX2dl
c3R1cmVBbmltYXRpb24gPSBBY3RpdmVQbGF0Zm9ybUdlc3R1cmVBbmltYXRpb246OmNyZWF0ZShj
dXJ2ZS5yZWxlYXNlKCksIHRoaXMsIHBhcmFtZXRlcnMuc3RhcnRUaW1lKTsKICAgICBzY2hlZHVs
ZUFuaW1hdGlvbigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QuY3BwCmluZGV4
IDkyZjAwNjE4NDE0Nzk1NmUxMDE5ZmM2OTAxNWY2MzllNDg5NGYzMzEuLjliZjZjZmVmZmY2Nzhm
NzZhZGI2NTIyODA5MmQ5MzRjZWQ5MjU4NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdC5jcHAKQEAgLTE2Niw2ICsxNjYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgT3duUHRyPFdlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsPiBtX2lucHV0SGFuZGxlcjsKICAgICBNb2NrV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckNsaWVudCBtX21vY2tDbGllbnQ7CiAgICAgV2ViR2VzdHVyZUV2
ZW50IGdlc3R1cmU7CisgICAgV2ViR2VzdHVyZUZsaW5nRXZlbnQgZmxpbmc7CiAKICAgICBlbnVt
IEV4cGVjdGVkRGlzcG9zaXRpb24geyBEaWRIYW5kbGUsIERpZE5vdEhhbmRsZSwgRHJvcEV2ZW50
IH07CiAgICAgRXhwZWN0ZWREaXNwb3NpdGlvbiBtX2V4cGVjdGVkRGlzcG9zaXRpb247CkBAIC0y
ODcsMTAgKzI4OCwxMSBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlRmxpbmdTdGFydGVkKQogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5k
bGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAg
LldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6
U2Nyb2xsU3RhcnRlZCkpOwogCi0gICAgZ2VzdHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUZsaW5nU3RhcnQ7Ci0gICAgZ2VzdHVyZS5kZWx0YVggPSAxMDsKKyAgICBmbGluZy50eXBl
ID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmcuZGVsdGFYID0g
MTA7CisKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1
bGVBbmltYXRpb24oKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2Vz
dHVyZSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZmxpbmcpOwogCiAg
ICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwogCkBAIC0zMDgsOCArMzEwLDggQEAgVEVTVF9G
KFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVzdCwgZ2VzdHVyZUZsaW5nRmFpbGVkKQog
ICAgIEVYUEVDVF9DQUxMKG1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0
ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkKICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVy
bihXZWJDb3JlOjpDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsRmFpbGVkKSk7CiAKLSAgICBn
ZXN0dXJlLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKLSAgICBtX2lu
cHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChnZXN0dXJlKTsKKyAgICBmbGluZy50eXBlID0g
V2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZmxpbmcpOwogCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NLUygpOwog
CkBAIC0zMjYsOCArMzI4LDggQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBs
VGVzdCwgZ2VzdHVyZUZsaW5nSWdub3JlZCkKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lucHV0
SGFuZGxlckNsaWVudCwgc2Nyb2xsQmVnaW4odGVzdGluZzo6XywgdGVzdGluZzo6XykpCiAgICAg
ICAgIC5XaWxsT25jZSh0ZXN0aW5nOjpSZXR1cm4oV2ViQ29yZTo6Q0NJbnB1dEhhbmRsZXJDbGll
bnQ6OlNjcm9sbElnbm9yZWQpKTsKIAotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVGbGluZ1N0YXJ0OwotICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50
KGdlc3R1cmUpOworICAgIGZsaW5nLnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdT
dGFydDsKKyAgICBtX2lucHV0SGFuZGxlci0+aGFuZGxlSW5wdXRFdmVudChmbGluZyk7CiAKICAg
ICBWRVJJRllfQU5EX1JFU0VUX01PQ0tTKCk7CiAKQEAgLTM0NCwyMiArMzQ2LDIyIEBAIFRFU1Rf
RihXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbFRlc3QsIGdlc3R1cmVGbGluZ0FuaW1hdGVz
KQogCiAgICAgLy8gT24gdGhlIGZsaW5nIHN0YXJ0LCB3ZSBzaG91bGQgc2NoZWR1bGUgYW4gYW5p
bWF0aW9uIGJ1dCBub3QgYWN0dWFsbHkgc3RhcnQKICAgICAvLyBzY3JvbGxpbmcuCi0gICAgZ2Vz
dHVyZS50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CisgICAgZmxpbmcu
dHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogICAgIFdlYkZsb2F0UG9p
bnQgZmxpbmdEZWx0YSA9IFdlYkZsb2F0UG9pbnQoMTAwMCwgMCk7CiAgICAgV2ViUG9pbnQgZmxp
bmdQb2ludCA9IFdlYlBvaW50KDcsIDEzKTsKICAgICBXZWJQb2ludCBmbGluZ0dsb2JhbFBvaW50
ID0gV2ViUG9pbnQoMTcsIDIzKTsKICAgICBpbnQgbW9kaWZpZXJzID0gNzsKLSAgICBnZXN0dXJl
LmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVsdGEu
eTsKLSAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7Ci0gICAgZ2VzdHVyZS55ID0gZmxpbmdQ
b2ludC55OwotICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKLSAgICBn
ZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7Ci0gICAgZ2VzdHVyZS5tb2RpZmll
cnMgPSBtb2RpZmllcnM7CisgICAgZmxpbmcuZGVsdGFYID0gZmxpbmdEZWx0YS54OworICAgIGZs
aW5nLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBmbGluZy54ID0gZmxpbmdQb2ludC54Owor
ICAgIGZsaW5nLnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZmxpbmcuZ2xvYmFsWCA9IGZsaW5nR2xv
YmFsUG9pbnQueDsKKyAgICBmbGluZy5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55OworICAg
IGZsaW5nLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKICAgICBFWFBFQ1RfQ0FMTChtX21vY2tDQ0lu
cHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0NBTEwo
bV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRlc3Rpbmc6Ol8sIHRlc3Rp
bmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJuKFdlYkNvcmU6OkNDSW5w
dXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgbV9pbnB1dEhhbmRsZXItPmhh
bmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgbV9pbnB1dEhhbmRsZXItPmhhbmRsZUlucHV0
RXZlbnQoZmxpbmcpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKICAgICAvLyBUaGUgZmlyc3QgYW5p
bWF0ZSBjYWxsIHNob3VsZCBsZXQgdXMgcGljayB1cCBhbiBhbmltYXRpb24gc3RhcnQgdGltZSwg
YnV0IHdlCkBAIC00MjgsMjIgKzQzMCwyOCBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFu
ZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAgICBWRVJJRllfQU5E
X1JFU0VUX01PQ0tTKCk7CiAKICAgICAvLyBTdGFydCBhIGdlc3R1cmUgZmxpbmcgaW4gdGhlIC1Y
IGRpcmVjdGlvbiB3aXRoIHplcm8gWSBtb3ZlbWVudC4KLSAgICBnZXN0dXJlLnR5cGUgPSBXZWJJ
bnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDsKKyAgICBmbGluZy50eXBlID0gV2ViSW5wdXRF
dmVudDo6R2VzdHVyZUZsaW5nU3RhcnQ7CiAgICAgV2ViRmxvYXRQb2ludCBmbGluZ0RlbHRhID0g
V2ViRmxvYXRQb2ludCgxMDAwLCAwKTsKICAgICBXZWJQb2ludCBmbGluZ1BvaW50ID0gV2ViUG9p
bnQoNywgMTMpOwogICAgIFdlYlBvaW50IGZsaW5nR2xvYmFsUG9pbnQgPSBXZWJQb2ludCgxNywg
MjMpOwogICAgIGludCBtb2RpZmllcnMgPSAxOwotICAgIGdlc3R1cmUuZGVsdGFYID0gZmxpbmdE
ZWx0YS54OwotICAgIGdlc3R1cmUuZGVsdGFZID0gZmxpbmdEZWx0YS55OwotICAgIGdlc3R1cmUu
eCA9IGZsaW5nUG9pbnQueDsKLSAgICBnZXN0dXJlLnkgPSBmbGluZ1BvaW50Lnk7Ci0gICAgZ2Vz
dHVyZS5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OwotICAgIGdlc3R1cmUuZ2xvYmFsWSA9
IGZsaW5nR2xvYmFsUG9pbnQueTsKLSAgICBnZXN0dXJlLm1vZGlmaWVycyA9IG1vZGlmaWVyczsK
KyAgICBmbGluZy5kZWx0YVggPSBmbGluZ0RlbHRhLng7CisgICAgZmxpbmcuZGVsdGFZID0gZmxp
bmdEZWx0YS55OworICAgIGZsaW5nLnggPSBmbGluZ1BvaW50Lng7CisgICAgZmxpbmcueSA9IGZs
aW5nUG9pbnQueTsKKyAgICBmbGluZy5nbG9iYWxYID0gZmxpbmdHbG9iYWxQb2ludC54OworICAg
IGZsaW5nLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7CisgICAgZmxpbmcubW9kaWZpZXJz
ID0gbW9kaWZpZXJzOworICAgIGZsb2F0IG1vY2tFbXBpcmljYWxQYXJhbXNbXSA9IHsxLjVlKzAx
LCAyLjBlKzA0LCAtMy4wZSswNCwgMi4xZSswNCwgLTUuNWUrMDMsIDEuM307CisgICAgdW5zaWdu
ZWQgaW50IG51bWJlck9mUGFyYW1ldGVycyA9IHNpemVvZihtb2NrRW1waXJpY2FsUGFyYW1zKSAv
IHNpemVvZihmbG9hdCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mUGFy
YW1ldGVyczsgaSsrKQorICAgICAgICAgZmxpbmcuZmxpbmdBY2NlbGVyYXRpb25Db250cm9sUGFy
YW1ldGVyc1tpXSA9IG1vY2tFbXBpcmljYWxQYXJhbXNbaV07CisgICAgZmxpbmcubnVtYmVyT2ZG
bGluZ0NvbmZpZ1BhcmFtZXRlcnMgPSBudW1iZXJPZlBhcmFtZXRlcnM7CisKICAgICBFWFBFQ1Rf
Q0FMTChtX21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCwgc2NoZWR1bGVBbmltYXRpb24oKSk7CiAg
ICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRsZXJDbGllbnQsIHNjcm9sbEJlZ2luKHRl
c3Rpbmc6Ol8sIHRlc3Rpbmc6Ol8pKQogICAgICAgICAuV2lsbE9uY2UodGVzdGluZzo6UmV0dXJu
KFdlYkNvcmU6OkNDSW5wdXRIYW5kbGVyQ2xpZW50OjpTY3JvbGxTdGFydGVkKSk7Ci0gICAgbV9p
bnB1dEhhbmRsZXItPmhhbmRsZUlucHV0RXZlbnQoZ2VzdHVyZSk7CisgICAgbV9pbnB1dEhhbmRs
ZXItPmhhbmRsZUlucHV0RXZlbnQoZmxpbmcpOwogCiAgICAgdGVzdGluZzo6TW9jazo6VmVyaWZ5
QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fbW9ja0NDSW5wdXRIYW5kbGVyQ2xpZW50KTsKIApAQCAt
NDc4LDYgKzQ4NiwxMSBAQCBURVNUX0YoV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0
LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJlc2V0cykKICAgICAvLyAqKSBzdGFydFRpbWUgc2hvdWxk
IGJlIDEwIHRvIG1hdGNoIHRoZSB0aW1lIHBhcmFtZXRlciBvZiB0aGUgZmlyc3QgYW5pbWF0ZSgp
IGNhbGwgYWZ0ZXIgdGhlIEdlc3R1cmVGbGluZ1N0YXJ0CiAgICAgLy8gKikgY3VtdWxhdGl2ZVNj
cm9sbCBkZXBlbmRzIG9uIHRoZSBjdXJ2ZSwgYnV0IHNpbmNlIHdlJ3ZlIGFuaW1hdGVkIGluIHRo
ZSAtWCBkaXJlY3Rpb24gdGhlIFggdmFsdWUgc2hvdWxkIGJlIDwgMAogICAgIEVYUEVDVF9DQUxM
KG1fbW9ja0NsaWVudCwgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKHRlc3Rpbmc6
OkFsbE9mKAorICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFt
ZXRlcnM6Om51bWJlck9mQWNjZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRlcnMsCisgICAgICAgICAg
ICB0ZXN0aW5nOjpFcShudW1iZXJPZlBhcmFtZXRlcnMpKSwKKyAgICAgICAgdGVzdGluZzo6Rmll
bGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzOjpmbGluZ0FjY2VsZXJhdGlvbkNvbnRy
b2wsCisgICAgICAgICAgICB0ZXN0aW5nOjpFbGVtZW50c0FyZShtb2NrRW1waXJpY2FsUGFyYW1z
WzBdLCB0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfLAorICAg
ICAgICAgICAgbW9ja0VtcGlyaWNhbFBhcmFtc1s1XSwgdGVzdGluZzo6XywgdGVzdGluZzo6Xykp
LAogICAgICAgICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6
OmRlbHRhLCB0ZXN0aW5nOjpFcShmbGluZ0RlbHRhKSksCiAgICAgICAgIHRlc3Rpbmc6OkZpZWxk
KCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6cG9pbnQsIHRlc3Rpbmc6OkVxKGZsaW5n
UG9pbnQpKSwKICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzOjpnbG9iYWxQb2ludCwgdGVzdGluZzo6RXEoZmxpbmdHbG9iYWxQb2ludCkpLApAQCAt
NTA3LDIyICs1MjAsMjMgQEAgVEVTVF9GKFdlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsVGVz
dCwgZ2VzdHVyZUZsaW5nVHJhbnNmZXJSZXNldHMpCiAgICAgVkVSSUZZX0FORF9SRVNFVF9NT0NL
UygpOwogCiAgICAgLy8gU3RhcnQgYSBzZWNvbmQgZ2VzdHVyZSBmbGluZywgdGhpcyB0aW1lIGlu
IHRoZSArWSBkaXJlY3Rpb24gd2l0aCBubyBYLgotICAgIGdlc3R1cmUudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OworICAgIGZsaW5nLnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRmxpbmdTdGFydDsKICAgICBmbGluZ0RlbHRhID0gV2ViRmxvYXRQb2ludCgwLCAt
MTAwMCk7CiAgICAgZmxpbmdQb2ludCA9IFdlYlBvaW50KDk1LCA4Nyk7CiAgICAgZmxpbmdHbG9i
YWxQb2ludCA9IFdlYlBvaW50KDMyLCA3MSk7CiAgICAgbW9kaWZpZXJzID0gMjsKLSAgICBnZXN0
dXJlLmRlbHRhWCA9IGZsaW5nRGVsdGEueDsKLSAgICBnZXN0dXJlLmRlbHRhWSA9IGZsaW5nRGVs
dGEueTsKLSAgICBnZXN0dXJlLnggPSBmbGluZ1BvaW50Lng7Ci0gICAgZ2VzdHVyZS55ID0gZmxp
bmdQb2ludC55OwotICAgIGdlc3R1cmUuZ2xvYmFsWCA9IGZsaW5nR2xvYmFsUG9pbnQueDsKLSAg
ICBnZXN0dXJlLmdsb2JhbFkgPSBmbGluZ0dsb2JhbFBvaW50Lnk7Ci0gICAgZ2VzdHVyZS5tb2Rp
ZmllcnMgPSBtb2RpZmllcnM7CisgICAgZmxpbmcuZGVsdGFYID0gZmxpbmdEZWx0YS54OworICAg
IGZsaW5nLmRlbHRhWSA9IGZsaW5nRGVsdGEueTsKKyAgICBmbGluZy54ID0gZmxpbmdQb2ludC54
OworICAgIGZsaW5nLnkgPSBmbGluZ1BvaW50Lnk7CisgICAgZmxpbmcuZ2xvYmFsWCA9IGZsaW5n
R2xvYmFsUG9pbnQueDsKKyAgICBmbGluZy5nbG9iYWxZID0gZmxpbmdHbG9iYWxQb2ludC55Owor
ICAgIGZsaW5nLm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICBmbGluZy5udW1iZXJPZkZsaW5n
Q29uZmlnUGFyYW1ldGVycyA9IDA7CiAgICAgRVhQRUNUX0NBTEwobV9tb2NrQ0NJbnB1dEhhbmRs
ZXJDbGllbnQsIHNjaGVkdWxlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fbW9ja0ND
SW5wdXRIYW5kbGVyQ2xpZW50LCBzY3JvbGxCZWdpbih0ZXN0aW5nOjpfLCB0ZXN0aW5nOjpfKSkK
ICAgICAgICAgLldpbGxPbmNlKHRlc3Rpbmc6OlJldHVybihXZWJDb3JlOjpDQ0lucHV0SGFuZGxl
ckNsaWVudDo6U2Nyb2xsU3RhcnRlZCkpOwotICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1
dEV2ZW50KGdlc3R1cmUpOworICAgIG1faW5wdXRIYW5kbGVyLT5oYW5kbGVJbnB1dEV2ZW50KGZs
aW5nKTsKIAogICAgIHRlc3Rpbmc6Ok1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X21vY2tDQ0lucHV0SGFuZGxlckNsaWVudCk7CiAKQEAgLTU1Miw2ICs1NjYsOCBAQCBURVNUX0Yo
V2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGxUZXN0LCBnZXN0dXJlRmxpbmdUcmFuc2ZlclJl
c2V0cykKIAogICAgIC8vIFdlIHNob3VsZCBnZXQgcGFyYW1ldGVycyBmcm9tIHRoZSBzZWNvbmQg
ZmxpbmcsIG5vdGhpbmcgZnJvbSB0aGUgZmlyc3QgZmxpbmcgc2hvdWxkICJsZWFrIi4KICAgICBF
WFBFQ1RfQ0FMTChtX21vY2tDbGllbnQsIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlv
bih0ZXN0aW5nOjpBbGxPZigKKyAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOjpudW1iZXJPZkFjY2VsZXJhdGlvbkNvbnRyb2xQYXJhbWV0ZXJzLAor
ICAgICAgICAgICAgdGVzdGluZzo6RXEoKHVuc2lnbmVkIGludCkwKSksCiAgICAgICAgIHRlc3Rp
bmc6OkZpZWxkKCZXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVyczo6ZGVsdGEsIHRlc3Rpbmc6
OkVxKGZsaW5nRGVsdGEpKSwKICAgICAgICAgdGVzdGluZzo6RmllbGQoJldlYkFjdGl2ZVdoZWVs
RmxpbmdQYXJhbWV0ZXJzOjpwb2ludCwgdGVzdGluZzo6RXEoZmxpbmdQb2ludCkpLAogICAgICAg
ICB0ZXN0aW5nOjpGaWVsZCgmV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnM6Omdsb2JhbFBv
aW50LCB0ZXN0aW5nOjpFcShmbGluZ0dsb2JhbFBvaW50KSksCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWU5ZTJjYTFmNmIxNTdkMDRlYTAxZjQ0
ZDBjYjYxMzQzNGUyYzQ0Zi4uOTkxZmUxMmY4YmE0MjE4ZjIzZTUxNDM1OGVmOTE0YzAxZDYzY2U0
MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE0IEBACisyMDEyLTA0LTEzICBSb2JlcnQgS3JvZWdlciAgPHJqa3JvZWdlQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIG1ha2UgdHJhY2twYWQgZ2VzdHVyZSBjdXJ2
ZXMgY29uZmlndXJhYmxlIGV4dGVybmFsbHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgxNjYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5j
cHA6IEFkZGVkIGFiaWxpdHkgdG8gc2V0IG9wdGlvbmFsCisgICAgICAgIGZsaW5nIHBhcmFtZXRl
cnMuCisgICAgICAgIChFdmVudFNlbmRlcjo6Z2VzdHVyZUZsaW5nU3RhcnQpOgorCiAyMDEyLTA0
LTI0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMTAxMjAxNTU+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI2NjQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2
ZW50U2VuZGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVy
LmNwcAppbmRleCBhZDRhMDhlMGY0NTcxOGRkZjQ3NGY3MjFkYWUyZGI3NTdjODAzMDQyLi5kOWFl
OTdjZWEyYzQ3ZWYwZjc0NWMyMzUxNWJkMjY3MDM1MTkyYTM0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9FdmVudFNlbmRlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vRXZlbnRTZW5kZXIuY3BwCkBAIC0xMTY5LDE2ICsxMTY5LDIyIEBA
IHZvaWQgRXZlbnRTZW5kZXI6Omdlc3R1cmVGbGluZ1N0YXJ0KGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYgYXJndW1lbnRzLCBDcHBWYXJpYW50CiAgICAgICAgIGlmICghYXJndW1lbnRzW2ldLmlzTnVt
YmVyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICBXZWJHZXN0dXJlRXZlbnQgZXZlbnQ7
CisgICAgV2ViR2VzdHVyZUZsaW5nRXZlbnQgZXZlbnQ7CiAgICAgZXZlbnQudHlwZSA9IFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OwogCiAgICAgZXZlbnQueCA9IHN0YXRpY19jYXN0
PGZsb2F0Pihhcmd1bWVudHNbMF0udG9Eb3VibGUoKSk7CiAgICAgZXZlbnQueSA9IHN0YXRpY19j
YXN0PGZsb2F0Pihhcmd1bWVudHNbMV0udG9Eb3VibGUoKSk7CiAgICAgZXZlbnQuZ2xvYmFsWCA9
IGV2ZW50Lng7CiAgICAgZXZlbnQuZ2xvYmFsWSA9IGV2ZW50Lnk7Ci0KICAgICBldmVudC5kZWx0
YVggPSBzdGF0aWNfY2FzdDxmbG9hdD4oYXJndW1lbnRzWzJdLnRvRG91YmxlKCkpOwogICAgIGV2
ZW50LmRlbHRhWSA9IHN0YXRpY19jYXN0PGZsb2F0Pihhcmd1bWVudHNbM10udG9Eb3VibGUoKSk7
CisKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBXZWJHZXN0dXJlRmxpbmdF
dmVudDo6RGVmYXVsdE51bWJlck9mR2VzdHVyZUZsaW5nUGFyYW1ldGVycyAmJiBpICsgNCA8IGFy
Z3VtZW50cy5zaXplKCk7IGkrKykKKyAgICAgICAgaWYgKGFyZ3VtZW50c1tpICsgNF0uaXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgIGV2ZW50LmZsaW5nQWNjZWxlcmF0aW9uQ29udHJvbFBhcmFtZXRl
cnNbaV0gPSAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGFyZ3VtZW50c1tpICsgNF0udG9Eb3VibGUoKSk7
CisgICAgZXZlbnQubnVtYmVyT2ZGbGluZ0NvbmZpZ1BhcmFtZXRlcnMgPSBpOworCiAgICAgZXZl
bnQudGltZVN0YW1wU2Vjb25kcyA9IGdldEN1cnJlbnRFdmVudFRpbWVTZWMoKTsKICAgICB3ZWJ2
aWV3KCktPmhhbmRsZUlucHV0RXZlbnQoZXZlbnQpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>