<?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>48544</bug_id>
          
          <creation_ts>2010-10-28 11:56:01 -0700</creation_ts>
          <short_desc>support -webkit-tap-highlight-color</short_desc>
          <delta_ts>2011-10-16 23:50:09 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tiancheng Jiang">tijiang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>ap</cc>
    
    <cc>dbates</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>efidler</cc>
    
    <cc>eoconnor</cc>
    
    <cc>fsamuel</cc>
    
    <cc>gmak</cc>
    
    <cc>jnd</cc>
    
    <cc>kenneth</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>301204</commentid>
    <comment_count>0</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2010-10-28 11:56:01 -0700</bug_when>
    <thetext>We should apply -webkit-tap-highlight-color to allow the web developers to change the tap highlight color to fit their website.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301207</commentid>
    <comment_count>1</comment_count>
      <attachid>72217</attachid>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2010-10-28 11:57:09 -0700</bug_when>
    <thetext>Created attachment 72217
add -webkit-tap-highlight-color feature with virtual function allow different platform to choose default color</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301213</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-28 12:02:16 -0700</bug_when>
    <thetext>Attachment 72217 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSParser.cpp:1617:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/css/CSSParser.cpp:1619:  Should have a space between // and comment  [whitespace/comments] [4]
WebCore/rendering/RenderTheme.h:149:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/rendering/style/RenderStyle.cpp:32:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301252</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-28 12:59:26 -0700</bug_when>
    <thetext>Attachment 72217 did not build on qt:
Build output: http://queues.webkit.org/results/4866016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460384</commentid>
    <comment_count>4</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-01 05:12:36 -0700</bug_when>
    <thetext>I am interested in this bug.

@Tiancheng, will you continue working on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460447</commentid>
    <comment_count>5</comment_count>
    <who name="Tiancheng Jiang">tijiang</who>
    <bug_when>2011-09-01 07:38:05 -0700</bug_when>
    <thetext>Maybe not recently. Feel free to work on it. And I think someone is working on this as well, especially for iOS. There is a bug number but I forget the number, sorry.

(In reply to comment #4)
&gt; I am interested in this bug.
&gt; 
&gt; @Tiancheng, will you continue working on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460628</commentid>
    <comment_count>6</comment_count>
      <attachid>72217</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-01 11:21:31 -0700</bug_when>
    <thetext>Comment on attachment 72217
add -webkit-tap-highlight-color feature with virtual function allow different platform to choose default color

I think this should be #ifdeffed to avoid using extra memory on platforms for which the notion of tap highlight does not apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460932</commentid>
    <comment_count>7</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-01 16:59:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Maybe not recently. Feel free to work on it. And I think someone is working on this as well, especially for iOS. There is a bug number but I forget the number, sorry.
&gt; 
Thanks Tiancheng! After searching existing webkit bugs, I haven&apos;t found related on going bug. But the &quot;-webkit-tap-highlight-color&quot; is already supported by Safari only on IOS as a extension,  but it&apos;s good to make it supported on other platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>460947</commentid>
    <comment_count>8</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-01 17:22:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 72217 [details])
&gt; I think this should be #ifdeffed to avoid using extra memory on platforms for which the notion of tap highlight does not apply.

Good point, Thanks Simon!. For using ifdef,  The first thing came to my mind is to use OS() macros since it can distinguish whether the device platforms is for desktop or portable if we only want to support this feature on portable devices which support touch panel.

But since there may be more OS marcos for the portable platforms w/ touch panel. I guess it may be better to use ENABLE(TOUCH_EVENTS) to control it. Sounds good? (Or another ENABLE macro?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462144</commentid>
    <comment_count>9</comment_count>
      <attachid>106332</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-05 06:36:14 -0700</bug_when>
    <thetext>Created attachment 106332
patch candidate

This patch is based on tiancheng&apos;s patch, only enables the tap-highlight property when enabling touch event.  Also adds a layout test draft.  I want to get some early feedbacks before sending for review.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464715</commentid>
    <comment_count>10</comment_count>
      <attachid>106856</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-09 03:50:05 -0700</bug_when>
    <thetext>Created attachment 106856
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>466809</commentid>
    <comment_count>11</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-13 20:50:01 -0700</bug_when>
    <thetext>Can someone take a look and give comments? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467224</commentid>
    <comment_count>12</comment_count>
      <attachid>106856</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-09-14 12:12:15 -0700</bug_when>
    <thetext>Comment on attachment 106856
patch v1

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

&gt; Source/WebCore/platform/graphics/Color.h:166
&gt; +    static const RGBA32 tapHighlight = 0x33000000;

This doesn&apos;t seem like a great place for this to go.  It seems like it should just be in RenderTheme.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467677</commentid>
    <comment_count>13</comment_count>
      <attachid>107468</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-15 00:14:26 -0700</bug_when>
    <thetext>Created attachment 107468
patch V2

(In reply to comment #12)
&gt; This doesn&apos;t seem like a great place for this to go.  It seems like it should just be in RenderTheme.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467684</commentid>
    <comment_count>14</comment_count>
      <attachid>107469</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-15 00:28:28 -0700</bug_when>
    <thetext>Created attachment 107469
patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467701</commentid>
    <comment_count>15</comment_count>
      <attachid>107474</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-15 01:02:34 -0700</bug_when>
    <thetext>Created attachment 107474
patch v2

upload latest patch v2 to add missing layout test files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473332</commentid>
    <comment_count>16</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-26 13:08:48 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=107474) [details]
&gt; patch v2
&gt; 
&gt; upload latest patch v2 to add missing layout test files.

Could you re upload a patch that applies to trunk? Also Tiancheng&apos;s work was based on some code in iphone&apos;s release tarball. Maybe it should be mentioned as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473933</commentid>
    <comment_count>17</comment_count>
      <attachid>108849</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-27 08:03:27 -0700</bug_when>
    <thetext>Created attachment 108849
latest patch v2

(In reply to comment #16)
&gt; Could you re upload a patch that applies to trunk? Also Tiancheng&apos;s work was based on some code in iphone&apos;s release tarball. Maybe it should be mentioned as well.
done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473946</commentid>
    <comment_count>18</comment_count>
      <attachid>108849</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-27 08:37:52 -0700</bug_when>
    <thetext>Comment on attachment 108849
latest patch v2

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

Looks good to me. Would you mind to send an email to webkit-dev announcing it, since tap-highlight is not yet standard.

Ps: non of the EWS bots manage to apply this patch it seems.

&gt; Source/WebCore/css/CSSParser.cpp:1941
&gt; +             validPrimitive = true; // notice: apple call this valid_primitive 

this comment sounds a bit weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473949</commentid>
    <comment_count>19</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-27 08:43:47 -0700</bug_when>
    <thetext>Zalan as you did a similar patch for us, can you have a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474247</commentid>
    <comment_count>20</comment_count>
      <attachid>108849</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-27 14:38:17 -0700</bug_when>
    <thetext>Comment on attachment 108849
latest patch v2

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Based on tijiang@rim.com&apos;s patch which was based on some code in Apple IPhone&apos;s release tarball.

I would write:

Original code from the iOS WebCore code dump, extracted and modified by ....

&gt; Source/WebCore/ChangeLog:12
&gt; +        used as WebKit default tap highlight color.

I would leave out WebKit here.

&gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:31
&gt; -#include &lt;wtf/RefCounted.h&gt;
&gt;  #include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefCounted.h&gt;

Unrelated change... Should be in another patch

&gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:81
&gt;      unsigned resize : 2; // EResize
&gt; -    unsigned userSelect : 1;  // EUserSelect
&gt; +    unsigned userSelect : 1; // EUserSelect
&gt;      unsigned colorSpace : 1; // ColorSpace

This change seems unreleated

&gt; LayoutTests/fast/events/touch/tap-highlight-color-expected.txt:7
&gt; +Stage: touch start

Stage? Sounds pretty strange. Event: touch start, or so would be more clear

&gt; LayoutTests/fast/events/touch/script-tests/tap-highlight-color.js:56
&gt; +
&gt; +

No need for these newlines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474418</commentid>
    <comment_count>21</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-27 18:16:20 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 108849 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108849&amp;action=review
&gt; 
&gt; Looks good to me. Would you mind to send an email to webkit-dev announcing it, since tap-highlight is not yet standard.

Should I send it before landing it or after? 

&gt; 
&gt; Ps: non of the EWS bots manage to apply this patch it seems.
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.cpp:1941
&gt; &gt; +             validPrimitive = true; // notice: apple call this valid_primitive 
&gt; 
&gt; this comment sounds a bit weird.
It&apos;s originally written by Tiancheng. I will remove it in next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474424</commentid>
    <comment_count>22</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-27 18:22:03 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I would write:
&gt; 
&gt; Original code from the iOS WebCore code dump, extracted and modified by ....
&gt; 
&gt; I would leave out WebKit here.
Good suggestions, will change them in next update.
&gt; 
&gt; &gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:31
&gt; &gt; -#include &lt;wtf/RefCounted.h&gt;
&gt; &gt;  #include &lt;wtf/PassRefPtr.h&gt;
&gt; &gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; 
&gt; Unrelated change... Should be in another patch
It&apos;s just to make style-check happy. (resolved include order issue)
&gt; 
&gt; &gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:81
&gt; &gt;      unsigned resize : 2; // EResize
&gt; &gt; -    unsigned userSelect : 1;  // EUserSelect
&gt; &gt; +    unsigned userSelect : 1; // EUserSelect
&gt; &gt;      unsigned colorSpace : 1; // ColorSpace
&gt; 
&gt; This change seems unreleated
ditto. (removed redundant space)

&gt; 
&gt; Stage? Sounds pretty strange. Event: touch start, or so would be more clear
&gt; 
&gt; 
&gt; No need for these newlines
Will change them in next update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474433</commentid>
    <comment_count>23</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-09-27 19:01:11 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 108849 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108849&amp;action=review
&gt; &gt; 
&gt; &gt; Looks good to me. Would you mind to send an email to webkit-dev announcing it, since tap-highlight is not yet standard.
&gt; 
&gt; Should I send it before landing it or after? 

Before, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474733</commentid>
    <comment_count>24</comment_count>
      <attachid>109020</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-28 08:06:38 -0700</bug_when>
    <thetext>Created attachment 109020
patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474735</commentid>
    <comment_count>25</comment_count>
      <attachid>109020</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-28 08:16:08 -0700</bug_when>
    <thetext>Comment on attachment 109020
patch v3

Attachment 109020 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9889043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>474737</commentid>
    <comment_count>26</comment_count>
      <attachid>109020</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 08:24:22 -0700</bug_when>
    <thetext>Comment on attachment 109020
patch v3

Attachment 109020 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9888172</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475193</commentid>
    <comment_count>27</comment_count>
      <attachid>109113</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-28 19:43:52 -0700</bug_when>
    <thetext>Created attachment 109113
patch v3 to make ews happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475252</commentid>
    <comment_count>28</comment_count>
      <attachid>109113</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-28 23:32:01 -0700</bug_when>
    <thetext>Comment on attachment 109113
patch v3 to make ews happy

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

New failing tests:
svg/css/getComputedStyle-basic.xhtml
fast/css/getComputedStyle/computed-style.html
fast/css/getComputedStyle/computed-style-without-renderer.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>475580</commentid>
    <comment_count>29</comment_count>
      <attachid>109113</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-09-29 12:05:27 -0700</bug_when>
    <thetext>Comment on attachment 109113
patch v3 to make ews happy

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

r=me, as noone complained about the feature on the ML and it is used by iOS, Playbook, Nokia N9 series and possible others as well. It can thus be considered a widely used WebKit mobile/touch feature.

&gt; Source/WebCore/rendering/style/StyleRareInheritedData.h:80
&gt; -    unsigned userSelect : 1;  // EUserSelect
&gt; +    unsigned userSelect : 1; // EUserSelect

Let&apos;s remove unrelated changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476277</commentid>
    <comment_count>30</comment_count>
      <attachid>109337</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-09-30 13:21:50 -0700</bug_when>
    <thetext>Created attachment 109337
patch v3 to fix reported broken tests

This patch fixed the tests broken on try bot reported in comment #28. After considering the features support difference among all webkit ports (they may Change in the future) and &quot;-webkit-tap-highlight-color&quot; only supported on ports which support TOUCH_EVENTS. I disable the &quot;-webkit-tap-highlight-color&quot; output on related get computed style tests and only test it by using the new layout test fast/events/touch/tap-highlight-color.html.

Kenneth, Antonio, would you like to reexamine it? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476348</commentid>
    <comment_count>31</comment_count>
      <attachid>109337</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 15:30:09 -0700</bug_when>
    <thetext>Comment on attachment 109337
patch v3 to fix reported broken tests

Clearing flags on attachment: 109337

Committed r96433: &lt;http://trac.webkit.org/changeset/96433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476349</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-30 15:30:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476578</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-01 10:27:20 -0700</bug_when>
    <thetext>This test times out on Leopard:

fast/events/touch/tap-highlight-color.html

Is that expected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476579</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-01 10:32:03 -0700</bug_when>
    <thetext>I&apos;ve noted the test as timing out:
http://trac.webkit.org/changeset/96457

If that is in error, please correct the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476655</commentid>
    <comment_count>35</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-10-02 02:33:41 -0700</bug_when>
    <thetext>&gt; If that is in error, please correct the issue.

Thanks for fix, Adam. I don&apos;t have Leopard on vacation now. Will fix it when I am back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480698</commentid>
    <comment_count>36</comment_count>
      <attachid>110297</attachid>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-10-09 04:34:24 -0700</bug_when>
    <thetext>Created attachment 110297
patch to clean test expectation

The timeout on LEOPARD is caused bug 66577, change the bug no and close this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480709</commentid>
    <comment_count>37</comment_count>
      <attachid>110297</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 06:08:49 -0700</bug_when>
    <thetext>Comment on attachment 110297
patch to clean test expectation

Clearing flags on attachment: 110297

Committed r97027: &lt;http://trac.webkit.org/changeset/97027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480710</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 06:08:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482429</commentid>
    <comment_count>39</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-10-12 08:38:34 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; All reviewed patches have been landed.  Closing bug.

The patch adds a new field in RareInheritedData, but in RenderStyle::diff() method, it does not take this new property into account when comparing two RenderStyle&apos;s.

I would say it is a missing part on the patch. Could you confirm?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484957</commentid>
    <comment_count>40</comment_count>
    <who name="Johnny(Jianning) Ding">jnd</who>
    <bug_when>2011-10-16 23:50:09 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; The patch adds a new field in RareInheritedData, but in RenderStyle::diff() method, it does not take this new property into account when comparing two RenderStyle&apos;s.
&gt; 
&gt; I would say it is a missing part on the patch. Could you confirm?

Hi Antonio,  I am not sure we need to compare tap-highlight-color in RenderStyle::diff  so far because.
1) tap-highlight-color don&apos;t affect the layout. Currently we don&apos;t use it in any rendering actions.
2) the render engine embedder (browser) may use tap-highlight-color to draw the highlight rectangle(s) in draw surface when users tap an element, but the render engine should do nothing.
The similar data field like tap-highlight-color in RareInheritedData is cursorData. We currently don&apos;t compare it in RenderStyle::diff.

But if we really need to return a diff for tap-highlight-color change,  a diff which can trigger repainting action to let embedder be aware of the change may be right choice, like StyleDifferenceRepaint.

What do you think?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72217</attachid>
            <date>2010-10-28 11:57:09 -0700</date>
            <delta_ts>2011-09-01 11:21:31 -0700</delta_ts>
            <desc>add -webkit-tap-highlight-color feature with virtual function allow different platform to choose default color</desc>
            <filename>0001-2010-10-28-Tiancheng-Jiang-tijiang-rim.com.patch</filename>
            <type>text/plain</type>
            <size>14524</size>
            <attacher name="Tiancheng Jiang">tijiang</attacher>
            
              <data encoding="base64">RnJvbSA1N2Y2NzNmOWViYTU5YmUwNThhYTRlNWI2MTM0ZTg0ZDM4OTllYmRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaWFuY2hlbmcgSmlhbmcgPHRpamlhbmdAcmltLmNvbT4KRGF0
