<?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>39456</bug_id>
          
          <creation_ts>2010-05-20 16:39:35 -0700</creation_ts>
          <short_desc>[chromium] WebFrame::contentAsText should not return the text from hidden frames</short_desc>
          <delta_ts>2010-08-23 20:43:43 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>41251</dependson>
    
    <dependson>44126</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Jay Civelli">jcivelli</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>johnnyg</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>228627</commentid>
    <comment_count>0</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-05-20 16:39:35 -0700</bug_when>
    <thetext>The WebFrame::contentAsText method should not return the text from hidden frames.

Some web pages include some hidden frames with junk content in them.
This content is not supposed to be visible on the page, and for that reason should not be indexed or used to determine the page&apos;s language.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228636</commentid>
    <comment_count>1</comment_count>
      <attachid>56648</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-05-20 17:07:10 -0700</bug_when>
    <thetext>Created attachment 56648
Initial patch

Made WebFrame not report the text from hidden frames (some pages contain hidden frames with garbage text that should not be indexed or used to detect the page&apos;s language).
Also added a way to mock URL loading in unit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228642</commentid>
    <comment_count>2</comment_count>
      <attachid>56649</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-05-20 17:14:42 -0700</bug_when>
    <thetext>Created attachment 56649
Minor cosmetic fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228643</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-20 17:17:40 -0700</bug_when>
    <thetext>Attachment 56649 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
Last 3072 characters of output:
der this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/src/WebFrameImpl.cpp:239:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
WebKit/chromium/tests/WebURLLoaderMock.h:48:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/tests/WebURLLoaderMock.h:67:  Could not find a newline character at the end of the file.  [whitespace/ending_newline] [5]
WebKit/chromium/tests/WebURLLoaderMock.cpp:30:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMock.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMock.cpp:40:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/data/iframes_test.html:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/tests/data/invisible_iframe.html:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebKit/chromium/tests/WebURLLoaderMockFactory.h:33:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMockFactory.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMockFactory.h:57:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/tests/WebFrameTest.cpp:36:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:39:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:55:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/tests/WebFrameTest.cpp:67:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/WebFrameTest.cpp:88:  This { should be at the end of the previous line  [whitespace/braces] [4]
WebKit/chromium/tests/WebFrameTest.cpp:107:  Use 0 instead of NULL.  [readability/null] [5]
WebKit/chromium/tests/data/zero_sized_iframe.html:1:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 43 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228646</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-20 17:26:06 -0700</bug_when>
    <thetext>Attachment 56649 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2286381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228950</commentid>
    <comment_count>5</comment_count>
      <attachid>56715</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-05-21 09:28:17 -0700</bug_when>
    <thetext>Created attachment 56715
Style fixing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228957</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-21 09:48:06 -0700</bug_when>
    <thetext>Attachment 56715 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:30:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:32:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:33:  Found header this file implements after a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebURLLoaderMockFactory.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:36:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:39:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 7 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229018</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-21 11:26:23 -0700</bug_when>
    <thetext>Attachment 56715 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/2264408</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236465</commentid>
    <comment_count>8</comment_count>
      <attachid>56715</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-10 11:33:20 -0700</bug_when>
    <thetext>Comment on attachment 56715
Style fixing

WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp:61
 +      webkit_support::SetUpTestEnvironment(false);
It might have been nicer to define a method name like
SetUpTestingEnvironmentForUnitTests instead of using
a boolean parameter.  That way, it is clear what is
being requested at the callsite.

WebKit/chromium/public/WebCString.h:87
 +      bool operator&lt;(const WebCString&amp; other) const;
This would require a WEBKIT_API prefix in order to link WebKit
as a DLL.  Please add that prefix so we don&apos;t have to add it
later once the DLL build is functional.
Also, I think it would be better to write a compare function
and then add global operator&lt;, that way type coercion can work
better.  Take a look at how operator== is supported in the
WebKit API.

  WEBKIT_API int compare(const WebCString&amp;) const;


WebKit/chromium/public/WebURL.h:80
 +      }
ditto.  also, please avoid adding extra new lines.

WebKit/chromium/tests/RunAllTests.cpp:42
 +      // has initialized AtExitManager and ICU.
nit: please avoid mentioning AtExitManager since that is a
chromium detail.  if AtExitManager is ever renamed, then no
one will know to update this comment.

WebKit/chromium/tests/WebFrameTest.cpp:31
 +  // Basic tests that verify our KURL&apos;s interface behaves the same as the
this comment is wrong.

WebKit/chromium/tests/WebFrameTest.cpp:34
 +  #include &quot;config.h&quot;
no need to include config.h unless you are using WebCore headers.

WebKit/chromium/tests/WebFrameTest.cpp:38
 +  #include &quot;webkit/support/webkit_support.h&quot;
please use angle brackets for webkit_support.h since it is not part of the
WebKit project.  #include &lt;webkit/support/webkit_support.h&gt;

WebKit/chromium/tests/WebFrameTest.cpp:48
 +  using namespace WebCore;
are you really using WebCore?

WebKit/chromium/tests/WebFrameTest.cpp:59
 +          TestWebKitClient* client = static_cast&lt;TestWebKitClient*&gt;(webkit_support::GetWebKitClient());
It seems like this should be a webkit_support method instead of assuming
the implementation of webkit_support::GetWebKitClient is a TestWebKitClient.
How about a webkit_support::SetURLLoaderFactory(client, factory) method?
WebURLLoaderFactory should probably be defined in its own header file
or as part of webkit_support.h.  the idea being to avoid having to
dip into the implementation code for the WebKitClient used by the
webkit support layer.

WebKit/chromium/tests/WebFrameTest.cpp:61
 +      }
nit: insert new line here

WebKit/chromium/tests/WebFrameTest.cpp:97
 +      for (int i = 0; i &lt; arraysize(files); ++i) {
arraysize comes from base/basictypes.h.  it&apos;d be nice to avoid
a direct dependency on basictypes.h.

WebKit/chromium/tests/WebURLLoaderMock.cpp:29
 +  #include &quot;config.h&quot;
no need for config.h

WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:46
 +          responseInfo.m_filePath =
can ResponseInfo::m_filePath be a WebString instead?

WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:49
 +          ASSERT(WebCore::fileExists(responseInfo.m_filePath));
instead of using WebCore::fileExists, can you use WebFileSystem::fileExists instead?
you can get WebFileSystem from WebKitClient.  i think it would be good
to avoid using WebCore here if we can.
WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:64
 +          WebKit::WebURLResponse response;
i recommend a using namespace WebKit at the top of this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238063</commentid>
    <comment_count>9</comment_count>
      <attachid>58705</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 14:55:10 -0700</bug_when>
    <thetext>Created attachment 58705
Applied fishd suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238065</commentid>
    <comment_count>10</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 15:00:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 56715 [details])
&gt; WebKitTools/DumpRenderTree/chromium/DumpRenderTree.cpp:61
&gt;  +      webkit_support::SetUpTestEnvironment(false);
&gt; It might have been nicer to define a method name like
&gt; SetUpTestingEnvironmentForUnitTests instead of using
&gt; a boolean parameter.  That way, it is clear what is
&gt; being requested at the callsite.
Done.

&gt; WebKit/chromium/public/WebCString.h:87
&gt;  +      bool operator&lt;(const WebCString&amp; other) const;
&gt; This would require a WEBKIT_API prefix in order to link WebKit
&gt; as a DLL.  Please add that prefix so we don&apos;t have to add it
&gt; later once the DLL build is functional.
&gt; Also, I think it would be better to write a compare function
&gt; and then add global operator&lt;, that way type coercion can work
&gt; better.  Take a look at how operator== is supported in the
&gt; WebKit API.
&gt; 
&gt;   WEBKIT_API int compare(const WebCString&amp;) const;
Done.
 
&gt; WebKit/chromium/public/WebURL.h:80
&gt;  +      }
&gt; ditto.  also, please avoid adding extra new lines.
Done.

&gt; WebKit/chromium/tests/RunAllTests.cpp:42
&gt;  +      // has initialized AtExitManager and ICU.
&gt; nit: please avoid mentioning AtExitManager since that is a
&gt; chromium detail.  if AtExitManager is ever renamed, then no
&gt; one will know to update this comment.
Changed.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:31
&gt;  +  // Basic tests that verify our KURL&apos;s interface behaves the same as the
&gt; this comment is wrong.
Comment removed.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:34
&gt;  +  #include &quot;config.h&quot;
&gt; no need to include config.h unless you are using WebCore headers.
Done.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:38
&gt;  +  #include &quot;webkit/support/webkit_support.h&quot;
&gt; please use angle brackets for webkit_support.h since it is not part of the
&gt; WebKit project.  #include &lt;webkit/support/webkit_support.h&gt;
Done.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:48
&gt;  +  using namespace WebCore;
&gt; are you really using WebCore?
Removed.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:59
&gt;  +          TestWebKitClient* client = static_cast&lt;TestWebKitClient*&gt;(webkit_support::GetWebKitClient());
&gt; It seems like this should be a webkit_support method instead of assuming
&gt; the implementation of webkit_support::GetWebKitClient is a TestWebKitClient.
&gt; How about a webkit_support::SetURLLoaderFactory(client, factory) method?
&gt; WebURLLoaderFactory should probably be defined in its own header file
&gt; or as part of webkit_support.h.  the idea being to avoid having to
&gt; dip into the implementation code for the WebKitClient used by the
&gt; webkit support layer.
I moved the mocking part to webkit_support in Chromium (http://codereview.chromium.org/2749020).

&gt; WebKit/chromium/tests/WebFrameTest.cpp:61
&gt;  +      }
&gt; nit: insert new line here
Done.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:97
&gt;  +      for (int i = 0; i &lt; arraysize(files); ++i) {
&gt; arraysize comes from base/basictypes.h.  it&apos;d be nice to avoid
&gt; a direct dependency on basictypes.h.
Now using sizeof(array) / sizeof(type).

All comments below now apply to the Chromium CL mentioned above.
&gt; WebKit/chromium/tests/WebURLLoaderMock.cpp:29
&gt;  +  #include &quot;config.h&quot;
&gt; no need for config.h
&gt; 
&gt; WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:46
&gt;  +          responseInfo.m_filePath =
&gt; can ResponseInfo::m_filePath be a WebString instead?
&gt; 
&gt; WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:49
&gt;  +          ASSERT(WebCore::fileExists(responseInfo.m_filePath));
&gt; instead of using WebCore::fileExists, can you use WebFileSystem::fileExists instead?
&gt; you can get WebFileSystem from WebKitClient.  i think it would be good
&gt; to avoid using WebCore here if we can.
&gt; WebKit/chromium/tests/WebURLLoaderMockFactory.cpp:64
&gt;  +          WebKit::WebURLResponse response;
&gt; i recommend a using namespace WebKit at the top of this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238068</commentid>
    <comment_count>11</comment_count>
      <attachid>58706</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 15:02:05 -0700</bug_when>
    <thetext>Created attachment 58706
Fixed WebURL operator&lt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238069</commentid>
    <comment_count>12</comment_count>
      <attachid>58707</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 15:05:48 -0700</bug_when>
    <thetext>Created attachment 58707
Fixed ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238135</commentid>
    <comment_count>13</comment_count>
      <attachid>58707</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-14 16:47:19 -0700</bug_when>
    <thetext>Comment on attachment 58707
Fixed ChangeLog

WebKit/chromium/public/WebCString.h:72
 +      bool lessThan(const WebCString&amp; other) const;
needs the WEBKIT_API prefix

WebKit/chromium/src/WebCString.cpp:44
 +  bool WebCString::lessThan(const WebCString&amp; other) const
why not implement &apos;int compare(other)&apos; instead?  given that you
are using strncmp, you basically get compare for free.

WebKit/chromium/tests/WebFrameTest.cpp:60
 +          webkit_support::RegisterMockedURL(url, response, WebString::fromUTF8(filePath.c_str()));
nit: no need for the .c_str()

WebKit/chromium/tests/WebFrameTest.cpp:77
 +      response.setMIMEType(WebString::fromUTF8(&quot;text/html&quot;));
nit: you can just type response.setMIMEType(&quot;text/html&quot;), and the right thing will happen.

WebKit/chromium/tests/WebFrameTest.cpp:82
 +          WebURL webURL = GURL(rootURL + files[i]);
we should really have a constructor for WebURL that parses its input.
that doesn&apos;t have to be part of this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238169</commentid>
    <comment_count>14</comment_count>
      <attachid>58734</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 17:47:45 -0700</bug_when>
    <thetext>Created attachment 58734
Applied fishd suggested changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238171</commentid>
    <comment_count>15</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-14 17:49:30 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 58707 [details])
&gt; WebKit/chromium/public/WebCString.h:72
&gt;  +      bool lessThan(const WebCString&amp; other) const;
&gt; needs the WEBKIT_API prefix
&gt; 
&gt; WebKit/chromium/src/WebCString.cpp:44
&gt;  +  bool WebCString::lessThan(const WebCString&amp; other) const
&gt; why not implement &apos;int compare(other)&apos; instead?  given that you
&gt; are using strncmp, you basically get compare for free.
Done, change to lessThan to compare.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:60
&gt;  +          webkit_support::RegisterMockedURL(url, response, WebString::fromUTF8(filePath.c_str()));
&gt; nit: no need for the .c_str()
Removed.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:77
&gt;  +      response.setMIMEType(WebString::fromUTF8(&quot;text/html&quot;));
&gt; nit: you can just type response.setMIMEType(&quot;text/html&quot;), and the right thing will happen.
Done.

&gt; WebKit/chromium/tests/WebFrameTest.cpp:82
&gt;  +          WebURL webURL = GURL(rootURL + files[i]);
&gt; we should really have a constructor for WebURL that parses its input.
&gt; that doesn&apos;t have to be part of this patch.
More complicated than I thought initially, will have to be done in a subsequent CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238448</commentid>
    <comment_count>16</comment_count>
      <attachid>58794</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-15 10:16:56 -0700</bug_when>
    <thetext>Created attachment 58794
Fixed conflict when synching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238450</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:20:12 -0700</bug_when>
    <thetext>Attachment 58794 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/tests/WebFrameTest.cpp:31:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238458</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-15 10:39:56 -0700</bug_when>
    <thetext>Attachment 58794 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3336196</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238763</commentid>
    <comment_count>19</comment_count>
      <attachid>58734</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-16 03:15:14 -0700</bug_when>
    <thetext>Comment on attachment 58734
Applied fishd suggested changes

Cleared Darin Fisher&apos;s review+ from obsolete attachment 58734 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238988</commentid>
    <comment_count>20</comment_count>
      <attachid>58794</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-06-16 11:30:34 -0700</bug_when>
    <thetext>Comment on attachment 58794
Fixed conflict when synching

I think you need to include a change to chromium/DEPS to pick up
the latest webkit_support interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240911</commentid>
    <comment_count>21</comment_count>
      <attachid>59296</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-21 15:06:07 -0700</bug_when>
    <thetext>Created attachment 59296
Modified Chromium DEPS

The related webkit support patch on Chromium has landed.
I updated the DEPS to point to the new version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240913</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 15:10:12 -0700</bug_when>
    <thetext>Attachment 59296 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/tests/WebFrameTest.cpp:31:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240961</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 16:40:20 -0700</bug_when>
    <thetext>Attachment 59296 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3290562</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241351</commentid>
    <comment_count>24</comment_count>
      <attachid>59395</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-22 11:17:10 -0700</bug_when>
    <thetext>Created attachment 59395
Added missing HTML test files

DEPS rolled.
I built and run the tests manually to ensure Webkit stand-alone builds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241353</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 11:18:39 -0700</bug_when>
    <thetext>Attachment 59395 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/tests/WebFrameTest.cpp:31:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241402</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 12:53:43 -0700</bug_when>
    <thetext>Attachment 59395 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3338623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243018</commentid>
    <comment_count>27</comment_count>
      <attachid>59395</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 08:13:14 -0700</bug_when>
    <thetext>Comment on attachment 59395
Added missing HTML test files

Rejecting patch 59395 from commit-queue.

