<?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>88294</bug_id>
          
          <creation_ts>2012-06-04 23:26:01 -0700</creation_ts>
          <short_desc>FileAPI: Blob should support ArrayBufferView instead of ArrayBuffer for Constructor Parameters</short_desc>
          <delta_ts>2012-06-08 00:40:04 -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>WebCore Misc.</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>
          
          <blocked>88389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Li Yin">li.yin</reporter>
          <assigned_to name="Li Yin">li.yin</assigned_to>
          <cc>abarth</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jianli</cc>
    
    <cc>jochen</cc>
    
    <cc>kbr</cc>
    
    <cc>kinuko</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>641208</commentid>
    <comment_count>0</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-04 23:26:01 -0700</bug_when>
    <thetext>From Spec: http://dev.w3.org/2006/webapi/FileAPI/#dfn-Blob
Blob should support ArrayBufferView instead of ArrayBuffer for Constructor Parameters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641291</commentid>
    <comment_count>1</comment_count>
      <attachid>145721</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 01:23:40 -0700</bug_when>
    <thetext>Created attachment 145721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641296</commentid>
    <comment_count>2</comment_count>
      <attachid>145721</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-06-05 01:28:24 -0700</bug_when>
    <thetext>Comment on attachment 145721
Patch

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

The implementation looks correct but I am not sure if the change is acceptable in terms of compatibility. I&apos;ll delegate the review to File API folks.

&gt; LayoutTests/fast/files/script-tests/blob-constructor.js:70
&gt; +var intArray = new Uint32Array(100);
&gt; +var shortArray = new Uint16Array(100);
&gt; +var byteArray = new Uint8Array(100);

Let&apos;s add test cases for Int8Array, Int16Array, Int32Array, Uint8ClampedArray, Float32Array and Float64Array.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641303</commentid>
    <comment_count>3</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 01:31:37 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 145721 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145721&amp;action=review
&gt; 
&gt; The implementation looks correct but I am not sure if the change is acceptable in terms of compatibility. I&apos;ll delegate the review to File API folks.
&gt; 
&gt; &gt; LayoutTests/fast/files/script-tests/blob-constructor.js:70
&gt; &gt; +var intArray = new Uint32Array(100);
&gt; &gt; +var shortArray = new Uint16Array(100);
&gt; &gt; +var byteArray = new Uint8Array(100);
&gt; 
&gt; Let&apos;s add test cases for Int8Array, Int16Array, Int32Array, Uint8ClampedArray, Float32Array and Float64Array.

Okay, I will add more tests. Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641325</commentid>
    <comment_count>4</comment_count>
      <attachid>145732</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 01:56:51 -0700</bug_when>
    <thetext>Created attachment 145732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641443</commentid>
    <comment_count>5</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-05 05:13:25 -0700</bug_when>
    <thetext>(Changing issue summary as (I was told) we usually use [...] tags for ports/platforms)

The change looks good to me, but since this change drops the backward compatibility (as the spec change intended) it might be good to post a short heads-up on webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641457</commentid>
    <comment_count>6</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 05:35:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (Changing issue summary as (I was told) we usually use [...] tags for ports/platforms)
&gt; 
&gt; The change looks good to me, but since this change drops the backward compatibility (as the spec change intended) it might be good to post a short heads-up on webkit-dev?

Good idea. I have sent a mail to the webkit-dev mail list already.
Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641884</commentid>
    <comment_count>7</comment_count>
      <attachid>145732</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-06-05 14:16:23 -0700</bug_when>
    <thetext>Comment on attachment 145732
Patch

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

It may be worth supporting the Blob constructor taking ArrayBuffer for a brief period of time, warning that the old constructor is deprecated. See Source/WebCore/Modules/indexeddb/IDBIndex.cpp for an example.

The patch looks OK overall; I&apos;m r-&apos;ing it due to the need for a test of DataView.

&gt; LayoutTests/ChangeLog:8
&gt; +        Change ArrayBuffer into ArrayBufferView in Blob constrcuting function.

typo: constrcuting

&gt; LayoutTests/fast/files/script-tests/blob-constructor.js:68
&gt; +var blobObj = new Blob([new Int32Array(100)]);

Please test DataView too. DataView is the primary view intended to be used for file and network I/O.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642114</commentid>
    <comment_count>8</comment_count>
      <attachid>145919</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 20:04:49 -0700</bug_when>
    <thetext>Created attachment 145919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642116</commentid>
    <comment_count>9</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 20:06:52 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 145732 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145732&amp;action=review
&gt; 
&gt; It may be worth supporting the Blob constructor taking ArrayBuffer for a brief period of time, warning that the old constructor is deprecated. See Source/WebCore/Modules/indexeddb/IDBIndex.cpp for an example.
&gt; 
Great suggestion. Done

&gt; The patch looks OK overall; I&apos;m r-&apos;ing it due to the need for a test of DataView.
&gt; 
Done

&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Change ArrayBuffer into ArrayBufferView in Blob constrcuting function.
&gt; 
&gt; typo: constrcuting
&gt;
Done
 
&gt; &gt; LayoutTests/fast/files/script-tests/blob-constructor.js:68
&gt; &gt; +var blobObj = new Blob([new Int32Array(100)]);
&gt; 
&gt; Please test DataView too. DataView is the primary view intended to be used for file and network I/O.

Done

Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642118</commentid>
    <comment_count>10</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-05 20:17:21 -0700</bug_when>
    <thetext>I filed a new bug 88389, it will remove the ArrayBuffer related support in future.

I have no the privilege to edit the bug.
Who can help me add this privilege?
Thanks a million in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643027</commentid>
    <comment_count>11</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-06 17:59:35 -0700</bug_when>
    <thetext>Hi Jian,
  Could you give some comments? Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643133</commentid>
    <comment_count>12</comment_count>
      <attachid>145919</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-06 20:16:45 -0700</bug_when>
    <thetext>Comment on attachment 145919
Patch

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

&gt; Source/WebCore/fileapi/WebKitBlobBuilder.cpp:94
&gt; +    DEFINE_STATIC_LOCAL(String, consoleMessage, (&quot;ArrayBuffer values are deprecated in Blob Constructor. Use ArrayBufferView instead.&quot;));

DEFINE_STATIC_LOCAL is not thread-safe while I think this could be also called on workers.

&gt; Source/WebCore/fileapi/WebKitBlobBuilder.h:65
&gt; +    WebKitBlobBuilder(ScriptExecutionContext*);

explicit

&gt; Source/WebCore/fileapi/WebKitBlobBuilder.idl:35
&gt; +        CallWith=ScriptExecutionContext,

Could we make append(ArrayBuffer) get called with ScriptExecutionContext rather than making the entire BlobBuilder callwith=SEC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643307</commentid>
    <comment_count>13</comment_count>
      <attachid>146226</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 01:10:19 -0700</bug_when>
    <thetext>Created attachment 146226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643309</commentid>
    <comment_count>14</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 01:12:18 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; DEFINE_STATIC_LOCAL is not thread-safe while I think this could be also called on workers.

Done.

&gt; &gt; Source/WebCore/fileapi/WebKitBlobBuilder.idl:35
&gt; &gt; +        CallWith=ScriptExecutionContext,
&gt; 
&gt; Could we make append(ArrayBuffer) get called with ScriptExecutionContext rather than making the entire BlobBuilder callwith=SEC?

Done.

Thanks for your review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643333</commentid>
    <comment_count>15</comment_count>
      <attachid>146226</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2012-06-07 01:59:18 -0700</bug_when>
    <thetext>Comment on attachment 146226
Patch

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

The change looks good to me.

&gt; Source/WebCore/fileapi/WebKitBlobBuilder.h:35
&gt; +#include &quot;ScriptExecutionContext.h&quot;

nit: could this be moved to .cpp (as we also forward-declare)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643494</commentid>
    <comment_count>16</comment_count>
      <attachid>146275</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 06:31:05 -0700</bug_when>
    <thetext>Created attachment 146275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643495</commentid>
    <comment_count>17</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 06:34:00 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 146226 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146226&amp;action=review
&gt; 
&gt; The change looks good to me.
&gt; 
&gt; &gt; Source/WebCore/fileapi/WebKitBlobBuilder.h:35
&gt; &gt; +#include &quot;ScriptExecutionContext.h&quot;
&gt; 
&gt; nit: could this be moved to .cpp (as we also forward-declare)?

Done. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643754</commentid>
    <comment_count>18</comment_count>
      <attachid>146275</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-06-07 11:49:32 -0700</bug_when>
    <thetext>Comment on attachment 146275
Patch

BlobBuilder interface is deprecated, but we&apos;re adding append(ArrayBufferView) to BlobBuilder unintentionally because we need to add ArrayBufferView parameter to Blob constructor and the blob construction is routed through BlobBuilder. I am not sure how this could be addressed.


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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Blob should support ArrayBufferView instead of ArrayBuffer for Constructor Parameters.

nit: No need to repeat this line.

&gt; Source/WebCore/ChangeLog:10
&gt; +        Currently, we just add the support of ArrayBufferView, not delete ArrayBuffer because

nit: Currently we add the support for ArrayBufferView, while still keeping ArrayBuffer for backward compatibility. We will remove it in the near future.

&gt; Source/WebCore/ChangeLog:25
&gt; +        * fileapi/WebKitBlobBuilder.idl: Change it to support ArrayBufferView in append method

We should not say &quot;Change&quot; since we have not removed the legacy one yet.

&gt; Source/WebCore/fileapi/WebKitBlobBuilder.cpp:93
&gt; +    String consoleMessage(&quot;ArrayBuffer values are deprecated in Blob Constructor. Use ArrayBufferView instead.&quot;);

Use DEFINE_STATIC_LOCAL.

&gt; LayoutTests/fast/files/script-tests/blob-constructor.js:79
&gt; +shouldBe(&quot;new Blob([blobObj, new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))]).size&quot;, &quot;1000&quot;);

nit: Either you can move &quot;var blobObj = ...&quot; to just before this line. Or you can replace blobObj in shouldBe with the expression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644133</commentid>
    <comment_count>19</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 17:43:29 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 145919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145919&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/fileapi/WebKitBlobBuilder.cpp:94
&gt; &gt; +    DEFINE_STATIC_LOCAL(String, consoleMessage, (&quot;ArrayBuffer values are deprecated in Blob Constructor. Use ArrayBufferView instead.&quot;));
&gt; 
&gt; DEFINE_STATIC_LOCAL is not thread-safe while I think this could be also called on workers.

All the thread just read only the static value. and it isn&apos;t destroyed until the process exits. It should not have the thread-safe issue.
In addition, DEFINE_STATIC_LOCAL is used in many modules, according to my understanding, the advantage is reducing applying for local variables.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644140</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-07 17:48:18 -0700</bug_when>
    <thetext>&gt; All the thread just read only the static value. and it isn&apos;t destroyed until the process exits. It should not have the thread-safe issue.

We don&apos;t use DEFINE_STATIC_LOCAL in multithreaded code because there&apos;s a race condition in initialization.

&gt; In addition, DEFINE_STATIC_LOCAL is used in many modules, according to my understanding, the advantage is reducing applying for local variables.

Most code in WebCore is single threaded, which is why you see this macro used commonly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644152</commentid>
    <comment_count>21</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 17:59:32 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; All the thread just read only the static value. and it isn&apos;t destroyed until the process exits. It should not have the thread-safe issue.
&gt; 
&gt; We don&apos;t use DEFINE_STATIC_LOCAL in multithreaded code because there&apos;s a race condition in initialization.
&gt; 

I ignored the initialization, thanks for your reminding.

&gt; &gt; In addition, DEFINE_STATIC_LOCAL is used in many modules, according to my understanding, the advantage is reducing applying for local variables.
&gt; 
&gt; Most code in WebCore is single threaded, which is why you see this macro used commonly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644163</commentid>
    <comment_count>22</comment_count>
      <attachid>146440</attachid>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 18:11:43 -0700</bug_when>
    <thetext>Created attachment 146440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644169</commentid>
    <comment_count>23</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 18:24:01 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 146275 [details])
&gt; BlobBuilder interface is deprecated, but we&apos;re adding append(ArrayBufferView) to BlobBuilder unintentionally because we need to add ArrayBufferView parameter to Blob constructor and the blob construction is routed through BlobBuilder. I am not sure how this could be addressed.
&gt; 
Is WebKitBlobBuilder interface deprecated? Why?
If so, how will we implement Blob Constructor? Could you share some related information? Or where can I find this discussion?

&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=146275&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Blob should support ArrayBufferView instead of ArrayBuffer for Constructor Parameters.
&gt; 
&gt; nit: No need to repeat this line.
&gt;
Done.
 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Currently, we just add the support of ArrayBufferView, not delete ArrayBuffer because
&gt; 
&gt; nit: Currently we add the support for ArrayBufferView, while still keeping ArrayBuffer for backward compatibility. We will remove it in the near future.
&gt;
Done.
 
&gt; &gt; Source/WebCore/ChangeLog:25
&gt; &gt; +        * fileapi/WebKitBlobBuilder.idl: Change it to support ArrayBufferView in append method
&gt; 
&gt; We should not say &quot;Change&quot; since we have not removed the legacy one yet.
&gt; 
&gt; &gt; Source/WebCore/fileapi/WebKitBlobBuilder.cpp:93
&gt; &gt; +    String consoleMessage(&quot;ArrayBuffer values are deprecated in Blob Constructor. Use ArrayBufferView instead.&quot;);
&gt; 
&gt; Use DEFINE_STATIC_LOCAL.

DEFINE_STATIC_LOCAL is not thread-safe. and it isn&apos;t performance sensitive, I will keep a local string to do that.
Thanks Adam Barth and Kinuko&apos;s comments.

&gt; &gt; LayoutTests/fast/files/script-tests/blob-constructor.js:79
&gt; &gt; +shouldBe(&quot;new Blob([blobObj, new Uint8Array(100), new Float32Array(100), new DataView(new ArrayBuffer(100))]).size&quot;, &quot;1000&quot;);
&gt; 
&gt; nit: Either you can move &quot;var blobObj = ...&quot; to just before this line. Or you can replace blobObj in shouldBe with the expression.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644226</commentid>
    <comment_count>24</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2012-06-07 19:22:12 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 146275 [details] [details])
&gt; &gt; BlobBuilder interface is deprecated, but we&apos;re adding append(ArrayBufferView) to BlobBuilder unintentionally because we need to add ArrayBufferView parameter to Blob constructor and the blob construction is routed through BlobBuilder. I am not sure how this could be addressed.
&gt; &gt; 
&gt; Is WebKitBlobBuilder interface deprecated? Why?
&gt; If so, how will we implement Blob Constructor? Could you share some related information? Or where can I find this discussion?
&gt; 
See http://www.w3.org/TR/file-writer-api/#idl-def-BlobBuilder for the plan to deprecate BlobBuilder.
   The BlobBuilder interface is deprecated in favor of the new constructible Blob. However, at this time implementations generally support BlobBuilder and not constructible Blob.

Probably we do not need to do anything about exposing a new way to append sth in BlobBuilder since it will get deprecated in the future. Just let you know we might have such issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644228</commentid>
    <comment_count>25</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 19:32:16 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; (In reply to comment #18)
&gt; &gt; &gt; (From update of attachment 146275 [details] [details] [details])
&gt; &gt; &gt; BlobBuilder interface is deprecated, but we&apos;re adding append(ArrayBufferView) to BlobBuilder unintentionally because we need to add ArrayBufferView parameter to Blob constructor and the blob construction is routed through BlobBuilder. I am not sure how this could be addressed.
&gt; &gt; &gt; 
&gt; &gt; Is WebKitBlobBuilder interface deprecated? Why?
&gt; &gt; If so, how will we implement Blob Constructor? Could you share some related information? Or where can I find this discussion?
&gt; &gt; 
&gt; See http://www.w3.org/TR/file-writer-api/#idl-def-BlobBuilder for the plan to deprecate BlobBuilder.
&gt;    The BlobBuilder interface is deprecated in favor of the new constructible Blob. However, at this time implementations generally support BlobBuilder and not constructible Blob.
&gt; 
&gt; Probably we do not need to do anything about exposing a new way to append sth in BlobBuilder since it will get deprecated in the future. Just let you know we might have such issue.

Okay, thanks for your clarification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644259</commentid>
    <comment_count>26</comment_count>
      <attachid>146440</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 20:15:42 -0700</bug_when>
    <thetext>Comment on attachment 146440
Patch

Clearing flags on attachment: 146440

Committed r119791: &lt;http://trac.webkit.org/changeset/119791&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644260</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 20:15:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644372</commentid>
    <comment_count>28</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-06-07 23:24:02 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 146440 [details])
&gt; Clearing flags on attachment: 146440
&gt; 
&gt; Committed r119791: &lt;http://trac.webkit.org/changeset/119791&gt;

This caused fast/files/read-blob-async.html to fail. See for example &lt;http://build.webkit.org/results/Lion%20Debug%20(Tests)/r119795%20(7453)/fast/files/read-blob-async-pretty-diff.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644374</commentid>
    <comment_count>29</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-07 23:27:55 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 146440 [details] [details])
&gt; &gt; Clearing flags on attachment: 146440
&gt; &gt; 
&gt; &gt; Committed r119791: &lt;http://trac.webkit.org/changeset/119791&gt;
&gt; 
&gt; This caused fast/files/read-blob-async.html to fail. See for example &lt;http://build.webkit.org/results/Lion%20Debug%20(Tests)/r119795%20(7453)/fast/files/read-blob-async-pretty-diff.html&gt;.