ZTogRnJpLCAxNSBPY3QgMjAxMCAxMTo0NDowOSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTAt
MTAtMjggIFRpYW5jaGVuZyBKaWFuZyAgPHRpamlhbmdAcmltLmNvbT4KCiAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBh
bmQgYnVnIFVSTCAoT09QUyEpCgogICAgICAgIFRvIHN1cHBvcnQgdGhlIG5ldyBDU1MgcHJvcGVy
dHkgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yLCB3ZSBjb3B5IHRoZQogICAgICAgIHRoZSBj
b2RlIGZyb20gQXBwbGUgU2FmYXJpJ3Mgb3BlbiBzb3VyY2UgY29kZSBhbmQgYWRkIHRoZW0gdG8g
V2ViY29yZS4KCiAgICAgICAgQ2hhbmdlIHRoZSBjb2RlIGluIFJlbmRlclN0eWxlIHdoaWNoIFNh
ZmFyaSBoYXJkY29kZSB0aGUgcmV0dXJuIGNvbG9yCiAgICAgICAgZ3JheS4gV3JpdGUgYSBuZXcg
dmlydHVhbCBmdW5jdGlvbiB0byBhbGxvdyBkaWZmZXJlbnQgcGxhdGZvcm0gdG8gY2hvc2UKICAg
ICAgICB0aGVpciBwbGF0Zm9ybSBjb2xvci4KCiAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEp
CgogICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CiAgICAgICAg
KFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZSk6CiAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVZhbHVlKToKICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgogICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgogICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwOgogICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
OjpzZXRQbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKToKICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUaGVtZS5oOgogICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdo
bGlnaHRDb2xvcik6CiAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKToK
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgogICAgICAgIChXZWJDb3Jl
OjpJbmhlcml0ZWRGbGFnczo6dGFwSGlnaGxpZ2h0Q29sb3IpOgogICAgICAgIChXZWJDb3JlOjpJ
bmhlcml0ZWRGbGFnczo6c2V0VGFwSGlnaGxpZ2h0Q29sb3IpOgogICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgogICAgICAgIChXZWJDb3JlOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKToKICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CiAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgotLS0KIC4uLi9pbWFnZXMvcmVz
b3VyY2VzL2xhcmdlLXNpemUtaW1hZ2UtY3Jhc2guanBlZyAgIHwgIEJpbiAzNDcgLT4gMCBieXRl
cwogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDM5ICsrKysrKysrKysrKysrKysrKysrCiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwICAgICAgICB8ICAgIDMgKysKIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKysrKwogV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHlOYW1lcy5pbiAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgOSArKysrKwogV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCAgICAgICAgICAgICAgfCAgICAxICsKIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaCAgICAgICAgICAgICAgICAgIHwgICAgMSAr
CiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAgICAgICAgICAgICAgICAgICB8ICAg
IDUgKysrCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oICAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgKwogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwICAgICAg
ICAgICAgfCAgICA2ICsrKwogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCAg
ICAgICAgICAgICAgfCAgICAzICsrCiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmNwcCB8ICAgIDMgKysKIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuaCAgIHwgICAgMSArCiAxNCBmaWxlcyBjaGFuZ2VkLCA4NCBpbnNl
cnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3Rz
L2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9sYXJnZS1zaXplLWltYWdlLWNyYXNoLmpwZWcKCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvbGFyZ2Utc2l6ZS1pbWFn
ZS1jcmFzaC5qcGVnIGIvTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2xhcmdlLXNp
emUtaW1hZ2UtY3Jhc2guanBlZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU5NzE0
NzE1M2FhOTIyZDM2Yjc0ZGZjNDViZmQwZGQ1NzQ0MGI5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAw
MQoKbGl0ZXJhbCAzNDcKemNtZXg9PE5wSCYwV1VYQ0h3SCNWMV9ua1RXY1l1WiFJXj1Camc2Zytt
NGxzfm9zKk07aSR7YylobnQmNlFiP0Z6CnpMez5eKFBGNn1yTW5PZVNUfHI0bFN3PT5+VHZOeHUo
OFI8PFVmdDV4IXBLST8qdSk1QTJxUHlhQ2w1RHwxVFV8SQp6ayluKkU1eXt+SDBSfS0xZCk/aCMl
IzJENU9vRUtlZntnITxGdnVgNEZ0Q0dNaXZVY19FVWF3b2oydTgmTzkyS1oKek1yTEx2UndpYVBS
I3VRSU1rWnprN0N8OUpMc215TlZXcSVDcWU3Pn5pNlk3aUh5KnF3RHJXcmYxR3tyalFnSVZkCnpz
fXYmeDZFbGp6S3JSYV8wfj02SVJTO3c+M2xtVFRXLVpXTUt9OGxKTHIwfitpNjI7bjNvcmheI2xR
b1VXKWZyOwpJV1V5eGQwQThMcnAjVDU/CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhMjAzOWEyLi40YmZlZmMwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBA
CisyMDEwLTEwLTI4ICBUaWFuY2hlbmcgSmlhbmcgIDx0aWppYW5nQHJpbS5jb20+CisKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQg
ZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgIFRvIHN1cHBvcnQgdGhl
IG5ldyBDU1MgcHJvcGVydHkgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yLCB3ZSBjb3B5IHRo
ZQorICAgICAgICB0aGUgY29kZSBmcm9tIEFwcGxlIFNhZmFyaSdzIG9wZW4gc291cmNlIGNvZGUg
YW5kIGFkZCB0aGVtIHRvIFdlYmNvcmUuCisKKyAgICAgICAgQ2hhbmdlIHRoZSBjb2RlIGluIFJl
bmRlclN0eWxlIHdoaWNoIFNhZmFyaSBoYXJkY29kZSB0aGUgcmV0dXJuIGNvbG9yCisgICAgICAg
IGdyYXkuIFdyaXRlIGEgbmV3IHZpcnR1YWwgZnVuY3Rpb24gdG8gYWxsb3cgZGlmZmVyZW50IHBs
YXRmb3JtIHRvIGNob3NlCisgICAgICAgIHRoZWlyIHBsYXRmb3JtIGNvbG9yLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToK
KyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Db2xvci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZTo6c2V0UGxhdGZvcm1UYXBIaWdobGln
aHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6
OnRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpz
ZXRUYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVk
RGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorCiAyMDEwLTEwLTI3ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGZkY2FiMjguLmMw
ZmUwNTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtMjExLDYgKzIxMSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10g
PSB7CiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0UnRsT3JkZXJpbmcs
CisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKICAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dEZpbGxDb2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwKQEAgLTEzODks
NiArMTM5MCw4IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgICAgICAgICBpZiAoc3R5
bGUtPnZpc3VhbGx5T3JkZXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlSWRlbnRpZmllcihDU1NWYWx1ZVZpc3VhbCk7CiAgICAgICAgICAgICBy
ZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIoQ1NTVmFsdWVMb2dpY2Fs
KTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOgorICAg
ICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHlsZS5nZXQoKSwgc3R5
bGUtPnRhcEhpZ2hsaWdodENvbG9yKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VXNlckRyYWc6CiAgICAgICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShz
dHlsZS0+dXNlckRyYWcoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2Vs
ZWN0OgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKaW5kZXggMjZjMzg3Ni4uYzg4ZjJlYyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0x
NjEzLDYgKzE2MTMsMTYgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAjZW5kaWYKICAgICAvLyBFbmQgQXBwbGUtc3BlY2lmaWMgcHJvcGVy
dGllcwogCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOgorICAg
ICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCB8
fCBpZCA9PSBDU1NWYWx1ZU1lbnUgfHwKKyAgICAgICAgICAgICAoaWQgPj0gQ1NTVmFsdWVXZWJr
aXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAhbV9zdHJpY3Qp
KSB7CisgICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOyAvL25vdGljZTogYXBwbGUg
Y2FsbCB0aGlzIHZhbGlkX3ByaW1pdGl2ZSAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHBhcnNlZFZhbHVlID0gcGFyc2VDb2xvcigpOworICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVl
KQorICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CiAgICAgICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJl
Zm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVn
YWwgY29sb3IKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gYi9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCmluZGV4IDlmZDJkMmMuLjVjNjM5NmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHlOYW1lcy5pbgpAQCAtMjk3LDMgKzI5Nyw0IEBAIHotaW5kZXgKIC13ZWJr
aXQtdXNlci1tb2RpZnkKIC13ZWJraXQtdXNlci1zZWxlY3QKIC13ZWJraXQtdmFyaWFibGUtZGVj
bGFyYXRpb24tYmxvY2sKKy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCBiOTAyZjU5Li5iNWY1YTM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcApAQCAtNTQ5Niw2ICs1NDk2LDE1IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgbV9zdHlsZS0+c2V0UG9p
bnRlckV2ZW50cygqcHJpbWl0aXZlVmFsdWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogeworICAgICAgICBIQU5E
TEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0YXBIaWdobGlnaHRDb2xvciwgVGFwSGlnaGxpZ2h0Q29s
b3IpOworICAgICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgQ29sb3IgY29sID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZl
VmFsdWUpLmJsZW5kV2l0aFdoaXRlKCk7CisgICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdo
dENvbG9yKGNvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKICAgICAgICAgaWYgKGlzSW5oZXJpdCkgCiAgICAgICAg
ICAgICBtX3N0eWxlLT5zZXRDb2xvclNwYWNlKG1fcGFyZW50U3R5bGUtPmNvbG9yU3BhY2UoKSk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwIGIvV2Vi
Q29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAppbmRleCA5MTg3ZWI2Li5lZjQxYmE1
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCisrKyBi
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAKQEAgLTQ1OCw2ICs0NTgsNyBA
QCBzdGF0aWMgY29uc3QgaW50IGVkaXRpbmdTdHlsZVByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQ
cm9wZXJ0eVdlYmtpdFRleHRTaXplQWRqdXN0LAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAorICAgIENT
U1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IsCiB9Owogc2l6ZV90IG51bUVkaXRpbmdT
dHlsZVByb3BlcnRpZXMgPSBzaXplb2YoZWRpdGluZ1N0eWxlUHJvcGVydGllcykvc2l6ZW9mKGVk
aXRpbmdTdHlsZVByb3BlcnRpZXNbMF0pOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKaW5k
ZXggMmU0ZTk2Mi4uZjFiOGE4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db2xvci5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApAQCAtMTUw
LDYgKzE1MCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyYXkgPSAweEZG
QTBBMEEwOwogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRHcmF5ID0gMHhGRkMwQzBDMDsK
ICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKKyAgICBz
dGF0aWMgY29uc3QgUkdCQTMyIHRhcCA9IDB4NEQxQTFBMUE7CiAKIHByaXZhdGU6CiAgICAgUkdC
QTMyIG1fY29sb3I7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKaW5kZXggNmEyMTUxNC4uZGNl
MzE3ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcApAQCAtMTExNyw2ICsxMTE3LDExIEBA
IENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENv
bG9yKCkgY29uc3QKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZZWxsb3cuCiB9
CiAKK0NvbG9yIFJlbmRlclRoZW1lOjpzZXRQbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkKK3sK
KyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKTsK
K30KKwogdm9pZCBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29s
b3ImIGMpCiB7CiAgICAgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWUuaAppbmRleCBkNTBhOWM0Li5iY2I2Nzk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgK
QEAgLTE0NSw2ICsxNDUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbG9yIGZvY3VzUmluZ0Nv
bG9yKCk7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3Qg
eyByZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21Gb2N1
c1JpbmdDb2xvcihjb25zdCBDb2xvciYpOworICAgIHN0YXRpYyBDb2xvciBzZXRQbGF0Zm9ybVRh
cEhpZ2hsaWdodENvbG9yKCk7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdo
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OyB9CQogCiAgICAgdmly
dHVhbCB2b2lkIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCA2OGM5MTg2Li41YjlmOGI4IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNp
bmNsdWRlICJTdHlsZUltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCkBAIC0xMzE1LDQg
KzEzMTYsOSBAQCBMZW5ndGggUmVuZGVyU3R5bGU6OnBhZGRpbmdFbmQoKSBjb25zdAogICAgIHJl
dHVybiBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBwYWRkaW5nQm90dG9tKCkgOiBwYWRkaW5n
VG9wKCk7CiB9CiAKK0NvbG9yIFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3Io
KQoreworICAgIHJldHVybiBSZW5kZXJUaGVtZTo6c2V0UGxhdGZvcm1UYXBIaWdobGlnaHRDb2xv
cigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaAppbmRleCBkMDE0MjVhLi45NzY3YjFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTc1MCw2ICs3NTAsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBM
aW5lQ2xhbXBWYWx1ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmxpbmVDbGFtcDsgfQogICAgIGJvb2wgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KKyAgICBDb2xvciB0YXBI
aWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdo
bGlnaHRDb2xvcjsgfQogICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRT
ZWN1cml0eSk7IH0KIAogICAgIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8V3JpdGluZ01vZGU+KGluaGVyaXRlZF9mbGFncy5tX3dyaXRpbmdNb2Rl
KTsgfQpAQCAtMTA4Nyw2ICsxMDg4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMaW5lQ2xh
bXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5l
Q2xhbXAsIGMpOyB9CiAgICAgdm9pZCBzZXRUZXh0U2l6ZUFkanVzdChib29sIGIpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNpemVBZGp1c3QsIGIpOyB9CisgICAgdm9pZCBzZXRU
YXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciAmIHYpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVk
RGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIHYpOyB9CiAgICAgdm9pZCBzZXRUZXh0U2VjdXJpdHko
RVRleHRTZWN1cml0eSBhVGV4dFNlY3VyaXR5KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRleHRTZWN1cml0eSwgYVRleHRTZWN1cml0eSk7IH0KIAogI2lmIEVOQUJMRShTVkcpCkBAIC0x
MjY4LDYgKzEyNzAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExpbmVDbGFtcFZhbHVlIGluaXRp
YWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9CiAgICAgc3RhdGljIGJv
b2wgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBF
VGV4dFNlY3VyaXR5IGluaXRpYWxUZXh0U2VjdXJpdHkoKSB7IHJldHVybiBUU05PTkU7IH0KKyAg
ICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCk7CiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRS
ZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVnaW9ucygpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAppbmRl
eCA4ZTM0ODEzLi4wYjE5YTA2IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtNDYsNiArNDYsNyBAQCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhKCkKICAgICAsIGNvbG9yU3BhY2UoQ29s
b3JTcGFjZURldmljZVJHQikKICAgICAsIHNwZWFrKFNwZWFrTm9ybWFsKQogICAgICwgaHlwaGVu
cyhIeXBoZW5zTWFudWFsKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUYXBIaWdobGlnaHRDb2xvcigpKQogewogfQogCkBAIC03NSw2ICs3Niw3IEBAIFN0eWxl
UmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSYgbykKICAgICAsIGh5cGhlbnMoby5oeXBoZW5zKQogICAgICwgaHlwaGVu
YXRpb25TdHJpbmcoby5oeXBoZW5hdGlvblN0cmluZykKICAgICAsIGh5cGhlbmF0aW9uTG9jYWxl
KG8uaHlwaGVuYXRpb25Mb2NhbGUpCisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hs
aWdodENvbG9yKQogewogfQogCkBAIC0xMTUsNiArMTE3LDcgQEAgYm9vbCBTdHlsZVJhcmVJbmhl
cml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNv
bnN0CiAgICAgICAgICYmIHVzZXJTZWxlY3QgPT0gby51c2VyU2VsZWN0CiAgICAgICAgICYmIGNv
bG9yU3BhY2UgPT0gby5jb2xvclNwYWNlCiAgICAgICAgICYmIHNwZWFrID09IG8uc3BlYWsKKyAg
ICAgICAgJiYgdGFwSGlnaGxpZ2h0Q29sb3IgPT0gby50YXBIaWdobGlnaHRDb2xvcgogICAgICAg
ICAmJiBoeXBoZW5zID09IG8uaHlwaGVucwogICAgICAgICAmJiBoeXBoZW5hdGlvblN0cmluZyA9
PSBvLmh5cGhlbmF0aW9uU3RyaW5nCiAgICAgICAgICYmIGh5cGhlbmF0aW9uTG9jYWxlID09IG8u
aHlwaGVuYXRpb25Mb2NhbGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgKaW5kZXggM2E3ODk3Ni4uZGNmOTNlNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtODAsNiArODAs
NyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgc3BlYWsgOiAzOyAvLyBFU3BlYWsKICAgICB1bnNp
Z25lZCBoeXBoZW5zIDogMjsgLy8gSHlwaGVucwogCisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29s
b3I7CiAgICAgQXRvbWljU3RyaW5nIGh5cGhlbmF0aW9uU3RyaW5nOwogICAgIEF0b21pY1N0cmlu
ZyBoeXBoZW5hdGlvbkxvY2FsZTsKIAotLSAKMS43LjAuMi5tc3lzZ2l0LjAKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106332</attachid>
            <date>2011-09-05 06:36:14 -0700</date>
            <delta_ts>2011-09-09 03:50:05 -0700</delta_ts>
            <desc>patch candidate</desc>
            <filename>tap-highlight.diff</filename>
            <type>text/plain</type>
            <size>14146</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCShyZXZpc2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDkg
QEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKKyNlbmRp
ZgogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsCiAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc0NvbG9yLApAQCAtMTYzNCw2ICsxNjM3LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+
Y3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1
YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT50YXBIaWdo
bGlnaHRDb2xvcigpKTsKKyNlbmRpZiAgICAgICAgICAgIAogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNo
ZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJEcmFnKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZp
c2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYgogI2VuZGlmCiAgICAgLy8gRW5kIEFwcGxlLXNwZWNpZmljIHByb3BlcnRp
ZXMKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRhcEhpZ2hsaWdodENvbG9yOgorICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlk
IDw9IENTU1ZhbHVlV2luZG93dGV4dCB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUKKyAgICAgICAgICAg
IHx8IChpZCA+PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yICYmIGlkIDwgQ1NTVmFsdWVX
ZWJraXRUZXh0ICYmICFtX3N0cmljdCkpIHsKKyAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7IC8vIG5vdGljZTogYXBwbGUgY2FsbCB0aGlzIHZhbGlkX3ByaW1pdGl2ZSAKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VDb2xvcigpOworICAg
ICAgICAgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgLyogc2hv
cnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDogewog
ICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkg
YmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0NCw0ICsz
NDQsNyBAQCB6LWluZGV4CiAtd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlcgogLXdlYmtpdC1yZWdp
b24tYnJlYWstYmVmb3JlCiAtd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTQzNTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3OTgsNiArNDc5OCwxNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUocG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBI
aWdobGlnaHRDb2xvcjogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0YXBI
aWdobGlnaHRDb2xvciwgVGFwSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgQ29sb3IgY29sID0gZ2V0Q29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpLmJsZW5kV2l0aFdoaXRlKCk7Cisg
ICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGNv
bG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDYgKzE2Miw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyYXkgPSAweEZG
QTBBMEEwOwogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRHcmF5ID0gMHhGRkMwQzBDMDsK
ICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAgICAKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRhcEhpZ2hs
aWdodCA9IDB4MzMwMDAwMDA7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSR0JBMzIgbV9jb2xv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gOTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDg0LDYgKzEwODQsMTMgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtSW5hY3RpdmVUZXh0UwogICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8vIFll
bGxvdy4KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitDb2xvciBSZW5kZXJUaGVtZTo6
c2V0UGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRUaGVt
ZSgpLT5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5k
ZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3ImIGMpCiB7CiAgICAg
Y3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CkBAIC0xMDk0LDYgKzExMDEsMTMgQEAgQ29sb3Ig
UmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKCkKICAgICByZXR1cm4gY3VzdG9tRm9jdXNSaW5n
Q29sb3IoKS5pc1ZhbGlkKCkgPyBjdXN0b21Gb2N1c1JpbmdDb2xvcigpIDogZGVmYXVsdFRoZW1l
KCktPnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCitDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRUaGVt
ZSgpLT5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogU3RyaW5nIFJl
bmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgpCiB7CiAgICAgaWYgKHdpZHRoIDw9
IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkocmV2aXNpb24g
OTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbG9yIGZv
Y3VzUmluZ0NvbG9yKCk7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRD
dXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYpOwotCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICBzdGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcjo6
dGFwSGlnaGxpZ2h0OyB9CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Db2xvcnNE
aWRDaGFuZ2UoKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZhbCgpIGNv
bnN0IHsgcmV0dXJuIDAuNTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDkgQEAKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIApAQCAtMTUwOCw0ICsxNTEx
LDExIEBAIFRleHRFbXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXMKICAgICByZXR1
cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICBy
ZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw2ICs3OTgs
OSBAQCBwdWJsaWM6CiAKICAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluOyB9CiAgICAgY29u
c3QgTGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENv
bG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnRhcEhpZ2hsaWdodENvbG9yOyB9CisjZW5kaWYKICAgICBib29sIHRleHRTaXplQWRqdXN0KCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAg
RVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
VGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCkBAIC0x
MTY4LDYgKzExNzEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExp
bmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29u
dGFpbiwgYyk7IH0KICAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9
CisjZW5kaWYKICAgICBib29sIHNldFRleHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0
VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE0MTUs
NiArMTQyMSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExp
bmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIEVUZXh0
U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRD
b2xvcigpOworI2VuZGlmCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRp
YyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVn
aW9ucygpOwogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBu
b25lRGFzaGJvYXJkUmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24g
OTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgbV9pbWFnZVJlbmRlcmluZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0
QmVmb3JlKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKC0xKQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRhcEhpZ2hsaWdodENvbG9yKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArOTYsOSBAQCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBoeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoby5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIpCiAgICAgLCBsb2NhbGUoby5sb2Nh
bGUpCiAgICAgLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFy
aykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50
YXBIaWdobGlnaHRDb2xvcikKKyNlbmRpZgogewogfQogCkBAIC0xMTUsNiArMTIxLDkgQEAgYm9v
bCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogICAgICAgICAmJiB0ZXh0U3Ry
b2tlV2lkdGggPT0gby50ZXh0U3Ryb2tlV2lkdGgKICAgICAgICAgJiYgdGV4dEZpbGxDb2xvciA9
PSBvLnRleHRGaWxsQ29sb3IKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ29sb3IgPT0gby50ZXh0
RW1waGFzaXNDb2xvcgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgICYmIHRhcEhp
Z2hsaWdodENvbG9yID09IG8udGFwSGlnaGxpZ2h0Q29sb3IKKyNlbmRpZgogICAgICAgICAmJiBz
aGFkb3dEYXRhRXF1aXZhbGVudChvKQogICAgICAgICAmJiBoaWdobGlnaHQgPT0gby5oaWdobGln
aHQKICAgICAgICAgJiYgY3Vyc29yRGF0YUVxdWl2YWxlbnQoY3Vyc29yRGF0YS5nZXQoKSwgby5j
dXJzb3JEYXRhLmdldCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCShyZXZpc2lvbiA5NDM1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3
LDYgKzU3LDkgQEAgcHVibGljOgogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aDsKICAgICBDb2xv
ciB0ZXh0RmlsbENvbG9yOwogICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yOworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CisjZW5kaWYgICAg
CiAKICAgICBPd25QdHI8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsgLy8gT3VyIHRleHQgc2hhZG93
IGluZm9ybWF0aW9uIGZvciBzaGFkb3dlZCB0ZXh0IGRyYXdpbmcuCiAgICAgQXRvbWljU3RyaW5n
IGhpZ2hsaWdodDsgLy8gQXBwbGUtc3BlY2lmaWMgZXh0ZW5zaW9uIGZvciBjdXN0b20gaGlnaGxp
Z2h0IHJlbmRlcmluZy4KQEAgLTc3LDcgKzgwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGto
dG1sTGluZUJyZWFrIDogMTsgLy8gRUtIVE1MTGluZUJyZWFrCiAgICAgYm9vbCB0ZXh0U2l6ZUFk
anVzdCA6IDE7IC8vIEFuIEFwcGxlIGV4dGVuc2lvbi4KICAgICB1bnNpZ25lZCByZXNpemUgOiAy
OyAvLyBFUmVzaXplCi0gICAgdW5zaWduZWQgdXNlclNlbGVjdCA6IDE7ICAvLyBFVXNlclNlbGVj
dAorICAgIHVuc2lnbmVkIHVzZXJTZWxlY3QgOiAxOyAvLyBFVXNlclNlbGVjdAogICAgIHVuc2ln
bmVkIGNvbG9yU3BhY2UgOiAxOyAvLyBDb2xvclNwYWNlCiAgICAgdW5zaWduZWQgc3BlYWsgOiAz
OyAvLyBFU3BlYWsKICAgICB1bnNpZ25lZCBoeXBoZW5zIDogMjsgLy8gSHlwaGVucwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQt
Y29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPCEtLQorICBUbyB0ZXN0IHRoZSBuZXcg
Q1NTIHByb3BlcnR5IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciB3aGljaCBpcyBvbmx5IHN1
cHBvcnRlZCB3aGVuIGJ1aWxkaW5nCisgIFdlYktpdCB3aXRoIEVOQUJMRShUT1VDSF9FVkVOVFMp
LCB3ZSBjcmVhdGUgYSBuZXcgZGl2IGVsZW1lbnQgYW5kIGFkZCAtd2Via2l0LXRhcC1oaWdobGln
aHQtY29sb3IKKyAgaW4gdGhlIGVsZW1lbnQsIHRoZW4gc2VlIHdoZXRoZXIgd2UgY2FuIGdldCB0
aGUgc3BlY2lmaWVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSBET00uCisgIFdlYktpdCBwb3J0
cyBjYW4gdXNlIHRoaXMgY3NzIHByb3BlcnR5IHRvIGdldCB0aGUgY3VzdG9taXplZCB0YXAgaGln
aGxpZ2h0IGNvbG9yIGZyb20gdGhlIHdlYnBhZ2UKKyAgd2hpY2ggaXMgc2V0IGJ5IHdlYiBkZXZl
bG9wZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IHRhcCBoaWdobGlnaHQgY29sb3IgZml0cyB0aGVpciB3
ZWJzaXRlcyBpbnN0ZWFkCisgIG9mIHVzaW5nIHRoZSBoYXJkY29kZSB2YWx1ZSBwcm92aWRlZCBi
eSBicm93c2Vycy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90
YXAtaGlnaGxpZ2h0LWNvbG9yLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0
LWNvbG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Nj
cmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3Iu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYuc3R5bGUud2lk
dGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYuaW5uZXJUZXh0
ID0gIlRvdWNoIE1lISI7CitkaXYuc3R5bGUud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IgPSAiIzU2
MzQxMiI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOwordmFyIHRvdWNoRXZlbnRzUmVjZWl2ZWQg
PSAwOwordmFyIEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCA9IDU7CisKK2Z1bmN0aW9uIG9u
VG91Y2hTdGFydCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXRU
b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCd3ZWJraXRUYXBI
aWdobGlnaHRDb2xvcicpIiwgInJnYig4NiwgNTIsIDE4KSIpOworfQorCitmdW5jdGlvbiBvblRv
dWNoRW5kKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldFRvdWNo
ZXNbMF0udGFyZ2V0LnRhZ05hbWUiLCAiRElWIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdldCIpOworCisg
ICAgLy8gTm90aWZ5IHRoZSB0ZXN0IGRvbmUKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9u
VG91Y2hTdGFydCwgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25U
b3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVu
dC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB0b3VjaFRhcmdldHMoKQoreworICAgIGV2
ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBv
aW50KDIwLCAyMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAgIGV2ZW50U2Vu
ZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDUwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1v
dmUoKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICBldmVudFNl
bmRlci50b3VjaEVuZCgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgZGVzY3Jp
cHRpb24oIkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQiKTsKKworICAg
IHRvdWNoVGFyZ2V0cygpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IER1bXBSZW5kZXJUcmVlICYmIFdlYktpdCBidWlsdCB3aXRoIEVOQUJMRShUT1VDSF9FVkVOVCku
IikKK30KKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106856</attachid>
            <date>2011-09-09 03:50:05 -0700</date>
            <delta_ts>2011-09-15 00:14:26 -0700</delta_ts>
            <desc>patch v1</desc>
            <filename>tap-highlight.diff</filename>
            <type>text/plain</type>
            <size>14146</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwCShyZXZpc2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNiArMjM4LDkg