Failed to run &quot;[u&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Darin Fisher&apos;, u&apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
ILED -- saving rejects to file WebKit/chromium/DEPS.rej
patching file WebKit/chromium/WebKit.gyp
patching file WebKit/chromium/src/WebFrameImpl.cpp
patching file WebKit/chromium/tests/RunAllTests.cpp
patching file WebKit/chromium/tests/WebFrameTest.cpp
patching file WebKit/chromium/tests/data/iframes_test.html
patching file WebKit/chromium/tests/data/invisible_iframe.html
patching file WebKit/chromium/tests/data/visible_iframe.html
patching file WebKit/chromium/tests/data/zero_sized_iframe.html

Full output: http://webkit-commit-queue.appspot.com/results/3346027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243045</commentid>
    <comment_count>28</comment_count>
      <attachid>59774</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-25 09:25:30 -0700</bug_when>
    <thetext>Created attachment 59774
Fixed DEPS which was conflicting with another CL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243047</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 09:30:24 -0700</bug_when>
    <thetext>Attachment 59774 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit/chromium/tests/WebFrameTest.cpp:31:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit/chromium/tests/WebFrameTest.cpp:34:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243050</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 09:38:57 -0700</bug_when>
    <thetext>Attachment 59774 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3324764</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243331</commentid>
    <comment_count>31</comment_count>
      <attachid>59774</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 23:02:37 -0700</bug_when>
    <thetext>Comment on attachment 59774
Fixed DEPS which was conflicting with another CL

Clearing flags on attachment: 59774

Committed r61943: &lt;http://trac.webkit.org/changeset/61943&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243332</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 23:02:44 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245046</commentid>
    <comment_count>33</comment_count>
      <attachid>60180</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-06-30 18:28:38 -0700</bug_when>
    <thetext>Created attachment 60180
Making WebFrameTest Windows only

I made WebFrameTest Windows only.
On Linux and Mac we get ASSERTS triggered when the WebCore renderer classes attempt to retrieve Fonts.
Running this test on Windows only is probably sufficient for now for this CL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260912</commentid>
    <comment_count>34</comment_count>
      <attachid>63650</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-08-05 15:45:59 -0700</bug_when>
    <thetext>Created attachment 63650
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262379</commentid>
    <comment_count>35</comment_count>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-08-09 16:04:22 -0700</bug_when>
    <thetext>Reopening the bug so the patch can be landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262419</commentid>
    <comment_count>36</comment_count>
      <attachid>63956</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-08-09 17:05:26 -0700</bug_when>
    <thetext>Created attachment 63956
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262494</commentid>
    <comment_count>37</comment_count>
      <attachid>63956</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-09 22:08:30 -0700</bug_when>
    <thetext>Comment on attachment 63956
Patch for landing

Rejecting patch 63956 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 63956, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
ion=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=39456&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Processing patch 63956 from bug 39456.
NOBODY (OOPS!) found in /Users/eseidel/Projects/CommitQueue/WebKit/chromium/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Users/eseidel/Projects/CommitQueue/WebKit/chromium/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262592</commentid>
    <comment_count>38</comment_count>
      <attachid>59395</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 03:15:36 -0700</bug_when>
    <thetext>Comment on attachment 59395
Added missing HTML test files

Cleared Darin Fisher&apos;s review+ from obsolete attachment 59395 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265362</commentid>
    <comment_count>39</comment_count>
      <attachid>63956</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-16 22:28:42 -0700</bug_when>
    <thetext>Comment on attachment 63956
Patch for landing

I&apos;m confused why this got rejected.  Maybe a bug in svn-apply?  Going to try again just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265368</commentid>
    <comment_count>40</comment_count>
      <attachid>63956</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-16 22:56:37 -0700</bug_when>
    <thetext>Comment on attachment 63956
Patch for landing

Rejecting patch 63956 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 63956, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
ion=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=39456&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Processing patch 63956 from bug 39456.
NOBODY (OOPS!) found in /Users/eseidel/Projects/CommitQueue/WebKit/chromium/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Users/eseidel/Projects/CommitQueue/WebKit/chromium/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265369</commentid>
    <comment_count>41</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-16 23:10:43 -0700</bug_when>
    <thetext>Oh.  Silly.  When you use land-safely, it&apos;s supposed to fill in the reviewer for you.  The commit-queue only fills in reviewers when r+ is set on the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265370</commentid>
    <comment_count>42</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-16 23:11:32 -0700</bug_when>
    <thetext>by &quot;it&quot; I mean, webkit-patch land-safely fills in the reviewer locally, from the information on the bug, then it posts a new patch including the filled in reviewer and cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265624</commentid>
    <comment_count>43</comment_count>
      <attachid>64604</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-08-17 10:22:42 -0700</bug_when>
    <thetext>Created attachment 64604
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265636</commentid>
    <comment_count>44</comment_count>
      <attachid>64604</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-17 10:46:14 -0700</bug_when>
    <thetext>Comment on attachment 64604
Patch for landing

Clearing flags on attachment: 64604

Committed r65516: &lt;http://trac.webkit.org/changeset/65516&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265637</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-17 10:46:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265745</commentid>
    <comment_count>46</comment_count>
    <who name="John Gregg">johnnyg</who>
    <bug_when>2010-08-17 13:52:34 -0700</bug_when>
    <thetext>Had to revert r65516, it caused chromium webkit_unit_tests to crash on Mac and Linux.

See
http://build.chromium.org/buildbot/waterfall.fyi/builders/Webkit%20Mac%20%28webkit.org%29/builds/23578/steps/webkit_unit_tests/logs/stdio
http://build.chromium.org/buildbot/waterfall.fyi/builders/Webkit%20Linux%20%28webkit.org%29/builds/35468/steps/webkit_unit_tests/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268063</commentid>
    <comment_count>47</comment_count>
      <attachid>65154</attachid>
    <who name="Jay Civelli">jcivelli</who>
    <bug_when>2010-08-23 12:49:59 -0700</bug_when>
    <thetext>Created attachment 65154
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268287</commentid>
    <comment_count>48</comment_count>
      <attachid>65154</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-23 20:43:35 -0700</bug_when>
    <thetext>Comment on attachment 65154
Patch for landing

Clearing flags on attachment: 65154

Committed r65860: &lt;http://trac.webkit.org/changeset/65860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268288</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-23 20:43:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56648</attachid>
            <date>2010-05-20 17:07:10 -0700</date>
            <delta_ts>2010-05-20 17:14:42 -0700</delta_ts>
            <desc>Initial patch</desc>
            <filename>webframe.patch</filename>
            <type>text/plain</type>
            <size>31786</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTk4NzMpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNS0yMCAgSmF5IENpdmVsbGkgIDxq
Y2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZXMgRHVtcFJlbmRlclRyZWUgd29yayB3aXRoIHRoZSBuZXcgd2Vi
a2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6
CisKIDIwMTAtMDUtMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCShy
ZXZpc2lvbiA1OTgzMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KFRlc3RTaGVsbCYgc2hlbGwsIFRlCiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pCiB7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50
KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50KGZhbHNlKTsKIAog
ICAgIFRlc3RQYXJhbXMgcGFyYW1zOwogICAgIFZlY3RvcjxzdHJpbmc+IHRlc3RzOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5ODczKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEwLTA1LTIwICBKYXkgQ2l2ZWxs
aSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQgZnJv
bSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBmcmFt
ZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4ZWQg
b3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIEFsc28gYWRk
ZWQgYSB3YXkgdG8gbW9jayBVUkwgbG9hZGluZyBpbiB1bml0LXRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorICAgICAg
ICAKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNTdHJpbmcu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6
b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNTdHJpbmc6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmZyYW1lQ29udGVudEFzUGxhaW5UZXh0KToKKyAgICAgICAg
KiB0ZXN0cy9SdW5BbGxUZXN0cy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiB0ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJN
b2NrLmNwcDogQWRkZWQuCisgICAgICAgICogdGVzdHMvV2ViVVJMTG9hZGVyTW9jay5oOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL2RhdGE6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaWZyYW1lc190ZXN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMjAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTEwLDYgKzUxMCw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGVzdGluZy9ndGVzdC5neXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRf
c3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
ICAgICAgICAgICAgICAgICAncHVibGljJywKQEAgLTUyMCw2ICs1MjEsMTEgQEAKICAgICAgICAg
ICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3RzL1J1bkFsbFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAorICAgICAgICAgICAg
ICAgICd0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlVSTExvYWRlck1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRl
ck1vY2tGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRlck1v
Y2tGYWN0b3J5LmgnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwogICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDU3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOSBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViQ1N0cmluZyBmcm9tVVRGMTYoY29uc3QgV2ViVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJp
bmcgZnJvbVVURjE2KGNvbnN0IFdlYlVDaGFyKiBkYXRhKTsKIAorICAgIC8vIEFsbG93cyBXZWJD
U3RyaW5nIHRvIGJlIHVzZWQgYXMgYSBrZXkgaW4gU1RMIGNvbnRhaW5lcnMoc3RkOjpzZXQsIHN0
ZDo6bWFwLCBldGMpLgorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdlYkNTdHJpbmcmIG90aGVy
KSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkNTdHJpbmcoY29u
c3QgV1RGOjpDU3RyaW5nJik7CiAgICAgV2ViQ1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6
Q1N0cmluZyYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgJKHJldmlzaW9uIDU5ODcy
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViVVJMJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3NwZWMgPCBvdGhlci5tX3NwZWM7CisgICAgfQorCisKICAgICB2b2lkIGFz
c2lnbihjb25zdCBXZWJDU3RyaW5nJiBzcGVjLCBjb25zdCB1cmxfcGFyc2U6OlBhcnNlZCYgcGFy
c2VkLCBib29sIGlzVmFsaWQpCiAgICAgewogICAgICAgICBtX3NwZWMgPSBzcGVjOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ1N0cmluZy5jcHAJKHJldmlzaW9uIDU5ODcyKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
MTkgQEAgV2ViQ1N0cmluZyBXZWJDU3RyaW5nOjpmcm9tVVRGMTYoY29uc3QgVwogICAgIHJldHVy
biBmcm9tVVRGMTYoZGF0YSwgbGVuKTsKIH0KIAorYm9vbCBXZWJDU3RyaW5nOjpvcGVyYXRvcjwo
Y29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUgJiYg
b3RoZXIubV9wcml2YXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ByaXZh
dGUgJiYgIW90aGVyLm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHN0cm5jbXAobV9wcml2YXRlLT5kYXRhKCksIG90aGVyLm1fcHJpdmF0ZS0+ZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluKG1fcHJpdmF0ZS0+bGVuZ3RoKCksCisgICAgICAg
ICAgICAgICAgICAgb3RoZXIubV9wcml2YXRlLT5sZW5ndGgoKSkpIDwgMDsKK30KKwogV2ViQ1N0
cmluZzo6V2ViQ1N0cmluZyhjb25zdCBXVEY6OkNTdHJpbmcmIHMpCiAgICAgOiBtX3ByaXZhdGUo
c3RhdGljX2Nhc3Q8V2ViQ1N0cmluZ1ByaXZhdGUqPihzLmJ1ZmZlcigpKSkKIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRleHQoc2l6ZQogICAg
IC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNoaWxkcmVuLgogICAgIEZyYW1lVHJlZSogZnJhbWVU
cmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBmb3IgKEZyYW1lKiBjdXJDaGlsZCA9IGZyYW1lVHJl
ZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsgY3VyQ2hpbGQgPSBjdXJDaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgdGV4dCBvZiBub24tdmlzaWJs
ZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IGN1ckNoaWxk
LT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlciA9
IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7ICAgICAgICAKKyAgICAgICAgaWYgKCFjb250ZW50
UmVuZGVyZXIgfHwgY29udGVudFJlbmRlcmVyLT53aWR0aCgpID09IDAgfHwgY29udGVudFJlbmRl
cmVyLT5oZWlnaHQoKSA9PSAwCisgICAgICAgICAgICB8fCAoY29udGVudFJlbmRlcmVyLT54KCkg
KyBjb250ZW50UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRlbnRSZW5kZXJlci0+eSgp
ICsgY29udGVudFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAgICAgICAgfHwgKG93bmVy
UmVuZGVyZXIgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25lclJlbmRlcmVyLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBzZXBhcmF0b3Igd29u
J3QgZmlsbCB1cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAgICAgICAvLyBpdCB3aWxs
LiBUaGUgZGFuZ2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtlIHRoZSBidWZmZXIgbG9u
Z2VyIHRoYW4KICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY29tcHV0
YXRpb24gYWJvdmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAko
cmV2aXNpb24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOCArMzMsMTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgotCi0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJv
dGVjdGVkIGRlc3RydWN0b3IsIHNvIHdlIG5lZWQgdG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdl
YktpdENsaWVudCA6IHB1YmxpYyBXZWJLaXQ6OldlYktpdENsaWVudCB7Ci19OworI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKLSAgICBEdW1teVdlYktpdENsaWVudCBkdW1teUNsaWVudDsKLSAgICBX
ZWJLaXQ6OmluaXRpYWxpemUoJmR1bW15Q2xpZW50KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0
U3VpdGUoYXJnYywgYXJndikuUnVuKCk7Ci0KLSAgICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAg
VGVzdFN1aXRlIHRlc3RTdWl0ZShhcmdjLCBhcmd2KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBi
ZSBjcmVhdGVkIGJlZm9yZSBTZXRVcFRlc3RFbnZpcm9ubWVudCBpcyBjYWxsZWQgc28gaXQKKyAg
ICAvLyBoYXMgaW5pdGlhbGl6ZWQgQXRFeGl0TWFuYWdlciBhbmQgSUNVLgorICAgIHdlYmtpdF9z
dXBwb3J0OjpTZXRVcFRlc3RFbnZpcm9ubWVudCh0cnVlKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVz
dFN1aXRlLlJ1bigpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVu
dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQmFzaWMgdGVz
dHMgdGhhdCB2ZXJpZnkgb3VyIEtVUkwncyBpbnRlcmZhY2UgYmVoYXZlcyB0aGUgc2FtZSBhcyB0
aGUKKy8vIG9yaWdpbmFsIEtVUkwncy4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5
LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNl
LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CitwdWJsaWM6CisgICAgV2ViRnJhbWVUZXN0KCkg
e30KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBUZXN0V2ViS2l0
Q2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxUZXN0V2ViS2l0Q2xpZW50Kj4od2Via2l0X3N1
cHBvcnQ6OkdldFdlYktpdENsaWVudCgpKTsKKyAgICAgICAgY2xpZW50LT5zZXRfdXJsX2xvYWRl
cl9mYWN0b3J5KCZtX3VybExvYWRlckZhY3RvcnkpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQorICAgIHsKKyAgICAgICAgVGVzdFdlYktpdENsaWVudCogY2xpZW50ID0gc3Rh
dGljX2Nhc3Q8VGVzdFdlYktpdENsaWVudCo+KHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRDbGll
bnQoKSk7CisgICAgICAgIGNsaWVudC0+c2V0X3VybF9sb2FkZXJfZmFjdG9yeShOVUxMKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6
R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxl
TmFtZS51dGY4KCkpOworICAgICAgICBtX3VybExvYWRlckZhY3RvcnkucmVnaXN0ZXJVUkwodXJs
LCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aC5jX3N0cigpKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIG1fdXJsTG9hZGVy
RmFjdG9yeS5zZXJ2ZUFzeW5jaHJvbm91c1JlcXVlc3RzKCk7CisgICAgfQorICAgIAorcHJpdmF0
ZToKKyAgICBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeSBtX3VybExvYWRlckZhY3Rvcnk7Cit9Owor
CitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQKK3sKK307
CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRlbnRUZXh0KQoreworICAgIC8vIFJlZ2lzdGVy
IG91ciByZXNvdXJjZXMuCisgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgcmVzcG9u
c2UuaW5pdGlhbGl6ZSgpOworICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKFdlYlN0cmluZzo6ZnJv
bVVURjgoInRleHQvaHRtbCIpKTsKKyAgICBzdGQ6OnN0cmluZyByb290VVJMID0gImh0dHA6Ly93
d3cudGVzdC5jb20vIjsKKyAgICBjb25zdCBjaGFyKiBmaWxlc1tdID0geyAiaWZyYW1lc190ZXN0
Lmh0bWwiLCAidmlzaWJsZV9pZnJhbWUuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImludmlzaWJsZV9pZnJhbWUuaHRtbCIsICJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIiB9Owor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlzaXplKGZpbGVzKTsgKytpKSB7CisgICAgICAg
IFdlYlVSTCB3ZWJVUkwgPSBHVVJMKHJvb3RVUkwgKyBmaWxlc1tpXSk7CisgICAgICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZCh3ZWJVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZp
bGVzW2ldKSk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBXZWJW
aWV3LiAgICAKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2Vi
Vmlldyogd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZShOVUxMKTsKKyAgICB3ZWJWaWV3LT5pbml0
aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNsaWVudCk7CisKKyAgICAvLyBMb2FkIHRoZSBtYWlu
IGZyYW1lIFVSTC4KKyAgICBXZWJVUkwgdGVzdFVSTChHVVJMKHJvb3RVUkwgKyBmaWxlc1swXSkp
OworICAgIFdlYlVSTFJlcXVlc3QgdXJsUmVxdWVzdDsKKyAgICB1cmxSZXF1ZXN0LmluaXRpYWxp
emUoKTsKKyAgICB1cmxSZXF1ZXN0LnNldFVSTCh0ZXN0VVJMKTsKKyAgICB3ZWJWaWV3LT5tYWlu
RnJhbWUoKS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CisKKyAgICAvLyBMb2FkIGFsbCBwZW5k
aW5nIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAv
LyBOb3cgcmV0cmlldmUgdGhlIGZyYW1lcyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMg
dmlzaWJsZSBlbGVtZW50cy4KKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFp
bkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAyNCkudXRmOCgpOworICAgIEVYUEVDVF9ORShzdGQ6
OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBwYXJhZ3JhcGgiKSk7CisgICAg
RVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIGlmcmFt
ZSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGlu
dmlzaWJsZSBwYXJhcmFwaCIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNv
bnRlbnQuZmluZCgiIGludmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nOjpucG9zLCBjb250ZW50LmZpbmQoImlmcmFtZSB3aXRoIHplcm8gc2l6ZSIpKTsKK30KKwor
fQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
V2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIldl
YlVSTExvYWRlck1vY2suaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5oIgor
I2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisKK1dlYlVSTExvYWRlck1vY2s6OldlYlVSTExv
YWRlck1vY2soV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkqIGZhY3RvcnkpCisgICAgOiBtX2ZhY3Rv
cnkoZmFjdG9yeSksCisgICAgICBtX2NsaWVudChOVUxMKQoreworfQorCitXZWJVUkxMb2FkZXJN
b2NrOjp+V2ViVVJMTG9hZGVyTW9jaygpCit7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZGVyTW9jazo6
c2VydmVBc3luY2hyb25vdXNSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJl
c3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJEYXRhJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYgZXJyb3IpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgbV9jbGllbnQtPmRp
ZEZpbmlzaExvYWRpbmcodGhpcyk7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZGVyTW9jazo6bG9hZFN5
bmNocm9ub3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlVSTFJlc3BvbnNl
JiByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0OjpXZWJVUkxFcnJvciYgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBtX2ZhY3RvcnktPmxvYWRT
eW5jaHJvbm91c2x5KHJlcXVlc3QsIHJlc3BvbnNlLCBlcnJvciwgZGF0YSk7Cit9CisKK3ZvaWQg
V2ViVVJMTG9hZGVyTW9jazo6bG9hZEFzeW5jaHJvbm91c2x5KGNvbnN0IFdlYktpdDo6V2ViVVJM
UmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdDo6V2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQg
PSBjbGllbnQ7CisgICAgbV9mYWN0b3J5LT5sb2FkQXN5bmNocm9ub3VseShyZXF1ZXN0LCB0aGlz
KTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjpjYW5jZWwoKQoreworICAgIG1fY2xpZW50
ID0gMDsKKyAgICBtX2ZhY3RvcnktPmNhbmNlbExvYWQodGhpcyk7Cit9CisKK3ZvaWQgV2ViVVJM
TG9hZGVyTW9jazo6c2V0RGVmZXJzTG9hZGluZyhib29sKQoreworfQpJbmRleDogV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJVUkxMb2FkZXJNb2NrX2gKKyNkZWZpbmUgV2ViVVJMTG9hZGVy
TW9ja19oCisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJEYXRhOworc3RydWN0IFdlYlVSTEVy
cm9yOworY2xhc3MgV2ViVVJMTG9hZGVyQ2xpZW50OworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2Ns
YXNzIFdlYlVSTFJlc3BvbnNlOworfQorCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTsK
KworLy8gQSBzaW1wbGUgY2xhc3MgZm9yIG1vY2tpbmcgV2ViVVJMTG9hZGVyLgorLy8gRGVmZXJz
IG1vc3Qgb2YgaXRzIHdvcmsgdG8gdGhlIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5LgorY2xhc3Mg
V2ViVVJMTG9hZGVyTW9jayA6IHB1YmxpYyBXZWJLaXQ6OldlYlVSTExvYWRlcgoreworcHVibGlj
OgorICAgIFdlYlVSTExvYWRlck1vY2soV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkqIGZhY3Rvcnkp
OworICAgIHZpcnR1YWwgfldlYlVSTExvYWRlck1vY2soKTsKKworICAgIC8vIFNpbXVsYXRlcyB0
aGUgYXN5bmNocm91bm91cyByZXF1ZXN0IGJlaW5nIHNlcnZlZC4KKyAgICB2b2lkIHNlcnZlQXN5
bmNocm9ub3VzUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJiwgY29uc3QgV2Vi
S2l0OjpXZWJEYXRhJiwgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpOworCisgICAgLy8gV2Vi
VVJMTG9hZGVyIG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KGNv
bnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLCBXZWJL
aXQ6OldlYlVSTEVycm9yJiwgV2ViS2l0OjpXZWJEYXRhJiBkYXRhKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZEFzeW5jaHJvbm91c2x5KGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsIFdlYktp
dDo6V2ViVVJMTG9hZGVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworCitwcml2YXRlOgorICAgIFdl
YlVSTExvYWRlck1vY2tGYWN0b3J5KiBtX2ZhY3Rvcnk7CisgICAgV2ViS2l0OjpXZWJVUkxMb2Fk
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworI2VuZGlmIC8vIFdlYlVSTExvYWRlck1vY2tfaApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9h
ZGVyTW9jay5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5LmgiCisjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgorCitXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6V2ViVVJMTG9h
ZGVyTW9ja0ZhY3RvcnkoKQoreworfQordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6cmVn
aXN0ZXJVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIFJlc3BvbnNlSW5mbyByZXNwb25zZUlu
Zm87CisgICAgcmVzcG9uc2VJbmZvLm1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBpZiAoIWZp
bGVQYXRoLmlzTnVsbCgpICYmICFmaWxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzcG9u
c2VJbmZvLm1fZmlsZVBhdGggPQorICAgICAgICAgICAgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRG
OChmaWxlUGF0aC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlUGF0aC51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhyZXNwb25zZUluZm8ubV9maWxlUGF0aCkpOworICAgIH0KKworICAgIEFT
U0VSVChtX3VybFRvUmVwb25zZUluZm8uZmluZCh1cmwpID09IG1fdXJsVG9SZXBvbnNlSW5mby5l
bmQoKSk7CisgICAgbV91cmxUb1JlcG9uc2VJbmZvW3VybF0gPSByZXNwb25zZUluZm87Cit9CisK
K3ZvaWQgV2ViVVJMTG9hZGVyTW9ja0ZhY3Rvcnk6OnNlcnZlQXN5bmNocm9ub3VzUmVxdWVzdHMo
KQoreworICAgIC8vIFNlcnZpbmcgYSByZXF1ZXN0IG1pZ2h0IHRyaWdnZXIgbW9yZSByZXF1ZXN0
cywgc28gd2UgY2Fubm90IGl0ZXJhdGUgb24KKyAgICAvLyBtX3BlbmRpbmdMb2FkZXJzIGFzIGl0
IG1pZ2h0IGdldCBtb2RpZmllZC4KKyAgICB3aGlsZSAoIW1fcGVuZGluZ0xvYWRlcnMuZW1wdHko
KSkgeworICAgICAgICBMb2FkZXJUb1JlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRp
bmdMb2FkZXJzLmJlZ2luKCk7CisgICAgICAgIFdlYlVSTExvYWRlck1vY2sqIGxvYWRlciA9IGl0
ZXItPmZpcnN0OworICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3Qg
PSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7
CisgICAgICAgIFdlYktpdDo6V2ViVVJMRXJyb3IgZXJyb3I7CisgICAgICAgIFdlYktpdDo6V2Vi
RGF0YSBkYXRhOworICAgICAgICBsb2FkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgZXJyb3Is
IGRhdGEpOworICAgICAgICBsb2FkZXItPnNlcnZlQXN5bmNocm9ub3VzUmVxdWVzdChyZXNwb25z
ZSwgZGF0YSwgZXJyb3IpOworICAgICAgICBtX3BlbmRpbmdMb2FkZXJzLmVyYXNlKGl0ZXIpOwor
ICAgIH0KK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6Y2FuY2VsTG9hZChXZWJV
UkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9hZGVyVG9SZXF1ZXN0TWFwOjppdGVyYXRv
ciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxvYWRlcik7CisgICAgQVNTRVJUKGl0ZXIg
IT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAgbV9wZW5kaW5nTG9hZGVycy5lcmFzZShp
dGVyKTsKK30KKworV2ViS2l0OjpXZWJVUkxMb2FkZXIqIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5
OjpjcmVhdGVVUkxMb2FkZXIoKQoreworICAgIHJldHVybiBuZXcgV2ViVVJMTG9hZGVyTW9jayh0
aGlzKTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6bG9hZFN5bmNocm9ub3Vz
bHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYg
cmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBsb2Fk
UmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgZXJyb3IsIGRhdGEpOworfQorCit2b2lkIFdlYlVS
TExvYWRlck1vY2tGYWN0b3J5Ojpsb2FkQXN5bmNocm9ub3VseShjb25zdCBXZWJLaXQ6OldlYlVS
TFJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9hZGVyVG9SZXF1
ZXN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxvYWRlcik7Cisg
ICAgQVNTRVJUKGl0ZXIgPT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAgbV9wZW5kaW5n
TG9hZGVyc1tsb2FkZXJdID0gcmVxdWVzdDsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFj
dG9yeTo6bG9hZFJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBXZWJLaXQ6
OldlYlVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTFRvUmVzcG9uc2VNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3VybFRvUmVwb25zZUluZm8uZmluZChzdGF0aWNfY2FzdDxHVVJM
Pih1cmwpKTsKKyAgICBpZiAoaXRlciA9PSBtX3VybFRvUmVwb25zZUluZm8uZW5kKCkpIHsKKyAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNDA0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghcmVhZEZpbGUoaXRlci0+c2Vjb25kLm1fZmlsZVBhdGgsIGRhdGEp
KSB7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICByZXNwb25zZSA9IGl0ZXItPnNlY29uZC5tX3Jlc3BvbnNlOyAg
ICAKK30KKworCitib29sIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5OjpyZWFkRmlsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGZpbGVQYXRoLCBXZWJLaXQ6OldlYkRhdGEmIGRhdGEpCit7CisgICAg
V2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUgPSBXZWJDb3JlOjpvcGVuRmlsZShmaWxl
UGF0aCwgV2ViQ29yZTo6T3BlbkZvclJlYWQpOworICAgIGlmIChmaWxlID09IFdlYkNvcmU6Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBsb25n
IGxvbmcgZmlsZVNpemUgPSAwOworICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZVNpemUoZmlsZVBh
dGgsIGZpbGVTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVTaXplKTsKKyAgICBjaGFyKiBidWZmZXIgPSBuZXcg
Y2hhcltzaXplXTsKKyAgICBkYXRhLnJlc2V0KCk7CisgICAgaW50IHJlYWRDb3VudCA9IFdlYkNv
cmU6OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIsIHNpemUpOworICAgIFdlYkNvcmU6OmNsb3Nl
RmlsZShmaWxlKTsKKyAgICBBU1NFUlQocmVhZENvdW50ID09IHNpemUpOworICAgIGRhdGEuYXNz
aWduKGJ1ZmZlciwgc2l6ZSk7CisgICAgZGVsZXRlIGJ1ZmZlcjsKKworICAgIHJldHVybiB0cnVl
OworfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9j
a0ZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJVUkxM
b2FkZXJNb2NrRmFjdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnlfaAorI2RlZmluZSBXZWJVUkxMb2FkZXJNb2NrRmFj
dG9yeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPG1hcD4KKyNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJM
TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJ3ZWJraXQv
c3VwcG9ydC90ZXN0X3dlYmtpdF9jbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJEYXRhOworfQorCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrOworCisvLyBBIGZhY3Rvcnkg
dGhhdCBjcmVhdGVzIFdlYlVSTExvYWRlck1vY2sgdG8gc2ltdWxhdGUgcmVzb3VyY2UgbG9hZGlu
ZyBpbgorLy8gdGVzdHMuCisvLyBZb3UgcmVnaXN0ZXIgZmlsZXMgZm9yIHNwZWNpZmljIFVSTHMs
IHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGlzIHRoZW4gc2VydmVkCisvLyB3aGVuIHRoZXNlIFVS
THMgYXJlIGxvYWRlZC4KKy8vIEluIG9yZGVyIHRvIHNlcnZlIHRoZSBhc3luY2hyb25vdXMgcmVx
dWVzdHMsIHlvdSBuZWVkIHRvIGludm9rZQorLy8gc2VydmVBc3luY2hyb25vdXNSZXF1ZXN0IGlu
IHlvdXIgdGVzdC4KKy8vCisvLyBTZWUgV2ViRnJhbWVUZXN0LmNwcCBmb3IgYW4gZXhhbXBsZSBv
ZiBob3cgdGhpcyBpcyB1c2VkLgorLy8KKworY2xhc3MgV2ViVVJMTG9hZGVyTW9ja0ZhY3Rvcnkg
OiBwdWJsaWMgV2ViVVJMTG9hZGVyRmFjdG9yeQoreworcHVibGljOgorICAgIFdlYlVSTExvYWRl
ck1vY2tGYWN0b3J5KCk7CisKKyAgICAvLyBSZWdpc3RlcnMgYSByZXNwb25zZSBhbmQgdGhlIGNv
bnRlbnRzIHRvIGJlIHNlcnZlZCB3aGVuIHRoZSBzcGVjaWZpZWQgVVJMCisgICAgLy8gaXMgbG9h
ZGVkLgorICAgIHZvaWQgcmVnaXN0ZXJVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNl
LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRo
KTsKKworICAgIC8vIFNlcnZlcyBhbGwgdGhlIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3Rz
LgorICAgIHZvaWQgc2VydmVBc3luY2hyb25vdXNSZXF1ZXN0cygpOworCisgICAgLy8gQ2FsbGVk
IGJ5IHRoZSBsb2FkZXIgdG8gbG9hZCBhIHJlc291cmNlLgorICAgIHZvaWQgbG9hZFN5bmNocm9u
b3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0OjpXZWJVUkxFcnJvciYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXQ6OldlYkRhdGEmIGRhdGEpOworICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91bHkoY29uc3QgV2Vi
S2l0OjpXZWJVUkxSZXF1ZXN0JiwgV2ViVVJMTG9hZGVyTW9jayopOworCisgICAgLy8gUmVtb3Zl
cyB0aGUgbG9hZGVyIGZyb20gdGhlIGxpc3Qgb2YgcGVuZGluZyBsb2FkZXJzLgorICAgIHZvaWQg
Y2FuY2VsTG9hZChXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpOworCisgICAgLy8gV2ViVVJMTG9h
ZGVyRmFjdG9yeSBpbXBsZW1lbnRhdGlvbjoKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMTG9h
ZGVyKiBjcmVhdGVVUkxMb2FkZXIoKTsKKworCitwcml2YXRlOgorICAgIHN0cnVjdCBSZXNwb25z
ZUluZm8geworICAgICAgICBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlIG1fcmVzcG9uc2U7CisgICAg
ICAgIFdlYkNvcmU6OlN0cmluZyBtX2ZpbGVQYXRoOworICAgIH07CisKKyAgICAvLyBMb2FkcyB0
aGUgc3BlY2lmaWVkIHJlcXVlc3QgYW5kIHBvcHVsYXRlIHRoZSByZXNwb25zZSxlcnJvciBhbmQg
ZGF0YQorICAgIC8vIGFjY29yZGluZ2x5LgorICAgIC8vIElmIHRoZSBVUkwgZnJvbSB0aGUgcmVx
dWVzdCB3YXMgbm90IHJlZ2lzdGVyZWQgYSA0MDQgaXMgZ2VuZXJhdGVkLgorICAgIHZvaWQgbG9h
ZFJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLAorICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
OjpXZWJVUkxFcnJvciYsCisgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYkRhdGEmIGRh
dGEpOworCisgICAgLy8gUmVhZHMgfG1fZmlsZVBhdGh8IGFuZCBwdXRzIGl0cyBjb250ZW50IGlu
IHxkYXRhfC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgc3VjY2Vzc2Z1bGx5IHJlYWQgdGhl
IGZpbGUuCisgICAgc3RhdGljIGJvb2wgcmVhZEZpbGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBm
aWxlUGF0aCwgV2ViS2l0OjpXZWJEYXRhJiBkYXRhKTsKKworICAgIC8vIFRoZSBsb2FkZXJzIHRo
YXQgaGF2ZSBzdGlsbCBub3QgYmVpbmcgc2VydmVkIGRhdGEuCisgICAgdHlwZWRlZiBzdGQ6Om1h
cDxXZWJVUkxMb2FkZXJNb2NrKiwgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0PiBMb2FkZXJUb1JlcXVl
c3RNYXA7CisgICAgTG9hZGVyVG9SZXF1ZXN0TWFwIG1fcGVuZGluZ0xvYWRlcnM7CisKKyAgICAv
LyBUYWJsZSBvZiB0aGUgcmVnaXN0ZXJlZCBVUkxzIGFuZCB0aGUgcmVzcG9uc2UgdGhhdCB0aGV5
IHNob3VsZCByZWNlaXZlLgorICAgIHR5cGVkZWYgc3RkOjptYXA8V2ViS2l0OjpXZWJVUkwsIFJl
c3BvbnNlSW5mbz4gVVJMVG9SZXNwb25zZU1hcDsKKyAgICBVUkxUb1Jlc3BvbnNlTWFwIG1fdXJs
VG9SZXBvbnNlSW5mbzsKK307CisKKyNlbmRpZiAvLyBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeV9o
CisKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNfdGVzdC5odG1sDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rl
c3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8aHRtbD4NCis8Ym9keT4NCisg
IDxpZnJhbWUgc3JjPSJ2aXNpYmxlX2lmcmFtZS5odG1sIj48L2lmcmFtZT4NCisgIDxpZnJhbWUg
d2lkdGg9MCBoZWlnaHQ9MCBzcmM9Inplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiPjwvaWZyYW1lPg0K
KyAgPGlmcmFtZSBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47IiBzcmM9ImludmlzaWJsZV9pZnJh
bWUuaHRtbCI+PC9pZnJhbWU+DQorICA8cD5UaGlzIGlzIGEgdmlzaWJsZSBwYXJhZ3JhcGguPC9w
Pg0KKyAgPHAgc3R5bGU9InZpc2liaWxpdHk6aGlkZGVuOyI+VGhpcyBpcyBhbiBpbnZpc2libGUg
cGFyYWdyYXBoLjwvcD4NCis8L2JvZHk+DQorPC9odG1sPg0KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL2ludmlzaWJsZV9pZnJhbWUuaHRtbA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ludmlzaWJsZV9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ludmlzaWJsZV9pZnJhbWUuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4NCis8Ym9keT4NCitUaGlzIGlzIGFuIGlu
dmlzaWJsZSBmcmFtZS4NCis8L2JvZHk+DQorPC9odG1sPg0KSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvdmlzaWJsZV9pZnJhbWUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1IEBACis8aHRtbD4NCis8Ym9keT4NCitUaGlzIGlzIGEgdmlzaWJsZSBp
ZnJhbWUuDQorPC9ib2R5Pg0KKzwvaHRtbD4NCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+DQorPGJvZHk+DQorVGhpcyBpcyBhbiBpZnJhbWUg
d2l0aCB6ZXJvIHNpemUuDQorPC9ib2R5Pg0KKzwvaHRtbD4NCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56649</attachid>
            <date>2010-05-20 17:14:42 -0700</date>
            <delta_ts>2010-05-21 09:28:17 -0700</delta_ts>
            <desc>Minor cosmetic fixes.</desc>
            <filename>webframe.patch</filename>
            <type>text/plain</type>
            <size>31782</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTk4NzMpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNS0yMCAgSmF5IENpdmVsbGkgIDxq
Y2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZXMgRHVtcFJlbmRlclRyZWUgd29yayB3aXRoIHRoZSBuZXcgd2Vi
a2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6
CisKIDIwMTAtMDUtMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCShy
ZXZpc2lvbiA1OTgzMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KFRlc3RTaGVsbCYgc2hlbGwsIFRlCiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pCiB7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50
KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50KGZhbHNlKTsKIAog
ICAgIFRlc3RQYXJhbXMgcGFyYW1zOwogICAgIFZlY3RvcjxzdHJpbmc+IHRlc3RzOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5ODczKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEwLTA1LTIwICBKYXkgQ2l2ZWxs
aSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQgZnJv
bSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBmcmFt
ZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4ZWQg
b3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIEFsc28gYWRk
ZWQgYSB3YXkgdG8gbW9jayBVUkwgbG9hZGluZyBpbiB1bml0LXRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorICAgICAg
ICAKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNTdHJpbmcu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6
b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNTdHJpbmc6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmZyYW1lQ29udGVudEFzUGxhaW5UZXh0KToKKyAgICAgICAg
KiB0ZXN0cy9SdW5BbGxUZXN0cy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiB0ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJN
b2NrLmNwcDogQWRkZWQuCisgICAgICAgICogdGVzdHMvV2ViVVJMTG9hZGVyTW9jay5oOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL2RhdGE6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaWZyYW1lc190ZXN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMjAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTEwLDYgKzUxMCw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGVzdGluZy9ndGVzdC5neXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRf
c3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
ICAgICAgICAgICAgICAgICAncHVibGljJywKQEAgLTUyMCw2ICs1MjEsMTEgQEAKICAgICAgICAg
ICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3RzL1J1bkFsbFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAorICAgICAgICAgICAg
ICAgICd0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlVSTExvYWRlck1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRl
ck1vY2tGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRlck1v
Y2tGYWN0b3J5LmgnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwogICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDU3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOSBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViQ1N0cmluZyBmcm9tVVRGMTYoY29uc3QgV2ViVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJp
bmcgZnJvbVVURjE2KGNvbnN0IFdlYlVDaGFyKiBkYXRhKTsKIAorICAgIC8vIEFsbG93cyBXZWJD
U3RyaW5nIHRvIGJlIHVzZWQgYXMgYSBrZXkgaW4gU1RMIGNvbnRhaW5lcnMoc3RkOjpzZXQsIHN0
ZDo6bWFwLCBldGMpLgorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdlYkNTdHJpbmcmIG90aGVy
KSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkNTdHJpbmcoY29u
c3QgV1RGOjpDU3RyaW5nJik7CiAgICAgV2ViQ1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6
Q1N0cmluZyYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgJKHJldmlzaW9uIDU5ODcy
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViVVJMJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3NwZWMgPCBvdGhlci5tX3NwZWM7CisgICAgfQorCisKICAgICB2b2lkIGFz
c2lnbihjb25zdCBXZWJDU3RyaW5nJiBzcGVjLCBjb25zdCB1cmxfcGFyc2U6OlBhcnNlZCYgcGFy
c2VkLCBib29sIGlzVmFsaWQpCiAgICAgewogICAgICAgICBtX3NwZWMgPSBzcGVjOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ1N0cmluZy5jcHAJKHJldmlzaW9uIDU5ODcyKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
MTkgQEAgV2ViQ1N0cmluZyBXZWJDU3RyaW5nOjpmcm9tVVRGMTYoY29uc3QgVwogICAgIHJldHVy
biBmcm9tVVRGMTYoZGF0YSwgbGVuKTsKIH0KIAorYm9vbCBXZWJDU3RyaW5nOjpvcGVyYXRvcjwo
Y29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUgJiYg
b3RoZXIubV9wcml2YXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ByaXZh
dGUgJiYgIW90aGVyLm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHN0cm5jbXAobV9wcml2YXRlLT5kYXRhKCksIG90aGVyLm1fcHJpdmF0ZS0+ZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluKG1fcHJpdmF0ZS0+bGVuZ3RoKCksCisgICAgICAg
ICAgICAgICAgICAgb3RoZXIubV9wcml2YXRlLT5sZW5ndGgoKSkpIDwgMDsKK30KKwogV2ViQ1N0
cmluZzo6V2ViQ1N0cmluZyhjb25zdCBXVEY6OkNTdHJpbmcmIHMpCiAgICAgOiBtX3ByaXZhdGUo
c3RhdGljX2Nhc3Q8V2ViQ1N0cmluZ1ByaXZhdGUqPihzLmJ1ZmZlcigpKSkKIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRleHQoc2l6ZQogICAg
IC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNoaWxkcmVuLgogICAgIEZyYW1lVHJlZSogZnJhbWVU
cmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBmb3IgKEZyYW1lKiBjdXJDaGlsZCA9IGZyYW1lVHJl
ZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsgY3VyQ2hpbGQgPSBjdXJDaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgdGV4dCBvZiBub24tdmlzaWJs
ZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IGN1ckNoaWxk
LT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlciA9
IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7ICAgICAgICAKKyAgICAgICAgaWYgKCFjb250ZW50
UmVuZGVyZXIgfHwgY29udGVudFJlbmRlcmVyLT53aWR0aCgpID09IDAgfHwgY29udGVudFJlbmRl
cmVyLT5oZWlnaHQoKSA9PSAwCisgICAgICAgICAgICB8fCAoY29udGVudFJlbmRlcmVyLT54KCkg
KyBjb250ZW50UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRlbnRSZW5kZXJlci0+eSgp
ICsgY29udGVudFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAgICAgICAgfHwgKG93bmVy
UmVuZGVyZXIgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25lclJlbmRlcmVyLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBzZXBhcmF0b3Igd29u
J3QgZmlsbCB1cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAgICAgICAvLyBpdCB3aWxs
LiBUaGUgZGFuZ2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtlIHRoZSBidWZmZXIgbG9u
Z2VyIHRoYW4KICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY29tcHV0
YXRpb24gYWJvdmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAko
cmV2aXNpb24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOCArMzMsMTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5o
IgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgotCi0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJv
dGVjdGVkIGRlc3RydWN0b3IsIHNvIHdlIG5lZWQgdG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdl
YktpdENsaWVudCA6IHB1YmxpYyBXZWJLaXQ6OldlYktpdENsaWVudCB7Ci19OworI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKLSAgICBEdW1teVdlYktpdENsaWVudCBkdW1teUNsaWVudDsKLSAgICBX
ZWJLaXQ6OmluaXRpYWxpemUoJmR1bW15Q2xpZW50KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0
U3VpdGUoYXJnYywgYXJndikuUnVuKCk7Ci0KLSAgICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAg
VGVzdFN1aXRlIHRlc3RTdWl0ZShhcmdjLCBhcmd2KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBi
ZSBjcmVhdGVkIGJlZm9yZSBTZXRVcFRlc3RFbnZpcm9ubWVudCBpcyBjYWxsZWQgc28gaXQKKyAg
ICAvLyBoYXMgaW5pdGlhbGl6ZWQgQXRFeGl0TWFuYWdlciBhbmQgSUNVLgorICAgIHdlYmtpdF9z
dXBwb3J0OjpTZXRVcFRlc3RFbnZpcm9ubWVudCh0cnVlKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVz
dFN1aXRlLlJ1bigpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVu
dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gQmFzaWMgdGVz
dHMgdGhhdCB2ZXJpZnkgb3VyIEtVUkwncyBpbnRlcmZhY2UgYmVoYXZlcyB0aGUgc2FtZSBhcyB0
aGUKKy8vIG9yaWdpbmFsIEtVUkwncy4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2lu
Y2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5
LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNl
LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Cit7CitwdWJsaWM6CisgICAgV2ViRnJhbWVUZXN0KCkg
e30KKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCisgICAgeworICAgICAgICBUZXN0V2ViS2l0
Q2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxUZXN0V2ViS2l0Q2xpZW50Kj4od2Via2l0X3N1
cHBvcnQ6OkdldFdlYktpdENsaWVudCgpKTsKKyAgICAgICAgY2xpZW50LT5zZXRfdXJsX2xvYWRl
cl9mYWN0b3J5KCZtX3VybExvYWRlckZhY3RvcnkpOworICAgIH0KKyAgICB2aXJ0dWFsIHZvaWQg
VGVhckRvd24oKQorICAgIHsKKyAgICAgICAgVGVzdFdlYktpdENsaWVudCogY2xpZW50ID0gc3Rh
dGljX2Nhc3Q8VGVzdFdlYktpdENsaWVudCo+KHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRDbGll
bnQoKSk7CisgICAgICAgIGNsaWVudC0+c2V0X3VybF9sb2FkZXJfZmFjdG9yeShOVUxMKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6
R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxl
TmFtZS51dGY4KCkpOworICAgICAgICBtX3VybExvYWRlckZhY3RvcnkucmVnaXN0ZXJVUkwodXJs
LCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aC5jX3N0cigpKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIG1fdXJsTG9hZGVy
RmFjdG9yeS5zZXJ2ZUFzeW5jaHJvbm91c1JlcXVlc3RzKCk7CisgICAgfQorICAgIAorcHJpdmF0
ZToKKyAgICBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeSBtX3VybExvYWRlckZhY3Rvcnk7Cit9Owor
CitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQKK3sKK307
CisKK1RFU1RfRihXZWJGcmFtZVRlc3QsIENvbnRlbnRUZXh0KQoreworICAgIC8vIFJlZ2lzdGVy
IG91ciByZXNvdXJjZXMuCisgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgcmVzcG9u
c2UuaW5pdGlhbGl6ZSgpOworICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKFdlYlN0cmluZzo6ZnJv
bVVURjgoInRleHQvaHRtbCIpKTsKKyAgICBzdGQ6OnN0cmluZyByb290VVJMID0gImh0dHA6Ly93
d3cudGVzdC5jb20vIjsKKyAgICBjb25zdCBjaGFyKiBmaWxlc1tdID0geyAiaWZyYW1lc190ZXN0
Lmh0bWwiLCAidmlzaWJsZV9pZnJhbWUuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImludmlzaWJsZV9pZnJhbWUuaHRtbCIsICJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIiB9Owor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXlzaXplKGZpbGVzKTsgKytpKSB7CisgICAgICAg
IFdlYlVSTCB3ZWJVUkwgPSBHVVJMKHJvb3RVUkwgKyBmaWxlc1tpXSk7CisgICAgICAgIHJlZ2lz
dGVyTW9ja2VkVVJMTG9hZCh3ZWJVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZp
bGVzW2ldKSk7CisgICAgfQorCisgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBXZWJW
aWV3LiAgICAKKyAgICBUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2Vi
Vmlldyogd2ViVmlldyA9IFdlYlZpZXc6OmNyZWF0ZShOVUxMKTsKKyAgICB3ZWJWaWV3LT5pbml0
aWFsaXplTWFpbkZyYW1lKCZ3ZWJGcmFtZUNsaWVudCk7CisKKyAgICAvLyBMb2FkIHRoZSBtYWlu
IGZyYW1lIFVSTC4KKyAgICBXZWJVUkwgdGVzdFVSTChHVVJMKHJvb3RVUkwgKyBmaWxlc1swXSkp
OworICAgIFdlYlVSTFJlcXVlc3QgdXJsUmVxdWVzdDsKKyAgICB1cmxSZXF1ZXN0LmluaXRpYWxp
emUoKTsKKyAgICB1cmxSZXF1ZXN0LnNldFVSTCh0ZXN0VVJMKTsKKyAgICB3ZWJWaWV3LT5tYWlu
RnJhbWUoKS0+bG9hZFJlcXVlc3QodXJsUmVxdWVzdCk7CisKKyAgICAvLyBMb2FkIGFsbCBwZW5k
aW5nIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAv
LyBOb3cgcmV0cmlldmUgdGhlIGZyYW1lcyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMg
dmlzaWJsZSBlbGVtZW50cy4KKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFp
bkZyYW1lKCktPmNvbnRlbnRBc1RleHQoMTAyNCkudXRmOCgpOworICAgIEVYUEVDVF9ORShzdGQ6
OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBwYXJhZ3JhcGgiKSk7CisgICAg
RVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIGlmcmFt
ZSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGlu
dmlzaWJsZSBwYXJhcmFwaCIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNv
bnRlbnQuZmluZCgiIGludmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nOjpucG9zLCBjb250ZW50LmZpbmQoImlmcmFtZSB3aXRoIHplcm8gc2l6ZSIpKTsKK30KKwor
fQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
V2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIldl
YlVSTExvYWRlck1vY2suaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5oIgor
I2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisKK1dlYlVSTExvYWRlck1vY2s6OldlYlVSTExv
YWRlck1vY2soV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkqIGZhY3RvcnkpCisgICAgOiBtX2ZhY3Rv
cnkoZmFjdG9yeSksCisgICAgICBtX2NsaWVudChOVUxMKQoreworfQorCitXZWJVUkxMb2FkZXJN
b2NrOjp+V2ViVVJMTG9hZGVyTW9jaygpCit7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZGVyTW9jazo6
c2VydmVBc3luY2hyb25vdXNSZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJl
c3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJEYXRhJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYgZXJyb3IpCit7
CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CisgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKHRoaXMsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgbV9jbGllbnQtPmRp
ZEZpbmlzaExvYWRpbmcodGhpcyk7Cit9CisKK3ZvaWQgV2ViVVJMTG9hZGVyTW9jazo6bG9hZFN5
bmNocm9ub3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlVSTFJlc3BvbnNl
JiByZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0OjpXZWJVUkxFcnJvciYgZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBtX2ZhY3RvcnktPmxvYWRT
eW5jaHJvbm91c2x5KHJlcXVlc3QsIHJlc3BvbnNlLCBlcnJvciwgZGF0YSk7Cit9CisKK3ZvaWQg
V2ViVVJMTG9hZGVyTW9jazo6bG9hZEFzeW5jaHJvbm91c2x5KGNvbnN0IFdlYktpdDo6V2ViVVJM
UmVxdWVzdCYgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdDo6V2ViVVJMTG9hZGVyQ2xpZW50KiBjbGllbnQpCit7CisgICAgbV9jbGllbnQg
PSBjbGllbnQ7CisgICAgbV9mYWN0b3J5LT5sb2FkQXN5bmNocm9ub3VseShyZXF1ZXN0LCB0aGlz
KTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjpjYW5jZWwoKQoreworICAgIG1fY2xpZW50
ID0gMDsKKyAgICBtX2ZhY3RvcnktPmNhbmNlbExvYWQodGhpcyk7Cit9CisKK3ZvaWQgV2ViVVJM
TG9hZGVyTW9jazo6c2V0RGVmZXJzTG9hZGluZyhib29sKQoreworfQpJbmRleDogV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9jay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJVUkxMb2FkZXJNb2NrX2gKKyNkZWZpbmUgV2ViVVJMTG9hZGVy
TW9ja19oCisKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkxMb2FkZXIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJEYXRhOworc3RydWN0IFdlYlVSTEVy
cm9yOworY2xhc3MgV2ViVVJMTG9hZGVyQ2xpZW50OworY2xhc3MgV2ViVVJMUmVxdWVzdDsKK2Ns
YXNzIFdlYlVSTFJlc3BvbnNlOworfQorCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTsK
KworLy8gQSBzaW1wbGUgY2xhc3MgZm9yIG1vY2tpbmcgV2ViVVJMTG9hZGVyLgorLy8gRGVmZXJz
IG1vc3Qgb2YgaXRzIHdvcmsgdG8gdGhlIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5LgorY2xhc3Mg
V2ViVVJMTG9hZGVyTW9jayA6IHB1YmxpYyBXZWJLaXQ6OldlYlVSTExvYWRlcgoreworcHVibGlj
OgorICAgIFdlYlVSTExvYWRlck1vY2soV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkqIGZhY3Rvcnkp
OworICAgIHZpcnR1YWwgfldlYlVSTExvYWRlck1vY2soKTsKKworICAgIC8vIFNpbXVsYXRlcyB0
aGUgYXN5bmNocm91bm91cyByZXF1ZXN0IGJlaW5nIHNlcnZlZC4KKyAgICB2b2lkIHNlcnZlQXN5
bmNocm9ub3VzUmVxdWVzdChjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJiwgY29uc3QgV2Vi
S2l0OjpXZWJEYXRhJiwgY29uc3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpOworCisgICAgLy8gV2Vi
VVJMTG9hZGVyIG1ldGhvZHM6CisgICAgdmlydHVhbCB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KGNv
bnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLCBXZWJL
aXQ6OldlYlVSTEVycm9yJiwgV2ViS2l0OjpXZWJEYXRhJiBkYXRhKTsKKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZEFzeW5jaHJvbm91c2x5KGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsIFdlYktp
dDo6V2ViVVJMTG9hZGVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKGJvb2wpOworCitwcml2YXRlOgorICAgIFdl
YlVSTExvYWRlck1vY2tGYWN0b3J5KiBtX2ZhY3Rvcnk7CisgICAgV2ViS2l0OjpXZWJVUkxMb2Fk
ZXJDbGllbnQqIG1fY2xpZW50OworfTsKKworI2VuZGlmIC8vIFdlYlVSTExvYWRlck1vY2tfaApc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21p
dW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmls
ZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9h
ZGVyTW9jay5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5LmgiCisjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgorCitXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6V2ViVVJMTG9h
ZGVyTW9ja0ZhY3RvcnkoKQoreworfQordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6cmVn
aXN0ZXJVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJlc3Bv
bnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIFJlc3BvbnNlSW5mbyByZXNwb25zZUlu
Zm87CisgICAgcmVzcG9uc2VJbmZvLm1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBpZiAoIWZp
bGVQYXRoLmlzTnVsbCgpICYmICFmaWxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVzcG9u
c2VJbmZvLm1fZmlsZVBhdGggPQorICAgICAgICAgICAgV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRG
OChmaWxlUGF0aC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWxlUGF0aC51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICBBU1NFUlQoV2ViQ29y
ZTo6ZmlsZUV4aXN0cyhyZXNwb25zZUluZm8ubV9maWxlUGF0aCkpOworICAgIH0KKworICAgIEFT
U0VSVChtX3VybFRvUmVwb25zZUluZm8uZmluZCh1cmwpID09IG1fdXJsVG9SZXBvbnNlSW5mby5l
bmQoKSk7CisgICAgbV91cmxUb1JlcG9uc2VJbmZvW3VybF0gPSByZXNwb25zZUluZm87Cit9CisK
K3ZvaWQgV2ViVVJMTG9hZGVyTW9ja0ZhY3Rvcnk6OnNlcnZlQXN5bmNocm9ub3VzUmVxdWVzdHMo
KQoreworICAgIC8vIFNlcnZpbmcgYSByZXF1ZXN0IG1pZ2h0IHRyaWdnZXIgbW9yZSByZXF1ZXN0
cywgc28gd2UgY2Fubm90IGl0ZXJhdGUgb24KKyAgICAvLyBtX3BlbmRpbmdMb2FkZXJzIGFzIGl0
IG1pZ2h0IGdldCBtb2RpZmllZC4KKyAgICB3aGlsZSAoIW1fcGVuZGluZ0xvYWRlcnMuZW1wdHko
KSkgeworICAgICAgICBMb2FkZXJUb1JlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX3BlbmRp
bmdMb2FkZXJzLmJlZ2luKCk7CisgICAgICAgIFdlYlVSTExvYWRlck1vY2sqIGxvYWRlciA9IGl0
ZXItPmZpcnN0OworICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3Qg
PSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7
CisgICAgICAgIFdlYktpdDo6V2ViVVJMRXJyb3IgZXJyb3I7CisgICAgICAgIFdlYktpdDo6V2Vi
RGF0YSBkYXRhOworICAgICAgICBsb2FkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgZXJyb3Is
IGRhdGEpOworICAgICAgICBsb2FkZXItPnNlcnZlQXN5bmNocm9ub3VzUmVxdWVzdChyZXNwb25z
ZSwgZGF0YSwgZXJyb3IpOworICAgICAgICBtX3BlbmRpbmdMb2FkZXJzLmVyYXNlKGl0ZXIpOwor
ICAgIH0KK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6Y2FuY2VsTG9hZChXZWJV
UkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9hZGVyVG9SZXF1ZXN0TWFwOjppdGVyYXRv
ciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxvYWRlcik7CisgICAgQVNTRVJUKGl0ZXIg
IT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAgbV9wZW5kaW5nTG9hZGVycy5lcmFzZShp
dGVyKTsKK30KKworV2ViS2l0OjpXZWJVUkxMb2FkZXIqIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5
OjpjcmVhdGVVUkxMb2FkZXIoKQoreworICAgIHJldHVybiBuZXcgV2ViVVJMTG9hZGVyTW9jayh0
aGlzKTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6bG9hZFN5bmNocm9ub3Vz
bHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYg
cmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBsb2Fk
UmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgZXJyb3IsIGRhdGEpOworfQorCit2b2lkIFdlYlVS
TExvYWRlck1vY2tGYWN0b3J5Ojpsb2FkQXN5bmNocm9ub3VseShjb25zdCBXZWJLaXQ6OldlYlVS
TFJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9hZGVyVG9SZXF1
ZXN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxvYWRlcik7Cisg
ICAgQVNTRVJUKGl0ZXIgPT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAgbV9wZW5kaW5n
TG9hZGVyc1tsb2FkZXJdID0gcmVxdWVzdDsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFj
dG9yeTo6bG9hZFJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAgICBXZWJLaXQ6
OldlYlVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTFRvUmVzcG9uc2VNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBtX3VybFRvUmVwb25zZUluZm8uZmluZChzdGF0aWNfY2FzdDxHVVJM
Pih1cmwpKTsKKyAgICBpZiAoaXRlciA9PSBtX3VybFRvUmVwb25zZUluZm8uZW5kKCkpIHsKKyAg
ICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNDA0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmICghcmVhZEZpbGUoaXRlci0+c2Vjb25kLm1fZmlsZVBhdGgsIGRhdGEp
KSB7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDUwMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICByZXNwb25zZSA9IGl0ZXItPnNlY29uZC5tX3Jlc3BvbnNlOyAg
ICAKK30KKworCitib29sIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5OjpyZWFkRmlsZShjb25zdCBX
ZWJDb3JlOjpTdHJpbmcmIGZpbGVQYXRoLCBXZWJLaXQ6OldlYkRhdGEmIGRhdGEpCit7CisgICAg
V2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUgPSBXZWJDb3JlOjpvcGVuRmlsZShmaWxl
UGF0aCwgV2ViQ29yZTo6T3BlbkZvclJlYWQpOworICAgIGlmIChmaWxlID09IFdlYkNvcmU6Omlu
dmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBsb25n
IGxvbmcgZmlsZVNpemUgPSAwOworICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZVNpemUoZmlsZVBh
dGgsIGZpbGVTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHNpemUg
PSBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVTaXplKTsKKyAgICBjaGFyKiBidWZmZXIgPSBuZXcg
Y2hhcltzaXplXTsKKyAgICBkYXRhLnJlc2V0KCk7CisgICAgaW50IHJlYWRDb3VudCA9IFdlYkNv
cmU6OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIsIHNpemUpOworICAgIFdlYkNvcmU6OmNsb3Nl
RmlsZShmaWxlKTsKKyAgICBBU1NFUlQocmVhZENvdW50ID09IHNpemUpOworICAgIGRhdGEuYXNz
aWduKGJ1ZmZlciwgc2l6ZSk7CisgICAgZGVsZXRlIGJ1ZmZlcjsKKworICAgIHJldHVybiB0cnVl
OworfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9j
a0ZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJVUkxM
b2FkZXJNb2NrRmFjdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnlfaAorI2RlZmluZSBXZWJVUkxMb2FkZXJNb2NrRmFj
dG9yeV9oCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNp
bmNsdWRlIDx2ZWN0b3I+CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJM
TG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJ3ZWJraXQv
c3VwcG9ydC90ZXN0X3dlYmtpdF9jbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJEYXRhOworfQorCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrOworCisvLyBBIGZhY3Rvcnkg
dGhhdCBjcmVhdGVzIFdlYlVSTExvYWRlck1vY2sgdG8gc2ltdWxhdGUgcmVzb3VyY2UgbG9hZGlu
ZyBpbgorLy8gdGVzdHMuCisvLyBZb3UgcmVnaXN0ZXIgZmlsZXMgZm9yIHNwZWNpZmljIFVSTHMs
IHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGlzIHRoZW4gc2VydmVkCisvLyB3aGVuIHRoZXNlIFVS
THMgYXJlIGxvYWRlZC4KKy8vIEluIG9yZGVyIHRvIHNlcnZlIHRoZSBhc3luY2hyb25vdXMgcmVx
dWVzdHMsIHlvdSBuZWVkIHRvIGludm9rZQorLy8gc2VydmVBc3luY2hyb25vdXNSZXF1ZXN0IGlu
IHlvdXIgdGVzdC4KKy8vCisvLyBTZWUgV2ViRnJhbWVUZXN0LmNwcCBmb3IgYW4gZXhhbXBsZSBv
ZiBob3cgdGhpcyBpcyB1c2VkLgorLy8KKworY2xhc3MgV2ViVVJMTG9hZGVyTW9ja0ZhY3Rvcnkg
OiBwdWJsaWMgV2ViVVJMTG9hZGVyRmFjdG9yeQoreworcHVibGljOgorICAgIFdlYlVSTExvYWRl
ck1vY2tGYWN0b3J5KCk7CisKKyAgICAvLyBSZWdpc3RlcnMgYSByZXNwb25zZSBhbmQgdGhlIGNv
bnRlbnRzIHRvIGJlIHNlcnZlZCB3aGVuIHRoZSBzcGVjaWZpZWQgVVJMCisgICAgLy8gaXMgbG9h
ZGVkLgorICAgIHZvaWQgcmVnaXN0ZXJVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwKKyAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNl
LAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRo
KTsKKworICAgIC8vIFNlcnZlcyBhbGwgdGhlIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3Rz
LgorICAgIHZvaWQgc2VydmVBc3luY2hyb25vdXNSZXF1ZXN0cygpOworCisgICAgLy8gQ2FsbGVk
IGJ5IHRoZSBsb2FkZXIgdG8gbG9hZCBhIHJlc291cmNlLgorICAgIHZvaWQgbG9hZFN5bmNocm9u
b3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViS2l0OjpXZWJVUkxFcnJvciYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJL
aXQ6OldlYkRhdGEmIGRhdGEpOworICAgIHZvaWQgbG9hZEFzeW5jaHJvbm91bHkoY29uc3QgV2Vi
S2l0OjpXZWJVUkxSZXF1ZXN0JiwgV2ViVVJMTG9hZGVyTW9jayopOworCisgICAgLy8gUmVtb3Zl
cyB0aGUgbG9hZGVyIGZyb20gdGhlIGxpc3Qgb2YgcGVuZGluZyBsb2FkZXJzLgorICAgIHZvaWQg
Y2FuY2VsTG9hZChXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpOworCisgICAgLy8gV2ViVVJMTG9h
ZGVyRmFjdG9yeSBpbXBsZW1lbnRhdGlvbjoKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVVJMTG9h
ZGVyKiBjcmVhdGVVUkxMb2FkZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUmVzcG9uc2VJ
bmZvIHsKKyAgICAgICAgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAg
ICBXZWJDb3JlOjpTdHJpbmcgbV9maWxlUGF0aDsKKyAgICB9OworCisgICAgLy8gTG9hZHMgdGhl
IHNwZWNpZmllZCByZXF1ZXN0IGFuZCBwb3B1bGF0ZSB0aGUgcmVzcG9uc2UsZXJyb3IgYW5kIGRh
dGEKKyAgICAvLyBhY2NvcmRpbmdseS4KKyAgICAvLyBJZiB0aGUgVVJMIGZyb20gdGhlIHJlcXVl
c3Qgd2FzIG5vdCByZWdpc3RlcmVkIGEgNDA0IGlzIGdlbmVyYXRlZC4KKyAgICB2b2lkIGxvYWRS
ZXF1ZXN0KGNvbnN0IFdlYktpdDo6V2ViVVJMUmVxdWVzdCYsCisgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJiwKKyAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6
V2ViVVJMRXJyb3ImLAorICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJEYXRhJiBkYXRh
KTsKKworICAgIC8vIFJlYWRzIHxtX2ZpbGVQYXRofCBhbmQgcHV0cyBpdHMgY29udGVudCBpbiB8
ZGF0YXwuCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IHN1Y2Nlc3NmdWxseSByZWFkIHRoZSBm
aWxlLgorICAgIHN0YXRpYyBib29sIHJlYWRGaWxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgZmls
ZVBhdGgsIFdlYktpdDo6V2ViRGF0YSYgZGF0YSk7CisKKyAgICAvLyBUaGUgbG9hZGVycyB0aGF0
IGhhdmUgbm90IGJlaW5nIHNlcnZlZCBkYXRhIHlldC4KKyAgICB0eXBlZGVmIHN0ZDo6bWFwPFdl
YlVSTExvYWRlck1vY2sqLCBXZWJLaXQ6OldlYlVSTFJlcXVlc3Q+IExvYWRlclRvUmVxdWVzdE1h
cDsKKyAgICBMb2FkZXJUb1JlcXVlc3RNYXAgbV9wZW5kaW5nTG9hZGVyczsKKworICAgIC8vIFRh
YmxlIG9mIHRoZSByZWdpc3RlcmVkIFVSTHMgYW5kIHRoZSByZXNwb25zZSB0aGF0IHRoZXkgc2hv
dWxkIHJlY2VpdmUuCisgICAgdHlwZWRlZiBzdGQ6Om1hcDxXZWJLaXQ6OldlYlVSTCwgUmVzcG9u
c2VJbmZvPiBVUkxUb1Jlc3BvbnNlTWFwOworICAgIFVSTFRvUmVzcG9uc2VNYXAgbV91cmxUb1Jl
cG9uc2VJbmZvOworfTsKKworI2VuZGlmIC8vIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5X2gKKwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwNCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNfdGVzdC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKzxodG1sPg0KKzxib2R5Pg0KKyAgPGlm
cmFtZSBzcmM9InZpc2libGVfaWZyYW1lLmh0bWwiPjwvaWZyYW1lPg0KKyAgPGlmcmFtZSB3aWR0
aD0wIGhlaWdodD0wIHNyYz0iemVyb19zaXplZF9pZnJhbWUuaHRtbCI+PC9pZnJhbWU+DQorICA8
aWZyYW1lIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiIHNyYz0iaW52aXNpYmxlX2lmcmFtZS5o
dG1sIj48L2lmcmFtZT4NCisgIDxwPlRoaXMgaXMgYSB2aXNpYmxlIHBhcmFncmFwaC48L3A+DQor
ICA8cCBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47Ij5UaGlzIGlzIGFuIGludmlzaWJsZSBwYXJh
Z3JhcGguPC9wPg0KKzwvYm9keT4NCis8L2h0bWw+DQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysg
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUgQEAKKzxodG1sPg0KKzxib2R5Pg0KK1RoaXMgaXMgYW4gaW52aXNp
YmxlIGZyYW1lLg0KKzwvYm9keT4NCis8L2h0bWw+DQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL2RhdGEvdmlzaWJsZV9pZnJhbWUuaHRtbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJL
aXQvY2hyb21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUgQEAKKzxodG1sPg0KKzxib2R5Pg0KK1RoaXMgaXMgYSB2aXNpYmxlIGlmcmFt
ZS4NCis8L2JvZHk+DQorPC9odG1sPg0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1IEBACis8aHRtbD4NCis8Ym9keT4NCitUaGlzIGlzIGFuIGlmcmFtZSB3aXRo
IHplcm8gc2l6ZS4NCis8L2JvZHk+DQorPC9odG1sPg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56715</attachid>
            <date>2010-05-21 09:28:17 -0700</date>
            <delta_ts>2010-06-14 14:55:10 -0700</delta_ts>
            <desc>Style fixing</desc>
            <filename>webframe.patch</filename>
            <type>text/plain</type>
            <size>31709</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTk4NzMpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNS0yMCAgSmF5IENpdmVsbGkgIDxq
Y2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZXMgRHVtcFJlbmRlclRyZWUgd29yayB3aXRoIHRoZSBuZXcgd2Vi
a2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50LgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAobWFpbik6
CisKIDIwMTAtMDUtMjAgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRHVtcFJlbmRlclRyZWUuY3BwCShy
ZXZpc2lvbiA1OTgzMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0R1
bXBSZW5kZXJUcmVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMg
dm9pZCBydW5UZXN0KFRlc3RTaGVsbCYgc2hlbGwsIFRlCiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiBhcmd2W10pCiB7Ci0gICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50
KCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50KGZhbHNlKTsKIAog
ICAgIFRlc3RQYXJhbXMgcGFyYW1zOwogICAgIFZlY3RvcjxzdHJpbmc+IHRlc3RzOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU5ODczKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDEwLTA1LTIwICBKYXkgQ2l2ZWxs
aSAgPGpjaXZlbGxpQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQgZnJv
bSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBmcmFt
ZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4ZWQg
b3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIEFsc28gYWRk
ZWQgYSB3YXkgdG8gbW9jayBVUkwgbG9hZGluZyBpbiB1bml0LXRlc3RzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorICAgICAg
ICAKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNTdHJpbmcu
aDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTDo6
b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNTdHJpbmc6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmZyYW1lQ29udGVudEFzUGxhaW5UZXh0KToKKyAgICAgICAg
KiB0ZXN0cy9SdW5BbGxUZXN0cy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiB0ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJN
b2NrLmNwcDogQWRkZWQuCisgICAgICAgICogdGVzdHMvV2ViVVJMTG9hZGVyTW9jay5oOiBBZGRl
ZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5Lmg6IEFkZGVkLgorICAgICAg
ICAqIHRlc3RzL2RhdGE6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaWZyYW1lc190ZXN0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbDogQWRkZWQuCisK
IDIwMTAtMDUtMjAgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNp
b24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpA
QCAtNTEwLDYgKzUxMCw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
dGVzdGluZy9ndGVzdC5neXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3Ny
Y19kaXIpL2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1f
c3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNo
cm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRf
c3VwcG9ydCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsK
ICAgICAgICAgICAgICAgICAncHVibGljJywKQEAgLTUyMCw2ICs1MjEsMTEgQEAKICAgICAgICAg
ICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3RzL1J1bkFsbFRlc3RzLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAorICAgICAgICAgICAg
ICAgICd0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3Rz
L1dlYlVSTExvYWRlck1vY2suaCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRl
ck1vY2tGYWN0b3J5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYlVSTExvYWRlck1v
Y2tGYWN0b3J5LmgnLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzog
WwogICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDU3RyaW5nLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOSBAQCBwdWJsaWM6
CiAgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViQ1N0cmluZyBmcm9tVVRGMTYoY29uc3QgV2ViVUNo
YXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpOwogICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkNTdHJp
bmcgZnJvbVVURjE2KGNvbnN0IFdlYlVDaGFyKiBkYXRhKTsKIAorICAgIC8vIEFsbG93cyBXZWJD
U3RyaW5nIHRvIGJlIHVzZWQgYXMgYSBrZXkgaW4gU1RMIGNvbnRhaW5lcnMoc3RkOjpzZXQsIHN0
ZDo6bWFwLCBldGMpLgorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdlYkNTdHJpbmcmIG90aGVy
KSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYkNTdHJpbmcoY29u
c3QgV1RGOjpDU3RyaW5nJik7CiAgICAgV2ViQ1N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IFdURjo6
Q1N0cmluZyYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgJKHJldmlzaW9uIDU5ODcy
KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisg
ICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViVVJMJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX3NwZWMgPCBvdGhlci5tX3NwZWM7CisgICAgfQorCisKICAgICB2b2lkIGFz
c2lnbihjb25zdCBXZWJDU3RyaW5nJiBzcGVjLCBjb25zdCB1cmxfcGFyc2U6OlBhcnNlZCYgcGFy
c2VkLCBib29sIGlzVmFsaWQpCiAgICAgewogICAgICAgICBtX3NwZWMgPSBzcGVjOwpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ1N0cmluZy5jcHAJKHJldmlzaW9uIDU5ODcyKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
MTkgQEAgV2ViQ1N0cmluZyBXZWJDU3RyaW5nOjpmcm9tVVRGMTYoY29uc3QgVwogICAgIHJldHVy
biBmcm9tVVRGMTYoZGF0YSwgbGVuKTsKIH0KIAorYm9vbCBXZWJDU3RyaW5nOjpvcGVyYXRvcjwo
Y29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3ByaXZhdGUgJiYg
b3RoZXIubV9wcml2YXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX3ByaXZh
dGUgJiYgIW90aGVyLm1fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIHN0cm5jbXAobV9wcml2YXRlLT5kYXRhKCksIG90aGVyLm1fcHJpdmF0ZS0+ZGF0YSgpLAor
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluKG1fcHJpdmF0ZS0+bGVuZ3RoKCksCisgICAgICAg
ICAgICAgICAgICAgb3RoZXIubV9wcml2YXRlLT5sZW5ndGgoKSkpIDwgMDsKK30KKwogV2ViQ1N0
cmluZzo6V2ViQ1N0cmluZyhjb25zdCBXVEY6OkNTdHJpbmcmIHMpCiAgICAgOiBtX3ByaXZhdGUo
c3RhdGljX2Nhc3Q8V2ViQ1N0cmluZ1ByaXZhdGUqPihzLmJ1ZmZlcigpKSkKIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNTk4NzIpCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2
ICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRleHQoc2l6ZQogICAg
IC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNoaWxkcmVuLgogICAgIEZyYW1lVHJlZSogZnJhbWVU
cmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBmb3IgKEZyYW1lKiBjdXJDaGlsZCA9IGZyYW1lVHJl
ZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsgY3VyQ2hpbGQgPSBjdXJDaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgdGV4dCBvZiBub24tdmlzaWJs
ZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IGN1ckNoaWxk
LT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlciA9
IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7ICAgICAgICAKKyAgICAgICAgaWYgKCFjb250ZW50
UmVuZGVyZXIgfHwgIWNvbnRlbnRSZW5kZXJlci0+d2lkdGgoKSB8fCAhY29udGVudFJlbmRlcmVy
LT5oZWlnaHQoKQorICAgICAgICAgICAgfHwgKGNvbnRlbnRSZW5kZXJlci0+eCgpICsgY29udGVu
dFJlbmRlcmVyLT53aWR0aCgpIDw9IDApIHx8IChjb250ZW50UmVuZGVyZXItPnkoKSArIGNvbnRl
bnRSZW5kZXJlci0+aGVpZ2h0KCkgPD0gMCkKKyAgICAgICAgICAgIHx8IChvd25lclJlbmRlcmVy
ICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCkgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKS0+dmlz
aWJpbGl0eSgpICE9IFZJU0lCTEUpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUgc2VwYXJhdG9yIHdvbid0IGZpbGwg
dXAgdGhlIGJ1ZmZlciwgYW5kIGdpdmUgdXAgaWYKICAgICAgICAgLy8gaXQgd2lsbC4gVGhlIGRh
bmdlciBpcyBpZiB0aGUgc2VwYXJhdG9yIHdpbGwgbWFrZSB0aGUgYnVmZmVyIGxvbmdlciB0aGFu
CiAgICAgICAgIC8vIG1heENoYXJzLiBUaGlzIHdpbGwgY2F1c2UgdGhlIGNvbXB1dGF0aW9uIGFi
b3ZlOgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHJldmlzaW9u
IDU5ODcyKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTggKzMzLDE1IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNs
dWRlICJXZWJLaXRDbGllbnQuaCIKLQotLy8gV2ViS2l0Q2xpZW50IGhhcyBhIHByb3RlY3RlZCBk
ZXN0cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNzLgotY2xhc3MgRHVtbXlXZWJLaXRDbGll
bnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJLaXRDbGllbnQgewotfTsKKyNpbmNsdWRlIDx3ZWJraXQv
c3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCiB7Ci0gICAgRHVtbXlXZWJLaXRDbGllbnQgZHVtbXlDbGllbnQ7Ci0gICAgV2ViS2l0Ojpp
bml0aWFsaXplKCZkdW1teUNsaWVudCk7Ci0KLSAgICBpbnQgcmVzdWx0ID0gVGVzdFN1aXRlKGFy
Z2MsIGFyZ3YpLlJ1bigpOwotCi0gICAgV2ViS2l0OjpzaHV0ZG93bigpOworICAgIFRlc3RTdWl0
ZSB0ZXN0U3VpdGUoYXJnYywgYXJndik7CisgICAgLy8gVGVzdFN1aXRlIG11c3QgYmUgY3JlYXRl
ZCBiZWZvcmUgU2V0VXBUZXN0RW52aXJvbm1lbnQgaXMgY2FsbGVkIHNvIGl0CisgICAgLy8gaGFz
IGluaXRpYWxpemVkIEF0RXhpdE1hbmFnZXIgYW5kIElDVS4KKyAgICB3ZWJraXRfc3VwcG9ydDo6
U2V0VXBUZXN0RW52aXJvbm1lbnQodHJ1ZSk7CisgICAgaW50IHJlc3VsdCA9IHRlc3RTdWl0ZS5S
dW4oKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVU
ZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRl
c3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIEJhc2ljIHRlc3RzIHRoYXQg
dmVyaWZ5IG91ciBLVVJMJ3MgaW50ZXJmYWNlIGJlaGF2ZXMgdGhlIHNhbWUgYXMgdGhlCisvLyBv
cmlnaW5hbCBLVVJMJ3MuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPGdvb2ds
ZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSAid2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2lu
Y2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuaCIKKyNpbmNs
dWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViRnJhbWVUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYkZyYW1lVGVzdCgpIHt9CisKKyAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsKKyAgICAgICAgVGVzdFdlYktpdENsaWVudCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8VGVzdFdlYktpdENsaWVudCo+KHdlYmtpdF9zdXBwb3J0OjpHZXRX
ZWJLaXRDbGllbnQoKSk7CisgICAgICAgIGNsaWVudC0+c2V0X3VybF9sb2FkZXJfZmFjdG9yeSgm
bV91cmxMb2FkZXJGYWN0b3J5KTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkK
KyAgICB7CisgICAgICAgIFRlc3RXZWJLaXRDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PFRl
c3RXZWJLaXRDbGllbnQqPih3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Q2xpZW50KCkpOworICAg
ICAgICBjbGllbnQtPnNldF91cmxfbG9hZGVyX2ZhY3RvcnkoMCk7CisgICAgfQorCisgICAgdm9p
ZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlVSTFJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAg
ICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3RE
aXIoKS51dGY4KCk7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZCgiL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhLyIpOworICAgICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUudXRmOCgpKTsK
KyAgICAgICAgbV91cmxMb2FkZXJGYWN0b3J5LnJlZ2lzdGVyVVJMKHVybCwgcmVzcG9uc2UsIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGguY19zdHIoKSkpOworICAgIH0KKworICAgIHZvaWQg
c2VydmVSZXF1ZXN0cygpCisgICAgeworICAgICAgICBtX3VybExvYWRlckZhY3Rvcnkuc2VydmVB
c3luY2hyb25vdXNSZXF1ZXN0cygpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2ViVVJM
TG9hZGVyTW9ja0ZhY3RvcnkgbV91cmxMb2FkZXJGYWN0b3J5OworfTsKKworY2xhc3MgVGVzdFdl
YkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKK1RFU1RfRihXZWJG
cmFtZVRlc3QsIENvbnRlbnRUZXh0KQoreworICAgIC8vIFJlZ2lzdGVyIG91ciByZXNvdXJjZXMu
CisgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgcmVzcG9uc2UuaW5pdGlhbGl6ZSgp
OworICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKFdlYlN0cmluZzo6ZnJvbVVURjgoInRleHQvaHRt
bCIpKTsKKyAgICBzdGQ6OnN0cmluZyByb290VVJMID0gImh0dHA6Ly93d3cudGVzdC5jb20vIjsK
KyAgICBjb25zdCBjaGFyKiBmaWxlc1tdID0geyAiaWZyYW1lc190ZXN0Lmh0bWwiLCAidmlzaWJs
ZV9pZnJhbWUuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmlzaWJsZV9p
ZnJhbWUuaHRtbCIsICJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIiB9OworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgYXJyYXlzaXplKGZpbGVzKTsgKytpKSB7CisgICAgICAgIFdlYlVSTCB3ZWJVUkwg
PSBHVVJMKHJvb3RVUkwgKyBmaWxlc1tpXSk7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9h
ZCh3ZWJVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVzW2ldKSk7CisgICAg
fQorCisgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBXZWJWaWV3LiAgICAKKyAgICBU
ZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9
IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3
ZWJGcmFtZUNsaWVudCk7CisKKyAgICAvLyBMb2FkIHRoZSBtYWluIGZyYW1lIFVSTC4KKyAgICBX
ZWJVUkwgdGVzdFVSTChHVVJMKHJvb3RVUkwgKyBmaWxlc1swXSkpOworICAgIFdlYlVSTFJlcXVl
c3QgdXJsUmVxdWVzdDsKKyAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICB1cmxSZXF1
ZXN0LnNldFVSTCh0ZXN0VVJMKTsKKyAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVl
c3QodXJsUmVxdWVzdCk7CisKKyAgICAvLyBMb2FkIGFsbCBwZW5kaW5nIGFzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBOb3cgcmV0cmlldmUgdGhl
IGZyYW1lcyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMgdmlzaWJsZSBlbGVtZW50cy4K
KyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRB
c1RleHQoMTAyNCkudXRmOCgpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29u
dGVudC5maW5kKCIgdmlzaWJsZSBwYXJhZ3JhcGgiKSk7CisgICAgRVhQRUNUX05FKHN0ZDo6c3Ry
aW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIGlmcmFtZSIpKTsKKyAgICBFWFBFQ1Rf
RVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGludmlzaWJsZSBwYXJhcmFwaCIp
KTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGludmlz
aWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50
LmZpbmQoImlmcmFtZSB3aXRoIHplcm8gc2l6ZSIpKTsKK30KKworfQpJbmRleDogV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2suY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRl
ck1vY2suaCIKKworI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJXZWJDU3RyaW5n
LmgiCisjaW5jbHVkZSAiV2ViRGF0YS5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViVVJM
UmVzcG9uc2UuaCIKKworV2ViVVJMTG9hZGVyTW9jazo6V2ViVVJMTG9hZGVyTW9jayhXZWJVUkxM
b2FkZXJNb2NrRmFjdG9yeSogZmFjdG9yeSkKKyAgICA6IG1fZmFjdG9yeShmYWN0b3J5KSwKKyAg
ICAgIG1fY2xpZW50KDApCit7Cit9CisKK1dlYlVSTExvYWRlck1vY2s6On5XZWJVUkxMb2FkZXJN
b2NrKCkKK3sKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjpzZXJ2ZUFzeW5jaHJvbm91c1Jl
cXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYkRh
dGEmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvcikKK3sKKyAgICBpZiAoIW1fY2xpZW50
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKHRo
aXMsIHJlc3BvbnNlKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YS5k
YXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBtX2NsaWVudC0+ZGlkRmluaXNoTG9hZGluZyh0aGlz
KTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjpsb2FkU3luY2hyb25vdXNseShjb25zdCBX
ZWJLaXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiBl
cnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpX
ZWJEYXRhJiBkYXRhKQoreworICAgIG1fZmFjdG9yeS0+bG9hZFN5bmNocm9ub3VzbHkocmVxdWVz
dCwgcmVzcG9uc2UsIGVycm9yLCBkYXRhKTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjps
b2FkQXN5bmNocm9ub3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxM
b2FkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IGNsaWVudDsKKyAgICBtX2Zh
Y3RvcnktPmxvYWRBc3luY2hyb25vdWx5KHJlcXVlc3QsIHRoaXMpOworfQorCit2b2lkIFdlYlVS
TExvYWRlck1vY2s6OmNhbmNlbCgpCit7CisgICAgbV9jbGllbnQgPSAwOworICAgIG1fZmFjdG9y
eS0+Y2FuY2VsTG9hZCh0aGlzKTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrOjpzZXREZWZl
cnNMb2FkaW5nKGJvb2wpCit7Cit9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVVJM
TG9hZGVyTW9jay5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVS
TExvYWRlck1vY2suaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJV
UkxMb2FkZXJNb2NrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YlVSTExvYWRlck1vY2tfaAorI2RlZmluZSBXZWJVUkxMb2FkZXJNb2NrX2gKKworI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlci5oIgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYkRhdGE7CitzdHJ1Y3QgV2ViVVJMRXJyb3I7CitjbGFzcyBXZWJVUkxM
b2FkZXJDbGllbnQ7CitjbGFzcyBXZWJVUkxSZXF1ZXN0OworY2xhc3MgV2ViVVJMUmVzcG9uc2U7
Cit9CisKK2NsYXNzIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5OworCisvLyBBIHNpbXBsZSBjbGFz
cyBmb3IgbW9ja2luZyBXZWJVUkxMb2FkZXIuCisvLyBEZWZlcnMgbW9zdCBvZiBpdHMgd29yayB0
byB0aGUgV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrIDog
cHVibGljIFdlYktpdDo6V2ViVVJMTG9hZGVyIHsKK3B1YmxpYzoKKyAgICBXZWJVUkxMb2FkZXJN
b2NrKFdlYlVSTExvYWRlck1vY2tGYWN0b3J5KiBmYWN0b3J5KTsKKyAgICB2aXJ0dWFsIH5XZWJV
UkxMb2FkZXJNb2NrKCk7CisKKyAgICAvLyBTaW11bGF0ZXMgdGhlIGFzeW5jaHJvdW5vdXMgcmVx
dWVzdCBiZWluZyBzZXJ2ZWQuCisgICAgdm9pZCBzZXJ2ZUFzeW5jaHJvbm91c1JlcXVlc3QoY29u
c3QgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYsIGNvbnN0IFdlYktpdDo6V2ViRGF0YSYsIGNvbnN0
IFdlYktpdDo6V2ViVVJMRXJyb3ImKTsKKworICAgIC8vIFdlYlVSTExvYWRlciBtZXRob2RzOgor
ICAgIHZpcnR1YWwgdm9pZCBsb2FkU3luY2hyb25vdXNseShjb25zdCBXZWJLaXQ6OldlYlVSTFJl
cXVlc3QmLCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJiwgV2ViS2l0OjpXZWJVUkxFcnJvciYsIFdl
YktpdDo6V2ViRGF0YSYgZGF0YSk7CisgICAgdmlydHVhbCB2b2lkIGxvYWRBc3luY2hyb25vdXNs
eShjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmLCBXZWJLaXQ6OldlYlVSTExvYWRlckNsaWVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhib29sKTsKKworcHJpdmF0ZToKKyAgICBXZWJVUkxMb2FkZXJNb2NrRmFjdG9y
eSogbV9mYWN0b3J5OworICAgIFdlYktpdDo6V2ViVVJMTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsK
K307CisKKyNlbmRpZiAvLyBXZWJVUkxMb2FkZXJNb2NrX2gKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9XZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5LmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCisjaW5jbHVkZSAi
V2ViVVJMTG9hZGVyTW9jay5oIgorI2luY2x1ZGUgIldlYlVSTExvYWRlck1vY2tGYWN0b3J5Lmgi
CisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorCitXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6
V2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkoKQoreworfQordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFj
dG9yeTo6cmVnaXN0ZXJVUkwoY29uc3QgV2ViS2l0OjpXZWJVUkwmIHVybCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYktpdDo6V2ViVVJMUmVzcG9u
c2UmIHJlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZpbGVQYXRoKQoreworICAgIFJlc3BvbnNlSW5mbyBy
ZXNwb25zZUluZm87CisgICAgcmVzcG9uc2VJbmZvLm1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAg
ICBpZiAoIWZpbGVQYXRoLmlzTnVsbCgpICYmICFmaWxlUGF0aC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgcmVzcG9uc2VJbmZvLm1fZmlsZVBhdGggPQorICAgICAgICAgICAgV2ViQ29yZTo6U3RyaW5n
Ojpmcm9tVVRGOChmaWxlUGF0aC51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmaWxlUGF0aC51dGY4KCkubGVuZ3RoKCkpOworICAgICAgICBBU1NF
UlQoV2ViQ29yZTo6ZmlsZUV4aXN0cyhyZXNwb25zZUluZm8ubV9maWxlUGF0aCkpOworICAgIH0K
KworICAgIEFTU0VSVChtX3VybFRvUmVwb25zZUluZm8uZmluZCh1cmwpID09IG1fdXJsVG9SZXBv
bnNlSW5mby5lbmQoKSk7CisgICAgbV91cmxUb1JlcG9uc2VJbmZvW3VybF0gPSByZXNwb25zZUlu
Zm87Cit9CisKK3ZvaWQgV2ViVVJMTG9hZGVyTW9ja0ZhY3Rvcnk6OnNlcnZlQXN5bmNocm9ub3Vz
UmVxdWVzdHMoKQoreworICAgIC8vIFNlcnZpbmcgYSByZXF1ZXN0IG1pZ2h0IHRyaWdnZXIgbW9y
ZSByZXF1ZXN0cywgc28gd2UgY2Fubm90IGl0ZXJhdGUgb24KKyAgICAvLyBtX3BlbmRpbmdMb2Fk
ZXJzIGFzIGl0IG1pZ2h0IGdldCBtb2RpZmllZC4KKyAgICB3aGlsZSAoIW1fcGVuZGluZ0xvYWRl
cnMuZW1wdHkoKSkgeworICAgICAgICBMb2FkZXJUb1JlcXVlc3RNYXA6Oml0ZXJhdG9yIGl0ZXIg
PSBtX3BlbmRpbmdMb2FkZXJzLmJlZ2luKCk7CisgICAgICAgIFdlYlVSTExvYWRlck1vY2sqIGxv
YWRlciA9IGl0ZXItPmZpcnN0OworICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3Qm
IHJlcXVlc3QgPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2Ug
cmVzcG9uc2U7CisgICAgICAgIFdlYktpdDo6V2ViVVJMRXJyb3IgZXJyb3I7CisgICAgICAgIFdl
YktpdDo6V2ViRGF0YSBkYXRhOworICAgICAgICBsb2FkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25z
ZSwgZXJyb3IsIGRhdGEpOworICAgICAgICBsb2FkZXItPnNlcnZlQXN5bmNocm9ub3VzUmVxdWVz
dChyZXNwb25zZSwgZGF0YSwgZXJyb3IpOworICAgICAgICBtX3BlbmRpbmdMb2FkZXJzLmVyYXNl
KGl0ZXIpOworICAgIH0KK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6Y2FuY2Vs
TG9hZChXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9hZGVyVG9SZXF1ZXN0TWFw
OjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxvYWRlcik7CisgICAgQVNT
RVJUKGl0ZXIgIT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAgbV9wZW5kaW5nTG9hZGVy
cy5lcmFzZShpdGVyKTsKK30KKworV2ViS2l0OjpXZWJVUkxMb2FkZXIqIFdlYlVSTExvYWRlck1v
Y2tGYWN0b3J5OjpjcmVhdGVVUkxMb2FkZXIoKQoreworICAgIHJldHVybiBuZXcgV2ViVVJMTG9h
ZGVyTW9jayh0aGlzKTsKK30KKwordm9pZCBXZWJVUkxMb2FkZXJNb2NrRmFjdG9yeTo6bG9hZFN5
bmNocm9ub3VzbHkoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxS
ZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sK
KyAgICBsb2FkUmVxdWVzdChyZXF1ZXN0LCByZXNwb25zZSwgZXJyb3IsIGRhdGEpOworfQorCit2
b2lkIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5Ojpsb2FkQXN5bmNocm9ub3VseShjb25zdCBXZWJL
aXQ6OldlYlVSTFJlcXVlc3QmIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJVUkxMb2FkZXJNb2NrKiBsb2FkZXIpCit7CisgICAgTG9h
ZGVyVG9SZXF1ZXN0TWFwOjppdGVyYXRvciBpdGVyID0gbV9wZW5kaW5nTG9hZGVycy5maW5kKGxv
YWRlcik7CisgICAgQVNTRVJUKGl0ZXIgPT0gbV9wZW5kaW5nTG9hZGVycy5lbmQoKSk7CisgICAg
bV9wZW5kaW5nTG9hZGVyc1tsb2FkZXJdID0gcmVxdWVzdDsKK30KKwordm9pZCBXZWJVUkxMb2Fk
ZXJNb2NrRmFjdG9yeTo6bG9hZFJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiBy
ZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
OjpXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiBlcnJvciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSkKK3sKKyAg
ICBXZWJLaXQ6OldlYlVSTCB1cmwgPSByZXF1ZXN0LnVybCgpOworICAgIFVSTFRvUmVzcG9uc2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3VybFRvUmVwb25zZUluZm8uZmluZChzdGF0aWNf
Y2FzdDxHVVJMPih1cmwpKTsKKyAgICBpZiAoaXRlciA9PSBtX3VybFRvUmVwb25zZUluZm8uZW5k
KCkpIHsKKyAgICAgICAgcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoNDA0KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghcmVhZEZpbGUoaXRlci0+c2Vjb25kLm1fZmlsZVBh
dGgsIGRhdGEpKSB7CisgICAgICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDUwMCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXNwb25zZSA9IGl0ZXItPnNlY29uZC5tX3Jl
c3BvbnNlOyAgICAKK30KKworCitib29sIFdlYlVSTExvYWRlck1vY2tGYWN0b3J5OjpyZWFkRmls
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGZpbGVQYXRoLCBXZWJLaXQ6OldlYkRhdGEmIGRhdGEp
Cit7CisgICAgV2ViQ29yZTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZpbGUgPSBXZWJDb3JlOjpvcGVu
RmlsZShmaWxlUGF0aCwgV2ViQ29yZTo6T3BlbkZvclJlYWQpOworICAgIGlmIChmaWxlID09IFdl
YkNvcmU6OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBsb25nIGxvbmcgZmlsZVNpemUgPSAwOworICAgIGlmICghV2ViQ29yZTo6Z2V0RmlsZVNp
emUoZmlsZVBhdGgsIGZpbGVTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6
ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGZpbGVTaXplKTsKKyAgICBjaGFyKiBidWZm
ZXIgPSBuZXcgY2hhcltzaXplXTsKKyAgICBkYXRhLnJlc2V0KCk7CisgICAgaW50IHJlYWRDb3Vu
dCA9IFdlYkNvcmU6OnJlYWRGcm9tRmlsZShmaWxlLCBidWZmZXIsIHNpemUpOworICAgIFdlYkNv
cmU6OmNsb3NlRmlsZShmaWxlKTsKKyAgICBBU1NFUlQocmVhZENvdW50ID09IHNpemUpOworICAg
IGRhdGEuYXNzaWduKGJ1ZmZlciwgc2l6ZSk7CisgICAgZGVsZXRlIGJ1ZmZlcjsKKworICAgIHJl
dHVybiB0cnVlOworfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlVSTExvYWRlck1v
Y2tGYWN0b3J5LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVVJM
TG9hZGVyTW9ja0ZhY3RvcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJVUkxMb2FkZXJNb2NrRmFjdG9yeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnlfaAorI2RlZmluZSBXZWJVUkxMb2Fk
ZXJNb2NrRmFjdG9yeV9oCisKKyNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8dmVjdG9yPgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVk
ZSAiV2ViVVJMTG9hZGVyLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRl
ICJ3ZWJraXQvc3VwcG9ydC90ZXN0X3dlYmtpdF9jbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJEYXRhOworfQorCitjbGFzcyBXZWJVUkxMb2FkZXJNb2NrOworCisvLyBB
IGZhY3RvcnkgdGhhdCBjcmVhdGVzIFdlYlVSTExvYWRlck1vY2sgdG8gc2ltdWxhdGUgcmVzb3Vy
Y2UgbG9hZGluZyBpbgorLy8gdGVzdHMuCisvLyBZb3UgcmVnaXN0ZXIgZmlsZXMgZm9yIHNwZWNp
ZmljIFVSTHMsIHRoZSBjb250ZW50IG9mIHRoZSBmaWxlIGlzIHRoZW4gc2VydmVkCisvLyB3aGVu
IHRoZXNlIFVSTHMgYXJlIGxvYWRlZC4KKy8vIEluIG9yZGVyIHRvIHNlcnZlIHRoZSBhc3luY2hy
b25vdXMgcmVxdWVzdHMsIHlvdSBuZWVkIHRvIGludm9rZQorLy8gc2VydmVBc3luY2hyb25vdXNS
ZXF1ZXN0IGluIHlvdXIgdGVzdC4KKy8vCisvLyBTZWUgV2ViRnJhbWVUZXN0LmNwcCBmb3IgYW4g
ZXhhbXBsZSBvZiBob3cgdGhpcyBpcyB1c2VkLgorLy8KKworY2xhc3MgV2ViVVJMTG9hZGVyTW9j
a0ZhY3RvcnkgOiBwdWJsaWMgV2ViVVJMTG9hZGVyRmFjdG9yeSB7CitwdWJsaWM6CisgICAgV2Vi
VVJMTG9hZGVyTW9ja0ZhY3RvcnkoKTsKKworICAgIC8vIFJlZ2lzdGVycyBhIHJlc3BvbnNlIGFu
ZCB0aGUgY29udGVudHMgdG8gYmUgc2VydmVkIHdoZW4gdGhlIHNwZWNpZmllZCBVUkwKKyAgICAv
LyBpcyBsb2FkZWQuCisgICAgdm9pZCByZWdpc3RlclVSTChjb25zdCBXZWJLaXQ6OldlYlVSTCYg
dXJsLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYg
cmVzcG9uc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYg
ZmlsZVBhdGgpOworCisgICAgLy8gU2VydmVzIGFsbCB0aGUgcGVuZGluZyBhc3luY2hyb25vdXMg
cmVxdWVzdHMuCisgICAgdm9pZCBzZXJ2ZUFzeW5jaHJvbm91c1JlcXVlc3RzKCk7CisKKyAgICAv
LyBDYWxsZWQgYnkgdGhlIGxvYWRlciB0byBsb2FkIGEgcmVzb3VyY2UuCisgICAgdm9pZCBsb2Fk
U3luY2hyb25vdXNseShjb25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0OjpXZWJVUkxSZXNwb25zZSYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJLaXQ6OldlYlVSTEVycm9yJiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYktpdDo6V2ViRGF0YSYgZGF0YSk7CisgICAgdm9pZCBsb2FkQXN5bmNocm9ub3VseShj
b25zdCBXZWJLaXQ6OldlYlVSTFJlcXVlc3QmLCBXZWJVUkxMb2FkZXJNb2NrKik7CisKKyAgICAv
LyBSZW1vdmVzIHRoZSBsb2FkZXIgZnJvbSB0aGUgbGlzdCBvZiBwZW5kaW5nIGxvYWRlcnMuCisg
ICAgdm9pZCBjYW5jZWxMb2FkKFdlYlVSTExvYWRlck1vY2sqIGxvYWRlcik7CisKKyAgICAvLyBX
ZWJVUkxMb2FkZXJGYWN0b3J5IGltcGxlbWVudGF0aW9uOgorICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJVUkxMb2FkZXIqIGNyZWF0ZVVSTExvYWRlcigpOworCitwcml2YXRlOgorICAgIHN0cnVjdCBS
ZXNwb25zZUluZm8geworICAgICAgICBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlIG1fcmVzcG9uc2U7
CisgICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX2ZpbGVQYXRoOworICAgIH07CisKKyAgICAvLyBM
b2FkcyB0aGUgc3BlY2lmaWVkIHJlcXVlc3QgYW5kIHBvcHVsYXRlIHRoZSByZXNwb25zZSxlcnJv
ciBhbmQgZGF0YQorICAgIC8vIGFjY29yZGluZ2x5LgorICAgIC8vIElmIHRoZSBVUkwgZnJvbSB0
aGUgcmVxdWVzdCB3YXMgbm90IHJlZ2lzdGVyZWQgYSA0MDQgaXMgZ2VuZXJhdGVkLgorICAgIHZv
aWQgbG9hZFJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiwKKyAgICAgICAgICAg
ICAgICAgICAgIFdlYktpdDo6V2ViVVJMUmVzcG9uc2UmLAorICAgICAgICAgICAgICAgICAgICAg
V2ViS2l0OjpXZWJVUkxFcnJvciYsCisgICAgICAgICAgICAgICAgICAgICBXZWJLaXQ6OldlYkRh
dGEmIGRhdGEpOworCisgICAgLy8gUmVhZHMgfG1fZmlsZVBhdGh8IGFuZCBwdXRzIGl0cyBjb250
ZW50IGluIHxkYXRhfC4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgaXQgc3VjY2Vzc2Z1bGx5IHJl
YWQgdGhlIGZpbGUuCisgICAgc3RhdGljIGJvb2wgcmVhZEZpbGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBmaWxlUGF0aCwgV2ViS2l0OjpXZWJEYXRhJiBkYXRhKTsKKworICAgIC8vIFRoZSBsb2Fk
ZXJzIHRoYXQgaGF2ZSBub3QgYmVpbmcgc2VydmVkIGRhdGEgeWV0LgorICAgIHR5cGVkZWYgc3Rk
OjptYXA8V2ViVVJMTG9hZGVyTW9jayosIFdlYktpdDo6V2ViVVJMUmVxdWVzdD4gTG9hZGVyVG9S
ZXF1ZXN0TWFwOworICAgIExvYWRlclRvUmVxdWVzdE1hcCBtX3BlbmRpbmdMb2FkZXJzOworCisg
ICAgLy8gVGFibGUgb2YgdGhlIHJlZ2lzdGVyZWQgVVJMcyBhbmQgdGhlIHJlc3BvbnNlIHRoYXQg
dGhleSBzaG91bGQgcmVjZWl2ZS4KKyAgICB0eXBlZGVmIHN0ZDo6bWFwPFdlYktpdDo6V2ViVVJM
LCBSZXNwb25zZUluZm8+IFVSTFRvUmVzcG9uc2VNYXA7CisgICAgVVJMVG9SZXNwb25zZU1hcCBt
X3VybFRvUmVwb25zZUluZm87Cit9OworCisjZW5kaWYgLy8gV2ViVVJMTG9hZGVyTW9ja0ZhY3Rv
cnlfaAorCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRt
bA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNfdGVz
dC5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1l
c190ZXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8Ym9keT4K
KyAgPGlmcmFtZSBzcmM9InZpc2libGVfaWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorICA8aWZyYW1l
IHdpZHRoPTAgaGVpZ2h0PTAgc3JjPSJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIj48L2lmcmFtZT4K
KyAgPGlmcmFtZSBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47IiBzcmM9ImludmlzaWJsZV9pZnJh
bWUuaHRtbCI+PC9pZnJhbWU+CisgIDxwPlRoaXMgaXMgYSB2aXNpYmxlIHBhcmFncmFwaC48L3A+
CisgIDxwIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiPlRoaXMgaXMgYW4gaW52aXNpYmxlIHBh
cmFncmFwaC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBX
ZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNSBAQAorPGh0bWw+Cis8Ym9keT4KK1RoaXMgaXMgYW4gaW52aXNpYmxl
IGZyYW1lLgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvdmlzaWJsZV9pZnJhbWUuaHRtbA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUgQEAKKzxodG1sPgorPGJvZHk+CitUaGlzIGlzIGEgdmlzaWJsZSBpZnJhbWUuCis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS96ZXJvX3NpemVk
X2lmcmFtZS5odG1sDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEv
emVyb19zaXplZF9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NSBAQAorPGh0bWw+Cis8Ym9keT4KK1RoaXMgaXMgYW4gaWZyYW1lIHdpdGggemVybyBzaXplLgor
PC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="41188"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58705</attachid>
            <date>2010-06-14 14:55:10 -0700</date>
            <delta_ts>2010-06-14 15:02:05 -0700</delta_ts>
            <desc>Applied fishd suggested changes</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>11143</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTE1MSkKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wNS0yMCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJGcmFtZSBub3QgcmVwb3J0IHRoZSB0
ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29udGFpbiBoaWRk
ZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxkIG5vdCBiZSBp
bmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMOjpvcGVyYXRv
cjwpOgorICAgICAgICAqIHNyYy9XZWJDU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q1N0cmluZzo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQpOgorICAgICAgICAqIHRlc3Rz
L1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHRlc3RzL1dlYkZy
YW1lVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2suY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmg6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogdGVz
dHMvZGF0YTogQWRkZWQuCisgICAgICAgICogdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvdmlzaWJsZV9pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxMC0w
Ni0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjA5
NzApCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTIz
LDYgKzUyMyw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGVzdGlu
Zy9ndGVzdC5neXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvYmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9y
dCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAg
ICAgICAgICAgICAncHVibGljJywKQEAgLTUzMyw2ICs1MzQsNyBAQAogICAgICAgICAgICAgICAg
ICd0ZXN0cy9LZXlib2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvS1VSTFRl
c3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvUnVuQWxsVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNTdHJpbmcuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCShyZXZpc2lvbiA2MDk3MCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAor
ICAgIC8vIE9wZXJhdG9yIHJlcXVpcmVkIHRvIHB1dCBXZWJDU3RyaW5nIGluIGEgbWFwLgorICAg
IGJvb2wgbGVzc1RoYW4oY29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0OworCiAgICAgV0VC
S0lUX0FQSSB2b2lkIHJlc2V0KCk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBX
ZWJDU3RyaW5nJik7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuKTsKQEAgLTExNyw2ICsxMjAsMTEgQEAgcHJpdmF0ZToKICAgICBXZWJDU3Ry
aW5nUHJpdmF0ZSogbV9wcml2YXRlOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFdlYkNTdHJpbmcmIGEsIGNvbnN0IFdlYkNTdHJpbmcmIGIpCit7CisgICAgcmV0dXJuIGEubGVz
c1RoYW4oYik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlVSTC5oCShyZXZpc2lvbiA2MDk3MCkKKysrIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IFdlYlVSTCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zcGVjIDwg
b3RoZXIubV9zcGVjOworICAgIH0KKworCiAgICAgdm9pZCBhc3NpZ24oY29uc3QgV2ViQ1N0cmlu
ZyYgc3BlYywgY29uc3QgdXJsX3BhcnNlOjpQYXJzZWQmIHBhcnNlZCwgYm9vbCBpc1ZhbGlkKQog
ICAgIHsKICAgICAgICAgbV9zcGVjID0gc3BlYzsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ1N0cmluZy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNT
dHJpbmcuY3BwCShyZXZpc2lvbiA2MDk3MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ1N0
cmluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDIwIEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogY2xhc3MgV2ViQ1N0cmluZ1ByaXZhdGUgOiBwdWJsaWMgV1RGOjpDU3RyaW5nQnVmZmVy
IHsKIH07CiAKK2Jvb2wgV2ViQ1N0cmluZzo6bGVzc1RoYW4oY29uc3QgV2ViQ1N0cmluZyYgb3Ro
ZXIpIGNvbnN0Cit7CisgICAgLy8gQSBudWxsIHN0cmluZyBpcyBhbHdheXMgbGVzcyB0aGFuIGEg
bm9uIG51bGwgb25lLgorICAgIGlmIChpc051bGwoKSAhPSBvdGhlci5pc051bGwoKSkNCisgICAg
ICAgIHJldHVybiBpc051bGwoKTsNCisNCisgICAgaWYgKGlzTnVsbCgpKQ0KKyAgICAgICAgcmV0
dXJuIGZhbHNlOyAvLyBCb3RoIFdlYlN0cmluZ3MgYXJlIG51bGwuDQorDQorICAgIHJldHVybiBz
dHJuY21wKG1fcHJpdmF0ZS0+ZGF0YSgpLCBvdGhlci5tX3ByaXZhdGUtPmRhdGEoKSwNCisgICAg
ICAgICAgICAgICAgICAgc3RkOjptaW4obV9wcml2YXRlLT5sZW5ndGgoKSwKKyAgICAgICAgICAg
ICAgICAgICBvdGhlci5tX3ByaXZhdGUtPmxlbmd0aCgpKSkgPCAwOworfQorCiB2b2lkIFdlYkNT
dHJpbmc6OnJlc2V0KCkKIHsKICAgICBpZiAobV9wcml2YXRlKSB7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDYwOTcwKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDE1
IEBAIHN0YXRpYyB2b2lkIGZyYW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAgICAvLyBSZWN1
cnNpdmVseSB3YWxrIHRoZSBjaGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1lVHJlZSA9IGZy
YW1lLT50cmVlKCk7CiAgICAgZm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRyZWUtPmZpcnN0
Q2hpbGQoKTsgY3VyQ2hpbGQ7IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICAvLyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2libGUgZnJhbWVz
LgorICAgICAgICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGlsZC0+Y29udGVu
dFJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIgPSBjdXJDaGls
ZC0+b3duZXJSZW5kZXJlcigpOyAgICAgICAgCisgICAgICAgIGlmICghY29udGVudFJlbmRlcmVy
IHx8ICFjb250ZW50UmVuZGVyZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0
KCkKKyAgICAgICAgICAgIHx8IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRlbnRSZW5kZXJl
ci0+d2lkdGgoKSA8PSAwKSB8fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250ZW50UmVuZGVy
ZXItPmhlaWdodCgpIDw9IDApCisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJlciAmJiBvd25l
clJlbmRlcmVyLT5zdHlsZSgpICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHko
KSAhPSBWSVNJQkxFKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxsIHVwIHRoZSBi
dWZmZXIsIGFuZCBnaXZlIHVwIGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBkYW5nZXIgaXMg
aWYgdGhlIHNlcGFyYXRvciB3aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhhbgogICAgICAg
ICAvLyBtYXhDaGFycy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBhYm92ZToKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHANCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCShyZXZpc2lvbiA2MDk3MCkK
KysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDE4ICszMywxNSBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q2xpZW50LmgiCi0KLS8vIFdlYktpdENsaWVudCBoYXMgYSBwcm90ZWN0ZWQgZGVzdHJ1Y3Rv
ciwgc28gd2UgbmVlZCB0byBzdWJjbGFzcy4KLWNsYXNzIER1bW15V2ViS2l0Q2xpZW50IDogcHVi
bGljIFdlYktpdDo6V2ViS2l0Q2xpZW50IHsKLX07CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQv
d2Via2l0X3N1cHBvcnQuaD4KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewot
ICAgIER1bW15V2ViS2l0Q2xpZW50IGR1bW15Q2xpZW50OwotICAgIFdlYktpdDo6aW5pdGlhbGl6
ZSgmZHVtbXlDbGllbnQpOwotCi0gICAgaW50IHJlc3VsdCA9IFRlc3RTdWl0ZShhcmdjLCBhcmd2
KS5SdW4oKTsKLQotICAgIFdlYktpdDo6c2h1dGRvd24oKTsKKyAgICBUZXN0U3VpdGUgdGVzdFN1
aXRlKGFyZ2MsIGFyZ3YpOworICAgIC8vIFRlc3RTdWl0ZSBtdXN0IGJlIGNyZWF0ZWQgYmVmb3Jl
IFNldFVwVGVzdEVudmlyb25tZW50IHNvIGl0IHBlcmZvcm1zCisgICAgLy8gaW5pdGlhbGl6YXRp
b25zIG5lZWRlZCBieSBXZWJLaXQgc3VwcG9ydC4KKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VXBU
ZXN0RW52aXJvbm1lbnRGb3JVbml0VGVzdHMoKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVzdFN1aXRl
LlJ1bigpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOwog
ICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJh
bWVUZXN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1l
VGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGdvb2dsZXVy
bC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJ1
cmxfbG9hZGVyX21vY2tfZmFjdG9yeS5oPgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJX
ZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVz
cG9uc2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJGcmFtZVRlc3QoKSB7fQorCisgICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxs
TW9ja2VkVVJMcygpOworICAgIH0KKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNv
bnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdl
YlN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9
IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxl
UGF0aC5hcHBlbmQoIi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS8iKTsKKyAgICAgICAgZmls
ZVBhdGguYXBwZW5kKGZpbGVOYW1lLnV0ZjgoKSk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpS
ZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQ
YXRoLmNfc3RyKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNlcnZlUmVxdWVzdHMoKQorICAgIHsK
KyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMo
KTsKKyAgICB9Cit9OworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJh
bWVDbGllbnQgeworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGVudFRleHQpCit7Cisg
ICAgLy8gUmVnaXN0ZXIgb3VyIHJlc291cmNlcy4KKyAgICBXZWJVUkxSZXNwb25zZSByZXNwb25z
ZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUo
V2ViU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIikpOworICAgIHN0ZDo6c3RyaW5nIHJvb3RV
UkwgPSAiaHR0cDovL3d3dy50ZXN0LmNvbS8iOworICAgIGNvbnN0IGNoYXIqIGZpbGVzW10gPSB7
ICJpZnJhbWVzX3Rlc3QuaHRtbCIsICJ2aXNpYmxlX2lmcmFtZS5odG1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaW52aXNpYmxlX2lmcmFtZS5odG1sIiwgInplcm9fc2l6ZWRfaWZy
YW1lLmh0bWwiIH07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoc2l6ZW9mKGZpbGVzKSAvIHNp
emVvZihjaGFyKikpOyArK2kpIHsKKyAgICAgICAgV2ViVVJMIHdlYlVSTCA9IEdVUkwocm9vdFVS
TCArIGZpbGVzW2ldKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHdlYlVSTCwgcmVz
cG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZXNbaV0pKTsKKyAgICB9CisKKyAgICAvLyBD
cmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFdlYlZpZXcuICAgIAorICAgIFRlc3RXZWJGcmFtZUNs
aWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3Jl
YXRlKDApOworICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1lQ2xpZW50
KTsKKworICAgIC8vIExvYWQgdGhlIG1haW4gZnJhbWUgVVJMLgorICAgIFdlYlVSTCB0ZXN0VVJM
KEdVUkwocm9vdFVSTCArIGZpbGVzWzBdKSk7CisgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0
OworICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgIHVybFJlcXVlc3Quc2V0VVJMKHRl
c3RVUkwpOworICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0
KTsKKworICAgIC8vIExvYWQgYWxsIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3RzLgorICAg
IHNlcnZlUmVxdWVzdHMoKTsKKworICAgIC8vIE5vdyByZXRyaWV2ZSB0aGUgZnJhbWVzIHRleHQg
YW5kIHRlc3QgaXQgb25seSBpbmNsdWRlcyB2aXNpYmxlIGVsZW1lbnRzLgorICAgIHN0ZDo6c3Ry
aW5nIGNvbnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51
dGY4KCk7CisgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2
aXNpYmxlIHBhcmFncmFwaCIpKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNv
bnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmlu
Zzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBhcmFyYXBoIikpOworICAgIEVYUEVD
VF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIGlmcmFtZSIp
KTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiaWZyYW1l
IHdpdGggemVybyBzaXplIikpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58706</attachid>
            <date>2010-06-14 15:02:05 -0700</date>
            <delta_ts>2010-06-14 15:05:48 -0700</delta_ts>
            <desc>Fixed WebURL operator&lt;</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>10993</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTE1MSkKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0wNS0yMCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJGcmFtZSBub3QgcmVwb3J0IHRoZSB0
ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29udGFpbiBoaWRk
ZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxkIG5vdCBiZSBp
bmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMOjpvcGVyYXRv
cjwpOgorICAgICAgICAqIHNyYy9XZWJDU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q1N0cmluZzo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQpOgorICAgICAgICAqIHRlc3Rz
L1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIHRlc3RzL1dlYkZy
YW1lVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2suY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9XZWJVUkxMb2FkZXJNb2NrLmg6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL1dlYlVSTExvYWRlck1vY2tGYWN0b3J5LmNwcDogQWRkZWQuCisgICAgICAg
ICogdGVzdHMvV2ViVVJMTG9hZGVyTW9ja0ZhY3RvcnkuaDogQWRkZWQuCisgICAgICAgICogdGVz
dHMvZGF0YTogQWRkZWQuCisgICAgICAgICogdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvdmlzaWJsZV9pZnJhbWUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGVzdHMvZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxMC0w
Ni0xNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAN
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjA5
NzApCisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTIz
LDYgKzUyMyw3IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGVzdGlu
Zy9ndGVzdC5neXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L2Jhc2UvYmFzZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvYmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVt
X3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9y
dCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAg
ICAgICAgICAgICAncHVibGljJywKQEAgLTUzMyw2ICs1MzQsNyBAQAogICAgICAgICAgICAgICAg
ICd0ZXN0cy9LZXlib2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvS1VSTFRl
c3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvUnVuQWxsVGVzdHMuY3BwJywKKyAgICAg
ICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNTdHJpbmcuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCShyZXZpc2lvbiA2MDk3MCkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC02OCw2ICs2OCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAor
ICAgIC8vIE9wZXJhdG9yIHJlcXVpcmVkIHRvIHB1dCBXZWJDU3RyaW5nIGluIGEgbWFwLgorICAg
IGJvb2wgbGVzc1RoYW4oY29uc3QgV2ViQ1N0cmluZyYgb3RoZXIpIGNvbnN0OworCiAgICAgV0VC
S0lUX0FQSSB2b2lkIHJlc2V0KCk7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBX
ZWJDU3RyaW5nJik7CiAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBjaGFyKiBkYXRh
LCBzaXplX3QgbGVuKTsKQEAgLTExNyw2ICsxMjAsMTEgQEAgcHJpdmF0ZToKICAgICBXZWJDU3Ry
aW5nUHJpdmF0ZSogbV9wcml2YXRlOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0
IFdlYkNTdHJpbmcmIGEsIGNvbnN0IFdlYkNTdHJpbmcmIGIpCit7CisgICAgcmV0dXJuIGEubGVz
c1RoYW4oYik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlVSTC5oCShyZXZpc2lvbiA2MDk3MCkKKysrIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsMTEgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNWYWxpZDsKIH07CiAKK2lubGluZSBib29sIG9wZXJhdG9yPChj
b25zdCBXZWJVUkwmIGEsIGNvbnN0IFdlYlVSTCYgYikKK3sKKyAgICByZXR1cm4gYS5zcGVjKCkg
PCBiLnNwZWMoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ1N0cmluZy5jcHAJKHJldmlzaW9uIDYwOTcwKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEs
MjAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDU3RyaW5nUHJpdmF0ZSA6IHB1Ymxp
YyBXVEY6OkNTdHJpbmdCdWZmZXIgewogfTsKIAorYm9vbCBXZWJDU3RyaW5nOjpsZXNzVGhhbihj
b25zdCBXZWJDU3RyaW5nJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBBIG51bGwgc3RyaW5nIGlz
IGFsd2F5cyBsZXNzIHRoYW4gYSBub24gbnVsbCBvbmUuCisgICAgaWYgKGlzTnVsbCgpICE9IG90
aGVyLmlzTnVsbCgpKQ0KKyAgICAgICAgcmV0dXJuIGlzTnVsbCgpOw0KKw0KKyAgICBpZiAoaXNO
dWxsKCkpDQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEJvdGggV2ViU3RyaW5ncyBhcmUgbnVs
bC4NCisNCisgICAgcmV0dXJuIHN0cm5jbXAobV9wcml2YXRlLT5kYXRhKCksIG90aGVyLm1fcHJp
dmF0ZS0+ZGF0YSgpLA0KKyAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbihtX3ByaXZhdGUtPmxl
bmd0aCgpLAorICAgICAgICAgICAgICAgICAgIG90aGVyLm1fcHJpdmF0ZS0+bGVuZ3RoKCkpKSA8
IDA7Cit9CisKIHZvaWQgV2ViQ1N0cmluZzo6cmVzZXQoKQogewogICAgIGlmIChtX3ByaXZhdGUp
IHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcA0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNjA5
NzApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMyw2ICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRl
eHQoc2l6ZQogICAgIC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNoaWxkcmVuLgogICAgIEZyYW1l
VHJlZSogZnJhbWVUcmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBmb3IgKEZyYW1lKiBjdXJDaGls
ZCA9IGZyYW1lVHJlZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsgY3VyQ2hpbGQgPSBjdXJDaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgdGV4dCBv
ZiBub24tdmlzaWJsZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJl
ciA9IGN1ckNoaWxkLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyUGFydCogb3du
ZXJSZW5kZXJlciA9IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7ICAgICAgICAKKyAgICAgICAg
aWYgKCFjb250ZW50UmVuZGVyZXIgfHwgIWNvbnRlbnRSZW5kZXJlci0+d2lkdGgoKSB8fCAhY29u
dGVudFJlbmRlcmVyLT5oZWlnaHQoKQorICAgICAgICAgICAgfHwgKGNvbnRlbnRSZW5kZXJlci0+
eCgpICsgY29udGVudFJlbmRlcmVyLT53aWR0aCgpIDw9IDApIHx8IChjb250ZW50UmVuZGVyZXIt
PnkoKSArIGNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkgPD0gMCkKKyAgICAgICAgICAgIHx8IChv
d25lclJlbmRlcmVyICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCkgJiYgb3duZXJSZW5kZXJlci0+
c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpKSB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUgc2VwYXJhdG9y
IHdvbid0IGZpbGwgdXAgdGhlIGJ1ZmZlciwgYW5kIGdpdmUgdXAgaWYKICAgICAgICAgLy8gaXQg
d2lsbC4gVGhlIGRhbmdlciBpcyBpZiB0aGUgc2VwYXJhdG9yIHdpbGwgbWFrZSB0aGUgYnVmZmVy
IGxvbmdlciB0aGFuCiAgICAgICAgIC8vIG1heENoYXJzLiBUaGlzIHdpbGwgY2F1c2UgdGhlIGNv
bXB1dGF0aW9uIGFib3ZlOgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3Rz
LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5j
cHAJKHJldmlzaW9uIDYwOTcwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3Rz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTggKzMzLDE1IEBACiAKICNpbmNsdWRlICJXZWJL
aXQuaCIKICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKLQotLy8gV2ViS2l0Q2xpZW50IGhhcyBh
IHByb3RlY3RlZCBkZXN0cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNzLgotY2xhc3MgRHVt
bXlXZWJLaXRDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJLaXRDbGllbnQgewotfTsKKyNpbmNs
dWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiBpbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgRHVtbXlXZWJLaXRDbGllbnQgZHVtbXlDbGllbnQ7Ci0g
ICAgV2ViS2l0Ojppbml0aWFsaXplKCZkdW1teUNsaWVudCk7Ci0KLSAgICBpbnQgcmVzdWx0ID0g
VGVzdFN1aXRlKGFyZ2MsIGFyZ3YpLlJ1bigpOwotCi0gICAgV2ViS2l0OjpzaHV0ZG93bigpOwor
ICAgIFRlc3RTdWl0ZSB0ZXN0U3VpdGUoYXJnYywgYXJndik7CisgICAgLy8gVGVzdFN1aXRlIG11
c3QgYmUgY3JlYXRlZCBiZWZvcmUgU2V0VXBUZXN0RW52aXJvbm1lbnQgc28gaXQgcGVyZm9ybXMK
KyAgICAvLyBpbml0aWFsaXphdGlvbnMgbmVlZGVkIGJ5IFdlYktpdCBzdXBwb3J0LgorICAgIHdl
YmtpdF9zdXBwb3J0OjpTZXRVcFRlc3RFbnZpcm9ubWVudEZvclVuaXRUZXN0cygpOworICAgIGlu
dCByZXN1bHQgPSB0ZXN0U3VpdGUuUnVuKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3du
VGVzdEVudmlyb25tZW50KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUg
IldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJT
dHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJGcmFtZVRlc3QoKSB7
fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9z
dXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgIH0KKworICAgIHZvaWQgcmVn
aXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkxSZXNwb25z
ZSYgcmVzcG9uc2UsIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBz
dGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCku
dXRmOCgpOworICAgICAgICBmaWxlUGF0aC5hcHBlbmQoIi9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS8iKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKGZpbGVOYW1lLnV0ZjgoKSk7CisgICAg
ICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVSTCh1cmwsIHJlc3BvbnNlLCBXZWJT
dHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoLmNfc3RyKCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHNl
cnZlUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNo
cm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICB9Cit9OworCitjbGFzcyBUZXN0V2ViRnJhbWVD
bGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVz
dCwgQ29udGVudFRleHQpCit7CisgICAgLy8gUmVnaXN0ZXIgb3VyIHJlc291cmNlcy4KKyAgICBX
ZWJVUkxSZXNwb25zZSByZXNwb25zZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAg
cmVzcG9uc2Uuc2V0TUlNRVR5cGUoV2ViU3RyaW5nOjpmcm9tVVRGOCgidGV4dC9odG1sIikpOwor
ICAgIHN0ZDo6c3RyaW5nIHJvb3RVUkwgPSAiaHR0cDovL3d3dy50ZXN0LmNvbS8iOworICAgIGNv
bnN0IGNoYXIqIGZpbGVzW10gPSB7ICJpZnJhbWVzX3Rlc3QuaHRtbCIsICJ2aXNpYmxlX2lmcmFt
ZS5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52aXNpYmxlX2lmcmFtZS5o
dG1sIiwgInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiIH07CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCAoc2l6ZW9mKGZpbGVzKSAvIHNpemVvZihjaGFyKikpOyArK2kpIHsKKyAgICAgICAgV2ViVVJM
IHdlYlVSTCA9IEdVUkwocm9vdFVSTCArIGZpbGVzW2ldKTsKKyAgICAgICAgcmVnaXN0ZXJNb2Nr
ZWRVUkxMb2FkKHdlYlVSTCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZXNbaV0p
KTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFdlYlZpZXcuICAg
IAorICAgIFRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3
ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKDApOworICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWlu
RnJhbWUoJndlYkZyYW1lQ2xpZW50KTsKKworICAgIC8vIExvYWQgdGhlIG1haW4gZnJhbWUgVVJM
LgorICAgIFdlYlVSTCB0ZXN0VVJMKEdVUkwocm9vdFVSTCArIGZpbGVzWzBdKSk7CisgICAgV2Vi
VVJMUmVxdWVzdCB1cmxSZXF1ZXN0OworICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAg
IHVybFJlcXVlc3Quc2V0VVJMKHRlc3RVUkwpOworICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5s
b2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKKworICAgIC8vIExvYWQgYWxsIHBlbmRpbmcgYXN5bmNo
cm9ub3VzIHJlcXVlc3RzLgorICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIC8vIE5vdyByZXRy
aWV2ZSB0aGUgZnJhbWVzIHRleHQgYW5kIHRlc3QgaXQgb25seSBpbmNsdWRlcyB2aXNpYmxlIGVs
ZW1lbnRzLgorICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+
Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CisgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpu
cG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIHBhcmFncmFwaCIpKTsKKyAgICBFWFBFQ1RfTkUo
c3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOworICAg
IEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBh
cmFyYXBoIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5k
KCIgaW52aXNpYmxlIGlmcmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3Ms
IGNvbnRlbnQuZmluZCgiaWZyYW1lIHdpdGggemVybyBzaXplIikpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58707</attachid>
            <date>2010-06-14 15:05:48 -0700</date>
            <delta_ts>2010-06-14 17:47:45 -0700</delta_ts>
            <desc>Fixed ChangeLog</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>10587</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTE1MykKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNi0xNCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJGcmFtZSBub3QgcmVwb3J0IHRoZSB0
ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29udGFpbiBoaWRk
ZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxkIG5vdCBiZSBp
bmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAg
ICAgICAoV2ViS2l0OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNTdHJpbmc6Omxlc3NUaGFuKToKKyAgICAgICAgKiBzcmMv
V2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRl
eHQpOgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgor
ICAgICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorCiAyMDEwLTA2LTE0ICBD
aHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2MDk3MCkKKysr
IFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC01MjMsNiArNTIz
LDcgQEAKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90ZXN0aW5nL2d0ZXN0
Lmd5cDpndGVzdCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9i
YXNlLmd5cDpiYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNl
L2Jhc2UuZ3lwOmJhc2VfaTE4bicsCisgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rp
cikvd2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAg
ICAgICdwdWJsaWMnLApAQCAtNTMzLDYgKzUzNCw3IEBACiAgICAgICAgICAgICAgICAgJ3Rlc3Rz
L0tleWJvYXJkVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICd0ZXN0cy9SdW5BbGxUZXN0cy5jcHAnLAorICAgICAgICAgICAg
ICAgICd0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICAnY29uZGl0aW9ucyc6IFsKICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsIHsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDU3RyaW5nLmgJKHJldmlzaW9uIDYwOTcwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYg
KzY4LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgLy8g
T3BlcmF0b3IgcmVxdWlyZWQgdG8gcHV0IFdlYkNTdHJpbmcgaW4gYSBtYXAuCisgICAgYm9vbCBs
ZXNzVGhhbihjb25zdCBXZWJDU3RyaW5nJiBvdGhlcikgY29uc3Q7CisKICAgICBXRUJLSVRfQVBJ
IHZvaWQgcmVzZXQoKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkNTdHJp
bmcmKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVf
dCBsZW4pOwpAQCAtMTE3LDYgKzEyMCwxMSBAQCBwcml2YXRlOgogICAgIFdlYkNTdHJpbmdQcml2
YXRlKiBtX3ByaXZhdGU7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViQ1N0
cmluZyYgYSwgY29uc3QgV2ViQ1N0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5sZXNzVGhhbihi
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpJbmRleDogV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVVJMLmgJKHJldmlzaW9uIDYwOTcwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdl
YlVSTCYgYSwgY29uc3QgV2ViVVJMJiBiKQoreworICAgIHJldHVybiBhLnNwZWMoKSA8IGIuc3Bl
YygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkocmV2aXNpb24gNjA5NzApCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwyMCBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNTdHJpbmdQcml2YXRlIDogcHVibGljIFdURjo6
Q1N0cmluZ0J1ZmZlciB7CiB9OwogCitib29sIFdlYkNTdHJpbmc6Omxlc3NUaGFuKGNvbnN0IFdl
YkNTdHJpbmcmIG90aGVyKSBjb25zdAoreworICAgIC8vIEEgbnVsbCBzdHJpbmcgaXMgYWx3YXlz
IGxlc3MgdGhhbiBhIG5vbiBudWxsIG9uZS4KKyAgICBpZiAoaXNOdWxsKCkgIT0gb3RoZXIuaXNO
dWxsKCkpDQorICAgICAgICByZXR1cm4gaXNOdWxsKCk7DQorDQorICAgIGlmIChpc051bGwoKSkN
CisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gQm90aCBXZWJTdHJpbmdzIGFyZSBudWxsLg0KKw0K
KyAgICByZXR1cm4gc3RybmNtcChtX3ByaXZhdGUtPmRhdGEoKSwgb3RoZXIubV9wcml2YXRlLT5k
YXRhKCksDQorICAgICAgICAgICAgICAgICAgIHN0ZDo6bWluKG1fcHJpdmF0ZS0+bGVuZ3RoKCks
CisgICAgICAgICAgICAgICAgICAgb3RoZXIubV9wcml2YXRlLT5sZW5ndGgoKSkpIDwgMDsKK30K
Kwogdm9pZCBXZWJDU3RyaW5nOjpyZXNldCgpCiB7CiAgICAgaWYgKG1fcHJpdmF0ZSkgewpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA2MDk3MCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjMzLDYgKzIzMywxNSBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRlbnRBc1BsYWluVGV4dChzaXpl
CiAgICAgLy8gUmVjdXJzaXZlbHkgd2FsayB0aGUgY2hpbGRyZW4uCiAgICAgRnJhbWVUcmVlKiBm
cmFtZVRyZWUgPSBmcmFtZS0+dHJlZSgpOwogICAgIGZvciAoRnJhbWUqIGN1ckNoaWxkID0gZnJh
bWVUcmVlLT5maXJzdENoaWxkKCk7IGN1ckNoaWxkOyBjdXJDaGlsZCA9IGN1ckNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXh0IG9mIG5vbi12
aXNpYmxlIGZyYW1lcy4KKyAgICAgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyID0gY3Vy
Q2hpbGQtPmNvbnRlbnRSZW5kZXJlcigpOworICAgICAgICBSZW5kZXJQYXJ0KiBvd25lclJlbmRl
cmVyID0gY3VyQ2hpbGQtPm93bmVyUmVuZGVyZXIoKTsgICAgICAgIAorICAgICAgICBpZiAoIWNv
bnRlbnRSZW5kZXJlciB8fCAhY29udGVudFJlbmRlcmVyLT53aWR0aCgpIHx8ICFjb250ZW50UmVu
ZGVyZXItPmhlaWdodCgpCisgICAgICAgICAgICB8fCAoY29udGVudFJlbmRlcmVyLT54KCkgKyBj
b250ZW50UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRlbnRSZW5kZXJlci0+eSgpICsg
Y29udGVudFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAgICAgICAgfHwgKG93bmVyUmVu
ZGVyZXIgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25lclJlbmRlcmVyLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBzZXBhcmF0b3Igd29uJ3Qg
ZmlsbCB1cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAgICAgICAvLyBpdCB3aWxsLiBU
aGUgZGFuZ2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtlIHRoZSBidWZmZXIgbG9uZ2Vy
IHRoYW4KICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY29tcHV0YXRp
b24gYWJvdmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwDQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkocmV2
aXNpb24gNjA5NzApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMywxOCArMzMsMTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgog
I2luY2x1ZGUgIldlYktpdENsaWVudC5oIgotCi0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJvdGVj
dGVkIGRlc3RydWN0b3IsIHNvIHdlIG5lZWQgdG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdlYktp
dENsaWVudCA6IHB1YmxpYyBXZWJLaXQ6OldlYktpdENsaWVudCB7Ci19OworI2luY2x1ZGUgPHdl
YmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKIHsKLSAgICBEdW1teVdlYktpdENsaWVudCBkdW1teUNsaWVudDsKLSAgICBXZWJL
aXQ6OmluaXRpYWxpemUoJmR1bW15Q2xpZW50KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0U3Vp
dGUoYXJnYywgYXJndikuUnVuKCk7Ci0KLSAgICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAgVGVz
dFN1aXRlIHRlc3RTdWl0ZShhcmdjLCBhcmd2KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBiZSBj
cmVhdGVkIGJlZm9yZSBTZXRVcFRlc3RFbnZpcm9ubWVudCBzbyBpdCBwZXJmb3JtcworICAgIC8v
IGluaXRpYWxpemF0aW9ucyBuZWVkZWQgYnkgV2ViS2l0IHN1cHBvcnQuCisgICAgd2Via2l0X3N1
cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50Rm9yVW5pdFRlc3RzKCk7CisgICAgaW50IHJlc3Vs
dCA9IHRlc3RTdWl0ZS5SdW4oKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52
aXJvbm1lbnQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViRnJhbWVUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2lu
Y2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSAiV2ViRnJh
bWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5o
IgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNs
dWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViRnJhbWVUZXN0IDogcHVi
bGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYkZyYW1lVGVzdCgpIHt9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6
OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgfQorCisgICAgdm9pZCByZWdpc3Rlck1v
Y2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIHN0ZDo6c3Ry
aW5nIGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCk7
CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZCgiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhLyIp
OworICAgICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUudXRmOCgpKTsKKyAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6
ZnJvbVVURjgoZmlsZVBhdGguY19zdHIoKSkpOworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1
ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNN
b2NrZWRSZXF1ZXN0cygpOworICAgIH0KK307CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNsaWVudCA6
IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250
ZW50VGV4dCkKK3sKKyAgICAvLyBSZWdpc3RlciBvdXIgcmVzb3VyY2VzLgorICAgIFdlYlVSTFJl
c3BvbnNlIHJlc3BvbnNlOworICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICByZXNwb25z
ZS5zZXRNSU1FVHlwZShXZWJTdHJpbmc6OmZyb21VVEY4KCJ0ZXh0L2h0bWwiKSk7CisgICAgc3Rk
OjpzdHJpbmcgcm9vdFVSTCA9ICJodHRwOi8vd3d3LnRlc3QuY29tLyI7CisgICAgY29uc3QgY2hh
ciogZmlsZXNbXSA9IHsgImlmcmFtZXNfdGVzdC5odG1sIiwgInZpc2libGVfaWZyYW1lLmh0bWwi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZpc2libGVfaWZyYW1lLmh0bWwiLCAi
emVyb19zaXplZF9pZnJhbWUuaHRtbCIgfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IChzaXpl
b2YoZmlsZXMpIC8gc2l6ZW9mKGNoYXIqKSk7ICsraSkgeworICAgICAgICBXZWJVUkwgd2ViVVJM
ID0gR1VSTChyb290VVJMICsgZmlsZXNbaV0pOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExv
YWQod2ViVVJMLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlc1tpXSkpOworICAg
IH0KKworICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgV2ViVmlldy4gICAgCisgICAg
VGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcg
PSBXZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgm
d2ViRnJhbWVDbGllbnQpOworCisgICAgLy8gTG9hZCB0aGUgbWFpbiBmcmFtZSBVUkwuCisgICAg
V2ViVVJMIHRlc3RVUkwoR1VSTChyb290VVJMICsgZmlsZXNbMF0pKTsKKyAgICBXZWJVUkxSZXF1
ZXN0IHVybFJlcXVlc3Q7CisgICAgdXJsUmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgdXJsUmVx
dWVzdC5zZXRVUkwodGVzdFVSTCk7CisgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1
ZXN0KHVybFJlcXVlc3QpOworCisgICAgLy8gTG9hZCBhbGwgcGVuZGluZyBhc3luY2hyb25vdXMg
cmVxdWVzdHMuCisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgLy8gTm93IHJldHJpZXZlIHRo
ZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1ZGVzIHZpc2libGUgZWxlbWVudHMu
CisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50
QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNv
bnRlbnQuZmluZCgiIHZpc2libGUgcGFyYWdyYXBoIikpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0
cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNU
X0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgcGFyYXJhcGgi
KSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZp
c2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVu
dC5maW5kKCJpZnJhbWUgd2l0aCB6ZXJvIHNpemUiKSk7Cit9CisKK30K
</data>
<flag name="review"
          id="45127"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58734</attachid>
            <date>2010-06-14 17:47:45 -0700</date>
            <delta_ts>2010-06-16 03:15:14 -0700</delta_ts>
            <desc>Applied fishd suggested changes</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>10747</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTE2NikKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNi0xNCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJGcmFtZSBub3QgcmVwb3J0IHRoZSB0
ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29udGFpbiBoaWRk
ZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxkIG5vdCBiZSBp
bmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAg
ICAgICAoV2ViS2l0OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNTdHJpbmc6OmNvbXBhcmUpOgorICAgICAgICAqIHNyYy9X
ZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpmcmFtZUNvbnRlbnRBc1BsYWluVGV4
dCk6CisgICAgICAgICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDogQWRkZWQuCisKIDIwMTAtMDYtMTQgIER1
bWl0cnUgRGFuaWxpdWMgIDxkdW1pQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjA5NzApCisrKyBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTIzLDYgKzUyMyw3
IEBACiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGVzdGluZy9ndGVzdC5n
eXA6Z3Rlc3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFz
ZS5neXA6YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9i
YXNlLmd5cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIp
L3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAg
ICAncHVibGljJywKQEAgLTUzMyw2ICs1MzQsNyBAQAogICAgICAgICAgICAgICAgICd0ZXN0cy9L
ZXlib2FyZFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMvS1VSTFRlc3QuY3BwJywK
ICAgICAgICAgICAgICAgICAndGVzdHMvUnVuQWxsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICAg
ICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNTdHJpbmcuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCShyZXZpc2lvbiA2MDk3MCkKKysrIFdlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2
OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICAvLyBS
ZXR1cm5zIDAgaWYgYm90aCBzdHJpbmdzIGFyZSBlcXVhbHMsIGEgdmFsdWUgZ3JlYXRlciB0aGFu
IHplcm8gaWYgdGhlCisgICAgLy8gZmlyc3QgY2hhcmFjdGVyIHRoYXQgZG9lcyBub3QgbWF0Y2gg
aGFzIGEgZ3JlYXRlciB2YWx1ZSBpbiB0aGlzIHN0cmluZworICAgIC8vIHRoYW4gaW4gfG90aGVy
fCwgb3IgYSB2YWx1ZSBsZXNzIHRoYW4gemVybyB0byBpbmRpY2F0ZSB0aGUgb3Bwb3NpdGUuCisg
ICAgV0VCS0lUX0FQSSBpbnQgY29tcGFyZShjb25zdCBXZWJDU3RyaW5nJiBvdGhlcikgY29uc3Q7
CisKICAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNz
aWduKGNvbnN0IFdlYkNTdHJpbmcmKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4pOwpAQCAtMTE3LDYgKzEyMiwxMSBAQCBwcml2YXRlOgog
ICAgIFdlYkNTdHJpbmdQcml2YXRlKiBtX3ByaXZhdGU7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVy
YXRvcjwoY29uc3QgV2ViQ1N0cmluZyYgYSwgY29uc3QgV2ViQ1N0cmluZyYgYikKK3sKKyAgICBy
ZXR1cm4gYS5jb21wYXJlKGIpIDwgMDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVVJMLmgJKHJldmlzaW9uIDYwOTcwKQorKysg
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYg
KzEzOCwxMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1ZhbGlkOwogfTsKIAoraW5saW5lIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFdlYlVSTCYgYSwgY29uc3QgV2ViVVJMJiBiKQoreworICAgIHJl
dHVybiBhLnNwZWMoKSA8IGIuc3BlYygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDU3RyaW5nLmNwcAkocmV2aXNpb24gNjA5
NzApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MSw2ICs0MSwxOSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNTdHJpbmdQ
cml2YXRlIDogcHVibGljIFdURjo6Q1N0cmluZ0J1ZmZlciB7CiB9OwogCitpbnQgV2ViQ1N0cmlu
Zzo6Y29tcGFyZShjb25zdCBXZWJDU3RyaW5nJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBBIG51
bGwgc3RyaW5nIGlzIGFsd2F5cyBsZXNzIHRoYW4gYSBub24gbnVsbCBvbmUuCisgICAgaWYgKGlz
TnVsbCgpICE9IG90aGVyLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gaXNOdWxsKCkgPyAtMSA6
IDE7CisKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOyAvLyBCb3RoIFdlYlN0
cmluZ3MgYXJlIG51bGwuCisKKyAgICByZXR1cm4gc3RybmNtcChtX3ByaXZhdGUtPmRhdGEoKSwg
b3RoZXIubV9wcml2YXRlLT5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgc3RkOjptaW4obV9w
cml2YXRlLT5sZW5ndGgoKSwgb3RoZXIubV9wcml2YXRlLT5sZW5ndGgoKSkpOworfQorCiB2b2lk
IFdlYkNTdHJpbmc6OnJlc2V0KCkKIHsKICAgICBpZiAobV9wcml2YXRlKSB7CkluZGV4OiBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDYwOTcwKQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiAr
MjMzLDE1IEBAIHN0YXRpYyB2b2lkIGZyYW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAgICAv
LyBSZWN1cnNpdmVseSB3YWxrIHRoZSBjaGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1lVHJl
ZSA9IGZyYW1lLT50cmVlKCk7CiAgICAgZm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRyZWUt
PmZpcnN0Q2hpbGQoKTsgY3VyQ2hpbGQ7IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkgeworICAgICAgICAvLyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2libGUg
ZnJhbWVzLgorICAgICAgICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGlsZC0+
Y29udGVudFJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIgPSBj
dXJDaGlsZC0+b3duZXJSZW5kZXJlcigpOyAgICAgICAgCisgICAgICAgIGlmICghY29udGVudFJl
bmRlcmVyIHx8ICFjb250ZW50UmVuZGVyZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJlci0+
aGVpZ2h0KCkKKyAgICAgICAgICAgIHx8IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRlbnRS
ZW5kZXJlci0+d2lkdGgoKSA8PSAwKSB8fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250ZW50
UmVuZGVyZXItPmhlaWdodCgpIDw9IDApCisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJlciAm
JiBvd25lclJlbmRlcmVyLT5zdHlsZSgpICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZpc2li
aWxpdHkoKSAhPSBWSVNJQkxFKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KwogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxsIHVw
IHRoZSBidWZmZXIsIGFuZCBnaXZlIHVwIGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBkYW5n
ZXIgaXMgaWYgdGhlIHNlcGFyYXRvciB3aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhhbgog
ICAgICAgICAvLyBtYXhDaGFycy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBhYm92
ZToKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHANCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCShyZXZpc2lvbiA2
MDk3MCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDE4ICszMywxNSBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0Q2xpZW50LmgiCi0KLS8vIFdlYktpdENsaWVudCBoYXMgYSBwcm90ZWN0ZWQgZGVz
dHJ1Y3Rvciwgc28gd2UgbmVlZCB0byBzdWJjbGFzcy4KLWNsYXNzIER1bW15V2ViS2l0Q2xpZW50
IDogcHVibGljIFdlYktpdDo6V2ViS2l0Q2xpZW50IHsKLX07CisjaW5jbHVkZSA8d2Via2l0L3N1
cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2
KQogewotICAgIER1bW15V2ViS2l0Q2xpZW50IGR1bW15Q2xpZW50OwotICAgIFdlYktpdDo6aW5p
dGlhbGl6ZSgmZHVtbXlDbGllbnQpOwotCi0gICAgaW50IHJlc3VsdCA9IFRlc3RTdWl0ZShhcmdj
LCBhcmd2KS5SdW4oKTsKLQotICAgIFdlYktpdDo6c2h1dGRvd24oKTsKKyAgICBUZXN0U3VpdGUg
dGVzdFN1aXRlKGFyZ2MsIGFyZ3YpOworICAgIC8vIFRlc3RTdWl0ZSBtdXN0IGJlIGNyZWF0ZWQg
YmVmb3JlIFNldFVwVGVzdEVudmlyb25tZW50IHNvIGl0IHBlcmZvcm1zCisgICAgLy8gaW5pdGlh
bGl6YXRpb25zIG5lZWRlZCBieSBXZWJLaXQgc3VwcG9ydC4KKyAgICB3ZWJraXRfc3VwcG9ydDo6
U2V0VXBUZXN0RW52aXJvbm1lbnRGb3JVbml0VGVzdHMoKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVz
dFN1aXRlLlJ1bigpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVu
dCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGdv
b2dsZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8
d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlICJXZWJGcmFtZS5oIgor
I2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5j
bHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldl
YlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJGcmFtZVRlc3QgOiBwdWJsaWMgdGVz
dGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViRnJhbWVUZXN0KCkge30KKworICAgIHZpcnR1
YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdp
c3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJM
TG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmls
ZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAg
ICAgZmlsZVBhdGguYXBwZW5kKCIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7CisgICAg
ICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkpOworICAgICAgICB3ZWJraXRfc3Vw
cG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRG
OChmaWxlUGF0aCkpOworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1ZXN0cygpCisgICAgewor
ICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygp
OworICAgIH0KK307CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFt
ZUNsaWVudCB7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZW50VGV4dCkKK3sKKyAg
ICAvLyBSZWdpc3RlciBvdXIgcmVzb3VyY2VzLgorICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNl
OworICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgi
dGV4dC9odG1sIik7CisgICAgc3RkOjpzdHJpbmcgcm9vdFVSTCA9ICJodHRwOi8vd3d3LnRlc3Qu
Y29tLyI7CisgICAgY29uc3QgY2hhciogZmlsZXNbXSA9IHsgImlmcmFtZXNfdGVzdC5odG1sIiwg
InZpc2libGVfaWZyYW1lLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZp
c2libGVfaWZyYW1lLmh0bWwiLCAiemVyb19zaXplZF9pZnJhbWUuaHRtbCIgfTsKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IChzaXplb2YoZmlsZXMpIC8gc2l6ZW9mKGNoYXIqKSk7ICsraSkgewor
ICAgICAgICBXZWJVUkwgd2ViVVJMID0gR1VSTChyb290VVJMICsgZmlsZXNbaV0pOworICAgICAg
ICByZWdpc3Rlck1vY2tlZFVSTExvYWQod2ViVVJMLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9t
VVRGOChmaWxlc1tpXSkpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0
aGUgV2ViVmlldy4gICAgCisgICAgVGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50Owor
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgd2ViVmlldy0+
aW5pdGlhbGl6ZU1haW5GcmFtZSgmd2ViRnJhbWVDbGllbnQpOworCisgICAgLy8gTG9hZCB0aGUg
bWFpbiBmcmFtZSBVUkwuCisgICAgV2ViVVJMIHRlc3RVUkwoR1VSTChyb290VVJMICsgZmlsZXNb
MF0pKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CisgICAgdXJsUmVxdWVzdC5pbml0
aWFsaXplKCk7CisgICAgdXJsUmVxdWVzdC5zZXRVUkwodGVzdFVSTCk7CisgICAgd2ViVmlldy0+
bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOworCisgICAgLy8gTG9hZCBhbGwg
cGVuZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdHMuCisgICAgc2VydmVSZXF1ZXN0cygpOworCisg
ICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1
ZGVzIHZpc2libGUgZWxlbWVudHMuCisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXct
Pm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBFWFBFQ1RfTkUo
c3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgcGFyYWdyYXBoIikpOwor
ICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBp
ZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQo
IiBpbnZpc2libGUgcGFyYXJhcGgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9z
LCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6
OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCJpZnJhbWUgd2l0aCB6ZXJvIHNpemUiKSk7CisK
KyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58794</attachid>
            <date>2010-06-15 10:16:56 -0700</date>
            <delta_ts>2010-06-21 15:06:07 -0700</delta_ts>
            <desc>Fixed conflict when synching</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>10780</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MTE5NikKKysrIFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNi0xNCAgSmF5
IENpdmVsbGkgIDxqY2l2ZWxsaUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFkZSBXZWJGcmFtZSBub3QgcmVwb3J0IHRoZSB0
ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29udGFpbiBoaWRk
ZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxkIG5vdCBiZSBp
bmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYgICAgICAgIAorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAg
ICAgICAoV2ViS2l0OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAg
ICAgICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkNTdHJpbmc6OmNvbXBhcmUpOgorICAgICAgICAqIHNyYy9X
ZWJGcmFtZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpmcmFtZUNvbnRlbnRBc1BsYWluVGV4
dCk6CisgICAgICAgICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogdGVzdHMvV2ViRnJhbWVUZXN0LmNwcDogQWRkZWQuCisKIDIwMTAtMDYtMTQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQ2hyb21p
dW0gYnVpbGQuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCShyZXZpc2lvbiA2MTE5NikKKysrIFdlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC01MjMsNiArNTIzLDcgQEAK
ICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS90ZXN0aW5nL2d0ZXN0Lmd5cDpn
dGVzdCcsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5
cDpiYXNlJywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2Uu
Z3lwOmJhc2VfaTE4bicsCisgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAg
ICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9ncHUvZ3B1Lmd5cDpnbGVzMl9jX2xpYicsCiAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKQEAgLTUzNCw2ICs1
MzUsNyBAQAogICAgICAgICAgICAgICAgICd0ZXN0cy9LZXlib2FyZFRlc3QuY3BwJywKICAgICAg
ICAgICAgICAgICAndGVzdHMvS1VSTFRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAndGVzdHMv
UnVuQWxsVGVzdHMuY3BwJywKKyAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0LmNw
cCcsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAg
ICAgICAgICAgWydPUz09IndpbiInLCB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNTdHJpbmcuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0
cmluZy5oCShyZXZpc2lvbiA2MTE5NikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CiAKKyAgICAvLyBSZXR1cm5zIDAgaWYgYm90aCBzdHJpbmdz
IGFyZSBlcXVhbHMsIGEgdmFsdWUgZ3JlYXRlciB0aGFuIHplcm8gaWYgdGhlCisgICAgLy8gZmly
c3QgY2hhcmFjdGVyIHRoYXQgZG9lcyBub3QgbWF0Y2ggaGFzIGEgZ3JlYXRlciB2YWx1ZSBpbiB0
aGlzIHN0cmluZworICAgIC8vIHRoYW4gaW4gfG90aGVyfCwgb3IgYSB2YWx1ZSBsZXNzIHRoYW4g
emVybyB0byBpbmRpY2F0ZSB0aGUgb3Bwb3NpdGUuCisgICAgV0VCS0lUX0FQSSBpbnQgY29tcGFy
ZShjb25zdCBXZWJDU3RyaW5nJiBvdGhlcikgY29uc3Q7CisKICAgICBXRUJLSVRfQVBJIHZvaWQg
cmVzZXQoKTsKICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYkNTdHJpbmcmKTsK
ICAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW4p
OwpAQCAtMTE3LDYgKzEyMiwxMSBAQCBwcml2YXRlOgogICAgIFdlYkNTdHJpbmdQcml2YXRlKiBt
X3ByaXZhdGU7CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgV2ViQ1N0cmluZyYg
YSwgY29uc3QgV2ViQ1N0cmluZyYgYikKK3sKKyAgICByZXR1cm4gYS5jb21wYXJlKGIpIDwgMDsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJVUkwuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVVJMLmgJKHJldmlzaW9uIDYxMTk2KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDYgKzEzOCwxMSBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9pc1ZhbGlkOwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFdlYlVS
TCYgYSwgY29uc3QgV2ViVVJMJiBiKQoreworICAgIHJldHVybiBhLnNwZWMoKSA8IGIuc3BlYygp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNTdHJpbmcuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDU3RyaW5nLmNwcAkocmV2aXNpb24gNjExOTYpCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxOSBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNTdHJpbmdQcml2YXRlIDogcHVibGljIFdURjo6Q1N0
cmluZ0J1ZmZlciB7CiB9OwogCitpbnQgV2ViQ1N0cmluZzo6Y29tcGFyZShjb25zdCBXZWJDU3Ry
aW5nJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBBIG51bGwgc3RyaW5nIGlzIGFsd2F5cyBsZXNz
IHRoYW4gYSBub24gbnVsbCBvbmUuCisgICAgaWYgKGlzTnVsbCgpICE9IG90aGVyLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gaXNOdWxsKCkgPyAtMSA6IDE7CisKKyAgICBpZiAoaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiAwOyAvLyBCb3RoIFdlYlN0cmluZ3MgYXJlIG51bGwuCisKKyAgICBy
ZXR1cm4gc3RybmNtcChtX3ByaXZhdGUtPmRhdGEoKSwgb3RoZXIubV9wcml2YXRlLT5kYXRhKCks
CisgICAgICAgICAgICAgICAgICAgc3RkOjptaW4obV9wcml2YXRlLT5sZW5ndGgoKSwgb3RoZXIu
bV9wcml2YXRlLT5sZW5ndGgoKSkpOworfQorCiB2b2lkIFdlYkNTdHJpbmc6OnJlc2V0KCkKIHsK
ICAgICBpZiAobV9wcml2YXRlKSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1l
SW1wbC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAJKHJldmlzaW9uIDYxMTk2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDE1IEBAIHN0YXRpYyB2b2lkIGZy
YW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAgICAvLyBSZWN1cnNpdmVseSB3YWxrIHRoZSBj
aGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1lVHJlZSA9IGZyYW1lLT50cmVlKCk7CiAgICAg
Zm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRyZWUtPmZpcnN0Q2hpbGQoKTsgY3VyQ2hpbGQ7
IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAv
LyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2libGUgZnJhbWVzLgorICAgICAgICBSZW5kZXJW
aWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGlsZC0+Y29udGVudFJlbmRlcmVyKCk7CisgICAg
ICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIgPSBjdXJDaGlsZC0+b3duZXJSZW5kZXJlcigp
OyAgICAgICAgCisgICAgICAgIGlmICghY29udGVudFJlbmRlcmVyIHx8ICFjb250ZW50UmVuZGVy
ZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkKKyAgICAgICAgICAgIHx8
IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRlbnRSZW5kZXJlci0+d2lkdGgoKSA8PSAwKSB8
fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250ZW50UmVuZGVyZXItPmhlaWdodCgpIDw9IDAp
CisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJlciAmJiBvd25lclJlbmRlcmVyLT5zdHlsZSgp
ICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgewor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxsIHVwIHRoZSBidWZmZXIsIGFuZCBnaXZlIHVw
IGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBkYW5nZXIgaXMgaWYgdGhlIHNlcGFyYXRvciB3
aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhhbgogICAgICAgICAvLyBtYXhDaGFycy4gVGhp
cyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBhYm92ZToKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0v
dGVzdHMvUnVuQWxsVGVzdHMuY3BwCShyZXZpc2lvbiA2MTE5NikKKysrIFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE4ICszMywxNSBA
QAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCi0KLS8v
IFdlYktpdENsaWVudCBoYXMgYSBwcm90ZWN0ZWQgZGVzdHJ1Y3Rvciwgc28gd2UgbmVlZCB0byBz
dWJjbGFzcy4KLWNsYXNzIER1bW15V2ViS2l0Q2xpZW50IDogcHVibGljIFdlYktpdDo6V2ViS2l0
Q2xpZW50IHsKLX07CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4K
IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIER1bW15V2ViS2l0Q2xp
ZW50IGR1bW15Q2xpZW50OwotICAgIFdlYktpdDo6aW5pdGlhbGl6ZSgmZHVtbXlDbGllbnQpOwot
Ci0gICAgaW50IHJlc3VsdCA9IFRlc3RTdWl0ZShhcmdjLCBhcmd2KS5SdW4oKTsKLQotICAgIFdl
YktpdDo6c2h1dGRvd24oKTsKKyAgICBUZXN0U3VpdGUgdGVzdFN1aXRlKGFyZ2MsIGFyZ3YpOwor
ICAgIC8vIFRlc3RTdWl0ZSBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIFNldFVwVGVzdEVudmlyb25t
ZW50IHNvIGl0IHBlcmZvcm1zCisgICAgLy8gaW5pdGlhbGl6YXRpb25zIG5lZWRlZCBieSBXZWJL
aXQgc3VwcG9ydC4KKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VXBUZXN0RW52aXJvbm1lbnRGb3JV
bml0VGVzdHMoKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVzdFN1aXRlLlJ1bigpOworICAgIHdlYmtp
dF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5oPgorI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1
cHBvcnQuaD4KKyNpbmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVk
ZSAiV2ViVmlldy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2Ugewor
CitjbGFzcyBXZWJGcmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6Cisg
ICAgV2ViRnJhbWVUZXN0KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAg
eworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAg
ICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1l
KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6
R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxl
TmFtZS51dGY4KCkpOworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwo
dXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgIH0KKwor
ICAgIHZvaWQgc2VydmVSZXF1ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6
U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIH0KK307CisKK2NsYXNzIFRl
c3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitURVNUX0Yo
V2ViRnJhbWVUZXN0LCBDb250ZW50VGV4dCkKK3sKKyAgICAvLyBSZWdpc3RlciBvdXIgcmVzb3Vy
Y2VzLgorICAgIFdlYlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgIHJlc3BvbnNlLmluaXRpYWxp
emUoKTsKKyAgICByZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgc3RkOjpz
dHJpbmcgcm9vdFVSTCA9ICJodHRwOi8vd3d3LnRlc3QuY29tLyI7CisgICAgY29uc3QgY2hhciog
ZmlsZXNbXSA9IHsgImlmcmFtZXNfdGVzdC5odG1sIiwgInZpc2libGVfaWZyYW1lLmh0bWwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZpc2libGVfaWZyYW1lLmh0bWwiLCAiemVy
b19zaXplZF9pZnJhbWUuaHRtbCIgfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IChzaXplb2Yo
ZmlsZXMpIC8gc2l6ZW9mKGNoYXIqKSk7ICsraSkgeworICAgICAgICBXZWJVUkwgd2ViVVJMID0g
R1VSTChyb290VVJMICsgZmlsZXNbaV0pOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQo
d2ViVVJMLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlc1tpXSkpOworICAgIH0K
KworICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgV2ViVmlldy4gICAgCisgICAgVGVz
dFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBX
ZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmd2Vi
RnJhbWVDbGllbnQpOworCisgICAgLy8gTG9hZCB0aGUgbWFpbiBmcmFtZSBVUkwuCisgICAgV2Vi
VVJMIHRlc3RVUkwoR1VSTChyb290VVJMICsgZmlsZXNbMF0pKTsKKyAgICBXZWJVUkxSZXF1ZXN0
IHVybFJlcXVlc3Q7CisgICAgdXJsUmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgdXJsUmVxdWVz
dC5zZXRVUkwodGVzdFVSTCk7CisgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0
KHVybFJlcXVlc3QpOworCisgICAgLy8gTG9hZCBhbGwgcGVuZGluZyBhc3luY2hyb25vdXMgcmVx
dWVzdHMuCisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgLy8gTm93IHJldHJpZXZlIHRoZSBm
cmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1ZGVzIHZpc2libGUgZWxlbWVudHMuCisg
ICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNU
ZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRl
bnQuZmluZCgiIHZpc2libGUgcGFyYWdyYXBoIikpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmlu
Zzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VR
KHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgcGFyYXJhcGgiKSk7
CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2li
bGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5m
aW5kKCJpZnJhbWUgd2l0aCB6ZXJvIHNpemUiKSk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOwor
fQorCit9Cg==
</data>
<flag name="review"
          id="45255"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59296</attachid>
            <date>2010-06-21 15:06:07 -0700</date>
            <delta_ts>2010-06-22 11:17:10 -0700</delta_ts>
            <desc>Modified Chromium DEPS</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>8995</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1ODEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMjEgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFkZSBXZWJGcmFtZSBub3QgcmVw
b3J0IHRoZSB0ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29u
dGFpbiBoaWRkZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxk
IG5vdCBiZSBpbmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYKKwor
ICAgICAgICAqIERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQp
OgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorCiAyMDEwLTA2LTIxICBLZW50
IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vREVQUwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vREVQUwkocmV2aXNpb24gNjE1ODEpCisrKyBXZWJLaXQvY2hyb21pdW0v
REVQUwkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAogCiB2YXJzID0gewogICAnY2hy
b21pdW1fc3ZuJzogJ2h0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3N2bi90cnVuay9zcmMnLAotICAn
Y2hyb21pdW1fcmV2JzogJzUwMjE4JywKKyAgJ2Nocm9taXVtX3Jldic6ICc1MDM4MicsCiB9CiAK
IGRlcHMgPSB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjE1ODEpCisrKyBXZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTMwLDYgKzUzMCw3IEBACiAg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdGVzdGluZy9ndGVzdC5neXA6Z3Rl
c3QnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2UvYmFzZS5neXA6
YmFzZScsCiAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5
cDpiYXNlX2kxOG4nLAorICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAg
ICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvZ3B1L2dwdS5neXA6Z2xlczJfY19saWInLAogICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCkBAIC01NDEsNiArNTQy
LDcgQEAKICAgICAgICAgICAgICAgICAndGVzdHMvS2V5Ym9hcmRUZXN0LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL0tVUkxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Rlc3RzL1J1
bkFsbFRlc3RzLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAn
LAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAgICAg
ICAgICAgIFsnT1M9PSJ3aW4iJywgewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFt
ZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAkocmV2aXNpb24gNjE1ODEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw2ICsyMzMsMTUgQEAgc3RhdGljIHZvaWQgZnJh
bWVDb250ZW50QXNQbGFpblRleHQoc2l6ZQogICAgIC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNo
aWxkcmVuLgogICAgIEZyYW1lVHJlZSogZnJhbWVUcmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBm
b3IgKEZyYW1lKiBjdXJDaGlsZCA9IGZyYW1lVHJlZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsg
Y3VyQ2hpbGQgPSBjdXJDaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIC8v
IElnbm9yZSB0aGUgdGV4dCBvZiBub24tdmlzaWJsZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZp
ZXcqIGNvbnRlbnRSZW5kZXJlciA9IGN1ckNoaWxkLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAg
ICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJlciA9IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7
ICAgICAgICAKKyAgICAgICAgaWYgKCFjb250ZW50UmVuZGVyZXIgfHwgIWNvbnRlbnRSZW5kZXJl
ci0+d2lkdGgoKSB8fCAhY29udGVudFJlbmRlcmVyLT5oZWlnaHQoKQorICAgICAgICAgICAgfHwg
KGNvbnRlbnRSZW5kZXJlci0+eCgpICsgY29udGVudFJlbmRlcmVyLT53aWR0aCgpIDw9IDApIHx8
IChjb250ZW50UmVuZGVyZXItPnkoKSArIGNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkgPD0gMCkK
KyAgICAgICAgICAgIHx8IChvd25lclJlbmRlcmVyICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCkg
JiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpKSB7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0
aGUgZnJhbWUgc2VwYXJhdG9yIHdvbid0IGZpbGwgdXAgdGhlIGJ1ZmZlciwgYW5kIGdpdmUgdXAg
aWYKICAgICAgICAgLy8gaXQgd2lsbC4gVGhlIGRhbmdlciBpcyBpZiB0aGUgc2VwYXJhdG9yIHdp
bGwgbWFrZSB0aGUgYnVmZmVyIGxvbmdlciB0aGFuCiAgICAgICAgIC8vIG1heENoYXJzLiBUaGlz
IHdpbGwgY2F1c2UgdGhlIGNvbXB1dGF0aW9uIGFib3ZlOgpJbmRleDogV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvUnVuQWxsVGVzdHMuY3BwCShyZXZpc2lvbiA2MTU4MSkKKysrIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE4ICszMywxNSBAQAog
CiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q2xpZW50LmgiCi0KLS8vIFdl
YktpdENsaWVudCBoYXMgYSBwcm90ZWN0ZWQgZGVzdHJ1Y3Rvciwgc28gd2UgbmVlZCB0byBzdWJj
bGFzcy4KLWNsYXNzIER1bW15V2ViS2l0Q2xpZW50IDogcHVibGljIFdlYktpdDo6V2ViS2l0Q2xp
ZW50IHsKLX07CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAog
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewotICAgIER1bW15V2ViS2l0Q2xpZW50
IGR1bW15Q2xpZW50OwotICAgIFdlYktpdDo6aW5pdGlhbGl6ZSgmZHVtbXlDbGllbnQpOwotCi0g
ICAgaW50IHJlc3VsdCA9IFRlc3RTdWl0ZShhcmdjLCBhcmd2KS5SdW4oKTsKLQotICAgIFdlYktp
dDo6c2h1dGRvd24oKTsKKyAgICBUZXN0U3VpdGUgdGVzdFN1aXRlKGFyZ2MsIGFyZ3YpOworICAg
IC8vIFRlc3RTdWl0ZSBtdXN0IGJlIGNyZWF0ZWQgYmVmb3JlIFNldFVwVGVzdEVudmlyb25tZW50
IHNvIGl0IHBlcmZvcm1zCisgICAgLy8gaW5pdGlhbGl6YXRpb25zIG5lZWRlZCBieSBXZWJLaXQg
c3VwcG9ydC4KKyAgICB3ZWJraXRfc3VwcG9ydDo6U2V0VXBUZXN0RW52aXJvbm1lbnRGb3JVbml0
VGVzdHMoKTsKKyAgICBpbnQgcmVzdWx0ID0gdGVzdFN1aXRlLlJ1bigpOworICAgIHdlYmtpdF9z
dXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9ubWVudCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlIDxnb29nbGV1cmwvc3JjL2d1cmwuaD4KKyNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0
Lmg+CisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgor
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldl
YlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldl
YlZpZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xh
c3MgV2ViRnJhbWVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdl
YkZyYW1lVGVzdCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgfQor
CisgICAgdm9pZCByZWdpc3Rlck1vY2tlZFVSTExvYWQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0
IFdlYlVSTFJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkKKyAg
ICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGZpbGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdl
YktpdFJvb3REaXIoKS51dGY4KCk7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZCgiL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9kYXRhLyIpOworICAgICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUu
dXRmOCgpKTsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwg
cmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZVBhdGgpKTsKKyAgICB9CisKKyAgICB2
b2lkIHNlcnZlUmVxdWVzdHMoKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZl
QXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsKKyAgICB9Cit9OworCitjbGFzcyBUZXN0V2Vi
RnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworfTsKKworVEVTVF9GKFdlYkZy
YW1lVGVzdCwgQ29udGVudFRleHQpCit7CisgICAgLy8gUmVnaXN0ZXIgb3VyIHJlc291cmNlcy4K
KyAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7
CisgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRleHQvaHRtbCIpOworICAgIHN0ZDo6c3RyaW5n
IHJvb3RVUkwgPSAiaHR0cDovL3d3dy50ZXN0LmNvbS8iOworICAgIGNvbnN0IGNoYXIqIGZpbGVz
W10gPSB7ICJpZnJhbWVzX3Rlc3QuaHRtbCIsICJ2aXNpYmxlX2lmcmFtZS5odG1sIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW52aXNpYmxlX2lmcmFtZS5odG1sIiwgInplcm9fc2l6
ZWRfaWZyYW1lLmh0bWwiIH07CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoc2l6ZW9mKGZpbGVz
KSAvIHNpemVvZihjaGFyKikpOyArK2kpIHsKKyAgICAgICAgV2ViVVJMIHdlYlVSTCA9IEdVUkwo
cm9vdFVSTCArIGZpbGVzW2ldKTsKKyAgICAgICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHdlYlVS
TCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZXNbaV0pKTsKKyAgICB9CisKKyAg
ICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhlIFdlYlZpZXcuICAgIAorICAgIFRlc3RXZWJG
cmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsKKyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmll
dzo6Y3JlYXRlKDApOworICAgIHdlYlZpZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1l
Q2xpZW50KTsKKworICAgIC8vIExvYWQgdGhlIG1haW4gZnJhbWUgVVJMLgorICAgIFdlYlVSTCB0
ZXN0VVJMKEdVUkwocm9vdFVSTCArIGZpbGVzWzBdKSk7CisgICAgV2ViVVJMUmVxdWVzdCB1cmxS
ZXF1ZXN0OworICAgIHVybFJlcXVlc3QuaW5pdGlhbGl6ZSgpOworICAgIHVybFJlcXVlc3Quc2V0
VVJMKHRlc3RVUkwpOworICAgIHdlYlZpZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxS
ZXF1ZXN0KTsKKworICAgIC8vIExvYWQgYWxsIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3Rz
LgorICAgIHNlcnZlUmVxdWVzdHMoKTsKKworICAgIC8vIE5vdyByZXRyaWV2ZSB0aGUgZnJhbWVz
IHRleHQgYW5kIHRlc3QgaXQgb25seSBpbmNsdWRlcyB2aXNpYmxlIGVsZW1lbnRzLgorICAgIHN0
ZDo6c3RyaW5nIGNvbnRlbnQgPSB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgx
MDI0KS51dGY4KCk7CisgICAgRVhQRUNUX05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZp
bmQoIiB2aXNpYmxlIHBhcmFncmFwaCIpKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5w
b3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6
OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIHBhcmFyYXBoIikpOworICAg
IEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIGlm
cmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgi
aWZyYW1lIHdpdGggemVybyBzaXplIikpOworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKwor
fQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59395</attachid>
            <date>2010-06-22 11:17:10 -0700</date>
            <delta_ts>2010-08-10 03:15:36 -0700</delta_ts>
            <desc>Added missing HTML test files</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>11541</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE2MTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMjIgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFkZSBXZWJGcmFtZSBub3QgcmVw
b3J0IHRoZSB0ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29u
dGFpbiBoaWRkZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxk
IG5vdCBiZSBpbmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYKKwor
ICAgICAgICAqIERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQp
OgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2Rh
dGE6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMjIg
IE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL0RFUFMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0RFUFMJKHJldmlzaW9uIDYxNjE4KQorKysgV2ViS2l0
L2Nocm9taXVtL0RFUFMJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogdmFycyA9
IHsKICAgJ2Nocm9taXVtX3N2bic6ICdodHRwOi8vc3JjLmNocm9taXVtLm9yZy9zdm4vdHJ1bmsv
c3JjJywKLSAgJ2Nocm9taXVtX3Jldic6ICc1MDIxOCcsCisgICdjaHJvbWl1bV9yZXYnOiAnNTAz
ODInLAogfQogCiBkZXBzID0gewpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDYxNjE4KQor
KysgV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw2ICs1
MzIsNyBAQAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rlc3RpbmcvZ3Rl
c3QuZ3lwOmd0ZXN0JywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNl
L2Jhc2UuZ3lwOmJhc2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jh
c2UvYmFzZS5neXA6YmFzZV9pMThuJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNf
ZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAog
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2dwdS9ncHUuZ3lwOmdsZXMyX2Nf
bGliJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwpAQCAt
NTQzLDYgKzU0NCw3IEBACiAgICAgICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAn
LAogICAgICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICd0ZXN0cy9SdW5BbGxUZXN0cy5jcHAnLAorICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFt
ZVRlc3QuY3BwJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsK
ICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDYxNjE4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDE1IEBAIHN0YXRp
YyB2b2lkIGZyYW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAgICAvLyBSZWN1cnNpdmVseSB3
YWxrIHRoZSBjaGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1lVHJlZSA9IGZyYW1lLT50cmVl
KCk7CiAgICAgZm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRyZWUtPmZpcnN0Q2hpbGQoKTsg
Y3VyQ2hpbGQ7IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgewor
ICAgICAgICAvLyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2libGUgZnJhbWVzLgorICAgICAg
ICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGlsZC0+Y29udGVudFJlbmRlcmVy
KCk7CisgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIgPSBjdXJDaGlsZC0+b3duZXJS
ZW5kZXJlcigpOyAgICAgICAgCisgICAgICAgIGlmICghY29udGVudFJlbmRlcmVyIHx8ICFjb250
ZW50UmVuZGVyZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkKKyAgICAg
ICAgICAgIHx8IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRlbnRSZW5kZXJlci0+d2lkdGgo
KSA8PSAwKSB8fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250ZW50UmVuZGVyZXItPmhlaWdo
dCgpIDw9IDApCisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJlciAmJiBvd25lclJlbmRlcmVy
LT5zdHlsZSgpICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvLyBN
YWtlIHN1cmUgdGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxsIHVwIHRoZSBidWZmZXIsIGFu
ZCBnaXZlIHVwIGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBkYW5nZXIgaXMgaWYgdGhlIHNl
cGFyYXRvciB3aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhhbgogICAgICAgICAvLyBtYXhD
aGFycy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBhYm92ZToKSW5kZXg6IFdlYktp
dC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkocmV2aXNpb24gNjE2MTgpCisrKyBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOCAr
MzMsMTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5o
IgotCi0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJvdGVjdGVkIGRlc3RydWN0b3IsIHNvIHdlIG5l
ZWQgdG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdlYktpdENsaWVudCA6IHB1YmxpYyBXZWJLaXQ6
OldlYktpdENsaWVudCB7Ci19OworI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBw
b3J0Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgICBEdW1teVdl
YktpdENsaWVudCBkdW1teUNsaWVudDsKLSAgICBXZWJLaXQ6OmluaXRpYWxpemUoJmR1bW15Q2xp
ZW50KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0U3VpdGUoYXJnYywgYXJndikuUnVuKCk7Ci0K
LSAgICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAgVGVzdFN1aXRlIHRlc3RTdWl0ZShhcmdjLCBh
cmd2KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBiZSBjcmVhdGVkIGJlZm9yZSBTZXRVcFRlc3RF
bnZpcm9ubWVudCBzbyBpdCBwZXJmb3JtcworICAgIC8vIGluaXRpYWxpemF0aW9ucyBuZWVkZWQg
YnkgV2ViS2l0IHN1cHBvcnQuCisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25t
ZW50Rm9yVW5pdFRlc3RzKCk7CisgICAgaW50IHJlc3VsdCA9IHRlc3RTdWl0ZS5SdW4oKTsKKyAg
ICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+
CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNp
bmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNp
bmNsdWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFj
ZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1Ymxp
YzoKKyAgICBXZWJGcmFtZVRlc3QoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkK
KyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygp
OworICAgIH0KKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYg
dXJsLCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYlN0cmluZyYgZmls
ZU5hbWUpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBw
b3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aC5hcHBlbmQo
Ii9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS8iKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5k
KGZpbGVOYW1lLnV0ZjgoKSk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tl
ZFVSTCh1cmwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKSk7CisgICAg
fQorCisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorfTsKKworY2xh
c3MgVGVzdFdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKK1RF
U1RfRihXZWJGcmFtZVRlc3QsIENvbnRlbnRUZXh0KQoreworICAgIC8vIFJlZ2lzdGVyIG91ciBy
ZXNvdXJjZXMuCisgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgcmVzcG9uc2UuaW5p
dGlhbGl6ZSgpOworICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICBz
dGQ6OnN0cmluZyByb290VVJMID0gImh0dHA6Ly93d3cudGVzdC5jb20vIjsKKyAgICBjb25zdCBj
aGFyKiBmaWxlc1tdID0geyAiaWZyYW1lc190ZXN0Lmh0bWwiLCAidmlzaWJsZV9pZnJhbWUuaHRt
bCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmlzaWJsZV9pZnJhbWUuaHRtbCIs
ICJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIiB9OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKHNp
emVvZihmaWxlcykgLyBzaXplb2YoY2hhciopKTsgKytpKSB7CisgICAgICAgIFdlYlVSTCB3ZWJV
UkwgPSBHVVJMKHJvb3RVUkwgKyBmaWxlc1tpXSk7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJM
TG9hZCh3ZWJVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVzW2ldKSk7Cisg
ICAgfQorCisgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBXZWJWaWV3LiAgICAKKyAg
ICBUZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmll
dyA9IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1l
KCZ3ZWJGcmFtZUNsaWVudCk7CisKKyAgICAvLyBMb2FkIHRoZSBtYWluIGZyYW1lIFVSTC4KKyAg
ICBXZWJVUkwgdGVzdFVSTChHVVJMKHJvb3RVUkwgKyBmaWxlc1swXSkpOworICAgIFdlYlVSTFJl
cXVlc3QgdXJsUmVxdWVzdDsKKyAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICB1cmxS
ZXF1ZXN0LnNldFVSTCh0ZXN0VVJMKTsKKyAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJl
cXVlc3QodXJsUmVxdWVzdCk7CisKKyAgICAvLyBMb2FkIGFsbCBwZW5kaW5nIGFzeW5jaHJvbm91
cyByZXF1ZXN0cy4KKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBOb3cgcmV0cmlldmUg
dGhlIGZyYW1lcyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMgdmlzaWJsZSBlbGVtZW50
cy4KKyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRl
bnRBc1RleHQoMTAyNCkudXRmOCgpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywg
Y29udGVudC5maW5kKCIgdmlzaWJsZSBwYXJhZ3JhcGgiKSk7CisgICAgRVhQRUNUX05FKHN0ZDo6
c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIGlmcmFtZSIpKTsKKyAgICBFWFBF
Q1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGludmlzaWJsZSBwYXJhcmFw
aCIpKTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGlu
dmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250
ZW50LmZpbmQoImlmcmFtZSB3aXRoIHplcm8gc2l6ZSIpKTsKKworICAgIHdlYlZpZXctPmNsb3Nl
KCk7Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxp
ZnJhbWUgc3JjPSJ2aXNpYmxlX2lmcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHdp
ZHRoPTAgaGVpZ2h0PTAgc3JjPSJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIj48L2lmcmFtZT4KKyAg
ICA8aWZyYW1lIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiIHNyYz0iaW52aXNpYmxlX2lmcmFt
ZS5odG1sIj48L2lmcmFtZT4KKyAgICA8cD5UaGlzIGlzIGEgdmlzaWJsZSBwYXJhZ3JhcGguPC9w
PgorICAgIDxwIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiPlRoaXMgaXMgYW4gaW52aXNpYmxl
IHBhcmFncmFwaC48L3A+CisgIDwvYm9keT4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDYgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGFuIGludmlz
aWJsZSBmcmFtZS4KKyAgPC9ib2R5PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBX
ZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGEgdmlzaWJsZSBpZnJh
bWUuCisgIDwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS96ZXJv
X3NpemVkX2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9k
YXRhL3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGFuIGlmcmFtZSB3aXRoIHpl
cm8gc2l6ZS4KKyAgPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5h
bWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59774</attachid>
            <date>2010-06-25 09:25:30 -0700</date>
            <delta_ts>2010-06-30 18:28:38 -0700</delta_ts>
            <desc>Fixed DEPS which was conflicting with another CL</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>11196</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE4NjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMjIgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtjaHJvbWl1bV0gTWFkZSBXZWJGcmFtZSBub3QgcmVw
b3J0IHRoZSB0ZXh0IGZyb20gaGlkZGVuIGZyYW1lcy4KKyAgICAgICAgKHNvbWUgcGFnZXMgY29u
dGFpbiBoaWRkZW4gZnJhbWVzIHdpdGggZ2FyYmFnZSB0ZXh0IHRoYXQKKyAgICAgICAgc2hvdWxk
IG5vdCBiZSBpbmRleGVkIG9yIHVzZWQgdG8gZGV0ZWN0IHRoZSBwYWdlJ3MgbGFuZ3VhZ2UpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk0NTYKKwor
ICAgICAgICAqIERFUFM6CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQp
OgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2Rh
dGE6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMjUg
IExlaSBaaGVuZyAgPGx6aGVuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDYxODY2KQorKysg
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiw2ICs1MzIs
NyBAQAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3Rlc3RpbmcvZ3Rlc3Qu
Z3lwOmd0ZXN0JywKICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jh
c2UuZ3lwOmJhc2UnLAogICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jhc2Uv
YmFzZS5neXA6YmFzZV9pMThuJywKKyAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGly
KS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAg
ICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2dwdS9ncHUuZ3lwOmdsZXMyX2NfbGli
JywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwpAQCAtNTQz
LDYgKzU0NCw3IEBACiAgICAgICAgICAgICAgICAgJ3Rlc3RzL0tleWJvYXJkVGVzdC5jcHAnLAog
ICAgICAgICAgICAgICAgICd0ZXN0cy9LVVJMVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICd0
ZXN0cy9SdW5BbGxUZXN0cy5jcHAnLAorICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRl
c3QuY3BwJywKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKICAg
ICAgICAgICAgICAgICBbJ09TPT0id2luIicsIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAJKHJldmlzaW9uIDYxODY2KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsNiArMjMzLDE1IEBAIHN0YXRpYyB2
b2lkIGZyYW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAgICAvLyBSZWN1cnNpdmVseSB3YWxr
IHRoZSBjaGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1lVHJlZSA9IGZyYW1lLT50cmVlKCk7
CiAgICAgZm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRyZWUtPmZpcnN0Q2hpbGQoKTsgY3Vy
Q2hpbGQ7IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICAvLyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2libGUgZnJhbWVzLgorICAgICAgICBS
ZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGlsZC0+Y29udGVudFJlbmRlcmVyKCk7
CisgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIgPSBjdXJDaGlsZC0+b3duZXJSZW5k
ZXJlcigpOyAgICAgICAgCisgICAgICAgIGlmICghY29udGVudFJlbmRlcmVyIHx8ICFjb250ZW50
UmVuZGVyZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkKKyAgICAgICAg
ICAgIHx8IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRlbnRSZW5kZXJlci0+d2lkdGgoKSA8
PSAwKSB8fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250ZW50UmVuZGVyZXItPmhlaWdodCgp
IDw9IDApCisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJlciAmJiBvd25lclJlbmRlcmVyLT5z
dHlsZSgpICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
KSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxsIHVwIHRoZSBidWZmZXIsIGFuZCBn
aXZlIHVwIGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBkYW5nZXIgaXMgaWYgdGhlIHNlcGFy
YXRvciB3aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhhbgogICAgICAgICAvLyBtYXhDaGFy
cy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBhYm92ZToKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkocmV2aXNpb24gNjE4NjYpCisrKyBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOCArMzMs
MTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1ZGUgIldlYktpdENsaWVudC5oIgot
Ci0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJvdGVjdGVkIGRlc3RydWN0b3IsIHNvIHdlIG5lZWQg
dG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdlYktpdENsaWVudCA6IHB1YmxpYyBXZWJLaXQ6Oldl
YktpdENsaWVudCB7Ci19OworI2luY2x1ZGUgPHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0
Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKLSAgICBEdW1teVdlYktp
dENsaWVudCBkdW1teUNsaWVudDsKLSAgICBXZWJLaXQ6OmluaXRpYWxpemUoJmR1bW15Q2xpZW50
KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0U3VpdGUoYXJnYywgYXJndikuUnVuKCk7Ci0KLSAg
ICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAgVGVzdFN1aXRlIHRlc3RTdWl0ZShhcmdjLCBhcmd2
KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBiZSBjcmVhdGVkIGJlZm9yZSBTZXRVcFRlc3RFbnZp
cm9ubWVudCBzbyBpdCBwZXJmb3JtcworICAgIC8vIGluaXRpYWxpemF0aW9ucyBuZWVkZWQgYnkg
V2ViS2l0IHN1cHBvcnQuCisgICAgd2Via2l0X3N1cHBvcnQ6OlNldFVwVGVzdEVudmlyb25tZW50
Rm9yVW5pdFRlc3RzKCk7CisgICAgaW50IHJlc3VsdCA9IHRlc3RTdWl0ZS5SdW4oKTsKKyAgICB3
ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1lbnQoKTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8Z29vZ2xldXJsL3NyYy9ndXJsLmg+Cisj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRf
c3VwcG9ydC5oPgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJVUkwuaCIKKyNpbmNs
dWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViVVJMUmVzcG9uc2UuaCIKKyNpbmNs
dWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSB7
CisKK2NsYXNzIFdlYkZyYW1lVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoK
KyAgICBXZWJGcmFtZVRlc3QoKSB7fQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKKyAg
ICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOwor
ICAgIH0KKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKGNvbnN0IFdlYlVSTCYgdXJs
LCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYlN0cmluZyYgZmlsZU5h
bWUpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBmaWxlUGF0aCA9IHdlYmtpdF9zdXBwb3J0
OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAgICBmaWxlUGF0aC5hcHBlbmQoIi9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS8iKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKGZp
bGVOYW1lLnV0ZjgoKSk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpSZWdpc3Rlck1vY2tlZFVS
TCh1cmwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVQYXRoKSk7CisgICAgfQor
CisgICAgdm9pZCBzZXJ2ZVJlcXVlc3RzKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0
OjpTZXJ2ZUFzeW5jaHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorfTsKKworY2xhc3Mg
VGVzdFdlYkZyYW1lQ2xpZW50IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKK1RFU1Rf
RihXZWJGcmFtZVRlc3QsIENvbnRlbnRUZXh0KQoreworICAgIC8vIFJlZ2lzdGVyIG91ciByZXNv
dXJjZXMuCisgICAgV2ViVVJMUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgcmVzcG9uc2UuaW5pdGlh
bGl6ZSgpOworICAgIHJlc3BvbnNlLnNldE1JTUVUeXBlKCJ0ZXh0L2h0bWwiKTsKKyAgICBzdGQ6
OnN0cmluZyByb290VVJMID0gImh0dHA6Ly93d3cudGVzdC5jb20vIjsKKyAgICBjb25zdCBjaGFy
KiBmaWxlc1tdID0geyAiaWZyYW1lc190ZXN0Lmh0bWwiLCAidmlzaWJsZV9pZnJhbWUuaHRtbCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmlzaWJsZV9pZnJhbWUuaHRtbCIsICJ6
ZXJvX3NpemVkX2lmcmFtZS5odG1sIiB9OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKHNpemVv
ZihmaWxlcykgLyBzaXplb2YoY2hhciopKTsgKytpKSB7CisgICAgICAgIFdlYlVSTCB3ZWJVUkwg
PSBHVVJMKHJvb3RVUkwgKyBmaWxlc1tpXSk7CisgICAgICAgIHJlZ2lzdGVyTW9ja2VkVVJMTG9h
ZCh3ZWJVUkwsIHJlc3BvbnNlLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVzW2ldKSk7CisgICAg
fQorCisgICAgLy8gQ3JlYXRlIGFuZCBpbml0aWFsaXplIHRoZSBXZWJWaWV3LiAgICAKKyAgICBU
ZXN0V2ViRnJhbWVDbGllbnQgd2ViRnJhbWVDbGllbnQ7CisgICAgV2ViVmlldyogd2ViVmlldyA9
IFdlYlZpZXc6OmNyZWF0ZSgwKTsKKyAgICB3ZWJWaWV3LT5pbml0aWFsaXplTWFpbkZyYW1lKCZ3
ZWJGcmFtZUNsaWVudCk7CisKKyAgICAvLyBMb2FkIHRoZSBtYWluIGZyYW1lIFVSTC4KKyAgICBX
ZWJVUkwgdGVzdFVSTChHVVJMKHJvb3RVUkwgKyBmaWxlc1swXSkpOworICAgIFdlYlVSTFJlcXVl
c3QgdXJsUmVxdWVzdDsKKyAgICB1cmxSZXF1ZXN0LmluaXRpYWxpemUoKTsKKyAgICB1cmxSZXF1
ZXN0LnNldFVSTCh0ZXN0VVJMKTsKKyAgICB3ZWJWaWV3LT5tYWluRnJhbWUoKS0+bG9hZFJlcXVl
c3QodXJsUmVxdWVzdCk7CisKKyAgICAvLyBMb2FkIGFsbCBwZW5kaW5nIGFzeW5jaHJvbm91cyBy
ZXF1ZXN0cy4KKyAgICBzZXJ2ZVJlcXVlc3RzKCk7CisKKyAgICAvLyBOb3cgcmV0cmlldmUgdGhl
IGZyYW1lcyB0ZXh0IGFuZCB0ZXN0IGl0IG9ubHkgaW5jbHVkZXMgdmlzaWJsZSBlbGVtZW50cy4K
KyAgICBzdGQ6OnN0cmluZyBjb250ZW50ID0gd2ViVmlldy0+bWFpbkZyYW1lKCktPmNvbnRlbnRB
c1RleHQoMTAyNCkudXRmOCgpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29u
dGVudC5maW5kKCIgdmlzaWJsZSBwYXJhZ3JhcGgiKSk7CisgICAgRVhQRUNUX05FKHN0ZDo6c3Ry
aW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIGlmcmFtZSIpKTsKKyAgICBFWFBFQ1Rf
RVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGludmlzaWJsZSBwYXJhcmFwaCIp
KTsKKyAgICBFWFBFQ1RfRVEoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIGludmlz
aWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50
LmZpbmQoImlmcmFtZSB3aXRoIHplcm8gc2l6ZSIpKTsKKworICAgIHdlYlZpZXctPmNsb3NlKCk7
Cit9CisKK30KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJG
cmFtZVRlc3QuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pZnJhbWVzX3Rlc3QuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+CisgIDxib2R5PgorICAgIDxpZnJh
bWUgc3JjPSJ2aXNpYmxlX2lmcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICA8aWZyYW1lIHdpZHRo
PTAgaGVpZ2h0PTAgc3JjPSJ6ZXJvX3NpemVkX2lmcmFtZS5odG1sIj48L2lmcmFtZT4KKyAgICA8
aWZyYW1lIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiIHNyYz0iaW52aXNpYmxlX2lmcmFtZS5o
dG1sIj48L2lmcmFtZT4KKyAgICA8cD5UaGlzIGlzIGEgdmlzaWJsZSBwYXJhZ3JhcGguPC9wPgor
ICAgIDxwIHN0eWxlPSJ2aXNpYmlsaXR5OmhpZGRlbjsiPlRoaXMgaXMgYW4gaW52aXNpYmxlIHBh
cmFncmFwaC48L3A+CisgIDwvYm9keT4KKzwvaHRtbD4KKwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZyYW1lc190ZXN0Lmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGFuIGludmlzaWJs
ZSBmcmFtZS4KKyAgPC9ib2R5PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJL
aXQvY2hyb21pdW0vdGVzdHMvZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGEgdmlzaWJsZSBpZnJhbWUu
CisgIDwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL3Zpc2libGVfaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9s
LXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS96ZXJvX3Np
emVkX2lmcmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRh
L3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS96ZXJvX3NpemVkX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUgQEAKKzxodG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGFuIGlmcmFtZSB3aXRoIHplcm8g
c2l6ZS4KKyAgPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0L2No
cm9taXVtL3Rlc3RzL2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6
IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60180</attachid>
            <date>2010-06-30 18:28:38 -0700</date>
            <delta_ts>2010-08-05 15:45:33 -0700</delta_ts>
            <desc>Making WebFrameTest Windows only</desc>
            <filename>hidden_frames.patch</filename>
            <type>text/plain</type>
            <size>12181</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjIyMjMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMzAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgV2ViRnJhbWUgbm90IHJlcG9ydCB0aGUgdGV4
dCBmcm9tIGhpZGRlbiBmcmFtZXMuCisgICAgICAgIChzb21lIHBhZ2VzIGNvbnRhaW4gaGlkZGVu
IGZyYW1lcyB3aXRoIGdhcmJhZ2UgdGV4dCB0aGF0CisgICAgICAgIHNob3VsZCBub3QgYmUgaW5k
ZXhlZCBvciB1c2VkIHRvIGRldGVjdCB0aGUgcGFnZSdzIGxhbmd1YWdlKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDU2ICAgICAgICAKKworICAg
ICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL1dlYkNTdHJpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDU3RyaW5nOjpjb21wYXJlKToKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQp
OgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorCiAyMDEwLTA2LTMwICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1p
dHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjIyMjMpCisrKyBXZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNTY0LDYgKzU2NCw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2Uu
Z3lwOmJhc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikv
YmFzZS9iYXNlLmd5cDpiYXNlX2kxOG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvZ3B1L2dwdS5neXA6Z2xlczJfY19saWInLAorICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBv
cnQuZ3lwOndlYmtpdF9zdXBwb3J0JywKICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgICdw
dWJsaWMnLApAQCAtNTc4LDEwICs1NzksMTEgQEAKICAgICAgICAgICAgICAgICAgICAgJ2NvbmRp
dGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIicsIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBGSVhNRTogUG9ydCBQb3B1cE1lbnVUZXN0IHRvIExpbnV4IGFuZCBNYWMu
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFBvcnQgUG9wdXBNZW51
VGVzdCBhbmQgV2ViRnJhbWVUZXN0IHRvIExpbnV4IGFuZCBNYWMuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd0ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcCcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9UcmFuc3BhcmVuY3lXaW5UZXN0LmNwcCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9VbmlzY3JpYmVIZWxwZXJUZXN0LmNw
cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJGcmFtZVRlc3Qu
Y3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgfV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIicsIHsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDYyMjIzKQorKysgV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMs
NiArMjMzLDE1IEBAIHN0YXRpYyB2b2lkIGZyYW1lQ29udGVudEFzUGxhaW5UZXh0KHNpemUKICAg
ICAvLyBSZWN1cnNpdmVseSB3YWxrIHRoZSBjaGlsZHJlbi4KICAgICBGcmFtZVRyZWUqIGZyYW1l
VHJlZSA9IGZyYW1lLT50cmVlKCk7CiAgICAgZm9yIChGcmFtZSogY3VyQ2hpbGQgPSBmcmFtZVRy
ZWUtPmZpcnN0Q2hpbGQoKTsgY3VyQ2hpbGQ7IGN1ckNoaWxkID0gY3VyQ2hpbGQtPnRyZWUoKS0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICAvLyBJZ25vcmUgdGhlIHRleHQgb2Ygbm9uLXZpc2li
bGUgZnJhbWVzLgorICAgICAgICBSZW5kZXJWaWV3KiBjb250ZW50UmVuZGVyZXIgPSBjdXJDaGls
ZC0+Y29udGVudFJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlclBhcnQqIG93bmVyUmVuZGVyZXIg
PSBjdXJDaGlsZC0+b3duZXJSZW5kZXJlcigpOyAgICAgICAgCisgICAgICAgIGlmICghY29udGVu
dFJlbmRlcmVyIHx8ICFjb250ZW50UmVuZGVyZXItPndpZHRoKCkgfHwgIWNvbnRlbnRSZW5kZXJl
ci0+aGVpZ2h0KCkKKyAgICAgICAgICAgIHx8IChjb250ZW50UmVuZGVyZXItPngoKSArIGNvbnRl
bnRSZW5kZXJlci0+d2lkdGgoKSA8PSAwKSB8fCAoY29udGVudFJlbmRlcmVyLT55KCkgKyBjb250
ZW50UmVuZGVyZXItPmhlaWdodCgpIDw9IDApCisgICAgICAgICAgICB8fCAob3duZXJSZW5kZXJl
ciAmJiBvd25lclJlbmRlcmVyLT5zdHlsZSgpICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCktPnZp
c2liaWxpdHkoKSAhPSBWSVNJQkxFKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKwogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGZyYW1lIHNlcGFyYXRvciB3b24ndCBmaWxs
IHVwIHRoZSBidWZmZXIsIGFuZCBnaXZlIHVwIGlmCiAgICAgICAgIC8vIGl0IHdpbGwuIFRoZSBk
YW5nZXIgaXMgaWYgdGhlIHNlcGFyYXRvciB3aWxsIG1ha2UgdGhlIGJ1ZmZlciBsb25nZXIgdGhh
bgogICAgICAgICAvLyBtYXhDaGFycy4gVGhpcyB3aWxsIGNhdXNlIHRoZSBjb21wdXRhdGlvbiBh
Ym92ZToKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkocmV2aXNpb24g
NjIyMjMpCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxOCArMzMsMTUgQEAKIAogI2luY2x1ZGUgIldlYktpdC5oIgogI2luY2x1
ZGUgIldlYktpdENsaWVudC5oIgotCi0vLyBXZWJLaXRDbGllbnQgaGFzIGEgcHJvdGVjdGVkIGRl
c3RydWN0b3IsIHNvIHdlIG5lZWQgdG8gc3ViY2xhc3MuCi1jbGFzcyBEdW1teVdlYktpdENsaWVu
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYktpdENsaWVudCB7Ci19OworI2luY2x1ZGUgPHdlYmtpdC9z
dXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CiAKIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJn
dikKIHsKLSAgICBEdW1teVdlYktpdENsaWVudCBkdW1teUNsaWVudDsKLSAgICBXZWJLaXQ6Omlu
aXRpYWxpemUoJmR1bW15Q2xpZW50KTsKLQotICAgIGludCByZXN1bHQgPSBUZXN0U3VpdGUoYXJn
YywgYXJndikuUnVuKCk7Ci0KLSAgICBXZWJLaXQ6OnNodXRkb3duKCk7CisgICAgVGVzdFN1aXRl
IHRlc3RTdWl0ZShhcmdjLCBhcmd2KTsKKyAgICAvLyBUZXN0U3VpdGUgbXVzdCBiZSBjcmVhdGVk
IGJlZm9yZSBTZXRVcFRlc3RFbnZpcm9ubWVudCBzbyBpdCBwZXJmb3JtcworICAgIC8vIGluaXRp
YWxpemF0aW9ucyBuZWVkZWQgYnkgV2ViS2l0IHN1cHBvcnQuCisgICAgd2Via2l0X3N1cHBvcnQ6
OlNldFVwVGVzdEVudmlyb25tZW50Rm9yVW5pdFRlc3RzKCk7CisgICAgaW50IHJlc3VsdCA9IHRl
c3RTdWl0ZS5SdW4oKTsKKyAgICB3ZWJraXRfc3VwcG9ydDo6VGVhckRvd25UZXN0RW52aXJvbm1l
bnQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkZyYW1lVGVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvV2Vi
RnJhbWVUZXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8Z29v
Z2xldXJsL3NyYy9ndXJsLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx3
ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisj
aW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNs
dWRlICJXZWJVUkwuaCIKKyNpbmNsdWRlICJXZWJVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2Vi
VVJMUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIFdlYkZyYW1lVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICBXZWJGcmFtZVRlc3QoKSB7fQorCisgICAgdmlydHVh
bCB2b2lkIFRlYXJEb3duKCkKKyAgICB7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpVbnJlZ2lz
dGVyQWxsTW9ja2VkVVJMcygpOworICAgIH0KKworICAgIHZvaWQgcmVnaXN0ZXJNb2NrZWRVUkxM
b2FkKGNvbnN0IFdlYlVSTCYgdXJsLCBjb25zdCBXZWJVUkxSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFdlYlN0cmluZyYgZmlsZU5hbWUpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBmaWxl
UGF0aCA9IHdlYmtpdF9zdXBwb3J0OjpHZXRXZWJLaXRSb290RGlyKCkudXRmOCgpOworICAgICAg
ICBmaWxlUGF0aC5hcHBlbmQoIi9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS8iKTsKKyAgICAg
ICAgZmlsZVBhdGguYXBwZW5kKGZpbGVOYW1lLnV0ZjgoKSk7CisgICAgICAgIHByaW50ZigiUmVn
aXN0ZXJpbmc6ICVzXG4iLCBmaWxlUGF0aC5jX3N0cigpKTsKKyAgICAgICAgd2Via2l0X3N1cHBv
cnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVURjgo
ZmlsZVBhdGgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNlcnZlUmVxdWVzdHMoKQorICAgIHsKKyAg
ICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMoKTsK
KyAgICB9Cit9OworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJhbWVD
bGllbnQgeworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGVudFRleHQpCit7CisgICAg
Ly8gUmVnaXN0ZXIgb3VyIHJlc291cmNlcy4KKyAgICBXZWJVUkxSZXNwb25zZSByZXNwb25zZTsK
KyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUoInRl
eHQvaHRtbCIpOworICAgIHN0ZDo6c3RyaW5nIHJvb3RVUkwgPSAiaHR0cDovL3d3dy50ZXN0LmNv
bS8iOworICAgIGNvbnN0IGNoYXIqIGZpbGVzW10gPSB7ICJpZnJhbWVzX3Rlc3QuaHRtbCIsICJ2
aXNpYmxlX2lmcmFtZS5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52aXNp
YmxlX2lmcmFtZS5odG1sIiwgInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiIH07CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCAoc2l6ZW9mKGZpbGVzKSAvIHNpemVvZihjaGFyKikpOyArK2kpIHsKKyAg
ICAgICAgV2ViVVJMIHdlYlVSTCA9IEdVUkwocm9vdFVSTCArIGZpbGVzW2ldKTsKKyAgICAgICAg
cmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHdlYlVSTCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVU
RjgoZmlsZXNbaV0pKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUgdGhl
IFdlYlZpZXcuCisgICAgVGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50OworICAgIFdl
YlZpZXcqIHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCk7CisgICAgd2ViVmlldy0+aW5pdGlh
bGl6ZU1haW5GcmFtZSgmd2ViRnJhbWVDbGllbnQpOworCisgICAgLy8gTG9hZCB0aGUgbWFpbiBm
cmFtZSBVUkwuCisgICAgV2ViVVJMIHRlc3RVUkwoR1VSTChyb290VVJMICsgZmlsZXNbMF0pKTsK
KyAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CisgICAgdXJsUmVxdWVzdC5pbml0aWFsaXpl
KCk7CisgICAgdXJsUmVxdWVzdC5zZXRVUkwodGVzdFVSTCk7CisgICAgd2ViVmlldy0+bWFpbkZy
YW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOworCisgICAgLy8gTG9hZCBhbGwgcGVuZGlu
ZyBhc3luY2hyb25vdXMgcmVxdWVzdHMuCisgICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgLy8g
Tm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1ZGVzIHZp
c2libGUgZWxlbWVudHMuCisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5G
cmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpz
dHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgcGFyYWdyYXBoIikpOworICAgIEVY
UEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlzaWJsZSBpZnJhbWUi
KSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZp
c2libGUgcGFyYXJhcGgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250
ZW50LmZpbmQoIiBpbnZpc2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmlu
Zzo6bnBvcywgY29udGVudC5maW5kKCJpZnJhbWUgd2l0aCB6ZXJvIHNpemUiKSk7CisKKyAgICB3
ZWJWaWV3LT5jbG9zZSgpOworfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hy
b21pdW0vdGVzdHMvV2ViRnJhbWVUZXN0LmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5
bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNfdGVz
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNf
dGVzdC5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaWZy
YW1lc190ZXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorICA8
Ym9keT4KKyAgICA8aWZyYW1lIHNyYz0idmlzaWJsZV9pZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cisg
ICAgPGlmcmFtZSB3aWR0aD0wIGhlaWdodD0wIHNyYz0iemVyb19zaXplZF9pZnJhbWUuaHRtbCI+
PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47IiBzcmM9Imlu
dmlzaWJsZV9pZnJhbWUuaHRtbCI+PC9pZnJhbWU+CisgICAgPHA+VGhpcyBpcyBhIHZpc2libGUg
cGFyYWdyYXBoLjwvcD4KKyAgICA8cCBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47Ij5UaGlzIGlz
IGFuIGludmlzaWJsZSBwYXJhZ3JhcGguPC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CisKKzxodG1s
PgorICA8Ym9keT4KKyAgICA8aWZyYW1lIHNyYz0idmlzaWJsZV9pZnJhbWUuaHRtbCI+PC9pZnJh
bWU+CisgICAgPGlmcmFtZSB3aWR0aD0wIGhlaWdodD0wIHNyYz0iemVyb19zaXplZF9pZnJhbWUu
aHRtbCI+PC9pZnJhbWU+CisgICAgPGlmcmFtZSBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47IiBz
cmM9ImludmlzaWJsZV9pZnJhbWUuaHRtbCI+PC9pZnJhbWU+CisgICAgPHA+VGhpcyBpcyBhIHZp
c2libGUgcGFyYWdyYXBoLjwvcD4KKyAgICA8cCBzdHlsZT0idmlzaWJpbGl0eTpoaWRkZW47Ij5U
aGlzIGlzIGFuIGludmlzaWJsZSBwYXJhZ3JhcGguPC9wPgorICA8L2JvZHk+Cis8L2h0bWw+CisK
ClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2lmcmFtZXNf
dGVzdC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvaW52aXNpYmxlX2lmcmFtZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ludmlzaWJsZV9pZnJhbWUuaHRtbAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ludmlzaWJsZV9pZnJh
bWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+CisgIDxib2R5Pgor
ICAgIFRoaXMgaXMgYW4gaW52aXNpYmxlIGZyYW1lLgorICA8L2JvZHk+Cis8L2h0bWw+CisKKzxo
dG1sPgorICA8Ym9keT4KKyAgICBUaGlzIGlzIGFuIGludmlzaWJsZSBmcmFtZS4KKyAgPC9ib2R5
PgorPC9odG1sPgorCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9pbnZpc2libGVfaWZyYW1lLmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxl
CiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS92aXNpYmxlX2lmcmFt
ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3Zpc2libGVf
aWZyYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS92
aXNpYmxlX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACis8aHRtbD4K
KyAgPGJvZHk+CisgICAgVGhpcyBpcyBhIHZpc2libGUgaWZyYW1lLgorICA8L2JvZHk+Cis8L2h0
bWw+Cis8aHRtbD4KKyAgPGJvZHk+CisgICAgVGhpcyBpcyBhIHZpc2libGUgaWZyYW1lLgorICA8
L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS92aXNpYmxlX2lmcmFtZS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHls
ZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvemVyb19zaXplZF9p
ZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS96ZXJv
X3NpemVkX2lmcmFtZS5odG1sCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvemVyb19zaXplZF9pZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBA
QAorPGh0bWw+CisgIDxib2R5PgorICAgIFRoaXMgaXMgYW4gaWZyYW1lIHdpdGggemVybyBzaXpl
LgorICA8L2JvZHk+Cis8L2h0bWw+Cis8aHRtbD4KKyAgPGJvZHk+CisgICAgVGhpcyBpcyBhbiBp
ZnJhbWUgd2l0aCB6ZXJvIHNpemUuCisgIDwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3plcm9fc2l6ZWRfaWZyYW1lLmh0bWwK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63650</attachid>
            <date>2010-08-05 15:45:59 -0700</date>
            <delta_ts>2010-08-09 17:05:05 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-39456-20100805154558.patch</filename>
            <type>text/plain</type>
            <size>4587</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjQ2OTYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMzAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQg
ZnJvbSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBm
cmFtZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4
ZWQgb3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ1NiAgICAgICAgCisKKyAgICAg
ICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJDU3RyaW5nLmg6CisgICAgICAg
IChXZWJLaXQ6Om9wZXJhdG9yPCk6CisgICAgICAgICogcHVibGljL1dlYlVSTC5oOgorICAgICAg
ICAoV2ViS2l0OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHNyYy9XZWJDU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ1N0cmluZzo6Y29tcGFyZSk6CisgICAgICAgICogc3JjL1dlYkZy
YW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZyYW1lQ29udGVudEFzUGxhaW5UZXh0KToK
KyAgICAgICAgKiB0ZXN0cy9SdW5BbGxUZXN0cy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiB0ZXN0cy9XZWJGcmFtZVRlc3QuY3BwOiBBZGRlZC4KKwogMjAxMC0wOC0wMiAgS2VubmV0
aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY0Njk2KQorKysgV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTY4Niw2ICs2ODYsNyBAQAog
ICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5
cDpiYXNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2Jh
c2UvYmFzZS5neXA6YmFzZV9pMThuJywKICAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL2dwdS9ncHUuZ3lwOmdsZXMyX2NfbGliJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0
Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAncHVi
bGljJywKQEAgLTcwMCwxMCArNzAxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICdjb25kaXRp
b25zJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMgRklYTUU6IFBvcnQgUG9wdXBNZW51VGVzdCB0byBMaW51eCBhbmQgTWFjLgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQb3J0IFBvcHVwTWVudVRl
c3QgYW5kIFdlYkZyYW1lVGVzdCB0byBMaW51eCBhbmQgTWFjLgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHAnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVW5pc2NyaWJlSGVscGVyVGVzdC5jcHAn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVUZXN0LmNw
cCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Im1hYyInLCB7CkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA2NDY5NikKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDYg
KzIzNCwxNSBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRlbnRBc1BsYWluVGV4dChzaXplCiAgICAg
Ly8gUmVjdXJzaXZlbHkgd2FsayB0aGUgY2hpbGRyZW4uCiAgICAgRnJhbWVUcmVlKiBmcmFtZVRy
ZWUgPSBmcmFtZS0+dHJlZSgpOwogICAgIGZvciAoRnJhbWUqIGN1ckNoaWxkID0gZnJhbWVUcmVl
LT5maXJzdENoaWxkKCk7IGN1ckNoaWxkOyBjdXJDaGlsZCA9IGN1ckNoaWxkLT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXh0IG9mIG5vbi12aXNpYmxl
IGZyYW1lcy4KKyAgICAgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyID0gY3VyQ2hpbGQt
PmNvbnRlbnRSZW5kZXJlcigpOworICAgICAgICBSZW5kZXJQYXJ0KiBvd25lclJlbmRlcmVyID0g
Y3VyQ2hpbGQtPm93bmVyUmVuZGVyZXIoKTsgICAgICAgIAorICAgICAgICBpZiAoIWNvbnRlbnRS
ZW5kZXJlciB8fCAhY29udGVudFJlbmRlcmVyLT53aWR0aCgpIHx8ICFjb250ZW50UmVuZGVyZXIt
PmhlaWdodCgpCisgICAgICAgICAgICB8fCAoY29udGVudFJlbmRlcmVyLT54KCkgKyBjb250ZW50
UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRlbnRSZW5kZXJlci0+eSgpICsgY29udGVu
dFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAgICAgICAgfHwgKG93bmVyUmVuZGVyZXIg
JiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25lclJlbmRlcmVyLT5zdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBzZXBhcmF0b3Igd29uJ3QgZmlsbCB1
cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAgICAgICAvLyBpdCB3aWxsLiBUaGUgZGFu
Z2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtlIHRoZSBidWZmZXIgbG9uZ2VyIHRoYW4K
ICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY29tcHV0YXRpb24gYWJv
dmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHJldmlzaW9uIDY0
Njk2KQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTggKzMzLDE1IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNpbmNsdWRl
ICJXZWJLaXRDbGllbnQuaCIKLQotLy8gV2ViS2l0Q2xpZW50IGhhcyBhIHByb3RlY3RlZCBkZXN0
cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNzLgotY2xhc3MgRHVtbXlXZWJLaXRDbGllbnQg
OiBwdWJsaWMgV2ViS2l0OjpXZWJLaXRDbGllbnQgewotfTsKKyNpbmNsdWRlIDx3ZWJraXQvc3Vw
cG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
CiB7Ci0gICAgRHVtbXlXZWJLaXRDbGllbnQgZHVtbXlDbGllbnQ7Ci0gICAgV2ViS2l0Ojppbml0
aWFsaXplKCZkdW1teUNsaWVudCk7Ci0KLSAgICBpbnQgcmVzdWx0ID0gVGVzdFN1aXRlKGFyZ2Ms
IGFyZ3YpLlJ1bigpOwotCi0gICAgV2ViS2l0OjpzaHV0ZG93bigpOworICAgIFRlc3RTdWl0ZSB0
ZXN0U3VpdGUoYXJnYywgYXJndik7CisgICAgLy8gVGVzdFN1aXRlIG11c3QgYmUgY3JlYXRlZCBi
ZWZvcmUgU2V0VXBUZXN0RW52aXJvbm1lbnQgc28gaXQgcGVyZm9ybXMKKyAgICAvLyBpbml0aWFs
aXphdGlvbnMgbmVlZGVkIGJ5IFdlYktpdCBzdXBwb3J0LgorICAgIHdlYmtpdF9zdXBwb3J0OjpT
ZXRVcFRlc3RFbnZpcm9ubWVudEZvclVuaXRUZXN0cygpOworICAgIGludCByZXN1bHQgPSB0ZXN0
U3VpdGUuUnVuKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmlyb25tZW50
KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63956</attachid>
            <date>2010-08-09 17:05:26 -0700</date>
            <delta_ts>2010-08-17 10:22:32 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-39456-20100809170525.patch</filename>
            <type>text/plain</type>
            <size>9118</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjUwMTUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMzAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgV2ViRnJhbWUgbm90IHJlcG9ydCB0aGUgdGV4
dCBmcm9tIGhpZGRlbiBmcmFtZXMuCisgICAgICAgIChzb21lIHBhZ2VzIGNvbnRhaW4gaGlkZGVu
IGZyYW1lcyB3aXRoIGdhcmJhZ2UgdGV4dCB0aGF0CisgICAgICAgIHNob3VsZCBub3QgYmUgaW5k
ZXhlZCBvciB1c2VkIHRvIGRldGVjdCB0aGUgcGFnZSdzIGxhbmd1YWdlKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5NDU2ICAgICAgICAKKworICAg
ICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYktpdDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVVJMLmg6CisgICAg
ICAgIChXZWJLaXQ6Om9wZXJhdG9yPCk6CisgICAgICAgICogc3JjL1dlYkNTdHJpbmcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDU3RyaW5nOjpjb21wYXJlKToKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZnJhbWVDb250ZW50QXNQbGFpblRleHQp
OgorICAgICAgICAqIHRlc3RzL1J1bkFsbFRlc3RzLmNwcDoKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIHRlc3RzL1dlYkZyYW1lVGVzdC5jcHA6IEFkZGVkLgorCiAyMDEwLTA4LTA5ICBWYW5n
ZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjUwMTUp
CisrKyBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNjk3LDYg
KzY5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9i
YXNlL2Jhc2UuZ3lwOmJhc2VfaTE4bicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJv
bWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL2dwdS9ncHUuZ3lwOmdsZXMyX2Nf
bGliJywKKyAgICAgICAgICAgICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtp
dC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAg
ICAgICAgICAgICAgICAgICAgICAncHVibGljJywKQEAgLTcxMSwxMCArNzEyLDExIEBACiAgICAg
ICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAgICAgICAgICAgICAgICAgICAg
WydPUz09IndpbiInLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOiBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IFBvcnQgUG9wdXBNZW51
VGVzdCB0byBMaW51eCBhbmQgTWFjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IEZJWE1FOiBQb3J0IFBvcHVwTWVudVRlc3QgYW5kIFdlYkZyYW1lVGVzdCB0byBMaW51eCBhbmQg
TWFjLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVz
dC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVHJhbnNwYXJl
bmN5V2luVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMv
VW5pc2NyaWJlSGVscGVyVGVzdC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdHMvV2ViRnJhbWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAg
WydPUz09Im1hYyInLCB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShy
ZXZpc2lvbiA2NTAxNSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM0LDYgKzIzNCwxNSBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRl
bnRBc1BsYWluVGV4dChzaXplCiAgICAgLy8gUmVjdXJzaXZlbHkgd2FsayB0aGUgY2hpbGRyZW4u
CiAgICAgRnJhbWVUcmVlKiBmcmFtZVRyZWUgPSBmcmFtZS0+dHJlZSgpOwogICAgIGZvciAoRnJh
bWUqIGN1ckNoaWxkID0gZnJhbWVUcmVlLT5maXJzdENoaWxkKCk7IGN1ckNoaWxkOyBjdXJDaGls
ZCA9IGN1ckNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gSWdub3Jl
IHRoZSB0ZXh0IG9mIG5vbi12aXNpYmxlIGZyYW1lcy4KKyAgICAgICAgUmVuZGVyVmlldyogY29u
dGVudFJlbmRlcmVyID0gY3VyQ2hpbGQtPmNvbnRlbnRSZW5kZXJlcigpOworICAgICAgICBSZW5k
ZXJQYXJ0KiBvd25lclJlbmRlcmVyID0gY3VyQ2hpbGQtPm93bmVyUmVuZGVyZXIoKTsgICAgICAg
IAorICAgICAgICBpZiAoIWNvbnRlbnRSZW5kZXJlciB8fCAhY29udGVudFJlbmRlcmVyLT53aWR0
aCgpIHx8ICFjb250ZW50UmVuZGVyZXItPmhlaWdodCgpCisgICAgICAgICAgICB8fCAoY29udGVu
dFJlbmRlcmVyLT54KCkgKyBjb250ZW50UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRl
bnRSZW5kZXJlci0+eSgpICsgY29udGVudFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAg
ICAgICAgfHwgKG93bmVyUmVuZGVyZXIgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25l
clJlbmRlcmVyLT5zdHlsZSgpLT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFt
ZSBzZXBhcmF0b3Igd29uJ3QgZmlsbCB1cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAg
ICAgICAvLyBpdCB3aWxsLiBUaGUgZGFuZ2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtl
IHRoZSBidWZmZXIgbG9uZ2VyIHRoYW4KICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBj
YXVzZSB0aGUgY29tcHV0YXRpb24gYWJvdmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
UnVuQWxsVGVzdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5B
bGxUZXN0cy5jcHAJKHJldmlzaW9uIDY1MDE1KQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1
bkFsbFRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTggKzMzLDE1IEBACiAKICNpbmNs
dWRlICJXZWJLaXQuaCIKICNpbmNsdWRlICJXZWJLaXRDbGllbnQuaCIKLQotLy8gV2ViS2l0Q2xp
ZW50IGhhcyBhIHByb3RlY3RlZCBkZXN0cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNzLgot
Y2xhc3MgRHVtbXlXZWJLaXRDbGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJLaXRDbGllbnQgewot
fTsKKyNpbmNsdWRlIDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgRHVtbXlXZWJLaXRDbGllbnQgZHVtbXlD
bGllbnQ7Ci0gICAgV2ViS2l0Ojppbml0aWFsaXplKCZkdW1teUNsaWVudCk7Ci0KLSAgICBpbnQg
cmVzdWx0ID0gVGVzdFN1aXRlKGFyZ2MsIGFyZ3YpLlJ1bigpOwotCi0gICAgV2ViS2l0OjpzaHV0
ZG93bigpOworICAgIFRlc3RTdWl0ZSB0ZXN0U3VpdGUoYXJnYywgYXJndik7CisgICAgLy8gVGVz
dFN1aXRlIG11c3QgYmUgY3JlYXRlZCBiZWZvcmUgU2V0VXBUZXN0RW52aXJvbm1lbnQgc28gaXQg
cGVyZm9ybXMKKyAgICAvLyBpbml0aWFsaXphdGlvbnMgbmVlZGVkIGJ5IFdlYktpdCBzdXBwb3J0
LgorICAgIHdlYmtpdF9zdXBwb3J0OjpTZXRVcFRlc3RFbnZpcm9ubWVudEZvclVuaXRUZXN0cygp
OworICAgIGludCByZXN1bHQgPSB0ZXN0U3VpdGUuUnVuKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6
OlRlYXJEb3duVGVzdEVudmlyb25tZW50KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTEyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPGdvb2dsZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNp
bmNsdWRlICJXZWJGcmFtZS5oIgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVx
dWVzdC5oIgorI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5o
IgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJG
cmFtZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViRnJhbWVU
ZXN0KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICB3
ZWJraXRfc3VwcG9ydDo6VW5yZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisKKyAgICB2
b2lkIHJlZ2lzdGVyTW9ja2VkVVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViVVJM
UmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAg
ICAgICAgc3RkOjpzdHJpbmcgZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9v
dERpcigpLnV0ZjgoKTsKKyAgICAgICAgZmlsZVBhdGguYXBwZW5kKCIvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL2RhdGEvIik7CisgICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkp
OworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25z
ZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlUGF0aCkpOworICAgIH0KKworICAgIHZvaWQgc2Vy
dmVSZXF1ZXN0cygpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hy
b25vdXNNb2NrZWRSZXF1ZXN0cygpOworICAgIH0KK307CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNs
aWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0
LCBDb250ZW50VGV4dCkKK3sKKyAgICAvLyBSZWdpc3RlciBvdXIgcmVzb3VyY2VzLgorICAgIFdl
YlVSTFJlc3BvbnNlIHJlc3BvbnNlOworICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICBy
ZXNwb25zZS5zZXRNSU1FVHlwZSgidGV4dC9odG1sIik7CisgICAgc3RkOjpzdHJpbmcgcm9vdFVS
TCA9ICJodHRwOi8vd3d3LnRlc3QuY29tLyI7CisgICAgY29uc3QgY2hhciogZmlsZXNbXSA9IHsg
ImlmcmFtZXNfdGVzdC5odG1sIiwgInZpc2libGVfaWZyYW1lLmh0bWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJpbnZpc2libGVfaWZyYW1lLmh0bWwiLCAiemVyb19zaXplZF9pZnJh
bWUuaHRtbCIgfTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IChzaXplb2YoZmlsZXMpIC8gc2l6
ZW9mKGNoYXIqKSk7ICsraSkgeworICAgICAgICBXZWJVUkwgd2ViVVJMID0gR1VSTChyb290VVJM
ICsgZmlsZXNbaV0pOworICAgICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQod2ViVVJMLCByZXNw
b25zZSwgV2ViU3RyaW5nOjpmcm9tVVRGOChmaWxlc1tpXSkpOworICAgIH0KKworICAgIC8vIENy
ZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgV2ViVmlldy4gICAgCisgICAgVGVzdFdlYkZyYW1lQ2xp
ZW50IHdlYkZyYW1lQ2xpZW50OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVh
dGUoMCwgMCk7CisgICAgd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmd2ViRnJhbWVDbGll
bnQpOworCisgICAgLy8gTG9hZCB0aGUgbWFpbiBmcmFtZSBVUkwuCisgICAgV2ViVVJMIHRlc3RV
UkwoR1VSTChyb290VVJMICsgZmlsZXNbMF0pKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVl
c3Q7CisgICAgdXJsUmVxdWVzdC5pbml0aWFsaXplKCk7CisgICAgdXJsUmVxdWVzdC5zZXRVUkwo
dGVzdFVSTCk7CisgICAgd2ViVmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVl
c3QpOworCisgICAgLy8gTG9hZCBhbGwgcGVuZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdHMuCisg
ICAgc2VydmVSZXF1ZXN0cygpOworCisgICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4
dCBhbmQgdGVzdCBpdCBvbmx5IGluY2x1ZGVzIHZpc2libGUgZWxlbWVudHMuCisgICAgc3RkOjpz
dHJpbmcgY29udGVudCA9IHdlYlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQp
LnV0ZjgoKTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgi
IHZpc2libGUgcGFyYWdyYXBoIikpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywg
Y29udGVudC5maW5kKCIgdmlzaWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3Ry
aW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgcGFyYXJhcGgiKSk7CisgICAgRVhQ
RUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgaWZyYW1l
IikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCJpZnJh
bWUgd2l0aCB6ZXJvIHNpemUiKSk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64604</attachid>
            <date>2010-08-17 10:22:42 -0700</date>
            <delta_ts>2010-08-23 12:49:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-39456-20100817102241.patch</filename>
            <type>text/plain</type>
            <size>9098</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjU1MTIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMzAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQg
ZnJvbSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBm
cmFtZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4
ZWQgb3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ1NgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAgICAgICAoV2ViS2l0
OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktp
dDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNTdHJpbmc6OmNvbXBhcmUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpmcmFtZUNvbnRlbnRBc1BsYWluVGV4dCk6CisgICAgICAg
ICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcDogQWRkZWQuCisKIDIwMTAtMDgtMTcgIEtlbGx5IE5vcnRvbiAg
PGtub3J0b25AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDY1NTEyKQorKysgV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTcwMCw2ICs3MDAsNyBAQAogICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9iYXNlLmd5cDpiYXNlX2kx
OG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvYmFzZS9i
YXNlLmd5cDp0ZXN0X3N1cHBvcnRfYmFzZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS9ncHUvZ3B1Lmd5cDpnbGVzMl9jX2xpYicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvc3VwcG9ydC93ZWJraXRfc3Vw
cG9ydC5neXA6d2Via2l0X3N1cHBvcnQnLAogICAgICAgICAgICAgICAgICAgICBdLAogICAgICAg
ICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwogICAgICAgICAgICAgICAgICAgICAgICAg
J3B1YmxpYycsCkBAIC03MTgsMTAgKzcxOSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAnY29u
ZGl0aW9ucyc6IFsKICAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzogWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIEZJWE1FOiBQb3J0IFBvcHVwTWVudVRlc3QgdG8gTGludXggYW5kIE1h
Yy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRTogUG9ydCBQb3B1cE1l
bnVUZXN0IGFuZCBXZWJGcmFtZVRlc3QgdG8gTGludXggYW5kIE1hYy4KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1BvcHVwTWVudVRlc3QuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1RyYW5zcGFyZW5jeVdpblRlc3QuY3BwJywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1VuaXNjcmliZUhlbHBlclRlc3Qu
Y3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVz
dC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywgewpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2aXNpb24gNjU1MTIpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
NCw2ICsyMzQsMTUgQEAgc3RhdGljIHZvaWQgZnJhbWVDb250ZW50QXNQbGFpblRleHQoc2l6ZQog
ICAgIC8vIFJlY3Vyc2l2ZWx5IHdhbGsgdGhlIGNoaWxkcmVuLgogICAgIEZyYW1lVHJlZSogZnJh
bWVUcmVlID0gZnJhbWUtPnRyZWUoKTsKICAgICBmb3IgKEZyYW1lKiBjdXJDaGlsZCA9IGZyYW1l
VHJlZS0+Zmlyc3RDaGlsZCgpOyBjdXJDaGlsZDsgY3VyQ2hpbGQgPSBjdXJDaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgIC8vIElnbm9yZSB0aGUgdGV4dCBvZiBub24tdmlz
aWJsZSBmcmFtZXMuCisgICAgICAgIFJlbmRlclZpZXcqIGNvbnRlbnRSZW5kZXJlciA9IGN1ckNo
aWxkLT5jb250ZW50UmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyUGFydCogb3duZXJSZW5kZXJl
ciA9IGN1ckNoaWxkLT5vd25lclJlbmRlcmVyKCk7ICAgICAgICAKKyAgICAgICAgaWYgKCFjb250
ZW50UmVuZGVyZXIgfHwgIWNvbnRlbnRSZW5kZXJlci0+d2lkdGgoKSB8fCAhY29udGVudFJlbmRl
cmVyLT5oZWlnaHQoKQorICAgICAgICAgICAgfHwgKGNvbnRlbnRSZW5kZXJlci0+eCgpICsgY29u
dGVudFJlbmRlcmVyLT53aWR0aCgpIDw9IDApIHx8IChjb250ZW50UmVuZGVyZXItPnkoKSArIGNv
bnRlbnRSZW5kZXJlci0+aGVpZ2h0KCkgPD0gMCkKKyAgICAgICAgICAgIHx8IChvd25lclJlbmRl
cmVyICYmIG93bmVyUmVuZGVyZXItPnN0eWxlKCkgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKS0+
dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZnJhbWUgc2VwYXJhdG9yIHdvbid0IGZp
bGwgdXAgdGhlIGJ1ZmZlciwgYW5kIGdpdmUgdXAgaWYKICAgICAgICAgLy8gaXQgd2lsbC4gVGhl
IGRhbmdlciBpcyBpZiB0aGUgc2VwYXJhdG9yIHdpbGwgbWFrZSB0aGUgYnVmZmVyIGxvbmdlciB0
aGFuCiAgICAgICAgIC8vIG1heENoYXJzLiBUaGlzIHdpbGwgY2F1c2UgdGhlIGNvbXB1dGF0aW9u
IGFib3ZlOgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCShyZXZpc2lv
biA2NTUxMikKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE4ICszMywxNSBAQAogCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5j
bHVkZSAiV2ViS2l0Q2xpZW50LmgiCi0KLS8vIFdlYktpdENsaWVudCBoYXMgYSBwcm90ZWN0ZWQg
ZGVzdHJ1Y3Rvciwgc28gd2UgbmVlZCB0byBzdWJjbGFzcy4KLWNsYXNzIER1bW15V2ViS2l0Q2xp
ZW50IDogcHVibGljIFdlYktpdDo6V2ViS2l0Q2xpZW50IHsKLX07CisjaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogewotICAgIER1bW15V2ViS2l0Q2xpZW50IGR1bW15Q2xpZW50OwotICAgIFdlYktpdDo6
aW5pdGlhbGl6ZSgmZHVtbXlDbGllbnQpOwotCi0gICAgaW50IHJlc3VsdCA9IFRlc3RTdWl0ZShh
cmdjLCBhcmd2KS5SdW4oKTsKLQotICAgIFdlYktpdDo6c2h1dGRvd24oKTsKKyAgICBUZXN0U3Vp
dGUgdGVzdFN1aXRlKGFyZ2MsIGFyZ3YpOworICAgIC8vIFRlc3RTdWl0ZSBtdXN0IGJlIGNyZWF0
ZWQgYmVmb3JlIFNldFVwVGVzdEVudmlyb25tZW50IHNvIGl0IHBlcmZvcm1zCisgICAgLy8gaW5p
dGlhbGl6YXRpb25zIG5lZWRlZCBieSBXZWJLaXQgc3VwcG9ydC4KKyAgICB3ZWJraXRfc3VwcG9y
dDo6U2V0VXBUZXN0RW52aXJvbm1lbnRGb3JVbml0VGVzdHMoKTsKKyAgICBpbnQgcmVzdWx0ID0g
dGVzdFN1aXRlLlJ1bigpOworICAgIHdlYmtpdF9zdXBwb3J0OjpUZWFyRG93blRlc3RFbnZpcm9u
bWVudCgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViRnJhbWVUZXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9X
ZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxn
b29nbGV1cmwvc3JjL2d1cmwuaD4KKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUg
PHdlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
KyNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2lu
Y2x1ZGUgIldlYlVSTC5oIgorI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJX
ZWJVUkxSZXNwb25zZS5oIgorI2luY2x1ZGUgIldlYlZpZXcuaCIKKwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgV2ViRnJhbWVUZXN0IDogcHVibGljIHRl
c3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFdlYkZyYW1lVGVzdCgpIHt9CisKKyAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlVucmVn
aXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgfQorCisgICAgdm9pZCByZWdpc3Rlck1vY2tlZFVS
TExvYWQoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlVSTFJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgV2ViU3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGZp
bGVQYXRoID0gd2Via2l0X3N1cHBvcnQ6OkdldFdlYktpdFJvb3REaXIoKS51dGY4KCk7CisgICAg
ICAgIGZpbGVQYXRoLmFwcGVuZCgiL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhLyIpOworICAg
ICAgICBmaWxlUGF0aC5hcHBlbmQoZmlsZU5hbWUudXRmOCgpKTsKKyAgICAgICAgd2Via2l0X3N1
cHBvcnQ6OlJlZ2lzdGVyTW9ja2VkVVJMKHVybCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJvbVVU
RjgoZmlsZVBhdGgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNlcnZlUmVxdWVzdHMoKQorICAgIHsK
KyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2VkUmVxdWVzdHMo
KTsKKyAgICB9Cit9OworCitjbGFzcyBUZXN0V2ViRnJhbWVDbGllbnQgOiBwdWJsaWMgV2ViRnJh
bWVDbGllbnQgeworfTsKKworVEVTVF9GKFdlYkZyYW1lVGVzdCwgQ29udGVudFRleHQpCit7Cisg
ICAgLy8gUmVnaXN0ZXIgb3VyIHJlc291cmNlcy4KKyAgICBXZWJVUkxSZXNwb25zZSByZXNwb25z
ZTsKKyAgICByZXNwb25zZS5pbml0aWFsaXplKCk7CisgICAgcmVzcG9uc2Uuc2V0TUlNRVR5cGUo
InRleHQvaHRtbCIpOworICAgIHN0ZDo6c3RyaW5nIHJvb3RVUkwgPSAiaHR0cDovL3d3dy50ZXN0
LmNvbS8iOworICAgIGNvbnN0IGNoYXIqIGZpbGVzW10gPSB7ICJpZnJhbWVzX3Rlc3QuaHRtbCIs
ICJ2aXNpYmxlX2lmcmFtZS5odG1sIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
aXNpYmxlX2lmcmFtZS5odG1sIiwgInplcm9fc2l6ZWRfaWZyYW1lLmh0bWwiIH07CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCAoc2l6ZW9mKGZpbGVzKSAvIHNpemVvZihjaGFyKikpOyArK2kpIHsK
KyAgICAgICAgV2ViVVJMIHdlYlVSTCA9IEdVUkwocm9vdFVSTCArIGZpbGVzW2ldKTsKKyAgICAg
ICAgcmVnaXN0ZXJNb2NrZWRVUkxMb2FkKHdlYlVSTCwgcmVzcG9uc2UsIFdlYlN0cmluZzo6ZnJv
bVVURjgoZmlsZXNbaV0pKTsKKyAgICB9CisKKyAgICAvLyBDcmVhdGUgYW5kIGluaXRpYWxpemUg
dGhlIFdlYlZpZXcuICAgIAorICAgIFRlc3RXZWJGcmFtZUNsaWVudCB3ZWJGcmFtZUNsaWVudDsK
KyAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gV2ViVmlldzo6Y3JlYXRlKDAsIDApOworICAgIHdlYlZp
ZXctPmluaXRpYWxpemVNYWluRnJhbWUoJndlYkZyYW1lQ2xpZW50KTsKKworICAgIC8vIExvYWQg
dGhlIG1haW4gZnJhbWUgVVJMLgorICAgIFdlYlVSTCB0ZXN0VVJMKEdVUkwocm9vdFVSTCArIGZp
bGVzWzBdKSk7CisgICAgV2ViVVJMUmVxdWVzdCB1cmxSZXF1ZXN0OworICAgIHVybFJlcXVlc3Qu
aW5pdGlhbGl6ZSgpOworICAgIHVybFJlcXVlc3Quc2V0VVJMKHRlc3RVUkwpOworICAgIHdlYlZp
ZXctPm1haW5GcmFtZSgpLT5sb2FkUmVxdWVzdCh1cmxSZXF1ZXN0KTsKKworICAgIC8vIExvYWQg
YWxsIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3RzLgorICAgIHNlcnZlUmVxdWVzdHMoKTsK
KworICAgIC8vIE5vdyByZXRyaWV2ZSB0aGUgZnJhbWVzIHRleHQgYW5kIHRlc3QgaXQgb25seSBp
bmNsdWRlcyB2aXNpYmxlIGVsZW1lbnRzLgorICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQgPSB3ZWJW
aWV3LT5tYWluRnJhbWUoKS0+Y29udGVudEFzVGV4dCgxMDI0KS51dGY4KCk7CisgICAgRVhQRUNU
X05FKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50LmZpbmQoIiB2aXNpYmxlIHBhcmFncmFwaCIp
KTsKKyAgICBFWFBFQ1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2li
bGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5m
aW5kKCIgaW52aXNpYmxlIHBhcmFyYXBoIikpOworICAgIEVYUEVDVF9FUShzdGQ6OnN0cmluZzo6
bnBvcywgY29udGVudC5maW5kKCIgaW52aXNpYmxlIGlmcmFtZSIpKTsKKyAgICBFWFBFQ1RfRVEo
c3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiaWZyYW1lIHdpdGggemVybyBzaXplIikp
OworCisgICAgd2ViVmlldy0+Y2xvc2UoKTsKK30KKworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65154</attachid>
            <date>2010-08-23 12:49:59 -0700</date>
            <delta_ts>2010-08-23 20:43:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-39456-20100823124957.patch</filename>
            <type>text/plain</type>
            <size>9100</size>
            <attacher name="Jay Civelli">jcivelli</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjU4MjApCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMzAgIEpheSBD
aXZlbGxpICA8amNpdmVsbGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEZpc2hlci4KKworICAgICAgICBNYWRlIFdlYkZyYW1lIG5vdCByZXBvcnQgdGhlIHRleHQg
ZnJvbSBoaWRkZW4gZnJhbWVzLgorICAgICAgICAoc29tZSBwYWdlcyBjb250YWluIGhpZGRlbiBm
cmFtZXMgd2l0aCBnYXJiYWdlIHRleHQgdGhhdAorICAgICAgICBzaG91bGQgbm90IGJlIGluZGV4
ZWQgb3IgdXNlZCB0byBkZXRlY3QgdGhlIHBhZ2UncyBsYW5ndWFnZSkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ1NgorCisgICAgICAgICogV2Vi
S2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViQ1N0cmluZy5oOgorICAgICAgICAoV2ViS2l0
OjpvcGVyYXRvcjwpOgorICAgICAgICAqIHB1YmxpYy9XZWJVUkwuaDoKKyAgICAgICAgKFdlYktp
dDo6b3BlcmF0b3I8KToKKyAgICAgICAgKiBzcmMvV2ViQ1N0cmluZy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNTdHJpbmc6OmNvbXBhcmUpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpmcmFtZUNvbnRlbnRBc1BsYWluVGV4dCk6CisgICAgICAg
ICogdGVzdHMvUnVuQWxsVGVzdHMuY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogdGVz
dHMvV2ViRnJhbWVUZXN0LmNwcDogQWRkZWQuCisKIDIwMTAtMDgtMjMgIFNhdGlzaCBTYW1wYXRo
ICA8c2F0aXNoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKZXJlbXkgT3Js
b3cuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNjU4MjApCisrKyBXZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtNzM2LDYgKzczNiw3IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNlL2Jhc2UuZ3lwOmJhc2Vf
aTE4bicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS9iYXNl
L2Jhc2UuZ3lwOnRlc3Rfc3VwcG9ydF9iYXNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICc8
KGNocm9taXVtX3NyY19kaXIpL2dwdS9ncHUuZ3lwOmdsZXMyX2NfbGliJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICc8KGNocm9taXVtX3NyY19kaXIpL3dlYmtpdC9zdXBwb3J0L3dlYmtpdF9z
dXBwb3J0Lmd5cDp3ZWJraXRfc3VwcG9ydCcsCiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCiAgICAgICAgICAgICAgICAgICAgICAg
ICAncHVibGljJywKQEAgLTc1MywxMCArNzU0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICdj
b25kaXRpb25zJzogWwogICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgRklYTUU6IFBvcnQgUG9wdXBNZW51VGVzdCB0byBMaW51eCBhbmQg
TWFjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBQb3J0IFBvcHVw
TWVudVRlc3QgYW5kIFdlYkZyYW1lVGVzdCB0byBMaW51eCBhbmQgTWFjLgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVHJhbnNwYXJlbmN5V2luVGVzdC5jcHAnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvVW5pc2NyaWJlSGVscGVyVGVz
dC5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJhbWVU
ZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Im1hYyInLCB7Cklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCShyZXZpc2lvbiA2NTgyMCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjM0LDYgKzIzNCwxNSBAQCBzdGF0aWMgdm9pZCBmcmFtZUNvbnRlbnRBc1BsYWluVGV4dChzaXpl
CiAgICAgLy8gUmVjdXJzaXZlbHkgd2FsayB0aGUgY2hpbGRyZW4uCiAgICAgRnJhbWVUcmVlKiBm
cmFtZVRyZWUgPSBmcmFtZS0+dHJlZSgpOwogICAgIGZvciAoRnJhbWUqIGN1ckNoaWxkID0gZnJh
bWVUcmVlLT5maXJzdENoaWxkKCk7IGN1ckNoaWxkOyBjdXJDaGlsZCA9IGN1ckNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXh0IG9mIG5vbi12
aXNpYmxlIGZyYW1lcy4KKyAgICAgICAgUmVuZGVyVmlldyogY29udGVudFJlbmRlcmVyID0gY3Vy
Q2hpbGQtPmNvbnRlbnRSZW5kZXJlcigpOworICAgICAgICBSZW5kZXJQYXJ0KiBvd25lclJlbmRl
cmVyID0gY3VyQ2hpbGQtPm93bmVyUmVuZGVyZXIoKTsgICAgICAgIAorICAgICAgICBpZiAoIWNv
bnRlbnRSZW5kZXJlciB8fCAhY29udGVudFJlbmRlcmVyLT53aWR0aCgpIHx8ICFjb250ZW50UmVu
ZGVyZXItPmhlaWdodCgpCisgICAgICAgICAgICB8fCAoY29udGVudFJlbmRlcmVyLT54KCkgKyBj
b250ZW50UmVuZGVyZXItPndpZHRoKCkgPD0gMCkgfHwgKGNvbnRlbnRSZW5kZXJlci0+eSgpICsg
Y29udGVudFJlbmRlcmVyLT5oZWlnaHQoKSA8PSAwKQorICAgICAgICAgICAgfHwgKG93bmVyUmVu
ZGVyZXIgJiYgb3duZXJSZW5kZXJlci0+c3R5bGUoKSAmJiBvd25lclJlbmRlcmVyLT5zdHlsZSgp
LT52aXNpYmlsaXR5KCkgIT0gVklTSUJMRSkpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB9CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmcmFtZSBzZXBhcmF0b3Igd29uJ3Qg
ZmlsbCB1cCB0aGUgYnVmZmVyLCBhbmQgZ2l2ZSB1cCBpZgogICAgICAgICAvLyBpdCB3aWxsLiBU
aGUgZGFuZ2VyIGlzIGlmIHRoZSBzZXBhcmF0b3Igd2lsbCBtYWtlIHRoZSBidWZmZXIgbG9uZ2Vy
IHRoYW4KICAgICAgICAgLy8gbWF4Q2hhcnMuIFRoaXMgd2lsbCBjYXVzZSB0aGUgY29tcHV0YXRp
b24gYWJvdmU6CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vdGVzdHMvUnVuQWxsVGVzdHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0cy9SdW5BbGxUZXN0cy5jcHAJKHJldmlz
aW9uIDY1ODIwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1J1bkFsbFRlc3RzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTggKzMzLDE1IEBACiAKICNpbmNsdWRlICJXZWJLaXQuaCIKICNp
bmNsdWRlICJXZWJLaXRDbGllbnQuaCIKLQotLy8gV2ViS2l0Q2xpZW50IGhhcyBhIHByb3RlY3Rl
ZCBkZXN0cnVjdG9yLCBzbyB3ZSBuZWVkIHRvIHN1YmNsYXNzLgotY2xhc3MgRHVtbXlXZWJLaXRD
bGllbnQgOiBwdWJsaWMgV2ViS2l0OjpXZWJLaXRDbGllbnQgewotfTsKKyNpbmNsdWRlIDx3ZWJr
aXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioq
IGFyZ3YpCiB7Ci0gICAgRHVtbXlXZWJLaXRDbGllbnQgZHVtbXlDbGllbnQ7Ci0gICAgV2ViS2l0
Ojppbml0aWFsaXplKCZkdW1teUNsaWVudCk7Ci0KLSAgICBpbnQgcmVzdWx0ID0gVGVzdFN1aXRl
KGFyZ2MsIGFyZ3YpLlJ1bigpOwotCi0gICAgV2ViS2l0OjpzaHV0ZG93bigpOworICAgIFRlc3RT
dWl0ZSB0ZXN0U3VpdGUoYXJnYywgYXJndik7CisgICAgLy8gVGVzdFN1aXRlIG11c3QgYmUgY3Jl
YXRlZCBiZWZvcmUgU2V0VXBUZXN0RW52aXJvbm1lbnQgc28gaXQgcGVyZm9ybXMKKyAgICAvLyBp
bml0aWFsaXphdGlvbnMgbmVlZGVkIGJ5IFdlYktpdCBzdXBwb3J0LgorICAgIHdlYmtpdF9zdXBw
b3J0OjpTZXRVcFRlc3RFbnZpcm9ubWVudEZvclVuaXRUZXN0cygpOworICAgIGludCByZXN1bHQg
PSB0ZXN0U3VpdGUuUnVuKCk7CisgICAgd2Via2l0X3N1cHBvcnQ6OlRlYXJEb3duVGVzdEVudmly
b25tZW50KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJGcmFtZVRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJGcmFtZVRlc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1dlYkZyYW1lVGVzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
PGdvb2dsZXVybC9zcmMvZ3VybC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVk
ZSA8d2Via2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKyNpbmNsdWRlICJXZWJGcmFtZS5o
IgorI2luY2x1ZGUgIldlYkZyYW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSAiV2ViVVJMLmgiCisjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUg
IldlYlVSTFJlc3BvbnNlLmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OworCituYW1lc3BhY2UgeworCitjbGFzcyBXZWJGcmFtZVRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgV2ViRnJhbWVUZXN0KCkge30KKworICAgIHZp
cnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6VW5y
ZWdpc3RlckFsbE1vY2tlZFVSTHMoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2Vk
VVJMTG9hZChjb25zdCBXZWJVUkwmIHVybCwgY29uc3QgV2ViVVJMUmVzcG9uc2UmIHJlc3BvbnNl
LCBjb25zdCBXZWJTdHJpbmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcg
ZmlsZVBhdGggPSB3ZWJraXRfc3VwcG9ydDo6R2V0V2ViS2l0Um9vdERpcigpLnV0ZjgoKTsKKyAg
ICAgICAgZmlsZVBhdGguYXBwZW5kKCIvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvIik7Cisg
ICAgICAgIGZpbGVQYXRoLmFwcGVuZChmaWxlTmFtZS51dGY4KCkpOworICAgICAgICB3ZWJraXRf
c3VwcG9ydDo6UmVnaXN0ZXJNb2NrZWRVUkwodXJsLCByZXNwb25zZSwgV2ViU3RyaW5nOjpmcm9t
VVRGOChmaWxlUGF0aCkpOworICAgIH0KKworICAgIHZvaWQgc2VydmVSZXF1ZXN0cygpCisgICAg
eworICAgICAgICB3ZWJraXRfc3VwcG9ydDo6U2VydmVBc3luY2hyb25vdXNNb2NrZWRSZXF1ZXN0
cygpOworICAgIH0KK307CisKK2NsYXNzIFRlc3RXZWJGcmFtZUNsaWVudCA6IHB1YmxpYyBXZWJG
cmFtZUNsaWVudCB7Cit9OworCitURVNUX0YoV2ViRnJhbWVUZXN0LCBDb250ZW50VGV4dCkKK3sK
KyAgICAvLyBSZWdpc3RlciBvdXIgcmVzb3VyY2VzLgorICAgIFdlYlVSTFJlc3BvbnNlIHJlc3Bv
bnNlOworICAgIHJlc3BvbnNlLmluaXRpYWxpemUoKTsKKyAgICByZXNwb25zZS5zZXRNSU1FVHlw
ZSgidGV4dC9odG1sIik7CisgICAgc3RkOjpzdHJpbmcgcm9vdFVSTCA9ICJodHRwOi8vd3d3LnRl
c3QuY29tLyI7CisgICAgY29uc3QgY2hhciogZmlsZXNbXSA9IHsgImlmcmFtZXNfdGVzdC5odG1s
IiwgInZpc2libGVfaWZyYW1lLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
bnZpc2libGVfaWZyYW1lLmh0bWwiLCAiemVyb19zaXplZF9pZnJhbWUuaHRtbCIgfTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IChzaXplb2YoZmlsZXMpIC8gc2l6ZW9mKGNoYXIqKSk7ICsraSkg
eworICAgICAgICBXZWJVUkwgd2ViVVJMID0gR1VSTChyb290VVJMICsgZmlsZXNbaV0pOworICAg
ICAgICByZWdpc3Rlck1vY2tlZFVSTExvYWQod2ViVVJMLCByZXNwb25zZSwgV2ViU3RyaW5nOjpm
cm9tVVRGOChmaWxlc1tpXSkpOworICAgIH0KKworICAgIC8vIENyZWF0ZSBhbmQgaW5pdGlhbGl6
ZSB0aGUgV2ViVmlldy4gICAgCisgICAgVGVzdFdlYkZyYW1lQ2xpZW50IHdlYkZyYW1lQ2xpZW50
OworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCwgMCk7CisgICAgd2Vi
Vmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmd2ViRnJhbWVDbGllbnQpOworCisgICAgLy8gTG9h
ZCB0aGUgbWFpbiBmcmFtZSBVUkwuCisgICAgV2ViVVJMIHRlc3RVUkwoR1VSTChyb290VVJMICsg
ZmlsZXNbMF0pKTsKKyAgICBXZWJVUkxSZXF1ZXN0IHVybFJlcXVlc3Q7CisgICAgdXJsUmVxdWVz
dC5pbml0aWFsaXplKCk7CisgICAgdXJsUmVxdWVzdC5zZXRVUkwodGVzdFVSTCk7CisgICAgd2Vi
Vmlldy0+bWFpbkZyYW1lKCktPmxvYWRSZXF1ZXN0KHVybFJlcXVlc3QpOworCisgICAgLy8gTG9h
ZCBhbGwgcGVuZGluZyBhc3luY2hyb25vdXMgcmVxdWVzdHMuCisgICAgc2VydmVSZXF1ZXN0cygp
OworCisgICAgLy8gTm93IHJldHJpZXZlIHRoZSBmcmFtZXMgdGV4dCBhbmQgdGVzdCBpdCBvbmx5
IGluY2x1ZGVzIHZpc2libGUgZWxlbWVudHMuCisgICAgc3RkOjpzdHJpbmcgY29udGVudCA9IHdl
YlZpZXctPm1haW5GcmFtZSgpLT5jb250ZW50QXNUZXh0KDEwMjQpLnV0ZjgoKTsKKyAgICBFWFBF
Q1RfTkUoc3RkOjpzdHJpbmc6Om5wb3MsIGNvbnRlbnQuZmluZCgiIHZpc2libGUgcGFyYWdyYXBo
IikpOworICAgIEVYUEVDVF9ORShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCIgdmlz
aWJsZSBpZnJhbWUiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5nOjpucG9zLCBjb250ZW50
LmZpbmQoIiBpbnZpc2libGUgcGFyYXJhcGgiKSk7CisgICAgRVhQRUNUX0VRKHN0ZDo6c3RyaW5n
OjpucG9zLCBjb250ZW50LmZpbmQoIiBpbnZpc2libGUgaWZyYW1lIikpOworICAgIEVYUEVDVF9F
UShzdGQ6OnN0cmluZzo6bnBvcywgY29udGVudC5maW5kKCJpZnJhbWUgd2l0aCB6ZXJvIHNpemUi
KSk7CisKKyAgICB3ZWJWaWV3LT5jbG9zZSgpOworfQorCit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>