Thanks for your report. I will have a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644419</commentid>
    <comment_count>30</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-06-08 00:27:42 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (In reply to comment #26)
&gt; &gt; (From update of attachment 146440 [details] [details])
&gt; &gt; Clearing flags on attachment: 146440
&gt; &gt; 
&gt; &gt; Committed r119791: &lt;http://trac.webkit.org/changeset/119791&gt;
&gt; 
&gt; This caused fast/files/read-blob-async.html to fail. See for example &lt;http://build.webkit.org/results/Lion%20Debug%20(Tests)/r119795%20(7453)/fast/files/read-blob-async-pretty-diff.html&gt;.

Fixed in &lt;http://trac.webkit.org/r119805&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644427</commentid>
    <comment_count>31</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-06-08 00:40:04 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; (In reply to comment #28)
&gt; &gt; (In reply to comment #26)
&gt; &gt; &gt; (From update of attachment 146440 [details] [details] [details])
&gt; &gt; &gt; Clearing flags on attachment: 146440
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r119791: &lt;http://trac.webkit.org/changeset/119791&gt;
&gt; &gt; 
&gt; &gt; This caused fast/files/read-blob-async.html to fail. See for example &lt;http://build.webkit.org/results/Lion%20Debug%20(Tests)/r119795%20(7453)/fast/files/read-blob-async-pretty-diff.html&gt;.
&gt; 
&gt; Fixed in &lt;http://trac.webkit.org/r119805&gt;.

Yeah, the array.buffer should change into array.
My apology for missed changing in these tests because they are skipped on chromium  and Gtk platform.
Thank you do that.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145721</attachid>
            <date>2012-06-05 01:23:40 -0700</date>
            <delta_ts>2012-06-05 01:56:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120606162656.patch</filename>
            <type>text/plain</type>
            <size>13350</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVjOGRlMmRmODgwNjYy
NDUxOWQ3ZjFhMmM0YTJmMzUwMjZiYWRhOC4uODk2MzJhMWI2ZDdiNDM2MmMyNmEzNzI1NmNjMmVk
NTg2MTBhMDg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA2ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtGaWxlQVBJXSBCbG9iIHNob3VsZCBz
dXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1
Y3RvciBQYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyb20gU3BlYzogaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvRmlsZUFQSS8j
ZGZuLUJsb2IKKyAgICAgICAgQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW5z
dGVhZCBvZiBBcnJheUJ1ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycy4KKworICAgICAg
ICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQmxvYkNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKToKKyAgICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYktpdEJsb2JCdWlsZGVyKToKKyAg
ICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbDoKKwogMjAxMi0wNS0zMSAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBE
YXRhVHJhbnNmZXJJdGVtLndlYmtpdEdldEFzRW50cnkoKSBzaG91bGQgc3luY2hyb25vdXNseSBy
ZXR1cm4gZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3Bw
CmluZGV4IDMzOTJmM2NlNmM3YjhjYzBhNjI0OWViMGU4ZmI2OTNmZjFlOGZjY2EuLmZjYjVmYzBi
MmYyZGRiZTRlYzE3ZTEwZTkzY2UwMGE0NjViMDhmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkJs
b2IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNGaWxlLmgiCkBAIC0xMTYsOCArMTE2LDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Jsb2JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBpdGVtID0gYXJyYXktPmdldEluZGV4KGkpOwog
I2lmIEVOQUJMRShCTE9CKQotICAgICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNBcnJheUJ1ZmZl
cjo6c19pbmZvKSkKLSAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9BcnJheUJ1ZmZl
cihpdGVtKSk7CisgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6
c19pbmZvKSkKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9BcnJheUJ1ZmZlclZp
ZXcoaXRlbSkpOwogICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKGl0ZW0uaW5oZXJp
dHMoJkpTQmxvYjo6c19pbmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggYzk2OWIwMzNhZTVhNGVmODRiNzQwM2E0MDVi
MjFmNTFkN2M2MDU4Ny4uNWNhODdiZmI5NzQ2ZWMwODU2NzRiZWMzYjI2YzEyOTdlYTA2MWUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAKICNpbmNsdWRlICJE
aWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QXJy
YXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCbG9iLmgiCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGl0ZW0gPSBi
bG9iUGFydHMtPkdldCh2ODo6VWludDMyOjpOZXcoaSkpOwogICAgICAgICBBU1NFUlQoIWl0ZW0u
SXNFbXB0eSgpKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgaWYgKFY4QXJyYXlCdWZmZXI6
Okhhc0luc3RhbmNlKGl0ZW0pKSB7Ci0gICAgICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGl0ZW0pKTsKLSAgICAgICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBi
bG9iQnVpbGRlci0+YXBwZW5kKGFycmF5QnVmZmVyKTsKKyAgICAgICAgaWYgKFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZShpdGVtKSkgeworICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQoYXJyYXlCdWZmZXJWaWV3
KTsKICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UoaXRlbSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0Qmxv
YkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHAKaW5kZXggZTg3YmZlNTU1NzBjNzUwOTA0MTYxNWEyNmM2ZGNhNTIxYTM2MDYwNi4uMWJiYmYz
MTRiZGVkN2ZjMDVkYzBmYzVjNGNjZGI2NzE4YWJiMGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTg2LDEzICs4
NiwxMyBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogI2lmIEVOQUJMRShCTE9CKQotdm9pZCBXZWJLaXRC
bG9iQnVpbGRlcjo6YXBwZW5kKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3ZvaWQgV2ViS2l0
QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldykKIHsK
LSAgICBpZiAoIWFycmF5QnVmZmVyKQorICAgIGlmICghYXJyYXlCdWZmZXJWaWV3KQogICAgICAg
ICByZXR1cm47CiAgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKICAgICBz
aXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYnVmZmVyLmFwcGVuZChzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFy
cmF5QnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBtX3NpemUgKz0gYnVmZmVyLnNpemUoKSAtIG9sZFNpemU7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCA3NmI5MGJl
YWI0YjY1YmVkNWRhNzhhNDg2MDM0ZmM4OWRkMzIwNTNiLi5jZDUzMWExYjg1YzU3MGU2ZDIyNDE2
MjY1YTQwZTA0NDk0NmQwYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9i
QnVpbGRlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBFeGNlcHRpb25Db2RlJik7CiAjaWYg
RU5BQkxFKEJMT0IpCi0gICAgdm9pZCBhcHBlbmQoQXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFw
cGVuZChBcnJheUJ1ZmZlclZpZXcqKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxCbG9iPiBn
ZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsCmluZGV4IGUwYzdjNWM5MmNlNmQ1
YjE2MWNlOGM1Nzg2YjNmNGJiYzM2MGE5NWYuLmJiN2QzNjhmNGUwOGRjMDIxOTM1NjQxOGYwYmZi
ODM1M2YxMjU2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0Qmxv
YkJ1aWxkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaWRsCkBAIC00MCw3ICs0MCw3IEBAIG1vZHVsZSBodG1sIHsKICNlbmRpZgogICAgICAgICB2
b2lkIGFwcGVuZChpbiBCbG9iIGJsb2IpOwogI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVO
QUJMRV9CTE9CCi0gICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVy
KTsKKyAgICAgICAgdm9pZCBhcHBlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmll
dyk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBlbmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBpbiBb
T3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0
cmluZ10gRE9NU3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM2YTZmZDlmMDNmMjczN2QxMjU3NzkyZDlmOTlkNTE0OTgwNTY2MjIuLmE2YzMwOWEx
YzY4YzU5MTY3MmU0MjIyNjZjMzBiNTdlZGRkMjc0MGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wNi0wNiAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBbRmlsZUFQ
SV0gQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZCBvZiBBcnJheUJ1
ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQXJyYXlCdWZmZXIgaW50byBBcnJheUJ1ZmZl
clZpZXcgaW4gQmxvYiBjb25zdHJjdXRpbmcgZnVuY3Rpb24uCisKKyAgICAgICAgKiBmYXN0L2Zp
bGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXMv
ZmlsZS1yZWFkZXItZmZmZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlcy9maWxl
LXJlYWRlci1mZmZkLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxv
Yi1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3Nl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJs
b2IuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qczoKKyAgICAgICAgKGNyZWF0ZUJsb2JDb250YWluaW5n
QWxsRGlzdGluY3RCeXRlcyk6CisKIDIwMTItMDUtMzEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRGF0YVRyYW5zZmVySXRlbS53ZWJr
aXRHZXRBc0VudHJ5KCkgc2hvdWxkIHN5bmNocm9ub3VzbHkgcmV0dXJuIGVudHJ5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApp
bmRleCA0NzBiNTkxNmNlNjEzZjlmMTM2ZTZhMTRiN2YyZDJiMWY5OTJjMDM5Li5iMWM2YzI4YjM0
ZTBlZDYyMThlNDgwNzU5ZTJmMDhjZmQxNzA4NWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTQzLDYgKzQzLDkg
QEAgUEFTUyAobmV3IEJsb2IoW10sIGZ1bmN0aW9uICgpIHt9KSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbXSwge3R5cGU6J3RleHQvaHRtbCd9KSkudHlw
ZSBpcyAndGV4dC9odG1sJwogUEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkp
LnNpemUgaXMgMAogUEFTUyB3aW5kb3cuQmxvYi5sZW5ndGggaXMgMgorUEFTUyBibG9iT2JqMS5z
aXplIGlzIDQwMAorUEFTUyBibG9iT2JqMi5zaXplIGlzIDcwMAorUEFTUyBibG9iT2JqMy5zaXpl
IGlzIDcwMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVj
dGVkLnR4dAppbmRleCA0NWY5N2M3MGYzYjE1YzUyNGY0YWRiMzVhMjM4ZWVmN2U1OGY1ZDE4Li5l
NGRjMmRkMGNlYmFjYzhlNTNhYzNmZmZlOTQzNzhkZWYzNDc0YjcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1leHBlY3RlZC50eHQKQEAgLTMs
NyArMyw3IEBAIFRocm93IHZhcmlvdXMgYmFkIGJ5dGVzIGF0IGZpbGUgcmVhZGVyLgogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCiBhcnJheSA9IG5ldyBVaW50OEFycmF5KFs2NSwgMjQ1LCAy
NDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDY2XSk7Ci1i
bG9iID0gbmV3IEJsb2IoW2FycmF5LmJ1ZmZlcl0pOworYmxvYiA9IG5ldyBCbG9iKFthcnJheV0p
OwogcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpOwog
UEFTUyBmaWxlU3RyaW5nIGlzICdB77+977+977+977+977+977+977+977+977+977+977+9QicK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLmh0bWwKaW5kZXggZWFj
YTI0ZWJhNjAwOGQyMjYxY2M1ZDUzZDFmZTEwYTM5ZTQzOWRmZS4uNDM4MDAxZDhkZDllMTk4MmEz
Nzg1MzkwYWIwZTg5YzBjMTBhMDk3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy9maWxlLXJlYWRlci1mZmZkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxl
LXJlYWRlci1mZmZkLmh0bWwKQEAgLTExLDcgKzExLDcgQEAKIGRlc2NyaXB0aW9uKCJUaHJvdyB2
YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4iKTsKIAogYXJyYXkgPSBldmFsQW5kTG9n
KCJhcnJheSA9IG5ldyBVaW50OEFycmF5KFs2NSwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1
MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDY2XSk7Iik7Ci1ibG9iID0gZXZhbEFuZExvZygi
YmxvYiA9IG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsiKTsKK2Jsb2IgPSBldmFsQW5kTG9nKCJi
bG9iID0gbmV3IEJsb2IoW2FycmF5XSk7Iik7CiByZWFkZXIgPSBldmFsQW5kTG9nKCJyZWFkZXIg
PSBuZXcgRmlsZVJlYWRlcigpOyIpOwogcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKGV2ZW50KSB7
CiAgIGZpbGVTdHJpbmcgPSBldmVudC50YXJnZXQucmVzdWx0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMKaW5kZXgg
MTU0YmEwZmVmMGY3N2FmNTU1ODIwMDQxZGQ2OWJiMjE5NzAzNTlkNS4uNjE5OTQ4MGE0NmY4NWUz
MzVlMWQ2YjVhNzEzMzk1NmUyZWIzMjcwNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9m
aWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcworKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCkBAIC02MywzICs2Mywx
NCBAQCBzaG91bGRCZSgiKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1sJ30pKS5zaXplIiwg
IjAiKTsKIAogLy8gT2RkcyBhbmQgZW5kcwogc2hvdWxkQmUoIndpbmRvdy5CbG9iLmxlbmd0aCIs
ICIyIik7CisKKy8vIFRlc3QgQXJyYXlCdWZmZXJWaWV3IFBhcmFtZXRlcnMKK3ZhciBpbnRBcnJh
eSA9IG5ldyBVaW50MzJBcnJheSgxMDApOwordmFyIHNob3J0QXJyYXkgPSBuZXcgVWludDE2QXJy
YXkoMTAwKTsKK3ZhciBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheSgxMDApOwordmFyIGJsb2JP
YmoxID0gbmV3IEJsb2IoW2ludEFycmF5XSk7Cit2YXIgYmxvYk9iajIgPSBuZXcgQmxvYihbaW50
QXJyYXksIHNob3J0QXJyYXksIGJ5dGVBcnJheV0pOwordmFyIGJsb2JPYmozID0gbmV3IEJsb2Io
W2Jsb2JPYmoxLCBzaG9ydEFycmF5LCBieXRlQXJyYXldKTsKK3Nob3VsZEJlKCJibG9iT2JqMS5z
aXplIiwgIjQwMCIpOyAvLyAxMDAgKiA0ID0gNDAwCitzaG91bGRCZSgiYmxvYk9iajIuc2l6ZSIs
ICI3MDAiKTsgLy8gMTAwICogNCArIDEwMCAqIDIgKyAxMDAgPSA3MDAKK3Nob3VsZEJlKCJibG9i
T2JqMy5zaXplIiwgIjcwMCIpOyAvLyA0MDAgKyAxMDAgKiAyICsgMTAwID0gODk2CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVk
QW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5o
dG1sCmluZGV4IDM5OTUwNzkzY2IyYzQ2MTEzOTViZTJkN2NhZWQyNGUzN2QyNjQ3NWYuLjk5MDlh
MGYzZmU5MDg0OGY2ZmI4OGY0YzdhMzczODU3OTE0MGRlZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXIt
Y2xvc2UtaW4tYnVzeS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sCkBAIC0y
Myw3ICsyMyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVN0cmluZ1dpdGhMZW5ndGgobGVuZ3RoKQogCiBm
dW5jdGlvbiBjcmVhdGVCbG9iV2l0aExlbmd0aChsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIG5ldyBC
bG9iKFtuZXcgQXJyYXlCdWZmZXIobGVuZ3RoKV0pOworICAgIHJldHVybiBuZXcgQmxvYihbbmV3
IFVpbnQ4QXJyYXkobGVuZ3RoKV0pOwogfQogCiB2YXIgd3MgPSBuZXcgV2ViU29ja2V0KCJ3czov
L2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2VjaG8iKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91
bnQtYWZ0ZXItY2xvc2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbAppbmRleCA0YjNkMTBmNTFm
NzRiM2M3NjNjYzZmZjNjNzUwZjBmODg4NWYwNDRjLi4zODM0MTFmMDY4ZGM3ZDJkNTY5MGYzNzAx
YzJmZDg5ODkyZDg0YzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS5odG1sCkBAIC0yMyw3ICsyMyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZVN0cmluZ1dp
dGhMZW5ndGgobGVuZ3RoKQogCiBmdW5jdGlvbiBjcmVhdGVCbG9iV2l0aExlbmd0aChsZW5ndGgp
CiB7Ci0gICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIobGVuZ3RoKV0pOworICAg
IHJldHVybiBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKV0pOwogfQogCiB2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KCJ3czovL2xvY2FsaG9zdDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L3NpbXBsZSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKaW5kZXggNjZiNDQ5MTU4NWZiZWUzYzBjYzhm
MDEwNjhiZjIxMWM1NTZiZTJhYy4uOWVkMmQzYTZjYTFiMmNkM2FhZjZiMTVjZGU5ODNiZWVlNjlj
YzZjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9zZW5kLWJsb2IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sCkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0aW9uIGNy
ZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCiAgICAgdmFyIGFycmF5ID0gbmV3
IFVpbnQ4QXJyYXkoMjU2KTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKQogICAg
ICAgICBhcnJheVtpXSA9IGk7Ci0gICAgcmV0dXJuIG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsK
KyAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5XSk7CiB9CiAKIHZhciB1cmwgPSAid3M6Ly8xMjcu
MC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qcwppbmRleCAw
ZGI1Y2JhYmExZWM0NmI0NTYwNWRmYzY3NDUwY2NjYjcwOTNkMjBkLi5mMmRjMDM2YmJlNWQyZjAy
MDkyZmRhMWRlYTAyZjdiNTk2NGFlN2IwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMv
cmVzb3VyY2VzL3NlbmQtYmxvYi5qcwpAQCAtMTMsNyArMTMsNyBAQCBmdW5jdGlvbiBjcmVhdGVC
bG9iQ29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKQogICAgIHZhciBhcnJheSA9IG5ldyBVaW50
OEFycmF5KDI1Nik7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAgICAg
YXJyYXlbaV0gPSBpOwotICAgIHJldHVybiBuZXcgQmxvYihbYXJyYXkuYnVmZmVyXSk7CisgICAg
cmV0dXJuIG5ldyBCbG9iKFthcnJheV0pOwogfQogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4x
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvY2hlY2stYmluYXJ5
LW1lc3NhZ2VzIjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145732</attachid>
            <date>2012-06-05 01:56:51 -0700</date>
            <delta_ts>2012-06-05 20:04:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120606170009.patch</filename>
            <type>text/plain</type>
            <size>14224</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVjOGRlMmRmODgwNjYy
NDUxOWQ3ZjFhMmM0YTJmMzUwMjZiYWRhOC4uODk2MzJhMWI2ZDdiNDM2MmMyNmEzNzI1NmNjMmVk
NTg2MTBhMDg5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA2LTA2ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtGaWxlQVBJXSBCbG9iIHNob3VsZCBz
dXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1
Y3RvciBQYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyb20gU3BlYzogaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvRmlsZUFQSS8j
ZGZuLUJsb2IKKyAgICAgICAgQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW5z
dGVhZCBvZiBBcnJheUJ1ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycy4KKworICAgICAg
ICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3IuaHRtbAorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQmxvYkNvbnN0
cnVjdG9yOjpjb25zdHJ1Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckNh
bGxiYWNrKToKKyAgICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQpOgorICAgICAgICAqIGZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYktpdEJsb2JCdWlsZGVyKToKKyAg
ICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbDoKKwogMjAxMi0wNS0zMSAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBE
YXRhVHJhbnNmZXJJdGVtLndlYmtpdEdldEFzRW50cnkoKSBzaG91bGQgc3luY2hyb25vdXNseSBy
ZXR1cm4gZW50cnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxv
YkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3Bw
CmluZGV4IDMzOTJmM2NlNmM3YjhjYzBhNjI0OWViMGU4ZmI2OTNmZjFlOGZjY2EuLmZjYjVmYzBi
MmYyZGRiZTRlYzE3ZTEwZTkzY2UwMGE0NjViMDhmNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIkJs
b2IuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIkpT
QXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAi
SlNEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSlNGaWxlLmgiCkBAIC0xMTYsOCArMTE2LDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU0Jsb2JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0
SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgSlNWYWx1ZSBpdGVtID0gYXJyYXktPmdldEluZGV4KGkpOwog
I2lmIEVOQUJMRShCTE9CKQotICAgICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNBcnJheUJ1ZmZl
cjo6c19pbmZvKSkKLSAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9BcnJheUJ1ZmZl
cihpdGVtKSk7CisgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmlldzo6
c19pbmZvKSkKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9BcnJheUJ1ZmZlclZp
ZXcoaXRlbSkpOwogICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKGl0ZW0uaW5oZXJp
dHMoJkpTQmxvYjo6c19pbmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggYzk2OWIwMzNhZTVhNGVmODRiNzQwM2E0MDVi
MjFmNTFkN2M2MDU4Ny4uNWNhODdiZmI5NzQ2ZWMwODU2NzRiZWMzYjI2YzEyOTdlYTA2MWUyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3Rv
bS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAKICNpbmNsdWRlICJE
aWN0aW9uYXJ5LmgiCi0jaW5jbHVkZSAiVjhBcnJheUJ1ZmZlci5oIgorI2luY2x1ZGUgIlY4QXJy
YXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5k
aW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhCbG9iLmgiCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGl0ZW0gPSBi
bG9iUGFydHMtPkdldCh2ODo6VWludDMyOjpOZXcoaSkpOwogICAgICAgICBBU1NFUlQoIWl0ZW0u
SXNFbXB0eSgpKTsKICNpZiBFTkFCTEUoQkxPQikKLSAgICAgICAgaWYgKFY4QXJyYXlCdWZmZXI6
Okhhc0luc3RhbmNlKGl0ZW0pKSB7Ci0gICAgICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGl0ZW0pKTsKLSAgICAgICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7Ci0gICAgICAgICAgICBi
bG9iQnVpbGRlci0+YXBwZW5kKGFycmF5QnVmZmVyKTsKKyAgICAgICAgaWYgKFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZShpdGVtKSkgeworICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZm
ZXJWaWV3KTsKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQoYXJyYXlCdWZmZXJWaWV3
KTsKICAgICAgICAgfSBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UoaXRlbSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0Qmxv
YkJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5j
cHAKaW5kZXggZTg3YmZlNTU1NzBjNzUwOTA0MTYxNWEyNmM2ZGNhNTIxYTM2MDYwNi4uMWJiYmYz
MTRiZGVkN2ZjMDVkYzBmYzVjNGNjZGI2NzE4YWJiMGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRl
ICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGlu
Zy5oIgotI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1
ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTg2LDEzICs4
NiwxMyBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0ZXh0
LCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogI2lmIEVOQUJMRShCTE9CKQotdm9pZCBXZWJLaXRC
bG9iQnVpbGRlcjo6YXBwZW5kKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3ZvaWQgV2ViS2l0
QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldykKIHsK
LSAgICBpZiAoIWFycmF5QnVmZmVyKQorICAgIGlmICghYXJyYXlCdWZmZXJWaWV3KQogICAgICAg
ICByZXR1cm47CiAgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKICAgICBz
aXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7Ci0gICAgYnVmZmVyLmFwcGVuZChzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRl
TGVuZ3RoKCkpOworICAgIGJ1ZmZlci5hcHBlbmQoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFy
cmF5QnVmZmVyVmlldy0+YmFzZUFkZHJlc3MoKSksIGFycmF5QnVmZmVyVmlldy0+Ynl0ZUxlbmd0
aCgpKTsKICAgICBtX3NpemUgKz0gYnVmZmVyLnNpemUoKSAtIG9sZFNpemU7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCA3NmI5MGJl
YWI0YjY1YmVkNWRhNzhhNDg2MDM0ZmM4OWRkMzIwNTNiLi5jZDUzMWExYjg1YzU3MGU2ZDIyNDE2
MjY1YTQwZTA0NDk0NmQwYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9i
QnVpbGRlci5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBFeGNlcHRpb25Db2RlJik7CiAjaWYg
RU5BQkxFKEJMT0IpCi0gICAgdm9pZCBhcHBlbmQoQXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFw
cGVuZChBcnJheUJ1ZmZlclZpZXcqKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxCbG9iPiBn
ZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsCmluZGV4IGUwYzdjNWM5MmNlNmQ1
YjE2MWNlOGM1Nzg2YjNmNGJiYzM2MGE5NWYuLmJiN2QzNjhmNGUwOGRjMDIxOTM1NjQxOGYwYmZi
ODM1M2YxMjU2M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0Qmxv
YkJ1aWxkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaWRsCkBAIC00MCw3ICs0MCw3IEBAIG1vZHVsZSBodG1sIHsKICNlbmRpZgogICAgICAgICB2
b2lkIGFwcGVuZChpbiBCbG9iIGJsb2IpOwogI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVO
QUJMRV9CTE9CCi0gICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVy
KTsKKyAgICAgICAgdm9pZCBhcHBlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmll
dyk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBlbmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBpbiBb
T3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0
cmluZ10gRE9NU3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDM2YTZmZDlmMDNmMjczN2QxMjU3NzkyZDlmOTlkNTE0OTgwNTY2MjIuLmE2YzMwOWEx
YzY4YzU5MTY3MmU0MjIyNjZjMzBiNTdlZGRkMjc0MGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wNi0wNiAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBbRmlsZUFQ
SV0gQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZCBvZiBBcnJheUJ1
ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQXJyYXlCdWZmZXIgaW50byBBcnJheUJ1ZmZl
clZpZXcgaW4gQmxvYiBjb25zdHJjdXRpbmcgZnVuY3Rpb24uCisKKyAgICAgICAgKiBmYXN0L2Zp
bGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXMv
ZmlsZS1yZWFkZXItZmZmZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlcy9maWxl
LXJlYWRlci1mZmZkLmh0bWw6CisgICAgICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxv
Yi1jb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbDoKKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3Nl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJs
b2IuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtl
cnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qczoKKyAgICAgICAgKGNyZWF0ZUJsb2JDb250YWluaW5n
QWxsRGlzdGluY3RCeXRlcyk6CisKIDIwMTItMDUtMzEgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRGF0YVRyYW5zZmVySXRlbS53ZWJr
aXRHZXRBc0VudHJ5KCkgc2hvdWxkIHN5bmNocm9ub3VzbHkgcmV0dXJuIGVudHJ5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApp
bmRleCA0NzBiNTkxNmNlNjEzZjlmMTM2ZTZhMTRiN2YyZDJiMWY5OTJjMDM5Li44ZGUyNWUzODBm
OGQzNTFjODJiZTUxYWYxZjIyNDRiZWMyODRhYjJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTQzLDYgKzQzLDE3
IEBAIFBBU1MgKG5ldyBCbG9iKFtdLCBmdW5jdGlvbiAoKSB7fSkpIGluc3RhbmNlb2Ygd2luZG93
LkJsb2IgaXMgdHJ1ZQogUEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkpLnR5
cGUgaXMgJ3RleHQvaHRtbCcKIFBBU1MgKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1sJ30p
KS5zaXplIGlzIDAKIFBBU1Mgd2luZG93LkJsb2IubGVuZ3RoIGlzIDIKK1BBU1MgbmV3IEJsb2Io
W25ldyBVaW50OEFycmF5KDEwMCldKS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IFVp
bnQ4Q2xhbXBlZEFycmF5KDEwMCldKS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IFVp
bnQxNkFycmF5KDEwMCldKS5zaXplIGlzIDIwMAorUEFTUyBuZXcgQmxvYihbbmV3IFVpbnQzMkFy
cmF5KDEwMCldKS5zaXplIGlzIDQwMAorUEFTUyBuZXcgQmxvYihbbmV3IEludDhBcnJheSgxMDAp
XSkuc2l6ZSBpcyAxMDAKK1BBU1MgbmV3IEJsb2IoW25ldyBJbnQxNkFycmF5KDEwMCldKS5zaXpl
IGlzIDIwMAorUEFTUyBuZXcgQmxvYihbbmV3IEludDMyQXJyYXkoMTAwKV0pLnNpemUgaXMgNDAw
CitQQVNTIG5ldyBCbG9iKFtuZXcgRmxvYXQzMkFycmF5KDEwMCldKS5zaXplIGlzIDQwMAorUEFT
UyBuZXcgQmxvYihbbmV3IEZsb2F0NjRBcnJheSgxMDApXSkuc2l6ZSBpcyA4MDAKK1BBU1MgbmV3
IEJsb2IoW25ldyBGbG9hdDY0QXJyYXkoMTAwKSwgbmV3IEludDMyQXJyYXkoMTAwKSwgbmV3IFVp
bnQ4QXJyYXkoMTAwKV0pLnNpemUgaXMgMTMwMAorUEFTUyBuZXcgQmxvYihbYmxvYk9iaiwgbmV3
IFVpbnQ4QXJyYXkoMTAwKSwgbmV3IEZsb2F0MzJBcnJheSgxMDApXSkuc2l6ZSBpcyA5MDAKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1leHBlY3RlZC50eHQKaW5k
ZXggNDVmOTdjNzBmM2IxNWM1MjRmNGFkYjM1YTIzOGVlZjdlNThmNWQxOC4uZTRkYzJkZDBjZWJh
Y2M4ZTUzYWMzZmZmZTk0Mzc4ZGVmMzQ3NGI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBU
aHJvdyB2YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KIAogYXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0
OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0pOwotYmxvYiA9IG5ldyBC
bG9iKFthcnJheS5idWZmZXJdKTsKK2Jsb2IgPSBuZXcgQmxvYihbYXJyYXldKTsKIHJlYWRlciA9
IG5ldyBGaWxlUmVhZGVyKCk7CiByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKIFBBU1MgZmlsZVN0
cmluZyBpcyAnQe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vUInCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sCmluZGV4IGVhY2EyNGViYTYwMDhk
MjI2MWNjNWQ1M2QxZmUxMGEzOWU0MzlkZmUuLjQzODAwMWQ4ZGQ5ZTE5ODJhMzc4NTM5MGFiMGU4
OWMwYzEwYTA5N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFk
ZXItZmZmZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZm
ZC5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBkZXNjcmlwdGlvbigiVGhyb3cgdmFyaW91cyBiYWQg
Ynl0ZXMgYXQgZmlsZSByZWFkZXIuIik7CiAKIGFycmF5ID0gZXZhbEFuZExvZygiYXJyYXkgPSBu
ZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUy
LCAyNTMsIDI1NCwgMjU1LCA2Nl0pOyIpOwotYmxvYiA9IGV2YWxBbmRMb2coImJsb2IgPSBuZXcg
QmxvYihbYXJyYXkuYnVmZmVyXSk7Iik7CitibG9iID0gZXZhbEFuZExvZygiYmxvYiA9IG5ldyBC
bG9iKFthcnJheV0pOyIpOwogcmVhZGVyID0gZXZhbEFuZExvZygicmVhZGVyID0gbmV3IEZpbGVS
ZWFkZXIoKTsiKTsKIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkgewogICBmaWxlU3Ry
aW5nID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCmluZGV4IDE1NGJhMGZlZjBm
NzdhZjU1NTgyMDA0MWRkNjliYjIxOTcwMzU5ZDUuLmViNGIyNmI3OTBmODljNWQyOTlmNDMzZTJm
OWUzOGVkMjEzZTdiZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0
LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9z
Y3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcwpAQCAtNjMsMyArNjMsMTcgQEAgc2hvdWxk
QmUoIihuZXcgQmxvYihbXSwge3R5cGU6J3RleHQvaHRtbCd9KSkuc2l6ZSIsICIwIik7CiAKIC8v
IE9kZHMgYW5kIGVuZHMKIHNob3VsZEJlKCJ3aW5kb3cuQmxvYi5sZW5ndGgiLCAiMiIpOworCisv
LyBUZXN0IEFycmF5QnVmZmVyVmlldyBQYXJhbWV0ZXJzCit2YXIgYmxvYk9iaiA9IG5ldyBCbG9i
KFtuZXcgSW50MzJBcnJheSgxMDApXSk7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50OEFy
cmF5KDEwMCldKS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgVWludDhD
bGFtcGVkQXJyYXkoMTAwKV0pLnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25l
dyBVaW50MTZBcnJheSgxMDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihb
bmV3IFVpbnQzMkFycmF5KDEwMCldKS5zaXplIiwgIjQwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9i
KFtuZXcgSW50OEFycmF5KDEwMCldKS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9i
KFtuZXcgSW50MTZBcnJheSgxMDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxv
YihbbmV3IEludDMyQXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJs
b2IoW25ldyBGbG9hdDMyQXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3
IEJsb2IoW25ldyBGbG9hdDY0QXJyYXkoMTAwKV0pLnNpemUiLCAiODAwIik7CitzaG91bGRCZSgi
bmV3IEJsb2IoW25ldyBGbG9hdDY0QXJyYXkoMTAwKSwgbmV3IEludDMyQXJyYXkoMTAwKSwgbmV3
IFVpbnQ4QXJyYXkoMTAwKV0pLnNpemUiLCAiMTMwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFti
bG9iT2JqLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcgRmxvYXQzMkFycmF5KDEwMCldKS5zaXpl
IiwgIjkwMCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFm
dGVyLWNsb3NlLWluLWJ1c3kuaHRtbAppbmRleCAzOTk1MDc5M2NiMmM0NjExMzk1YmUyZDdjYWVk
MjRlMzdkMjY0NzVmLi45OTA5YTBmM2ZlOTA4NDhmNmZiODhmNGM3YTM3Mzg1NzkxNDBkZWZjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1
ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3Nl
LWluLWJ1c3kuaHRtbApAQCAtMjMsNyArMjMsNyBAQCBmdW5jdGlvbiBjcmVhdGVTdHJpbmdXaXRo
TGVuZ3RoKGxlbmd0aCkKIAogZnVuY3Rpb24gY3JlYXRlQmxvYldpdGhMZW5ndGgobGVuZ3RoKQog
ewotICAgIHJldHVybiBuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKGxlbmd0aCldKTsKKyAgICBy
ZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGxlbmd0aCldKTsKIH0KIAogdmFyIHdzID0g
bmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9l
Y2hvIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0
bWwKaW5kZXggNGIzZDEwZjUxZjc0YjNjNzYzY2M2ZmYzYzc1MGYwZjg4ODVmMDQ0Yy4uMzgzNDEx
ZjA2OGRjN2QyZDU2OTBmMzcwMWMyZmQ4OTg5MmQ4NGM4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1j
bG9zZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbApAQCAtMjMsNyArMjMsNyBAQCBmdW5j
dGlvbiBjcmVhdGVTdHJpbmdXaXRoTGVuZ3RoKGxlbmd0aCkKIAogZnVuY3Rpb24gY3JlYXRlQmxv
YldpdGhMZW5ndGgobGVuZ3RoKQogewotICAgIHJldHVybiBuZXcgQmxvYihbbmV3IEFycmF5QnVm
ZmVyKGxlbmd0aCldKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGxlbmd0
aCldKTsKIH0KIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93
ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1wbGUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sCmluZGV4IDY2
YjQ0OTE1ODVmYmVlM2MwY2M4ZjAxMDY4YmYyMTFjNTU2YmUyYWMuLjllZDJkM2E2Y2ExYjJjZDNh
YWY2YjE1Y2RlOTgzYmVlZTY5Y2M2Y2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbApAQCAtMzMsNyAr
MzMsNyBAQCBmdW5jdGlvbiBjcmVhdGVCbG9iQ29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMoKQog
ICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KDI1Nik7CiAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAyNTY7ICsraSkKICAgICAgICAgYXJyYXlbaV0gPSBpOwotICAgIHJldHVybiBuZXcgQmxv
YihbYXJyYXkuYnVmZmVyXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFthcnJheV0pOwogfQogCiB2
YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvY2hlY2st
YmluYXJ5LW1lc3NhZ2VzIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9z
ZW5kLWJsb2IuanMKaW5kZXggMGRiNWNiYWJhMWVjNDZiNDU2MDVkZmM2NzQ1MGNjY2I3MDkzZDIw
ZC4uZjJkYzAzNmJiZTVkMmYwMjA5MmZkYTFkZWEwMmY3YjU5NjRhZTdiMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291
cmNlcy9zZW5kLWJsb2IuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKQEAgLTEzLDcgKzEzLDcg
QEAgZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkKICAgICB2
YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjU2OyArK2kpCiAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICByZXR1cm4gbmV3IEJsb2IoW2Fy
cmF5LmJ1ZmZlcl0pOworICAgIHJldHVybiBuZXcgQmxvYihbYXJyYXldKTsKIH0KIAogdmFyIHVy
bCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVz
b3VyY2VzL2NoZWNrLWJpbmFyeS1tZXNzYWdlcyI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145919</attachid>
            <date>2012-06-05 20:04:49 -0700</date>
            <delta_ts>2012-06-07 01:09:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120607110806.patch</filename>
            <type>text/plain</type>
            <size>18272</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVjOGRlMmRmODgwNjYy
NDUxOWQ3ZjFhMmM0YTJmMzUwMjZiYWRhOC4uMGRiZTg2MTA2NTIwYmJjZDNlMjUwYmU2MzRjYmM2
ZmM0OWExYThhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA2LTA2ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIFtGaWxlQVBJXSBCbG9iIHNob3VsZCBz
dXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1
Y3RvciBQYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04ODI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEZyb20gU3BlYzogaHR0cDovL2Rldi53My5vcmcvMjAwNi93ZWJhcGkvRmlsZUFQSS8j
ZGZuLUJsb2IKKyAgICAgICAgQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW5z
dGVhZCBvZiBBcnJheUJ1ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycy4KKyAgICAgICAg
Q3VycmVudGx5LCB3ZSBqdXN0IGFkZCB0aGUgc3VwcG9ydCBvZiBBcnJheUJ1ZmZlclZpZXcsIG5v
dCBkZWxldGUgQXJyYXlCdWZmZXIgYmVjYXVzZQorICAgICAgICBvZiBiYWNrd2FyZCBjb21wYXRp
YmlsaXR5LCBidXQgd2Ugd2lsbCBkbyB0aGF0IGluIG5lYXIgZnV0dXJlLgorCisgICAgICAgIFRl
c3Q6IGZhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci5odG1sCisKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNCbG9iQ29uc3RydWN0
b3I6OmNvbnN0cnVjdEpTQmxvYik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmxv
YkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJh
Y2spOgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogZmlsZWFwaS9X
ZWJLaXRCbG9iQnVpbGRlci5oOgorICAgICAgICAoV2ViS2l0QmxvYkJ1aWxkZXIpOgorICAgICAg
ICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsOgorCiAyMDEyLTA1LTMxICBLaW51a28g
WWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERhdGFU
cmFuc2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpIHNob3VsZCBzeW5jaHJvbm91c2x5IHJldHVy
biBlbnRyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKaW5k
ZXggMzM5MmYzY2U2YzdiOGNjMGE2MjQ5ZWIwZThmYjY5M2ZmMWU4ZmNjYS4uYzRlMTYxNzI0ZGJi
YjlhMjU0Yjk5ZWZiYTA1MjMyYWEzZDNhODlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgogI2luY2x1
ZGUgIkpTRmlsZS5oIgpAQCAtMTA4LDcgKzEwOSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgSlNCbG9iQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTQmxvYihFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgQVNTRVJUKGVuZGluZ3MgPT0gInRyYW5zcGFyZW50IiB8fCBlbmRpbmdzID09ICJuYXRp
dmUiKTsKIAogICAgIC8vIEZJWE1FOiB0aGlzIHdvdWxkIGJlIGJldHRlciBpZiB0aGUgV2ViS2l0
QmxvYkJ1aWxkZXIgd2VyZSBhIHN0YWNrIG9iamVjdCB0byBhdm9pZCB0aGUgYWxsb2NhdGlvbi4K
LSAgICBSZWZQdHI8V2ViS2l0QmxvYkJ1aWxkZXI+IGJsb2JCdWlsZGVyID0gV2ViS2l0QmxvYkJ1
aWxkZXI6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxXZWJLaXRCbG9iQnVpbGRlcj4gYmxvYkJ1aWxk
ZXIgPSBXZWJLaXRCbG9iQnVpbGRlcjo6Y3JlYXRlKGNvbnRleHQpOwogCiAgICAgSlNBcnJheSog
YXJyYXkgPSBhc0FycmF5KGZpcnN0QXJnKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+
bGVuZ3RoKCk7CkBAIC0xMTgsNiArMTE5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU0Jsb2JDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSogZXhlYykKICNp
ZiBFTkFCTEUoQkxPQikKICAgICAgICAgaWYgKGl0ZW0uaW5oZXJpdHMoJkpTQXJyYXlCdWZmZXI6
OnNfaW5mbykpCiAgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKHRvQXJyYXlCdWZmZXIo
aXRlbSkpOworICAgICAgICBlbHNlIGlmIChpdGVtLmluaGVyaXRzKCZKU0FycmF5QnVmZmVyVmll
dzo6c19pbmZvKSkKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQodG9BcnJheUJ1ZmZl
clZpZXcoaXRlbSkpOwogICAgICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKGl0ZW0uaW5o
ZXJpdHMoJkpTQmxvYjo6c19pbmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAKaW5kZXggYzk2OWIwMzNhZTVhNGVmODRiNzQwM2E0
MDViMjFmNTFkN2M2MDU4Ny4uNjFkNzVlMDQzMDNhMmNmMWY4ZDIzNjM0ZWJjZDU4MTVkYzYwNGZk
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1
c3RvbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuaCIKICNp
bmNsdWRlICJWOEFycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNp
bmNsdWRlICJWOEJsb2IuaCIKQEAgLTEwNiw3ICsxMDcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAKICAgICBBU1NFUlQoZW5kaW5ncyA9PSAidHJhbnNwYXJlbnQiIHx8IGVuZGluZ3MgPT0gIm5h
dGl2ZSIpOwogCi0gICAgUmVmUHRyPFdlYktpdEJsb2JCdWlsZGVyPiBibG9iQnVpbGRlciA9IFdl
YktpdEJsb2JCdWlsZGVyOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8V2ViS2l0QmxvYkJ1aWxkZXI+
IGJsb2JCdWlsZGVyID0gV2ViS2l0QmxvYkJ1aWxkZXI6OmNyZWF0ZShjb250ZXh0KTsKIAogICAg
IEVYQ0VQVElPTl9CTE9DSyh2ODo6TG9jYWw8djg6OkFycmF5PiwgYmxvYlBhcnRzLCB2ODo6TG9j
YWw8djg6OkFycmF5Pjo6Q2FzdChmaXJzdEFyZykpOwogICAgIHVpbnQzMl90IGxlbmd0aCA9IGJs
b2JQYXJ0cy0+TGVuZ3RoKCk7CkBAIC0xMTksNiArMTIwLDEwIEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKICAgICAgICAgICAgIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlciA9IFY4QXJyYXlCdWZmZXI6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoaXRlbSkpOwogICAgICAgICAg
ICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKICAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQo
YXJyYXlCdWZmZXIpOworICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJ
bnN0YW5jZShpdGVtKSkgeworICAgICAgICAgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZl
clZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChpdGVtKSk7CisgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKKyAg
ICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQoYXJyYXlCdWZmZXJWaWV3KTsKICAgICAgICAg
fSBlbHNlCiAjZW5kaWYKICAgICAgICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFuY2UoaXRlbSkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKaW5kZXggZTg3
YmZlNTU1NzBjNzUwOTA0MTYxNWEyNmM2ZGNhNTIxYTM2MDYwNi4uYTNkOTFlMzk3MGMyMmU1ODQ3
ZjlkNzk2ODk0MDYyYzFkYzYyMDk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJL
aXRCbG9iQnVpbGRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJMaW5lRW5kaW5n
LmgiCiAjaW5jbHVkZSAiVGV4dEVuY29kaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVy
Lmg+CisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21pY1N0cmluZy5oPgpAQCAtNDUsOSArNDYsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XZWJLaXRCbG9iQnVpbGRlcjo6V2ViS2l0QmxvYkJ1aWxkZXIoKQorV2ViS2l0QmxvYkJ1aWxk
ZXI6OldlYktpdEJsb2JCdWlsZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAg
ICAgOiBtX3NpemUoMCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogeworICAgIEFTU0VSVCht
X2NvbnRleHQpOwogfQogCiBWZWN0b3I8Y2hhcj4mIFdlYktpdEJsb2JCdWlsZGVyOjpnZXRCdWZm
ZXIoKQpAQCAtODgsNiArOTEsOCBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICNpZiBFTkFCTEUoQkxPQikKIHZv
aWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCiB7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdlLCAoIkFycmF5
QnVmZmVyIHZhbHVlcyBhcmUgZGVwcmVjYXRlZCBpbiBCbG9iIENvbnN0cnVjdG9yLiBVc2UgQXJy
YXlCdWZmZXJWaWV3IGluc3RlYWQuIikpOworICAgIG1fY29udGV4dC0+YWRkQ29uc29sZU1lc3Nh
Z2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwg
Y29uc29sZU1lc3NhZ2UpOwogICAgIGlmICghYXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybjsK
ICAgICBWZWN0b3I8Y2hhcj4mIGJ1ZmZlciA9IGdldEJ1ZmZlcigpOwpAQCAtOTUsNiArMTAwLDE2
IEBAIHZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIpCiAgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2l6ZSArPSBi
dWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKIH0KKwordm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBw
ZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQoreworICAgIGlmICghYXJyYXlC
dWZmZXJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBn
ZXRCdWZmZXIoKTsKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CisgICAgYnVm
ZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJWaWV3LT5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIG1fc2l6ZSAr
PSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKK30KICNlbmRpZgogCiB2b2lkIFdlYktpdEJsb2JC
dWlsZGVyOjphcHBlbmQoQmxvYiogYmxvYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0
QmxvYkJ1aWxkZXIuaAppbmRleCA3NmI5MGJlYWI0YjY1YmVkNWRhNzhhNDg2MDM0ZmM4OWRkMzIw
NTNiLi4zMmQxMWZkODM2OTgxZjQxYjc0ZDYxMTI5NmIwMDk2MGQyZWE2YjdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCkBAIC0zMiwzNiArMzIsNDMgQEAK
ICNkZWZpbmUgV2ViS2l0QmxvYkJ1aWxkZXJfaAogCiAjaW5jbHVkZSAiQmxvYkRhdGEuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEJsb2I7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dEVu
Y29kaW5nOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCiBjbGFzcyBXZWJLaXRCbG9i
QnVpbGRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYktpdEJsb2JCdWlsZGVyPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0QmxvYkJ1aWxkZXI+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRCbG9iQnVpbGRlcigpKTsgfQotCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViS2l0QmxvYkJ1aWxkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRCbG9i
QnVpbGRlcihjb250ZXh0KSk7CisgICAgfQorICAgIAogICAgIHZvaWQgYXBwZW5kKEJsb2IqKTsK
ICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBF
eGNlcHRpb25Db2RlJik7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgdm9pZCBhcHBlbmQoQXJyYXlC
dWZmZXIqKTsKKyAgICB2b2lkIGFwcGVuZChBcnJheUJ1ZmZlclZpZXcqKTsKICNlbmRpZgogCiAg
ICAgUGFzc1JlZlB0cjxCbG9iPiBnZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBT
dHJpbmcoKSk7CiAKIHByaXZhdGU6Ci0gICAgV2ViS2l0QmxvYkJ1aWxkZXIoKTsKKyAgICBXZWJL
aXRCbG9iQnVpbGRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBWZWN0b3I8Y2hh
cj4mIGdldEJ1ZmZlcigpOwogCiAgICAgbG9uZyBsb25nIG1fc2l6ZTsKICAgICBCbG9iRGF0YUl0
ZW1MaXN0IG1faXRlbXM7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmlkbAppbmRleCBlMGM3YzVjOTJjZTZkNWIxNjFjZThjNTc4NmIzZjRi
YmMzNjBhOTVmLi5iYWIxYjk4ZTQ5NzMxMGNmNzE5YTBlYjllYzE1ZjQ2MjVmNzg3ODQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbApAQCAtMzIsNiAr
MzIsNyBAQCBtb2R1bGUgaHRtbCB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9u
YWw9TEVHQUNZX1dFQktJVF9CTE9CX0JVSUxERVIsCiAgICAgICAgIENvbnN0cnVjdG9yLAorICAg
ICAgICBDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgICAgICBKU0dlbmVyYXRl
VG9OYXRpdmVPYmplY3QsCiAgICAgICAgIEpTTm9TdGF0aWNUYWJsZXMKICAgICBdIFdlYktpdEJs
b2JCdWlsZGVyIHsKQEAgLTQxLDYgKzQyLDcgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICB2b2lk
IGFwcGVuZChpbiBCbG9iIGJsb2IpOwogI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVOQUJM
RV9CTE9CCiAgICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVyKTsK
KyAgICAgICAgdm9pZCBhcHBlbmQoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmlldyk7
CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBlbmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBpbiBbT3B0
aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmlu
Z10gRE9NU3RyaW5nIGVuZGluZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDM2YTZmZDlmMDNmMjczN2QxMjU3NzkyZDlmOTlkNTE0OTgwNTY2MjIuLmIyYmMwMGIzZTg4
YmE3MTNmYWIzYzE4NWVmYjIzODQ4M2ZhYzE1NzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
Mi0wNi0wNiAgTGkgWWluICA8bGkueWluQGludGVsLmNvbT4KKworICAgICAgICBGaWxlQVBJOiBC
bG9iIHNob3VsZCBzdXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkIG9mIEFycmF5QnVmZmVy
IGZvciBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04ODI5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN1cHBvcnQgQXJyYXlCdWZmZXJWaWV3IGluIEJsb2IgY29uc3Ry
dWN0aW5nIGZ1bmN0aW9uLgorCisgICAgICAgICogZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sOgor
ICAgICAgICAqIGZhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanM6Cisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS1pbi1idXN5Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJs
b2IuanM6CisgICAgICAgIChjcmVhdGVCbG9iQ29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMpOgor
CiAyMDEyLTA1LTMxICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIERhdGFUcmFuc2Zlckl0ZW0ud2Via2l0R2V0QXNFbnRyeSgpIHNob3Vs
ZCBzeW5jaHJvbm91c2x5IHJldHVybiBlbnRyeQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggNDcwYjU5MTZjZTYxM2Y5
ZjEzNmU2YTE0YjdmMmQyYjFmOTkyYzAzOS4uMjQ3YzZiZmRlMjE1NDdiNTcyNDdkODhkOWY1Yzll
YmI3ZTYwMDQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29u
c3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsxMyw2IEBAIFBBU1MgKG5ldyBCbG9iKFsn
aGVsbG8nXSwge3R5cGU6J3RleHQvaHRtbCcsIGVuZGluZ3M6J3RyYW5zcGFyZW50J30pKSBpbnN0
YW5jZW9mCiBQQVNTIG5ldyBCbG9iKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBBcnJheS4K
IFBBU1MgbmV3IEJsb2IoMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRmlyc3QgYXJndW1l
bnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5LgogUEFTUyAobmV3IEJs
b2IoW10pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKLVBBU1MgKG5ldyBCbG9iKFtu
ZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNT
IChuZXcgQmxvYihbJ3N0cmluZ1ByaW1pdGl2ZSddKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBp
cyB0cnVlCiBQQVNTIChuZXcgQmxvYihbU3RyaW5nKCdzdHJpbmdPYmplY3QnKV0pKSBpbnN0YW5j
ZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFtuZXcgQmxvYl0pKSBpbnN0
YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKQEAgLTQzLDYgKzQyLDE4IEBAIFBBU1MgKG5ldyBC
bG9iKFtdLCBmdW5jdGlvbiAoKSB7fSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQog
UEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkpLnR5cGUgaXMgJ3RleHQvaHRt
bCcKIFBBU1MgKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1sJ30pKS5zaXplIGlzIDAKIFBB
U1Mgd2luZG93LkJsb2IubGVuZ3RoIGlzIDIKK1BBU1MgbmV3IEJsb2IoW25ldyBEYXRhVmlldyhu
ZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IFVp
bnQ4QXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWludDhDbGFt
cGVkQXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWludDE2QXJy
YXkoMTAwKV0pLnNpemUgaXMgMjAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWludDMyQXJyYXkoMTAw
KV0pLnNpemUgaXMgNDAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50OEFycmF5KDEwMCldKS5zaXpl
IGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IEludDE2QXJyYXkoMTAwKV0pLnNpemUgaXMgMjAw
CitQQVNTIG5ldyBCbG9iKFtuZXcgSW50MzJBcnJheSgxMDApXSkuc2l6ZSBpcyA0MDAKK1BBU1Mg
bmV3IEJsb2IoW25ldyBGbG9hdDMyQXJyYXkoMTAwKV0pLnNpemUgaXMgNDAwCitQQVNTIG5ldyBC
bG9iKFtuZXcgRmxvYXQ2NEFycmF5KDEwMCldKS5zaXplIGlzIDgwMAorUEFTUyBuZXcgQmxvYihb
bmV3IEZsb2F0NjRBcnJheSgxMDApLCBuZXcgSW50MzJBcnJheSgxMDApLCBuZXcgVWludDhBcnJh
eSgxMDApLCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkpXSkuc2l6ZSBpcyAxNDAw
CitQQVNTIG5ldyBCbG9iKFtibG9iT2JqLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcgRmxvYXQz
MkFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXplIGlz
IDEwMDAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1leHBlY3Rl
ZC50eHQKaW5kZXggNDVmOTdjNzBmM2IxNWM1MjRmNGFkYjM1YTIzOGVlZjdlNThmNWQxOC4uZTRk
YzJkZDBjZWJhY2M4ZTUzYWMzZmZmZTk0Mzc4ZGVmMzQ3NGI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0CkBAIC0zLDcg
KzMsNyBAQCBUaHJvdyB2YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4KIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KIAogYXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2
LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0pOwotYmxv
YiA9IG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsKK2Jsb2IgPSBuZXcgQmxvYihbYXJyYXldKTsK
IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKIFBB
U1MgZmlsZVN0cmluZyBpcyAnQe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vUInCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sCmluZGV4IGVhY2Ey
NGViYTYwMDhkMjI2MWNjNWQ1M2QxZmUxMGEzOWU0MzlkZmUuLjQzODAwMWQ4ZGQ5ZTE5ODJhMzc4
NTM5MGFiMGU4OWMwYzEwYTA5N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
ZmlsZS1yZWFkZXItZmZmZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1y
ZWFkZXItZmZmZC5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBkZXNjcmlwdGlvbigiVGhyb3cgdmFy
aW91cyBiYWQgYnl0ZXMgYXQgZmlsZSByZWFkZXIuIik7CiAKIGFycmF5ID0gZXZhbEFuZExvZygi
YXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAs
IDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0pOyIpOwotYmxvYiA9IGV2YWxBbmRMb2coImJs
b2IgPSBuZXcgQmxvYihbYXJyYXkuYnVmZmVyXSk7Iik7CitibG9iID0gZXZhbEFuZExvZygiYmxv
YiA9IG5ldyBCbG9iKFthcnJheV0pOyIpOwogcmVhZGVyID0gZXZhbEFuZExvZygicmVhZGVyID0g
bmV3IEZpbGVSZWFkZXIoKTsiKTsKIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkgewog
ICBmaWxlU3RyaW5nID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCmluZGV4IDE1
NGJhMGZlZjBmNzdhZjU1NTgyMDA0MWRkNjliYjIxOTcwMzU5ZDUuLmY0MDk3ZjRmZmU1YWRiN2Jk
NmU3N2E3Mzk5NDYxNDU4MzY4NTkzMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcwpAQCAtMTUsNyArMTUsNiBA
QCBzaG91bGRUaHJvdygibmV3IEJsb2IoMCkiLCAiJ1R5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQg
b2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdAogCiAvLyBUZXN0IHZhbGlkIGJsb2IgcGFydHMuCiBz
aG91bGRCZVRydWUoIihuZXcgQmxvYihbXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKLXNo
b3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFuY2VvZiB3
aW5kb3cuQmxvYiIpOwogc2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoWydzdHJpbmdQcmltaXRpdmUn
XSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtT
dHJpbmcoJ3N0cmluZ09iamVjdCcpXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKIHNob3Vs
ZEJlVHJ1ZSgiKG5ldyBCbG9iKFtuZXcgQmxvYl0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7
CkBAIC02MywzICs2MiwxOCBAQCBzaG91bGRCZSgiKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9o
dG1sJ30pKS5zaXplIiwgIjAiKTsKIAogLy8gT2RkcyBhbmQgZW5kcwogc2hvdWxkQmUoIndpbmRv
dy5CbG9iLmxlbmd0aCIsICIyIik7CisKKy8vIFRlc3QgQXJyYXlCdWZmZXJWaWV3IFBhcmFtZXRl
cnMKK3ZhciBibG9iT2JqID0gbmV3IEJsb2IoW25ldyBJbnQzMkFycmF5KDEwMCldKTsKK3Nob3Vs
ZEJlKCJuZXcgQmxvYihbbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUi
LCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50OEFycmF5KDEwMCldKS5zaXpl
IiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgVWludDhDbGFtcGVkQXJyYXkoMTAw
KV0pLnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50MTZBcnJheSgx
MDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IFVpbnQzMkFycmF5
KDEwMCldKS5zaXplIiwgIjQwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50OEFycmF5
KDEwMCldKS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50MTZBcnJh
eSgxMDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IEludDMyQXJy
YXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBGbG9hdDMy
QXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBGbG9h
dDY0QXJyYXkoMTAwKV0pLnNpemUiLCAiODAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBG
bG9hdDY0QXJyYXkoMTAwKSwgbmV3IEludDMyQXJyYXkoMTAwKSwgbmV3IFVpbnQ4QXJyYXkoMTAw
KSwgbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUiLCAiMTQwMCIpOwor
c2hvdWxkQmUoIm5ldyBCbG9iKFtibG9iT2JqLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcgRmxv
YXQzMkFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXpl
IiwgIjEwMDAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKaW5kZXggMzk5NTA3OTNjYjJjNDYxMTM5NWJlMmQ3Y2Fl
ZDI0ZTM3ZDI2NDc1Zi4uOTkwOWEwZjNmZTkwODQ4ZjZmYjg4ZjRjN2EzNzM4NTc5MTQwZGVmYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9i
dWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9z
ZS1pbi1idXN5Lmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAgZnVuY3Rpb24gY3JlYXRlU3RyaW5nV2l0
aExlbmd0aChsZW5ndGgpCiAKIGZ1bmN0aW9uIGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKGxlbmd0aCkK
IHsKLSAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcihsZW5ndGgpXSk7CisgICAg
cmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShsZW5ndGgpXSk7CiB9CiAKIHZhciB3cyA9
IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
ZWNobyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5o
dG1sCmluZGV4IDRiM2QxMGY1MWY3NGIzYzc2M2NjNmZmM2M3NTBmMGY4ODg1ZjA0NGMuLjM4MzQx
MWYwNjhkYzdkMmQ1NjkwZjM3MDFjMmZkODk4OTJkODRjODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXIt
Y2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAgZnVu
Y3Rpb24gY3JlYXRlU3RyaW5nV2l0aExlbmd0aChsZW5ndGgpCiAKIGZ1bmN0aW9uIGNyZWF0ZUJs
b2JXaXRoTGVuZ3RoKGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBBcnJheUJ1
ZmZlcihsZW5ndGgpXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShsZW5n
dGgpXSk7CiB9CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAv
d2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbAppbmRleCA2
NmI0NDkxNTg1ZmJlZTNjMGNjOGYwMTA2OGJmMjExYzU1NmJlMmFjLi45ZWQyZDNhNmNhMWIyY2Qz
YWFmNmIxNWNkZTk4M2JlZWU2OWNjNmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKQEAgLTMzLDcg
KzMzLDcgQEAgZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKCkK
ICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwogICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICByZXR1cm4gbmV3IEJs
b2IoW2FycmF5LmJ1ZmZlcl0pOworICAgIHJldHVybiBuZXcgQmxvYihbYXJyYXldKTsKIH0KIAog
dmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2NoZWNr
LWJpbmFyeS1tZXNzYWdlcyI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qcyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMv
c2VuZC1ibG9iLmpzCmluZGV4IDBkYjVjYmFiYTFlYzQ2YjQ1NjA1ZGZjNjc0NTBjY2NiNzA5M2Qy
MGQuLmYyZGMwMzZiYmU1ZDJmMDIwOTJmZGExZGVhMDJmN2I1OTY0YWU3YjAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvc2VuZC1ibG9iLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzCkBAIC0xMyw3ICsxMyw3
IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygpCiAgICAg
dmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDI1NjsgKytpKQogICAgICAgICBhcnJheVtpXSA9IGk7Ci0gICAgcmV0dXJuIG5ldyBCbG9iKFth
cnJheS5idWZmZXJdKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5XSk7CiB9CiAKIHZhciB1
cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jl
c291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146226</attachid>
            <date>2012-06-07 01:10:19 -0700</date>
            <delta_ts>2012-06-07 06:30:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120608161337.patch</filename>
            <type>text/plain</type>
            <size>16690</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQyYzYyODM3NTk0NWM1
ZTQ3ZmMxMjI0MjM2OWE1NDA3MDg2MTgwZi4uYzVmNGNmZGM0ZTlhM2E2ODIxNjczNmU0Mjg1Y2U2
NWYyOTNlNzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTA4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEZpbGVBUEk6IEJsb2Igc2hvdWxkIHN1
cHBvcnQgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQgb2YgQXJyYXlCdWZmZXIgZm9yIENvbnN0cnVj
dG9yIFBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnJvbSBTcGVjOiBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9GaWxlQVBJLyNk
Zm4tQmxvYgorICAgICAgICBCbG9iIHNob3VsZCBzdXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0
ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJzLgorICAgICAgICBD
dXJyZW50bHksIHdlIGp1c3QgYWRkIHRoZSBzdXBwb3J0IG9mIEFycmF5QnVmZmVyVmlldywgbm90
IGRlbGV0ZSBBcnJheUJ1ZmZlciBiZWNhdXNlCisgICAgICAgIG9mIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHksIGJ1dCB3ZSB3aWxsIGRvIHRoYXQgaW4gbmVhciBmdXR1cmUuCisKKyAgICAgICAgVGVz
dDogZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Jsb2JDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCbG9i
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFj
ayk6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0QmxvYkJ1aWxkZXIpOgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0
QmxvYkJ1aWxkZXIuaWRsOiBDaGFuZ2UgaXQgdG8gc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW4g
YXBwZW5kIG1ldGhvZAorCiAyMDEyLTA2LTA2ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZpeCBib3JkZXItaW1hZ2Utc2xpY2UgZmFpbHVy
ZXMgb24gaHR0cDovL2NzczN0ZXN0LmNvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Jsb2JDdXN0b20uY3BwCmluZGV4IDMzOTJmM2NlNmM3YjhjYzBhNjI0OWViMGU4ZmI2OTNmZjFl
OGZjY2EuLmI1NzdiMWI0MGYxOGI0M2E0Yzg1MGI1OTZlYTdiMzM4MzgzNzQwMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0Rp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0ZpbGUuaCIKQEAgLTExNyw3ICsxMTgsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQmxvYkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Js
b2IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBhcnJheS0+Z2V0SW5k
ZXgoaSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKCZKU0Fy
cmF5QnVmZmVyOjpzX2luZm8pKQotICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZCh0b0Fy
cmF5QnVmZmVyKGl0ZW0pKTsKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQoY29udGV4
dCwgdG9BcnJheUJ1ZmZlcihpdGVtKSk7CisgICAgICAgIGVsc2UgaWYgKGl0ZW0uaW5oZXJpdHMo
JkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKQorICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFw
cGVuZCh0b0FycmF5QnVmZmVyVmlldyhpdGVtKSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgogICAg
ICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCAxNzU2NmM4
MWI5MTk5YjU0YTgwNWY5Y2U5YmJjNzYxN2JmNTk3YWVmLi4xYTU0YTczYTg2Y2FmZDZjNjg3NTNh
MmQ4Yzg4NmMxN2JmYTQyYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAi
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJWOEFy
cmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgpAQCAtMTE4LDcgKzExOSwxMSBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5j
ZShpdGVtKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJh
eUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYmxvYkJ1aWxkZXIt
PmFwcGVuZChhcnJheUJ1ZmZlcik7CisgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKGNv
bnRleHQsIGFycmF5QnVmZmVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmll
dzo6SGFzSW5zdGFuY2UoaXRlbSkpIHsKKyAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJy
YXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoaXRlbSkpOworICAgICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmll
dyk7CisgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKGFycmF5QnVmZmVyVmlldyk7CiAg
ICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGl0
ZW0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmlu
ZGV4IGU4N2JmZTU1NTcwYzc1MDkwNDE2MTVhMjZjNmRjYTUyMWEzNjA2MDYuLmRmOWM1OGU4OTM4
MDBhNmE5M2EwYzZmNmJlYzkzNTYwM2M2MWIxZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiTGlu
ZUVuZGluZy5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9BcnJh
eUJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTg2LDggKzg3LDEwIEBAIHZvaWQgV2ViS2l0QmxvYkJ1
aWxkZXI6OmFwcGVuZChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogfQog
CiAjaWYgRU5BQkxFKEJMT0IpCi12b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoQXJyYXlC
dWZmZXIqIGFycmF5QnVmZmVyKQordm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKIHsK
KyAgICBTdHJpbmcgY29uc29sZU1lc3NhZ2UoIkFycmF5QnVmZmVyIHZhbHVlcyBhcmUgZGVwcmVj
YXRlZCBpbiBCbG9iIENvbnN0cnVjdG9yLiBVc2UgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQuIik7
CisgICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgY29uc29sZU1lc3NhZ2UpOwogICAgIGlmICgh
YXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICBWZWN0b3I8Y2hhcj4mIGJ1ZmZlciA9
IGdldEJ1ZmZlcigpOwpAQCAtOTUsNiArOTgsMTYgQEAgdm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6
YXBwZW5kKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKICAgICBidWZmZXIuYXBwZW5kKHN0YXRp
Y19jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSwgYXJyYXlCdWZmZXItPmJ5
dGVMZW5ndGgoKSk7CiAgICAgbV9zaXplICs9IGJ1ZmZlci5zaXplKCkgLSBvbGRTaXplOwogfQor
Cit2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1
ZmZlclZpZXcpCit7CisgICAgaWYgKCFhcnJheUJ1ZmZlclZpZXcpCisgICAgICAgIHJldHVybjsK
KyAgICBWZWN0b3I8Y2hhcj4mIGJ1ZmZlciA9IGdldEJ1ZmZlcigpOworICAgIHNpemVfdCBvbGRT
aXplID0gYnVmZmVyLnNpemUoKTsKKyAgICBidWZmZXIuYXBwZW5kKHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihhcnJheUJ1ZmZlclZpZXctPmJhc2VBZGRyZXNzKCkpLCBhcnJheUJ1ZmZlclZpZXct
PmJ5dGVMZW5ndGgoKSk7CisgICAgbV9zaXplICs9IGJ1ZmZlci5zaXplKCkgLSBvbGRTaXplOwor
fQogI2VuZGlmCiAKIHZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChCbG9iKiBibG9iKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oIGIv
U291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCmluZGV4IDc2YjkwYmVh
YjRiNjViZWQ1ZGE3OGE0ODYwMzRmYzg5ZGQzMjA1M2IuLmQ1OWRkZTNkYjliOTkyMTZkNjkyYThj
ZjZjYzE5OTU2YjMyZmQxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2Vi
S2l0QmxvYkJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmgKQEAgLTMyLDEyICszMiwxNCBAQAogI2RlZmluZSBXZWJLaXRCbG9iQnVpbGRlcl9o
CiAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQmxvYjsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIHR5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CkBAIC01MCw3ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25z
dCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgZW5kaW5nLCBFeGNlcHRpb25Db2RlJik7CiAjaWYg
RU5BQkxFKEJMT0IpCi0gICAgdm9pZCBhcHBlbmQoQXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFw
cGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQXJyYXlCdWZmZXIqKTsKKyAgICB2b2lkIGFw
cGVuZChBcnJheUJ1ZmZlclZpZXcqKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxCbG9iPiBn
ZXRCbG9iKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUgPSBTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaWRsCmluZGV4IGUwYzdjNWM5MmNlNmQ1
YjE2MWNlOGM1Nzg2YjNmNGJiYzM2MGE5NWYuLjVhNzZhOTUxNGFhOGI5ZmZlZDU5MGVmYzhmZjI5
NmQ4OWQwYzQzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0Qmxv
YkJ1aWxkZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxk
ZXIuaWRsCkBAIC00MCw3ICs0MCw4IEBAIG1vZHVsZSBodG1sIHsKICNlbmRpZgogICAgICAgICB2
b2lkIGFwcGVuZChpbiBCbG9iIGJsb2IpOwogI2lmIGRlZmluZWQoRU5BQkxFX0JMT0IpICYmIEVO
QUJMRV9CTE9CCi0gICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVy
KTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIHZvaWQgYXBwZW5k
KGluIEFycmF5QnVmZmVyIGFycmF5QnVmZmVyKTsKKyAgICAgICAgdm9pZCBhcHBlbmQoaW4gQXJy
YXlCdWZmZXJWaWV3IGFycmF5QnVmZmVyVmlldyk7CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBl
bmQoaW4gRE9NU3RyaW5nIHZhbHVlLCBpbiBbT3B0aW9uYWwsIFRyZWF0TnVsbEFzPU51bGxTdHJp
bmcsIFRyZWF0VW5kZWZpbmVkQXM9TnVsbFN0cmluZ10gRE9NU3RyaW5nIGVuZGluZ3MpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJmNDM2YjA0ODkwNGI2MzI3NGEyNWZk
OWE3ZGJkZTk5YjJlM2RlZGIuLjI4NDY5YTBkYjBhYzRiODA1NGE0NmExYjJiNWEzNzMxNzM4NGFh
ODMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMi0wNi0wOCAgTGkgWWluICA8bGkueWluQGlu
dGVsLmNvbT4KKworICAgICAgICBGaWxlQVBJOiBCbG9iIHNob3VsZCBzdXBwb3J0IEFycmF5QnVm
ZmVyVmlldyBpbnN0ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODI5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1cHBvcnQg
QXJyYXlCdWZmZXJWaWV3IGluIEJsb2IgY29uc3RydWN0aW5nIGZ1bmN0aW9uLgorCisgICAgICAg
ICogZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3Qv
ZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sOgorICAgICAgICAqIGZhc3QvZmlsZXMvc2NyaXB0
LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanM6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1h
ZnRlci1jbG9zZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
Ymkvc2VuZC1ibG9iLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanM6CisgICAgICAgIChjcmVhdGVCbG9i
Q29udGFpbmluZ0FsbERpc3RpbmN0Qnl0ZXMpOgorCiAyMDEyLTA2LTA2ICBOb2VsIEdvcmRvbiAg
PG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZXN0IGZvciBQTkcgQ09M
T1JfVFlQRV9QQUxFVFRFIGltYWdlIHdpdGggYSBjb2xvciBwcm9maWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCA0
NzBiNTkxNmNlNjEzZjlmMTM2ZTZhMTRiN2YyZDJiMWY5OTJjMDM5Li4yNDdjNmJmZGUyMTU0N2I1
NzI0N2Q4OGQ5ZjVjOWViYjdlNjAwNDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTEzLDcgKzEzLDYgQEAgUEFT
UyAobmV3IEJsb2IoWydoZWxsbyddLCB7dHlwZTondGV4dC9odG1sJywgZW5kaW5nczondHJhbnNw
YXJlbnQnfSkpIGluc3RhbmNlb2YKIFBBU1MgbmV3IEJsb2IoJ2hlbGxvJykgdGhyZXcgZXhjZXB0
aW9uIFR5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBv
ZiB0eXBlIEFycmF5LgogUEFTUyBuZXcgQmxvYigwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9y
OiBGaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgQXJyYXku
CiBQQVNTIChuZXcgQmxvYihbXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQotUEFT
UyAobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcig4KV0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9i
IGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFsnc3RyaW5nUHJpbWl0aXZlJ10pKSBpbnN0YW5jZW9m
IHdpbmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFtTdHJpbmcoJ3N0cmluZ09iamVj
dCcpXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQogUEFTUyAobmV3IEJsb2IoW25l
dyBCbG9iXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMgdHJ1ZQpAQCAtNDMsNiArNDIsMTgg
QEAgUEFTUyAobmV3IEJsb2IoW10sIGZ1bmN0aW9uICgpIHt9KSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbXSwge3R5cGU6J3RleHQvaHRtbCd9KSkudHlw
ZSBpcyAndGV4dC9odG1sJwogUEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkp
LnNpemUgaXMgMAogUEFTUyB3aW5kb3cuQmxvYi5sZW5ndGggaXMgMgorUEFTUyBuZXcgQmxvYihb
bmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUgaXMgMTAwCitQQVNTIG5l
dyBCbG9iKFtuZXcgVWludDhBcnJheSgxMDApXSkuc2l6ZSBpcyAxMDAKK1BBU1MgbmV3IEJsb2Io
W25ldyBVaW50OENsYW1wZWRBcnJheSgxMDApXSkuc2l6ZSBpcyAxMDAKK1BBU1MgbmV3IEJsb2Io
W25ldyBVaW50MTZBcnJheSgxMDApXSkuc2l6ZSBpcyAyMDAKK1BBU1MgbmV3IEJsb2IoW25ldyBV
aW50MzJBcnJheSgxMDApXSkuc2l6ZSBpcyA0MDAKK1BBU1MgbmV3IEJsb2IoW25ldyBJbnQ4QXJy
YXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50MTZBcnJheSgxMDAp
XSkuc2l6ZSBpcyAyMDAKK1BBU1MgbmV3IEJsb2IoW25ldyBJbnQzMkFycmF5KDEwMCldKS5zaXpl
IGlzIDQwMAorUEFTUyBuZXcgQmxvYihbbmV3IEZsb2F0MzJBcnJheSgxMDApXSkuc2l6ZSBpcyA0
MDAKK1BBU1MgbmV3IEJsb2IoW25ldyBGbG9hdDY0QXJyYXkoMTAwKV0pLnNpemUgaXMgODAwCitQ
QVNTIG5ldyBCbG9iKFtuZXcgRmxvYXQ2NEFycmF5KDEwMCksIG5ldyBJbnQzMkFycmF5KDEwMCks
IG5ldyBVaW50OEFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSld
KS5zaXplIGlzIDE0MDAKK1BBU1MgbmV3IEJsb2IoW2Jsb2JPYmosIG5ldyBVaW50OEFycmF5KDEw
MCksIG5ldyBGbG9hdDMyQXJyYXkoMTAwKSwgbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigx
MDApKV0pLnNpemUgaXMgMTAwMAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBU
RVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVh
ZGVyLWZmZmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRl
ci1mZmZkLWV4cGVjdGVkLnR4dAppbmRleCA0NWY5N2M3MGYzYjE1YzUyNGY0YWRiMzVhMjM4ZWVm
N2U1OGY1ZDE4Li5lNGRjMmRkMGNlYmFjYzhlNTNhYzNmZmZlOTQzNzhkZWYzNDc0YjcxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1leHBlY3Rl
ZC50eHQKQEAgLTMsNyArMyw3IEBAIFRocm93IHZhcmlvdXMgYmFkIGJ5dGVzIGF0IGZpbGUgcmVh
ZGVyLgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiBhcnJheSA9IG5ldyBVaW50OEFycmF5
KFs2NSwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAy
NTUsIDY2XSk7Ci1ibG9iID0gbmV3IEJsb2IoW2FycmF5LmJ1ZmZlcl0pOworYmxvYiA9IG5ldyBC
bG9iKFthcnJheV0pOwogcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKIHJlYWRlci5yZWFkQXNU
ZXh0KGJsb2IpOwogUEFTUyBmaWxlU3RyaW5nIGlzICdB77+977+977+977+977+977+977+977+9
77+977+977+9QicKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFk
ZXItZmZmZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLmh0
bWwKaW5kZXggZWFjYTI0ZWJhNjAwOGQyMjYxY2M1ZDUzZDFmZTEwYTM5ZTQzOWRmZS4uNDM4MDAx
ZDhkZDllMTk4MmEzNzg1MzkwYWIwZTg5YzBjMTBhMDk3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9maWxlLXJlYWRlci1mZmZkLmh0bWwKQEAgLTExLDcgKzExLDcgQEAKIGRlc2NyaXB0
aW9uKCJUaHJvdyB2YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4iKTsKIAogYXJyYXkg
PSBldmFsQW5kTG9nKCJhcnJheSA9IG5ldyBVaW50OEFycmF5KFs2NSwgMjQ1LCAyNDYsIDI0Nywg
MjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUsIDY2XSk7Iik7Ci1ibG9iID0g
ZXZhbEFuZExvZygiYmxvYiA9IG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsiKTsKK2Jsb2IgPSBl
dmFsQW5kTG9nKCJibG9iID0gbmV3IEJsb2IoW2FycmF5XSk7Iik7CiByZWFkZXIgPSBldmFsQW5k
TG9nKCJyZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpOyIpOwogcmVhZGVyLm9ubG9hZCA9IGZ1bmN0
aW9uKGV2ZW50KSB7CiAgIGZpbGVTdHJpbmcgPSBldmVudC50YXJnZXQucmVzdWx0OwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rv
ci5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0
b3IuanMKaW5kZXggMTU0YmEwZmVmMGY3N2FmNTU1ODIwMDQxZGQ2OWJiMjE5NzAzNTlkNS4uZjQw
OTdmNGZmZTVhZGI3YmQ2ZTc3YTczOTk0NjE0NTgzNjg1OTMxZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcworKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCkBA
IC0xNSw3ICsxNSw2IEBAIHNob3VsZFRocm93KCJuZXcgQmxvYigwKSIsICInVHlwZUVycm9yOiBG
aXJzdCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90CiAKIC8vIFRlc3QgdmFsaWQg
YmxvYiBwYXJ0cy4KIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtdKSkgaW5zdGFuY2VvZiB3aW5k
b3cuQmxvYiIpOwotc2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcig4KV0p
KSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7CiBzaG91bGRCZVRydWUoIihuZXcgQmxvYihbJ3N0
cmluZ1ByaW1pdGl2ZSddKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiIpOwogc2hvdWxkQmVUcnVl
KCIobmV3IEJsb2IoW1N0cmluZygnc3RyaW5nT2JqZWN0JyldKSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiIpOwogc2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoW25ldyBCbG9iXSkpIGluc3RhbmNlb2Yg
d2luZG93LkJsb2IiKTsKQEAgLTYzLDMgKzYyLDE4IEBAIHNob3VsZEJlKCIobmV3IEJsb2IoW10s
IHt0eXBlOid0ZXh0L2h0bWwnfSkpLnNpemUiLCAiMCIpOwogCiAvLyBPZGRzIGFuZCBlbmRzCiBz
aG91bGRCZSgid2luZG93LkJsb2IubGVuZ3RoIiwgIjIiKTsKKworLy8gVGVzdCBBcnJheUJ1ZmZl
clZpZXcgUGFyYW1ldGVycwordmFyIGJsb2JPYmogPSBuZXcgQmxvYihbbmV3IEludDMyQXJyYXko
MTAwKV0pOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVy
KDEwMCkpXSkuc2l6ZSIsICIxMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IFVpbnQ4QXJy
YXkoMTAwKV0pLnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50OENs
YW1wZWRBcnJheSgxMDApXSkuc2l6ZSIsICIxMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3
IFVpbnQxNkFycmF5KDEwMCldKS5zaXplIiwgIjIwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtu
ZXcgVWludDMyQXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2Io
W25ldyBJbnQ4QXJyYXkoMTAwKV0pLnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2Io
W25ldyBJbnQxNkFycmF5KDEwMCldKS5zaXplIiwgIjIwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9i
KFtuZXcgSW50MzJBcnJheSgxMDApXSkuc2l6ZSIsICI0MDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxv
YihbbmV3IEZsb2F0MzJBcnJheSgxMDApXSkuc2l6ZSIsICI0MDAiKTsKK3Nob3VsZEJlKCJuZXcg
QmxvYihbbmV3IEZsb2F0NjRBcnJheSgxMDApXSkuc2l6ZSIsICI4MDAiKTsKK3Nob3VsZEJlKCJu
ZXcgQmxvYihbbmV3IEZsb2F0NjRBcnJheSgxMDApLCBuZXcgSW50MzJBcnJheSgxMDApLCBuZXcg
VWludDhBcnJheSgxMDApLCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkpXSkuc2l6
ZSIsICIxNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW2Jsb2JPYmosIG5ldyBVaW50OEFycmF5
KDEwMCksIG5ldyBGbG9hdDMyQXJyYXkoMTAwKSwgbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZl
cigxMDApKV0pLnNpemUiLCAiMTAwMCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1i
dXN5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1
ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbAppbmRleCAzOTk1MDc5M2NiMmM0
NjExMzk1YmUyZDdjYWVkMjRlMzdkMjY0NzVmLi45OTA5YTBmM2ZlOTA4NDhmNmZiODhmNGM3YTM3
Mzg1NzkxNDBkZWZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1v
dW50LWFmdGVyLWNsb3NlLWluLWJ1c3kuaHRtbApAQCAtMjMsNyArMjMsNyBAQCBmdW5jdGlvbiBj
cmVhdGVTdHJpbmdXaXRoTGVuZ3RoKGxlbmd0aCkKIAogZnVuY3Rpb24gY3JlYXRlQmxvYldpdGhM
ZW5ndGgobGVuZ3RoKQogewotICAgIHJldHVybiBuZXcgQmxvYihbbmV3IEFycmF5QnVmZmVyKGxl
bmd0aCldKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBVaW50OEFycmF5KGxlbmd0aCldKTsK
IH0KIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9lY2hvIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50
LWFmdGVyLWNsb3NlLmh0bWwKaW5kZXggNGIzZDEwZjUxZjc0YjNjNzYzY2M2ZmYzYzc1MGYwZjg4
ODVmMDQ0Yy4uMzgzNDExZjA2OGRjN2QyZDU2OTBmMzcwMWMyZmQ4OTg5MmQ4NGM4MyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJl
ZEFtb3VudC1hZnRlci1jbG9zZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbApAQCAtMjMs
NyArMjMsNyBAQCBmdW5jdGlvbiBjcmVhdGVTdHJpbmdXaXRoTGVuZ3RoKGxlbmd0aCkKIAogZnVu
Y3Rpb24gY3JlYXRlQmxvYldpdGhMZW5ndGgobGVuZ3RoKQogewotICAgIHJldHVybiBuZXcgQmxv
YihbbmV3IEFycmF5QnVmZmVyKGxlbmd0aCldKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBV
aW50OEFycmF5KGxlbmd0aCldKTsKIH0KIAogdmFyIHdzID0gbmV3IFdlYlNvY2tldCgid3M6Ly9s
b2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9zaW1wbGUiKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxv
Yi5odG1sCmluZGV4IDY2YjQ0OTE1ODVmYmVlM2MwY2M4ZjAxMDY4YmYyMTFjNTU2YmUyYWMuLjll
ZDJkM2E2Y2ExYjJjZDNhYWY2YjE1Y2RlOTgzYmVlZTY5Y2M2Y2EgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2Iu
aHRtbApAQCAtMzMsNyArMzMsNyBAQCBmdW5jdGlvbiBjcmVhdGVCbG9iQ29udGFpbmluZ0FsbERp
c3RpbmN0Qnl0ZXMoKQogICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KDI1Nik7CiAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7ICsraSkKICAgICAgICAgYXJyYXlbaV0gPSBpOwotICAg
IHJldHVybiBuZXcgQmxvYihbYXJyYXkuYnVmZmVyXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFth
cnJheV0pOwogfQogCiB2YXIgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rl
c3RzL2h5YmkvY2hlY2stYmluYXJ5LW1lc3NhZ2VzIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1i
bG9iLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3Jr
ZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKaW5kZXggMGRiNWNiYWJhMWVjNDZiNDU2MDVkZmM2
NzQ1MGNjY2I3MDkzZDIwZC4uZjJkYzAzNmJiZTVkMmYwMjA5MmZkYTFkZWEwMmY3YjU5NjRhZTdi
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9zZW5kLWJsb2IuanMK
QEAgLTEzLDcgKzEzLDcgQEAgZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5j
dEJ5dGVzKCkKICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwogICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICByZXR1
cm4gbmV3IEJsb2IoW2FycmF5LmJ1ZmZlcl0pOworICAgIHJldHVybiBuZXcgQmxvYihbYXJyYXld
KTsKIH0KIAogdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9o
eWJpL3dvcmtlcnMvcmVzb3VyY2VzL2NoZWNrLWJpbmFyeS1tZXNzYWdlcyI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146275</attachid>
            <date>2012-06-07 06:31:05 -0700</date>
            <delta_ts>2012-06-07 18:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120608213422.patch</filename>
            <type>text/plain</type>
            <size>16625</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQyYzYyODM3NTk0NWM1
ZTQ3ZmMxMjI0MjM2OWE1NDA3MDg2MTgwZi4uYzVmNGNmZGM0ZTlhM2E2ODIxNjczNmU0Mjg1Y2U2
NWYyOTNlNzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA2LTA4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEZpbGVBUEk6IEJsb2Igc2hvdWxkIHN1
cHBvcnQgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQgb2YgQXJyYXlCdWZmZXIgZm9yIENvbnN0cnVj
dG9yIFBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnJvbSBTcGVjOiBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9GaWxlQVBJLyNk
Zm4tQmxvYgorICAgICAgICBCbG9iIHNob3VsZCBzdXBwb3J0IEFycmF5QnVmZmVyVmlldyBpbnN0
ZWFkIG9mIEFycmF5QnVmZmVyIGZvciBDb25zdHJ1Y3RvciBQYXJhbWV0ZXJzLgorICAgICAgICBD
dXJyZW50bHksIHdlIGp1c3QgYWRkIHRoZSBzdXBwb3J0IG9mIEFycmF5QnVmZmVyVmlldywgbm90
IGRlbGV0ZSBBcnJheUJ1ZmZlciBiZWNhdXNlCisgICAgICAgIG9mIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHksIGJ1dCB3ZSB3aWxsIGRvIHRoYXQgaW4gbmVhciBmdXR1cmUuCisKKyAgICAgICAgVGVz
dDogZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQmxvYkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Jsb2JDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNCbG9iKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhCbG9i
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QmxvYjo6Y29uc3RydWN0b3JDYWxsYmFj
ayk6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViS2l0QmxvYkJ1aWxkZXIpOgorICAgICAgICAqIGZpbGVhcGkvV2ViS2l0
QmxvYkJ1aWxkZXIuaWRsOiBDaGFuZ2UgaXQgdG8gc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcgaW4g
YXBwZW5kIG1ldGhvZAorCiAyMDEyLTA2LTA2ICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFy
ZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZpeCBib3JkZXItaW1hZ2Utc2xpY2UgZmFpbHVy
ZXMgb24gaHR0cDovL2NzczN0ZXN0LmNvbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0Jsb2JDdXN0b20uY3BwCmluZGV4IDMzOTJmM2NlNmM3YjhjYzBhNjI0OWViMGU4ZmI2OTNmZjFl
OGZjY2EuLmI1NzdiMWI0MGYxOGI0M2E0Yzg1MGI1OTZlYTdiMzM4MzgzNzQwMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxh
Y2Vob2xkZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0Rp
Y3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0ZpbGUuaCIKQEAgLTExNyw3ICsxMTgsOSBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQmxvYkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Js
b2IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBhcnJheS0+Z2V0SW5k
ZXgoaSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGlmIChpdGVtLmluaGVyaXRzKCZKU0Fy
cmF5QnVmZmVyOjpzX2luZm8pKQotICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFwcGVuZCh0b0Fy
cmF5QnVmZmVyKGl0ZW0pKTsKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5hcHBlbmQoY29udGV4
dCwgdG9BcnJheUJ1ZmZlcihpdGVtKSk7CisgICAgICAgIGVsc2UgaWYgKGl0ZW0uaW5oZXJpdHMo
JkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKQorICAgICAgICAgICAgYmxvYkJ1aWxkZXItPmFw
cGVuZCh0b0FycmF5QnVmZmVyVmlldyhpdGVtKSk7CiAgICAgICAgIGVsc2UKICNlbmRpZgogICAg
ICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCAxNzU2NmM4
MWI5MTk5YjU0YTgwNWY5Y2U5YmJjNzYxN2JmNTk3YWVmLi4xYTU0YTczYTg2Y2FmZDZjNjg3NTNh
MmQ4Yzg4NmMxN2JmYTQyYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAi
RGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKKyNpbmNsdWRlICJWOEFy
cmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Qmlu
ZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgpAQCAtMTE4LDcgKzExOSwxMSBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5j
ZShpdGVtKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVmZmVyID0gVjhBcnJh
eUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtKSk7CiAg
ICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAgYmxvYkJ1aWxkZXIt
PmFwcGVuZChhcnJheUJ1ZmZlcik7CisgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKGNv
bnRleHQsIGFycmF5QnVmZmVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmll
dzo6SGFzSW5zdGFuY2UoaXRlbSkpIHsKKyAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJy
YXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoaXRlbSkpOworICAgICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyVmll
dyk7CisgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKGFycmF5QnVmZmVyVmlldyk7CiAg
ICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIGlmIChWOEJsb2I6Okhhc0luc3RhbmNlKGl0
ZW0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWls
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCmlu
ZGV4IGU4N2JmZTU1NTcwYzc1MDkwNDE2MTVhMjZjNmRjYTUyMWEzNjA2MDYuLmJhYWY5OThkZjcz
MTVmZGEzNzNhYjRlNjA1NTNiNzQ1ZTdlNTMwYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC0zNiw4ICszNiwxMCBAQAogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAiTGluZUVuZGluZy5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJUZXh0RW5j
b2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC04Niw4
ICs4OCwxMCBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogI2lmIEVOQUJMRShCTE9CKQotdm9pZCBXZWJL
aXRCbG9iQnVpbGRlcjo6YXBwZW5kKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZlcikKK3ZvaWQgV2Vi
S2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBB
cnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCiB7CisgICAgU3RyaW5nIGNvbnNvbGVNZXNzYWdlKCJB
cnJheUJ1ZmZlciB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgaW4gQmxvYiBDb25zdHJ1Y3Rvci4gVXNl
IEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiIpOworICAgIGNvbnRleHQtPmFkZENvbnNvbGVNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWws
IGNvbnNvbGVNZXNzYWdlKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm47
CiAgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKQEAgLTk1LDYgKzk5LDE2
IEBAIHZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZlciogYXJyYXlCdWZm
ZXIpCiAgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAgIG1fc2l6ZSArPSBi
dWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKIH0KKwordm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBw
ZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQoreworICAgIGlmICghYXJyYXlC
dWZmZXJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBn
ZXRCdWZmZXIoKTsKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXplKCk7CisgICAgYnVm
ZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZmZXJWaWV3LT5iYXNl
QWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOworICAgIG1fc2l6ZSAr
PSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKK30KICNlbmRpZgogCiB2b2lkIFdlYktpdEJsb2JC
dWlsZGVyOjphcHBlbmQoQmxvYiogYmxvYikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0
QmxvYkJ1aWxkZXIuaAppbmRleCA3NmI5MGJlYWI0YjY1YmVkNWRhNzhhNDg2MDM0ZmM4OWRkMzIw
NTNiLi40MmM2ZmFhNzUzY2RkMzJmNzM1MGQzZDk5OTgzNzFhN2ZiZjZmOTJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCkBAIC0zOCw2ICszOCw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiB0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwpAQCAtNTAsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBTdHJpbmcmIGVuZGluZywgRXhjZXB0aW9uQ29kZSYpOwogI2lmIEVOQUJMRShC
TE9CKQotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyKik7CisgICAgdm9pZCBhcHBlbmQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIEFycmF5QnVmZmVyKik7CisgICAgdm9pZCBhcHBlbmQoQXJy
YXlCdWZmZXJWaWV3Kik7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8QmxvYj4gZ2V0QmxvYihj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbAppbmRleCBlMGM3YzVjOTJjZTZkNWIxNjFjZThj
NTc4NmIzZjRiYmMzNjBhOTVmLi41YTc2YTk1MTRhYThiOWZmZWQ1OTBlZmM4ZmYyOTZkODlkMGM0
M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVy
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbApA
QCAtNDAsNyArNDAsOCBAQCBtb2R1bGUgaHRtbCB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBhcHBl
bmQoaW4gQmxvYiBibG9iKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CKSAmJiBFTkFCTEVfQkxP
QgotICAgICAgICB2b2lkIGFwcGVuZChpbiBBcnJheUJ1ZmZlciBhcnJheUJ1ZmZlcik7CisgICAg
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIGFwcGVuZChpbiBBcnJh
eUJ1ZmZlciBhcnJheUJ1ZmZlcik7CisgICAgICAgIHZvaWQgYXBwZW5kKGluIEFycmF5QnVmZmVy
VmlldyBhcnJheUJ1ZmZlclZpZXcpOwogI2VuZGlmCiAgICAgICAgIHZvaWQgYXBwZW5kKGluIERP
TVN0cmluZyB2YWx1ZSwgaW4gW09wdGlvbmFsLCBUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBUcmVh
dFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBlbmRpbmdzKSByYWlzZXMgKERPTUV4
Y2VwdGlvbik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjQzNmIwNDg5MDRiNjMyNzRhMjVmZDlhN2RiZGU5
OWIyZTNkZWRiLi4yODQ2OWEwZGIwYWM0YjgwNTRhNDZhMWIyYjVhMzczMTczODRhYTgzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDYtMDggIExpIFlpbiAgPGxpLnlpbkBpbnRlbC5jb20+
CisKKyAgICAgICAgRmlsZUFQSTogQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJheUJ1ZmZlclZpZXcg
aW5zdGVhZCBvZiBBcnJheUJ1ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1ldGVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgyOTQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBwb3J0IEFycmF5QnVm
ZmVyVmlldyBpbiBCbG9iIGNvbnN0cnVjdGluZyBmdW5jdGlvbi4KKworICAgICAgICAqIGZhc3Qv
ZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxl
cy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL2Zp
bGUtcmVhZGVyLWZmZmQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9i
bG9iLWNvbnN0cnVjdG9yLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xv
c2UuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQt
YmxvYi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29y
a2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzOgorICAgICAgICAoY3JlYXRlQmxvYkNvbnRhaW5p
bmdBbGxEaXN0aW5jdEJ5dGVzKToKKwogMjAxMi0wNi0wNiAgTm9lbCBHb3Jkb24gIDxub2VsLmdv
cmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCBmb3IgUE5HIENPTE9SX1RZUEVf
UEFMRVRURSBpbWFnZSB3aXRoIGEgY29sb3IgcHJvZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggNDcwYjU5MTZj
ZTYxM2Y5ZjEzNmU2YTE0YjdmMmQyYjFmOTkyYzAzOS4uMjQ3YzZiZmRlMjE1NDdiNTcyNDdkODhk
OWY1YzllYmI3ZTYwMDQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9i
LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2Js
b2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsxMyw2IEBAIFBBU1MgKG5ldyBC
bG9iKFsnaGVsbG8nXSwge3R5cGU6J3RleHQvaHRtbCcsIGVuZGluZ3M6J3RyYW5zcGFyZW50J30p
KSBpbnN0YW5jZW9mCiBQQVNTIG5ldyBCbG9iKCdoZWxsbycpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IEZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBub3Qgb2YgdHlwZSBB
cnJheS4KIFBBU1MgbmV3IEJsb2IoMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogRmlyc3Qg
YXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFycmF5LgogUEFTUyAo
bmV3IEJsb2IoW10pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKLVBBU1MgKG5ldyBC
bG9iKFtuZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVl
CiBQQVNTIChuZXcgQmxvYihbJ3N0cmluZ1ByaW1pdGl2ZSddKSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbU3RyaW5nKCdzdHJpbmdPYmplY3QnKV0pKSBp
bnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9iKFtuZXcgQmxvYl0p
KSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKQEAgLTQzLDYgKzQyLDE4IEBAIFBBU1Mg
KG5ldyBCbG9iKFtdLCBmdW5jdGlvbiAoKSB7fSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IgaXMg
dHJ1ZQogUEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkpLnR5cGUgaXMgJ3Rl
eHQvaHRtbCcKIFBBU1MgKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1sJ30pKS5zaXplIGlz
IDAKIFBBU1Mgd2luZG93LkJsb2IubGVuZ3RoIGlzIDIKK1BBU1MgbmV3IEJsb2IoW25ldyBEYXRh
VmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihb
bmV3IFVpbnQ4QXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWlu
dDhDbGFtcGVkQXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWlu
dDE2QXJyYXkoMTAwKV0pLnNpemUgaXMgMjAwCitQQVNTIG5ldyBCbG9iKFtuZXcgVWludDMyQXJy
YXkoMTAwKV0pLnNpemUgaXMgNDAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50OEFycmF5KDEwMCld
KS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IEludDE2QXJyYXkoMTAwKV0pLnNpemUg
aXMgMjAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50MzJBcnJheSgxMDApXSkuc2l6ZSBpcyA0MDAK
K1BBU1MgbmV3IEJsb2IoW25ldyBGbG9hdDMyQXJyYXkoMTAwKV0pLnNpemUgaXMgNDAwCitQQVNT
IG5ldyBCbG9iKFtuZXcgRmxvYXQ2NEFycmF5KDEwMCldKS5zaXplIGlzIDgwMAorUEFTUyBuZXcg
QmxvYihbbmV3IEZsb2F0NjRBcnJheSgxMDApLCBuZXcgSW50MzJBcnJheSgxMDApLCBuZXcgVWlu
dDhBcnJheSgxMDApLCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEwMCkpXSkuc2l6ZSBp
cyAxNDAwCitQQVNTIG5ldyBCbG9iKFtibG9iT2JqLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcg
RmxvYXQzMkFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5z
aXplIGlzIDEwMDAKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZk
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1l
eHBlY3RlZC50eHQKaW5kZXggNDVmOTdjNzBmM2IxNWM1MjRmNGFkYjM1YTIzOGVlZjdlNThmNWQx
OC4uZTRkYzJkZDBjZWJhY2M4ZTUzYWMzZmZmZTk0Mzc4ZGVmMzQ3NGI3MSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0CkBA
IC0zLDcgKzMsNyBAQCBUaHJvdyB2YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4KIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogYXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0
NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0p
OwotYmxvYiA9IG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsKK2Jsb2IgPSBuZXcgQmxvYihbYXJy
YXldKTsKIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiByZWFkZXIucmVhZEFzVGV4dChibG9i
KTsKIFBBU1MgZmlsZVN0cmluZyBpcyAnQe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/
vUInCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sCmluZGV4
IGVhY2EyNGViYTYwMDhkMjI2MWNjNWQ1M2QxZmUxMGEzOWU0MzlkZmUuLjQzODAwMWQ4ZGQ5ZTE5
ODJhMzc4NTM5MGFiMGU4OWMwYzEwYTA5N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
ZmlsZS1yZWFkZXItZmZmZC5odG1sCkBAIC0xMSw3ICsxMSw3IEBACiBkZXNjcmlwdGlvbigiVGhy
b3cgdmFyaW91cyBiYWQgYnl0ZXMgYXQgZmlsZSByZWFkZXIuIik7CiAKIGFycmF5ID0gZXZhbEFu
ZExvZygiYXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5
LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0pOyIpOwotYmxvYiA9IGV2YWxBbmRM
b2coImJsb2IgPSBuZXcgQmxvYihbYXJyYXkuYnVmZmVyXSk7Iik7CitibG9iID0gZXZhbEFuZExv
ZygiYmxvYiA9IG5ldyBCbG9iKFthcnJheV0pOyIpOwogcmVhZGVyID0gZXZhbEFuZExvZygicmVh
ZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsiKTsKIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVu
dCkgewogICBmaWxlU3RyaW5nID0gZXZlbnQudGFyZ2V0LnJlc3VsdDsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMgYi9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCmlu
ZGV4IDE1NGJhMGZlZjBmNzdhZjU1NTgyMDA0MWRkNjliYjIxOTcwMzU5ZDUuLmY0MDk3ZjRmZmU1
YWRiN2JkNmU3N2E3Mzk5NDYxNDU4MzY4NTkzMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvc2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcwpAQCAtMTUsNyAr
MTUsNiBAQCBzaG91bGRUaHJvdygibmV3IEJsb2IoMCkiLCAiJ1R5cGVFcnJvcjogRmlyc3QgYXJn
dW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdAogCiAvLyBUZXN0IHZhbGlkIGJsb2IgcGFy
dHMuCiBzaG91bGRCZVRydWUoIihuZXcgQmxvYihbXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2Ii
KTsKLXNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFu
Y2VvZiB3aW5kb3cuQmxvYiIpOwogc2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoWydzdHJpbmdQcmlt
aXRpdmUnXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKIHNob3VsZEJlVHJ1ZSgiKG5ldyBC
bG9iKFtTdHJpbmcoJ3N0cmluZ09iamVjdCcpXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsK
IHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtuZXcgQmxvYl0pKSBpbnN0YW5jZW9mIHdpbmRvdy5C
bG9iIik7CkBAIC02MywzICs2MiwxOCBAQCBzaG91bGRCZSgiKG5ldyBCbG9iKFtdLCB7dHlwZTon
dGV4dC9odG1sJ30pKS5zaXplIiwgIjAiKTsKIAogLy8gT2RkcyBhbmQgZW5kcwogc2hvdWxkQmUo
IndpbmRvdy5CbG9iLmxlbmd0aCIsICIyIik7CisKKy8vIFRlc3QgQXJyYXlCdWZmZXJWaWV3IFBh
cmFtZXRlcnMKK3ZhciBibG9iT2JqID0gbmV3IEJsb2IoW25ldyBJbnQzMkFycmF5KDEwMCldKTsK
K3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0p
LnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50OEFycmF5KDEwMCld
KS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgVWludDhDbGFtcGVkQXJy
YXkoMTAwKV0pLnNpemUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50MTZB
cnJheSgxMDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IFVpbnQz
MkFycmF5KDEwMCldKS5zaXplIiwgIjQwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50
OEFycmF5KDEwMCldKS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50
MTZBcnJheSgxMDApXSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IElu
dDMyQXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBG
bG9hdDMyQXJyYXkoMTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25l
dyBGbG9hdDY0QXJyYXkoMTAwKV0pLnNpemUiLCAiODAwIik7CitzaG91bGRCZSgibmV3IEJsb2Io
W25ldyBGbG9hdDY0QXJyYXkoMTAwKSwgbmV3IEludDMyQXJyYXkoMTAwKSwgbmV3IFVpbnQ4QXJy
YXkoMTAwKSwgbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUiLCAiMTQw
MCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtibG9iT2JqLCBuZXcgVWludDhBcnJheSgxMDApLCBu
ZXcgRmxvYXQzMkFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSld
KS5zaXplIiwgIjEwMDAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFt
b3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKaW5kZXggMzk5NTA3OTNjYjJjNDYxMTM5NWJl
MmQ3Y2FlZDI0ZTM3ZDI2NDc1Zi4uOTkwOWEwZjNmZTkwODQ4ZjZmYjg4ZjRjN2EzNzM4NTc5MTQw
ZGVmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRl
ci1jbG9zZS1pbi1idXN5Lmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAgZnVuY3Rpb24gY3JlYXRlU3Ry
aW5nV2l0aExlbmd0aChsZW5ndGgpCiAKIGZ1bmN0aW9uIGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKGxl
bmd0aCkKIHsKLSAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZlcihsZW5ndGgpXSk7
CisgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShsZW5ndGgpXSk7CiB9CiAKIHZh
ciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvZWNobyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1j
bG9zZS5odG1sCmluZGV4IDRiM2QxMGY1MWY3NGIzYzc2M2NjNmZmM2M3NTBmMGY4ODg1ZjA0NGMu
LjM4MzQxMWYwNjhkYzdkMmQ1NjkwZjM3MDFjMmZkODk4OTJkODRjODMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQt
YWZ0ZXItY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90
ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwKQEAgLTIzLDcgKzIzLDcg
QEAgZnVuY3Rpb24gY3JlYXRlU3RyaW5nV2l0aExlbmd0aChsZW5ndGgpCiAKIGZ1bmN0aW9uIGNy
ZWF0ZUJsb2JXaXRoTGVuZ3RoKGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBB
cnJheUJ1ZmZlcihsZW5ndGgpXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJh
eShsZW5ndGgpXSk7CiB9CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0
Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlIik7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5kLWJsb2IuaHRtbApp
bmRleCA2NmI0NDkxNTg1ZmJlZTNjMGNjOGYwMTA2OGJmMjExYzU1NmJlMmFjLi45ZWQyZDNhNmNh
MWIyY2QzYWFmNmIxNWNkZTk4M2JlZWU2OWNjNmNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1sCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1ibG9iLmh0bWwKQEAg
LTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5
dGVzKCkKICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICByZXR1cm4g
bmV3IEJsb2IoW2FycmF5LmJ1ZmZlcl0pOworICAgIHJldHVybiBuZXcgQmxvYihbYXJyYXldKTsK
IH0KIAogdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2NoZWNrLWJpbmFyeS1tZXNzYWdlcyI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3NlbmQtYmxvYi5qcyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNv
dXJjZXMvc2VuZC1ibG9iLmpzCmluZGV4IDBkYjVjYmFiYTFlYzQ2YjQ1NjA1ZGZjNjc0NTBjY2Ni
NzA5M2QyMGQuLmYyZGMwMzZiYmU1ZDJmMDIwOTJmZGExZGVhMDJmN2I1OTY0YWU3YjAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vy
cy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzCkBAIC0xMyw3
ICsxMyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JDb250YWluaW5nQWxsRGlzdGluY3RCeXRlcygp
CiAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDI1NjsgKytpKQogICAgICAgICBhcnJheVtpXSA9IGk7Ci0gICAgcmV0dXJuIG5ldyBC
bG9iKFthcnJheS5idWZmZXJdKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5XSk7CiB9CiAK
IHZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS93b3Jr
ZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146440</attachid>
            <date>2012-06-07 18:11:43 -0700</date>
            <delta_ts>2012-06-07 20:15:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88294-20120609091505.patch</filename>
            <type>text/plain</type>
            <size>16523</size>
            <attacher name="Li Yin">li.yin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGQyYzYyODM3NTk0NWM1
ZTQ3ZmMxMjI0MjM2OWE1NDA3MDg2MTgwZi4uZDQzNTRiODU4MmUxZmUzMWM4MjEwNzEwNDZiOGJi
NzIzZTU3ZjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA2LTA4ICBMaSBZ
aW4gIDxsaS55aW5AaW50ZWwuY29tPgorCisgICAgICAgIEZpbGVBUEk6IEJsb2Igc2hvdWxkIHN1
cHBvcnQgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQgb2YgQXJyYXlCdWZmZXIgZm9yIENvbnN0cnVj
dG9yIFBhcmFtZXRlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg4Mjk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRnJvbSBTcGVjOiBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9GaWxlQVBJLyNk
Zm4tQmxvYgorICAgICAgICBDdXJyZW50bHkgd2UgYWRkIHRoZSBzdXBwb3J0IGZvciBBcnJheUJ1
ZmZlclZpZXcsIHdoaWxlIHN0aWxsIGtlZXBpbmcgQXJyYXlCdWZmZXIgZm9yCisgICAgICAgIGJh
Y2t3YXJkIGNvbXBhdGliaWxpdHkuIFdlIHdpbGwgcmVtb3ZlIGl0IGluIHRoZSBuZWFyIGZ1dHVy
ZS4KKworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3IuaHRtbAorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQmxvYkNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU0Jsb2IpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpj
b25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBmaWxlYXBpL1dlYktpdEJsb2JCdWlsZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXRCbG9iQnVpbGRlcik6CisgICAgICAg
ICogZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGw6IEFkZCBzdXBwb3J0IGZvciBBcnJheUJ1
ZmZlclZpZXcgaW4gYXBwZW5kIG1ldGhvZAorCiAyMDEyLTA2LTA2ICBBbGV4aXMgTWVuYXJkICA8
YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEZpeCBib3JkZXItaW1hZ2Ut
c2xpY2UgZmFpbHVyZXMgb24gaHR0cDovL2NzczN0ZXN0LmNvbS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCmluZGV4IDMzOTJmM2NlNmM3YjhjYzBhNjI0OWVi
MGU4ZmI2OTNmZjFlOGZjY2EuLmI1NzdiMWI0MGYxOGI0M2E0Yzg1MGI1OTZlYTdiMzM4MzgzNzQw
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyLmgiCisjaW5j
bHVkZSAiSlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJKU0ZpbGUuaCIKQEAgLTExNyw3ICsx
MTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTQmxvYkNvbnN0cnVjdG9yOjpj
b25zdHJ1Y3RKU0Jsb2IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBKU1ZhbHVlIGl0ZW0gPSBh
cnJheS0+Z2V0SW5kZXgoaSk7CiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgICAgIGlmIChpdGVtLmlu
aGVyaXRzKCZKU0FycmF5QnVmZmVyOjpzX2luZm8pKQotICAgICAgICAgICAgYmxvYkJ1aWxkZXIt
PmFwcGVuZCh0b0FycmF5QnVmZmVyKGl0ZW0pKTsKKyAgICAgICAgICAgIGJsb2JCdWlsZGVyLT5h
cHBlbmQoY29udGV4dCwgdG9BcnJheUJ1ZmZlcihpdGVtKSk7CisgICAgICAgIGVsc2UgaWYgKGl0
ZW0uaW5oZXJpdHMoJkpTQXJyYXlCdWZmZXJWaWV3OjpzX2luZm8pKQorICAgICAgICAgICAgYmxv
YkJ1aWxkZXItPmFwcGVuZCh0b0FycmF5QnVmZmVyVmlldyhpdGVtKSk7CiAgICAgICAgIGVsc2UK
ICNlbmRpZgogICAgICAgICBpZiAoaXRlbS5pbmhlcml0cygmSlNCbG9iOjpzX2luZm8pKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApp
bmRleCAxNzU2NmM4MWI5MTk5YjU0YTgwNWY5Y2U5YmJjNzYxN2JmNTk3YWVmLi4xYTU0YTczYTg2
Y2FmZDZjNjg3NTNhMmQ4Yzg4NmMxN2JmYTQyYjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
CiAjaW5jbHVkZSAiRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXIuaCIKKyNp
bmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4QmxvYi5oIgpAQCAtMTE4LDcg
KzExOSwxMSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhCbG9iOjpjb25zdHJ1Y3RvckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIGlmIChWOEFycmF5QnVmZmVy
OjpIYXNJbnN0YW5jZShpdGVtKSkgewogICAgICAgICAgICAgQXJyYXlCdWZmZXIqIGFycmF5QnVm
ZmVyID0gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChpdGVtKSk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlCdWZmZXIpOwotICAgICAgICAgICAg
YmxvYkJ1aWxkZXItPmFwcGVuZChhcnJheUJ1ZmZlcik7CisgICAgICAgICAgICBibG9iQnVpbGRl
ci0+YXBwZW5kKGNvbnRleHQsIGFycmF5QnVmZmVyKTsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFy
cmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoaXRlbSkpIHsKKyAgICAgICAgICAgIEFycmF5QnVm
ZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoaXRlbSkpOworICAgICAgICAgICAgQVNTRVJUKGFy
cmF5QnVmZmVyVmlldyk7CisgICAgICAgICAgICBibG9iQnVpbGRlci0+YXBwZW5kKGFycmF5QnVm
ZmVyVmlldyk7CiAgICAgICAgIH0gZWxzZQogI2VuZGlmCiAgICAgICAgIGlmIChWOEJsb2I6Okhh
c0luc3RhbmNlKGl0ZW0pKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dl
YktpdEJsb2JCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1
aWxkZXIuY3BwCmluZGV4IGU4N2JmZTU1NTcwYzc1MDkwNDE2MTVhMjZjNmRjYTUyMWEzNjA2MDYu
LmJhYWY5OThkZjczMTVmZGEzNzNhYjRlNjA1NTNiNzQ1ZTdlNTMwYzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuY3BwCkBAIC0zNiw4ICszNiwxMCBAQAog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJGaWxlLmgiCiAjaW5jbHVkZSAi
TGluZUVuZGluZy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNs
dWRlICJUZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXIuaD4KKyNpbmNs
dWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CkBAIC04Niw4ICs4OCwxMCBAQCB2b2lkIFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIH0KIAogI2lmIEVOQUJMRShCTE9C
KQotdm9pZCBXZWJLaXRCbG9iQnVpbGRlcjo6YXBwZW5kKEFycmF5QnVmZmVyKiBhcnJheUJ1ZmZl
cikKK3ZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCiB7CisgICAgU3RyaW5nIGNvbnNv
bGVNZXNzYWdlKCJBcnJheUJ1ZmZlciB2YWx1ZXMgYXJlIGRlcHJlY2F0ZWQgaW4gQmxvYiBDb25z
dHJ1Y3Rvci4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiIpOworICAgIGNvbnRleHQtPmFk
ZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdN
ZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlKTsKICAgICBpZiAoIWFycmF5QnVmZmVyKQogICAg
ICAgICByZXR1cm47CiAgICAgVmVjdG9yPGNoYXI+JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKQEAg
LTk1LDYgKzk5LDE2IEBAIHZvaWQgV2ViS2l0QmxvYkJ1aWxkZXI6OmFwcGVuZChBcnJheUJ1ZmZl
ciogYXJyYXlCdWZmZXIpCiAgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oYXJyYXlCdWZmZXItPmRhdGEoKSksIGFycmF5QnVmZmVyLT5ieXRlTGVuZ3RoKCkpOwogICAg
IG1fc2l6ZSArPSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKIH0KKwordm9pZCBXZWJLaXRCbG9i
QnVpbGRlcjo6YXBwZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3KQoreworICAg
IGlmICghYXJyYXlCdWZmZXJWaWV3KQorICAgICAgICByZXR1cm47CisgICAgVmVjdG9yPGNoYXI+
JiBidWZmZXIgPSBnZXRCdWZmZXIoKTsKKyAgICBzaXplX3Qgb2xkU2l6ZSA9IGJ1ZmZlci5zaXpl
KCk7CisgICAgYnVmZmVyLmFwcGVuZChzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oYXJyYXlCdWZm
ZXJWaWV3LT5iYXNlQWRkcmVzcygpKSwgYXJyYXlCdWZmZXJWaWV3LT5ieXRlTGVuZ3RoKCkpOwor
ICAgIG1fc2l6ZSArPSBidWZmZXIuc2l6ZSgpIC0gb2xkU2l6ZTsKK30KICNlbmRpZgogCiB2b2lk
IFdlYktpdEJsb2JCdWlsZGVyOjphcHBlbmQoQmxvYiogYmxvYikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvV2ViS2l0QmxvYkJ1aWxkZXIuaAppbmRleCA3NmI5MGJlYWI0YjY1YmVkNWRhNzhhNDg2
MDM0ZmM4OWRkMzIwNTNiLi40MmM2ZmFhNzUzY2RkMzJmNzM1MGQzZDk5OTgzNzFhN2ZiZjZmOTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5oCkBAIC0zOCw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJsb2I7CitjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogY2xhc3MgVGV4dEVuY29kaW5nOwogCiB0eXBlZGVmIGludCBF
eGNlcHRpb25Db2RlOwpAQCAtNTAsNyArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQo
Y29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIGVuZGluZywgRXhjZXB0aW9uQ29kZSYpOwog
I2lmIEVOQUJMRShCTE9CKQotICAgIHZvaWQgYXBwZW5kKEFycmF5QnVmZmVyKik7CisgICAgdm9p
ZCBhcHBlbmQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEFycmF5QnVmZmVyKik7CisgICAgdm9p
ZCBhcHBlbmQoQXJyYXlCdWZmZXJWaWV3Kik7CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8Qmxv
Yj4gZ2V0QmxvYihjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlID0gU3RyaW5nKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JCdWlsZGVyLmlkbAppbmRleCBlMGM3YzVjOTJj
ZTZkNWIxNjFjZThjNTc4NmIzZjRiYmMzNjBhOTVmLi41YTc2YTk1MTRhYThiOWZmZWQ1OTBlZmM4
ZmYyOTZkODlkMGM0M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktp
dEJsb2JCdWlsZGVyLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL1dlYktpdEJsb2JC
dWlsZGVyLmlkbApAQCAtNDAsNyArNDAsOCBAQCBtb2R1bGUgaHRtbCB7CiAjZW5kaWYKICAgICAg
ICAgdm9pZCBhcHBlbmQoaW4gQmxvYiBibG9iKTsKICNpZiBkZWZpbmVkKEVOQUJMRV9CTE9CKSAm
JiBFTkFCTEVfQkxPQgotICAgICAgICB2b2lkIGFwcGVuZChpbiBBcnJheUJ1ZmZlciBhcnJheUJ1
ZmZlcik7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIGFw
cGVuZChpbiBBcnJheUJ1ZmZlciBhcnJheUJ1ZmZlcik7CisgICAgICAgIHZvaWQgYXBwZW5kKGlu
IEFycmF5QnVmZmVyVmlldyBhcnJheUJ1ZmZlclZpZXcpOwogI2VuZGlmCiAgICAgICAgIHZvaWQg
YXBwZW5kKGluIERPTVN0cmluZyB2YWx1ZSwgaW4gW09wdGlvbmFsLCBUcmVhdE51bGxBcz1OdWxs
U3RyaW5nLCBUcmVhdFVuZGVmaW5lZEFzPU51bGxTdHJpbmddIERPTVN0cmluZyBlbmRpbmdzKSBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyZjQzNmIwNDg5MDRiNjMyNzRh
MjVmZDlhN2RiZGU5OWIyZTNkZWRiLi4yODQ2OWEwZGIwYWM0YjgwNTRhNDZhMWIyYjVhMzczMTcz
ODRhYTgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTItMDYtMDggIExpIFlpbiAgPGxpLnlp
bkBpbnRlbC5jb20+CisKKyAgICAgICAgRmlsZUFQSTogQmxvYiBzaG91bGQgc3VwcG9ydCBBcnJh
eUJ1ZmZlclZpZXcgaW5zdGVhZCBvZiBBcnJheUJ1ZmZlciBmb3IgQ29uc3RydWN0b3IgUGFyYW1l
dGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgy
OTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdXBw
b3J0IEFycmF5QnVmZmVyVmlldyBpbiBCbG9iIGNvbnN0cnVjdGluZyBmdW5jdGlvbi4KKworICAg
ICAgICAqIGZhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzL3Nj
cmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UtaW4tYnVzeS5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91
bnQtYWZ0ZXItY2xvc2UuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL3NlbmQtYmxvYi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzOgorICAgICAgICAoY3JlYXRl
QmxvYkNvbnRhaW5pbmdBbGxEaXN0aW5jdEJ5dGVzKToKKwogMjAxMi0wNi0wNiAgTm9lbCBHb3Jk
b24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgQWRkIGEgdGVzdCBmb3IgUE5H
IENPTE9SX1RZUEVfUEFMRVRURSBpbWFnZSB3aXRoIGEgY29sb3IgcHJvZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvYmxvYi1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5k
ZXggNDcwYjU5MTZjZTYxM2Y5ZjEzNmU2YTE0YjdmMmQyYjFmOTkyYzAzOS4uZGM4ZDIwM2NhODdi
NGIwZmFiYjgyNWJmMDc4MjI5YWY2MzY1YzY5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy9ibG9iLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzL2Jsb2ItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsxMyw2IEBA
IFBBU1MgKG5ldyBCbG9iKFsnaGVsbG8nXSwge3R5cGU6J3RleHQvaHRtbCcsIGVuZGluZ3M6J3Ry
YW5zcGFyZW50J30pKSBpbnN0YW5jZW9mCiBQQVNTIG5ldyBCbG9iKCdoZWxsbycpIHRocmV3IGV4
Y2VwdGlvbiBUeXBlRXJyb3I6IEZpcnN0IGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBpcyBu
b3Qgb2YgdHlwZSBBcnJheS4KIFBBU1MgbmV3IEJsb2IoMCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVjdG9yIGlzIG5vdCBvZiB0eXBlIEFy
cmF5LgogUEFTUyAobmV3IEJsb2IoW10pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUK
LVBBU1MgKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFuY2VvZiB3aW5kb3cu
QmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbJ3N0cmluZ1ByaW1pdGl2ZSddKSkgaW5zdGFu
Y2VvZiB3aW5kb3cuQmxvYiBpcyB0cnVlCiBQQVNTIChuZXcgQmxvYihbU3RyaW5nKCdzdHJpbmdP
YmplY3QnKV0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKIFBBU1MgKG5ldyBCbG9i
KFtuZXcgQmxvYl0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIGlzIHRydWUKQEAgLTQzLDYgKzQy
LDE4IEBAIFBBU1MgKG5ldyBCbG9iKFtdLCBmdW5jdGlvbiAoKSB7fSkpIGluc3RhbmNlb2Ygd2lu
ZG93LkJsb2IgaXMgdHJ1ZQogUEFTUyAobmV3IEJsb2IoW10sIHt0eXBlOid0ZXh0L2h0bWwnfSkp
LnR5cGUgaXMgJ3RleHQvaHRtbCcKIFBBU1MgKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1s
J30pKS5zaXplIGlzIDAKIFBBU1Mgd2luZG93LkJsb2IubGVuZ3RoIGlzIDIKK1BBU1MgbmV3IEJs
b2IoW25ldyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXplIGlzIDEwMAorUEFT
UyBuZXcgQmxvYihbbmV3IFVpbnQ4QXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBC
bG9iKFtuZXcgVWludDhDbGFtcGVkQXJyYXkoMTAwKV0pLnNpemUgaXMgMTAwCitQQVNTIG5ldyBC
bG9iKFtuZXcgVWludDE2QXJyYXkoMTAwKV0pLnNpemUgaXMgMjAwCitQQVNTIG5ldyBCbG9iKFtu
ZXcgVWludDMyQXJyYXkoMTAwKV0pLnNpemUgaXMgNDAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50
OEFycmF5KDEwMCldKS5zaXplIGlzIDEwMAorUEFTUyBuZXcgQmxvYihbbmV3IEludDE2QXJyYXko
MTAwKV0pLnNpemUgaXMgMjAwCitQQVNTIG5ldyBCbG9iKFtuZXcgSW50MzJBcnJheSgxMDApXSku
c2l6ZSBpcyA0MDAKK1BBU1MgbmV3IEJsb2IoW25ldyBGbG9hdDMyQXJyYXkoMTAwKV0pLnNpemUg
aXMgNDAwCitQQVNTIG5ldyBCbG9iKFtuZXcgRmxvYXQ2NEFycmF5KDEwMCldKS5zaXplIGlzIDgw
MAorUEFTUyBuZXcgQmxvYihbbmV3IEZsb2F0NjRBcnJheSgxMDApLCBuZXcgSW50MzJBcnJheSgx
MDApLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEw
MCkpXSkuc2l6ZSBpcyAxNDAwCitQQVNTIG5ldyBCbG9iKFtuZXcgQmxvYihbbmV3IEludDMyQXJy
YXkoMTAwKV0pLCBuZXcgVWludDhBcnJheSgxMDApLCBuZXcgRmxvYXQzMkFycmF5KDEwMCksIG5l
dyBEYXRhVmlldyhuZXcgQXJyYXlCdWZmZXIoMTAwKSldKS5zaXplIGlzIDEwMDAKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9maWxlcy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC1leHBlY3RlZC50eHQKaW5kZXggNDVm
OTdjNzBmM2IxNWM1MjRmNGFkYjM1YTIzOGVlZjdlNThmNWQxOC4uZTRkYzJkZDBjZWJhY2M4ZTUz
YWMzZmZmZTk0Mzc4ZGVmMzQ3NGI3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy9maWxlLXJlYWRlci1mZmZkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzL2ZpbGUtcmVhZGVyLWZmZmQtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUaHJvdyB2
YXJpb3VzIGJhZCBieXRlcyBhdCBmaWxlIHJlYWRlci4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogYXJyYXkgPSBuZXcgVWludDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5
LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1LCA2Nl0pOwotYmxvYiA9IG5ldyBCbG9iKFth
cnJheS5idWZmZXJdKTsKK2Jsb2IgPSBuZXcgQmxvYihbYXJyYXldKTsKIHJlYWRlciA9IG5ldyBG
aWxlUmVhZGVyKCk7CiByZWFkZXIucmVhZEFzVGV4dChibG9iKTsKIFBBU1MgZmlsZVN0cmluZyBp
cyAnQe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vUInCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzL2ZpbGUtcmVhZGVyLWZmZmQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1sCmluZGV4IGVhY2EyNGViYTYwMDhkMjI2MWNj
NWQ1M2QxZmUxMGEzOWU0MzlkZmUuLjQzODAwMWQ4ZGQ5ZTE5ODJhMzc4NTM5MGFiMGU4OWMwYzEw
YTA5N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZm
ZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvZmlsZS1yZWFkZXItZmZmZC5odG1s
CkBAIC0xMSw3ICsxMSw3IEBACiBkZXNjcmlwdGlvbigiVGhyb3cgdmFyaW91cyBiYWQgYnl0ZXMg
YXQgZmlsZSByZWFkZXIuIik7CiAKIGFycmF5ID0gZXZhbEFuZExvZygiYXJyYXkgPSBuZXcgVWlu
dDhBcnJheShbNjUsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjUyLCAyNTMs
IDI1NCwgMjU1LCA2Nl0pOyIpOwotYmxvYiA9IGV2YWxBbmRMb2coImJsb2IgPSBuZXcgQmxvYihb
YXJyYXkuYnVmZmVyXSk7Iik7CitibG9iID0gZXZhbEFuZExvZygiYmxvYiA9IG5ldyBCbG9iKFth
cnJheV0pOyIpOwogcmVhZGVyID0gZXZhbEFuZExvZygicmVhZGVyID0gbmV3IEZpbGVSZWFkZXIo
KTsiKTsKIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbihldmVudCkgewogICBmaWxlU3RyaW5nID0g
ZXZlbnQudGFyZ2V0LnJlc3VsdDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
c2NyaXB0LXRlc3RzL2Jsb2ItY29uc3RydWN0b3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVz
L3NjcmlwdC10ZXN0cy9ibG9iLWNvbnN0cnVjdG9yLmpzCmluZGV4IDE1NGJhMGZlZjBmNzdhZjU1
NTgyMDA0MWRkNjliYjIxOTcwMzU5ZDUuLmQxZGZlZTZkZjMxMDkxNTVkMTZmMTVjZTI3Y2E5Nzgy
NTk2NGQ0NGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3Rz
L2Jsb2ItY29uc3RydWN0b3IuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQt
dGVzdHMvYmxvYi1jb25zdHJ1Y3Rvci5qcwpAQCAtMTUsNyArMTUsNiBAQCBzaG91bGRUaHJvdygi
bmV3IEJsb2IoMCkiLCAiJ1R5cGVFcnJvcjogRmlyc3QgYXJndW1lbnQgb2YgdGhlIGNvbnN0cnVj
dG9yIGlzIG5vdAogCiAvLyBUZXN0IHZhbGlkIGJsb2IgcGFydHMuCiBzaG91bGRCZVRydWUoIihu
ZXcgQmxvYihbXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKLXNob3VsZEJlVHJ1ZSgiKG5l
dyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoOCldKSkgaW5zdGFuY2VvZiB3aW5kb3cuQmxvYiIpOwog
c2hvdWxkQmVUcnVlKCIobmV3IEJsb2IoWydzdHJpbmdQcmltaXRpdmUnXSkpIGluc3RhbmNlb2Yg
d2luZG93LkJsb2IiKTsKIHNob3VsZEJlVHJ1ZSgiKG5ldyBCbG9iKFtTdHJpbmcoJ3N0cmluZ09i
amVjdCcpXSkpIGluc3RhbmNlb2Ygd2luZG93LkJsb2IiKTsKIHNob3VsZEJlVHJ1ZSgiKG5ldyBC
bG9iKFtuZXcgQmxvYl0pKSBpbnN0YW5jZW9mIHdpbmRvdy5CbG9iIik7CkBAIC02MywzICs2Miwx
NyBAQCBzaG91bGRCZSgiKG5ldyBCbG9iKFtdLCB7dHlwZTondGV4dC9odG1sJ30pKS5zaXplIiwg
IjAiKTsKIAogLy8gT2RkcyBhbmQgZW5kcwogc2hvdWxkQmUoIndpbmRvdy5CbG9iLmxlbmd0aCIs
ICIyIik7CisKKy8vIFRlc3QgQXJyYXlCdWZmZXJWaWV3IFBhcmFtZXRlcnMKK3Nob3VsZEJlKCJu
ZXcgQmxvYihbbmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUiLCAiMTAw
Iik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50OEFycmF5KDEwMCldKS5zaXplIiwgIjEw
MCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgVWludDhDbGFtcGVkQXJyYXkoMTAwKV0pLnNp
emUiLCAiMTAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBVaW50MTZBcnJheSgxMDApXSku
c2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IFVpbnQzMkFycmF5KDEwMCld
KS5zaXplIiwgIjQwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50OEFycmF5KDEwMCld
KS5zaXplIiwgIjEwMCIpOworc2hvdWxkQmUoIm5ldyBCbG9iKFtuZXcgSW50MTZBcnJheSgxMDAp
XSkuc2l6ZSIsICIyMDAiKTsKK3Nob3VsZEJlKCJuZXcgQmxvYihbbmV3IEludDMyQXJyYXkoMTAw
KV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBGbG9hdDMyQXJyYXko
MTAwKV0pLnNpemUiLCAiNDAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBGbG9hdDY0QXJy
YXkoMTAwKV0pLnNpemUiLCAiODAwIik7CitzaG91bGRCZSgibmV3IEJsb2IoW25ldyBGbG9hdDY0
QXJyYXkoMTAwKSwgbmV3IEludDMyQXJyYXkoMTAwKSwgbmV3IFVpbnQ4QXJyYXkoMTAwKSwgbmV3
IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxMDApKV0pLnNpemUiLCAiMTQwMCIpOworc2hvdWxk
QmUoIm5ldyBCbG9iKFtuZXcgQmxvYihbbmV3IEludDMyQXJyYXkoMTAwKV0pLCBuZXcgVWludDhB
cnJheSgxMDApLCBuZXcgRmxvYXQzMkFycmF5KDEwMCksIG5ldyBEYXRhVmlldyhuZXcgQXJyYXlC
dWZmZXIoMTAwKSldKS5zaXplIiwgIjEwMDAiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVmZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2Ut
aW4tYnVzeS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKaW5kZXggMzk5NTA3OTNj
YjJjNDYxMTM5NWJlMmQ3Y2FlZDI0ZTM3ZDI2NDc1Zi4uOTkwOWEwZjNmZTkwODQ4ZjZmYjg4ZjRj
N2EzNzM4NTc5MTQwZGVmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJl
ZEFtb3VudC1hZnRlci1jbG9zZS1pbi1idXN5Lmh0bWwKQEAgLTIzLDcgKzIzLDcgQEAgZnVuY3Rp
b24gY3JlYXRlU3RyaW5nV2l0aExlbmd0aChsZW5ndGgpCiAKIGZ1bmN0aW9uIGNyZWF0ZUJsb2JX
aXRoTGVuZ3RoKGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbmV3IEJsb2IoW25ldyBBcnJheUJ1ZmZl
cihsZW5ndGgpXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtuZXcgVWludDhBcnJheShsZW5ndGgp
XSk7CiB9CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndzOi8vbG9jYWxob3N0Ojg4ODAvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvZWNobyIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFtb3VudC1hZnRlci1jbG9zZS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9idWZmZXJlZEFt
b3VudC1hZnRlci1jbG9zZS5odG1sCmluZGV4IDRiM2QxMGY1MWY3NGIzYzc2M2NjNmZmM2M3NTBm
MGY4ODg1ZjA0NGMuLjM4MzQxMWYwNjhkYzdkMmQ1NjkwZjM3MDFjMmZkODk4OTJkODRjODMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvYnVm
ZmVyZWRBbW91bnQtYWZ0ZXItY2xvc2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2J1ZmZlcmVkQW1vdW50LWFmdGVyLWNsb3NlLmh0bWwKQEAg
LTIzLDcgKzIzLDcgQEAgZnVuY3Rpb24gY3JlYXRlU3RyaW5nV2l0aExlbmd0aChsZW5ndGgpCiAK
IGZ1bmN0aW9uIGNyZWF0ZUJsb2JXaXRoTGVuZ3RoKGxlbmd0aCkKIHsKLSAgICByZXR1cm4gbmV3
IEJsb2IoW25ldyBBcnJheUJ1ZmZlcihsZW5ndGgpXSk7CisgICAgcmV0dXJuIG5ldyBCbG9iKFtu
ZXcgVWludDhBcnJheShsZW5ndGgpXSk7CiB9CiAKIHZhciB3cyA9IG5ldyBXZWJTb2NrZXQoIndz
Oi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2ltcGxlIik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxv
Yi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9zZW5k
LWJsb2IuaHRtbAppbmRleCA2NmI0NDkxNTg1ZmJlZTNjMGNjOGYwMTA2OGJmMjExYzU1NmJlMmFj
Li45ZWQyZDNhNmNhMWIyY2QzYWFmNmIxNWNkZTk4M2JlZWU2OWNjNmNhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3NlbmQtYmxvYi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvc2VuZC1i
bG9iLmh0bWwKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gY3JlYXRlQmxvYkNvbnRhaW5pbmdB
bGxEaXN0aW5jdEJ5dGVzKCkKICAgICB2YXIgYXJyYXkgPSBuZXcgVWludDhBcnJheSgyNTYpOwog
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpCiAgICAgICAgIGFycmF5W2ldID0gaTsK
LSAgICByZXR1cm4gbmV3IEJsb2IoW2FycmF5LmJ1ZmZlcl0pOworICAgIHJldHVybiBuZXcgQmxv
YihbYXJyYXldKTsKIH0KIAogdmFyIHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2NoZWNrLWJpbmFyeS1tZXNzYWdlcyI7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL3dvcmtlcnMvcmVzb3VyY2VzL3Nl
bmQtYmxvYi5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
d29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzCmluZGV4IDBkYjVjYmFiYTFlYzQ2YjQ1NjA1
ZGZjNjc0NTBjY2NiNzA5M2QyMGQuLmYyZGMwMzZiYmU1ZDJmMDIwOTJmZGExZGVhMDJmN2I1OTY0
YWU3YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9iLmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkvd29ya2Vycy9yZXNvdXJjZXMvc2VuZC1ibG9i
LmpzCkBAIC0xMyw3ICsxMyw3IEBAIGZ1bmN0aW9uIGNyZWF0ZUJsb2JDb250YWluaW5nQWxsRGlz
dGluY3RCeXRlcygpCiAgICAgdmFyIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoMjU2KTsKICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDI1NjsgKytpKQogICAgICAgICBhcnJheVtpXSA9IGk7Ci0gICAg
cmV0dXJuIG5ldyBCbG9iKFthcnJheS5idWZmZXJdKTsKKyAgICByZXR1cm4gbmV3IEJsb2IoW2Fy
cmF5XSk7CiB9CiAKIHZhciB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS93b3JrZXJzL3Jlc291cmNlcy9jaGVjay1iaW5hcnktbWVzc2FnZXMiOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>