QEAgc3RhdGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3Bl
cnR5V2Via2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9y
aWdpbiwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKKyNlbmRp
ZgogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsCiAgICAgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBo
YXNpc0NvbG9yLApAQCAtMTYzNCw2ICsxNjM3LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENT
U0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0UnRsT3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+
Y3JlYXRlSWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1
YWwgOiBDU1NWYWx1ZUxvZ2ljYWwpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgICAgIHJl
dHVybiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT50YXBIaWdo
bGlnaHRDb2xvcigpKTsKKyNlbmRpZiAgICAgICAgICAgIAogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlckRyYWc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNo
ZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPnVzZXJEcmFnKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VXNlclNlbGVjdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZp
c2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTExLDYgKzE5MTEsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
aW50IHByb3BJZCwgYgogI2VuZGlmCiAgICAgLy8gRW5kIEFwcGxlLXNwZWNpZmljIHByb3BlcnRp
ZXMKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRhcEhpZ2hsaWdodENvbG9yOgorICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlk
IDw9IENTU1ZhbHVlV2luZG93dGV4dCB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUKKyAgICAgICAgICAg
IHx8IChpZCA+PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yICYmIGlkIDwgQ1NTVmFsdWVX
ZWJraXRUZXh0ICYmICFtX3N0cmljdCkpIHsKKyAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9
IHRydWU7IC8vIG5vdGljZTogYXBwbGUgY2FsbCB0aGlzIHZhbGlkX3ByaW1pdGl2ZSAKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VDb2xvcigpOworICAg
ICAgICAgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0LT5u
ZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAgICAgLyogc2hv
cnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDogewog
ICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRoaXMgYXJyYXkg
YmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0NCw0ICsz
NDQsNyBAQCB6LWluZGV4CiAtd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlcgogLXdlYmtpdC1yZWdp
b24tYnJlYWstYmVmb3JlCiAtd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gOTQzNTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3OTgsNiArNDc5OCwxNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJv
cGVydHkoaW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMX0FORF9QUklNSVRJ
VkUocG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50cykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBI
aWdobGlnaHRDb2xvcjogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh0YXBI
aWdobGlnaHRDb2xvciwgVGFwSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICBpZiAoIXByaW1pdGl2
ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgQ29sb3IgY29sID0gZ2V0Q29s
b3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpLmJsZW5kV2l0aFdoaXRlKCk7Cisg
ICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGNv
bG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgJKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDYgKzE2Miw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGdyYXkgPSAweEZG
QTBBMEEwOwogICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgbGlnaHRHcmF5ID0gMHhGRkMwQzBDMDsK
ICAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRyYW5zcGFyZW50ID0gMHgwMDAwMDAwMDsKKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKSAgICAKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIHRhcEhpZ2hs
aWdodCA9IDB4MzMwMDAwMDA7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBSR0JBMzIgbV9jb2xv
cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2aXNp
b24gOTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDg0LDYgKzEwODQsMTMgQEAgQ29sb3IgUmVuZGVyVGhlbWU6OnBs
YXRmb3JtSW5hY3RpdmVUZXh0UwogICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8vIFll
bGxvdy4KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitDb2xvciBSZW5kZXJUaGVtZTo6
c2V0UGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRUaGVt
ZSgpLT5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5k
ZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3ImIGMpCiB7CiAgICAg
Y3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CkBAIC0xMDk0LDYgKzExMDEsMTMgQEAgQ29sb3Ig
UmVuZGVyVGhlbWU6OmZvY3VzUmluZ0NvbG9yKCkKICAgICByZXR1cm4gY3VzdG9tRm9jdXNSaW5n
Q29sb3IoKS5pc1ZhbGlkKCkgPyBjdXN0b21Gb2N1c1JpbmdDb2xvcigpIDogZGVmYXVsdFRoZW1l
KCktPnBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCitDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIGRlZmF1bHRUaGVt
ZSgpLT5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogU3RyaW5nIFJl
bmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZW5hbWVzLCBjb25zdCBGb250JiBmb250LCBpbnQgd2lkdGgpCiB7CiAgICAgaWYgKHdpZHRoIDw9
IDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkocmV2aXNpb24g
OTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ5LDcgKzE0OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbG9yIGZv
Y3VzUmluZ0NvbG9yKCk7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9y
KCkgY29uc3QgeyByZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRD
dXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYpOwotCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICBzdGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcjo6
dGFwSGlnaGxpZ2h0OyB9CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Db2xvcnNE
aWRDaGFuZ2UoKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZhbCgpIGNv
bnN0IHsgcmV0dXJuIDAuNTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiA5NDM1NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDkgQEAKICNpbmNsdWRlICJTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHlsZUltYWdlLmgiCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KIApAQCAtMTUwOCw0ICsxNTEx
LDExIEBAIFRleHRFbXBoYXNpc01hcmsgUmVuZGVyU3R5bGU6OnRleHRFbXBoYXMKICAgICByZXR1
cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMp
CitDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICBy
ZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCk7Cit9CisjZW5kaWYKKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDk0MzU0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw2ICs3OTgs
OSBAQCBwdWJsaWM6CiAKICAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0
IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluOyB9CiAgICAgY29u
c3QgTGluZUNsYW1wVmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5saW5lQ2xhbXA7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENv
bG9yIHRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEt
PnRhcEhpZ2hsaWdodENvbG9yOyB9CisjZW5kaWYKICAgICBib29sIHRleHRTaXplQWRqdXN0KCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAg
RVRleHRTZWN1cml0eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
VGV4dFNlY3VyaXR5PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCkBAIC0x
MTY4LDYgKzExNzEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExp
bmVCb3hDb250YWluIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29u
dGFpbiwgYyk7IH0KICAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNF
VF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3Im
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9
CisjZW5kaWYKICAgICBib29sIHNldFRleHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0
VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE0MTUs
NiArMTQyMSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExp
bmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIEVUZXh0
U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRD
b2xvcigpOworI2VuZGlmCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRp
YyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVn
aW9ucygpOwogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBu
b25lRGFzaGJvYXJkUmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24g
OTQzNTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgbV9pbWFnZVJlbmRlcmluZyhSZW5k
ZXJTdHlsZTo6aW5pdGlhbEltYWdlUmVuZGVyaW5nKCkpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0
QmVmb3JlKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKC0xKQorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihSZW5kZXJTdHlsZTo6aW5pdGlh
bFRhcEhpZ2hsaWdodENvbG9yKCkpCisjZW5kaWYKIHsKIH0KIApAQCAtOTMsNiArOTYsOSBAQCBT
dHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBoeXBoZW5hdGlv
bkxpbWl0QWZ0ZXIoby5oeXBoZW5hdGlvbkxpbWl0QWZ0ZXIpCiAgICAgLCBsb2NhbGUoby5sb2Nh
bGUpCiAgICAgLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFy
aykKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50
YXBIaWdobGlnaHRDb2xvcikKKyNlbmRpZgogewogfQogCkBAIC0xMTUsNiArMTIxLDkgQEAgYm9v
bCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogICAgICAgICAmJiB0ZXh0U3Ry
b2tlV2lkdGggPT0gby50ZXh0U3Ryb2tlV2lkdGgKICAgICAgICAgJiYgdGV4dEZpbGxDb2xvciA9
PSBvLnRleHRGaWxsQ29sb3IKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ29sb3IgPT0gby50ZXh0
RW1waGFzaXNDb2xvcgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgICYmIHRhcEhp
Z2hsaWdodENvbG9yID09IG8udGFwSGlnaGxpZ2h0Q29sb3IKKyNlbmRpZgogICAgICAgICAmJiBz
aGFkb3dEYXRhRXF1aXZhbGVudChvKQogICAgICAgICAmJiBoaWdobGlnaHQgPT0gby5oaWdobGln
aHQKICAgICAgICAgJiYgY3Vyc29yRGF0YUVxdWl2YWxlbnQoY3Vyc29yRGF0YS5nZXQoKSwgby5j
dXJzb3JEYXRhLmdldCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZUluaGVyaXRlZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCShyZXZpc2lvbiA5NDM1NCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDggQEAKIAogI2luY2x1ZGUgIkNvbG9yLmgiCiAj
aW5jbHVkZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3
LDYgKzU3LDkgQEAgcHVibGljOgogICAgIGZsb2F0IHRleHRTdHJva2VXaWR0aDsKICAgICBDb2xv
ciB0ZXh0RmlsbENvbG9yOwogICAgIENvbG9yIHRleHRFbXBoYXNpc0NvbG9yOworI2lmIEVOQUJM
RShUT1VDSF9FVkVOVFMpCisgICAgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3I7CisjZW5kaWYgICAg
CiAKICAgICBPd25QdHI8U2hhZG93RGF0YT4gdGV4dFNoYWRvdzsgLy8gT3VyIHRleHQgc2hhZG93
IGluZm9ybWF0aW9uIGZvciBzaGFkb3dlZCB0ZXh0IGRyYXdpbmcuCiAgICAgQXRvbWljU3RyaW5n
IGhpZ2hsaWdodDsgLy8gQXBwbGUtc3BlY2lmaWMgZXh0ZW5zaW9uIGZvciBjdXN0b20gaGlnaGxp
Z2h0IHJlbmRlcmluZy4KQEAgLTc3LDcgKzgwLDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGto
dG1sTGluZUJyZWFrIDogMTsgLy8gRUtIVE1MTGluZUJyZWFrCiAgICAgYm9vbCB0ZXh0U2l6ZUFk
anVzdCA6IDE7IC8vIEFuIEFwcGxlIGV4dGVuc2lvbi4KICAgICB1bnNpZ25lZCByZXNpemUgOiAy
OyAvLyBFUmVzaXplCi0gICAgdW5zaWduZWQgdXNlclNlbGVjdCA6IDE7ICAvLyBFVXNlclNlbGVj
dAorICAgIHVuc2lnbmVkIHVzZXJTZWxlY3QgOiAxOyAvLyBFVXNlclNlbGVjdAogICAgIHVuc2ln
bmVkIGNvbG9yU3BhY2UgOiAxOyAvLyBDb2xvclNwYWNlCiAgICAgdW5zaWduZWQgc3BlYWsgOiAz
OyAvLyBFU3BlYWsKICAgICB1bnNpZ25lZCBoeXBoZW5zIDogMjsgLy8gSHlwaGVucwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQt
Y29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPCEtLQorICBUbyB0ZXN0IHRoZSBuZXcg
Q1NTIHByb3BlcnR5IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciB3aGljaCBpcyBvbmx5IHN1
cHBvcnRlZCB3aGVuIGJ1aWxkaW5nCisgIFdlYktpdCB3aXRoIEVOQUJMRShUT1VDSF9FVkVOVFMp
LCB3ZSBjcmVhdGUgYSBuZXcgZGl2IGVsZW1lbnQgYW5kIGFkZCAtd2Via2l0LXRhcC1oaWdobGln
aHQtY29sb3IKKyAgaW4gdGhlIGVsZW1lbnQsIHRoZW4gc2VlIHdoZXRoZXIgd2UgY2FuIGdldCB0
aGUgc3BlY2lmaWVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSBET00uCisgIFdlYktpdCBwb3J0
cyBjYW4gdXNlIHRoaXMgY3NzIHByb3BlcnR5IHRvIGdldCB0aGUgY3VzdG9taXplZCB0YXAgaGln
aGxpZ2h0IGNvbG9yIGZyb20gdGhlIHdlYnBhZ2UKKyAgd2hpY2ggaXMgc2V0IGJ5IHdlYiBkZXZl
bG9wZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IHRhcCBoaWdobGlnaHQgY29sb3IgZml0cyB0aGVpciB3
ZWJzaXRlcyBpbnN0ZWFkCisgIG9mIHVzaW5nIHRoZSBoYXJkY29kZSB2YWx1ZSBwcm92aWRlZCBi
eSBicm93c2Vycy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy90
YXAtaGlnaGxpZ2h0LWNvbG9yLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0
LWNvbG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Nj
cmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3Iu
anMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYuc3R5bGUud2lk
dGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYuaW5uZXJUZXh0
ID0gIlRvdWNoIE1lISI7CitkaXYuc3R5bGUud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IgPSAiIzU2
MzQxMiI7CisKK3ZhciBsYXN0RXZlbnQgPSBudWxsOwordmFyIHRvdWNoRXZlbnRzUmVjZWl2ZWQg
PSAwOwordmFyIEVYUEVDVEVEX1RPVUNIX0VWRU5UU19UT1RBTCA9IDU7CisKK2Z1bmN0aW9uIG9u
VG91Y2hTdGFydCgpCit7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXRU
b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0
cmluZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQiKTsK
KyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCd3ZWJraXRUYXBI
aWdobGlnaHRDb2xvcicpIiwgInJnYig4NiwgNTIsIDE4KSIpOworfQorCitmdW5jdGlvbiBvblRv
dWNoRW5kKCkKK3sKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50LnRhcmdldFRvdWNo
ZXNbMF0udGFyZ2V0LnRhZ05hbWUiLCAiRElWIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC5pZCIsICJ0b3VjaHRhcmdldCIpOworCisg
ICAgLy8gTm90aWZ5IHRoZSB0ZXN0IGRvbmUKKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVl
OworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIsIG9u
VG91Y2hTdGFydCwgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwgb25U
b3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1bWVu
dC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB0b3VjaFRhcmdldHMoKQoreworICAgIGV2
ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3VjaFBv
aW50KDIwLCAyMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAgIGV2ZW50U2Vu
ZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDUwKTsKKyAgICBldmVudFNlbmRlci50b3VjaE1v
dmUoKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICBldmVudFNl
bmRlci50b3VjaEVuZCgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRvdy5l
dmVudFNlbmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgZGVzY3Jp
cHRpb24oIkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQiKTsKKworICAg
IHRvdWNoVGFyZ2V0cygpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVz
IER1bXBSZW5kZXJUcmVlICYmIFdlYktpdCBidWlsdCB3aXRoIEVOQUJMRShUT1VDSF9FVkVOVCku
IikKK30KKworCg==
</data>
<flag name="review"
          id="103386"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107468</attachid>
            <date>2011-09-15 00:14:26 -0700</date>
            <delta_ts>2011-09-15 00:28:28 -0700</delta_ts>
            <desc>patch V2</desc>
            <filename>tap-highlight.diff2</filename>
            <type>text/plain</type>
            <size>13757</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMTQgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiB0aWppYW5n
QHJpbS5jb20ncyBwYXRjaC4gc3VwcG9ydCB0aGUgbmV3IENTUyBwcm9wZXJ0eSAtd2Via2l0LXRh
cC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAgb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdG91
Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBvd24gcGxhdGZvcm0K
KyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLiBPdGhlcndpc2Ug
UmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJlCisgICAgICAgIHVz
ZWQgYXMgV2ViS2l0IGRlZmF1bHQgdGFwIGhpZ2hsaWdodCBjb2xvci4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnRhcEhpZ2hsaWdodENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRUYXBIaWdobGlnaHRD
b2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5oOgorCiAyMDExLTA5LTE0ICBKZWZmcmV5IFBmYXUgIDxqZWZmcmV5QGVuZHJpZnQu
Y29tPgogCiAgICAgICAgIGxpYnhtbDIgZnJhZ21lbnQgcGFyc2VyIGxvc2VzIHByZWZpeCBuYW1l
c3BhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYg
KzI0Myw5IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLAogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW4sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3Is
CisjZW5kaWYKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLAogICAgIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNDb2xvciwKQEAgLTE3NDEsNiArMTc0NCwxMCBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1Zh
bHVlVmlzdWFsIDogQ1NTVmFsdWVMb2dpY2FsKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgICAg
ICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+
dGFwSGlnaGxpZ2h0Q29sb3IoKSk7CisjZW5kaWYgICAgICAgICAgICAKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyRHJhZygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkyOSw2ICsxOTI5LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGIKICNlbmRpZgogICAgIC8vIEVuZCBBcHBsZS1zcGVjaWZpYyBw
cm9wZXJ0aWVzCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlQXF1
YSAmJiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQgfHwgaWQgPT0gQ1NTVmFsdWVNZW51CisgICAg
ICAgICAgICB8fCAoaWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENT
U1ZhbHVlV2Via2l0VGV4dCAmJiAhbV9zdHJpY3QpKSB7CisgICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOyAvLyBub3RpY2U6IGFwcGxlIGNhbGwgdGhpcyB2YWxpZF9wcmltaXRpdmUg
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3Io
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
TGlzdC0+bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlz
IGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NDY0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDgsNCArMzQ4LDcgQEAgei1pbmRleAogLXdlYmtpdC1yZWdpb24tYnJlYWstYWZ0ZXIKIC13ZWJr
aXQtcmVnaW9uLWJyZWFrLWJlZm9yZQogLXdlYmtpdC1yZWdpb24tYnJlYWstaW5zaWRlCisjaWYg
ZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCistd2Vi
a2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxNyw2ICs0ODE3
LDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwb2ludGVyRXZlbnRzLCBQ
b2ludGVyRXZlbnRzKQogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7Cisg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBI
aWdobGlnaHRDb2xvcik7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBDb2xvciBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1
ZShwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9y
KGNvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKGNvbG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlz
aW9uIDk0NjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4NCw2ICsxMDg0LDEzIEBAIENvbG9yIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybUluYWN0aXZlVGV4dFMKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZ
ZWxsb3cuCiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWU6
OnRhcEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRm
b3JtVGFwSGlnaGxpZ2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRoZW1lOjpz
ZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYgYykKIHsKICAgICBjdXN0b21Gb2N1
c1JpbmdDb2xvcigpID0gYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29sb3IgZm9jdXNSaW5nQ29sb3IoKTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
Rm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQogICAgIHN0
YXRpYyB2b2lkIHNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigp
OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogCiAgICAgdmlydHVh
bCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyByZXR1cm4gMC41OyB9CkBAIC0z
MzAsNiArMzMzLDggQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKICAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogCisgICAgc3RhdGljIGNvbnN0IFJHQkEz
MiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAweDMzMDAwMDAwOworCiAjaWYgVVNFKE5FV19U
SEVNRSkKICAgICBUaGVtZSogbV90aGVtZTsgLy8gVGhlIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1l
LgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHAJKHJldmlzaW9uIDk0NjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOSBAQAog
I2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93RGF0
YS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
I2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjZW5kaWYKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCkBAIC0xNTA4LDQgKzE1MTEsMTEgQEAgVGV4
dEVtcGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhcwogICAgIHJldHVybiBUZXh0RW1w
aGFzaXNNYXJrU2VzYW1lOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK0NvbG9yIFJl
bmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKQoreworICAgIHJldHVybiBSZW5k
ZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzk4LDYgKzc5OCw5IEBAIHB1Ymxp
YzoKIAogICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkgY29uc3QgeyByZXR1cm4g
cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW47IH0KICAgICBjb25zdCBMaW5lQ2xh
bXBWYWx1ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
PmxpbmVDbGFtcDsgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgQ29sb3IgdGFwSGln
aGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxp
Z2h0Q29sb3I7IH0KKyNlbmRpZgogICAgIGJvb2wgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KICAgICBFVGV4dFNlY3Vy
aXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0U2VjdXJp
dHk+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTExNjgsNiArMTE3
MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRh
aW4gYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVCb3hDb250YWluLCBjKTsg
fQogICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KKyNlbmRpZgog
ICAgIGJvb2wgc2V0VGV4dFNpemVBZGp1c3QoYm9vbCk7CiAgICAgdm9pZCBzZXRUZXh0U2VjdXJp
dHkoRVRleHRTZWN1cml0eSBhVGV4dFNlY3VyaXR5KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHRleHRTZWN1cml0eSwgYVRleHRTZWN1cml0eSk7IH0KIApAQCAtMTQxNSw2ICsxNDIxLDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkg
eyByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsgfQogICAgIHN0YXRpYyBib29sIGluaXRpYWxUZXh0
U2l6ZUFkanVzdCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgRVRleHRTZWN1cml0eSBp
bml0aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNOT05FOyB9CisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgc3RhdGljIGNvbnN0IFZl
Y3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAg
ICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9h
cmRSZWdpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiA5NDY0MCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBtX2ltYWdlUmVuZGVyaW5nKFJlbmRlclN0eWxlOjpp
bml0aWFsSW1hZ2VSZW5kZXJpbmcoKSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEp
CiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoLTEpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAsIHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxp
Z2h0Q29sb3IoKSkKKyNlbmRpZgogewogfQogCkBAIC05Myw2ICs5Niw5IEBAIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRl
cihvLmh5cGhlbmF0aW9uTGltaXRBZnRlcikKICAgICAsIGxvY2FsZShvLmxvY2FsZSkKICAgICAs
IHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50ZXh0RW1waGFzaXNDdXN0b21NYXJrKQorI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hsaWdo
dENvbG9yKQorI2VuZGlmCiB7CiB9CiAKQEAgLTExNSw2ICsxMjEsOSBAQCBib29sIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oCiAgICAgICAgICYmIHRleHRTdHJva2VXaWR0aCA9
PSBvLnRleHRTdHJva2VXaWR0aAogICAgICAgICAmJiB0ZXh0RmlsbENvbG9yID09IG8udGV4dEZp
bGxDb2xvcgogICAgICAgICAmJiB0ZXh0RW1waGFzaXNDb2xvciA9PSBvLnRleHRFbXBoYXNpc0Nv
bG9yCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAgJiYgdGFwSGlnaGxpZ2h0Q29s
b3IgPT0gby50YXBIaWdobGlnaHRDb2xvcgorI2VuZGlmCiAgICAgICAgICYmIHNoYWRvd0RhdGFF
cXVpdmFsZW50KG8pCiAgICAgICAgICYmIGhpZ2hsaWdodCA9PSBvLmhpZ2hsaWdodAogICAgICAg
ICAmJiBjdXJzb3JEYXRhRXF1aXZhbGVudChjdXJzb3JEYXRhLmdldCgpLCBvLmN1cnNvckRhdGEu
Z2V0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDk0NjQwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJM
ZW5ndGguaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsNyArNzcsNyBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQga2h0bWxMaW5lQnJlYWsgOiAxOyAvLyBFS0hUTUxMaW5l
QnJlYWsKICAgICBib29sIHRleHRTaXplQWRqdXN0IDogMTsgLy8gQW4gQXBwbGUgZXh0ZW5zaW9u
LgogICAgIHVuc2lnbmVkIHJlc2l6ZSA6IDI7IC8vIEVSZXNpemUKLSAgICB1bnNpZ25lZCB1c2Vy
U2VsZWN0IDogMTsgIC8vIEVVc2VyU2VsZWN0CisgICAgdW5zaWduZWQgdXNlclNlbGVjdCA6IDE7
IC8vIEVVc2VyU2VsZWN0CiAgICAgdW5zaWduZWQgY29sb3JTcGFjZSA6IDE7IC8vIENvbG9yU3Bh
Y2UKICAgICB1bnNpZ25lZCBzcGVhayA6IDM7IC8vIEVTcGVhawogICAgIHVuc2lnbmVkIGh5cGhl
bnMgOiAyOyAvLyBIeXBoZW5zCkBAIC05Nyw2ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIEF0b21p
Y1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBx
dW90ZXM7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBDb2xvciB0YXBIaWdobGlnaHRD
b2xvcjsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEoKTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk1MTczKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDktMTQgIEpvaG5ueSBEaW5nICA8am5k
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1j
b2xvciBpbiBXZWJDb3JlIHdoZW4gZW5hYmxpbmcgdG91Y2ggZXZlbnRzIHN1cHBvcnQuIAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQg
dGVzdCB0byBnZXQgY3VzdG9taXplZCB0YXAgaGlnaGxpZ2h0IGNvbG9yIHNldCBieSBwYWdlIGF1
dGhvci4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3It
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMS0wOS0xNCAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlz
aGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIHJlYmFzZWxpbmUgZXhwZWN0YXRp
b25zIGR1ZSB0byByOTUwOTYsIHI5NTEyMSwgYW5kIHI5NTEyOQpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xv
ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90
b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNyBAQAorVG91Y2ggTWUhCitDaGVjayB0YXAgaGlnaGxpZ2h0IGNvbG9yIGluIHRvdWNo
IGV2ZW50CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitTdGFnZTogdG91Y2ggc3Rh
cnQKK1BBU1MgZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgor
UEFTUyBldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidG91Y2h0YXJnZXQiCitQ
QVNTIGRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InKSBpcyAi
cmdiYSgxMSwgMjIsIDMzLCAwKSIKK1N0YWdlOiB0b3VjaCBlbmQKK1BBU1MgZGl2Lm93bmVyRG9j
dW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMs
IDApJyBpcyBmYWxzZQorUEFTUyBkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yJykgaXMgbm9uLW51bGwuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107469</attachid>
            <date>2011-09-15 00:28:28 -0700</date>
            <delta_ts>2011-09-15 01:02:34 -0700</delta_ts>
            <desc>patch V2</desc>
            <filename>tap-highlight.diff2</filename>
            <type>text/plain</type>
            <size>13792</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTczKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMTQgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiB0aWppYW5n
QHJpbS5jb20ncyBwYXRjaC4gc3VwcG9ydCB0aGUgbmV3IENTUyBwcm9wZXJ0eSAtd2Via2l0LXRh
cC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAgb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdG91
Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBvd24gcGxhdGZvcm0K
KyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLiBPdGhlcndpc2Ug
UmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJlCisgICAgICAgIHVz
ZWQgYXMgV2ViS2l0IGRlZmF1bHQgdGFwIGhpZ2hsaWdodCBjb2xvci4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnRhcEhpZ2hsaWdodENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRUYXBIaWdobGlnaHRD
b2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5oOgorCiAyMDExLTA5LTE0ICBKZWZmcmV5IFBmYXUgIDxqZWZmcmV5QGVuZHJpZnQu
Y29tPgogCiAgICAgICAgIGxpYnhtbDIgZnJhZ21lbnQgcGFyc2VyIGxvc2VzIHByZWZpeCBuYW1l
c3BhY2VzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYg
KzI0Myw5IEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlLAogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3Bl
Y3RpdmVPcmlnaW4sCiAgICAgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3Is
CisjZW5kaWYKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLAogICAgIENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RW1waGFzaXNDb2xvciwKQEAgLTE3NDEsNiArMTc0NCwxMCBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVl
Q2FjaGUtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1Zh
bHVlVmlzdWFsIDogQ1NTVmFsdWVMb2dpY2FsKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgICAg
ICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+
dGFwSGlnaGxpZ2h0Q29sb3IoKSk7CisjZW5kaWYgICAgICAgICAgICAKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJEcmFnOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZh
bHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKHN0eWxlLT51c2VyRHJhZygpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTkyOSw2ICsxOTI5LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVZhbHVlKGludCBwcm9wSWQsIGIKICNlbmRpZgogICAgIC8vIEVuZCBBcHBsZS1zcGVjaWZpYyBw
cm9wZXJ0aWVzCiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlQXF1
YSAmJiBpZCA8PSBDU1NWYWx1ZVdpbmRvd3RleHQgfHwgaWQgPT0gQ1NTVmFsdWVNZW51CisgICAg
ICAgICAgICB8fCAoaWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENT
U1ZhbHVlV2Via2l0VGV4dCAmJiAhbV9zdHJpY3QpKSB7CisgICAgICAgICAgICAgdmFsaWRQcmlt
aXRpdmUgPSB0cnVlOyAvLyBub3RpY2U6IGFwcGxlIGNhbGwgdGhpcyB2YWxpZF9wcmltaXRpdmUg
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3Io
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
TGlzdC0+bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlz
IGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NDY0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
NDgsNCArMzQ4LDcgQEAgei1pbmRleAogLXdlYmtpdC1yZWdpb24tYnJlYWstYWZ0ZXIKIC13ZWJr
aXQtcmVnaW9uLWJyZWFrLWJlZm9yZQogLXdlYmtpdC1yZWdpb24tYnJlYWstaW5zaWRlCisjaWYg
ZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCistd2Vi
a2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxNyw2ICs0ODE3
LDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwb2ludGVyRXZlbnRzLCBQ
b2ludGVyRXZlbnRzKQogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7Cisg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBI
aWdobGlnaHRDb2xvcik7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBDb2xvciBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1
ZShwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9y
KGNvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKGNvbG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlz
aW9uIDk0NjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4NCw2ICsxMDg0LDEzIEBAIENvbG9yIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybUluYWN0aXZlVGV4dFMKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZ
ZWxsb3cuCiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWU6
OnRhcEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRm
b3JtVGFwSGlnaGxpZ2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRoZW1lOjpz
ZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYgYykKIHsKICAgICBjdXN0b21Gb2N1
c1JpbmdDb2xvcigpID0gYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29sb3IgZm9jdXNSaW5nQ29sb3IoKTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
Rm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQogICAgIHN0
YXRpYyB2b2lkIHNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigp
OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogCiAgICAgdmlydHVh
bCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyByZXR1cm4gMC41OyB9CkBAIC0z
MzAsNiArMzMzLDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAw
eDMzMDAwMDAwOworI2VuZGlmCisKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIFRoZW1lKiBtX3Ro
ZW1lOyAvLyBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUuCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24g
OTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bWFnZS5oIgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAKQEAgLTE1MDgsNCArMTUxMSwxMSBAQCBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzCiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBI
aWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRD
b2xvcigpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5NDY0
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTgsNiArNzk4LDkgQEAgcHVibGljOgogCiAgICAgTGluZUJveENvbnRh
aW4gbGluZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9s
aW5lQm94Q29udGFpbjsgfQogICAgIGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBj
b25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9CisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQorI2VuZGlmCiAg
ICAgYm9vbCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRh
LT50ZXh0U2l6ZUFkanVzdDsgfQogICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEt
PnRleHRTZWN1cml0eSk7IH0KIApAQCAtMTE2OCw2ICsxMTcxLDkgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9WQVIocmFyZUlu
aGVyaXRlZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9CiAgICAgdm9pZCBzZXRMaW5lQ2xh
bXAoTGluZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5l
Q2xhbXAsIGMpOyB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNldFRhcEhp
Z2hsaWdodENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IHRhcEhpZ2hsaWdodENvbG9yLCBjKTsgfQorI2VuZGlmCiAgICAgYm9vbCBzZXRUZXh0U2l6ZUFk
anVzdChib29sKTsKICAgICB2b2lkIHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0
U2VjdXJpdHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4
dFNlY3VyaXR5KTsgfQogCkBAIC0xNDE1LDYgKzE0MjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IExpbmVDbGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1
ZSgpOyB9CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIHN0YXRpYyBFVGV4dFNlY3VyaXR5IGluaXRpYWxUZXh0U2VjdXJpdHkoKSB7
IHJldHVybiBUU05PTkU7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBD
b2xvciBpbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVn
aW9uPiYgaW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9y
PFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDk0NjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
NSw2ICs1NSw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAg
ICAsIG1faW1hZ2VSZW5kZXJpbmcoUmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygp
KQogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgtMSkKICAgICAsIGh5cGhlbmF0aW9uTGlt
aXRBZnRlcigtMSkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0
Q29sb3IoUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpKQorI2VuZGlmCiB7
CiB9CiAKQEAgLTkzLDYgKzk2LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
SW5oZXJpdAogICAgICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKG8uaHlwaGVuYXRpb25MaW1pdEFm
dGVyKQogICAgICwgbG9jYWxlKG8ubG9jYWxlKQogICAgICwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFy
ayhvLnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICAsIHRhcEhpZ2hsaWdodENvbG9yKG8udGFwSGlnaGxpZ2h0Q29sb3IpCisjZW5kaWYKIHsKIH0K
IApAQCAtMTE1LDYgKzEyMSw5IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0
b3I9PSgKICAgICAgICAgJiYgdGV4dFN0cm9rZVdpZHRoID09IG8udGV4dFN0cm9rZVdpZHRoCiAg
ICAgICAgICYmIHRleHRGaWxsQ29sb3IgPT0gby50ZXh0RmlsbENvbG9yCiAgICAgICAgICYmIHRl
eHRFbXBoYXNpc0NvbG9yID09IG8udGV4dEVtcGhhc2lzQ29sb3IKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgICAgICAmJiB0YXBIaWdobGlnaHRDb2xvciA9PSBvLnRhcEhpZ2hsaWdodENv
bG9yCisjZW5kaWYKICAgICAgICAgJiYgc2hhZG93RGF0YUVxdWl2YWxlbnQobykKICAgICAgICAg
JiYgaGlnaGxpZ2h0ID09IG8uaGlnaGxpZ2h0CiAgICAgICAgICYmIGN1cnNvckRhdGFFcXVpdmFs
ZW50KGN1cnNvckRhdGEuZ2V0KCksIG8uY3Vyc29yRGF0YS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuaAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBA
CiAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25l
ZCBraHRtbExpbmVCcmVhayA6IDE7IC8vIEVLSFRNTExpbmVCcmVhawogICAgIGJvb2wgdGV4dFNp
emVBZGp1c3QgOiAxOyAvLyBBbiBBcHBsZSBleHRlbnNpb24uCiAgICAgdW5zaWduZWQgcmVzaXpl
IDogMjsgLy8gRVJlc2l6ZQotICAgIHVuc2lnbmVkIHVzZXJTZWxlY3QgOiAxOyAgLy8gRVVzZXJT
ZWxlY3QKKyAgICB1bnNpZ25lZCB1c2VyU2VsZWN0IDogMTsgLy8gRVVzZXJTZWxlY3QKICAgICB1
bnNpZ25lZCBjb2xvclNwYWNlIDogMTsgLy8gQ29sb3JTcGFjZQogICAgIHVuc2lnbmVkIHNwZWFr
IDogMzsgLy8gRVNwZWFrCiAgICAgdW5zaWduZWQgaHlwaGVucyA6IDI7IC8vIEh5cGhlbnMKQEAg
LTk3LDYgKzk3LDkgQEAgcHVibGljOgogCiAgICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNpc0N1
c3RvbU1hcms7CiAgICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlczsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOworI2VuZGlmCiAKIHByaXZh
dGU6CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTUx
NzMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAxMS0wOS0xNCAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFN1cHBvcnQgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIGluIFdlYkNvcmUgd2hlbiBl
bmFibGluZyB0b3VjaCBldmVudHMgc3VwcG9ydC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIGdldCBjdXN0b21pemVk
IHRhcCBoaWdobGlnaHQgY29sb3Igc2V0IGJ5IHBhZ2UgYXV0aG9yLgorCisgICAgICAgICogZmFz
dC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDExLTA5LTE0ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gcmViYXNlbGluZSBleHBlY3RhdGlvbnMgZHVlIHRvIHI5NTA5Niwgcjk1
MTIxLCBhbmQgcjk1MTI5CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAt
aGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29s
b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACitUb3VjaCBNZSEK
K0NoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQKKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1N0YWdlOiB0b3VjaCBzdGFydAorUEFTUyBldmVudC50YXJnZXRU
b3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJESVYiCitQQVNTIGV2ZW50LnRhcmdldFRvdWNo
ZXNbMF0udGFyZ2V0LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1MgZGl2Lm93bmVyRG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpIGlzICJyZ2JhKDExLCAyMiwgMzMsIDApIgor
U3RhZ2U6IHRvdWNoIGVuZAorUEFTUyBkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGln
aGxpZ2h0LWNvbG9yJykgPT0gJ3JnYmEoMTEsIDIyLCAzMywgMCknIGlzIGZhbHNlCitQQVNTIGRp
di5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InKSBpcyBub24tbnVs
bC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107474</attachid>
            <date>2011-09-15 01:02:34 -0700</date>
            <delta_ts>2011-09-27 08:03:27 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>tap-highlight.diff3</filename>
            <type>text/plain</type>
            <size>17587</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTc1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMTUgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiB0aWppYW5n
QHJpbS5jb20ncyBwYXRjaC4gc3VwcG9ydCB0aGUgbmV3IENTUyBwcm9wZXJ0eSAtd2Via2l0LXRh
cC1oaWdobGlnaHQtY29sb3IKKyAgICAgICAgb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdG91
Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2ViQ29yZTo6UmVuZGVy
VGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBvd24gcGxhdGZvcm0K
KyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLiBPdGhlcndpc2Ug
UmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJlCisgICAgICAgIHVz
ZWQgYXMgV2ViS2l0IGRlZmF1bHQgdGFwIGhpZ2hsaWdodCBjb2xvci4KKworICAgICAgICAqIGNz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VW
YWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0
aWFsVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnRhcEhpZ2hsaWdodENv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRUYXBIaWdobGlnaHRD
b2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJl
SW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5oOgorCiAyMDExLTA5LTE0ICBNYXR0aGV3IERlbGFuZXkgIDxtZGVsYW5leUBhcHBs
ZS5jb20+CiAKICAgICAgICAgVXNlIGlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgb24gdGhlIEdyYXBo
aWNzQ29udGV4dCBpbnN0ZWFkIG9mIGZsYWdzIGluIEltYWdlQnVmZmVyCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAkocmV2
aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQzLDYgKzI0Myw5IEBAIHN0YXRpYyBjb25z
dCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNw
ZWN0aXZlLAogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4sCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IsCisjZW5kaWYKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRDb21iaW5lLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvciwKQEAg
LTE3NDEsNiArMTc0NCwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5n
OgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZUlkZW50aWZp
ZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDogQ1NTVmFsdWVM
b2dpY2FsKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgICAgICAgICByZXR1cm4gY3VycmVudENv
bG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGFwSGlnaGxpZ2h0Q29sb3IoKSk7
CisjZW5kaWYgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJE
cmFnOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVl
KHN0eWxlLT51c2VyRHJhZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJT
ZWxlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gOTQ2NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTky
OSw2ICsxOTI5LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIK
ICNlbmRpZgogICAgIC8vIEVuZCBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0aWVzCiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRD
b2xvcjoKKyAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBDU1NWYWx1ZVdp
bmRvd3RleHQgfHwgaWQgPT0gQ1NTVmFsdWVNZW51CisgICAgICAgICAgICB8fCAoaWQgPj0gQ1NT
VmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAh
bV9zdHJpY3QpKSB7CisgICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOyAvLyBub3Rp
Y2U6IGFwcGxlIGNhbGwgdGhpcyB2YWxpZF9wcmltaXRpdmUgCisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3IoKTsKKyAgICAgICAgICAgIGlmIChw
YXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIC8qIHNob3J0aGFuZCBwcm9wZXJ0
aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAgICAgLy8gUG9z
aXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1c2UgYSBwbGFp
biBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsNCArMzQ4LDcgQEAgei1pbmRl
eAogLXdlYmtpdC1yZWdpb24tYnJlYWstYWZ0ZXIKIC13ZWJraXQtcmVnaW9uLWJyZWFrLWJlZm9y
ZQogLXdlYmtpdC1yZWdpb24tYnJlYWstaW5zaWRlCisjaWYgZGVmaW5lZChFTkFCTEVfVE9VQ0hf
RVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCistd2Via2l0LXRhcC1oaWdobGlnaHQtY29s
b3IKKyNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgxNyw2ICs0ODE3LDE3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lO
SVRJQUxfQU5EX1BSSU1JVElWRShwb2ludGVyRXZlbnRzLCBQb2ludGVyRXZlbnRzKQogICAgICAg
ICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7CisgICAgICAgIEhBTkRMRV9JTkhFUklU
X0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBIaWdobGlnaHRDb2xvcik7CisgICAg
ICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBD
b2xvciBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVWYWx1ZSk7Cisg
ICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29sb3JDb3JyZWN0
aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKGNv
bG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDk0NjQwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4
NCw2ICsxMDg0LDEzIEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0aXZlVGV4dFMK
ICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZZWxsb3cuCiB9CiAKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKCkK
K3sKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3Io
KTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xv
cihjb25zdCBDb2xvciYgYykKIHsKICAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0gYzsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCShyZXZpc2lvbiA5NDY0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNyArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29sb3IgZm9jdXNSaW5n
Q29sb3IoKTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25z
dCB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbUZv
Y3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQor
ICAgIHN0YXRpYyBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpOworICAgIHZpcnR1YWwgQ29sb3Ig
cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCBwbGF0
Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogCiAgICAgdmlydHVhbCBkb3VibGUgY2FyZXRCbGlua0lu
dGVydmFsKCkgY29uc3QgeyByZXR1cm4gMC41OyB9CkBAIC0zMzAsNiArMzMzLDEwIEBAIHByaXZh
dGU6CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVn
cm91bmRDb2xvcjsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGljIGNvbnN0
IFJHQkEzMiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAweDMzMDAwMDAwOworI2VuZGlmCisK
ICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIFRoZW1lKiBtX3RoZW1lOyAvLyBUaGUgcGxhdGZvcm0t
c3BlY2lmaWMgdGhlbWUuCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gOTQ2NDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw5IEBACiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNs
dWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNlbmRpZgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKQEAgLTE1MDgsNCAr
MTUxMSwxMSBAQCBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1waGFzCiAgICAg
cmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorQ29sb3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpCit7Cisg
ICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpOworfQorI2VuZGlmCisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5NDY0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OTgsNiAr
Nzk4LDkgQEAgcHVibGljOgogCiAgICAgTGluZUJveENvbnRhaW4gbGluZUJveENvbnRhaW4oKSBj
b25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94Q29udGFpbjsgfQogICAg
IGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBjb25zdCB7IHJldHVybiByYXJlTm9u
SW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQorI2VuZGlmCiAgICAgYm9vbCB0ZXh0U2l6ZUFkanVz
dCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2l6ZUFkanVzdDsgfQog
ICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRTZWN1cml0eSk7IH0KIApA
QCAtMTE2OCw2ICsxMTcxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRMaW5lQm94Q29udGFp
bihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUJv
eENvbnRhaW4sIGMpOyB9CiAgICAgdm9pZCBzZXRMaW5lQ2xhbXAoTGluZUNsYW1wVmFsdWUgYykg
eyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAsIGMpOyB9CisjaWYgRU5B
QkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNldFRhcEhpZ2hsaWdodENvbG9yKGNvbnN0IENv
bG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhpZ2hsaWdodENvbG9yLCBj
KTsgfQorI2VuZGlmCiAgICAgYm9vbCBzZXRUZXh0U2l6ZUFkanVzdChib29sKTsKICAgICB2b2lk
IHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJpdHkpIHsgU0VUX1ZBUihy
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3VyaXR5KTsgfQogCkBAIC0x
NDE1LDYgKzE0MjEsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExpbmVDbGFtcFZhbHVlIGluaXRp
YWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9CiAgICAgc3RhdGljIGJv
b2wgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHN0YXRpYyBF
VGV4dFNlY3VyaXR5IGluaXRpYWxUZXh0U2VjdXJpdHkoKSB7IHJldHVybiBUU05PTkU7IH0KKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciBpbml0aWFsVGFwSGlnaGxp
Z2h0Q29sb3IoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICBz
dGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYgaW5pdGlhbERhc2hib2Fy
ZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9u
PiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlz
aW9uIDk0NjQwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUlu
aGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIG1faW1hZ2VSZW5kZXJpbmco
UmVuZGVyU3R5bGU6OmluaXRpYWxJbWFnZVJlbmRlcmluZygpKQogICAgICwgaHlwaGVuYXRpb25M
aW1pdEJlZm9yZSgtMSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRBZnRlcigtMSkKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUYXBIaWdobGlnaHRDb2xvcigpKQorI2VuZGlmCiB7CiB9CiAKQEAgLTkzLDYgKzk2LDkg
QEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdAogICAgICwgaHlwaGVu
YXRpb25MaW1pdEFmdGVyKG8uaHlwaGVuYXRpb25MaW1pdEFmdGVyKQogICAgICwgbG9jYWxlKG8u
bG9jYWxlKQogICAgICwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhvLnRleHRFbXBoYXNpc0N1c3Rv
bU1hcmspCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIHRhcEhpZ2hsaWdodENvbG9y
KG8udGFwSGlnaGxpZ2h0Q29sb3IpCisjZW5kaWYKIHsKIH0KIApAQCAtMTE1LDYgKzEyMSw5IEBA
IGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSgKICAgICAgICAgJiYgdGV4
dFN0cm9rZVdpZHRoID09IG8udGV4dFN0cm9rZVdpZHRoCiAgICAgICAgICYmIHRleHRGaWxsQ29s
b3IgPT0gby50ZXh0RmlsbENvbG9yCiAgICAgICAgICYmIHRleHRFbXBoYXNpc0NvbG9yID09IG8u
dGV4dEVtcGhhc2lzQ29sb3IKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICAmJiB0
YXBIaWdobGlnaHRDb2xvciA9PSBvLnRhcEhpZ2hsaWdodENvbG9yCisjZW5kaWYKICAgICAgICAg
JiYgc2hhZG93RGF0YUVxdWl2YWxlbnQobykKICAgICAgICAgJiYgaGlnaGxpZ2h0ID09IG8uaGln
aGxpZ2h0CiAgICAgICAgICYmIGN1cnNvckRhdGFFcXVpdmFsZW50KGN1cnNvckRhdGEuZ2V0KCks
IG8uY3Vyc29yRGF0YS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAkocmV2aXNpb24gOTQ2NDAp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAKICNpbmNsdWRlICJDb2xvci5o
IgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBraHRtbExpbmVCcmVhayA6IDE7
IC8vIEVLSFRNTExpbmVCcmVhawogICAgIGJvb2wgdGV4dFNpemVBZGp1c3QgOiAxOyAvLyBBbiBB
cHBsZSBleHRlbnNpb24uCiAgICAgdW5zaWduZWQgcmVzaXplIDogMjsgLy8gRVJlc2l6ZQotICAg
IHVuc2lnbmVkIHVzZXJTZWxlY3QgOiAxOyAgLy8gRVVzZXJTZWxlY3QKKyAgICB1bnNpZ25lZCB1
c2VyU2VsZWN0IDogMTsgLy8gRVVzZXJTZWxlY3QKICAgICB1bnNpZ25lZCBjb2xvclNwYWNlIDog
MTsgLy8gQ29sb3JTcGFjZQogICAgIHVuc2lnbmVkIHNwZWFrIDogMzsgLy8gRVNwZWFrCiAgICAg
dW5zaWduZWQgaHlwaGVucyA6IDI7IC8vIEh5cGhlbnMKQEAgLTk3LDYgKzk3LDkgQEAgcHVibGlj
OgogCiAgICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNpc0N1c3RvbU1hcms7CiAgICAgUmVmUHRy
PFF1b3Rlc0RhdGE+IHF1b3RlczsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENvbG9y
IHRhcEhpZ2hsaWdodENvbG9yOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTUxNzYpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0wOS0xNSAgSm9o
bm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgLXdlYmtpdC10
YXAtaGlnaGxpZ2h0LWNvbG9yIGluIFdlYkNvcmUgd2hlbiBlbmFibGluZyB0b3VjaCBldmVudHMg
c3VwcG9ydC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00ODU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBhIGxheW91dCB0ZXN0IHRvIGdldCBjdXN0b21pemVkIHRhcCBoaWdobGlnaHQgY29sb3Ig
c2V0IGJ5IHBhZ2UgYXV0aG9yLgorCisgICAgICAgICogZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0
LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanM6IEFkZGVkLgorICAgICAgICAob25Ub3VjaFN0
YXJ0KToKKyAgICAgICAgKHRvdWNoVGFyZ2V0cyk6CisgICAgICAgICogZmFzdC9ldmVudHMvdG91
Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMTUgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSByZWJhc2VsaW5lIGV4cGVjdGF0aW9ucyBkdWUgdG8gcjk1MTIxCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxp
Z2h0LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE3IEBACitUb3VjaCBNZSEKK0NoZWNrIHRhcCBoaWdobGlnaHQgY29sb3Ig
aW4gdG91Y2ggZXZlbnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YWdlOiB0
b3VjaCBzdGFydAorUEFTUyBldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlz
ICJESVYiCitQQVNTIGV2ZW50LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0b3VjaHRh
cmdldCIKK1BBU1MgZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xv
cicpIGlzICJyZ2JhKDExLCAyMiwgMzMsIDApIgorU3RhZ2U6IHRvdWNoIGVuZAorUEFTUyBkaXYu
b3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0
UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykgPT0gJ3JnYmEoMTEs
IDIyLCAzMywgMCknIGlzIGZhbHNlCitQQVNTIGRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRh
cC1oaWdobGlnaHQtY29sb3InKSBpcyBub24tbnVsbC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+
PC9zY3JpcHQ+Cis8IS0tCisgIFRvIHRlc3QgdGhlIG5ldyBDU1MgcHJvcGVydHkgLXdlYmtpdC10
YXAtaGlnaGxpZ2h0LWNvbG9yIHdoaWNoIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gYnVpbGRpbmcK
KyAgV2ViS2l0IHdpdGggRU5BQkxFKFRPVUNIX0VWRU5UUyksIHdlIGNyZWF0ZSBhIG5ldyBkaXYg
ZWxlbWVudCBhbmQgYWRkIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorICBpbiB0aGUgZWxl
bWVudCwgdGhlbiBzZWUgd2hldGhlciB3ZSBjYW4gZ2V0IHRoZSBzcGVjaWZpZWQgdGFwIGhpZ2hs
aWdodCBjb2xvciBmcm9tIERPTS4KKyAgV2ViS2l0IHBvcnRzIGNhbiB1c2UgdGhpcyBjc3MgcHJv
cGVydHkgdG8gZ2V0IHRoZSBjdXN0b21pemVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSB0aGUg
d2VicGFnZQorICB3aGljaCBpcyBzZXQgYnkgd2ViIGRldmVsb3BlcnMgdG8gbWFrZSBzdXJlIHRo
YXQgdGFwIGhpZ2hsaWdodCBjb2xvciBmaXRzIHRoZWlyIHdlYnNpdGVzIGluc3RlYWQKKyAgb2Yg
dXNpbmcgdGhlIGhhcmRjb2RlIHZhbHVlIHByb3ZpZGVkIGJ5IGJyb3dzZXJzLgorLS0+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMi
Pjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGln
aHQtY29sb3IuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3Vj
aC9zY3JpcHQtdGVzdHMvdGFwLWhpZ2hsaWdodC1jb2xvci5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NiBAQAordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2
LmlkID0gInRvdWNodGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYuc3R5
bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5jb2xvciA9ICJibHVlIjsKK2Rpdi5pbm5l
clRleHQgPSAiVG91Y2ggTWUhIjsKK2Rpdi5zdHlsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvciA9
ICJyZ2JhKDExLCAyMiwgMzMsIDApIjsKKworZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCkKK3sKKyAg
ICBkZWJ1ZygiU3RhZ2U6IHRvdWNoIHN0YXJ0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQuaWQiLCAi
dG91Y2h0YXJnZXQiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5vd25lckRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InKSIsICJyZ2JhKDExLCAyMiwgMzMsIDAp
Iik7CisgICAgZGl2LnN0eWxlLndlYmtpdFRhcEhpZ2hsaWdodENvbG9yID0gIiI7ICAvLyBDbGVh
ciB0aGUgY3VzdG9taXplZCB0YXAgaGlnaGxpZ2h0IGNvbG9yCit9CisKK2Z1bmN0aW9uIG9uVG91
Y2hFbmQoKQoreworICAgIGRlYnVnKCJTdGFnZTogdG91Y2ggZW5kIik7CisgICAgLy8gQ2hlY2sg
dGhlIGRlZmF1bHQgdmFsdWUuCisgICAgc2hvdWxkQmVGYWxzZSgiZGl2Lm93bmVyRG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMsIDApJyIp
CisgICAgc2hvdWxkQmVOb25OdWxsKCJkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGln
aGxpZ2h0LWNvbG9yJykiKTsKKyAgICAvLyBOb3RpZnkgdGhlIHRlc3QgZG9uZS4KKyAgICBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0
ZW5lcigidG91Y2hzdGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlz
dGVuZXIoInRvdWNoZW5kIiwgb25Ub3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNl
cnRCZWZvcmUoZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB0b3Vj
aFRhcmdldHMoKQoreworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBl
dmVudFNlbmRlci5hZGRUb3VjaFBvaW50KDIwLCAyMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hT
dGFydCgpOworICAgIGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDUwKTsKKyAg
ICBldmVudFNlbmRlci50b3VjaE1vdmUoKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQ
b2ludCgwKTsKKyAgICBldmVudFNlbmRlci50b3VjaEVuZCgpOworfQorCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKworaWYgKHdpbmRvdy5ldmVudFNlbmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNo
UG9pbnRzKSB7CisgICAgZGVzY3JpcHRpb24oIkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4g
dG91Y2ggZXZlbnQiKTsKKworICAgIHRvdWNoVGFyZ2V0cygpOworfSBlbHNlIHsKKyAgICBkZWJ1
ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlICYmIFdlYktpdCBidWlsdCB3aXRo
IEVOQUJMRShUT1VDSF9FVkVOVCkuIikKK30KKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108849</attachid>
            <date>2011-09-27 08:03:27 -0700</date>
            <delta_ts>2011-09-28 08:06:38 -0700</delta_ts>
            <desc>latest patch v2</desc>
            <filename>tap-highlight.diff4</filename>
            <type>text/plain</type>
            <size>18073</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMjYgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCYXNlZCBvbiB0aWppYW5n
QHJpbS5jb20ncyBwYXRjaCB3aGljaCB3YXMgYmFzZWQgb24gc29tZSBjb2RlIGluIEFwcGxlIElQ
aG9uZSdzIHJlbGVhc2UgdGFyYmFsbC4KKyAgICAgICAgU3VwcG9ydCB0aGUgbmV3IENTUyBwcm9w
ZXJ0eSAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3Igb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBv
cnQgdG91Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2ViQ29yZTo6
UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBvd24gcGxh
dGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLiBPdGhl
cndpc2UgUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJlCisgICAg
ICAgIHVzZWQgYXMgV2ViS2l0IGRlZmF1bHQgdGFwIGhpZ2hsaWdodCBjb2xvci4KKworICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW46CisgICAgICAg
ICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxl
Ojppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnRhcEhpZ2hs
aWdodENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXRUYXBIaWdo
bGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oOgorCiAyMDExLTA5LTI2ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2UgQ0NUaHJlYWRQcm94eSBkcmF3CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcAkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDYgKzI0Nyw5IEBAIHN0
YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlLAogICAgIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW4s
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZywKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IsCisjZW5kaWYKICAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRDb21iaW5lLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4
dERlY29yYXRpb25zSW5FZmZlY3QsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXND
b2xvciwKQEAgLTE3OTcsNiArMTgwMCwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjCiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFJ0
bE9yZGVyaW5nOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0
ZUlkZW50aWZpZXJWYWx1ZShzdHlsZS0+cnRsT3JkZXJpbmcoKSA/IENTU1ZhbHVlVmlzdWFsIDog
Q1NTVmFsdWVMb2dpY2FsKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgICAgICAgICByZXR1cm4g
Y3VycmVudENvbG9yT3JWYWxpZENvbG9yKHN0eWxlLmdldCgpLCBzdHlsZS0+dGFwSGlnaGxpZ2h0
Q29sb3IoKSk7CisjZW5kaWYgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJEcmFnOgogICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNy
ZWF0ZVZhbHVlKHN0eWxlLT51c2VyRHJhZygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFVzZXJTZWxlY3Q6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24g
OTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkzNCw2ICsxOTM0LDE4IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBw
cm9wSWQsIGIKICNlbmRpZgogICAgIC8vIEVuZCBBcHBsZS1zcGVjaWZpYyBwcm9wZXJ0aWVzCiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUYXBI
aWdobGlnaHRDb2xvcjoKKyAgICAgICAgaWYgKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBD
U1NWYWx1ZVdpbmRvd3RleHQgfHwgaWQgPT0gQ1NTVmFsdWVNZW51CisgICAgICAgICAgICB8fCAo
aWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1JpbmdDb2xvciAmJiBpZCA8IENTU1ZhbHVlV2Via2l0
VGV4dCAmJiAhbV9zdHJpY3QpKSB7CisgICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVl
OyAvLyBub3RpY2U6IGFwcGxlIGNhbGwgdGhpcyB2YWxpZF9wcmltaXRpdmUgCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3IoKTsKKyAgICAgICAg
ICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgp
OworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAgIC8qIHNob3J0aGFu
ZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91bmQ6IHsKICAgICAg
ICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlzIGFycmF5IGJlY2F1
c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNCArMzU1LDcg
QEAgei1pbmRleAogLXdlYmtpdC1yZWdpb24tYnJlYWstYWZ0ZXIKIC13ZWJraXQtcmVnaW9uLWJy
ZWFrLWJlZm9yZQogLXdlYmtpdC1yZWdpb24tYnJlYWstaW5zaWRlCisjaWYgZGVmaW5lZChFTkFC
TEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCistd2Via2l0LXRhcC1oaWdo
bGlnaHQtY29sb3IKKyNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4Miw2ICszNTgyLDE3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgSEFORExFX0lOSEVS
SVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwb2ludGVyRXZlbnRzLCBQb2ludGVyRXZlbnRz
KQogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7CisgICAgICAgIEhBTkRM
RV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBIaWdobGlnaHRDb2xv
cik7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBDb2xvciBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1ZShwcmltaXRpdmVW
YWx1ZSk7CisgICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9yKGNvbCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Q29s
b3JDb3JyZWN0aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJ
TUlUSVZFKGNvbG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlzaW9uIDk2MDY4KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA4NCw2ICsxMDg0LDEzIEBAIENvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybUluYWN0
aXZlVGV4dFMKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZZWxsb3cuCiB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdo
dENvbG9yKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRmb3JtVGFwSGlnaGxp
Z2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1
c1JpbmdDb2xvcihjb25zdCBDb2xvciYgYykKIHsKICAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigp
ID0gYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCShyZXZpc2lv
biA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29sb3Ig
Zm9jdXNSaW5nQ29sb3IoKTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29s
b3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQogICAgIHN0YXRpYyB2b2lkIHNl
dEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpOworICAgIHZpcnR1
YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIFJlbmRl
clRoZW1lOjpkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyNlbmRpZgogICAgIHZpcnR1YWwg
dm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogCiAgICAgdmlydHVhbCBkb3VibGUgY2Fy
ZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyByZXR1cm4gMC41OyB9CkBAIC0zMzAsNiArMzMzLDEw
IEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RCb3hTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZlTGlzdEJveFNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcjsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3Rh
dGljIGNvbnN0IFJHQkEzMiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAweDMzMDAwMDAwOwor
I2VuZGlmCisKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIFRoZW1lKiBtX3RoZW1lOyAvLyBUaGUg
cGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUuCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24gOTYwNjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKKyNlbmRpZgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKQEAg
LTE1MDgsNiArMTUxMSwxMyBAQCBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0eWxlOjp0ZXh0RW1w
aGFzCiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAKKyNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xv
cigpCit7CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpOworfQor
I2VuZGlmCisKIHZvaWQgUmVuZGVyU3R5bGU6OmdldEltYWdlT3V0c2V0cyhjb25zdCBOaW5lUGll
Y2VJbWFnZSYgaW1hZ2UsIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYgcmlnaHQsIExheW91
dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QKIHsKICAgICB0b3AgPSBOaW5l
UGllY2VJbWFnZTo6Y29tcHV0ZU91dHNldChpbWFnZS5vdXRzZXQoKS50b3AoKSwgYm9yZGVyVG9w
V2lkdGgoKSk7CkBAIC0xNTI3LDUgKzE1MzcsNSBAQCB2b2lkIFJlbmRlclN0eWxlOjpnZXRJbWFn
ZVZlcnRpY2FsT3V0c2V0CiAgICAgdG9wID0gTmluZVBpZWNlSW1hZ2U6OmNvbXB1dGVPdXRzZXQo
aW1hZ2Uub3V0c2V0KCkudG9wKCksIGJvcmRlclRvcFdpZHRoKCkpOwogICAgIGJvdHRvbSA9IE5p
bmVQaWVjZUltYWdlOjpjb21wdXRlT3V0c2V0KGltYWdlLm91dHNldCgpLmJvdHRvbSgpLCBib3Jk
ZXJCb3R0b21XaWR0aCgpKTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgzMCw2ICs4MzAsOSBAQCBwdWJsaWM6CiAKICAgICBMaW5l
Qm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWRE
YXRhLT5tX2xpbmVCb3hDb250YWluOyB9CiAgICAgY29uc3QgTGluZUNsYW1wVmFsdWUmIGxpbmVD
bGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5saW5lQ2xhbXA7IH0K
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdodENvbG9yOyB9Cisj
ZW5kaWYKICAgICBib29sIHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVy
aXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgRVRleHRTZWN1cml0eSB0ZXh0U2VjdXJp
dHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5PihyYXJlSW5oZXJp
dGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCkBAIC0xMjAxLDYgKzEyMDQsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWluIGMpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29udGFpbiwgYyk7IH0KICAgICB2b2lkIHNl
dExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIGxpbmVDbGFtcCwgYyk7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZvaWQg
c2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJp
dGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9CisjZW5kaWYKICAgICBib29sIHNldFRl
eHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5KEVUZXh0U2VjdXJp
dHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0U2VjdXJp
dHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE0NTAsNiArMTQ1Niw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsgcmV0dXJuIExpbmVD
bGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVGV4dFNpemVBZGp1c3QoKSB7
IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5pdGlhbFRleHRTZWN1
cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAg
c3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpOworI2VuZGlmCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNo
Ym9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAgIHN0YXRpYyBjb25z
dCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJkUmVnaW9ucygpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdAogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgtMSkKICAgICAsIGh5cGhlbmF0aW9u
TGltaXRBZnRlcigtMSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5lcygtMSkKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVuZGVyU3R5bGU6Omlu
aXRpYWxUYXBIaWdobGlnaHRDb2xvcigpKQorI2VuZGlmICAgIAogewogfQogCkBAIC05NSw2ICs5
OCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIGh5
cGhlbmF0aW9uTGltaXRMaW5lcyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykKICAgICAsIGxvY2Fs
ZShvLmxvY2FsZSkKICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50ZXh0RW1waGFzaXND
dXN0b21NYXJrKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCB0YXBIaWdobGlnaHRD
b2xvcihvLnRhcEhpZ2hsaWdodENvbG9yKQorI2VuZGlmCiB7CiB9CiAKQEAgLTExNyw2ICsxMjMs
OSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oCiAgICAgICAgICYm
IHRleHRTdHJva2VXaWR0aCA9PSBvLnRleHRTdHJva2VXaWR0aAogICAgICAgICAmJiB0ZXh0Rmls
bENvbG9yID09IG8udGV4dEZpbGxDb2xvcgogICAgICAgICAmJiB0ZXh0RW1waGFzaXNDb2xvciA9
PSBvLnRleHRFbXBoYXNpc0NvbG9yCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAgICAg
JiYgdGFwSGlnaGxpZ2h0Q29sb3IgPT0gby50YXBIaWdobGlnaHRDb2xvcgorI2VuZGlmCiAgICAg
ICAgICYmIHNoYWRvd0RhdGFFcXVpdmFsZW50KG8pCiAgICAgICAgICYmIGhpZ2hsaWdodCA9PSBv
LmhpZ2hsaWdodAogICAgICAgICAmJiBjdXJzb3JEYXRhRXF1aXZhbGVudChjdXJzb3JEYXRhLmdl
dCgpLCBvLmN1cnNvckRhdGEuZ2V0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHJldmlzaW9uIDk2
MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRl
ZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiAjaW5jbHVkZSAiQ29s
b3IuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQga2h0bWxMaW5lQnJlYWsg
OiAxOyAvLyBFS0hUTUxMaW5lQnJlYWsKICAgICBib29sIHRleHRTaXplQWRqdXN0IDogMTsgLy8g
QW4gQXBwbGUgZXh0ZW5zaW9uLgogICAgIHVuc2lnbmVkIHJlc2l6ZSA6IDI7IC8vIEVSZXNpemUK
LSAgICB1bnNpZ25lZCB1c2VyU2VsZWN0IDogMTsgIC8vIEVVc2VyU2VsZWN0CisgICAgdW5zaWdu
ZWQgdXNlclNlbGVjdCA6IDE7IC8vIEVVc2VyU2VsZWN0CiAgICAgdW5zaWduZWQgY29sb3JTcGFj
ZSA6IDE7IC8vIENvbG9yU3BhY2UKICAgICB1bnNpZ25lZCBzcGVhayA6IDM7IC8vIEVTcGVhawog
ICAgIHVuc2lnbmVkIGh5cGhlbnMgOiAyOyAvLyBIeXBoZW5zCkBAIC05OCw2ICs5OCw5IEBAIHB1
YmxpYzoKIAogICAgIEF0b21pY1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21NYXJrOwogICAgIFJl
ZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBD
b2xvciB0YXBIaWdobGlnaHRDb2xvcjsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGEoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MDY4KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDktMjYg
IEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJr
aXQtdGFwLWhpZ2hsaWdodC1jb2xvciBpbiBXZWJDb3JlIHdoZW4gZW5hYmxpbmcgdG91Y2ggZXZl
bnRzIHN1cHBvcnQuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDg1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBnZXQgY3VzdG9taXplZCB0YXAgaGlnaGxpZ2h0IGNv
bG9yIHNldCBieSBwYWdlIGF1dGhvci4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3Nj
cmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzOiBBZGRlZC4KKyAgICAgICAgKG9uVG91
Y2hTdGFydCk6CisgICAgICAgICh0b3VjaFRhcmdldHMpOgorICAgICAgICAqIGZhc3QvZXZlbnRz
L3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLmh0bWw6IEFkZGVkLgorCiAy
MDExLTA5LTI2ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFB1dCBiYWNrIGFsbCBDaHJvbWl1bSBwbGF0Zm9ybSBmYWlsaW5nIGV4cGVjdGF0aW9ucyBm
b3Igc29tZSB0ZXN0cyAodGhleQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gv
dGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0
LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorVG91Y2gg
TWUhCitDaGVjayB0YXAgaGlnaGxpZ2h0IGNvbG9yIGluIHRvdWNoIGV2ZW50CisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitTdGFnZTogdG91Y2ggc3RhcnQKK1BBU1MgZXZlbnQudGFy
Z2V0VG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgorUEFTUyBldmVudC50YXJnZXRU
b3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidG91Y2h0YXJnZXQiCitQQVNTIGRpdi5vd25lckRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InKSBpcyAicmdiYSgxMSwgMjIsIDMzLCAw
KSIKK1N0YWdlOiB0b3VjaCBlbmQKK1BBU1MgZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFw
LWhpZ2hsaWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMsIDApJyBpcyBmYWxzZQorUEFT
UyBkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykgaXMgbm9u
LW51bGwuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xv
ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1o
aWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vanMvcmVz
b3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPCEtLQorICBUbyB0ZXN0
IHRoZSBuZXcgQ1NTIHByb3BlcnR5IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciB3aGljaCBp
cyBvbmx5IHN1cHBvcnRlZCB3aGVuIGJ1aWxkaW5nCisgIFdlYktpdCB3aXRoIEVOQUJMRShUT1VD
SF9FVkVOVFMpLCB3ZSBjcmVhdGUgYSBuZXcgZGl2IGVsZW1lbnQgYW5kIGFkZCAtd2Via2l0LXRh
cC1oaWdobGlnaHQtY29sb3IKKyAgaW4gdGhlIGVsZW1lbnQsIHRoZW4gc2VlIHdoZXRoZXIgd2Ug
Y2FuIGdldCB0aGUgc3BlY2lmaWVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSBET00uCisgIFdl
YktpdCBwb3J0cyBjYW4gdXNlIHRoaXMgY3NzIHByb3BlcnR5IHRvIGdldCB0aGUgY3VzdG9taXpl
ZCB0YXAgaGlnaGxpZ2h0IGNvbG9yIGZyb20gdGhlIHdlYnBhZ2UKKyAgd2hpY2ggaXMgc2V0IGJ5
IHdlYiBkZXZlbG9wZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IHRhcCBoaWdobGlnaHQgY29sb3IgZml0
cyB0aGVpciB3ZWJzaXRlcyBpbnN0ZWFkCisgIG9mIHVzaW5nIHRoZSBoYXJkY29kZSB2YWx1ZSBw
cm92aWRlZCBieSBicm93c2Vycy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90YXAt
aGlnaGxpZ2h0LWNvbG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3NjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGln
aHQtY29sb3IuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKK3ZhciBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3VjaHRhcmdldCI7CitkaXYu
c3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYu
c3R5bGUuY29sb3IgPSAiYmx1ZSI7CitkaXYuaW5uZXJUZXh0ID0gIlRvdWNoIE1lISI7CitkaXYu
c3R5bGUud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IgPSAicmdiYSgxMSwgMjIsIDMzLCAwKSI7CisK
K2Z1bmN0aW9uIG9uVG91Y2hTdGFydCgpCit7CisgICAgZGVidWcoIlN0YWdlOiB0b3VjaCBzdGFy
dCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50
YXJnZXQudGFnTmFtZSIsICJESVYiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2ZW50
LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LmlkIiwgInRvdWNodGFyZ2V0Iik7CisgICAgc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRl
ZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0
LWNvbG9yJykiLCAicmdiYSgxMSwgMjIsIDMzLCAwKSIpOworICAgIGRpdi5zdHlsZS53ZWJraXRU
YXBIaWdobGlnaHRDb2xvciA9ICIiOyAgLy8gQ2xlYXIgdGhlIGN1c3RvbWl6ZWQgdGFwIGhpZ2hs
aWdodCBjb2xvcgorfQorCitmdW5jdGlvbiBvblRvdWNoRW5kKCkKK3sKKyAgICBkZWJ1ZygiU3Rh
Z2U6IHRvdWNoIGVuZCIpOworICAgIC8vIENoZWNrIHRoZSBkZWZhdWx0IHZhbHVlLgorICAgIHNo
b3VsZEJlRmFsc2UoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29s
b3InKSA9PSAncmdiYSgxMSwgMjIsIDMzLCAwKSciKQorICAgIHNob3VsZEJlTm9uTnVsbCgiZGl2
Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdl
dFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpIik7CisgICAgLy8g
Tm90aWZ5IHRoZSB0ZXN0IGRvbmUuCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAg
ICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBvblRvdWNo
U3RhcnQsIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIG9uVG91Y2hF
bmQsIGZhbHNlKTsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9k
eS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gdG91Y2hUYXJnZXRzKCkKK3sKKyAgICBldmVudFNl
bmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRkVG91Y2hQb2ludCgy
MCwgMjApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKyAgICBldmVudFNlbmRlci51
cGRhdGVUb3VjaFBvaW50KDAsIDUwLCA1MCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hNb3ZlKCk7
CisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hFbmQoKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2lmICh3aW5kb3cuZXZlbnRT
ZW5kZXIgJiYgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cykgeworICAgIGRlc2NyaXB0aW9u
KCJDaGVjayB0YXAgaGlnaGxpZ2h0IGNvbG9yIGluIHRvdWNoIGV2ZW50Iik7CisKKyAgICB0b3Vj
aFRhcmdldHMoKTsKK30gZWxzZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1w
UmVuZGVyVHJlZSAmJiBXZWJLaXQgYnVpbHQgd2l0aCBFTkFCTEUoVE9VQ0hfRVZFTlQpLiIpCit9
CisKKw==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109020</attachid>
            <date>2011-09-28 08:06:38 -0700</date>
            <delta_ts>2011-09-28 19:43:52 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>tap-highlight.diff5</filename>
            <type>text/plain</type>
            <size>18026</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMjYgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBjb2RlIGZy
b20gdGhlIGlPUyBXZWJDb3JlIGNvZGUgZHVtcCwgZXh0cmFjdGVkIGFuZCBtb2RpZmllZCBieSB0
aWppYW5nQHJpbSBhbmQgam5kQGNocm9taXVtLgorICAgICAgICBTdXBwb3J0cyB0aGUgbmV3IENT
UyBwcm9wZXJ0eSAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3Igb24gcGxhdGZvcm1zIHdoaWNo
IHN1cHBvcnQgdG91Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBv
d24gcGxhdGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9y
LiBPdGhlcndpc2UgUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJl
CisgICAgICAgIHVzZWQgYXMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLgorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6dGFwSGlnaGxp
Z2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFRhcEhpZ2hs
aWdodENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmg6CisKIDIwMTEtMDktMjYgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBDQ1RocmVhZFByb3h5IGRyYXcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDkgQEAgc3Rh
dGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwK
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKKyNlbmRpZgogICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0Nv
bG9yLApAQCAtMTc5Nyw2ICsxODAwLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1YWwgOiBD
U1NWYWx1ZUxvZ2ljYWwpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgICAgIHJldHVybiBj
dXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT50YXBIaWdobGlnaHRD
b2xvcigpKTsKKyNlbmRpZiAgICAgICAgICAgIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3Jl
YXRlVmFsdWUoc3R5bGUtPnVzZXJEcmFnKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA5
NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTM0LDYgKzE5MzQsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYgogI2VuZGlmCiAgICAgLy8gRW5kIEFwcGxlLXNwZWNpZmljIHByb3BlcnRpZXMKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhp
Z2hsaWdodENvbG9yOgorICAgICAgICBpZiAoaWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlkIDw9IENT
U1ZhbHVlV2luZG93dGV4dCB8fCBpZCA9PSBDU1NWYWx1ZU1lbnUKKyAgICAgICAgICAgIHx8IChp
ZCA+PSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9yICYmIGlkIDwgQ1NTVmFsdWVXZWJraXRU
ZXh0ICYmICFtX3N0cmljdCkpIHsKKyAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IHBhcnNlQ29sb3Io
KTsKKyAgICAgICAgICAgIGlmIChwYXJzZWRWYWx1ZSkKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
TGlzdC0+bmV4dCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmCiAgICAgICAg
IC8qIHNob3J0aGFuZCBwcm9wZXJ0aWVzICovCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJhY2tncm91
bmQ6IHsKICAgICAgICAgLy8gUG9zaXRpb24gbXVzdCBjb21lIGJlZm9yZSBjb2xvciBpbiB0aGlz
IGFycmF5IGJlY2F1c2UgYSBwbGFpbiBvbGQgIjAiIGlzIGEgbGVnYWwgY29sb3IKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiA5NjA2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0z
NTUsNCArMzU1LDcgQEAgei1pbmRleAogLXdlYmtpdC1yZWdpb24tYnJlYWstYWZ0ZXIKIC13ZWJr
aXQtcmVnaW9uLWJyZWFrLWJlZm9yZQogLXdlYmtpdC1yZWdpb24tYnJlYWstaW5zaWRlCisjaWYg
ZGVmaW5lZChFTkFCTEVfVE9VQ0hfRVZFTlRTKSAmJiBFTkFCTEVfVE9VQ0hfRVZFTlRTCistd2Vi
a2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU4Miw2ICszNTgy
LDE3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAg
SEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShwb2ludGVyRXZlbnRzLCBQ
b2ludGVyRXZlbnRzKQogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdodENvbG9yOiB7Cisg
ICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKHRhcEhpZ2hsaWdodENvbG9yLCBUYXBI
aWdobGlnaHRDb2xvcik7CisgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBDb2xvciBjb2wgPSBnZXRDb2xvckZyb21QcmltaXRpdmVWYWx1
ZShwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIG1fc3R5bGUtPnNldFRhcEhpZ2hsaWdodENvbG9y
KGNvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Q29sb3JDb3JyZWN0aW9uOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5J
VElBTF9BTkRfUFJJTUlUSVZFKGNvbG9yU3BhY2UsIENvbG9yU3BhY2UpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHJldmlz
aW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTA4NCw2ICsxMDg0LDEzIEBAIENvbG9yIFJlbmRlclRoZW1lOjpw
bGF0Zm9ybUluYWN0aXZlVGV4dFMKICAgICByZXR1cm4gQ29sb3IoMjU1LCAyNTUsIDApOyAvLyBZ
ZWxsb3cuCiB9CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWU6
OnRhcEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICByZXR1cm4gZGVmYXVsdFRoZW1lKCktPnBsYXRm
b3JtVGFwSGlnaGxpZ2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlclRoZW1lOjpz
ZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYgYykKIHsKICAgICBjdXN0b21Gb2N1
c1JpbmdDb2xvcigpID0gYzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5oCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
aGVtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDEwIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgQ29sb3IgZm9jdXNSaW5nQ29sb3IoKTsKICAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3Jt
Rm9jdXNSaW5nQ29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcigwLCAwLCAwKTsgfQogICAgIHN0
YXRpYyB2b2lkIHNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJik7Ci0KKyNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigp
OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7IH0KKyNlbmRpZgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybUNvbG9yc0RpZENoYW5nZSgpOwogCiAgICAgdmlydHVh
bCBkb3VibGUgY2FyZXRCbGlua0ludGVydmFsKCkgY29uc3QgeyByZXR1cm4gMC41OyB9CkBAIC0z
MzAsNiArMzMzLDEwIEBAIHByaXZhdGU6CiAgICAgbXV0YWJsZSBDb2xvciBtX2FjdGl2ZUxpc3RC
b3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAgICAgbXV0YWJsZSBDb2xvciBtX2luYWN0aXZl
TGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKIAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgc3RhdGljIGNvbnN0IFJHQkEzMiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAw
eDMzMDAwMDAwOworI2VuZGlmCisKICNpZiBVU0UoTkVXX1RIRU1FKQogICAgIFRoZW1lKiBtX3Ro
ZW1lOyAvLyBUaGUgcGxhdGZvcm0tc3BlY2lmaWMgdGhlbWUuCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2aXNpb24g
OTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw5IEBACiAjaW5jbHVkZSAiU2NhbGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bWFnZS5oIgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisjaW5jbHVkZSAiUmVuZGVyVGhlbWUu
aCIKKyNlbmRpZgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDxhbGdv
cml0aG0+CiAKQEAgLTE1MDgsNiArMTUxMSwxMyBAQCBUZXh0RW1waGFzaXNNYXJrIFJlbmRlclN0
eWxlOjp0ZXh0RW1waGFzCiAgICAgcmV0dXJuIFRleHRFbXBoYXNpc01hcmtTZXNhbWU7CiB9CiAK
KyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyU3R5bGU6OmluaXRpYWxUYXBI
aWdobGlnaHRDb2xvcigpCit7CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRD
b2xvcigpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyU3R5bGU6OmdldEltYWdlT3V0c2V0cyhj
b25zdCBOaW5lUGllY2VJbWFnZSYgaW1hZ2UsIExheW91dFVuaXQmIHRvcCwgTGF5b3V0VW5pdCYg
cmlnaHQsIExheW91dFVuaXQmIGJvdHRvbSwgTGF5b3V0VW5pdCYgbGVmdCkgY29uc3QKIHsKICAg
ICB0b3AgPSBOaW5lUGllY2VJbWFnZTo6Y29tcHV0ZU91dHNldChpbWFnZS5vdXRzZXQoKS50b3Ao
KSwgYm9yZGVyVG9wV2lkdGgoKSk7CkBAIC0xNTI3LDUgKzE1MzcsNSBAQCB2b2lkIFJlbmRlclN0
eWxlOjpnZXRJbWFnZVZlcnRpY2FsT3V0c2V0CiAgICAgdG9wID0gTmluZVBpZWNlSW1hZ2U6OmNv
bXB1dGVPdXRzZXQoaW1hZ2Uub3V0c2V0KCkudG9wKCksIGJvcmRlclRvcFdpZHRoKCkpOwogICAg
IGJvdHRvbSA9IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlT3V0c2V0KGltYWdlLm91dHNldCgpLmJv
dHRvbSgpLCBib3JkZXJCb3R0b21XaWR0aCgpKTsKIH0KLSAgICAKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgzMCw2ICs4MzAsOSBAQCBwdWJsaWM6
CiAKICAgICBMaW5lQm94Q29udGFpbiBsaW5lQm94Q29udGFpbigpIGNvbnN0IHsgcmV0dXJuIHJh
cmVJbmhlcml0ZWREYXRhLT5tX2xpbmVCb3hDb250YWluOyB9CiAgICAgY29uc3QgTGluZUNsYW1w
VmFsdWUmIGxpbmVDbGFtcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5s
aW5lQ2xhbXA7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENvbG9yIHRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERhdGEtPnRhcEhpZ2hsaWdo
dENvbG9yOyB9CisjZW5kaWYKICAgICBib29sIHRleHRTaXplQWRqdXN0KCkgY29uc3QgeyByZXR1
cm4gcmFyZUluaGVyaXRlZERhdGEtPnRleHRTaXplQWRqdXN0OyB9CiAgICAgRVRleHRTZWN1cml0
eSB0ZXh0U2VjdXJpdHkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGV4dFNlY3VyaXR5
PihyYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNlY3VyaXR5KTsgfQogCkBAIC0xMjAxLDYgKzEyMDQs
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldExpbmVCb3hDb250YWluKExpbmVCb3hDb250YWlu
IGMpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgbV9saW5lQm94Q29udGFpbiwgYyk7IH0K
ICAgICB2b2lkIHNldExpbmVDbGFtcChMaW5lQ2xhbXBWYWx1ZSBjKSB7IFNFVF9WQVIocmFyZU5v
bkluaGVyaXRlZERhdGEsIGxpbmVDbGFtcCwgYyk7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZvaWQgc2V0VGFwSGlnaGxpZ2h0Q29sb3IoY29uc3QgQ29sb3ImIGMpIHsgU0VUX1ZB
UihyYXJlSW5oZXJpdGVkRGF0YSwgdGFwSGlnaGxpZ2h0Q29sb3IsIGMpOyB9CisjZW5kaWYKICAg
ICBib29sIHNldFRleHRTaXplQWRqdXN0KGJvb2wpOwogICAgIHZvaWQgc2V0VGV4dFNlY3VyaXR5
KEVUZXh0U2VjdXJpdHkgYVRleHRTZWN1cml0eSkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRh
LCB0ZXh0U2VjdXJpdHksIGFUZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTE0NTAsNiArMTQ1Niw5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsg
cmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpbml0aWFsVGV4dFNp
emVBZGp1c3QoKSB7IHJldHVybiB0cnVlOyB9CiAgICAgc3RhdGljIEVUZXh0U2VjdXJpdHkgaW5p
dGlhbFRleHRTZWN1cml0eSgpIHsgcmV0dXJuIFRTTk9ORTsgfQorI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCisgICAgc3RhdGljIENvbG9yIGluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpOworI2Vu
ZGlmCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBpbml0aWFsRGFzaGJvYXJkUmVnaW9ucygpOwogICAg
IHN0YXRpYyBjb25zdCBWZWN0b3I8U3R5bGVEYXNoYm9hcmRSZWdpb24+JiBub25lRGFzaGJvYXJk
UmVnaW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAkocmV2aXNpb24gOTYwNjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6
U3R5bGVSYXJlSW5oZXJpdAogICAgICwgaHlwaGVuYXRpb25MaW1pdEJlZm9yZSgtMSkKICAgICAs
IGh5cGhlbmF0aW9uTGltaXRBZnRlcigtMSkKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5lcygt
MSkKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3IoUmVu
ZGVyU3R5bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcigpKQorI2VuZGlmICAgIAogewogfQog
CkBAIC05NSw2ICs5OCw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVy
aXQKICAgICAsIGh5cGhlbmF0aW9uTGltaXRMaW5lcyhvLmh5cGhlbmF0aW9uTGltaXRMaW5lcykK
ICAgICAsIGxvY2FsZShvLmxvY2FsZSkKICAgICAsIHRleHRFbXBoYXNpc0N1c3RvbU1hcmsoby50
ZXh0RW1waGFzaXNDdXN0b21NYXJrKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCB0
YXBIaWdobGlnaHRDb2xvcihvLnRhcEhpZ2hsaWdodENvbG9yKQorI2VuZGlmCiB7CiB9CiAKQEAg
LTExNyw2ICsxMjMsOSBAQCBib29sIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0o
CiAgICAgICAgICYmIHRleHRTdHJva2VXaWR0aCA9PSBvLnRleHRTdHJva2VXaWR0aAogICAgICAg
ICAmJiB0ZXh0RmlsbENvbG9yID09IG8udGV4dEZpbGxDb2xvcgogICAgICAgICAmJiB0ZXh0RW1w
aGFzaXNDb2xvciA9PSBvLnRleHRFbXBoYXNpc0NvbG9yCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAgICAgJiYgdGFwSGlnaGxpZ2h0Q29sb3IgPT0gby50YXBIaWdobGlnaHRDb2xvcgor
I2VuZGlmCiAgICAgICAgICYmIHNoYWRvd0RhdGFFcXVpdmFsZW50KG8pCiAgICAgICAgICYmIGhp
Z2hsaWdodCA9PSBvLmhpZ2hsaWdodAogICAgICAgICAmJiBjdXJzb3JEYXRhRXF1aXZhbGVudChj
dXJzb3JEYXRhLmdldCgpLCBvLmN1cnNvckRhdGEuZ2V0KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJ
KHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
UmFyZUluaGVyaXRlZERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsOCBAQAogCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQga2h0
bWxMaW5lQnJlYWsgOiAxOyAvLyBFS0hUTUxMaW5lQnJlYWsKICAgICBib29sIHRleHRTaXplQWRq
dXN0IDogMTsgLy8gQW4gQXBwbGUgZXh0ZW5zaW9uLgogICAgIHVuc2lnbmVkIHJlc2l6ZSA6IDI7
IC8vIEVSZXNpemUKLSAgICB1bnNpZ25lZCB1c2VyU2VsZWN0IDogMTsgIC8vIEVVc2VyU2VsZWN0
CisgICAgdW5zaWduZWQgdXNlclNlbGVjdCA6IDE7IC8vIEVVc2VyU2VsZWN0CiAgICAgdW5zaWdu
ZWQgY29sb3JTcGFjZSA6IDE7IC8vIENvbG9yU3BhY2UKICAgICB1bnNpZ25lZCBzcGVhayA6IDM7
IC8vIEVTcGVhawogICAgIHVuc2lnbmVkIGh5cGhlbnMgOiAyOyAvLyBIeXBoZW5zCkBAIC05OCw2
ICs5OCw5IEBAIHB1YmxpYzoKIAogICAgIEF0b21pY1N0cmluZyB0ZXh0RW1waGFzaXNDdXN0b21N
YXJrOwogICAgIFJlZlB0cjxRdW90ZXNEYXRhPiBxdW90ZXM7CisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcjsKKyNlbmRpZgogCiBwcml2YXRlOgog
ICAgIFN0eWxlUmFyZUluaGVyaXRlZERhdGEoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MDY4KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMDktMjYgIEpvaG5ueSBEaW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBT
dXBwb3J0IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciBpbiBXZWJDb3JlIHdoZW4gZW5hYmxp
bmcgdG91Y2ggZXZlbnRzIHN1cHBvcnQuIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBnZXQgY3VzdG9taXplZCB0YXAg
aGlnaGxpZ2h0IGNvbG9yIHNldCBieSBwYWdlIGF1dGhvci4KKworICAgICAgICAqIGZhc3QvZXZl
bnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzOiBBZGRlZC4KKyAg
ICAgICAgKG9uVG91Y2hTdGFydCk6CisgICAgICAgICh0b3VjaFRhcmdldHMpOgorICAgICAgICAq
IGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3ItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLmh0bWw6
IEFkZGVkLgorCiAyMDExLTA5LTI2ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFB1dCBiYWNrIGFsbCBDaHJvbWl1bSBwbGF0Zm9ybSBmYWlsaW5nIGV4
cGVjdGF0aW9ucyBmb3Igc29tZSB0ZXN0cyAodGhleQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90
YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NyBAQAorVG91Y2ggTWUhCitDaGVjayB0YXAgaGlnaGxpZ2h0IGNvbG9yIGluIHRvdWNoIGV2ZW50
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitFdmVudDogdG91Y2ggc3RhcnQKK1BB
U1MgZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSBpcyAiRElWIgorUEFTUyBl
dmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC5pZCBpcyAidG91Y2h0YXJnZXQiCitQQVNTIGRp
di5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5n
ZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3InKSBpcyAicmdiYSgx
MSwgMjIsIDMzLCAwKSIKK0V2ZW50OiB0b3VjaCBlbmQKK1BBU1MgZGl2Lm93bmVyRG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUo
Jy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMsIDApJyBp
cyBmYWxzZQorUEFTUyBkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNv
bG9yJykgaXMgbm9uLW51bGwuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhp
Z2hsaWdodC1jb2xvci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPCEt
LQorICBUbyB0ZXN0IHRoZSBuZXcgQ1NTIHByb3BlcnR5IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1j
b2xvciB3aGljaCBpcyBvbmx5IHN1cHBvcnRlZCB3aGVuIGJ1aWxkaW5nCisgIFdlYktpdCB3aXRo
IEVOQUJMRShUT1VDSF9FVkVOVFMpLCB3ZSBjcmVhdGUgYSBuZXcgZGl2IGVsZW1lbnQgYW5kIGFk
ZCAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3IKKyAgaW4gdGhlIGVsZW1lbnQsIHRoZW4gc2Vl
IHdoZXRoZXIgd2UgY2FuIGdldCB0aGUgc3BlY2lmaWVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJv
bSBET00uCisgIFdlYktpdCBwb3J0cyBjYW4gdXNlIHRoaXMgY3NzIHByb3BlcnR5IHRvIGdldCB0
aGUgY3VzdG9taXplZCB0YXAgaGlnaGxpZ2h0IGNvbG9yIGZyb20gdGhlIHdlYnBhZ2UKKyAgd2hp
Y2ggaXMgc2V0IGJ5IHdlYiBkZXZlbG9wZXJzIHRvIG1ha2Ugc3VyZSB0aGF0IHRhcCBoaWdobGln
aHQgY29sb3IgZml0cyB0aGVpciB3ZWJzaXRlcyBpbnN0ZWFkCisgIG9mIHVzaW5nIHRoZSBoYXJk
Y29kZSB2YWx1ZSBwcm92aWRlZCBieSBicm93c2Vycy4KKy0tPgorPC9oZWFkPgorPGJvZHk+Cis8
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3Njcmlw
dC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3RvdWNoL3NjcmlwdC10ZXN0cy90YXAtaGlnaGxpZ2h0LWNvbG9yLmpzCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3Rz
L3RhcC1oaWdobGlnaHQtY29sb3IuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKK3Zh
ciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5pZCA9ICJ0b3VjaHRh
cmdldCI7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIx
MDBweCI7CitkaXYuc3R5bGUuY29sb3IgPSAiYmx1ZSI7CitkaXYuaW5uZXJUZXh0ID0gIlRvdWNo
IE1lISI7CitkaXYuc3R5bGUud2Via2l0VGFwSGlnaGxpZ2h0Q29sb3IgPSAicmdiYSgxMSwgMjIs
IDMzLCAwKSI7CisKK2Z1bmN0aW9uIG9uVG91Y2hTdGFydCgpCit7CisgICAgZGVidWcoIkV2ZW50
OiB0b3VjaCBzdGFydCIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnQudGFyZ2V0
VG91Y2hlc1swXS50YXJnZXQudGFnTmFtZSIsICJESVYiKTsKKyAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoImV2ZW50LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LmlkIiwgInRvdWNodGFyZ2V0Iik7
CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10
YXAtaGlnaGxpZ2h0LWNvbG9yJykiLCAicmdiYSgxMSwgMjIsIDMzLCAwKSIpOworICAgIGRpdi5z
dHlsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvciA9ICIiOyAgLy8gQ2xlYXIgdGhlIGN1c3RvbWl6
ZWQgdGFwIGhpZ2hsaWdodCBjb2xvcgorfQorCitmdW5jdGlvbiBvblRvdWNoRW5kKCkKK3sKKyAg
ICBkZWJ1ZygiRXZlbnQ6IHRvdWNoIGVuZCIpOworICAgIC8vIENoZWNrIHRoZSBkZWZhdWx0IHZh
bHVlLgorICAgIHNob3VsZEJlRmFsc2UoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1o
aWdobGlnaHQtY29sb3InKSA9PSAncmdiYSgxMSwgMjIsIDMzLCAwKSciKQorICAgIHNob3VsZEJl
Tm9uTnVsbCgiZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShk
aXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicp
Iik7CisgICAgLy8gTm90aWZ5IHRoZSB0ZXN0IGRvbmUuCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3Rh
cnQiLCBvblRvdWNoU3RhcnQsIGZhbHNlKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVu
ZCIsIG9uVG91Y2hFbmQsIGZhbHNlKTsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwg
ZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gdG91Y2hUYXJnZXRzKCkKK3sK
KyAgICBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKCk7CisgICAgZXZlbnRTZW5kZXIuYWRk
VG91Y2hQb2ludCgyMCwgMjApOworICAgIGV2ZW50U2VuZGVyLnRvdWNoU3RhcnQoKTsKKyAgICBl
dmVudFNlbmRlci51cGRhdGVUb3VjaFBvaW50KDAsIDUwLCA1MCk7CisgICAgZXZlbnRTZW5kZXIu
dG91Y2hNb3ZlKCk7CisgICAgZXZlbnRTZW5kZXIucmVsZWFzZVRvdWNoUG9pbnQoMCk7CisgICAg
ZXZlbnRTZW5kZXIudG91Y2hFbmQoKTsKK30KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisKK2lmICh3
aW5kb3cuZXZlbnRTZW5kZXIgJiYgZXZlbnRTZW5kZXIuY2xlYXJUb3VjaFBvaW50cykgeworICAg
IGRlc2NyaXB0aW9uKCJDaGVjayB0YXAgaGlnaGxpZ2h0IGNvbG9yIGluIHRvdWNoIGV2ZW50Iik7
CisKKyAgICB0b3VjaFRhcmdldHMoKTsKK30gZWxzZSB7CisgICAgZGVidWcoIlRoaXMgdGVzdCBy
ZXF1aXJlcyBEdW1wUmVuZGVyVHJlZSAmJiBXZWJLaXQgYnVpbHQgd2l0aCBFTkFCTEUoVE9VQ0hf
RVZFTlQpLiIpCit9Cgo=
</data>
<flag name="commit-queue"
          id="106141"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109113</attachid>
            <date>2011-09-28 19:43:52 -0700</date>
            <delta_ts>2011-09-30 13:21:50 -0700</delta_ts>
            <desc>patch v3 to make ews happy</desc>
            <filename>tap-highlight.diff6</filename>
            <type>text/plain</type>
            <size>18027</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTEtMDktMjYgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBjb2RlIGZy
b20gdGhlIGlPUyBXZWJDb3JlIGNvZGUgZHVtcCwgZXh0cmFjdGVkIGFuZCBtb2RpZmllZCBieSB0
aWppYW5nQHJpbSBhbmQgam5kQGNocm9taXVtLgorICAgICAgICBTdXBwb3J0cyB0aGUgbmV3IENT
UyBwcm9wZXJ0eSAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3Igb24gcGxhdGZvcm1zIHdoaWNo
IHN1cHBvcnQgdG91Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBv
d24gcGxhdGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9y
LiBPdGhlcndpc2UgUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJl
CisgICAgICAgIHVzZWQgYXMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLgorCisgICAgICAg
ICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgorICAg
ICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9yKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6
OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6dGFwSGlnaGxp
Z2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFRhcEhpZ2hs
aWdodENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpTdHls
ZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJ
bmhlcml0ZWREYXRhLmg6CisKIDIwMTEtMDktMjYgIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWFrZSBDQ1RocmVhZFByb3h5IGRyYXcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwCShyZXZpc2lvbiA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsNiArMjQ3LDkgQEAgc3Rh
dGljIGNvbnN0IGludCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IAogICAgIENTU1Byb3BlcnR5V2Vi
a2l0UGVyc3BlY3RpdmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpbiwK
ICAgICBDU1NQcm9wZXJ0eVdlYmtpdFJ0bE9yZGVyaW5nLAorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgQ1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvciwKKyNlbmRpZgogICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dENvbWJpbmUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRFbXBoYXNpc0Nv
bG9yLApAQCAtMTc5Nyw2ICsxODAwLDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1
dGVkU3R5bGVEZWMKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UnRs
T3JkZXJpbmc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRl
SWRlbnRpZmllclZhbHVlKHN0eWxlLT5ydGxPcmRlcmluZygpID8gQ1NTVmFsdWVWaXN1YWwgOiBD
U1NWYWx1ZUxvZ2ljYWwpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjoKKyAgICAgICAgICAgIHJldHVybiBj
dXJyZW50Q29sb3JPclZhbGlkQ29sb3Ioc3R5bGUuZ2V0KCksIHN0eWxlLT50YXBIaWdobGlnaHRD
b2xvcigpKTsKKyNlbmRpZiAgICAgICAgICAgIAogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlckRyYWc6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3Jl
YXRlVmFsdWUoc3R5bGUtPnVzZXJEcmFnKCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0VXNlclNlbGVjdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA5
NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTM0LDYgKzE5MzQsMTggQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHBy
b3BJZCwgYgogI2VuZGlmCiAgICAgLy8gRW5kIEFwcGxlLXNwZWNpZmljIHByb3BlcnRpZXMKIAor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhp
Z2hsaWdodENvbG9yOgorICAgICAgICBpZiAoKGlkID49IENTU1ZhbHVlQXF1YSAmJiBpZCA8PSBD
U1NWYWx1ZVdpbmRvd3RleHQpIHx8IGlkID09IENTU1ZhbHVlTWVudQorICAgICAgICAgICAgfHwg
KGlkID49IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29sb3IgJiYgaWQgPCBDU1NWYWx1ZVdlYmtp
dFRleHQgJiYgIW1fc3RyaWN0KSkgeworICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1
ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcnNlZFZhbHVlID0gcGFyc2VDb2xv
cigpOworICAgICAgICAgICAgaWYgKHBhcnNlZFZhbHVlKQorICAgICAgICAgICAgICAgIG1fdmFs
dWVMaXN0LT5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICAg
ICAgLyogc2hvcnRoYW5kIHByb3BlcnRpZXMgKi8KICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dy
b3VuZDogewogICAgICAgICAvLyBQb3NpdGlvbiBtdXN0IGNvbWUgYmVmb3JlIGNvbG9yIGluIHRo
aXMgYXJyYXkgYmVjYXVzZSBhIHBsYWluIG9sZCAiMCIgaXMgYSBsZWdhbCBjb2xvcgpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDk2MDY4KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTM1NSw0ICszNTUsNyBAQCB6LWluZGV4CiAtd2Via2l0LXJlZ2lvbi1icmVhay1hZnRlcgogLXdl
YmtpdC1yZWdpb24tYnJlYWstYmVmb3JlCiAtd2Via2l0LXJlZ2lvbi1icmVhay1pbnNpZGUKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9UT1VDSF9FVkVOVFMpICYmIEVOQUJMRV9UT1VDSF9FVkVOVFMKKy13
ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgyLDYgKzM1
ODIsMTcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAg
ICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHBvaW50ZXJFdmVudHMs
IFBvaW50ZXJFdmVudHMpCiAgICAgICAgIHJldHVybjsKICAgICB9CisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6IHsK
KyAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodGFwSGlnaGxpZ2h0Q29sb3IsIFRh
cEhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIENvbG9yIGNvbCA9IGdldENvbG9yRnJvbVByaW1pdGl2ZVZh
bHVlKHByaW1pdGl2ZVZhbHVlKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0VGFwSGlnaGxpZ2h0Q29s
b3IoY29sKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMX0FORF9QUklNSVRJVkUoY29sb3JTcGFjZSwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAkocmV2
aXNpb24gOTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDg0LDYgKzEwODQsMTMgQEAgQ29sb3IgUmVuZGVyVGhlbWU6
OnBsYXRmb3JtSW5hY3RpdmVUZXh0UwogICAgIHJldHVybiBDb2xvcigyNTUsIDI1NSwgMCk7IC8v
IFllbGxvdy4KIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitDb2xvciBSZW5kZXJUaGVt
ZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQoreworICAgIHJldHVybiBkZWZhdWx0VGhlbWUoKS0+cGxh
dGZvcm1UYXBIaWdobGlnaHRDb2xvcigpOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyVGhlbWU6
OnNldEN1c3RvbUZvY3VzUmluZ0NvbG9yKGNvbnN0IENvbG9yJiBjKQogewogICAgIGN1c3RvbUZv
Y3VzUmluZ0NvbG9yKCkgPSBjOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmgJKHJldmlzaW9uIDk2MDY4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSw3ICsxNDksMTAgQEAgcHVibGljOgogICAg
IHN0YXRpYyBDb2xvciBmb2N1c1JpbmdDb2xvcigpOwogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKDAsIDAsIDApOyB9CiAgICAg
c3RhdGljIHZvaWQgc2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKLQorI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgc3RhdGljIENvbG9yIHRhcEhpZ2hsaWdodENvbG9y
KCk7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3Qg
eyByZXR1cm4gUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvcjsgfQorI2VuZGlm
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiAKICAgICB2aXJ0
dWFsIGRvdWJsZSBjYXJldEJsaW5rSW50ZXJ2YWwoKSBjb25zdCB7IHJldHVybiAwLjU7IH0KQEAg
LTMzMCw2ICszMzMsMTAgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlTGlz
dEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKICAgICBtdXRhYmxlIENvbG9yIG1faW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogCisjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKKyAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciA9
IDB4MzMwMDAwMDA7CisjZW5kaWYKKwogI2lmIFVTRShORVdfVEhFTUUpCiAgICAgVGhlbWUqIG1f
dGhlbWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB0aGVtZS4KICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lv
biA5NjA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDkgQEAKICNpbmNsdWRlICJTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIlNoYWRvd0RhdGEuaCIKICNpbmNsdWRlICJTdHls
ZUltYWdlLmgiCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyNpbmNsdWRlICJSZW5kZXJUaGVt
ZS5oIgorI2VuZGlmCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KIApAQCAtMTUwOCw2ICsxNTExLDEzIEBAIFRleHRFbXBoYXNpc01hcmsgUmVuZGVy
U3R5bGU6OnRleHRFbXBoYXMKICAgICByZXR1cm4gVGV4dEVtcGhhc2lzTWFya1Nlc2FtZTsKIH0K
IAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitDb2xvciBSZW5kZXJTdHlsZTo6aW5pdGlhbFRh
cEhpZ2hsaWdodENvbG9yKCkKK3sKKyAgICByZXR1cm4gUmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdo
dENvbG9yKCk7Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJTdHlsZTo6Z2V0SW1hZ2VPdXRzZXRz
KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBpbWFnZSwgTGF5b3V0VW5pdCYgdG9wLCBMYXlvdXRVbml0
JiByaWdodCwgTGF5b3V0VW5pdCYgYm90dG9tLCBMYXlvdXRVbml0JiBsZWZ0KSBjb25zdAogewog
ICAgIHRvcCA9IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlT3V0c2V0KGltYWdlLm91dHNldCgpLnRv
cCgpLCBib3JkZXJUb3BXaWR0aCgpKTsKQEAgLTE1MjcsNSArMTUzNyw1IEBAIHZvaWQgUmVuZGVy
U3R5bGU6OmdldEltYWdlVmVydGljYWxPdXRzZXQKICAgICB0b3AgPSBOaW5lUGllY2VJbWFnZTo6
Y29tcHV0ZU91dHNldChpbWFnZS5vdXRzZXQoKS50b3AoKSwgYm9yZGVyVG9wV2lkdGgoKSk7CiAg
ICAgYm90dG9tID0gTmluZVBpZWNlSW1hZ2U6OmNvbXB1dGVPdXRzZXQoaW1hZ2Uub3V0c2V0KCku
Ym90dG9tKCksIGJvcmRlckJvdHRvbVdpZHRoKCkpOwogfQotICAgIAorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaAkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtODMwLDYgKzgzMCw5IEBAIHB1Ymxp
YzoKIAogICAgIExpbmVCb3hDb250YWluIGxpbmVCb3hDb250YWluKCkgY29uc3QgeyByZXR1cm4g
cmFyZUluaGVyaXRlZERhdGEtPm1fbGluZUJveENvbnRhaW47IH0KICAgICBjb25zdCBMaW5lQ2xh
bXBWYWx1ZSYgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
PmxpbmVDbGFtcDsgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgQ29sb3IgdGFwSGln
aGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGFwSGlnaGxp
Z2h0Q29sb3I7IH0KKyNlbmRpZgogICAgIGJvb2wgdGV4dFNpemVBZGp1c3QoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KICAgICBFVGV4dFNlY3Vy
aXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0U2VjdXJp
dHk+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CiAKQEAgLTEyMDEsNiArMTIw
NCw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0TGluZUJveENvbnRhaW4oTGluZUJveENvbnRh
aW4gYykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCBtX2xpbmVCb3hDb250YWluLCBjKTsg
fQogICAgIHZvaWQgc2V0TGluZUNsYW1wKExpbmVDbGFtcFZhbHVlIGMpIHsgU0VUX1ZBUihyYXJl
Tm9uSW5oZXJpdGVkRGF0YSwgbGluZUNsYW1wLCBjKTsgfQorI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdm9pZCBzZXRUYXBIaWdobGlnaHRDb2xvcihjb25zdCBDb2xvciYgYykgeyBTRVRf
VkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0YXBIaWdobGlnaHRDb2xvciwgYyk7IH0KKyNlbmRpZgog
ICAgIGJvb2wgc2V0VGV4dFNpemVBZGp1c3QoYm9vbCk7CiAgICAgdm9pZCBzZXRUZXh0U2VjdXJp
dHkoRVRleHRTZWN1cml0eSBhVGV4dFNlY3VyaXR5KSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERh
dGEsIHRleHRTZWN1cml0eSwgYVRleHRTZWN1cml0eSk7IH0KIApAQCAtMTQ1MCw2ICsxNDU2LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1wKCkg
eyByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsgfQogICAgIHN0YXRpYyBib29sIGluaXRpYWxUZXh0
U2l6ZUFkanVzdCgpIHsgcmV0dXJuIHRydWU7IH0KICAgICBzdGF0aWMgRVRleHRTZWN1cml0eSBp
bml0aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNOT05FOyB9CisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKKyAgICBzdGF0aWMgQ29sb3IgaW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCk7Cisj
ZW5kaWYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgc3RhdGljIGNvbnN0IFZl
Y3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIGluaXRpYWxEYXNoYm9hcmRSZWdpb25zKCk7CiAg
ICAgc3RhdGljIGNvbnN0IFZlY3RvcjxTdHlsZURhc2hib2FyZFJlZ2lvbj4mIG5vbmVEYXNoYm9h
cmRSZWdpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCShyZXZpc2lvbiA5NjA2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOSBAQCBTdHlsZVJhcmVJbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QmVmb3JlKC0xKQogICAg
ICwgaHlwaGVuYXRpb25MaW1pdEFmdGVyKC0xKQogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVz
KC0xKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCB0YXBIaWdobGlnaHRDb2xvcihS
ZW5kZXJTdHlsZTo6aW5pdGlhbFRhcEhpZ2hsaWdodENvbG9yKCkpCisjZW5kaWYgICAgCiB7CiB9
CiAKQEAgLTk1LDYgKzk4LDkgQEAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5o
ZXJpdAogICAgICwgaHlwaGVuYXRpb25MaW1pdExpbmVzKG8uaHlwaGVuYXRpb25MaW1pdExpbmVz
KQogICAgICwgbG9jYWxlKG8ubG9jYWxlKQogICAgICwgdGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhv
LnRleHRFbXBoYXNpc0N1c3RvbU1hcmspCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAs
IHRhcEhpZ2hsaWdodENvbG9yKG8udGFwSGlnaGxpZ2h0Q29sb3IpCisjZW5kaWYKIHsKIH0KIApA
QCAtMTE3LDYgKzEyMyw5IEBAIGJvb2wgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9
PSgKICAgICAgICAgJiYgdGV4dFN0cm9rZVdpZHRoID09IG8udGV4dFN0cm9rZVdpZHRoCiAgICAg
ICAgICYmIHRleHRGaWxsQ29sb3IgPT0gby50ZXh0RmlsbENvbG9yCiAgICAgICAgICYmIHRleHRF
bXBoYXNpc0NvbG9yID09IG8udGV4dEVtcGhhc2lzQ29sb3IKKyNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQorICAgICAgICAmJiB0YXBIaWdobGlnaHRDb2xvciA9PSBvLnRhcEhpZ2hsaWdodENvbG9y
CisjZW5kaWYKICAgICAgICAgJiYgc2hhZG93RGF0YUVxdWl2YWxlbnQobykKICAgICAgICAgJiYg
aGlnaGxpZ2h0ID09IG8uaGlnaGxpZ2h0CiAgICAgICAgICYmIGN1cnNvckRhdGFFcXVpdmFsZW50
KGN1cnNvckRhdGEuZ2V0KCksIG8uY3Vyc29yRGF0YS5nZXQoKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEu
aAkocmV2aXNpb24gOTYwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAK
ICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBr
aHRtbExpbmVCcmVhayA6IDE7IC8vIEVLSFRNTExpbmVCcmVhawogICAgIGJvb2wgdGV4dFNpemVB
ZGp1c3QgOiAxOyAvLyBBbiBBcHBsZSBleHRlbnNpb24uCiAgICAgdW5zaWduZWQgcmVzaXplIDog
MjsgLy8gRVJlc2l6ZQotICAgIHVuc2lnbmVkIHVzZXJTZWxlY3QgOiAxOyAgLy8gRVVzZXJTZWxl
Y3QKKyAgICB1bnNpZ25lZCB1c2VyU2VsZWN0IDogMTsgLy8gRVVzZXJTZWxlY3QKICAgICB1bnNp
Z25lZCBjb2xvclNwYWNlIDogMTsgLy8gQ29sb3JTcGFjZQogICAgIHVuc2lnbmVkIHNwZWFrIDog
MzsgLy8gRVNwZWFrCiAgICAgdW5zaWduZWQgaHlwaGVucyA6IDI7IC8vIEh5cGhlbnMKQEAgLTk4
LDYgKzk4LDkgQEAgcHVibGljOgogCiAgICAgQXRvbWljU3RyaW5nIHRleHRFbXBoYXNpc0N1c3Rv
bU1hcms7CiAgICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlczsKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOworI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTYwNjgp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxMS0wOS0yNiAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFN1cHBvcnQgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIGluIFdlYkNvcmUgd2hlbiBlbmFi
bGluZyB0b3VjaCBldmVudHMgc3VwcG9ydC4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODU0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0IHRvIGdldCBjdXN0b21pemVkIHRh
cCBoaWdobGlnaHQgY29sb3Igc2V0IGJ5IHBhZ2UgYXV0aG9yLgorCisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanM6IEFkZGVkLgor
ICAgICAgICAob25Ub3VjaFN0YXJ0KToKKyAgICAgICAgKHRvdWNoVGFyZ2V0cyk6CisgICAgICAg
ICogZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRt
bDogQWRkZWQuCisKIDIwMTEtMDktMjYgIE1paGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUHV0IGJhY2sgYWxsIENocm9taXVtIHBsYXRmb3JtIGZhaWxpbmcg
ZXhwZWN0YXRpb25zIGZvciBzb21lIHRlc3RzICh0aGV5CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNo
L3RhcC1oaWdobGlnaHQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACitUb3VjaCBNZSEKK0NoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZl
bnQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0V2ZW50OiB0b3VjaCBzdGFydAor
UEFTUyBldmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJESVYiCitQQVNT
IGV2ZW50LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1Mg
ZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpIGlzICJyZ2Jh
KDExLCAyMiwgMzMsIDApIgorRXZlbnQ6IHRvdWNoIGVuZAorUEFTUyBkaXYub3duZXJEb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykgPT0gJ3JnYmEoMTEsIDIyLCAzMywgMCkn
IGlzIGZhbHNlCitQQVNTIGRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVk
U3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQt
Y29sb3InKSBpcyBub24tbnVsbC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAt
aGlnaGxpZ2h0LWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8
IS0tCisgIFRvIHRlc3QgdGhlIG5ldyBDU1MgcHJvcGVydHkgLXdlYmtpdC10YXAtaGlnaGxpZ2h0
LWNvbG9yIHdoaWNoIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gYnVpbGRpbmcKKyAgV2ViS2l0IHdp
dGggRU5BQkxFKFRPVUNIX0VWRU5UUyksIHdlIGNyZWF0ZSBhIG5ldyBkaXYgZWxlbWVudCBhbmQg
YWRkIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorICBpbiB0aGUgZWxlbWVudCwgdGhlbiBz
ZWUgd2hldGhlciB3ZSBjYW4gZ2V0IHRoZSBzcGVjaWZpZWQgdGFwIGhpZ2hsaWdodCBjb2xvciBm
cm9tIERPTS4KKyAgV2ViS2l0IHBvcnRzIGNhbiB1c2UgdGhpcyBjc3MgcHJvcGVydHkgdG8gZ2V0
IHRoZSBjdXN0b21pemVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSB0aGUgd2VicGFnZQorICB3
aGljaCBpcyBzZXQgYnkgd2ViIGRldmVsb3BlcnMgdG8gbWFrZSBzdXJlIHRoYXQgdGFwIGhpZ2hs
aWdodCBjb2xvciBmaXRzIHRoZWlyIHdlYnNpdGVzIGluc3RlYWQKKyAgb2YgdXNpbmcgdGhlIGhh
cmRjb2RlIHZhbHVlIHByb3ZpZGVkIGJ5IGJyb3dzZXJzLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2Ny
aXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVz
dHMvdGFwLWhpZ2hsaWdodC1jb2xvci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAor
dmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2LmlkID0gInRvdWNo
dGFyZ2V0IjsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0g
IjEwMHB4IjsKK2Rpdi5zdHlsZS5jb2xvciA9ICJibHVlIjsKK2Rpdi5pbm5lclRleHQgPSAiVG91
Y2ggTWUhIjsKK2Rpdi5zdHlsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvciA9ICJyZ2JhKDExLCAy
MiwgMzMsIDApIjsKKworZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCkKK3sKKyAgICBkZWJ1ZygiRXZl
bnQ6IHRvdWNoIHN0YXJ0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJn
ZXRUb3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQi
KTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0
LXRhcC1oaWdobGlnaHQtY29sb3InKSIsICJyZ2JhKDExLCAyMiwgMzMsIDApIik7CisgICAgZGl2
LnN0eWxlLndlYmtpdFRhcEhpZ2hsaWdodENvbG9yID0gIiI7ICAvLyBDbGVhciB0aGUgY3VzdG9t
aXplZCB0YXAgaGlnaGxpZ2h0IGNvbG9yCit9CisKK2Z1bmN0aW9uIG9uVG91Y2hFbmQoKQorewor
ICAgIGRlYnVnKCJFdmVudDogdG91Y2ggZW5kIik7CisgICAgLy8gQ2hlY2sgdGhlIGRlZmF1bHQg
dmFsdWUuCisgICAgc2hvdWxkQmVGYWxzZSgiZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcu
Z2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFw
LWhpZ2hsaWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMsIDApJyIpCisgICAgc2hvdWxk
QmVOb25OdWxsKCJkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9y
JykiKTsKKyAgICAvLyBOb3RpZnkgdGhlIHRlc3QgZG9uZS4KKyAgICBzdWNjZXNzZnVsbHlQYXJz
ZWQgPSB0cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hz
dGFydCIsIG9uVG91Y2hTdGFydCwgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNo
ZW5kIiwgb25Ub3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2
LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB0b3VjaFRhcmdldHMoKQor
eworICAgIGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5h
ZGRUb3VjaFBvaW50KDIwLCAyMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAg
IGV2ZW50U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDUwKTsKKyAgICBldmVudFNlbmRl
ci50b3VjaE1vdmUoKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAg
ICBldmVudFNlbmRlci50b3VjaEVuZCgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYg
KHdpbmRvdy5ldmVudFNlbmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7Cisg
ICAgZGVzY3JpcHRpb24oIkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQi
KTsKKworICAgIHRvdWNoVGFyZ2V0cygpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0
IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlICYmIFdlYktpdCBidWlsdCB3aXRoIEVOQUJMRShUT1VD
SF9FVkVOVCkuIikKK30K
</data>
<flag name="review"
          id="106261"
          type_id="1"
          status="+"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="106278"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109337</attachid>
            <date>2011-09-30 13:21:50 -0700</date>
            <delta_ts>2011-09-30 15:30:08 -0700</delta_ts>
            <desc>patch v3 to fix reported broken tests</desc>
            <filename>tap-highlight.diff2</filename>
            <type>text/plain</type>
            <size>20676</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk2NDE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDktMzAgIEpvaG5ueSBE
aW5nICA8am5kQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IC13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciB3aGVuIGVuYWJsaW5nIHRvdWNoIGV2ZW50cyBzdXBwb3J0LgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg1NDQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPcmlnaW5hbCBjb2RlIGZy
b20gdGhlIGlPUyBXZWJDb3JlIGNvZGUgZHVtcCwgZXh0cmFjdGVkIGFuZCBtb2RpZmllZCBieSB0
aWppYW5nQHJpbSBhbmQgam5kQGNocm9taXVtLgorICAgICAgICBTdXBwb3J0cyB0aGUgbmV3IENT
UyBwcm9wZXJ0eSAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3Igb24gcGxhdGZvcm1zIHdoaWNo
IHN1cHBvcnQgdG91Y2ggZXZlbnRzLgorICAgICAgICBQbGF0Zm9ybSBjYW4gb3ZlcnJpZGUgV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OnBsYXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IgdG8gdXNlIGl0cyBv
d24gcGxhdGZvcm0KKyAgICAgICAgc3BlY2lmaWMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9y
LiBPdGhlcndpc2UgUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciB3aWxsIGJl
CisgICAgICAgIHVzZWQgYXMgZGVmYXVsdCB0YXAgaGlnaGxpZ2h0IGNvbG9yLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbAorCisgICAg
ICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHlOYW1lcy5pbjoKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhl
bWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWU6OnRhcEhpZ2hsaWdodENvbG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUYXBIaWdobGlnaHRDb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRGbGFnczo6dGFwSGln
aGxpZ2h0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldFRhcEhp
Z2hsaWdodENvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJp
dGVkRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpT
dHlsZVJhcmVJbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZUluaGVy
aXRlZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmg6CisKIDIwMTEtMDktMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6Y29weVN0eWxlVG9DaGlsZHJlbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDk2Mzc3KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0Nyw2ICsyNDcsOSBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVy
dGllc1tdID0gCiAgICAgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZSwKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luLAogICAgIENTU1Byb3BlcnR5V2Via2l0UnRsT3Jk
ZXJpbmcsCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRh
cEhpZ2hsaWdodENvbG9yLAorI2VuZGlmCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0Q29tYmlu
ZSwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LAogICAgIENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzQ29sb3IsCkBAIC0xNzk3LDYgKzE4MDAsMTAgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlYwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRSdGxPcmRlcmluZzoKICAgICAgICAgICAgIHJldHVy
biBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoc3R5bGUtPnJ0bE9y
ZGVyaW5nKCkgPyBDU1NWYWx1ZVZpc3VhbCA6IENTU1ZhbHVlTG9naWNhbCk7CisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRhcEhpZ2hsaWdo
dENvbG9yOgorICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRDb2xvcihzdHls
ZS5nZXQoKSwgc3R5bGUtPnRhcEhpZ2hsaWdodENvbG9yKCkpOworI2VuZGlmICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyRHJhZzoKICAgICAgICAgICAgIHJl
dHVybiBwcmltaXRpdmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+dXNlckRyYWcoKSk7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OgpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDk2Mzc3KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzQsNiArMTkzNCwxOCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAjZW5kaWYKICAgICAvLyBFbmQg
QXBwbGUtc3BlY2lmaWMgcHJvcGVydGllcwogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGFwSGlnaGxpZ2h0Q29sb3I6CisgICAgICAgIGlmICgo
aWQgPj0gQ1NTVmFsdWVBcXVhICYmIGlkIDw9IENTU1ZhbHVlV2luZG93dGV4dCkgfHwgaWQgPT0g
Q1NTVmFsdWVNZW51CisgICAgICAgICAgICB8fCAoaWQgPj0gQ1NTVmFsdWVXZWJraXRGb2N1c1Jp
bmdDb2xvciAmJiBpZCA8IENTU1ZhbHVlV2Via2l0VGV4dCAmJiAhbV9zdHJpY3QpKSB7CisgICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZUNvbG9yKCk7CisgICAgICAgICAgICBpZiAocGFyc2Vk
VmFsdWUpCisgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyNlbmRpZgogICAgICAgICAvKiBzaG9ydGhhbmQgcHJvcGVydGllcyAq
LwogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kOiB7CiAgICAgICAgIC8vIFBvc2l0aW9u
IG11c3QgY29tZSBiZWZvcmUgY29sb3IgaW4gdGhpcyBhcnJheSBiZWNhdXNlIGEgcGxhaW4gb2xk
ICIwIiBpcyBhIGxlZ2FsIGNvbG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbgkocmV2aXNpb24gOTYzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzU1LDQgKzM1NSw3IEBAIHotaW5kZXgKIC13
ZWJraXQtcmVnaW9uLWJyZWFrLWFmdGVyCiAtd2Via2l0LXJlZ2lvbi1icmVhay1iZWZvcmUKIC13
ZWJraXQtcmVnaW9uLWJyZWFrLWluc2lkZQorI2lmIGRlZmluZWQoRU5BQkxFX1RPVUNIX0VWRU5U
UykgJiYgRU5BQkxFX1RPVUNIX0VWRU5UUworLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yCisj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gOTYzNzcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1ODMsNiArMzU4MywxNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
X0FORF9QUklNSVRJVkUocG9pbnRlckV2ZW50cywgUG9pbnRlckV2ZW50cykKICAgICAgICAgcmV0
dXJuOwogICAgIH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogeworICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRf
SU5JVElBTCh0YXBIaWdobGlnaHRDb2xvciwgVGFwSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICBp
ZiAoIXByaW1pdGl2ZVZhbHVlKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgQ29sb3Ig
Y29sID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUocHJpbWl0aXZlVmFsdWUpOworICAgICAg
ICBtX3N0eWxlLT5zZXRUYXBIaWdobGlnaHRDb2xvcihjb2wpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShjb2xvclNw
YWNlLCBDb2xvclNwYWNlKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCShyZXZpc2lvbiA5NjM3NykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODQsNiAr
MTA4NCwxMyBAQCBDb2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1JbmFjdGl2ZVRleHRTCiAgICAg
cmV0dXJuIENvbG9yKDI1NSwgMjU1LCAwKTsgLy8gWWVsbG93LgogfQogCisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKK0NvbG9yIFJlbmRlclRoZW1lOjp0YXBIaWdobGlnaHRDb2xvcigpCit7Cisg
ICAgcmV0dXJuIGRlZmF1bHRUaGVtZSgpLT5wbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCk7Cit9
CisjZW5kaWYKKwogdm9pZCBSZW5kZXJUaGVtZTo6c2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29u
c3QgQ29sb3ImIGMpCiB7CiAgICAgY3VzdG9tRm9jdXNSaW5nQ29sb3IoKSA9IGM7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkocmV2aXNpb24gOTYzNzcpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ5LDcgKzE0OSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENvbG9yIGZvY3VzUmluZ0NvbG9y
KCk7CiAgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gQ29sb3IoMCwgMCwgMCk7IH0KICAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21Gb2N1c1Jp
bmdDb2xvcihjb25zdCBDb2xvciYpOwotCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBz
dGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRhcEhpZ2hsaWdodENvbG9yOyB9CisjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1D
b2xvcnNEaWRDaGFuZ2UoKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGNhcmV0QmxpbmtJbnRlcnZh
bCgpIGNvbnN0IHsgcmV0dXJuIDAuNTsgfQpAQCAtMzMwLDYgKzMzMywxMCBAQCBwcml2YXRlOgog
ICAgIG11dGFibGUgQ29sb3IgbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9y
OwogICAgIG11dGFibGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5k
Q29sb3I7CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBjb25zdCBSR0JB
MzIgZGVmYXVsdFRhcEhpZ2hsaWdodENvbG9yID0gMHgzMzAwMDAwMDsKKyNlbmRpZgorCiAjaWYg
VVNFKE5FV19USEVNRSkKICAgICBUaGVtZSogbV90aGVtZTsgLy8gVGhlIHBsYXRmb3JtLXNwZWNp
ZmljIHRoZW1lLgogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDk2Mzc3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiAr
MzQsOSBAQAogI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
U2hhZG93RGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCisjZW5kaWYKICNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCkBAIC0xNTExLDYgKzE1MTQs
MTMgQEAgVGV4dEVtcGhhc2lzTWFyayBSZW5kZXJTdHlsZTo6dGV4dEVtcGhhcwogICAgIHJldHVy
biBUZXh0RW1waGFzaXNNYXJrU2VzYW1lOwogfQogCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
K0NvbG9yIFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKQoreworICAgIHJl
dHVybiBSZW5kZXJUaGVtZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKTsKK30KKyNlbmRpZgorCiB2b2lk
IFJlbmRlclN0eWxlOjpnZXRJbWFnZU91dHNldHMoY29uc3QgTmluZVBpZWNlSW1hZ2UmIGltYWdl
LCBMYXlvdXRVbml0JiB0b3AsIExheW91dFVuaXQmIHJpZ2h0LCBMYXlvdXRVbml0JiBib3R0b20s
IExheW91dFVuaXQmIGxlZnQpIGNvbnN0CiB7CiAgICAgdG9wID0gTmluZVBpZWNlSW1hZ2U6OmNv
bXB1dGVPdXRzZXQoaW1hZ2Uub3V0c2V0KCkudG9wKCksIGJvcmRlclRvcFdpZHRoKCkpOwpAQCAt
MTUzMCw1ICsxNTQwLDUgQEAgdm9pZCBSZW5kZXJTdHlsZTo6Z2V0SW1hZ2VWZXJ0aWNhbE91dHNl
dAogICAgIHRvcCA9IE5pbmVQaWVjZUltYWdlOjpjb21wdXRlT3V0c2V0KGltYWdlLm91dHNldCgp
LnRvcCgpLCBib3JkZXJUb3BXaWR0aCgpKTsKICAgICBib3R0b20gPSBOaW5lUGllY2VJbWFnZTo6
Y29tcHV0ZU91dHNldChpbWFnZS5vdXRzZXQoKS5ib3R0b20oKSwgYm9yZGVyQm90dG9tV2lkdGgo
KSk7CiB9Ci0gICAgCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCShyZXZpc2lvbiA5NjM3NykKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC04MzYsNiArODM2LDkgQEAgcHVibGljOgogCiAgICAgTGluZUJveENvbnRhaW4gbGlu
ZUJveENvbnRhaW4oKSBjb25zdCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+bV9saW5lQm94
Q29udGFpbjsgfQogICAgIGNvbnN0IExpbmVDbGFtcFZhbHVlJiBsaW5lQ2xhbXAoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bGluZUNsYW1wOyB9CisjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKKyAgICBDb2xvciB0YXBIaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IHJhcmVJbmhlcml0ZWREYXRhLT50YXBIaWdobGlnaHRDb2xvcjsgfQorI2VuZGlmCiAgICAgYm9v
bCB0ZXh0U2l6ZUFkanVzdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0
U2l6ZUFkanVzdDsgfQogICAgIEVUZXh0U2VjdXJpdHkgdGV4dFNlY3VyaXR5KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RVRleHRTZWN1cml0eT4ocmFyZUluaGVyaXRlZERhdGEtPnRleHRT
ZWN1cml0eSk7IH0KIApAQCAtMTIxNyw2ICsxMjIwLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBz
ZXRMaW5lQm94Q29udGFpbihMaW5lQm94Q29udGFpbiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIG1fbGluZUJveENvbnRhaW4sIGMpOyB9CiAgICAgdm9pZCBzZXRMaW5lQ2xhbXAoTGlu
ZUNsYW1wVmFsdWUgYykgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBsaW5lQ2xhbXAs
IGMpOyB9CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICB2b2lkIHNldFRhcEhpZ2hsaWdo
dENvbG9yKGNvbnN0IENvbG9yJiBjKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIHRhcEhp
Z2hsaWdodENvbG9yLCBjKTsgfQorI2VuZGlmCiAgICAgYm9vbCBzZXRUZXh0U2l6ZUFkanVzdChi
b29sKTsKICAgICB2b2lkIHNldFRleHRTZWN1cml0eShFVGV4dFNlY3VyaXR5IGFUZXh0U2VjdXJp
dHkpIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFNlY3VyaXR5LCBhVGV4dFNlY3Vy
aXR5KTsgfQogCkBAIC0xNDY2LDYgKzE0NzIsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExpbmVD
bGFtcFZhbHVlIGluaXRpYWxMaW5lQ2xhbXAoKSB7IHJldHVybiBMaW5lQ2xhbXBWYWx1ZSgpOyB9
CiAgICAgc3RhdGljIGJvb2wgaW5pdGlhbFRleHRTaXplQWRqdXN0KCkgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIHN0YXRpYyBFVGV4dFNlY3VyaXR5IGluaXRpYWxUZXh0U2VjdXJpdHkoKSB7IHJldHVy
biBUU05PTkU7IH0KKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHN0YXRpYyBDb2xvciBp
bml0aWFsVGFwSGlnaGxpZ2h0Q29sb3IoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShEQVNIQk9BUkRf
U1VQUE9SVCkKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxlRGFzaGJvYXJkUmVnaW9uPiYg
aW5pdGlhbERhc2hib2FyZFJlZ2lvbnMoKTsKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFN0eWxl
RGFzaGJvYXJkUmVnaW9uPiYgbm9uZURhc2hib2FyZFJlZ2lvbnMoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVk
RGF0YS5jcHAJKHJldmlzaW9uIDk2Mzc3KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1
Niw5IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXQKICAgICAsIGh5
cGhlbmF0aW9uTGltaXRCZWZvcmUoLTEpCiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0QWZ0ZXIoLTEp
CiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0TGluZXMoLTEpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICAsIHRhcEhpZ2hsaWdodENvbG9yKFJlbmRlclN0eWxlOjppbml0aWFsVGFwSGlnaGxp
Z2h0Q29sb3IoKSkKKyNlbmRpZiAgICAKIHsKIH0KIApAQCAtOTUsNiArOTgsOSBAQCBTdHlsZVJh
cmVJbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVJbmhlcml0CiAgICAgLCBoeXBoZW5hdGlvbkxpbWl0
TGluZXMoby5oeXBoZW5hdGlvbkxpbWl0TGluZXMpCiAgICAgLCBsb2NhbGUoby5sb2NhbGUpCiAg
ICAgLCB0ZXh0RW1waGFzaXNDdXN0b21NYXJrKG8udGV4dEVtcGhhc2lzQ3VzdG9tTWFyaykKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgICwgdGFwSGlnaGxpZ2h0Q29sb3Ioby50YXBIaWdo
bGlnaHRDb2xvcikKKyNlbmRpZgogewogfQogCkBAIC0xMTcsNiArMTIzLDkgQEAgYm9vbCBTdHls
ZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KAogICAgICAgICAmJiB0ZXh0U3Ryb2tlV2lk
dGggPT0gby50ZXh0U3Ryb2tlV2lkdGgKICAgICAgICAgJiYgdGV4dEZpbGxDb2xvciA9PSBvLnRl
eHRGaWxsQ29sb3IKICAgICAgICAgJiYgdGV4dEVtcGhhc2lzQ29sb3IgPT0gby50ZXh0RW1waGFz
aXNDb2xvcgorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgICAgICYmIHRhcEhpZ2hsaWdo
dENvbG9yID09IG8udGFwSGlnaGxpZ2h0Q29sb3IKKyNlbmRpZgogICAgICAgICAmJiBzaGFkb3dE
YXRhRXF1aXZhbGVudChvKQogICAgICAgICAmJiBoaWdobGlnaHQgPT0gby5oaWdobGlnaHQKICAg
ICAgICAgJiYgY3Vyc29yRGF0YUVxdWl2YWxlbnQoY3Vyc29yRGF0YS5nZXQoKSwgby5jdXJzb3JE
YXRhLmdldCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCShyZXZpc2lvbiA5NjM3NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTk4LDYgKzk4LDkgQEAgcHVibGljOgogCiAgICAgQXRvbWljU3RyaW5nIHRl
eHRFbXBoYXNpc0N1c3RvbU1hcms7CiAgICAgUmVmUHRyPFF1b3Rlc0RhdGE+IHF1b3RlczsKKyNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIENvbG9yIHRhcEhpZ2hsaWdodENvbG9yOworI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSgpOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gOTY0MTQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMSBAQAorMjAxMS0wOS0zMCAgSm9obm55IERpbmcgIDxqbmRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFN1cHBvcnQgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIGluIFdl
YkNvcmUgd2hlbiBlbmFibGluZyB0b3VjaCBldmVudHMgc3VwcG9ydC4gCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODU0NC4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0byBn
ZXQgY3VzdG9taXplZCB0YXAgaGlnaGxpZ2h0IGNvbG9yIHNldCBieSBwYWdlIGF1dGhvci4KKwor
ICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29tcHV0ZWQtc3R5bGUtd2l0aG91
dC1yZW5kZXJlci5odG1sOgorICAgICAgICAqIGZhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29t
cHV0ZWQtc3R5bGUuaHRtbDoKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVz
dHMvdGFwLWhpZ2hsaWdodC1jb2xvci5qczogQWRkZWQuCisgICAgICAgIChvblRvdWNoU3RhcnQp
OgorICAgICAgICAodG91Y2hUYXJnZXRzKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy90b3VjaC90
YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9l
dmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvY3NzL2dldENvbXB1dGVkU3R5bGUtYmFzaWMueGh0bWw6CisKIDIwMTEtMDktMjkgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02OTA0MwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0
Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRlcmVyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1z
dHlsZS13aXRob3V0LXJlbmRlcmVyLmh0bWwJKHJldmlzaW9uIDk2Mzc3KQorKysgTGF5b3V0VGVz
dHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS13aXRob3V0LXJlbmRl
cmVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDExIEBACiAgICAgICAgICAgICBp
ZiAoIXByb3BlcnRpZXMpIHsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBz
dHlsZS5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHN0eWxl
Lml0ZW0oaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lICE9ICItd2Via2l0LWRhc2hi
b2FyZC1yZWdpb24iKQorICAgICAgICAgICAgICAgICAgICAvLyAiLXdlYmtpdC10YXAtaGlnaGxp
Z2h0LWNvbG9yIiBpcyBvbmx5IGF2YWlsYWJsZSBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gcG9ydHMgd2hpY2ggaGF2ZSBlbmFibGVkIFRPVUNIX0VWRU5UUyBmbGFnLiBXZSB0ZXN0IGl0
IGluCisgICAgICAgICAgICAgICAgICAgIC8vIGxheW91dCB0ZXN0IGZhc3QvZXZlbnRzL3RvdWNo
L3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUg
IT0gIi13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbiIgJiYKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5hbWUgIT0gIi13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2coIiAgICAiICsgbmFtZSArICI6ICIgKyBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVl
KG5hbWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcHJvcGVydGllcyA9
IG90aGVyczsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3NzL2dldENvbXB1dGVkU3R5bGUvY29t
cHV0ZWQtc3R5bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Nzcy9nZXRD
b21wdXRlZFN0eWxlL2NvbXB1dGVkLXN0eWxlLmh0bWwJKHJldmlzaW9uIDk2Mzc3KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS9jb21wdXRlZC1zdHlsZS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsMTEgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBmb3Ig
KHZhciBpID0gMDsgaSAhPSBzdHlsZS5sZW5ndGg7ICsraSkgewogICAgICAgICB2YXIgbmFtZSA9
IHN0eWxlLml0ZW0oaSk7CiAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlLmdldFByb3BlcnR5VmFs
dWUobmFtZSk7Ci0gICAgICAgIGlmIChuYW1lICE9ICItd2Via2l0LWRhc2hib2FyZC1yZWdpb24i
KQorICAgICAgICAvLyAiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiBpcyBvbmx5IGF2YWls
YWJsZSBvbiB0aGUgcG9ydHMKKyAgICAgICAgLy8gd2hpY2ggaGF2ZSBlbmFibGVkIFRPVUNIX0VW
RU5UUyBmbGFnLiBXZSB0ZXN0IGl0IGluIGxheW91dCB0ZXN0CisgICAgICAgIC8vIGZhc3QvZXZl
bnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbC4KKyAgICAgICAgaWYgKG5hbWUgIT0g
Ii13ZWJraXQtZGFzaGJvYXJkLXJlZ2lvbiIgJiYKKyAgICAgICAgICAgIG5hbWUgIT0gIi13ZWJr
aXQtdGFwLWhpZ2hsaWdodC1jb2xvciIpCiAgICAgICAgICAgICB0ZXh0ICs9IG5hbWUgKyAiOiAi
ICsgdmFsdWUgKyAiO1xuIjsKICAgICB9CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4
cG9zZWQiKS50ZXh0Q29udGVudCA9IHRleHQ7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3RvdWNoL3RhcC1o
aWdobGlnaHQtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBA
CitUb3VjaCBNZSEKK0NoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK0V2ZW50OiB0b3VjaCBzdGFydAorUEFTUyBl
dmVudC50YXJnZXRUb3VjaGVzWzBdLnRhcmdldC50YWdOYW1lIGlzICJESVYiCitQQVNTIGV2ZW50
LnRhcmdldFRvdWNoZXNbMF0udGFyZ2V0LmlkIGlzICJ0b3VjaHRhcmdldCIKK1BBU1MgZGl2Lm93
bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcicpIGlzICJyZ2JhKDExLCAy
MiwgMzMsIDApIgorRXZlbnQ6IHRvdWNoIGVuZAorUEFTUyBkaXYub3duZXJEb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdl
YmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykgPT0gJ3JnYmEoMTEsIDIyLCAzMywgMCknIGlzIGZh
bHNlCitQQVNTIGRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
ZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3In
KSBpcyBub24tbnVsbC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxp
Z2h0LWNvbG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91
Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvdG91Y2gvdGFwLWhpZ2hsaWdodC1jb2xvci5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8u
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8IS0tCisg
IFRvIHRlc3QgdGhlIG5ldyBDU1MgcHJvcGVydHkgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9y
IHdoaWNoIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gYnVpbGRpbmcKKyAgV2ViS2l0IHdpdGggRU5B
QkxFKFRPVUNIX0VWRU5UUyksIHdlIGNyZWF0ZSBhIG5ldyBkaXYgZWxlbWVudCBhbmQgYWRkIC13
ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcgorICBpbiB0aGUgZWxlbWVudCwgdGhlbiBzZWUgd2hl
dGhlciB3ZSBjYW4gZ2V0IHRoZSBzcGVjaWZpZWQgdGFwIGhpZ2hsaWdodCBjb2xvciBmcm9tIERP
TS4KKyAgV2ViS2l0IHBvcnRzIGNhbiB1c2UgdGhpcyBjc3MgcHJvcGVydHkgdG8gZ2V0IHRoZSBj
dXN0b21pemVkIHRhcCBoaWdobGlnaHQgY29sb3IgZnJvbSB0aGUgd2VicGFnZQorICB3aGljaCBp
cyBzZXQgYnkgd2ViIGRldmVsb3BlcnMgdG8gbWFrZSBzdXJlIHRoYXQgdGFwIGhpZ2hsaWdodCBj
b2xvciBmaXRzIHRoZWlyIHdlYnNpdGVzIGluc3RlYWQKKyAgb2YgdXNpbmcgdGhlIGhhcmRjb2Rl
IHZhbHVlIHByb3ZpZGVkIGJ5IGJyb3dzZXJzLgorLS0+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNy
Yz0ic2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMiPjwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvdG91Y2gvc2NyaXB0LXRl
c3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvdG91Y2gvc2NyaXB0LXRlc3RzL3RhcC1oaWdobGlnaHQtY29sb3IuanMJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy90b3VjaC9zY3JpcHQtdGVzdHMvdGFw
LWhpZ2hsaWdodC1jb2xvci5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAordmFyIGRp
diA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworZGl2LmlkID0gInRvdWNodGFyZ2V0
IjsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4
IjsKK2Rpdi5zdHlsZS5jb2xvciA9ICJibHVlIjsKK2Rpdi5pbm5lclRleHQgPSAiVG91Y2ggTWUh
IjsKK2Rpdi5zdHlsZS53ZWJraXRUYXBIaWdobGlnaHRDb2xvciA9ICJyZ2JhKDExLCAyMiwgMzMs
IDApIjsKKworZnVuY3Rpb24gb25Ub3VjaFN0YXJ0KCkKK3sKKyAgICBkZWJ1ZygiRXZlbnQ6IHRv
dWNoIHN0YXJ0Iik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudC50YXJnZXRUb3Vj
aGVzWzBdLnRhcmdldC50YWdOYW1lIiwgIkRJViIpOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmlu
ZygiZXZlbnQudGFyZ2V0VG91Y2hlc1swXS50YXJnZXQuaWQiLCAidG91Y2h0YXJnZXQiKTsKKyAg
ICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImRpdi5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3Lmdl
dENvbXB1dGVkU3R5bGUoZGl2LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctd2Via2l0LXRhcC1o
aWdobGlnaHQtY29sb3InKSIsICJyZ2JhKDExLCAyMiwgMzMsIDApIik7CisgICAgZGl2LnN0eWxl
LndlYmtpdFRhcEhpZ2hsaWdodENvbG9yID0gIiI7ICAvLyBDbGVhciB0aGUgY3VzdG9taXplZCB0
YXAgaGlnaGxpZ2h0IGNvbG9yCit9CisKK2Z1bmN0aW9uIG9uVG91Y2hFbmQoKQoreworICAgIGRl
YnVnKCJFdmVudDogdG91Y2ggZW5kIik7CisgICAgLy8gQ2hlY2sgdGhlIGRlZmF1bHQgdmFsdWUu
CisgICAgc2hvdWxkQmVGYWxzZSgiZGl2Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShkaXYsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy13ZWJraXQtdGFwLWhpZ2hs
aWdodC1jb2xvcicpID09ICdyZ2JhKDExLCAyMiwgMzMsIDApJyIpCisgICAgc2hvdWxkQmVOb25O
dWxsKCJkaXYub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRpdiwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yJykiKTsK
KyAgICAvLyBOb3RpZnkgdGhlIHRlc3QgZG9uZS4KKyAgICBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0
cnVlOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOworfQorCitkaXYuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2hzdGFydCIs
IG9uVG91Y2hTdGFydCwgZmFsc2UpOworZGl2LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoZW5kIiwg
b25Ub3VjaEVuZCwgZmFsc2UpOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBkb2N1
bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCitmdW5jdGlvbiB0b3VjaFRhcmdldHMoKQoreworICAg
IGV2ZW50U2VuZGVyLmNsZWFyVG91Y2hQb2ludHMoKTsKKyAgICBldmVudFNlbmRlci5hZGRUb3Vj
aFBvaW50KDIwLCAyMCk7CisgICAgZXZlbnRTZW5kZXIudG91Y2hTdGFydCgpOworICAgIGV2ZW50
U2VuZGVyLnVwZGF0ZVRvdWNoUG9pbnQoMCwgNTAsIDUwKTsKKyAgICBldmVudFNlbmRlci50b3Vj
aE1vdmUoKTsKKyAgICBldmVudFNlbmRlci5yZWxlYXNlVG91Y2hQb2ludCgwKTsKKyAgICBldmVu
dFNlbmRlci50b3VjaEVuZCgpOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworaWYgKHdpbmRv
dy5ldmVudFNlbmRlciAmJiBldmVudFNlbmRlci5jbGVhclRvdWNoUG9pbnRzKSB7CisgICAgZGVz
Y3JpcHRpb24oIkNoZWNrIHRhcCBoaWdobGlnaHQgY29sb3IgaW4gdG91Y2ggZXZlbnQiKTsKKwor
ICAgIHRvdWNoVGFyZ2V0cygpOworfSBlbHNlIHsKKyAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVp
cmVzIER1bXBSZW5kZXJUcmVlICYmIFdlYktpdCBidWlsdCB3aXRoIEVOQUJMRShUT1VDSF9FVkVO
VCkuIikKK30KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jc3MvZ2V0Q29tcHV0ZWRTdHlsZS1iYXNp
Yy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY3NzL2dldENvbXB1dGVkU3R5
bGUtYmFzaWMueGh0bWwJKHJldmlzaW9uIDk2Mzc3KQorKysgTGF5b3V0VGVzdHMvc3ZnL2Nzcy9n
ZXRDb21wdXRlZFN0eWxlLWJhc2ljLnhodG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw4ICsyNCwx
MSBAQAogICAgICAgICAgIHZhciBuYW1lID0gc3R5bGUuaXRlbSh4KTsKICAgICAgICAgICB2YXIg
dmFsdWUgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpOwogICAgICAgICAgIHZhciBjc3NW
YWx1ZSA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUobmFtZSk7Ci0gIAotICAgICAgICAgIGlm
IChuYW1lICE9ICItd2Via2l0LWRhc2hib2FyZC1yZWdpb24iKSB7CisgICAgICAgICAgLy8gIi13
ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvciIgaXMgb25seSBhdmFpbGFibGUgb24gdGhlIHBvcnRz
CisgICAgICAgICAgLy8gd2hpY2ggaGF2ZSBlbmFibGVkIFRPVUNIX0VWRU5UUyBmbGFnLiBXZSB0
ZXN0IGl0IGluIGxheW91dCB0ZXN0CisgICAgICAgICAgLy8gZmFzdC9ldmVudHMvdG91Y2gvdGFw
LWhpZ2hsaWdodC1jb2xvci5odG1sLgorICAgICAgICAgIGlmIChuYW1lICE9ICItd2Via2l0LWRh
c2hib2FyZC1yZWdpb24iICYmCisgICAgICAgICAgICAgIG5hbWUgIT0gIi13ZWJraXQtdGFwLWhp
Z2hsaWdodC1jb2xvciIpIHsKICAgICAgICAgICAgIGRlYnVnTG9nKGVsZW1lbnRJZCArICI6IHN0
eWxlLmdldFByb3BlcnR5VmFsdWUoIiArIG5hbWUgKyAiKSA6ICIgKyB2YWx1ZSk7CiAgICAgICAg
ICAgICBkZWJ1Z0xvZyhlbGVtZW50SWQgKyAiOiBzdHlsZS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCIg
KyBuYW1lICsgIikgOiAiICsgY3NzVmFsdWUpOwogICAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110297</attachid>
            <date>2011-10-09 04:34:24 -0700</date>
            <delta_ts>2011-10-09 06:08:49 -0700</delta_ts>
            <desc>patch to clean test expectation</desc>
            <filename>tap-changebugno.patch</filename>
            <type>text/plain</type>
            <size>1668</size>
            <attacher name="Johnny(Jianning) Ding">jnd</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDk3MDI2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMTAtMDkgIEpvaG5ueSBEaW5nICA8am5k
QGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgYnVnIG9mIHRhcC1oaWdobGlnaHQtY29s
b3IuaHRtbCB0byBidWcgNjY1NzcgYW5kIGNsb3NlIGJ1ZyA0ODU0NC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NTQ0CisKKyAgICAgICAgVW5yZXZp
ZXdlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dDoKKwogMjAxMS0xMC0wOSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtRdF0gVW5yZXZpZXdlZCB3ZWVrZW5kIGdhcmRlbmluZywgc2tpcCBmYWlsaW5n
IHRlc3RzCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA5NzAyMikKKysrIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzQ4
Nyw2ICszNDg3LDcgQEAgQlVHV0s2NjU3NyBMRU9QQVJEIDogZmFzdC9ldmVudHMvdG91Y2gvbQog
QlVHV0s2NjU3NyBMRU9QQVJEIDogZmFzdC9ldmVudHMvdG91Y2gvdG91Y2gtZ2VzdHVyZS1zY3Jv
bGwuaHRtbCA9IFRJTUVPVVQKIEJVR1dLNjY1NzcgTEVPUEFSRCA6IGZhc3QvZXZlbnRzL3RvdWNo
L3RvdWNoLXRhcmdldC1saW1pdGVkLmh0bWwgPSBUSU1FT1VUCiBCVUdXSzY2NTc3IExFT1BBUkQg
OiBmYXN0L2V2ZW50cy90b3VjaC90b3VjaC10YXJnZXQuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNjY1
NzcgTEVPUEFSRCA6IGZhc3QvZXZlbnRzL3RvdWNoL3RhcC1oaWdobGlnaHQtY29sb3IuaHRtbCA9
IFRJTUVPVVQKIAogQlVHVjhfMTYzNCA6IGZhc3QvanMvY29uc3QuaHRtbCA9IFRFWFQKIApAQCAt
Mzc4OSw3ICszNzkwLDYgQEAgQlVHV0s2OTEyNCBXSU4gTElOVVggR1BVIDogcGxhdGZvcm0vY2hy
bwogCiBCVUdXSzY5MTM2IE1BQyBTTk9XTEVPUEFSRCA6IGZhc3QvZnJhbWVzL2ZyYW1lLXNldC1y
b3RhdGlvbi1oaXQuaHRtbCA9IElNQUdFCiBCVUdXSzY5MTM2IE1BQyBTTk9XTEVPUEFSRCA6IGZh
c3QvZnJhbWVzL2ZyYW1lLXNldC1zY2FsaW5nLWhpdC5odG1sID0gSU1BR0UKLUJVR1dLNDg1NDQg
TUFDIExFT1BBUkQgOiBmYXN0L2V2ZW50cy90b3VjaC90YXAtaGlnaGxpZ2h0LWNvbG9yLmh0bWwg
PSBUSU1FT1VUCiAKIC8vIE5ldyB0ZXN0IGluIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0Lzk2NDcwCiBCVUdBQkFSVEggOiBzdmcvY3VzdG9tL2dyYXlzY2FsZS1ncmFkaWVudC1tYXNr
LTIuc3ZnID0gSU1BR0UK
</data>

          </attachment>
      

    </bug>

</bugzilla>