<?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>48781</bug_id>
          
          <creation_ts>2010-11-01 14:23:49 -0700</creation_ts>
          <short_desc>Add a resourceload delegate method to query if WebCore should paint the default broken image for failed images.</short_desc>
          <delta_ts>2011-02-27 10:32:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>levin</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302932</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-01 14:23:49 -0700</bug_when>
    <thetext>Sometimes, a WebKit base app might want WebCore not to paint the default broken image if an image is failed due to loading error or decoding error.   We need to add a delegate method to tell the app the image loading is failed (with image url and reason why failed), and let the app decide if WebCore can go ahead paint the default broken image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302934</commentid>
    <comment_count>1</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-01 14:26:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/8610908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303002</commentid>
    <comment_count>2</comment_count>
      <attachid>72577</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-01 15:46:38 -0700</bug_when>
    <thetext>Created attachment 72577
Add new method shouldPaintBrokenImageWithError for FrameLoaderClient;

The patch implements shouldPaintBrokenImageWithError for mac, for other ports, it just makes a empty implementation.

I am not sure if it is the best way to add error code enums in CachedImage.h, I can move the error codes to a dedicated header file is that is preferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303079</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-01 16:56:45 -0700</bug_when>
    <thetext>I guess the most interesting question here is whether we want a delegate method, or a preference.

&gt; not to paint the default broken image if an image is failed due to loading error

I suspect that&apos;s doable with resource load delegates even today.

&gt; or decoding error.

But probably not this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303247</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-02 00:26:05 -0700</bug_when>
    <thetext>Attachment 72577 did not build on chromium:
Build output: http://queues.webkit.org/results/4960011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303294</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-02 03:37:36 -0700</bug_when>
    <thetext>Attachment 72577 did not build on gtk:
Build output: http://queues.webkit.org/results/5007007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303404</commentid>
    <comment_count>6</comment_count>
      <attachid>72676</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-02 09:28:50 -0700</bug_when>
    <thetext>Created attachment 72676
Fix build break for GTK and Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303409</commentid>
    <comment_count>7</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-02 09:34:34 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I guess the most interesting question here is whether we want a delegate method, or a preference.

Adding a preference is my first thought, but the developer who requested this feature thinks a preference is not enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303497</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-11-02 11:13:52 -0700</bug_when>
    <thetext>OK. This still looks somewhat arbitrary to me, but I&apos;ll just leave this for someone more familiar with API to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304948</commentid>
    <comment_count>9</comment_count>
      <attachid>72676</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 15:51:42 -0700</bug_when>
    <thetext>Comment on attachment 72676
Fix build break for GTK and Chromium.

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

Should we test what happens when you return false from this delegate call?

&gt; WebCore/loader/CachedImage.cpp:233
&gt; +    if (!frame || !frame-&gt;loader())

Frames always have loaders.  There&apos;s no need to null check it.

&gt; WebCore/loader/CachedImage.cpp:236
&gt; +    KURL imageURL(ParsedURLString, m_url);

Why do we define this local variable and then not use it?

&gt; WebCore/loader/CachedImage.cpp:302
&gt; +            int errorCode = ImageErrorUnknown;
&gt; +            if (m_image-&gt;isNull())
&gt; +                errorCode = ImageErrorUnableToDecode;
&gt; +            else
&gt; +                errorCode = ImageErrorImageTooBig;

This seems like it should be a member function that returns the errorCode()

&gt; WebKit/efl/WebCoreSupport/FrameLoaderClientEfl.cpp:938
&gt; +}

missing blank line after this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306295</commentid>
    <comment_count>10</comment_count>
      <attachid>73268</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-11-08 12:42:58 -0800</bug_when>
    <thetext>Created attachment 73268
New patch addressing review comments.

Change in this version:

1. added m_shouldPaintBrokenImage data member and getter/setter to LayoutTestController, to turn on/off paint broken image for DRT.
2. added errorCode() member function in CachedImage as per review comments.
3. modified layout test to test if painting broken image is disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>318503</commentid>
    <comment_count>11</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2010-12-07 16:55:36 -0800</bug_when>
    <thetext>Any updates?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>327768</commentid>
    <comment_count>12</comment_count>
      <attachid>73268</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-29 17:46:11 -0800</bug_when>
    <thetext>Comment on attachment 73268
New patch addressing review comments.

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

Looks OK. Needs some work.

&gt; WebCore/loader/FrameLoaderClient.h:294
&gt; +        virtual bool shouldPaintBrokenImageWithError(const KURL&amp; url, int errorCode) const = 0;

The argument type should be ImageError, not int.

There’s no need to include “with error” in the name of this function. That’s fine for Objective-C naming style, but not appropriate here.

There’s no need for the argument name “url”. If you were going to give a name that clarified what it’s the URL of, that would be one thing, but currently it’s just repeating the type name, and so should be omitted.

This is an unusual feature that most platforms won’t implement, so I suggest having it default to returning true rather than being a pure virtual function. That way you won’t have to touch the frame loader clients for all the platforms that won’t implement it and for EmptyClients.h.

&gt; WebCore/loader/cache/CachedImage.cpp:61
&gt; +    , m_errorCode(ImageErrorNone)

I see no reason for m_errorCode to be a data member. The call sites should instead just pass the error code as an argument when calling the function that sets m_shouldPaintBrokenImage.

&gt; WebCore/loader/cache/CachedImage.cpp:231
&gt; +bool CachedImage::checkShouldPaintBrokenImage() const

There’s no reason to have the word “check” in the name of this function. Unless you want it to set m_shouldPaintBrokenImage directly rather than having a return value. Then the name might be OK.

I suggest keeping the name, and changing how the function works.

&gt; WebCore/loader/cache/CachedImage.cpp:300
&gt; +            m_errorCode = ImageErrorUnknown;

This line is dead code and should be removed.

&gt; WebCore/loader/cache/CachedImage.h:38
&gt; +    ImageErrorNone = 0,

No need for the = 0 here.

&gt; WebCore/loader/cache/CachedImage.h:39
&gt; +    ImageErrorUnknown,

This error code isn’t needed. Lets just omit it.

&gt; WebCore/loader/cache/CachedImage.h:42
&gt; +    ImageErrorImageOutOfMemory,

This error code is unused. Please omit it unless we have a future use for it planned.

&gt; WebCore/loader/cache/CachedImage.h:99
&gt; +    ImageError errorCode() const { return m_errorCode; }

This is not needed. Please do not add it.

&gt; WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:1133
&gt; +    notImplemented();

I don’t think you need notImplemented() here. It’s OK to not have the feature for now so please just leave it as-is.

&gt; WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm:447
&gt; +    if (implementations-&gt;shouldPaintBrokenImageWithErrorFunc) {

We normally use early exit, so you could just reverse this so you won’t have to nest everything.

&gt; WebKit/mac/WebView/WebResourceLoadDelegate.h:169
&gt; ++     @result return an BOOL to tell if WebKit should paint the default broken image.

“an bool”?

The resource load delegate is public API. If you want to make this change we’ll need to do API review. An alternative would be to make this a private extension to the resource load delegate API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328784</commentid>
    <comment_count>13</comment_count>
      <attachid>77846</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-01-03 14:10:40 -0800</bug_when>
    <thetext>Created attachment 77846
New patch addressing comments.

Thanks, for the review.  Here is the new patch.

Changes:

1. added default implementation for FrameLoaderClient::shouldPaintBrokenImage, so that I don&apos;t need to touch other WebKit ports.
2. set m_shouldPaintBrokenImage in CachedImage::checkShouldPaintBrokenImage instead of the call site.
3. moved webView:shouldPaintBrokenImage:(NSURL*)imageURL to WebResourceLoadDelegatePrivate.
4. removed image errorcode argument from FrameLoaderClient::shouldPaintBrokenImage and the delegate method, since the developer asked for this feature mainly cared about the URL of the failed image, no the error code.  I will open another bug if they really need it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328785</commentid>
    <comment_count>14</comment_count>
      <attachid>77846</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 14:18:28 -0800</bug_when>
    <thetext>Comment on attachment 77846
New patch addressing comments.

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

&gt; Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm:245
&gt; +- (BOOL)webView: (WebView*)wv shouldPaintBrokenImage:(NSURL*)imageURL

Extras space here. Also, I would use a longer variable name rather than &quot;wv&quot;.

&gt; WebKit/mac/WebView/WebResourceLoadDelegatePrivate.h:63
&gt; +/*!
&gt; + @method webView:shouldPaintBrokenImage:(NSURL*)imageURL
&gt; + @abstract This message is sent when an image cannot be decoded or displayed.
&gt; + @param imageURL The url of the offending image.
&gt; + @result return YES if WebKit should paint the default broken image.
&gt; + */
&gt; +- (BOOL)webView:(WebView*)sender shouldPaintBrokenImage:(NSURL*)imageURL;
&gt;  @end

I would think this should be named shouldPaintBrokenImageForURL: given the usual Objective-C naming scheme. In non-ObjC code, there is no need to include the argument name in the function name, but in ObjC method names we normally do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328799</commentid>
    <comment_count>15</comment_count>
      <attachid>77849</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-01-03 14:51:47 -0800</bug_when>
    <thetext>Created attachment 77849
change the delegate method to shouldPaintBrokenImageForURL:

Yes, shouldPaintBrokenImageForURL is better.  Please see the revised patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328805</commentid>
    <comment_count>16</comment_count>
      <attachid>77849</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-03 15:15:02 -0800</bug_when>
    <thetext>Comment on attachment 77849
change the delegate method to shouldPaintBrokenImageForURL:

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

&gt; Tools/DumpRenderTree/LayoutTestController.h:306
&gt; +    bool shouldPaintBrokenImage() const	{ return m_shouldPaintBrokenImage; }

Extra spaces here after “const”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329888</commentid>
    <comment_count>17</comment_count>
      <attachid>77849</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-05 17:04:21 -0800</bug_when>
    <thetext>Comment on attachment 77849
change the delegate method to shouldPaintBrokenImageForURL:

Rejecting attachment 77849 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;build-and-test&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--test&apos;, &apos;--non-interactive&apos;]&quot; exit_code: 2
Last 500 characters of output:
tional ..
platform/mac/plugins ............
platform/mac/scrollbars .
plugins ...................................................
plugins/npruntime ...............
printing ...........................
printing/css2.1 .........
scrollbars ..................
security ..
security/block-test-no-port.html -&gt; failed

Exiting early after 1 failures. 18604 tests run.
420.97s total testing time

18603 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
11 test cases (&lt;1%) had stderr output

Full output: http://queues.webkit.org/results/7217418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330304</commentid>
    <comment_count>18</comment_count>
      <attachid>78148</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-01-06 12:21:56 -0800</bug_when>
    <thetext>Created attachment 78148
Only log the message when shouldPaintBrokenImage() returns NO; this avoids changing results of existing layout tests with failed images.

Fix the layout test break in security/block-test-no-port.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>330620</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-06 19:58:17 -0800</bug_when>
    <thetext>Attachment 78148 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/images/resources/broken-image-with-invalid-format.png&apos;, u&apos;LayoutTests/fast/images/support-broken-image-delegate.html&apos;, u&apos;LayoutTests/platform/mac/fast/images/support-broken-image-delegate-expected.txt&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/LayoutTestController.cpp&apos;, u&apos;Tools/DumpRenderTree/LayoutTestController.h&apos;, u&apos;Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/loader/FrameLoaderClient.h&apos;, u&apos;WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;WebCore/loader/cache/CachedImage.h&apos;, u&apos;WebKit/mac/ChangeLog&apos;, u&apos;WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h&apos;, u&apos;WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;WebKit/mac/WebView/WebDelegateImplementationCaching.h&apos;, u&apos;WebKit/mac/WebView/WebDelegateImplementationCaching.mm&apos;, u&apos;WebKit/mac/WebView/WebResourceLoadDelegatePrivate.h&apos;, u&apos;WebKit/mac/WebView/WebView.mm&apos;]&quot; exit_code: 1
Tools/DumpRenderTree/LayoutTestController.h:305:  The parameter name &quot;shouldPaintBrokenImage&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 19 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>330621</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-06 20:00:38 -0800</bug_when>
    <thetext>Attachment 78148 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/images/resources/broken-image-with-invalid-format.png&apos;, u&apos;LayoutTests/fast/images/support-broken-image-delegate.html&apos;, u&apos;LayoutTests/platform/mac/fast/images/support-broken-image-delegate-expected.txt&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/DumpRenderTree/LayoutTestController.cpp&apos;, u&apos;Tools/DumpRenderTree/LayoutTestController.h&apos;, u&apos;Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm&apos;, u&apos;WebCore/ChangeLog&apos;, u&apos;WebCore/loader/FrameLoaderClient.h&apos;, u&apos;WebCore/loader/cache/CachedImage.cpp&apos;, u&apos;WebCore/loader/cache/CachedImage.h&apos;, u&apos;WebKit/mac/ChangeLog&apos;, u&apos;WebKit/mac/WebCoreSupport/WebFrameLoaderClient.h&apos;, u&apos;WebKit/mac/WebCoreSupport/WebFrameLoaderClient.mm&apos;, u&apos;WebKit/mac/WebView/WebDelegateImplementationCaching.h&apos;, u&apos;WebKit/mac/WebView/WebDelegateImplementationCaching.mm&apos;, u&apos;WebKit/mac/WebView/WebResourceLoadDelegatePrivate.h&apos;, u&apos;WebKit/mac/WebView/WebView.mm&apos;]&quot; exit_code: 1
Tools/DumpRenderTree/LayoutTestController.h:305:  The parameter name &quot;shouldPaintBrokenImage&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 19 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>330622</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-06 20:01:38 -0800</bug_when>
    <thetext>(Fixing a bug in the style-queue, please pardon the spam.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332877</commentid>
    <comment_count>22</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-01-11 19:46:37 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Attachment 78148 [details] did not pass style-queue:
&gt; 
&gt; Tools/DumpRenderTree/LayoutTestController.h:305:  The parameter name &quot;shouldPaintBrokenImage&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]

Note that the stylebot was flagging a valid issue in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>334085</commentid>
    <comment_count>23</comment_count>
      <attachid>78883</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-01-13 19:20:33 -0800</bug_when>
    <thetext>Created attachment 78883
fix style violation.

only log the message when shouldPaintBrokenImage() returns NO; this avoids changing results of existing layout tests with failed images.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342893</commentid>
    <comment_count>24</comment_count>
      <attachid>77846</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-31 16:06:47 -0800</bug_when>
    <thetext>Comment on attachment 77846
New patch addressing comments.

Cleared Darin Adler&apos;s review+ from obsolete attachment 77846 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342894</commentid>
    <comment_count>25</comment_count>
      <attachid>77849</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-31 16:06:51 -0800</bug_when>
    <thetext>Comment on attachment 77849
change the delegate method to shouldPaintBrokenImageForURL:

Cleared Darin Adler&apos;s review+ from obsolete attachment 77849 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355421</commentid>
    <comment_count>26</comment_count>
      <attachid>78883</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-22 11:17:02 -0800</bug_when>
    <thetext>Comment on attachment 78883
fix style violation.

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

r=me, but consider the comments.

&gt; WebKit/mac/WebView/WebResourceLoadDelegatePrivate.h:59
&gt; + @param imageURL The url of the offending image.

Maybe use &quot;broken&quot; instead of &quot;offending&quot; here.

&gt; LayoutTests/fast/images/support-broken-image-delegate.html:26
&gt; +&lt;img id=&quot;broken&quot; onError=&quot;loaded()&quot; onLoad=&quot;loaded()&quot; src=&quot;resources/broken-image-with-invalid-format.png&quot;&gt;

Instead of calling loaded() in the onload=&quot;&quot; attribute, can you call a different function that always sets result.innerHTML to &quot;FAIL&quot; since this code path is unexpected?  (Or is there a reason for setting onload and onerror to the same function?)

&gt; LayoutTests/fast/images/resources/broken-image-with-invalid-format.png:1
&gt; +fsadljf903q2asdfic-=29q24;lasdf

Is the MIME type for this file correct?  Strange that it shows up as text in the diff.  May need to fix this up in svn after the commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357311</commentid>
    <comment_count>27</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-02-24 13:00:13 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 78883 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78883&amp;action=review
&gt; 
&gt; r=me, but consider the comments.
&gt; 
&gt; &gt; WebKit/mac/WebView/WebResourceLoadDelegatePrivate.h:59
&gt; &gt; + @param imageURL The url of the offending image.
&gt; 
&gt; Maybe use &quot;broken&quot; instead of &quot;offending&quot; here.
&gt; 
Done.

&gt; &gt; LayoutTests/fast/images/support-broken-image-delegate.html:26
&gt; &gt; +&lt;img id=&quot;broken&quot; onError=&quot;loaded()&quot; onLoad=&quot;loaded()&quot; src=&quot;resources/broken-image-with-invalid-format.png&quot;&gt;
&gt; 
&gt; Instead of calling loaded() in the onload=&quot;&quot; attribute, can you call a different function that always sets result.innerHTML to &quot;FAIL&quot; since this code path is unexpected?  (Or is there a reason for setting onload and onerror to the same function?)
&gt;

I wanted to reset shouldPaintBorkenImage flag and call layoutTestController.notifyDone() when the test fails, to avoid time out.  Agree it is better to move that to another function, please see the next patch. 
 
&gt; &gt; LayoutTests/fast/images/resources/broken-image-with-invalid-format.png:1
&gt; &gt; +fsadljf903q2asdfic-=29q24;lasdf
&gt; 
&gt; Is the MIME type for this file correct?  Strange that it shows up as text in the diff.  May need to fix this up in svn after the commit.

Yes, I manually added text in this file to make sure it is a broken png file :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357316</commentid>
    <comment_count>28</comment_count>
      <attachid>83707</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2011-02-24 13:03:35 -0800</bug_when>
    <thetext>Created attachment 83707
Addressing David&apos;s comments in the modified patch.

Added a function failed() in LayoutTests/fast/images/support-broken-image-delegate.html to handle failed case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357376</commentid>
    <comment_count>29</comment_count>
      <attachid>78883</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-24 14:06:31 -0800</bug_when>
    <thetext>Comment on attachment 78883
fix style violation.

Clearing flags on the old patch and marking as obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357384</commentid>
    <comment_count>30</comment_count>
      <attachid>83707</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-02-24 14:11:43 -0800</bug_when>
    <thetext>Comment on attachment 83707
Addressing David&apos;s comments in the modified patch.

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

r=me

&gt; LayoutTests/fast/images/support-broken-image-delegate.html:26
&gt; +    result.innerHTML = &quot;FAIL&quot;;

Nit: Would be nice to differentiate this FAIL message from the one in loaded():

    result.innerHTML = &quot;FAIL: onLoad event fired. Expected onError event.&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357649</commentid>
    <comment_count>31</comment_count>
      <attachid>83707</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-24 19:06:33 -0800</bug_when>
    <thetext>Comment on attachment 83707
Addressing David&apos;s comments in the modified patch.

Rejecting attachment 83707 from commit-queue.

yongjun_zhang@apple.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358434</commentid>
    <comment_count>32</comment_count>
      <attachid>83707</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-26 01:32:35 -0800</bug_when>
    <thetext>Comment on attachment 83707
Addressing David&apos;s comments in the modified patch.

Clearing flags on attachment: 83707

Committed r79771: &lt;http://trac.webkit.org/changeset/79771&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358435</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-02-26 01:32:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358478</commentid>
    <comment_count>34</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-26 06:09:54 -0800</bug_when>
    <thetext>This test is failing on Windows port:

http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r79771%20(9787)/results.html

--- /home/buildbot/slave/WebKit-BuildSlave/win-release-tests/build/layout-test-results/fast/images/support-broken-image-delegate-expected.txt	2011-02-26 02:13:43.615329500 -0800
+++ /home/buildbot/slave/WebKit-BuildSlave/win-release-tests/build/layout-test-results/fast/images/support-broken-image-delegate-actual.txt	2011-02-26 02:13:43.613329400 -0800
@@ -1,7 +1,6 @@
-resources/broken-image-with-invalid-format.png - willSendRequest &lt;NSURLRequest URL resources/broken-image-with-invalid-format.png, main document URL support-broken-image-delegate.html, http method GET&gt; redirectResponse (null)
+broken-image-with-invalid-format.png - willSendRequest &lt;NSURLRequest URL broken-image-with-invalid-format.png, main document URL support-broken-image-delegate.html, http method GET&gt; redirectResponse (null)
 &lt;unknown&gt; - didFinishLoading
-resources/broken-image-with-invalid-format.png - didReceiveResponse &lt;NSURLResponse resources/broken-image-with-invalid-format.png, http status code 0&gt;
-resources/broken-image-with-invalid-format.png - shouldPaintBrokenImage: NO
+broken-image-with-invalid-format.png - didReceiveResponse &lt;NSURLResponse broken-image-with-invalid-format.png, http status code 0&gt;
 Radar 8610908 - Add a resource delegate method to query if WebCore should paint the broken image.
 
-PASS
+FAIL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358721</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-02-27 10:32:40 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; This test is failing on Windows port:
&gt; 
&gt; http://build.webkit.org/results/Windows%207%20Release%20(Tests)/r79771%20(9787)/results.html

I filed bug 55324 to cover the failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72577</attachid>
            <date>2010-11-01 15:46:38 -0700</date>
            <delta_ts>2010-11-02 09:28:50 -0700</delta_ts>
            <desc>Add new method shouldPaintBrokenImageWithError for FrameLoaderClient;</desc>
            <filename>support_broken_image_delegate.patch</filename>
            <type>text/plain</type>
            <size>30951</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAg
ICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJD
b3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFn
ZXMuCisKKyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hv
dWxkUGludEJyb2tlbkltYWdlV2l0aEVycm9yKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lkZSBp
ZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ug
d2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxzbyBw
YXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlIGFuZCB0aGUgcmVhc29u
IG9mIGZhaWx1cmUuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4t
aW1hZ2UtZGVsZWdhdGUuaHRtbAorCisgICAgICAgICogbG9hZGVyL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZXJyb3IpOgor
ICAgICAgICAqIGxvYWRlci9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorCiAyMDEwLTExLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZElt
YWdlLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJSZXF1ZXN0LmgiCkBAIC01Niw2ICs1Nyw3IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShj
b25zdCBTdHJpbmcmIHUKICAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmly
ZWQpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlRXJyb3JPY2N1cnJlZChmYWxzZSkKKyAgICAsIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogewogICAgIHNldFN0YXR1cyhVbmtub3duKTsK
IH0KQEAgLTEyOSw3ICsxMzEsNyBAQCBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwogCi0gICAgaWYgKGVycm9yT2NjdXJyZWQo
KSkKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCgpICYmIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkK
ICAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdlKCk7CiAKICAgICBpZiAobV9pbWFnZSkKQEAgLTIy
NSw2ICsyMjcsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IAog
ICAgICAgICBjLT5pbWFnZUNoYW5nZWQodGhpcywgY2hhbmdlUmVjdCk7CiB9CiAKK2Jvb2wgQ2Fj
aGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZShpbnQgZXJyb3JDb2RlKSBjb25z
dAoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6IDA7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmxv
YWRlcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEtVUkwgaW1hZ2VVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1f
dXJsKSwgZXJyb3JDb2RlKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogewogICAg
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwpAQCAtMjgzLDYgKzI5NSwxMyBAQCB2b2lkIENhY2hlZElt
YWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAgICAgICAgIEludFNpemUgcyA9IGltYWdlU2l6
ZSgxLjBmKTsKICAgICAgICAgc2l6ZV90IGVzdGltYXRlZERlY29kZWRJbWFnZVNpemUgPSBzLndp
ZHRoKCkgKiBzLmhlaWdodCgpICogNDsgLy8gbm8gb3ZlcmZsb3cgY2hlY2sKICAgICAgICAgaWYg
KG1faW1hZ2UtPmlzTnVsbCgpIHx8IChtYXhEZWNvZGVkSW1hZ2VTaXplID4gMCAmJiBlc3RpbWF0
ZWREZWNvZGVkSW1hZ2VTaXplID4gbWF4RGVjb2RlZEltYWdlU2l6ZSkpIHsKKyAgICAgICAgICAg
IGludCBlcnJvckNvZGUgPSBJbWFnZUVycm9yVW5rbm93bjsKKyAgICAgICAgICAgIGlmIChtX2lt
YWdlLT5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSBJbWFnZUVycm9yVW5h
YmxlVG9EZWNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JDb2Rl
ID0gSW1hZ2VFcnJvckltYWdlVG9vQmlnOworCisgICAgICAgICAgICBtX3Nob3VsZFBhaW50QnJv
a2VuSW1hZ2UgPSBjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoZXJyb3JDb2RlKTsKICAgICAg
ICAgICAgIGVycm9yKCk7CiAgICAgICAgICAgICBpZiAoaW5DYWNoZSgpKQogICAgICAgICAgICAg
ICAgIGNhY2hlKCktPnJlbW92ZSh0aGlzKTsKQEAgLTMwNSw2ICszMjQsOCBAQCB2b2lkIENhY2hl
ZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmVycm9y
KCkKIHsKKyAgICBpZiAoaHR0cFN0YXR1c0NvZGVFcnJvck9jY3VycmVkKCkpCisgICAgICAgIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA9IGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZShJbWFn
ZUVycm9yTG9hZEZhaWxlZCk7CiAgICAgY2xlYXIoKTsKICAgICBzZXRFcnJvck9jY3VycmVkKHRy
dWUpOwogICAgIG1fZGF0YS5jbGVhcigpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oCShyZXZpc2lv
biA3MTAzMSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgQ2FjaGU7CiAKK2VudW0geworICAgIEltYWdlRXJyb3JVbmtub3du
LAorICAgIEltYWdlRXJyb3JVbmFibGVUb0RlY29kZSwKKyAgICBJbWFnZUVycm9ySW1hZ2VUb29C
aWcsCisgICAgSW1hZ2VFcnJvckltYWdlT3V0T2ZNZW1vcnksCisgICAgSW1hZ2VFcnJvckxvYWRG
YWlsZWQKK307CisKIGNsYXNzIENhY2hlZEltYWdlIDogcHVibGljIENhY2hlZFJlc291cmNlLCBw
dWJsaWMgSW1hZ2VPYnNlcnZlciB7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlOwogCkBAIC05Miwx
MSArMTAwLDEzIEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1heGltdW1EZWNvZGVkSW1hZ2VTaXpl
KCk7CiAgICAgLy8gSWYgbm90IG51bGwsIGNoYW5nZVJlY3QgaXMgdGhlIGNoYW5nZWQgcGFydCBv
ZiB0aGUgaW1hZ2UuCiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IDApOworICAgIGJvb2wgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKGludCBl
cnJvckNvZGUpIGNvbnN0OwogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQo
VGltZXI8Q2FjaGVkSW1hZ2U+Kik7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAg
VGltZXI8Q2FjaGVkSW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogICAgIGJvb2wg
bV9odHRwU3RhdHVzQ29kZUVycm9yT2NjdXJyZWQ7CisgICAgYm9vbCBtX3Nob3VsZFBhaW50QnJv
a2VuSW1hZ2U7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzEw
MzEpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzczLDYgKzM3Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgeyByZXR1
cm4gUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PigpOyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJMJiwgaW50KSBj
b25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBw
dWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgTm9uY29weWFibGUgewpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxvd1BsdWdpbnMo
KSB7IH0KIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYgdXJsLCBpbnQgZXJy
b3JDb2RlKSBjb25zdCA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcxMDYwKQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRl
ckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5J
bWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEwLTExLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjQsNCAr
MTEyNCwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyCiAgICAg
cmV0dXJuIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lLT5jb3JlRnJh
bWUoKSk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2Vu
SW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksNiArMjA5LDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2lu
Z0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgV2ViRnJhbWUq
IG1fZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29s
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpJbmRleDogV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQor
KysgV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJj
ZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0
aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRk
IGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRo
b2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50RWZsOjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDEwLTExLTAx
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTMyLDQgKzkzMiw4IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4g
RnJhbWUKICAgICByZXR1cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6Y3JlYXRlKGV3a19m
cmFtZV9jb3JlX2dldChtX2ZyYW1lKSk7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6
OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KIH0KSW5kZXg6IFdlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDUsNiArMjA1LDggQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJs
aWMgRnJhbQogICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChSZXNvdXJjZUhhbmRsZSosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdv
cmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOworCisgICAgdmlydHVhbCBi
b29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29u
c3Q7CiAgcHJpdmF0ZToKICAgICBFdmFzX09iamVjdCAqbV92aWV3OwogICAgIEV2YXNfT2JqZWN0
ICptX2ZyYW1lOwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWW9uZ2p1biBa
aGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhv
ZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1h
Z2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRp
b24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBh
aW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTAtMTEtMDEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
c2FuY2hlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNv
bi4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIyLDQgKzEz
MjIsOSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0
dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGs6OmNyZWF0ZShjb3JlKG1fZnJhbWUpKTsKIH0K
IAorYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJv
cihjb25zdCBLVVJMJiwgaW50KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9Cklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCisgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwm
LCBpbnQpIGNvbnN0CisKICAgICBwcml2YXRlOgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9m
cmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwpJbmRl
eDogV2ViS2l0L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFuZyAgPHlv
bmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVy
eSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZh
aWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhl
IG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhF
cnJvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6c2hvdWxkUGFp
bnRCcm9rZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5oOgorCiAyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4
OiBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYxLDQg
Kzg2MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWQKIHsKIH0K
IAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAkocmV2aXNpb24gNzEwMzEpCisr
KyBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oYm9vbCBsaXN0
ZW4gPSB0cnVlKTsKIAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZVdpdGhFcnJvcihjb25zdCBLVVJMJiwgaW50KSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAg
ICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJWaWV3KiBtX3dlYlZpZXc7CkluZGV4OiBX
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIxIEBACisyMDEwLTExLTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFu
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9k
IHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFn
ZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVzb3VyY2UgbG9hZCBj
bGllbnQgbWV0aG9kIChzaG91bGRQaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpLiAgV2ViS2l0IGNs
aWVudCBjYW4gZGVjaWRlIGlmIFdlYkNvcmUKKyAgICAgICAgc2hvdWxkIHBhaW50IHRoZSBkZWZh
dWx0IGJyb2tlbiBpbWFnZSB3aGVuIGFuIGltYWdlIGZhaWxzIHRvIGxvYWQgb3IgZGVjb2RlLiAg
VGhlIG1ldGhvZCBhbHNvIHBhc3NlcyB0aGUKKyAgICAgICAgVVJMIG9mIHRoZSBmYWlsZWQgaW1h
Z2UgYW5kIHRoZSByZWFzb24gb2YgZmFpbHVyZS4KKworICAgICAgICAqIE1pc2MvV2ViS2l0RXJy
b3JzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdp
dGhFcnJvcik6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGluZy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hlUmVz
b3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwogMjAxMC0xMS0wMSAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJz
IENhcmxzc29uLgpJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYktpdEVycm9yc1ByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3JzUHJpdmF0ZS5oCShyZXZp
c2lvbiA3MTAzMSkKKysrIFdlYktpdC9tYWMvTWlzYy9XZWJLaXRFcnJvcnNQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDIzIEBAIGVudW0gewogICAgIFdlYktpdEVycm9yR2Vv
bG9jYXRpb25Mb2NhdGlvblVua25vd24gID0gICAgICAgICAgICAgICAgICAgIDMwMCwKIH07CiAK
Ky8qIQorICAgIEBlbnVtCisgICAgQGFic3RyYWN0IEJyb2tlbiBpbWFnZSBlcnJvcnMKKyAgICBA
Y29uc3RhbnQgV2ViS2l0RXJyb3JJbWFnZVVua25vd24KKyAgICBAY29uc3RhbnQgV2ViS2l0RXJy
b3JJbWFnZVVuYWJsZVRvRGVjb2RlCisgICAgQGNvbnN0YW50IFdlYktpdEVycm9ySW1hZ2VUb29C
aWcKKyAgICBAY29uc3RhbnQgV2ViS2l0RXJyb3JJbWFnZU91dE9mTWVtb3J5CisgICAgQGNvbnN0
YW50IFdlYktpdEVycm9ySW1hZ2VMb2FkaW5nRmFpbGVkCisgKi8KK2VudW0geworICAgIFdlYktp
dEVycm9ySW1hZ2VVbmtub3duID0gNDAwLAorICAgIFdlYktpdEVycm9ySW1hZ2VVbmFibGVUb0Rl
Y29kZSA9IDQwMSwKKyAgICBXZWJLaXRFcnJvckltYWdlVG9vQmlnID0gNDAyLAorICAgIFdlYktp
dEVycm9ySW1hZ2VPdXRPZk1lbW9yeSA9IDQwMywKKyAgICBXZWJLaXRFcnJvckltYWdlTG9hZGlu
Z0ZhaWxlZCA9IDQwNAorfTsKKwogQGludGVyZmFjZSBOU0Vycm9yIChXZWJLaXRFeHRyYXMpCiAr
IChOU0Vycm9yICopX3dlYktpdEVycm9yV2l0aENvZGU6KGludCljb2RlIGZhaWxpbmdVUkw6KE5T
U3RyaW5nICopVVJMOwogKyAoTlNFcnJvciAqKV93ZWJLaXRFcnJvcldpdGhEb21haW46KE5TU3Ry
aW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwgKilVUkw7CkluZGV4OiBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiA3MTAzMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDkgKzIzMSwxMSBAQCBwcml2YXRlOgogICAg
IE5TRGljdGlvbmFyeSAqYWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBjb25zdDsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29y
a2luZ0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgUmV0YWlu
UHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVuZXI7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDcxMDMxKQorKysg
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSwxOSBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
YW5BdXRoZW50aWNhCiB9CiAjZW5kaWYKIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hv
dWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJMJiBpbWFnZVVSTCwgaW50IGVy
cm9yQ29kZSkgY29uc3QKK3sKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dl
YkZyYW1lLmdldCgpKTsKKyAgICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
ZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25zKHdlYlZpZXcpOworCisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+c2hvdWxkUGFp
bnRCcm9rZW5JbWFnZVdpdGhFcnJvckZ1bmMpIHsKKyAgICAgICAgTlNVUkwqIHVybCA9IGltYWdl
VVJMOworICAgICAgICBOU0Vycm9yKiBlcnJvciA9IFtOU0Vycm9yIF93ZWJLaXRFcnJvcldpdGhD
b2RlOihlcnJvckNvZGUgKyBXZWJLaXRFcnJvckltYWdlVW5rbm93bikgZmFpbGluZ1VSTDpbd2Vi
VmlldyBtYWluRnJhbWVVUkxdXTsKKyAgICAgICAgcmV0dXJuIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oWUVTLCBpbXBsZW1lbnRhdGlvbnMtPnNob3VsZFBhaW50QnJv
a2VuSW1hZ2VXaXRoRXJyb3JGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRQ
YWludEJyb2tlbkltYWdlV2l0aEVycm9yOmltYWdlVVJMOiksIGVycm9yLCB1cmwpOworICAgIH0K
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVy
LCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JmNoYWxsZW5nZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZy
YW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVu
dGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxl
Z2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50
YXRpb24KICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExCQUNLKQogICAgIElNUCBj
YW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRnVuYzsKICNlbmRpZgorICAgIElN
UCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yRnVuYzsKICAgICBJTVAgaWRlbnRpZmll
ckZvclJlcXVlc3RGdW5jOwogICAgIElNUCB3aWxsU2VuZFJlcXVlc3RGdW5jOwogICAgIElNUCBk
aWRSZWNlaXZlUmVzcG9uc2VGdW5jOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJl
c291cmNlTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlJlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsx
NjEsMTQgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViUmVzb3VyY2VMb2FkRGVsZQogKi8KIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwbHVnSW5GYWlsZWRXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvciBkYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZTsKIAor
LyohCisrICAgICBAbWV0aG9kIHdlYlZpZXc6c2hvdWxkUGFpbnRGYWlsZWRJbWFnZVdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yIGltYWdlVVJMOihOU1VSTCopaW1hZ2VVUkwKKysgICAgIEBhYnN0
cmFjdCBUaGlzIG1lc3NhZ2UgaXMgc2VudCB3aGVuIGFuIGltYWdlIGNhbm5vdCBiZSBkZWNvZGVk
IG9yIGRpc3BsYXllZC4KKysgICAgIEBwYXJhbSBlcnJvciBUaGUgcmVhc29uIHdoeSBpbWFnZSBj
YW5ub3QgYmUgZGlzcGxheWVkLgorKyAgICAgQHBhcmFtIGltYWdlVVJMIFRoZSB1cmwgb2YgdGhl
IG9mZmVuZGluZyBpbWFnZS4KKysgICAgIEByZXN1bHQgcmV0dXJuIGFuIEJPT0wgdG8gdGVsbCBp
ZiBXZWJLaXQgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZS4KKysgICovCist
IChCT09MKXdlYlZpZXc6KFdlYlZpZXcqKXNlbmRlciBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IgaW1hZ2VVUkw6KE5TVVJMKilpbWFnZVVSTDsKIEBlbmQK
IAogI3VuZGVmIFdlYk5TSW50ZWdlcgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDcxMDMxKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE1NDMsNiArMTU0Myw3IEBAIC0gKHZvaWQpX2NhY2hlUmVzb3VyY2VMb2FkRGVsZWdhdGVJ
bXBsZW0KICAgICBjYWNoZS0+d2lsbENhY2hlUmVzcG9uc2VGdW5jID0gZ2V0TWV0aG9kKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTp3aWxsQ2FjaGVSZXNwb25zZTpmcm9tRGF0
YVNvdXJjZTopKTsKICAgICBjYWNoZS0+d2lsbFNlbmRSZXF1ZXN0RnVuYyA9IGdldE1ldGhvZChk
ZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGly
ZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSk7CiAgICAgY2FjaGUtPnNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
cmVzb3VyY2U6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGb3JEYXRhU291cmNlOikpOworICAg
IGNhY2hlLT5zaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yRnVuYyA9IGdldE1ldGhvZChk
ZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJv
cjppbWFnZVVSTDopKTsKIH0KIAogLSAodm9pZClfY2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW9ucwpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFu
ZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0
byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ug
Zm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24g
b2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkUGFp
bnRCcm9rZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oOgorCiAyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShy
ZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4Niw2ICsxNTg2LDExIEBAIFBhc3NSZWZQ
dHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWUKICAgICByZXR1cm4gRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dFF0OjpjcmVhdGUobV9mcmFtZSwgbV93ZWJGcmFtZSwgbV93ZWJGcmFtZS0+cGFn
ZSgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAogI2luY2x1ZGUgIm1vY19GcmFtZUxv
YWRlckNsaWVudFF0LmNwcCIKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNiAr
MjM1LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKKyAgICBib29sIHNob3VsZFBh
aW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3Q7CisKICAgICBz
dGF0aWMgYm9vbCBkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3M7CiAgICAgc3RhdGljIGJvb2wgZHVt
cFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrczsKICAgICBzdGF0aWMgYm9vbCBkdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0w
MSAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRl
bGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVs
dCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsg
aW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
aG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24u
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAwLDMgKzkwMCw4
IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFVzZVBsdWcKIAogICAgIHJldHVy
biB3ZWJWaWV3LT5zaG91bGRVc2VFbWJlZGRlZFZpZXcobWltZVR5cGUpOwogfQorCitib29sIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0
IEtVUkwmLCBpbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CkluZGV4OiBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA3MTAzMSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNvcmU6OlBs
dWdpblZpZXcqKSBjb25zdDsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbklt
YWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUqKTsKICAgICB+V2ViRnJhbWVMb2FkZXJDbGll
bnQoKTsKSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4
L0NoYW5nZUxvZwkocmV2aXNpb24gNzEwNjApCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4gWmhhbmcgIDx5
b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVl
cnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBm
YWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIGJsYW5rIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRo
RXJyb3IuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6c2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4Lmg6CisKIDIwMTAtMTEtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC93
eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA3
MTAzMSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05ODIsNCArOTgyLDkgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdv
cmtpbmdDb250ZXh0PiBGcmFtZQogICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0V3g6
OmNyZWF0ZShtX2ZyYW1lKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudFd4OjpzaG91bGRQ
YWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIH0KSW5kZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjcsNiAr
MjI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0
KCk7CiAKKyAgICAgICAgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0
IEtVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgd3hXZWJGcmFtZSAq
bV93ZWJGcmFtZTsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBXZWJLaXRUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3
MTA2MCkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEwLTExLTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBh
IHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxk
IHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAg
ICAgICBJbXBsZW1lbnQgdGhlIG5ldyByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCBzaG91
bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yIGZvciBEdW1wUmVuZGVyVHJlZS4KKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAg
KC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yOmltYWdlVVJMOl0pOgorCiAyMDEwLTExLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obiBTdWxsaXZhbi4KSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIs
NCArMjQyLDEzIEBAIC0oTlNDYWNoZWRVUkxSZXNwb25zZSAqKSB3ZWJWaWV3OiAoV2ViVmkKICAg
ICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKKy0gKEJPT0wpd2ViVmlldzogKFdlYlZpZXcqKXd2IHNo
b3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3I6KE5TRXJyb3IqKWVycm9yIGltYWdlVVJMOihO
U1VSTCopaW1hZ2VVUkwKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVy
LT5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmlu
ZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBzaG91bGRQYWludEJyb2tlbklt
YWdlV2l0aEVycm9yIC0gJUAiLCBbaW1hZ2VVUkwgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdF0sIFtlcnJvciBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0
XV07CisgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0K
KworICAgIHJldHVybiBZRVM7Cit9CiBAZW5kCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA2MCkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEwLTExLTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNl
IGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRo
ZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBUZXN0
IGZvciB0aGUgbmV3IHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IgbWV0aG9kIGluIEZy
YW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tl
bi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9p
bWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTEtMDEgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHRlc3QgZmFpbHVyZXMgb24gUXQgYnkg
YXZvaWRpbmcgcmVmZXJlbmNlcyB0byBleHRlcm5hbCBpbWFnZSBmaWxlcy4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2Ut
ZGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvYWRl
ZCgpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxi
b2R5PgorUmFkYXIgODYxMDkwOCAtIEFkZCBhIHJlc291cmNlIGRlbGVnYXRlIG1ldGhvZCB0byBx
dWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgYnJva2VuIGltYWdlLgorPGltZyBpZD0i
YnJva2VuIiBvbkVycm9yPSJsb2FkZWQoKSIgb25Mb2FkPSJsb2FkZWQoKSIgc3JjPSJyZXNvdXJj
ZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1hZ2Ut
d2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1h
Z2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2Zz
YWRsamY5MDNxMmFzZGZpYy09MjlxMjQ7bGFzZGYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFn
ZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorcmVz
b3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxp
ZC1mb3JtYXQucG5nLCBtYWluIGRvY3VtZW50IFVSTCBzdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxl
Z2F0ZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCis8dW5r
bm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52
YWxpZC1mb3JtYXQucG5nIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIHJlc291
cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcsIGh0dHAgc3RhdHVzIGNv
ZGUgMD4KK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBz
aG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yIC0gPE5TRXJyb3IgZG9tYWluIFdlYktpdEVy
cm9yRG9tYWluLCBjb2RlIDQwMSwgZmFpbGluZyBVUkwgInN1cHBvcnQtYnJva2VuLWltYWdlLWRl
bGVnYXRlLmh0bWwiPgorUmFkYXIgODYxMDkwOCAtIEFkZCBhIHJlc291cmNlIGRlbGVnYXRlIG1l
dGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgYnJva2VuIGltYWdlLiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72676</attachid>
            <date>2010-11-02 09:28:50 -0700</date>
            <delta_ts>2010-11-08 12:42:58 -0800</delta_ts>
            <desc>Fix build break for GTK and Chromium.</desc>
            <filename>support_broken_image_delegate.patch</filename>
            <type>text/plain</type>
            <size>32861</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAg
ICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJD
b3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFn
ZXMuCisKKyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hv
dWxkUGludEJyb2tlbkltYWdlV2l0aEVycm9yKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lkZSBp
ZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ug
d2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxzbyBw
YXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlIGFuZCB0aGUgcmVhc29u
IG9mIGZhaWx1cmUuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4t
aW1hZ2UtZGVsZWdhdGUuaHRtbAorCisgICAgICAgICogbG9hZGVyL0NhY2hlZEltYWdlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRJbWFnZTo6ZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZXJyb3IpOgor
ICAgICAgICAqIGxvYWRlci9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNs
aWVudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OnNob3Vs
ZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorCiAyMDEwLTExLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZElt
YWdlLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJSZXF1ZXN0LmgiCkBAIC01Niw2ICs1Nyw3IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShj
b25zdCBTdHJpbmcmIHUKICAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmly
ZWQpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlRXJyb3JPY2N1cnJlZChmYWxzZSkKKyAgICAsIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogewogICAgIHNldFN0YXR1cyhVbmtub3duKTsK
IH0KQEAgLTEyOSw3ICsxMzEsNyBAQCBJbWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkgY29uc3QK
IHsKICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwogCi0gICAgaWYgKGVycm9yT2NjdXJyZWQo
KSkKKyAgICBpZiAoZXJyb3JPY2N1cnJlZCgpICYmIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkK
ICAgICAgICAgcmV0dXJuIGJyb2tlbkltYWdlKCk7CiAKICAgICBpZiAobV9pbWFnZSkKQEAgLTIy
NSw2ICsyMjcsMTYgQEAgdm9pZCBDYWNoZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IAog
ICAgICAgICBjLT5pbWFnZUNoYW5nZWQodGhpcywgY2hhbmdlUmVjdCk7CiB9CiAKK2Jvb2wgQ2Fj
aGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZShpbnQgZXJyb3JDb2RlKSBjb25z
dAoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6IDA7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmxv
YWRlcigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIEtVUkwgaW1hZ2VVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybCk7CisgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkt
PnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1f
dXJsKSwgZXJyb3JDb2RlKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogewogICAg
IGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwpAQCAtMjgzLDYgKzI5NSwxMyBAQCB2b2lkIENhY2hlZElt
YWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAgICAgICAgIEludFNpemUgcyA9IGltYWdlU2l6
ZSgxLjBmKTsKICAgICAgICAgc2l6ZV90IGVzdGltYXRlZERlY29kZWRJbWFnZVNpemUgPSBzLndp
ZHRoKCkgKiBzLmhlaWdodCgpICogNDsgLy8gbm8gb3ZlcmZsb3cgY2hlY2sKICAgICAgICAgaWYg
KG1faW1hZ2UtPmlzTnVsbCgpIHx8IChtYXhEZWNvZGVkSW1hZ2VTaXplID4gMCAmJiBlc3RpbWF0
ZWREZWNvZGVkSW1hZ2VTaXplID4gbWF4RGVjb2RlZEltYWdlU2l6ZSkpIHsKKyAgICAgICAgICAg
IGludCBlcnJvckNvZGUgPSBJbWFnZUVycm9yVW5rbm93bjsKKyAgICAgICAgICAgIGlmIChtX2lt
YWdlLT5pc051bGwoKSkKKyAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSBJbWFnZUVycm9yVW5h
YmxlVG9EZWNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXJyb3JDb2Rl
ID0gSW1hZ2VFcnJvckltYWdlVG9vQmlnOworCisgICAgICAgICAgICBtX3Nob3VsZFBhaW50QnJv
a2VuSW1hZ2UgPSBjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoZXJyb3JDb2RlKTsKICAgICAg
ICAgICAgIGVycm9yKCk7CiAgICAgICAgICAgICBpZiAoaW5DYWNoZSgpKQogICAgICAgICAgICAg
ICAgIGNhY2hlKCktPnJlbW92ZSh0aGlzKTsKQEAgLTMwNSw2ICszMjQsOCBAQCB2b2lkIENhY2hl
ZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmVycm9y
KCkKIHsKKyAgICBpZiAoaHR0cFN0YXR1c0NvZGVFcnJvck9jY3VycmVkKCkpCisgICAgICAgIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA9IGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZShJbWFn
ZUVycm9yTG9hZEZhaWxlZCk7CiAgICAgY2xlYXIoKTsKICAgICBzZXRFcnJvck9jY3VycmVkKHRy
dWUpOwogICAgIG1fZGF0YS5jbGVhcigpOwpJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGVkSW1h
Z2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRJbWFnZS5oCShyZXZpc2lv
biA3MTAzMSkKKysrIFdlYkNvcmUvbG9hZGVyL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENhY2hlZFJlc291
cmNlTG9hZGVyOwogY2xhc3MgQ2FjaGU7CiAKK2VudW0geworICAgIEltYWdlRXJyb3JVbmtub3du
LAorICAgIEltYWdlRXJyb3JVbmFibGVUb0RlY29kZSwKKyAgICBJbWFnZUVycm9ySW1hZ2VUb29C
aWcsCisgICAgSW1hZ2VFcnJvckltYWdlT3V0T2ZNZW1vcnksCisgICAgSW1hZ2VFcnJvckxvYWRG
YWlsZWQKK307CisKIGNsYXNzIENhY2hlZEltYWdlIDogcHVibGljIENhY2hlZFJlc291cmNlLCBw
dWJsaWMgSW1hZ2VPYnNlcnZlciB7CiAgICAgZnJpZW5kIGNsYXNzIENhY2hlOwogCkBAIC05Miwx
MSArMTAwLDEzIEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1heGltdW1EZWNvZGVkSW1hZ2VTaXpl
KCk7CiAgICAgLy8gSWYgbm90IG51bGwsIGNoYW5nZVJlY3QgaXMgdGhlIGNoYW5nZWQgcGFydCBv
ZiB0aGUgaW1hZ2UuCiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hh
bmdlUmVjdCA9IDApOworICAgIGJvb2wgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKGludCBl
cnJvckNvZGUpIGNvbnN0OwogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQo
VGltZXI8Q2FjaGVkSW1hZ2U+Kik7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAg
VGltZXI8Q2FjaGVkSW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOwogICAgIGJvb2wg
bV9odHRwU3RhdHVzQ29kZUVycm9yT2NjdXJyZWQ7CisgICAgYm9vbCBtX3Nob3VsZFBhaW50QnJv
a2VuSW1hZ2U7CiB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNzEw
MzEpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzczLDYgKzM3Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgeyByZXR1
cm4gUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PigpOyB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJMJiwgaW50KSBj
b25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xhc3MgRW1wdHlFZGl0b3JDbGllbnQgOiBw
dWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgTm9uY29weWFibGUgewpJbmRleDogV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MCw2ICsyOTAsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWROb3RBbGxvd1BsdWdpbnMo
KSB7IH0KIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYgdXJsLCBpbnQgZXJy
b3JDb2RlKSBjb25zdCA9IDA7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDcxMDYwKQorKysgV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRl
ckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5J
bWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEwLTExLTAxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRl
cnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRleDogV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjQsNCAr
MTEyNCwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyCiAgICAg
cmV0dXJuIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lLT5jb3JlRnJh
bWUoKSk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2Vu
SW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3QKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDksNiArMjA5LDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2lu
Z0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgV2ViRnJhbWUq
IG1fZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29s
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA3MTEyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0xMS0wMiAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAg
ICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3Jl
IHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMu
CisKKyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxv
YWRlckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpG
cmFtZUxvYWRlckNsaWVudEltcGw6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAxMC0xMS0wMSAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbnQg
VGFtdXJhLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9h
ZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzcsNCArMTUzNyw5IEBAIFBh
c3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWUKICAgICByZXR1cm4gRnJhbWVO
ZXR3b3JraW5nQ29udGV4dEltcGw6OmNyZWF0ZShtX3dlYkZyYW1lLT5mcmFtZSgpKTsKIH0KIAor
Ym9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJy
b3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L2Nocm9t
aXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA2LDYg
KzIwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCk7
CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpLVVJMJiwgaW50KSBjb25zdDsK
IAogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKSW5kZXg6IFdlYktpdC9l
ZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lv
biA3MTA2MCkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTYgQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRk
IGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91
bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisg
ICAgICAgIEFkZCBhIGJsYW5rIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJD
bGllbnQgbWV0aG9kIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudEVmbDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJv
cik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaDoKKwog
MjAxMC0xMS0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDcxMDMxKQor
KysgV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTkzMiw0ICs5MzIsOCBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRFZmw6OmNy
ZWF0ZShld2tfZnJhbWVfY29yZV9nZXQobV9mcmFtZSkpOwogfQogCitib29sIEZyYW1lTG9hZGVy
Q2xpZW50RWZsOjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBp
bnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CiB9CkluZGV4OiBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA3MTAz
MSkKKysrIFdlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtMjA1LDYgKzIwNSw4IEBAIGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50
RWZsIDogcHVibGljIEZyYW0KICAgICB2aXJ0dWFsIHZvaWQgZG93bmxvYWQoUmVzb3VyY2VIYW5k
bGUqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwm
LCBpbnQpIGNvbnN0OwogIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QgKm1fdmlldzsKICAgICBF
dmFzX09iamVjdCAqbV9mcmFtZTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYktpdC9n
dGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDEg
IFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxl
Z2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQg
YnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIGJsYW5rIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kIHNob3VsZFBh
aW50QnJva2VuSW1hZ2VXaXRoRXJyb3IuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDEwLTExLTAxICBNYXJpbyBTYW5jaGV6
IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0
aW4gUm9iaW5zb24uCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTMyMiw0ICsxMzIyLDkgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFt
ZQogICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0R3RrOjpjcmVhdGUoY29yZShtX2Zy
YW1lKSk7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1h
Z2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogfQpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgs
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsK
IAorICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpLVVJMJiwgaW50KSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAg
IFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIG1fcmVzcG9uc2U7CkluZGV4OiBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0L2hh
aWt1L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTAx
ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVs
ZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0
IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBibGFuayBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZCBzaG91bGRQ
YWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEhhaWt1OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1Lmg6CisKIDIwMTAtMTEtMDEgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2Vi
S2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NjEsNCArODYxLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1
OjpkaXNwYXRjaERpZAogewogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3Vs
ZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0
L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5o
CShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEhhaWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5v
dGlmaWNhdGlvbihib29sIGxpc3RlbiA9IHRydWUpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0Owor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYlZpZXcq
IG1fd2ViVmlldzsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA2MCkKKysrIFdlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4g
WmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2Ug
bG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhl
IGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBh
IG5ldyByZXNvdXJjZSBsb2FkIGNsaWVudCBtZXRob2QgKHNob3VsZFBpbnRCcm9rZW5JbWFnZVdp
dGhFcnJvcikuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAgICAgICBz
aG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2UgZmFpbHMg
dG8gbG9hZCBvciBkZWNvZGUuICBUaGUgbWV0aG9kIGFsc28gcGFzc2VzIHRoZQorICAgICAgICBV
Ukwgb2YgdGhlIGZhaWxlZCBpbWFnZSBhbmQgdGhlIHJlYXNvbiBvZiBmYWlsdXJlLgorCisgICAg
ICAgICogTWlzYy9XZWJLaXRFcnJvcnNQcml2YXRlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91
bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgor
CiAyMDEwLTExLTAxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBXZWJLaXQvbWFjL01pc2MvV2Vi
S2l0RXJyb3JzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvTWlzYy9XZWJLaXRF
cnJvcnNQcml2YXRlLmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L21hYy9NaXNjL1dlYktp
dEVycm9yc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMjMgQEAgZW51bSB7
CiAgICAgV2ViS2l0RXJyb3JHZW9sb2NhdGlvbkxvY2F0aW9uVW5rbm93biAgPSAgICAgICAgICAg
ICAgICAgICAgMzAwLAogfTsKIAorLyohCisgICAgQGVudW0KKyAgICBAYWJzdHJhY3QgQnJva2Vu
IGltYWdlIGVycm9ycworICAgIEBjb25zdGFudCBXZWJLaXRFcnJvckltYWdlVW5rbm93bgorICAg
IEBjb25zdGFudCBXZWJLaXRFcnJvckltYWdlVW5hYmxlVG9EZWNvZGUKKyAgICBAY29uc3RhbnQg
V2ViS2l0RXJyb3JJbWFnZVRvb0JpZworICAgIEBjb25zdGFudCBXZWJLaXRFcnJvckltYWdlT3V0
T2ZNZW1vcnkKKyAgICBAY29uc3RhbnQgV2ViS2l0RXJyb3JJbWFnZUxvYWRpbmdGYWlsZWQKKyAq
LworZW51bSB7CisgICAgV2ViS2l0RXJyb3JJbWFnZVVua25vd24gPSA0MDAsCisgICAgV2ViS2l0
RXJyb3JJbWFnZVVuYWJsZVRvRGVjb2RlID0gNDAxLAorICAgIFdlYktpdEVycm9ySW1hZ2VUb29C
aWcgPSA0MDIsCisgICAgV2ViS2l0RXJyb3JJbWFnZU91dE9mTWVtb3J5ID0gNDAzLAorICAgIFdl
YktpdEVycm9ySW1hZ2VMb2FkaW5nRmFpbGVkID0gNDA0Cit9OworCiBAaW50ZXJmYWNlIE5TRXJy
b3IgKFdlYktpdEV4dHJhcykKICsgKE5TRXJyb3IgKilfd2ViS2l0RXJyb3JXaXRoQ29kZTooaW50
KWNvZGUgZmFpbGluZ1VSTDooTlNTdHJpbmcgKilVUkw7CiArIChOU0Vycm9yICopX3dlYktpdEVy
cm9yV2l0aERvbWFpbjooTlNTdHJpbmcgKilkb21haW4gY29kZTooaW50KWNvZGUgVVJMOihOU1VS
TCAqKVVSTDsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsOSArMjMx
LDExIEBAIHByaXZhdGU6CiAgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0
IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0
ZT4pIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsK
LSAgICAKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCisgICAgdmlydHVhbCBib29sIHNo
b3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkg
Y29uc3Q7CisKICAgICBSZXRhaW5QdHI8V2ViRnJhbWU+IG1fd2ViRnJhbWU7CiAKICAgICBSZXRh
aW5QdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lcj4gbV9wb2xpY3lMaXN0ZW5lcjsKSW5kZXg6IFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQko
cmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MzksNiArNDM5LDE5IEBAIGJvb2wgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmNhbkF1dGhlbnRpY2EKIH0KICNlbmRpZgogCitib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtV
UkwmIGltYWdlVVJMLCBpbnQgZXJyb3JDb2RlKSBjb25zdAoreworICAgIFdlYlZpZXcgKndlYlZp
ZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOworICAgIFdlYlJlc291cmNlRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0UmVzb3Vy
Y2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisKKyAgICBpZiAoaW1wbGVt
ZW50YXRpb25zLT5zaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yRnVuYykgeworICAgICAg
ICBOU1VSTCogdXJsID0gaW1hZ2VVUkw7CisgICAgICAgIE5TRXJyb3IqIGVycm9yID0gW05TRXJy
b3IgX3dlYktpdEVycm9yV2l0aENvZGU6KGVycm9yQ29kZSArIFdlYktpdEVycm9ySW1hZ2VVbmtu
b3duKSBmYWlsaW5nVVJMOlt3ZWJWaWV3IG1haW5GcmFtZVVSTF1dOworICAgICAgICByZXR1cm4g
Q2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihZRVMsIGltcGxlbWVudGF0
aW9ucy0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvckZ1bmMsIHdlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3I6aW1hZ2VVUkw6KSwg
ZXJyb3IsIHVybCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
Y3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmY2hhbGxlbmdlKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHJldmlzaW9u
IDcxMDMxKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25D
YWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IFdlYlJlc291
cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbgogI2lmIFVTRShQUk9URUNUSU9OX1NQQUNFX0FVVEhf
Q0FMTEJBQ0spCiAgICAgSU1QIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VG
dW5jOwogI2VuZGlmCisgICAgSU1QIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3JGdW5j
OwogICAgIElNUCBpZGVudGlmaWVyRm9yUmVxdWVzdEZ1bmM7CiAgICAgSU1QIHdpbGxTZW5kUmVx
dWVzdEZ1bmM7CiAgICAgSU1QIGRpZFJlY2VpdmVSZXNwb25zZUZ1bmM7CkluZGV4OiBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkocmV2aXNpb24gNzEwMzEp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSwxNCBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJSZXNv
dXJjZUxvYWREZWxlCiAqLwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHBsdWdJ
bkZhaWxlZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIGRhdGFTb3VyY2U6KFdlYkRhdGFTb3Vy
Y2UgKilkYXRhU291cmNlOwogCisvKiEKKysgICAgIEBtZXRob2Qgd2ViVmlldzpzaG91bGRQYWlu
dEZhaWxlZEltYWdlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgaW1hZ2VVUkw6KE5TVVJMKilp
bWFnZVVSTAorKyAgICAgQGFic3RyYWN0IFRoaXMgbWVzc2FnZSBpcyBzZW50IHdoZW4gYW4gaW1h
Z2UgY2Fubm90IGJlIGRlY29kZWQgb3IgZGlzcGxheWVkLgorKyAgICAgQHBhcmFtIGVycm9yIFRo
ZSByZWFzb24gd2h5IGltYWdlIGNhbm5vdCBiZSBkaXNwbGF5ZWQuCisrICAgICBAcGFyYW0gaW1h
Z2VVUkwgVGhlIHVybCBvZiB0aGUgb2ZmZW5kaW5nIGltYWdlLgorKyAgICAgQHJlc3VsdCByZXR1
cm4gYW4gQk9PTCB0byB0ZWxsIGlmIFdlYktpdCBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJv
a2VuIGltYWdlLgorKyAgKi8KKy0gKEJPT0wpd2ViVmlldzooV2ViVmlldyopc2VuZGVyIHNob3Vs
ZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciBpbWFnZVVSTDooTlNV
UkwqKWltYWdlVVJMOwogQGVuZAogCiAjdW5kZWYgV2ViTlNJbnRlZ2VyCkluZGV4OiBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkocmV2aXNpb24gNzEwMzEpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU0Myw2ICsxNTQzLDcgQEAgLSAodm9pZClfY2FjaGVS
ZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbQogICAgIGNhY2hlLT53aWxsQ2FjaGVSZXNwb25zZUZ1
bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlOndpbGxD
YWNoZVJlc3BvbnNlOmZyb21EYXRhU291cmNlOikpOwogICAgIGNhY2hlLT53aWxsU2VuZFJlcXVl
c3RGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTp3
aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopKTsKICAgICBj
YWNoZS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRl
LCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUZv
ckRhdGFTb3VyY2U6KSk7CisgICAgY2FjaGUtPnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJy
b3JGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRQYWlu
dEJyb2tlbkltYWdlV2l0aEVycm9yOmltYWdlVVJMOikpOwogfQogCiAtICh2b2lkKV9jYWNoZUZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zCkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysg
V2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTExLTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxv
YWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBk
ZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBi
bGFuayBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZCBz
aG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTAtMTEtMDEgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVy
cyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTg2LDYg
KzE1ODYsMTEgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZQogICAg
IHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0UXQ6OmNyZWF0ZShtX2ZyYW1lLCBtX3dlYkZy
YW1lLCBtX3dlYkZyYW1lLT5wYWdlKCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkpOwogfQogCiti
b29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3Io
Y29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQogCiAj
aW5jbHVkZSAibW9jX0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIgpJbmRleDogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA3MTAzMSkK
KysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzNSw2ICsyMzUsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsK
IAorICAgIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJMJiwg
aW50KSBjb25zdDsKKwogICAgIHN0YXRpYyBib29sIGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrczsK
ICAgICBzdGF0aWMgYm9vbCBkdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZGVyQ2FsbGJhY2tzOwog
ICAgIHN0YXRpYyBib29sIGR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3M7CkluZGV4OiBXZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNp
b24gNzEwNjApCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEwLTExLTAxICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFk
ZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hv
dWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKwor
ICAgICAgICBBZGQgYSBibGFuayBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVy
Q2xpZW50IG1ldGhvZCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMTEt
MDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA3MTAzMSkKKysrIFdlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05MDAsMyArOTAwLDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxk
VXNlUGx1ZwogCiAgICAgcmV0dXJuIHdlYlZpZXctPnNob3VsZFVzZUVtYmVkZGVkVmlldyhtaW1l
VHlwZSk7CiB9CisKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2Vu
SW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVn
aW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyopIGNvbnN0OwogCisgICAgdmlydHVhbCBib29s
IHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGlu
dCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFt
ZSopOwogICAgIH5XZWJGcmFtZUxvYWRlckNsaWVudCgpOwpJbmRleDogV2ViS2l0L3d4L0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTA2MCkK
KysrIFdlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAor
MjAxMC0xMS0wMSAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJj
ZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0
aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRk
IGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRo
b2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFd4OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0xMS0wMSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzIENhcmxzc29uLgpJbmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDcxMDMxKQorKysgV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4Miw0ICs5
ODIsOSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0
dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRXeDo6Y3JlYXRlKG1fZnJhbWUpOwogfQogCitib29s
IEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29u
c3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRleDog
V2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAkocmV2aXNp
b24gNzEwMzEpCisrKyBXZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29u
dGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAorICAgICAgICBib29sIHNob3VsZFBh
aW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3Q7CisKICAgICBw
cml2YXRlOgogICAgICAgICB3eFdlYkZyYW1lICptX3dlYkZyYW1lOwogICAgICAgICBGcmFtZSog
bV9mcmFtZTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4g
WmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRo
b2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGlt
YWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbmV3IHJlc291
cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3Ig
Zm9yIER1bXBSZW5kZXJUcmVlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291
cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJW
aWV3OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3I6aW1hZ2VVUkw6XSk6CisKIDIwMTAt
MTEtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkocmV2aXNpb24gNzEw
MzEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdh
dGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0Miw0ICsyNDIsMTMgQEAgLShOU0NhY2hlZFVSTFJl
c3BvbnNlICopIHdlYlZpZXc6IChXZWJWaQogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAorLSAo
Qk9PTCl3ZWJWaWV3OiAoV2ViVmlldyopd3Ygc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJv
cjooTlNFcnJvciopZXJyb3IgaW1hZ2VVUkw6KE5TVVJMKilpbWFnZVVSTAoreworICAgIGlmICgh
ZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCIlQCAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IgLSAlQCIsIFtpbWFnZVVS
TCBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwgW2Vycm9yIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwg
W3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQorCisgICAgcmV0dXJuIFlFUzsKK30KIEBlbmQK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDcxMDYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDEgIFlvbmdqdW4gWmhhbmcgIDx5
b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVl
cnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBm
YWlsZWQgaW1hZ2VzLgorCisgICAgICAgIFRlc3QgZm9yIHRoZSBuZXcgc2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZVdpdGhFcnJvciBtZXRob2QgaW4gRnJhbWVMb2FkZXJDbGllbnQuCisKKyAgICAgICAg
KiBmYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQu
cG5nOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1k
ZWxlZ2F0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMv
c3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAx
MC0xMS0wMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXggdGVzdCBmYWlsdXJlcyBvbiBRdCBieSBhdm9pZGluZyByZWZlcmVuY2VzIHRvIGV4dGVy
bmFsIGltYWdlIGZpbGVzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1i
cm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9hZGVkKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPGJvZHk+CitSYWRhciA4NjEwOTA4IC0gQWRkIGEg
cmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50
IHRoZSBicm9rZW4gaW1hZ2UuCis8aW1nIGlkPSJicm9rZW4iIG9uRXJyb3I9ImxvYWRlZCgpIiBv
bkxvYWQ9ImxvYWRlZCgpIiBzcmM9InJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlk
LWZvcm1hdC5wbmciPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdl
LXdpdGgtaW52YWxpZC1mb3JtYXQucG5nCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZnNhZGxqZjkwM3EyYXNkZmljLT0yOXEyNDtsYXNk
ZgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJv
a2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zh
c3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1IEBACityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52
YWxpZC1mb3JtYXQucG5nIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIHJlc291
cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcsIG1haW4gZG9jdW1lbnQg
VVJMIHN1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4g
cmVkaXJlY3RSZXNwb25zZSAobnVsbCkKKzx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK3Jl
c291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBkaWRSZWNlaXZl
UmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFs
aWQtZm9ybWF0LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgorcmVzb3VyY2VzL2Jyb2tlbi1pbWFn
ZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJy
b3IgLSA8TlNFcnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgNDAxLCBmYWlsaW5n
IFVSTCAic3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbCI+CitSYWRhciA4NjEwOTA4
IC0gQWRkIGEgcmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hv
dWxkIHBhaW50IHRoZSBicm9rZW4gaW1hZ2UuIAo=
</data>
<flag name="review"
          id="62964"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73268</attachid>
            <date>2010-11-08 12:42:58 -0800</date>
            <delta_ts>2011-01-03 14:10:40 -0800</delta_ts>
            <desc>New patch addressing review comments.</desc>
            <filename>support_broken_image_delegate.patch</filename>
            <type>text/plain</type>
            <size>37533</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMTEtMDggIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5n
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAg
ICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJD
b3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFn
ZXMuCisKKyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hv
dWxkUGludEJyb2tlbkltYWdlV2l0aEVycm9yKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lkZSBp
ZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ug
d2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxzbyBw
YXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlIGFuZCB0aGUgcmVhc29u
IG9mIGZhaWx1cmUuCisKKyAgICAgICAgVGVzdDogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4t
aW1hZ2UtZGVsZWdhdGUuaHRtbAorCisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgor
ICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJ
bWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZXJyb3IpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmVy
cm9yQ29kZSk6CisKIDIwMTAtMTEtMDggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0
eUNsaWVudHMuaAkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDYgKzM4MSw4IEBAIHB1YmxpYzoKICNlbmRpZgog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5l
dHdvcmtpbmdDb250ZXh0KCkgeyByZXR1cm4gUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250
ZXh0PigpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhF
cnJvcihjb25zdCBLVVJMJiwgaW50KSBjb25zdCAgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAogY2xh
c3MgRW1wdHlFZGl0b3JDbGllbnQgOiBwdWJsaWMgRWRpdG9yQ2xpZW50LCBwdWJsaWMgTm9uY29w
eWFibGUgewpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTU0
OSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5MCw2ICsyOTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7IH0KIAogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSA9IDA7
CisKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3Io
Y29uc3QgS1VSTCYgdXJsLCBpbnQgZXJyb3JDb2RlKSBjb25zdCA9IDA7CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJSZXF1ZXN0LmgiCkBAIC01Niw2ICs1Nyw4IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShj
b25zdCBTdHJpbmcmIHUKICAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmly
ZWQpCiAgICAgLCBtX2h0dHBTdGF0dXNDb2RlRXJyb3JPY2N1cnJlZChmYWxzZSkKKyAgICAsIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQorICAgICwgbV9lcnJvckNvZGUoSW1hZ2VFcnJv
ck5vbmUpCiB7CiAgICAgc2V0U3RhdHVzKFVua25vd24pOwogfQpAQCAtMTI5LDcgKzEzMiw3IEBA
IEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKSBjb25zdAogewogICAgIEFTU0VSVCghaXNQdXJn
ZWFibGUoKSk7CiAKLSAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmIChlcnJvck9jY3Vy
cmVkKCkgJiYgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKQogICAgICAgICByZXR1cm4gYnJva2Vu
SW1hZ2UoKTsKIAogICAgIGlmIChtX2ltYWdlKQpAQCAtMjI1LDYgKzIyOCwxNyBAQCB2b2lkIENh
Y2hlZEltYWdlOjpub3RpZnlPYnNlcnZlcnMoY29uc3QgCiAgICAgICAgIGMtPmltYWdlQ2hhbmdl
ZCh0aGlzLCBjaGFuZ2VSZWN0KTsKIH0KIAorYm9vbCBDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQ
YWludEJyb2tlbkltYWdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZXJyb3JDb2RlKCkgIT0gSW1h
Z2VFcnJvck5vbmUpOworCisgICAgRnJhbWUqIGZyYW1lID0gbV9yZXF1ZXN0ID8gbV9yZXF1ZXN0
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5mcmFtZSgpIDogMDsKKyAgICBpZiAoIWZyYW1lKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5zaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKEtVUkwoUGFyc2VkVVJMU3RyaW5n
LCBtX3VybCksIGVycm9yQ29kZSgpKTsKK30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQog
ewogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwpAQCAtMjgzLDYgKzI5NywxMyBAQCB2b2lkIENh
Y2hlZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAgICAgICAgIEludFNpemUgcyA9IGlt
YWdlU2l6ZSgxLjBmKTsKICAgICAgICAgc2l6ZV90IGVzdGltYXRlZERlY29kZWRJbWFnZVNpemUg
PSBzLndpZHRoKCkgKiBzLmhlaWdodCgpICogNDsgLy8gbm8gb3ZlcmZsb3cgY2hlY2sKICAgICAg
ICAgaWYgKG1faW1hZ2UtPmlzTnVsbCgpIHx8IChtYXhEZWNvZGVkSW1hZ2VTaXplID4gMCAmJiBl
c3RpbWF0ZWREZWNvZGVkSW1hZ2VTaXplID4gbWF4RGVjb2RlZEltYWdlU2l6ZSkpIHsKKyAgICAg
ICAgICAgIG1fZXJyb3JDb2RlID0gSW1hZ2VFcnJvclVua25vd247CisgICAgICAgICAgICBpZiAo
bV9pbWFnZS0+aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgbV9lcnJvckNvZGUgPSBJbWFnZUVy
cm9yVW5hYmxlVG9EZWNvZGU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9l
cnJvckNvZGUgPSBJbWFnZUVycm9ySW1hZ2VUb29CaWc7CisKKyAgICAgICAgICAgIG1fc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSA9IGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwogICAgICAg
ICAgICAgZXJyb3IoKTsKICAgICAgICAgICAgIGlmIChpbkNhY2hlKCkpCiAgICAgICAgICAgICAg
ICAgY2FjaGUoKS0+cmVtb3ZlKHRoaXMpOwpAQCAtMzA1LDYgKzMyNiwxMCBAQCB2b2lkIENhY2hl
ZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmVycm9y
KCkKIHsKKyAgICBpZiAoaHR0cFN0YXR1c0NvZGVFcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAg
bV9lcnJvckNvZGUgPSBJbWFnZUVycm9yTG9hZEZhaWxlZDsKKyAgICAgICAgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlID0gY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CisgICAgfQogICAg
IGNsZWFyKCk7CiAgICAgc2V0RXJyb3JPY2N1cnJlZCh0cnVlKTsKICAgICBtX2RhdGEuY2xlYXIo
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gNzE1NDkpCisr
KyBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIE1lbW9yeUNhY2hlOwogCitlbnVtIEltYWdlRXJyb3IgeworICAgIEltYWdl
RXJyb3JOb25lID0gMCwKKyAgICBJbWFnZUVycm9yVW5rbm93biwKKyAgICBJbWFnZUVycm9yVW5h
YmxlVG9EZWNvZGUsCisgICAgSW1hZ2VFcnJvckltYWdlVG9vQmlnLAorICAgIEltYWdlRXJyb3JJ
bWFnZU91dE9mTWVtb3J5LAorICAgIEltYWdlRXJyb3JMb2FkRmFpbGVkCit9OworCiBjbGFzcyBD
YWNoZWRJbWFnZSA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGljIEltYWdlT2JzZXJ2ZXIg
ewogICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlDYWNoZTsKIApAQCAtODcsNiArOTYsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvbkFkdmFuY2VkKGNvbnN0IEltYWdlKik7CiAg
ICAgdmlydHVhbCB2b2lkIGNoYW5nZWRJblJlY3QoY29uc3QgSW1hZ2UqLCBjb25zdCBJbnRSZWN0
Jik7CiAKKyAgICBJbWFnZUVycm9yIGVycm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3JD
b2RlOyB9CiBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRlSW1hZ2UoKTsKICAgICBzaXplX3QgbWF4
aW11bURlY29kZWRJbWFnZVNpemUoKTsKQEAgLTk0LDEwICsxMDQsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFuZ2VSZWN0ID0gMCk7CiAg
ICAgdm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZChUaW1lcjxDYWNoZWRJbWFnZT4q
KTsKICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0eSgpIGNvbnN0IHsgcmV0
dXJuIFB1cmdlRmlyc3Q7IH0KKyAgICBib29sIGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgp
IGNvbnN0OwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIFRpbWVyPENhY2hlZElt
YWdlPiBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcjsKICAgICBib29sIG1faHR0cFN0YXR1c0Nv
ZGVFcnJvck9jY3VycmVkOworICAgIGJvb2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdlOworICAg
IEltYWdlRXJyb3IgbV9lcnJvckNvZGU7CiB9OwogCiB9CkluZGV4OiBXZWJLaXQyL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gNzE1NDkpCisrKyBX
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTEx
LTA4ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQg
ZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZh
dWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBibGFu
ayBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZCBzaG91
bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisKIDIwMTAtMTEtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJbmRleDogV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMjgsNCArMTEy
OCwxMCBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyCiAgICAgcmV0
dXJuIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShtX2ZyYW1lLT5jb3JlRnJhbWUo
KSk7CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1h
Z2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDksNiArMjA5LDggQEAgcHJpdmF0ZToKICAgICAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgV2ViRnJhbWUqIG1f
ZnJhbWU7CiAgICAgUmVmUHRyPFBsdWdpblZpZXc+IG1fcGx1Z2luVmlldzsKICAgICBib29sIG1f
aGFzU2VudFJlc3BvbnNlVG9QbHVnaW5WaWV3OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA3
MTU0OSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNiBAQAorMjAxMC0xMS0wOCAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRl
ckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAg
ICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFt
ZUxvYWRlckNsaWVudEltcGw6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAg
ICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAxMC0xMS0wOCAgQWxleGV5
IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJp
biBBZGxlci4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHJldmlzaW9uIDcxNTQ5KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQxLDQgKzE1NDEsOSBAQCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0dXJuIEZyYW1l
TmV0d29ya2luZ0NvbnRleHRJbXBsOjpjcmVhdGUobV93ZWJGcmFtZS0+ZnJhbWUoKSk7CiB9CiAK
K2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVy
cm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNiw2
ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygp
OwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZFBh
aW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3Q7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CkluZGV4OiBXZWJLaXQv
ZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNp
b24gNzE1NDkpCisrKyBXZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEwLTExLTA4ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFk
ZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hv
dWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKwor
ICAgICAgICBBZGQgYSBibGFuayBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVy
Q2xpZW50IG1ldGhvZCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJy
b3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisK
IDIwMTAtMTEtMDggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gNzE1NDkpCisr
KyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTMyLDQgKzkzMiw5IEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5n
Q29udGV4dD4gRnJhbWUKICAgICByZXR1cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4dEVmbDo6Y3Jl
YXRlKGV3a19mcmFtZV9jb3JlX2dldChtX2ZyYW1lKSk7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJD
bGllbnRFZmw6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGlu
dCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfQpJbmRleDogV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gNzE1
NDkpCisrKyBXZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsOCBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVu
dEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmlydHVhbCB2b2lkIGRvd25sb2FkKFJlc291cmNlSGFu
ZGxlKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6
OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJM
JiwgaW50KSBjb25zdDsKICBwcml2YXRlOgogICAgIEV2YXNfT2JqZWN0ICptX3ZpZXc7CiAgICAg
RXZhc19PYmplY3QgKm1fZnJhbWU7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTExLTA4
ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVs
ZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0
IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBibGFuayBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEZyYW1lTG9hZGVyQ2xpZW50IG1ldGhvZCBzaG91bGRQ
YWludEJyb2tlbkltYWdlV2l0aEVycm9yLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0xMS0wOCAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMwLDQgKzEz
MzAsOSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0
dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGs6OmNyZWF0ZShjb3JlKG1fZnJhbWUpKTsKIH0K
IAorYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJv
cihjb25zdCBLVVJMJiwgaW50KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9Cklu
ZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDYgKzE4OCw4IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCisgICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2Vi
RnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNw
b25zZTsKSW5kZXg6IFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZwkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJLaXQvaGFpa3UvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMTEtMDggIFlvbmdqdW4g
WmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRo
b2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGlt
YWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIGJsYW5rIGltcGxlbWVudGF0
aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQgbWV0aG9kIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2VXaXRoRXJyb3IuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEhhaWt1LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6
OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaDoKKwogMjAxMC0xMS0wOCAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KSW5kZXg6IFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhh
aWt1LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDcxNTQ5KQorKysgV2ViS2l0L2hhaWt1L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04NjEsNCArODYxLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERp
ZAogewogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50SGFpa3U6OnNob3VsZFBhaW50QnJva2Vu
SW1hZ2VXaXRoRXJyb3IoY29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViS2l0L2hhaWt1L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
aGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5oCShyZXZpc2lvbiA3
MTU0OSkKKysrIFdlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhh
aWt1LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNhdGlvbihi
b29sIGxpc3RlbiA9IHRydWUpOwogCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgcHJpdmF0
ZToKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYlZpZXcqIG1fd2ViVmlldzsK
SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTEtMDggIFlvbmdqdW4gWmhhbmcgIDx5b25n
anVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0
ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJv
a2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIG5ldyByZXNvdXJj
ZSBsb2FkIGNsaWVudCBtZXRob2QgKHNob3VsZFBpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcikuICBX
ZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAgICAgICBzaG91bGQgcGFpbnQg
dGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2UgZmFpbHMgdG8gbG9hZCBvciBk
ZWNvZGUuICBUaGUgbWV0aG9kIGFsc28gcGFzc2VzIHRoZQorICAgICAgICBVUkwgb2YgdGhlIGZh
aWxlZCBpbWFnZSBhbmQgdGhlIHJlYXNvbiBvZiBmYWlsdXJlLgorCisgICAgICAgICogTWlzYy9X
ZWJLaXRFcnJvcnNQcml2YXRlLmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tl
bkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorCiAyMDEwLTExLTA4
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViS2l0L21hYy9NaXNjL1dlYktpdEVycm9yc1ByaXZh
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3JzUHJpdmF0ZS5o
CShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9tYWMvTWlzYy9XZWJLaXRFcnJvcnNQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDI1IEBAIGVudW0gewogICAgIFdlYktpdEVy
cm9yR2VvbG9jYXRpb25Mb2NhdGlvblVua25vd24gID0gICAgICAgICAgICAgICAgICAgIDMwMCwK
IH07CiAKKy8qIQorICAgIEBlbnVtCisgICAgQGFic3RyYWN0IEJyb2tlbiBpbWFnZSBlcnJvcnMK
KyAgICBAYWJzdHJhY3QgV2ViS2l0RXJyb3JJbWFnZU5vbmUKKyAgICBAY29uc3RhbnQgV2ViS2l0
RXJyb3JJbWFnZVVua25vd24KKyAgICBAY29uc3RhbnQgV2ViS2l0RXJyb3JJbWFnZVVuYWJsZVRv
RGVjb2RlCisgICAgQGNvbnN0YW50IFdlYktpdEVycm9ySW1hZ2VUb29CaWcKKyAgICBAY29uc3Rh
bnQgV2ViS2l0RXJyb3JJbWFnZU91dE9mTWVtb3J5CisgICAgQGNvbnN0YW50IFdlYktpdEVycm9y
SW1hZ2VMb2FkaW5nRmFpbGVkCisgKi8KK2VudW0geworICAgIFdlYktpdEVycm9ySW1hZ2VOb25l
ID0gNDAwLAorICAgIFdlYktpdEVycm9ySW1hZ2VVbmtub3duID0gNDAxLAorICAgIFdlYktpdEVy
cm9ySW1hZ2VVbmFibGVUb0RlY29kZSA9IDQwMiwKKyAgICBXZWJLaXRFcnJvckltYWdlVG9vQmln
ID0gNDAzLAorICAgIFdlYktpdEVycm9ySW1hZ2VPdXRPZk1lbW9yeSA9IDQwNCwKKyAgICBXZWJL
aXRFcnJvckltYWdlTG9hZGluZ0ZhaWxlZCA9IDQwNQorfTsKKwogQGludGVyZmFjZSBOU0Vycm9y
IChXZWJLaXRFeHRyYXMpCiArIChOU0Vycm9yICopX3dlYktpdEVycm9yV2l0aENvZGU6KGludClj
b2RlIGZhaWxpbmdVUkw6KE5TU3RyaW5nICopVVJMOwogKyAoTlNFcnJvciAqKV93ZWJLaXRFcnJv
cldpdGhEb21haW46KE5TU3RyaW5nICopZG9tYWluIGNvZGU6KGludCljb2RlIFVSTDooTlNVUkwg
KilVUkw7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMxLDkgKzIzMSwx
MSBAQCBwcml2YXRlOgogICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uRGljdGlvbmFyeShjb25zdCBX
ZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+
KSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Ci0g
ICAgCisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29u
dGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBpbnQpIGNv
bnN0OworCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1lOwogCiAgICAgUmV0YWlu
UHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVuZXI7CkluZGV4OiBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJl
dmlzaW9uIDcxNTQ5KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSwxOSBAQCBib29sIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5kaWYKIAorYm9vbCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBLVVJM
JiBpbWFnZVVSTCwgaW50IGVycm9yQ29kZSkgY29uc3QKK3sKKyAgICBXZWJWaWV3ICp3ZWJWaWV3
ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKKyAgICBXZWJSZXNvdXJjZURlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJlc291cmNl
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOworCisgICAgaWYgKGltcGxlbWVu
dGF0aW9ucy0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvckZ1bmMpIHsKKyAgICAgICAg
TlNVUkwqIHVybCA9IGltYWdlVVJMOworICAgICAgICBOU0Vycm9yKiBlcnJvciA9IFtOU0Vycm9y
IF93ZWJLaXRFcnJvcldpdGhDb2RlOihlcnJvckNvZGUgKyBXZWJLaXRFcnJvckltYWdlTm9uZSkg
ZmFpbGluZ1VSTDpbd2ViVmlldyBtYWluRnJhbWVVUkxdXTsKKyAgICAgICAgcmV0dXJuIENhbGxS
ZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oWUVTLCBpbXBsZW1lbnRhdGlvbnMt
PnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3JGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Io
d2ViVmlldzpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yOmltYWdlVVJMOiksIGVycm9y
LCB1cmwpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVu
dExvYWRlciogbG9hZGVyLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJmNoYWxsZW5nZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0
V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiA3MTU0
OSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBXZWJSZXNvdXJjZURl
bGVnYXRlSW1wbGVtZW50YXRpb24KICNpZiBVU0UoUFJPVEVDVElPTl9TUEFDRV9BVVRIX0NBTExC
QUNLKQogICAgIElNUCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlRnVuYzsK
ICNlbmRpZgorICAgIElNUCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yRnVuYzsKICAg
ICBJTVAgaWRlbnRpZmllckZvclJlcXVlc3RGdW5jOwogICAgIElNUCB3aWxsU2VuZFJlcXVlc3RG
dW5jOwogICAgIElNUCBkaWRSZWNlaXZlUmVzcG9uc2VGdW5jOwpJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlJlc291cmNlTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlJlc291cmNlTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDcxNTQ5KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE2MSw2ICsxNjEsMTQgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViUmVzb3VyY2VM
b2FkRGVsZQogKi8KIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwbHVnSW5GYWls
ZWRXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciBkYXRhU291cmNlOihXZWJEYXRhU291cmNlICop
ZGF0YVNvdXJjZTsKIAorLyohCisrICAgICBAbWV0aG9kIHdlYlZpZXc6c2hvdWxkUGFpbnRGYWls
ZWRJbWFnZVdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIGltYWdlVVJMOihOU1VSTCopaW1hZ2VV
UkwKKysgICAgIEBhYnN0cmFjdCBUaGlzIG1lc3NhZ2UgaXMgc2VudCB3aGVuIGFuIGltYWdlIGNh
bm5vdCBiZSBkZWNvZGVkIG9yIGRpc3BsYXllZC4KKysgICAgIEBwYXJhbSBlcnJvciBUaGUgcmVh
c29uIHdoeSBpbWFnZSBjYW5ub3QgYmUgZGlzcGxheWVkLgorKyAgICAgQHBhcmFtIGltYWdlVVJM
IFRoZSB1cmwgb2YgdGhlIG9mZmVuZGluZyBpbWFnZS4KKysgICAgIEByZXN1bHQgcmV0dXJuIGFu
IEJPT0wgdG8gdGVsbCBpZiBXZWJLaXQgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBp
bWFnZS4KKysgICovCistIChCT09MKXdlYlZpZXc6KFdlYlZpZXcqKXNlbmRlciBzaG91bGRQYWlu
dEJyb2tlbkltYWdlV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgaW1hZ2VVUkw6KE5TVVJMKilp
bWFnZVVSTDsKIEBlbmQKIAogI3VuZGVmIFdlYk5TSW50ZWdlcgpJbmRleDogV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDcxNTQ5KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTE1NDMsNiArMTU0Myw3IEBAIC0gKHZvaWQpX2NhY2hlUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVJbXBsZW0KICAgICBjYWNoZS0+d2lsbENhY2hlUmVzcG9uc2VGdW5jID0g
Z2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTp3aWxsQ2FjaGVS
ZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopKTsKICAgICBjYWNoZS0+d2lsbFNlbmRSZXF1ZXN0RnVu
YyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNl
bmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSk7CiAgICAgY2FjaGUt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNl
bGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGb3JEYXRh
U291cmNlOikpOworICAgIGNhY2hlLT5zaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yRnVu
YyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6c2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZVdpdGhFcnJvcjppbWFnZVVSTDopKTsKIH0KIAogLSAodm9pZClfY2FjaGVGcmFtZUxv
YWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktp
dC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0w
OCAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRl
bGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVs
dCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsg
aW1wbGVtZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDEwLTExLTA4ICBBbGV4ZXkgUHJv
c2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcAkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNiArMTU4Niwx
MSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lCiAgICAgcmV0dXJu
IEZyYW1lTmV0d29ya2luZ0NvbnRleHRRdDo6Y3JlYXRlKG1fZnJhbWUsIG1fd2ViRnJhbWUsIG1f
d2ViRnJhbWUtPnBhZ2UoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKSk7CiB9CiAKK2Jvb2wgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcihjb25zdCBL
VVJMJiwgaW50KSBjb25zdAoreworICAgIHJldHVybiB0cnVlOworfQorCiB9CiAKICNpbmNsdWRl
ICJtb2NfRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAiCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDcxNTQ5KQorKysgV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjM1LDYgKzIzNSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxG
cmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpOwogCisgICAg
Ym9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNv
bnN0OworCiAgICAgc3RhdGljIGJvb2wgZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzOwogICAgIHN0
YXRpYyBib29sIGR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkZXJDYWxsYmFja3M7CiAgICAgc3Rh
dGljIGJvb2wgZHVtcFJlc291cmNlTG9hZENhbGxiYWNrczsKSW5kZXg6IFdlYktpdC93aW4vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTU0
OSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTAtMTEtMDggIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKyAgICAgICAgQWRkIGEgcmVz
b3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFp
bnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAg
IEFkZCBhIGJsYW5rIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXcgRnJhbWVMb2FkZXJDbGllbnQg
bWV0aG9kIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxv
YWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcik6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0xMS0wOCAgQWxl
eGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIGJ1aWxk
IGZpeC4KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjAsMyAr
OTIwLDggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkVXNlUGx1ZwogCiAgICAg
cmV0dXJuIHdlYlZpZXctPnNob3VsZFVzZUVtYmVkZGVkVmlldyhtaW1lVHlwZSk7CiB9CisKK2Jv
b2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3Io
Y29uc3QgS1VSTCYsIGludCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KSW5kZXg6IFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDcxNTQ5KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2ViQ29y
ZTo6UGx1Z2luVmlldyopIGNvbnN0OwogCisgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJv
a2VuSW1hZ2VXaXRoRXJyb3IoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGludCkgY29uc3Q7CisKIHBy
b3RlY3RlZDoKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSopOwogICAgIH5XZWJG
cmFtZUxvYWRlckNsaWVudCgpOwpJbmRleDogV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC93eC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0xMS0wOCAgWW9u
Z2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODc4MQorICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRl
IG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9r
ZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgYmxhbmsgaW1wbGVt
ZW50YXRpb24gb2YgdGhlIG5ldyBGcmFtZUxvYWRlckNsaWVudCBtZXRob2Qgc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZVdpdGhFcnJvci4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpz
aG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMC0xMS0wOCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5k
ZXg6IFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3Bw
CShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05ODIsNCArOTgyLDkgQEAgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZQogICAgIHJldHVybiBGcmFtZU5ldHdvcmtp
bmdDb250ZXh0V3g6OmNyZWF0ZShtX2ZyYW1lKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KSW5kZXg6IFdlYktpdC93eC9XZWJLaXRT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gvV2Vi
S2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDcxNTQ5KQorKysgV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMjcsNiArMjI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCk7CiAKKyAgICAgICAgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0
aEVycm9yKGNvbnN0IEtVUkwmLCBpbnQpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAg
d3hXZWJGcmFtZSAqbV93ZWJGcmFtZTsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CkluZGV4OiBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTU1MikKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTExLTA4ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96
aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisg
ICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdl
YkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGlt
YWdlcy4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIG5ldyByZXNvdXJjZSBsb2FkIGRlbGVnYXRl
IG1ldGhvZCBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yIGZvciBEdW1wUmVuZGVyVHJl
ZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6Cisg
ICAgICAgIChzZXRTaG91bGRQYWludEJyb2tlbkltYWdlQ2FsbGJhY2spOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZSk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERl
bGVnYXRlIHdlYlZpZXc6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvcjppbWFnZVVSTDpd
KToKKwogMjAxMC0xMS0wNSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV91bml0dGVzdCBwYXNzIHdo
ZW4gcnVubmluZyB1bmRlcgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzE1NDkpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbAogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKQogICAg
ICwgbV9pc1ByaW50aW5nKGZhbHNlKQogICAgICwgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
KHRydWUpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKICAgICAsIG1fdGVz
dFBhdGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFzaChleHBl
Y3RlZFBpeGVsSGFzaCkKIHsKQEAgLTE2OTEsNiArMTY5MiwxOCBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBhZGRVc2VyU3R5bGVTaGVldENhbGxiCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRQYWludEJyb2tlbklt
YWdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBN
YWMgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250
cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihK
U09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNob3Vs
ZFBhaW50QnJva2VuSW1hZ2UoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0p
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTENhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQpAQCAtMjAw
Nyw2ICsyMDIwLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6Ogog
ICAgICAgICB7ICJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsIGFkZE9yaWdpbkFjY2Vz
c1doaXRlbGlzdEVudHJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2Nyb2xsYmFy
UG9saWN5Iiwgc2V0U2Nyb2xsYmFyUG9saWN5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
YXV0aGVudGljYXRlU2Vzc2lvbiIsIGF1dGhlbnRpY2F0ZVNlc3Npb25DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAorICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRC
cm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsK
IApAQCAtMjA4MSw1ICsyMDk1LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBP
U0lYTG9jYWwKICAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZSkKK3sKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBzaG91
bGRQYWludEJyb2tlbkltYWdlOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDcxNTQ5KQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjk2LDYgKzI5Niw5IEBAIHB1YmxpYzoKIAogICAgIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgbm9kZU9iamVjdCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFNob3VsZFBhaW50QnJv
a2VuSW1hZ2UoYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKTsKKyAgICBib29sIHNob3VsZFBh
aW50QnJva2VuSW1hZ2UoKSBjb25zdAl7IHJldHVybiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7
IH0KKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG1heFZpZXdIZWlnaHQ7CiAKQEAgLTM0NSw2ICszNDgsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOwogICAgIGJv
b2wgbV9pc1ByaW50aW5nOwogICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOwor
ICAgIGJvb2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdlOwogCiAgICAgc3RkOjpzdHJpbmcgbV9h
dXRoZW50aWNhdGlvblVzZXJuYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25Q
YXNzd29yZDsgCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZpc2lvbiA3MTU0OSkKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjQyLDQgKzI0MiwxMyBAQCAtKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgd2ViVmll
dzogKFdlYlZpCiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCistIChCT09MKXdlYlZpZXc6IChX
ZWJWaWV3Kil3diBzaG91bGRQYWludEJyb2tlbkltYWdlV2l0aEVycm9yOihOU0Vycm9yKillcnJv
ciBpbWFnZVVSTDooTlNVUkwqKWltYWdlVVJMCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5T
U3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZVdpdGhFcnJvciAtICVAIiwgW2ltYWdlVVJMIF9kcnRfZGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLCBbZXJyb3IgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdF1dOworICAgICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJp
bmddKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG91bGRQ
YWludEJyb2tlbkltYWdlKCk7Cit9CiBAZW5kCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MTU0OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisy
MDEwLTExLTA4ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisgICAgICAgIEFkZCBhIHJlc291cmNl
IGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRo
ZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBUZXN0
IGZvciB0aGUgbmV3IHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IgbWV0aG9kIGluIEZy
YW1lTG9hZGVyQ2xpZW50LgorCisgICAgICAgICogZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tl
bi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZzogQWRkZWQuCisgICAgICAgICogZmFzdC9p
bWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMTEtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBKb2huIFN1bGxpdmFuLgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdh
dGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJy
b2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNob3VsZFBhaW50QnJva2VuSW1hZ2Uo
ZmFsc2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwor
ZnVuY3Rpb24gbG9hZGVkKCkgeworICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0Jyk7CisgICAgdmFyIGltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdp
bWcnKTsKKyAgICAvLyBUaGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgaGVpZ2h0IGluIG1hYyBpcyAy
MC4KKyAgICByZXN1bHQuaW5uZXJIVE1MID0gaW1nLm9mZnNldEhlaWdodCA+PSAxMCA/ICJGQUlM
IiA6ICJQQVNTIjsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8
L3NjcmlwdD4KKzxib2R5PgorUmFkYXIgODYxMDkwOCAtIEFkZCBhIHJlc291cmNlIGRlbGVnYXRl
IG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgYnJva2VuIGltYWdl
LgorPGRpdiBpZD0naW1nJz4KKzxpbWcgaWQ9ImJyb2tlbiIgb25FcnJvcj0ibG9hZGVkKCkiIG9u
TG9hZD0ibG9hZGVkKCkiIHNyYz0icmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQt
Zm9ybWF0LnBuZyI+Cis8L2Rpdj4KKzxkaXYgaWQ9J3Jlc3VsdCc+CityZXN1bHQgdGV4dC4KKzwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVz
b3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52
YWxpZC1mb3JtYXQucG5nCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMv
cmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorZnNhZGxqZjkwM3EyYXNkZmljLT0yOXEyNDtsYXNkZgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdl
LWRlbGVnYXRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2Vz
L3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3IEBACityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3Jt
YXQucG5nIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIHJlc291cmNlcy9icm9r
ZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcsIG1haW4gZG9jdW1lbnQgVVJMIHN1cHBv
cnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RS
ZXNwb25zZSAobnVsbCkKKzx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK3Jlc291cmNlcy9i
cm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0
LnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgorcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWlu
dmFsaWQtZm9ybWF0LnBuZyAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2VXaXRoRXJyb3IgLSA8TlNF
cnJvciBkb21haW4gV2ViS2l0RXJyb3JEb21haW4sIGNvZGUgNDAyLCBmYWlsaW5nIFVSTCAic3Vw
cG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbCI+CitSYWRhciA4NjEwOTA4IC0gQWRkIGEg
cmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50
IHRoZSBicm9rZW4gaW1hZ2UuCisKK1BBU1MK
</data>
<flag name="review"
          id="63666"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77846</attachid>
            <date>2011-01-03 14:10:40 -0800</date>
            <delta_ts>2011-01-31 16:06:47 -0800</delta_ts>
            <desc>New patch addressing comments.</desc>
            <filename>support_broken_image.patch</filename>
            <type>text/plain</type>
            <size>20201</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc0OTIzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDEtMDMgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSkuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAg
ICAgICBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2Ug
ZmFpbHMgdG8gbG9hZCBvciBkZWNvZGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNh
bGxiYWNrKTogIGFkZCBhIEpTIEFQSSB0byBlbmFibGUvZGlzYWJsZSBicm9rZW4gaW1hZ2UgcGFp
bnRpbmcuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpzaG91bGRQYWludEJyb2tlbkltYWdl
Ol0pOgorCiAyMDExLTAxLTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzQ5MjIpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bAogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKQogICAgICwg
bV9pc1ByaW50aW5nKGZhbHNlKQogICAgICwgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRy
dWUpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKICAgICAsIG1fdGVzdFBh
dGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFzaChleHBlY3Rl
ZFBpeGVsSGFzaCkKIHsKQEAgLTE3MzYsNiArMTczNywxOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBh
ZGRVc2VyU3R5bGVTaGVldENhbGxiCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRQYWludEJyb2tlbkltYWdl
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBNYWMg
aW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNob3VsZFBh
aW50QnJva2VuSW1hZ2UoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQpAQCAtMjA2Niw2
ICsyMDc5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAg
ICAgICB7ICJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsIGFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2Nyb2xsYmFyUG9s
aWN5Iiwgc2V0U2Nyb2xsYmFyUG9saWN5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYXV0
aGVudGljYXRlU2Vzc2lvbiIsIGF1dGhlbnRpY2F0ZVNlc3Npb25DYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApA
QCAtMjE0MCw1ICsyMTU0LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBPU0lY
TG9jYWwKICAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSkKK3sKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBzaG91bGRQ
YWludEJyb2tlbkltYWdlOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDc0OTIyKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMw
Miw5IEBAIHB1YmxpYzoKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkg
Y29uc3Q7CiAKKyAgICB2b2lkIHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQ
YWludEJyb2tlbkltYWdlKTsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoKSBjb25z
dAl7IHJldHVybiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7IH0KKwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZp
ZXdIZWlnaHQ7CiAKQEAgLTM1MSw2ICszNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYW5k
bGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOwogICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAg
IGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOworICAgIGJvb2wgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlOwogCiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1l
OwogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsgCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZp
c2lvbiA3NDkyMikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDQgKzI0MiwxMyBAQCAtKE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKikgd2ViVmlldzogKFdlYlZpCiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCist
IChCT09MKXdlYlZpZXc6IChXZWJWaWV3Kil3diBzaG91bGRQYWludEJyb2tlbkltYWdlOihOU1VS
TCopaW1hZ2VVUkwKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5k
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSBzaG91bGRQYWludEJyb2tlbkltYWdl
OiBjYWxsZWQiLCBbaW1hZ2VVUkwgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3Vs
dF1dOworICAgICAgICBwcmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG91bGRQYWludEJyb2tlbklt
YWdlKCk7Cit9CiBAZW5kCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzQ5MjMpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDExLTAxLTAzICBZb25nanVuIFpoYW5n
ICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ4NzgxCisKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2Qg
dG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdl
IGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIG5ldyByZXNvdXJjZSBsb2FkIGNs
aWVudCBtZXRob2QgKHNob3VsZFBhaW50QnJva2VuSW1hZ2UpLiAgV2ViS2l0IGNsaWVudCBjYW4g
ZGVjaWRlIGlmIFdlYkNvcmUKKyAgICAgICAgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tl
biBpbWFnZSB3aGVuIGFuIGltYWdlIGZhaWxzIHRvIGxvYWQgb3IgZGVjb2RlLiAgVGhlIG1ldGhv
ZCBhbHNvIHBhc3NlcyB0aGUKKyAgICAgICAgVVJMIG9mIHRoZSBmYWlsZWQgaW1hZ2UuCisKKyAg
ICAgICAgVGVzdDogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRt
bAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZEltYWdlOjpDYWNoZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6aW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6ZXJyb3IpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorCiAyMDExLTAxLTAzICBDaHJpcyBGbGVp
emFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc0OTIy
KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjkzLDYgKzI5Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpID0gMDsK
KworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJM
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHJldmlzaW9uIDc0OTIy
KQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCkBAIC01NSw2
ICs1Niw3IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShjb25zdCBTdHJpbmcmIHUKICAgICA6
IENhY2hlZFJlc291cmNlKHVybCwgSW1hZ2VSZXNvdXJjZSkKICAgICAsIG1faW1hZ2UoMCkKICAg
ICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2Rl
ZERhdGFEZWxldGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2Uo
dHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7CiB9CkBAIC02Myw2ICs2NSw3IEBAIENh
Y2hlZEltYWdlOjpDYWNoZWRJbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgOiBDYWNoZWRSZXNvdXJj
ZShTdHJpbmcoKSwgSW1hZ2VSZXNvdXJjZSkKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBt
X2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkSW1hZ2U6OmRlY29kZWREYXRh
RGVsZXRpb25UaW1lckZpcmVkKQorICAgICwgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUp
CiB7CiAgICAgc2V0U3RhdHVzKENhY2hlZCk7CiAgICAgc2V0TG9hZGluZyhmYWxzZSk7CkBAIC0x
MjcsNyArMTMwLDcgQEAgSW1hZ2UqIENhY2hlZEltYWdlOjppbWFnZSgpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKCFpc1B1cmdlYWJsZSgpKTsKIAotICAgIGlmIChlcnJvck9jY3VycmVkKCkpCisgICAg
aWYgKGVycm9yT2NjdXJyZWQoKSAmJiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UpCiAgICAgICAg
IHJldHVybiBicm9rZW5JbWFnZSgpOwogCiAgICAgaWYgKG1faW1hZ2UpCkBAIC0yMjMsNiArMjI2
LDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2VydmVycyhjb25zdCAKICAgICAgICAg
Yy0+aW1hZ2VDaGFuZ2VkKHRoaXMsIGNoYW5nZVJlY3QpOwogfQogCit2b2lkIENhY2hlZEltYWdl
OjpjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKQoreworICAgIEZyYW1lKiBmcmFtZSA9IG1f
cmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+ZnJhbWUoKSA6IDA7
CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zaG91bGRQYWludEJy
b2tlbkltYWdlID0gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+c2hvdWxkUGFpbnRCcm9rZW5J
bWFnZShLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpKTsKK30KKwogdm9pZCBDYWNoZWRJbWFn
ZTo6Y2xlYXIoKQogewogICAgIGRlc3Ryb3lEZWNvZGVkRGF0YSgpOwpAQCAtMzAzLDYgKzMxNSw3
IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRhdGEoUGFzc1JlZlB0cjxTaGFyZWQKIAogdm9pZCBDYWNo
ZWRJbWFnZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiB7CisgICAgY2hl
Y2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAgICAgY2xlYXIoKTsKICAgICBzZXRTdGF0dXMo
c3RhdHVzKTsKICAgICBBU1NFUlQoZXJyb3JPY2N1cnJlZCgpKTsKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gNzQ5MjIpCisrKyBXZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw5ICs5NCwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEludFJlY3QqIGNoYW5nZVJlY3QgPSAw
KTsKICAgICB2b2lkIGRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKFRpbWVyPENhY2hlZElt
YWdlPiopOwogICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJnZVByaW9yaXR5KCkgY29uc3Qg
eyByZXR1cm4gUHVyZ2VGaXJzdDsgfQorICAgIHZvaWQgY2hlY2tTaG91bGRQYWludEJyb2tlbklt
YWdlKCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAgICAgVGltZXI8Q2FjaGVkSW1h
Z2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOworICAgIGJvb2wgbV9zaG91bGRQYWludEJy
b2tlbkltYWdlOwogfTsKIAogfQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0OTIzKQorKysgV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMS0wMyAg
WW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVs
ZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0
IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVz
b3VyY2UgbG9hZCBjbGllbnQgbWV0aG9kIChzaG91bGRQYWludEJyb2tlbkltYWdlKS4gIFdlYktp
dCBjbGllbnQgY2FuIGRlY2lkZSBpZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUg
ZGVmYXVsdCBicm9rZW4gaW1hZ2Ugd2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29k
ZS4gIFRoZSBtZXRob2QgYWxzbyBwYXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVk
IGltYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAg
ICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbToKKyAgICAg
ICAgKENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4pOiBBZGRlZCBjYXNl
IGZvciBwYXNzaW5nIG9uZSBvYmplY3QuCisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZUxv
YWREZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dlYlZpZXcgX2NhY2hlUmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNd
KToKKwogMjAxMS0wMS0wMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJ1YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6IFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc0OTIy
KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzQsOSArMjM0LDExIEBAIHByaXZhdGU6CiAgICAgTlNEaWN0aW9u
YXJ5ICphY3Rpb25EaWN0aW9uYXJ5KGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZvcm1TdGF0ZT4pIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4
dCgpOwogCisgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIGNvbnN0OworCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lPiBtX3dlYkZyYW1l
OwogCiAgICAgUmV0YWluUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXI+IG1fcG9saWN5TGlzdGVu
ZXI7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDc0OTIyKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSwx
OCBAQCBib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhCiB9CiAjZW5kaWYK
IAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25z
dCBLVVJMJiBpbWFnZVVSTCkgY29uc3QKK3sKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2Vi
VmlldyhtX3dlYkZyYW1lLmdldCgpKTsKKyAgICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOworCisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZ1bmMpIHsKKyAgICAgICAgTlNVUkwqIHVybCA9IGltYWdl
VVJMOworICAgICAgICByZXR1cm4gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9v
bGVhbihZRVMsIGltcGxlbWVudGF0aW9ucy0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZ1bmMsIHdl
YlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1hZ2U6KSwgdXJsKTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIq
IGxvYWRlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSZjaGFsbGVuZ2UpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXco
bV93ZWJGcmFtZS5nZXQoKSk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkocmV2aXNpb24gNzQ5MjIpCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgV2ViUmVzb3VyY2VEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uCiAgICAgSU1QIHdpbGxDYWNoZVJlc3BvbnNlRnVuYzsKICAgICBJTVAgcGx1
Z0luRmFpbGVkV2l0aEVycm9yRnVuYzsKICAgICBJTVAgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2VGdW5jOworICAgIElNUCBzaG91bGRQYWludEJyb2tlbkltYWdlRnVuYzsKIH07CiAKIHN0cnVj
dCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpAQCAtMTMyLDYgKzEz
Myw3IEBAIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcKIGlkIENhbGxS
ZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgTlNJbnRlZ2VyLCBp
ZCk7CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQs
IGlkLCBOU0ludGVnZXIsIGlkKTsKIAorQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1
cm5pbmdCb29sZWFuKEJPT0wsIElNUCwgV2ViVmlldyAqLCBTRUwsIGlkKTsKIEJPT0wgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcgKiwg
U0VMLCBpZCwgaWQpOwogQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29s
ZWFuKEJPT0wsIElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgaWQpOwogCkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
aW5nLm1tCShyZXZpc2lvbiA3NDkyMikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTM1LDYgKzUzNSwx
OCBAQCBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QIGltcGxlbWVuCiAgICAgcmV0dXJu
IENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwgc2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIs
IG9iamVjdDMpOwogfQogCitCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4oQk9PTCByZXN1bHQsIElNUCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VM
IHNlbGVjdG9yLCBpZCBvYmplY3QxKQoreworICAgIGlmICghc2VsZi0+X3ByaXZhdGUtPmNhdGNo
ZXNEZWxlZ2F0ZUV4Y2VwdGlvbnMpCisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJP
T0wgKCopKGlkLCBTRUwsIFdlYlZpZXcgKiwgaWQpPihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2
YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxKTsK
KyAgICBAdHJ5IHsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKikoaWQs
IFNFTCwgV2ViVmlldyAqLCBpZCk+KG9iamNfbXNnU2VuZCkoc2VsZi0+X3ByaXZhdGUtPnJlc291
cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEpOworICAgIH0gQGNh
dGNoKGlkIGV4Y2VwdGlvbikgeworICAgICAgICBSZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2Vw
dGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KwogQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVz
dWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0MSwgaWQgb2JqZWN0MikKIHsKICAgICBpZiAoIXNlbGYtPl9wcml2YXRlLT5jYXRjaGVz
RGVsZWdhdGVFeGNlcHRpb25zKQpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNl
TG9hZERlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gNzQ5MjIpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUzLDYgKzUzLDEzIEBAIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlJlc291cmNl
TG9hZERlbGUKIC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQp
aWRlbnRpZmllciBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihOU1VSTFBy
b3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBmb3JEYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZTsKICNlbmRpZgogCisvKiEKKyBAbWV0aG9kIHdlYlZpZXc6c2hvdWxk
UGFpbnRCcm9rZW5JbWFnZTooTlNVUkwqKWltYWdlVVJMCisgQGFic3RyYWN0IFRoaXMgbWVzc2Fn
ZSBpcyBzZW50IHdoZW4gYW4gaW1hZ2UgY2Fubm90IGJlIGRlY29kZWQgb3IgZGlzcGxheWVkLgor
IEBwYXJhbSBpbWFnZVVSTCBUaGUgdXJsIG9mIHRoZSBvZmZlbmRpbmcgaW1hZ2UuCisgQHJlc3Vs
dCByZXR1cm4gWUVTIGlmIFdlYktpdCBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGlt
YWdlLgorICovCistIChCT09MKXdlYlZpZXc6KFdlYlZpZXcqKXNlbmRlciBzaG91bGRQYWludEJy
b2tlbkltYWdlOihOU1VSTCopaW1hZ2VVUkw7CiBAZW5kCiAKICN1bmRlZiBXZWJOU0ludGVnZXIK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA3NDkyMikKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUyLDYgKzE1NTIsNyBAQCAt
ICh2b2lkKV9jYWNoZVJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVtCiAgICAgY2FjaGUtPndpbGxD
YWNoZVJlc3BvbnNlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6
cmVzb3VyY2U6d2lsbENhY2hlUmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6KSk7CiAgICAgY2FjaGUt
PndpbGxTZW5kUmVxdWVzdEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJW
aWV3OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3BvbnNlOmZyb21EYXRhU291
cmNlOikpOwogICAgIGNhY2hlLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUZ1bmMgPSBnZXRN
ZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlOnNob3VsZFVzZUNyZWRl
bnRpYWxTdG9yYWdlRm9yRGF0YVNvdXJjZTopKTsKKyAgICBjYWNoZS0+c2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnNob3Vs
ZFBhaW50QnJva2VuSW1hZ2U6KSk7CiB9CiAKIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0OTIzKQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMDMg
IFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRl
bGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVs
dCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgKiBmYXN0L2ltYWdl
cy9yZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9r
ZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMS0wMS0wMyAgTWlo
YWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
LCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZS4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJv
a2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
OworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGZhbHNlKTsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgpIHsK
KyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAg
IHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nJyk7CisgICAgLy8gVGhlIGRl
ZmF1bHQgYnJva2VuIGltYWdlIGhlaWdodCBpbiBtYWMgaXMgMjAuCisgICAgcmVzdWx0LmlubmVy
SFRNTCA9IGltZy5vZmZzZXRIZWlnaHQgPj0gMTAgPyAiRkFJTCIgOiAiUEFTUyI7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRTaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpOworICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8Ym9keT4KK1Jh
ZGFyIDg2MTA5MDggLSBBZGQgYSByZXNvdXJjZSBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYg
V2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGJyb2tlbiBpbWFnZS4KKzxkaXYgaWQ9J2ltZyc+Cis8
aW1nIGlkPSJicm9rZW4iIG9uRXJyb3I9ImxvYWRlZCgpIiBvbkxvYWQ9ImxvYWRlZCgpIiBzcmM9
InJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmciPgorPC9kaXY+
Cis8ZGl2IGlkPSdyZXN1bHQnPgorcmVzdWx0IHRleHQuCis8L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1hZ2Ut
d2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9p
bWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1h
Z2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2Zz
YWRsamY5MDNxMmFzZGZpYy09MjlxMjQ7bGFzZGYKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFn
ZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNyBAQAorcmVz
b3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHdpbGxTZW5kUmVx
dWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxp
ZC1mb3JtYXQucG5nLCBtYWluIGRvY3VtZW50IFVSTCBzdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxl
Z2F0ZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCis8dW5r
bm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52
YWxpZC1mb3JtYXQucG5nIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIHJlc291
cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcsIGh0dHAgc3RhdHVzIGNv
ZGUgMD4KK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBz
aG91bGRQYWludEJyb2tlbkltYWdlOiBjYWxsZWQKK1JhZGFyIDg2MTA5MDggLSBBZGQgYSByZXNv
dXJjZSBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhl
IGJyb2tlbiBpbWFnZS4KKworUEFTUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77849</attachid>
            <date>2011-01-03 14:51:47 -0800</date>
            <delta_ts>2011-01-31 16:06:51 -0800</delta_ts>
            <desc>change the delegate method to shouldPaintBrokenImageForURL:</desc>
            <filename>support_broken_image.patch</filename>
            <type>text/plain</type>
            <size>20259</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc0OTIzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDEtMDMgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSkuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAg
ICAgICBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2Ug
ZmFpbHMgdG8gbG9hZCBvciBkZWNvZGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNh
bGxiYWNrKTogIGFkZCBhIEpTIEFQSSB0byBlbmFibGUvZGlzYWJsZSBicm9rZW4gaW1hZ2UgcGFp
bnRpbmcuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdl
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAg
ICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpzaG91bGRQYWludEJyb2tlbkltYWdl
Ol0pOgorCiAyMDExLTAxLTAzICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzQ5MjIpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDYgKzgzLDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9s
bAogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZhbHNlKQogICAgICwg
bV9pc1ByaW50aW5nKGZhbHNlKQogICAgICwgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKHRy
dWUpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKICAgICAsIG1fdGVzdFBh
dGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVsSGFzaChleHBlY3Rl
ZFBpeGVsSGFzaCkKIHsKQEAgLTE3MzYsNiArMTczNywxOCBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBh
ZGRVc2VyU3R5bGVTaGVldENhbGxiCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRQYWludEJyb2tlbkltYWdl
Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIC8vIEhhcyBNYWMg
aW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9s
bGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09i
amVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNob3VsZFBh
aW50QnJva2VuSW1hZ2UoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTENhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAyKQpAQCAtMjA2Niw2
ICsyMDc5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAg
ICAgICB7ICJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsIGFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0U2Nyb2xsYmFyUG9s
aWN5Iiwgc2V0U2Nyb2xsYmFyUG9saWN5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiYXV0
aGVudGljYXRlU2Vzc2lvbiIsIGF1dGhlbnRpY2F0ZVNlc3Npb25DYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApA
QCAtMjE0MCw1ICsyMTU0LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBPU0lY
TG9jYWwKICAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSkKK3sKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBzaG91bGRQ
YWludEJyb2tlbkltYWdlOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDc0OTIyKQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAyLDYgKzMw
Miw5IEBAIHB1YmxpYzoKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBtYXJrZXJUZXh0
Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgbm9kZU9iamVjdCkg
Y29uc3Q7CiAKKyAgICB2b2lkIHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UoYm9vbCBzaG91bGRQ
YWludEJyb2tlbkltYWdlKTsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoKSBjb25z
dAl7IHJldHVybiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7IH0KKwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZp
ZXdIZWlnaHQ7CiAKQEAgLTM1MSw2ICszNTQsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYW5k
bGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOwogICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAg
IGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOworICAgIGJvb2wgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlOwogCiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblVzZXJuYW1l
OwogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsgCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCShyZXZp
c2lvbiA3NDkyMikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDQgKzI0MiwxMyBAQCAtKE5TQ2FjaGVkVVJM
UmVzcG9uc2UgKikgd2ViVmlldzogKFdlYlZpCiAgICAgcmV0dXJuIHJlc3BvbnNlOwogfQogCist
KEJPT0wpd2ViVmlldzogKFdlYlZpZXcqKXdlYlZpZXcgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZv
clVSTDooTlNVUkwqKWltYWdlVVJMCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29u
dHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIE5TU3RyaW5n
ICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZTogY2FsbGVkIiwgW2ltYWdlVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHRdXTsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5n
XSk7CisgICAgfQorCisgICAgcmV0dXJuIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSgpOworfQogQGVuZApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0OTIzKQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMS0wMyAgWW9u
Z2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdh
dGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJy
b2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVzb3Vy
Y2UgbG9hZCBjbGllbnQgbWV0aG9kIChzaG91bGRQYWludEJyb2tlbkltYWdlKS4gIFdlYktpdCBj
bGllbnQgY2FuIGRlY2lkZSBpZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVm
YXVsdCBicm9rZW4gaW1hZ2Ugd2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4g
IFRoZSBtZXRob2QgYWxzbyBwYXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGlt
YWdlLgorCisgICAgICAgIFRlc3Q6IGZhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRl
bGVnYXRlLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2Up
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
SW1hZ2U6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGVja1Nob3Vs
ZFBhaW50QnJva2VuSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmVycm9y
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKwogMjAxMS0wMS0wMyAg
Q2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiA3NDkyMikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI5Myw2ICsyOTMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWROb3RBbGxvd1BsdWdpbnMoKSB7IH0KIAogICAgICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRl
eHQoKSA9IDA7CisKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2Uo
Y29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZp
c2lvbiA3NDkyMikKKysrIFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgpAQCAtNTUsNiArNTYsNyBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgU3RyaW5n
JiB1CiAgICAgOiBDYWNoZWRSZXNvdXJjZSh1cmwsIEltYWdlUmVzb3VyY2UpCiAgICAgLCBtX2lt
YWdlKDApCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2FjaGVkSW1h
Z2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKQorICAgICwgbV9zaG91bGRQYWludEJy
b2tlbkltYWdlKHRydWUpCiB7CiAgICAgc2V0U3RhdHVzKFVua25vd24pOwogfQpAQCAtNjMsNiAr
NjUsNyBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoSW1hZ2UqIGltYWdlKQogICAgIDogQ2Fj
aGVkUmVzb3VyY2UoU3RyaW5nKCksIEltYWdlUmVzb3VyY2UpCiAgICAgLCBtX2ltYWdlKGltYWdl
KQogICAgICwgbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXIodGhpcywgJkNhY2hlZEltYWdlOjpk
ZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSh0cnVlKQogewogICAgIHNldFN0YXR1cyhDYWNoZWQpOwogICAgIHNldExvYWRpbmcoZmFs
c2UpOwpAQCAtMTI3LDcgKzEzMCw3IEBAIEltYWdlKiBDYWNoZWRJbWFnZTo6aW1hZ2UoKSBjb25z
dAogewogICAgIEFTU0VSVCghaXNQdXJnZWFibGUoKSk7CiAKLSAgICBpZiAoZXJyb3JPY2N1cnJl
ZCgpKQorICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9zaG91bGRQYWludEJyb2tlbkltYWdl
KQogICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoKTsKIAogICAgIGlmIChtX2ltYWdlKQpAQCAt
MjIzLDYgKzIyNiwxNSBAQCB2b2lkIENhY2hlZEltYWdlOjpub3RpZnlPYnNlcnZlcnMoY29uc3Qg
CiAgICAgICAgIGMtPmltYWdlQ2hhbmdlZCh0aGlzLCBjaGFuZ2VSZWN0KTsKIH0KIAordm9pZCBD
YWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCkKK3sKKyAgICBGcmFtZSog
ZnJhbWUgPSBtX3JlcXVlc3QgPyBtX3JlcXVlc3QtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmZy
YW1lKCkgOiAwOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2hv
dWxkUGFpbnRCcm9rZW5JbWFnZSA9IGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPnNob3VsZFBh
aW50QnJva2VuSW1hZ2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fdXJsKSk7Cit9CisKIHZvaWQg
Q2FjaGVkSW1hZ2U6OmNsZWFyKCkKIHsKICAgICBkZXN0cm95RGVjb2RlZERhdGEoKTsKQEAgLTMw
Myw2ICszMTUsNyBAQCB2b2lkIENhY2hlZEltYWdlOjpkYXRhKFBhc3NSZWZQdHI8U2hhcmVkCiAK
IHZvaWQgQ2FjaGVkSW1hZ2U6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVzKQog
eworICAgIGNoZWNrU2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwogICAgIGNsZWFyKCk7CiAgICAg
c2V0U3RhdHVzKHN0YXR1cyk7CiAgICAgQVNTRVJUKGVycm9yT2NjdXJyZWQoKSk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDc0OTIyKQorKysgV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsOSArOTQsMTEg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeU9ic2VydmVycyhjb25zdCBJbnRSZWN0KiBjaGFu
Z2VSZWN0ID0gMCk7CiAgICAgdm9pZCBkZWNvZGVkRGF0YURlbGV0aW9uVGltZXJGaXJlZChUaW1l
cjxDYWNoZWRJbWFnZT4qKTsKICAgICB2aXJ0dWFsIFB1cmdlUHJpb3JpdHkgcHVyZ2VQcmlvcml0
eSgpIGNvbnN0IHsgcmV0dXJuIFB1cmdlRmlyc3Q7IH0KKyAgICB2b2lkIGNoZWNrU2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSgpOwogCiAgICAgUmVmUHRyPEltYWdlPiBtX2ltYWdlOwogICAgIFRpbWVy
PENhY2hlZEltYWdlPiBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcjsKKyAgICBib29sIG1fc2hv
dWxkUGFpbnRCcm9rZW5JbWFnZTsKIH07CiAKIH0KSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDkyMykKKysr
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIw
MTEtMDEtMDMgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBBZGQgYSByZXNvdXJj
ZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0
aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRk
IGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZSkuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAgICAgICBzaG91bGQg
cGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2UgZmFpbHMgdG8gbG9h
ZCBvciBkZWNvZGUuICBUaGUgbWV0aG9kIGFsc28gcGFzc2VzIHRoZQorICAgICAgICBVUkwgb2Yg
dGhlIGZhaWxlZCBpbWFnZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6c2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSk6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
Zy5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcu
bW06CisgICAgICAgIChDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKTog
QWRkZWQgY2FzZSBmb3IgcGFzc2luZyBvbmUgb2JqZWN0LgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZVJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25zXSk6CisKIDIwMTEtMDEtMDIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZp
c2lvbiA3NDkyMikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDkgKzIzNCwxMSBAQCBwcml2YXRlOgogICAg
IE5TRGljdGlvbmFyeSAqYWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9u
QWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBjb25zdDsKICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29y
a2luZ0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdl
KGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4g
bV93ZWJGcmFtZTsKIAogICAgIFJldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBtX3Bv
bGljeUxpc3RlbmVyOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA3NDkyMikKKysrIFdlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQz
OSw2ICs0MzksMTggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYQog
fQogI2VuZGlmCiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2Vu
SW1hZ2UoY29uc3QgS1VSTCYgaW1hZ2VVUkwpIGNvbnN0Cit7CisgICAgV2ViVmlldyAqd2ViVmll
dyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViUmVzb3VyY2VEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRSZXNvdXJj
ZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKKworICAgIGlmIChpbXBsZW1l
bnRhdGlvbnMtPnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkxGdW5jKSB7CisgICAgICAgIE5T
VVJMKiB1cmwgPSBpbWFnZVVSTDsKKyAgICAgICAgcmV0dXJuIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oWUVTLCBpbXBsZW1lbnRhdGlvbnMtPnNob3VsZFBhaW50QnJv
a2VuSW1hZ2VGb3JVUkxGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRQYWlu
dEJyb2tlbkltYWdlRm9yVVJMOiksIHVybCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmY2hhbGxlbmdlKQogewogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNo
aW5nLmgJKHJldmlzaW9uIDc0OTIyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAg
c3RydWN0IFdlYlJlc291cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbgogICAgIElNUCB3aWxsQ2Fj
aGVSZXNwb25zZUZ1bmM7CiAgICAgSU1QIHBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1bmM7CiAgICAg
SU1QIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRnVuYzsKKyAgICBJTVAgc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZUZvclVSTEZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hlIHsKQEAgLTEzMiw2ICsxMzMsNyBAQCBpZCBDYWxsUmVzb3VyY2VM
b2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1Q
LCBXZWJWaWV3ICosIFNFTCwgaWQsIE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2VyLCBpZCk7CiAK
K0JPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAs
IFdlYlZpZXcgKiwgU0VMLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVy
bmluZ0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsKIEJPT0wgQ2Fs
bFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAsIFdlYlZpZXcg
KiwgU0VMLCBpZCwgaWQsIGlkKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQkocmV2aXNpb24gNzQ5MjIp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNSw2ICs1MzUsMTggQEAgaWQgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlKElNUCBpbXBsZW1lbgogICAgIHJldHVybiBDYWxsRGVsZWdhdGUoaW1wbGVtZW50
YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUsIHNl
bGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKIH0KIAorQk9PTCBD
YWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBJTVAg
aW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSkK
K3sKKyAgICBpZiAoIXNlbGYtPl9wcml2YXRlLT5jYXRjaGVzRGVsZWdhdGVFeGNlcHRpb25zKQor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShpZCwgU0VMLCBXZWJWaWV3
ICosIGlkKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9ncmVzc0Rl
bGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSk7CisgICAgQHRyeSB7CisgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIFdlYlZpZXcgKiwgaWQpPihv
YmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUsIHNl
bGVjdG9yLCBzZWxmLCBvYmplY3QxKTsKKyAgICB9IEBjYXRjaChpZCBleGNlcHRpb24pIHsKKyAg
ICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3IsIGV4Y2VwdGlv
bik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEJPT0wgQ2FsbFJlc291cmNlTG9h
ZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGltcGxlbWVudGF0aW9u
LCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9iamVjdDIpCiB7
CiAgICAgaWYgKCFzZWxmLT5fcHJpdmF0ZS0+Y2F0Y2hlc0RlbGVnYXRlRXhjZXB0aW9ucykKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQ
cml2YXRlLmgJKHJldmlzaW9uIDc0OTIyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlTG9hZERlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxMyBA
QCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJSZXNvdXJjZUxvYWREZWxlCiAtIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgcmVzb3VyY2U6KGlkKWlkZW50aWZpZXIgY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTooTlNVUkxQcm90ZWN0aW9uU3BhY2UgKilwcm90ZWN0
aW9uU3BhY2UgZm9yRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2U7CiAjZW5k
aWYKIAorLyohCisgQG1ldGhvZCB3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkw6
KE5TVVJMKilpbWFnZVVSTAorIEBhYnN0cmFjdCBUaGlzIG1lc3NhZ2UgaXMgc2VudCB3aGVuIGFu
IGltYWdlIGNhbm5vdCBiZSBkZWNvZGVkIG9yIGRpc3BsYXllZC4KKyBAcGFyYW0gaW1hZ2VVUkwg
VGhlIHVybCBvZiB0aGUgb2ZmZW5kaW5nIGltYWdlLgorIEByZXN1bHQgcmV0dXJuIFlFUyBpZiBX
ZWJLaXQgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZS4KKyAqLworLSAoQk9P
TCl3ZWJWaWV3OihXZWJWaWV3KilzZW5kZXIgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTDoo
TlNVUkwqKWltYWdlVVJMOwogQGVuZAogCiAjdW5kZWYgV2ViTlNJbnRlZ2VyCkluZGV4OiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNzQ5MjIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1Miw2ICsxNTUyLDcgQEAgLSAodm9pZClfY2Fj
aGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbQogICAgIGNhY2hlLT53aWxsQ2FjaGVSZXNwb25z
ZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlOndp
bGxDYWNoZVJlc3BvbnNlOmZyb21EYXRhU291cmNlOikpOwogICAgIGNhY2hlLT53aWxsU2VuZFJl
cXVlc3RGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJj
ZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopKTsKICAg
ICBjYWNoZS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGdW5jID0gZ2V0TWV0aG9kKGRlbGVn
YXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZUZvckRhdGFTb3VyY2U6KSk7CisgICAgY2FjaGUtPnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JV
UkxGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRQYWlu
dEJyb2tlbkltYWdlRm9yVVJMOikpOwogfQogCiAtICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NDkyMykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDExLTAxLTAz
ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBk
ZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1
bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgICogZmFzdC9pbWFn
ZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZzogQWRkZWQu
CisgICAgICAgICogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJv
a2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTEtMDEtMDMgIE1p
aGFpIFBhcnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCwgQ2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbiB1cGRhdGUuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRl
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJy
b2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3Mo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShmYWxzZSk7CisgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKSB7
CisgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAg
ICB2YXIgaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZycpOworICAgIC8vIFRoZSBk
ZWZhdWx0IGJyb2tlbiBpbWFnZSBoZWlnaHQgaW4gbWFjIGlzIDIwLgorICAgIHJlc3VsdC5pbm5l
ckhUTUwgPSBpbWcub2Zmc2V0SGVpZ2h0ID49IDEwID8gIkZBSUwiIDogIlBBU1MiOworICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPGJvZHk+CitS
YWRhciA4NjEwOTA4IC0gQWRkIGEgcmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlm
IFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBicm9rZW4gaW1hZ2UuCis8ZGl2IGlkPSdpbWcnPgor
PGltZyBpZD0iYnJva2VuIiBvbkVycm9yPSJsb2FkZWQoKSIgb25Mb2FkPSJsb2FkZWQoKSIgc3Jj
PSJyZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIj4KKzwvZGl2
PgorPGRpdiBpZD0ncmVzdWx0Jz4KK3Jlc3VsdCB0ZXh0LgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdl
LXdpdGgtaW52YWxpZC1mb3JtYXQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
aW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWlt
YWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitm
c2FkbGpmOTAzcTJhc2RmaWMtPTI5cTI0O2xhc2RmCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9z
dXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1h
Z2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK3Jl
c291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSB3aWxsU2VuZFJl
cXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFs
aWQtZm9ybWF0LnBuZywgbWFpbiBkb2N1bWVudCBVUkwgc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVs
ZWdhdGUuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQorPHVu
a25vd24+IC0gZGlkRmluaXNoTG9hZGluZworcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWlu
dmFsaWQtZm9ybWF0LnBuZyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSByZXNv
dXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nLCBodHRwIHN0YXR1cyBj
b2RlIDA+CityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0g
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZTogY2FsbGVkCitSYWRhciA4NjEwOTA4IC0gQWRkIGEgcmVz
b3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRo
ZSBicm9rZW4gaW1hZ2UuCisKK1BBU1MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78148</attachid>
            <date>2011-01-06 12:21:56 -0800</date>
            <delta_ts>2011-02-24 14:06:49 -0800</delta_ts>
            <desc>Only log the message when shouldPaintBrokenImage() returns NO; this avoids changing results of existing layout tests with failed images.</desc>
            <filename>support_broken_image.patch</filename>
            <type>text/plain</type>
            <size>20408</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc1MTc1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTEtMDEtMDYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBB
ZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNo
b3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisK
KyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSkuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAg
ICAgICBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2Ug
ZmFpbHMgdG8gbG9hZCBvciBkZWNvZGUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNh
bGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMp
OgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFNob3VsZFBhaW50QnJva2VuSW1h
Z2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAg
ICAgICAoLVtSZXNvdXJjZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1h
Z2VGb3JVUkw6XSk6CisKIDIwMTEtMDEtMDUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYSBDaGFuLgpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNzUx
NzIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbAogICAgICwgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzKGZh
bHNlKQogICAgICwgbV9pc1ByaW50aW5nKGZhbHNlKQogICAgICwgbV9kZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkKHRydWUpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKICAg
ICAsIG1fdGVzdFBhdGhPclVSTCh0ZXN0UGF0aE9yVVJMKQogICAgICwgbV9leHBlY3RlZFBpeGVs
SGFzaChleHBlY3RlZFBpeGVsSGFzaCkKIHsKQEAgLTE3MzYsNiArMTczNywxOCBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBhZGRVc2VyU3R5bGVTaGVldENhbGxiCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRQYWlu
dEJyb2tlbkltYWdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1
bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAg
IC8vIEhhcyBNYWMgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIExheW91
dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRy
b2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXIt
PnNldFNob3VsZFBhaW50QnJva2VuSW1hZ2UoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1
bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgYXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFzZVVSTENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCAhPSAy
KQpAQCAtMjA2Niw2ICsyMDc5LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OgogICAgICAgICB7ICJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSIsIGFkZE9y
aWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
U2Nyb2xsYmFyUG9saWN5Iiwgc2V0U2Nyb2xsYmFyUG9saWN5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiYXV0aGVudGljYXRlU2Vzc2lvbiIsIGF1dGhlbnRpY2F0ZVNlc3Npb25DYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbkltYWdlIiwgc2V0U2hv
dWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgMCwgMCwgMCB9
CiAgICAgfTsKIApAQCAtMjE0MCw1ICsyMTU0LDEwIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldFBPU0lYTG9jYWwKICAgICBzZXRsb2NhbGUoTENfQUxMLCBsb2NhbGVCdWYpOwogfQog
Cit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJv
b2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKK3sKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1h
Z2UgPSBzaG91bGRQYWludEJyb2tlbkltYWdlOworfQorCiBjb25zdCB1bnNpZ25lZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7CkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDc1MTcyKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMzAyLDYgKzMwMiw5IEBAIHB1YmxpYzoKIAogICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
bm9kZU9iamVjdCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2Uo
Ym9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKTsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7IH0KKwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heFZpZXdIZWlnaHQ7CiAKQEAgLTM1MSw2ICszNTQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9oYW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOwogICAgIGJvb2wgbV9pc1By
aW50aW5nOwogICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOworICAgIGJvb2wg
bV9zaG91bGRQYWludEJyb2tlbkltYWdlOwogCiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNh
dGlvblVzZXJuYW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsg
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCShyZXZpc2lvbiA3NTE3MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQyLDQgKzI0MiwxNSBAQCAt
KE5TQ2FjaGVkVVJMUmVzcG9uc2UgKikgd2ViVmlldzogKFdlYlZpCiAgICAgcmV0dXJuIHJlc3Bv
bnNlOwogfQogCistKEJPT0wpd2ViVmlldzogKFdlYlZpZXcqKXdlYlZpZXcgc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZUZvclVSTDooTlNVUkwqKWltYWdlVVJMCit7CisgICAgLy8gT25seSBsb2cgdGhl
IG1lc3NhZ2Ugd2hlbiBzaG91bGRQYWludEJyb2tlbkltYWdlKCkgcmV0dXJucyBOTzsgdGhpcyBh
dm9pZHMgY2hhbmdpbmcgcmVzdWx0cyBvZiBsYXlvdXQgdGVzdHMgd2l0aCBmYWlsZWQKKyAgICAv
LyBpbWFnZXMsIGUuZy4sIHNlY3VyaXR5L2Jsb2NrLXRlc3Qtbm8tcG9ydC5odG1sLgorICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSAmJiAhZ0xheW91dFRlc3RDb250cm9sbGVyLT5zaG91bGRQYWludEJyb2tlbkltYWdlKCkp
IHsKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiJUAgLSBzaG91bGRQYWludEJyb2tlbkltYWdlOiBOTyIsIFtpbWFnZVVSTCBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CisgICAgICAgIHByaW50ZigiJXNcbiIsIFtz
dHJpbmcgVVRGOFN0cmluZ10pOworICAgIH0KKworICAgIHJldHVybiBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPnNob3VsZFBhaW50QnJva2VuSW1hZ2UoKTsKK30KIEBlbmQKSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTE3
NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTEtMDEtMDYgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBBZGQgYSByZXNv
dXJjZSBsb2FkIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWlu
dCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAg
QWRkIGEgbmV3IHJlc291cmNlIGxvYWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZSkuICBXZWJLaXQgY2xpZW50IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAgICAgICBzaG91
bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2UgZmFpbHMgdG8g
bG9hZCBvciBkZWNvZGUuICBUaGUgbWV0aG9kIGFsc28gcGFzc2VzIHRoZQorICAgICAgICBVUkwg
b2YgdGhlIGZhaWxlZCBpbWFnZS4KKworICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy9zdXBwb3J0
LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQ
YWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZEltYWdlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJ
bWFnZTo6Y2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZEltYWdlOjplcnJvcik6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6
CisKIDIwMTAtMTItMjggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDc1MTcyKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDYgKzMwNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpIHsgfQogCiAgICAg
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3
b3JraW5nQ29udGV4dCgpID0gMDsKKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRC
cm9rZW5JbWFnZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAJKHJldmlzaW9uIDc1MTcyKQorKysgV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCkBAIC01NSw2ICs1Niw3IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShj
b25zdCBTdHJpbmcmIHUKICAgICA6IENhY2hlZFJlc291cmNlKHVybCwgSW1hZ2VSZXNvdXJjZSkK
ICAgICAsIG1faW1hZ2UoMCkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKHRoaXMs
ICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3No
b3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoVW5rbm93bik7CiB9
CkBAIC02Myw2ICs2NSw3IEBAIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShJbWFnZSogaW1hZ2Up
CiAgICAgOiBDYWNoZWRSZXNvdXJjZShTdHJpbmcoKSwgSW1hZ2VSZXNvdXJjZSkKICAgICAsIG1f
aW1hZ2UoaW1hZ2UpCiAgICAgLCBtX2RlY29kZWREYXRhRGVsZXRpb25UaW1lcih0aGlzLCAmQ2Fj
aGVkSW1hZ2U6OmRlY29kZWREYXRhRGVsZXRpb25UaW1lckZpcmVkKQorICAgICwgbV9zaG91bGRQ
YWludEJyb2tlbkltYWdlKHRydWUpCiB7CiAgICAgc2V0U3RhdHVzKENhY2hlZCk7CiAgICAgc2V0
TG9hZGluZyhmYWxzZSk7CkBAIC0xMjEsNyArMTI0LDcgQEAgSW1hZ2UqIENhY2hlZEltYWdlOjpp
bWFnZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc1B1cmdlYWJsZSgpKTsKIAotICAgIGlmIChl
cnJvck9jY3VycmVkKCkpCisgICAgaWYgKGVycm9yT2NjdXJyZWQoKSAmJiBtX3Nob3VsZFBhaW50
QnJva2VuSW1hZ2UpCiAgICAgICAgIHJldHVybiBicm9rZW5JbWFnZSgpOwogCiAgICAgaWYgKG1f
aW1hZ2UpCkBAIC0yMTcsNiArMjIwLDE1IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6Om5vdGlmeU9ic2Vy
dmVycyhjb25zdCAKICAgICAgICAgYy0+aW1hZ2VDaGFuZ2VkKHRoaXMsIGNoYW5nZVJlY3QpOwog
fQogCit2b2lkIENhY2hlZEltYWdlOjpjaGVja1Nob3VsZFBhaW50QnJva2VuSW1hZ2UoKQorewor
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcmVxdWVzdCA/IG1fcmVxdWVzdC0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+ZnJhbWUoKSA6IDA7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9zaG91bGRQYWludEJyb2tlbkltYWdlID0gZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KS0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShLVVJMKFBhcnNlZFVSTFN0cmluZywgbV91cmwpKTsK
K30KKwogdm9pZCBDYWNoZWRJbWFnZTo6Y2xlYXIoKQogewogICAgIGRlc3Ryb3lEZWNvZGVkRGF0
YSgpOwpAQCAtMjk3LDYgKzMwOSw3IEBAIHZvaWQgQ2FjaGVkSW1hZ2U6OmRhdGEoUGFzc1JlZlB0
cjxTaGFyZWQKIAogdm9pZCBDYWNoZWRJbWFnZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1
cyBzdGF0dXMpCiB7CisgICAgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAgICAgY2xl
YXIoKTsKICAgICBzZXRTdGF0dXMoc3RhdHVzKTsKICAgICBBU1NFUlQoZXJyb3JPY2N1cnJlZCgp
KTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAkocmV2aXNpb24gNzUxNzIpCisr
KyBXZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
NSw5ICs5NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IElu
dFJlY3QqIGNoYW5nZVJlY3QgPSAwKTsKICAgICB2b2lkIGRlY29kZWREYXRhRGVsZXRpb25UaW1l
ckZpcmVkKFRpbWVyPENhY2hlZEltYWdlPiopOwogICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBw
dXJnZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VGaXJzdDsgfQorICAgIHZvaWQgY2hl
Y2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7
CiAgICAgVGltZXI8Q2FjaGVkSW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOworICAg
IGJvb2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdlOwogfTsKIAogfQpJbmRleDogV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDc1MTc1KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyNSBAQAorMjAxMS0wMS0wNiAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFk
ZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hv
dWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKwor
ICAgICAgICBBZGQgYSBuZXcgcmVzb3VyY2UgbG9hZCBjbGllbnQgbWV0aG9kIChzaG91bGRQYWlu
dEJyb2tlbkltYWdlKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lkZSBpZiBXZWJDb3JlCisgICAg
ICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ugd2hlbiBhbiBpbWFnZSBm
YWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxzbyBwYXNzZXMgdGhlCisgICAg
ICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQ
YWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0
aW9uQ2FjaGluZy5tbTogQWRkZWQgY2FzZSBmb3IgcGFzc2luZyBvbmUgb2JqZWN0LgorICAgICAg
ICAoQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbik6CisgICAgICAgICog
V2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hlUmVzb3VyY2VMb2FkRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwogMjAxMS0wMS0wNCAgQ2hyaXMgRmxlaXphY2ggIDxj
ZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiA3NTE3MikKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDkgKzIzOCwxMSBAQCBwcml2
YXRlOgogICAgIE5TRGljdGlvbmFyeSAqYWN0aW9uRGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpGb3JtU3RhdGU+KSBjb25zdDsK
ICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3Q7Ci0gICAgCisKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3Jl
YXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlKGNvbnN0IFdlYkNvcmU6OktVUkwmKSBjb25zdDsKKwogICAgIFJldGFpblB0cjxX
ZWJGcmFtZT4gbV93ZWJGcmFtZTsKIAogICAgIFJldGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyPiBtX3BvbGljeUxpc3RlbmVyOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA3NTE3MikKKysrIFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQzOSw2ICs0MzksMTggQEAgYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuQXV0
aGVudGljYQogfQogI2VuZGlmCiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBh
aW50QnJva2VuSW1hZ2UoY29uc3QgS1VSTCYgaW1hZ2VVUkwpIGNvbnN0Cit7CisgICAgV2ViVmll
dyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7CisgICAgV2ViUmVzb3Vy
Y2VEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdH
ZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKKworICAgIGlm
IChpbXBsZW1lbnRhdGlvbnMtPnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkxGdW5jKSB7Cisg
ICAgICAgIE5TVVJMKiB1cmwgPSBpbWFnZVVSTDsKKyAgICAgICAgcmV0dXJuIENhbGxSZXNvdXJj
ZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oWUVTLCBpbXBsZW1lbnRhdGlvbnMtPnNob3Vs
ZFBhaW50QnJva2VuSW1hZ2VGb3JVUkxGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpz
aG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOiksIHVybCk7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmY2hhbGxlbmdlKQog
ewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwpJ
bmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLmgJKHJldmlzaW9uIDc1MTcyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAgc3RydWN0IFdlYlJlc291cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbgogICAgIElN
UCB3aWxsQ2FjaGVSZXNwb25zZUZ1bmM7CiAgICAgSU1QIHBsdWdJbkZhaWxlZFdpdGhFcnJvckZ1
bmM7CiAgICAgSU1QIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRnVuYzsKKyAgICBJTVAgc2hv
dWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTEZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2ViRnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKQEAgLTEzMiw2ICsxMzMsNyBAQCBpZCBDYWxs
UmVzb3VyY2VMb2FkRGVsZWdhdGUoSU1QLCBXZWJWaWV3CiBpZCBDYWxsUmVzb3VyY2VMb2FkRGVs
ZWdhdGUoSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIE5TSW50ZWdlciwgaWQpOwogaWQgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBpZCwgTlNJbnRlZ2Vy
LCBpZCk7CiAKK0JPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihC
T09MLCBJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxl
Z2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkKTsK
IEJPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MLCBJTVAs
IFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIGlkKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQkocmV2aXNp
b24gNzUxNzIpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hpbmcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzNSw2ICs1MzUsMTggQEAgaWQgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlKElNUCBpbXBsZW1lbgogICAgIHJldHVybiBDYWxsRGVsZWdhdGUo
aW1wbGVtZW50YXRpb24sIHNlbGYsIHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVs
ZWdhdGUsIHNlbGVjdG9yLCBvYmplY3QxLCBvYmplY3QyLCBpbnRlZ2VyLCBvYmplY3QzKTsKIH0K
IAorQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVz
dWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZpZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQg
b2JqZWN0MSkKK3sKKyAgICBpZiAoIXNlbGYtPl9wcml2YXRlLT5jYXRjaGVzRGVsZWdhdGVFeGNl
cHRpb25zKQorICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShpZCwgU0VM
LCBXZWJWaWV3ICosIGlkKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQ
cm9ncmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSk7CisgICAgQHRyeSB7Cisg
ICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIFdlYlZpZXcg
KiwgaWQpPihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVs
ZWdhdGUsIHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxKTsKKyAgICB9IEBjYXRjaChpZCBleGNlcHRp
b24pIHsKKyAgICAgICAgUmVwb3J0RGlzY2FyZGVkRGVsZWdhdGVFeGNlcHRpb24oc2VsZWN0b3Is
IGV4Y2VwdGlvbik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIEJPT0wgQ2FsbFJl
c291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihCT09MIHJlc3VsdCwgSU1QIGltcGxl
bWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0b3IsIGlkIG9iamVjdDEsIGlkIG9i
amVjdDIpCiB7CiAgICAgaWYgKCFzZWxmLT5fcHJpdmF0ZS0+Y2F0Y2hlc0RlbGVnYXRlRXhjZXB0
aW9ucykKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2Fk
RGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDc1MTcyKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlJlc291cmNlTG9hZERlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2
ICs1MywxMyBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJSZXNvdXJjZUxvYWREZWxlCiAtIChC
T09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgcmVzb3VyY2U6KGlkKWlkZW50aWZpZXIgY2Fu
QXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTooTlNVUkxQcm90ZWN0aW9uU3BhY2Ug
Kilwcm90ZWN0aW9uU3BhY2UgZm9yRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3Vy
Y2U7CiAjZW5kaWYKIAorLyohCisgQG1ldGhvZCB3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1h
Z2VGb3JVUkw6KE5TVVJMKilpbWFnZVVSTAorIEBhYnN0cmFjdCBUaGlzIG1lc3NhZ2UgaXMgc2Vu
dCB3aGVuIGFuIGltYWdlIGNhbm5vdCBiZSBkZWNvZGVkIG9yIGRpc3BsYXllZC4KKyBAcGFyYW0g
aW1hZ2VVUkwgVGhlIHVybCBvZiB0aGUgb2ZmZW5kaW5nIGltYWdlLgorIEByZXN1bHQgcmV0dXJu
IFlFUyBpZiBXZWJLaXQgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZS4KKyAq
LworLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3KilzZW5kZXIgc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZUZvclVSTDooTlNVUkwqKWltYWdlVVJMOwogQGVuZAogCiAjdW5kZWYgV2ViTlNJbnRlZ2VyCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gNzUxNzIpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1Myw2ICsxNTUzLDcgQEAgLSAo
dm9pZClfY2FjaGVSZXNvdXJjZUxvYWREZWxlZ2F0ZUltcGxlbQogICAgIGNhY2hlLT53aWxsQ2Fj
aGVSZXNwb25zZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJl
c291cmNlOndpbGxDYWNoZVJlc3BvbnNlOmZyb21EYXRhU291cmNlOikpOwogICAgIGNhY2hlLT53
aWxsU2VuZFJlcXVlc3RGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmll
dzpyZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJj
ZTopKTsKICAgICBjYWNoZS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGdW5jID0gZ2V0TWV0
aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTpzaG91bGRVc2VDcmVkZW50
aWFsU3RvcmFnZUZvckRhdGFTb3VyY2U6KSk7CisgICAgY2FjaGUtPnNob3VsZFBhaW50QnJva2Vu
SW1hZ2VGb3JVUkxGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpz
aG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOikpOwogfQogCiAtICh2b2lkKV9jYWNoZUZyYW1l
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTE3NSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDExLTAxLTA2ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisKKyAgICAgICAgQWRkIGEgcmVzb3Vy
Y2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQg
dGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgICog
ZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBu
ZzogQWRkZWQuCisgICAgICAgICogZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVs
ZWdhdGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAt
MTItMjggIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdXBwb3J0
LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdD4KKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U2hv
dWxkUGFpbnRCcm9rZW5JbWFnZShmYWxzZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2FkZWQoKSB7CisgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICB2YXIgaW1nID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2ltZycpOworICAgIC8vIFRoZSBkZWZhdWx0IGJyb2tlbiBpbWFn
ZSBoZWlnaHQgaW4gbWFjIGlzIDIwLgorICAgIHJlc3VsdC5pbm5lckhUTUwgPSBpbWcub2Zmc2V0
SGVpZ2h0ID49IDEwID8gIkZBSUwiIDogIlBBU1MiOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSh0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPGJvZHk+CitSYWRhciA4NjEwOTA4IC0gQWRk
IGEgcmVzb3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBh
aW50IHRoZSBicm9rZW4gaW1hZ2UuCis8ZGl2IGlkPSdpbWcnPgorPGltZyBpZD0iYnJva2VuIiBv
bkVycm9yPSJsb2FkZWQoKSIgb25Mb2FkPSJsb2FkZWQoKSIgc3JjPSJyZXNvdXJjZXMvYnJva2Vu
LWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIj4KKzwvZGl2PgorPGRpdiBpZD0ncmVzdWx0
Jz4KK3Jlc3VsdCB0ZXh0LgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3Jt
YXQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9i
cm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1m
b3JtYXQucG5nCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitmc2FkbGpmOTAzcTJhc2RmaWMt
PTI5cTI0O2xhc2RmCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFnZXMv
c3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFn
ZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcgQEAKK3Jlc291cmNlcy9icm9rZW4taW1h
Z2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSB3aWxsU2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVz
dCBVUkwgcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZywgbWFp
biBkb2N1bWVudCBVUkwgc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbCwgaHR0cCBt
ZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQorPHVua25vd24+IC0gZGlkRmluaXNo
TG9hZGluZworcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAt
IGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSByZXNvdXJjZXMvYnJva2VuLWltYWdl
LXdpdGgtaW52YWxpZC1mb3JtYXQucG5nLCBodHRwIHN0YXR1cyBjb2RlIDA+CityZXNvdXJjZXMv
YnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0gc2hvdWxkUGFpbnRCcm9rZW5J
bWFnZTogTk8KK1JhZGFyIDg2MTA5MDggLSBBZGQgYSByZXNvdXJjZSBkZWxlZ2F0ZSBtZXRob2Qg
dG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGJyb2tlbiBpbWFnZS4KKworUEFT
Uwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78883</attachid>
            <date>2011-01-13 19:20:33 -0800</date>
            <delta_ts>2011-02-24 14:06:31 -0800</delta_ts>
            <desc>fix style violation.</desc>
            <filename>support_broken_image.patch</filename>
            <type>text/plain</type>
            <size>20491</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc1NzQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDEtMTMgIFlvbmdqdW4g
WmhhbmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDg3ODEKKworICAgICAgICBBZGQgYSByZXNvdXJjZSBsb2FkIGRlbGVnYXRlIG1l
dGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4g
aW1hZ2UgZm9yIGZhaWxlZCBpbWFnZXMuCisKKyAgICAgICAgQWRkIGEgbmV3IHJlc291cmNlIGxv
YWQgY2xpZW50IG1ldGhvZCAoc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkuICBXZWJLaXQgY2xpZW50
IGNhbiBkZWNpZGUgaWYgV2ViQ29yZQorICAgICAgICBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQg
YnJva2VuIGltYWdlIHdoZW4gYW4gaW1hZ2UgZmFpbHMgdG8gbG9hZCBvciBkZWNvZGUuICBUaGUg
bWV0aG9kIGFsc28gcGFzc2VzIHRoZQorICAgICAgICBVUkwgb2YgdGhlIGZhaWxlZCBpbWFnZS4K
KworICAgICAgICBUZXN0OiBmYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0
ZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
OjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6Y2hlY2tTaG91bGRQYWlu
dEJyb2tlbkltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjplcnJvcik6Cisg
ICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisKIDIwMTEtMDEtMTMgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA3NTc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNiArMzA0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCkgeyB9CiAKICAgICAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdv
cmtpbmdDb250ZXh0KCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJy
b2tlbkltYWdlKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCShyZXZpc2lvbiA3NTc0OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTU1LDYgKzU2LDcgQEAgQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlKGNvbnN0IFN0cmluZyYgdQogICAgIDogQ2FjaGVkUmVzb3VyY2Uo
dXJsLCBJbWFnZVJlc291cmNlKQogICAgICwgbV9pbWFnZSgwKQogICAgICwgbV9kZWNvZGVkRGF0
YURlbGV0aW9uVGltZXIodGhpcywgJkNhY2hlZEltYWdlOjpkZWNvZGVkRGF0YURlbGV0aW9uVGlt
ZXJGaXJlZCkKKyAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogewogICAgIHNl
dFN0YXR1cyhVbmtub3duKTsKIH0KQEAgLTYzLDYgKzY1LDcgQEAgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlKEltYWdlKiBpbWFnZSkKICAgICA6IENhY2hlZFJlc291cmNlKFN0cmluZygpLCBJbWFn
ZVJlc291cmNlKQogICAgICwgbV9pbWFnZShpbWFnZSkKICAgICAsIG1fZGVjb2RlZERhdGFEZWxl
dGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmly
ZWQpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UodHJ1ZSkKIHsKICAgICBzZXRTdGF0
dXMoQ2FjaGVkKTsKICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKQEAgLTEyMSw3ICsxMjQsNyBAQCBJ
bWFnZSogQ2FjaGVkSW1hZ2U6OmltYWdlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzUHVyZ2Vh
YmxlKCkpOwogCi0gICAgaWYgKGVycm9yT2NjdXJyZWQoKSkKKyAgICBpZiAoZXJyb3JPY2N1cnJl
ZCgpICYmIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSkKICAgICAgICAgcmV0dXJuIGJyb2tlbklt
YWdlKCk7CiAKICAgICBpZiAobV9pbWFnZSkKQEAgLTIxNyw2ICsyMjAsMTUgQEAgdm9pZCBDYWNo
ZWRJbWFnZTo6bm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IAogICAgICAgICBjLT5pbWFnZUNoYW5nZWQo
dGhpcywgY2hhbmdlUmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmNoZWNrU2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9yZXF1ZXN0ID8gbV9yZXF1
ZXN0LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5mcmFtZSgpIDogMDsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2UgPSBmcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRQYWludEJyb2tlbkltYWdlKEtVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybCkpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpjbGVhcigpCiB7CiAg
ICAgZGVzdHJveURlY29kZWREYXRhKCk7CkBAIC0yOTcsNiArMzA5LDcgQEAgdm9pZCBDYWNoZWRJ
bWFnZTo6ZGF0YShQYXNzUmVmUHRyPFNoYXJlZAogCiB2b2lkIENhY2hlZEltYWdlOjplcnJvcihD
YWNoZWRSZXNvdXJjZTo6U3RhdHVzIHN0YXR1cykKIHsKKyAgICBjaGVja1Nob3VsZFBhaW50QnJv
a2VuSW1hZ2UoKTsKICAgICBjbGVhcigpOwogICAgIHNldFN0YXR1cyhzdGF0dXMpOwogICAgIEFT
U0VSVChlcnJvck9jY3VycmVkKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmgJKHJldmlzaW9uIDc1NzQ4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDkgKzk1LDExIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBub3RpZnlPYnNlcnZlcnMoY29uc3QgSW50UmVjdCogY2hhbmdlUmVj
dCA9IDApOwogICAgIHZvaWQgZGVjb2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQoVGltZXI8Q2Fj
aGVkSW1hZ2U+Kik7CiAgICAgdmlydHVhbCBQdXJnZVByaW9yaXR5IHB1cmdlUHJpb3JpdHkoKSBj
b25zdCB7IHJldHVybiBQdXJnZUZpcnN0OyB9CisgICAgdm9pZCBjaGVja1Nob3VsZFBhaW50QnJv
a2VuSW1hZ2UoKTsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBUaW1lcjxDYWNo
ZWRJbWFnZT4gbV9kZWNvZGVkRGF0YURlbGV0aW9uVGltZXI7CisgICAgYm9vbCBtX3Nob3VsZFBh
aW50QnJva2VuSW1hZ2U7CiB9OwogCiB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NTc0OCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDExLTAxLTEzICBZb25nanVuIFpo
YW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ4NzgxCisKKyAgICAgICAgQWRkIGEgcmVzb3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRo
b2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGlt
YWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAgIEFkZCBhIG5ldyByZXNvdXJjZSBsb2Fk
IGNsaWVudCBtZXRob2QgKHNob3VsZFBhaW50QnJva2VuSW1hZ2UpLiAgV2ViS2l0IGNsaWVudCBj
YW4gZGVjaWRlIGlmIFdlYkNvcmUKKyAgICAgICAgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJy
b2tlbiBpbWFnZSB3aGVuIGFuIGltYWdlIGZhaWxzIHRvIGxvYWQgb3IgZGVjb2RlLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKToKKyAgICAgICAgKHNl
dFNob3VsZFBhaW50QnJva2VuSW1hZ2VDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNo
b3VsZFBhaW50QnJva2VuSW1hZ2UpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2Vi
VmlldzpzaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOl0pOgorCiAyMDExLTAxLTEzICBBbGVq
YW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc1NzQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3
IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAsIG1faGFu
ZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSkKICAgICAsIG1faXNQcmludGluZyhm
YWxzZSkKICAgICAsIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQorICAgICwgbV9z
aG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCiAgICAgLCBtX3Rlc3RQYXRoT3JVUkwodGVzdFBh
dGhPclVSTCkKICAgICAsIG1fZXhwZWN0ZWRQaXhlbEhhc2goZXhwZWN0ZWRQaXhlbEhhc2gpCiB7
CkBAIC0xNzM2LDYgKzE3MzcsMTggQEAgc3RhdGljIEpTVmFsdWVSZWYgYWRkVXNlclN0eWxlU2hl
ZXRDYWxsYgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAor
c3RhdGljIEpTVmFsdWVSZWYgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrKEpTQ29u
dGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgTWFjIGltcGxlbWVudGF0aW9u
CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTaG91bGRQYWludEJyb2tlbkltYWdl
KEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGFw
aVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMikKQEAgLTIwNjYsNiArMjA3OSw3IEBAIEpT
U3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiYWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkiLCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFNjcm9sbGJhclBvbGljeSIsIHNldFNjcm9s
bGJhclBvbGljeUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImF1dGhlbnRpY2F0ZVNlc3Np
b24iLCBhdXRoZW50aWNhdGVTZXNzaW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0
U2hvdWxkUGFpbnRCcm9rZW5JbWFnZSIsIHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2VDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKQEAgLTIxNDAsNSArMjE1
NCwxMCBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQT1NJWExvY2FsCiAgICAgc2V0
bG9jYWxlKExDX0FMTCwgbG9jYWxlQnVmKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2Up
Cit7CisgICAgbV9zaG91bGRQYWludEJyb2tlbkltYWdlID0gc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZTsKK30KKwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0
aCA9IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3SGVp
Z2h0ID0gNjAwOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCShyZXZpc2lvbiA3NTc0OCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwMiw2ICszMDIsOSBAQCBwdWJsaWM6
CiAKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gbWFya2VyVGV4dEZvckxpc3RJdGVtKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIG5vZGVPYmplY3QpIGNvbnN0OwogCisgICAg
dm9pZCBzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGJvb2wpOworICAgIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZTsg
fQorCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFZpZXdXaWR0aDsKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgbWF4Vmlld0hlaWdodDsKIApAQCAtMzUxLDYgKzM1NCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2hhbmRsZXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZXM7CiAgICAgYm9v
bCBtX2lzUHJpbnRpbmc7CiAgICAgYm9vbCBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQ7Cisg
ICAgYm9vbCBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7CiAKICAgICBzdGQ6OnN0cmluZyBtX2F1
dGhlbnRpY2F0aW9uVXNlcm5hbWU7CiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBh
c3N3b3JkOyAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0JKHJldmlzaW9uIDc1NzQ4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNCArMjQy
LDE1IEBAIC0oTlNDYWNoZWRVUkxSZXNwb25zZSAqKSB3ZWJWaWV3OiAoV2ViVmkKICAgICByZXR1
cm4gcmVzcG9uc2U7CiB9CiAKKy0oQk9PTCl3ZWJWaWV3OiAoV2ViVmlldyopd2ViVmlldyBzaG91
bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOihOU1VSTCopaW1hZ2VVUkwKK3sKKyAgICAvLyBPbmx5
IGxvZyB0aGUgbWVzc2FnZSB3aGVuIHNob3VsZFBhaW50QnJva2VuSW1hZ2UoKSByZXR1cm5zIE5P
OyB0aGlzIGF2b2lkcyBjaGFuZ2luZyByZXN1bHRzIG9mIGxheW91dCB0ZXN0cyB3aXRoIGZhaWxl
ZAorICAgIC8vIGltYWdlcywgZS5nLiwgc2VjdXJpdHkvYmxvY2stdGVzdC1uby1wb3J0Lmh0bWwu
CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9h
ZENhbGxiYWNrcygpICYmICFnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNob3VsZFBhaW50QnJva2Vu
SW1hZ2UoKSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCIlQCAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2U6IE5PIiwgW2ltYWdlVVJMIF9k
cnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKKyAgICAgICAgcHJpbnRmKCIl
c1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQorCisgICAgcmV0dXJuIGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOworfQogQGVuZApJbmRleDog
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc1NzQ4KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMS0xMyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhh
bmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorCisg
ICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdl
YkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGlt
YWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVzb3VyY2UgbG9hZCBjbGllbnQgbWV0aG9kIChz
aG91bGRQYWludEJyb2tlbkltYWdlKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lkZSBpZiBXZWJD
b3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1hZ2Ugd2hlbiBh
biBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxzbyBwYXNzZXMg
dGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpzaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLmg6CisgICAgICAgICogV2ViVmlldy9XZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5tbTogQWRkZWQgY2FzZSBmb3IgcGFzc2luZyBvbmUgb2JqZWN0
LgorICAgICAgICAoQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbik6Cisg
ICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NhY2hlUmVzb3Vy
Y2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwogMjAxMS0wMS0xMiAgRW5yaWNhIENh
c3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkocmV2aXNpb24gNzU3NDgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw5ICsyMzgsMTEg
QEAgcHJpdmF0ZToKICAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbkRpY3Rpb25hcnkoY29uc3QgV2Vi
Q29yZTo6TmF2aWdhdGlvbkFjdGlvbiYsIFBhc3NSZWZQdHI8V2ViQ29yZTo6Rm9ybVN0YXRlPikg
Y29uc3Q7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0OwotICAg
IAorCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
UGFpbnRCcm9rZW5JbWFnZShjb25zdCBXZWJDb3JlOjpLVVJMJikgY29uc3Q7CisKICAgICBSZXRh
aW5QdHI8V2ViRnJhbWU+IG1fd2ViRnJhbWU7CiAKICAgICBSZXRhaW5QdHI8V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lcj4gbV9wb2xpY3lMaXN0ZW5lcjsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gNzU3NDgpCisr
KyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MzksNiArNDM5LDE4IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNhbkF1dGhlbnRpY2EKIH0KICNlbmRpZgogCitib29sIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmIGltYWdlVVJMKSBjb25zdAoreworICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOworICAgIFdl
YlJlc291cmNlRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBX
ZWJWaWV3R2V0UmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisK
KyAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5zaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMRnVu
YykgeworICAgICAgICBOU1VSTCogdXJsID0gaW1hZ2VVUkw7CisgICAgICAgIHJldHVybiBDYWxs
UmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKFlFUywgaW1wbGVtZW50YXRpb25z
LT5zaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTDopLCB1cmwpOworICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb2N1bWVudExvYWRlciogbG9hZGVyLCB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJmNoYWxs
ZW5nZSkKIHsKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiA3NTc0OCkKKysrIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBAIHN0cnVjdCBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb24K
ICAgICBJTVAgd2lsbENhY2hlUmVzcG9uc2VGdW5jOwogICAgIElNUCBwbHVnSW5GYWlsZWRXaXRo
RXJyb3JGdW5jOwogICAgIElNUCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUZ1bmM7CisgICAg
SU1QIHNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkxGdW5jOwogfTsKIAogc3RydWN0IFdlYkZy
YW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSB7CkBAIC0xMzIsNiArMTMzLDcgQEAg
aWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCwgV2ViVmlldwogaWQgQ2FsbFJlc291cmNl
TG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBOU0ludGVnZXIsIGlkKTsKIGlk
IENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcgKiwgU0VMLCBpZCwgaWQsIE5T
SW50ZWdlciwgaWQpOwogCitCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jv
b2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQpOwogQk9PTCBDYWxsUmVzb3VyY2VM
b2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wsIElNUCwgV2ViVmlldyAqLCBTRUwsIGlk
LCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9P
TCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkLCBpZCk7CiAKSW5kZXg6IFdlYktpdC9tYWMv
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0J
KHJldmlzaW9uIDc1NzQ4KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNiArNTM1LDE4IEBAIGlk
IENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAgaW1wbGVtZW4KICAgICByZXR1cm4gQ2FsbERl
bGVnYXRlKGltcGxlbWVudGF0aW9uLCBzZWxmLCBzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9n
cmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgb2JqZWN0MSwgb2JqZWN0MiwgaW50ZWdlciwgb2JqZWN0
Myk7CiB9CiAKK0JPT0wgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihC
T09MIHJlc3VsdCwgSU1QIGltcGxlbWVudGF0aW9uLCBXZWJWaWV3ICpzZWxmLCBTRUwgc2VsZWN0
b3IsIGlkIG9iamVjdDEpCit7CisgICAgaWYgKCFzZWxmLT5fcHJpdmF0ZS0+Y2F0Y2hlc0RlbGVn
YXRlRXhjZXB0aW9ucykKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKiko
aWQsIFNFTCwgV2ViVmlldyAqLCBpZCk+KG9iamNfbXNnU2VuZCkoc2VsZi0+X3ByaXZhdGUtPnJl
c291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3IsIHNlbGYsIG9iamVjdDEpOworICAgIEB0
cnkgeworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxCT09MICgqKShpZCwgU0VMLCBX
ZWJWaWV3ICosIGlkKT4ob2JqY19tc2dTZW5kKShzZWxmLT5fcHJpdmF0ZS0+cmVzb3VyY2VQcm9n
cmVzc0RlbGVnYXRlLCBzZWxlY3Rvciwgc2VsZiwgb2JqZWN0MSk7CisgICAgfSBAY2F0Y2goaWQg
ZXhjZXB0aW9uKSB7CisgICAgICAgIFJlcG9ydERpc2NhcmRlZERlbGVnYXRlRXhjZXB0aW9uKHNl
bGVjdG9yLCBleGNlcHRpb24pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBCT09M
IENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIElN
UCBpbXBsZW1lbnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3Qx
LCBpZCBvYmplY3QyKQogewogICAgIGlmICghc2VsZi0+X3ByaXZhdGUtPmNhdGNoZXNEZWxlZ2F0
ZUV4Y2VwdGlvbnMpCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVs
ZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291
cmNlTG9hZERlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiA3NTc0OCkKKysrIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNiArNTMsMTMgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViUmVzb3VyY2VMb2FkRGVs
ZQogLSAoQk9PTCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJlc291cmNlOihpZClpZGVudGlm
aWVyIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6KE5TVVJMUHJvdGVjdGlv
blNwYWNlICopcHJvdGVjdGlvblNwYWNlIGZvckRhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilk
YXRhU291cmNlOwogI2VuZGlmCiAKKy8qIQorIEBtZXRob2Qgd2ViVmlldzpzaG91bGRQYWludEJy
b2tlbkltYWdlRm9yVVJMOihOU1VSTCopaW1hZ2VVUkwKKyBAYWJzdHJhY3QgVGhpcyBtZXNzYWdl
IGlzIHNlbnQgd2hlbiBhbiBpbWFnZSBjYW5ub3QgYmUgZGVjb2RlZCBvciBkaXNwbGF5ZWQuCisg
QHBhcmFtIGltYWdlVVJMIFRoZSB1cmwgb2YgdGhlIG9mZmVuZGluZyBpbWFnZS4KKyBAcmVzdWx0
IHJldHVybiBZRVMgaWYgV2ViS2l0IHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1h
Z2UuCisgKi8KKy0gKEJPT0wpd2ViVmlldzooV2ViVmlldyopc2VuZGVyIHNob3VsZFBhaW50QnJv
a2VuSW1hZ2VGb3JVUkw6KE5TVVJMKilpbWFnZVVSTDsKIEBlbmQKIAogI3VuZGVmIFdlYk5TSW50
ZWdlcgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDc1NzQ4KQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTIsNiArMTU1Miw3
IEBAIC0gKHZvaWQpX2NhY2hlUmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW0KICAgICBjYWNoZS0+
d2lsbENhY2hlUmVzcG9uc2VGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2Vi
VmlldzpyZXNvdXJjZTp3aWxsQ2FjaGVSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopKTsKICAgICBj
YWNoZS0+d2lsbFNlbmRSZXF1ZXN0RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9y
KHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURh
dGFTb3VyY2U6KSk7CiAgICAgY2FjaGUtPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRnVuYyA9
IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6cmVzb3VyY2U6c2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2VGb3JEYXRhU291cmNlOikpOworICAgIGNhY2hlLT5zaG91bGRQYWlu
dEJyb2tlbkltYWdlRm9yVVJMRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdl
YlZpZXc6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTDopKTsKIH0KIAogLSAodm9pZClfY2Fj
aGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzU3
NDgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMS0wMS0xMyAgWW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFkZCBh
IHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxk
IHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAg
ICAgICAqIGZhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZv
cm1hdC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWlt
YWdlLWRlbGVnYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2lt
YWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDExLTAxLTEzICBKdXN0aW4gU2NodWggIDxqc2NodWhAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgY2hyb21pdW0gZXhwZWN0YXRpb25zIHVwZGF0ZS4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2Ut
ZGVsZWdhdGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGZhbHNlKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxv
YWRlZCgpIHsKKyAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpOworICAgIHZhciBpbWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nJyk7CisgICAg
Ly8gVGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGhlaWdodCBpbiBtYWMgaXMgMjAuCisgICAgcmVz
dWx0LmlubmVySFRNTCA9IGltZy5vZmZzZXRIZWlnaHQgPj0gMTAgPyAiRkFJTCIgOiAiUEFTUyI7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRTaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpOworICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
Ym9keT4KK1JhZGFyIDg2MTA5MDggLSBBZGQgYSByZXNvdXJjZSBkZWxlZ2F0ZSBtZXRob2QgdG8g
cXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFpbnQgdGhlIGJyb2tlbiBpbWFnZS4KKzxkaXYgaWQ9
J2ltZyc+Cis8aW1nIGlkPSJicm9rZW4iIG9uRXJyb3I9ImxvYWRlZCgpIiBvbkxvYWQ9ImxvYWRl
ZCgpIiBzcmM9InJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmci
PgorPC9kaXY+Cis8ZGl2IGlkPSdyZXN1bHQnPgorcmVzdWx0IHRleHQuCis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9icm9r
ZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0
LnBuZwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3Jlc291cmNlcy9i
cm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEgQEAKK2ZzYWRsamY5MDNxMmFzZGZpYy09MjlxMjQ7bGFzZGYKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1pbWFnZS1kZWxlZ2F0ZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
aW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJy
b2tlbi1pbWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NyBAQAorcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyAtIHdp
bGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJjZXMvYnJva2VuLWltYWdlLXdp
dGgtaW52YWxpZC1mb3JtYXQucG5nLCBtYWluIGRvY3VtZW50IFVSTCBzdXBwb3J0LWJyb2tlbi1p
bWFnZS1kZWxlZ2F0ZS5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51
bGwpCis8dW5rbm93bj4gLSBkaWRGaW5pc2hMb2FkaW5nCityZXNvdXJjZXMvYnJva2VuLWltYWdl
LXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIHJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmcsIGh0dHAg
c3RhdHVzIGNvZGUgMD4KK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1h
dC5wbmcgLSBzaG91bGRQYWludEJyb2tlbkltYWdlOiBOTworUmFkYXIgODYxMDkwOCAtIEFkZCBh
IHJlc291cmNlIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBwYWlu
dCB0aGUgYnJva2VuIGltYWdlLgorCitQQVNTCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83707</attachid>
            <date>2011-02-24 13:03:35 -0800</date>
            <delta_ts>2011-02-26 01:32:35 -0800</delta_ts>
            <desc>Addressing David&apos;s comments in the modified patch.</desc>
            <filename>support_broken_image.patch</filename>
            <type>text/plain</type>
            <size>20280</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA3OTU5NykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MzksNiArNDM5LDE4IEBACiB9CiAjZW5kaWYKIAorYm9vbCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJMJiBpbWFnZVVSTCkgY29uc3QK
K3sKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsK
KyAgICBXZWJSZXNvdXJjZURlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRp
b25zID0gV2ViVmlld0dldFJlc291cmNlTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZp
ZXcpOworCisgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZv
clVSTEZ1bmMpIHsKKyAgICAgICAgTlNVUkwqIHVybCA9IGltYWdlVVJMOworICAgICAgICByZXR1
cm4gQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihZRVMsIGltcGxlbWVu
dGF0aW9ucy0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTEZ1bmMsIHdlYlZpZXcsIEBzZWxl
Y3Rvcih3ZWJWaWV3OnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkw6KSwgdXJsKTsKKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSZjaGFsbGVuZ2UpCiB7CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IGdldFdlYlZpZXcobV93ZWJG
cmFtZS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc5NTk3KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjM5LDkgKzIzOSwxMSBAQAogICAgIE5TRGljdGlvbmFyeSAqYWN0aW9u
RGljdGlvbmFyeShjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpGb3JtU3RhdGU+KSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2Fj
aGVQYWdlKCkgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKIAorICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IFdlYkNvcmU6OktVUkwm
KSBjb25zdDsKKwogICAgIFJldGFpblB0cjxXZWJGcmFtZT4gbV93ZWJGcmFtZTsKIAogICAgIFJl
dGFpblB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyPiBtX3BvbGljeUxpc3RlbmVyOwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNzk1OTcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wMi0yNCAgWW9uZ2p1
biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUg
bWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tl
biBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVzb3VyY2Ug
bG9hZCBjbGllbnQgbWV0aG9kIChzaG91bGRQYWludEJyb2tlbkltYWdlKS4gIFdlYktpdCBjbGll
bnQgY2FuIGRlY2lkZSBpZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVs
dCBicm9rZW4gaW1hZ2Ugd2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRo
ZSBtZXRob2QgYWxzbyBwYXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdl
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAg
KFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpzaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmg6CisgICAgICAgICog
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5tbTogQWRkZWQgY2FzZSBm
b3IgcGFzc2luZyBvbmUgb2JqZWN0LgorICAgICAgICAoQ2FsbFJlc291cmNlTG9hZERlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbik6CisgICAgICAgICogV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxl
Z2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2NhY2hlUmVzb3VyY2VMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnNdKToKKwog
MjAxMS0wMi0yNCAgUGV0ZXIgS2FzdGluZyAgPHBrYXN0aW5nQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5o
CShyZXZpc2lvbiA3OTU5NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QAogICAgIElNUCB3aWxsQ2FjaGVSZXNwb25zZUZ1bmM7CiAgICAgSU1QIHBsdWdJbkZhaWxlZFdp
dGhFcnJvckZ1bmM7CiAgICAgSU1QIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlRnVuYzsKKyAg
ICBJTVAgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTEZ1bmM7CiB9OwogCiBzdHJ1Y3QgV2Vi
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKQEAgLTEzMyw2ICsxMzQsNyBA
QAogaWQgQ2FsbFJlc291cmNlTG9hZERlbGVnYXRlKElNUCwgV2ViVmlldyAqLCBTRUwsIGlkLCBO
U0ludGVnZXIsIGlkKTsKIGlkIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZShJTVAsIFdlYlZpZXcg
KiwgU0VMLCBpZCwgaWQsIE5TSW50ZWdlciwgaWQpOwogCitCT09MIENhbGxSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQpOwog
Qk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdhdGVSZXR1cm5pbmdCb29sZWFuKEJPT0wsIElNUCwg
V2ViVmlldyAqLCBTRUwsIGlkLCBpZCk7CiBCT09MIENhbGxSZXNvdXJjZUxvYWREZWxlZ2F0ZVJl
dHVybmluZ0Jvb2xlYW4oQk9PTCwgSU1QLCBXZWJWaWV3ICosIFNFTCwgaWQsIGlkLCBpZCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDc5NTk3KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTUxLDYgKzE1NTEsNyBAQAogICAgIGNhY2hlLT53aWxsQ2FjaGVSZXNwb25zZUZ1bmMgPSBn
ZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OnJlc291cmNlOndpbGxDYWNoZVJl
c3BvbnNlOmZyb21EYXRhU291cmNlOikpOwogICAgIGNhY2hlLT53aWxsU2VuZFJlcXVlc3RGdW5j
ID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpyZXNvdXJjZTp3aWxsU2Vu
ZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTopKTsKICAgICBjYWNoZS0+
c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2VGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpyZXNvdXJjZTpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZUZvckRhdGFT
b3VyY2U6KSk7CisgICAgY2FjaGUtPnNob3VsZFBhaW50QnJva2VuSW1hZ2VGb3JVUkxGdW5jID0g
Z2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpzaG91bGRQYWludEJyb2tlbklt
YWdlRm9yVVJMOikpOwogfQogCiAtICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlJlc291cmNlTG9h
ZERlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDc5NTk3KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJSZXNvdXJjZUxvYWREZWxlZ2F0ZVByaXZhdGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTMgQEAKIC0gKEJPT0wpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciByZXNvdXJjZTooaWQpaWRlbnRpZmllciBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFj
ZSBmb3JEYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZTsKICNlbmRpZgogCisv
KiEKKyBAbWV0aG9kIHdlYlZpZXc6c2hvdWxkUGFpbnRCcm9rZW5JbWFnZUZvclVSTDooTlNVUkwq
KWltYWdlVVJMCisgQGFic3RyYWN0IFRoaXMgbWVzc2FnZSBpcyBzZW50IHdoZW4gYW4gaW1hZ2Ug
Y2Fubm90IGJlIGRlY29kZWQgb3IgZGlzcGxheWVkLgorIEBwYXJhbSBpbWFnZVVSTCBUaGUgdXJs
IG9mIHRoZSBicm9rZW4gaW1hZ2UuCisgQHJlc3VsdCByZXR1cm4gWUVTIGlmIFdlYktpdCBzaG91
bGQgcGFpbnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlLgorICovCistIChCT09MKXdlYlZpZXc6
KFdlYlZpZXcqKXNlbmRlciBzaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOihOU1VSTCopaW1h
Z2VVUkw7CiBAZW5kCiAKICN1bmRlZiBXZWJOU0ludGVnZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGluZy5tbQkocmV2aXNpb24gNzk1OTcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NDksNiArNTQ5LDE4IEBACiAgICAgcmV0dXJuIENhbGxEZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbiwg
c2VsZiwgc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3Is
IG9iamVjdDEsIG9iamVjdDIsIGludGVnZXIsIG9iamVjdDMpOwogfQogCitCT09MIENhbGxSZXNv
dXJjZUxvYWREZWxlZ2F0ZVJldHVybmluZ0Jvb2xlYW4oQk9PTCByZXN1bHQsIElNUCBpbXBsZW1l
bnRhdGlvbiwgV2ViVmlldyAqc2VsZiwgU0VMIHNlbGVjdG9yLCBpZCBvYmplY3QxKQoreworICAg
IGlmICghc2VsZi0+X3ByaXZhdGUtPmNhdGNoZXNEZWxlZ2F0ZUV4Y2VwdGlvbnMpCisgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PEJPT0wgKCopKGlkLCBTRUwsIFdlYlZpZXcgKiwgaWQp
PihvYmpjX21zZ1NlbmQpKHNlbGYtPl9wcml2YXRlLT5yZXNvdXJjZVByb2dyZXNzRGVsZWdhdGUs
IHNlbGVjdG9yLCBzZWxmLCBvYmplY3QxKTsKKyAgICBAdHJ5IHsKKyAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Qk9PTCAoKikoaWQsIFNFTCwgV2ViVmlldyAqLCBpZCk+KG9iamNfbXNn
U2VuZCkoc2VsZi0+X3ByaXZhdGUtPnJlc291cmNlUHJvZ3Jlc3NEZWxlZ2F0ZSwgc2VsZWN0b3Is
IHNlbGYsIG9iamVjdDEpOworICAgIH0gQGNhdGNoKGlkIGV4Y2VwdGlvbikgeworICAgICAgICBS
ZXBvcnREaXNjYXJkZWREZWxlZ2F0ZUV4Y2VwdGlvbihzZWxlY3RvciwgZXhjZXB0aW9uKTsKKyAg
ICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogQk9PTCBDYWxsUmVzb3VyY2VMb2FkRGVsZWdh
dGVSZXR1cm5pbmdCb29sZWFuKEJPT0wgcmVzdWx0LCBJTVAgaW1wbGVtZW50YXRpb24sIFdlYlZp
ZXcgKnNlbGYsIFNFTCBzZWxlY3RvciwgaWQgb2JqZWN0MSwgaWQgb2JqZWN0MikKIHsKICAgICBp
ZiAoIXNlbGYtPl9wcml2YXRlLT5jYXRjaGVzRGVsZWdhdGVFeGNlcHRpb25zKQpJbmRleDogU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gNzk1OTcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNiBAQAorMjAxMS0wMi0yNCAgWW9uZ2p1biBaaGFuZyAgPHlv
bmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
ODc4MQorCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdhdGUgbWV0aG9kIHRvIHF1
ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSBmb3Ig
ZmFpbGVkIGltYWdlcy4KKworICAgICAgICBBZGQgYSBuZXcgcmVzb3VyY2UgbG9hZCBjbGllbnQg
bWV0aG9kIChzaG91bGRQYWludEJyb2tlbkltYWdlKS4gIFdlYktpdCBjbGllbnQgY2FuIGRlY2lk
ZSBpZiBXZWJDb3JlCisgICAgICAgIHNob3VsZCBwYWludCB0aGUgZGVmYXVsdCBicm9rZW4gaW1h
Z2Ugd2hlbiBhbiBpbWFnZSBmYWlscyB0byBsb2FkIG9yIGRlY29kZS4gIFRoZSBtZXRob2QgYWxz
byBwYXNzZXMgdGhlCisgICAgICAgIFVSTCBvZiB0aGUgZmFpbGVkIGltYWdlLgorCisgICAgICAg
IFRlc3Q6IGZhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKKwor
ICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnQ6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFn
ZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdlOjpjaGVja1Nob3VsZFBhaW50QnJva2VuSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmVycm9yKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaDoKKwogMjAxMS0wMi0yNCAgTWlzaGEgVHl1dHl1bmlr
ICA8bWljaGFlbC50eXV0eXVuaWtAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFu
ZHJlYXMgS2xpbmcuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAJKHJldmlzaW9uIDc5NTk3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNTUsNiArNTYsNyBAQAogICAgIDogQ2FjaGVkUmVz
b3VyY2UodXJsLCBJbWFnZVJlc291cmNlKQogICAgICwgbV9pbWFnZSgwKQogICAgICwgbV9kZWNv
ZGVkRGF0YURlbGV0aW9uVGltZXIodGhpcywgJkNhY2hlZEltYWdlOjpkZWNvZGVkRGF0YURlbGV0
aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogewog
ICAgIHNldFN0YXR1cyhVbmtub3duKTsKIH0KQEAgLTYzLDYgKzY1LDcgQEAKICAgICA6IENhY2hl
ZFJlc291cmNlKFN0cmluZygpLCBJbWFnZVJlc291cmNlKQogICAgICwgbV9pbWFnZShpbWFnZSkK
ICAgICAsIG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyKHRoaXMsICZDYWNoZWRJbWFnZTo6ZGVj
b2RlZERhdGFEZWxldGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1h
Z2UodHJ1ZSkKIHsKICAgICBzZXRTdGF0dXMoQ2FjaGVkKTsKICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKQEAgLTEyMCw3ICsxMjMsNyBAQAogewogICAgIEFTU0VSVCghaXNQdXJnZWFibGUoKSk7CiAK
LSAgICBpZiAoZXJyb3JPY2N1cnJlZCgpKQorICAgIGlmIChlcnJvck9jY3VycmVkKCkgJiYgbV9z
aG91bGRQYWludEJyb2tlbkltYWdlKQogICAgICAgICByZXR1cm4gYnJva2VuSW1hZ2UoKTsKIAog
ICAgIGlmIChtX2ltYWdlKQpAQCAtMjE2LDYgKzIxOSwxNSBAQAogICAgICAgICBjLT5pbWFnZUNo
YW5nZWQodGhpcywgY2hhbmdlUmVjdCk7CiB9CiAKK3ZvaWQgQ2FjaGVkSW1hZ2U6OmNoZWNrU2hv
dWxkUGFpbnRCcm9rZW5JbWFnZSgpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9yZXF1ZXN0ID8g
bV9yZXF1ZXN0LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5mcmFtZSgpIDogMDsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2Ug
PSBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5zaG91bGRQYWludEJyb2tlbkltYWdlKEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCBtX3VybCkpOworfQorCiB2b2lkIENhY2hlZEltYWdlOjpjbGVhcigp
CiB7CiAgICAgZGVzdHJveURlY29kZWREYXRhKCk7CkBAIC0yOTYsNiArMzA4LDcgQEAKIAogdm9p
ZCBDYWNoZWRJbWFnZTo6ZXJyb3IoQ2FjaGVkUmVzb3VyY2U6OlN0YXR1cyBzdGF0dXMpCiB7Cisg
ICAgY2hlY2tTaG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAgICAgY2xlYXIoKTsKICAgICBzZXRT
dGF0dXMoc3RhdHVzKTsKICAgICBBU1NFUlQoZXJyb3JPY2N1cnJlZCgpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCShyZXZpc2lvbiA3OTU5NykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC05NSw5ICs5NSwxMSBAQAogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKGNvbnN0IEludFJl
Y3QqIGNoYW5nZVJlY3QgPSAwKTsKICAgICB2b2lkIGRlY29kZWREYXRhRGVsZXRpb25UaW1lckZp
cmVkKFRpbWVyPENhY2hlZEltYWdlPiopOwogICAgIHZpcnR1YWwgUHVyZ2VQcmlvcml0eSBwdXJn
ZVByaW9yaXR5KCkgY29uc3QgeyByZXR1cm4gUHVyZ2VGaXJzdDsgfQorICAgIHZvaWQgY2hlY2tT
aG91bGRQYWludEJyb2tlbkltYWdlKCk7CiAKICAgICBSZWZQdHI8SW1hZ2U+IG1faW1hZ2U7CiAg
ICAgVGltZXI8Q2FjaGVkSW1hZ2U+IG1fZGVjb2RlZERhdGFEZWxldGlvblRpbWVyOworICAgIGJv
b2wgbV9zaG91bGRQYWludEJyb2tlbkltYWdlOwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDc5NTk3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
NSw2ICszMDUsOCBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCkg
eyB9CiAKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRQYWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9pbWFn
ZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2Vu
LWltYWdlLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBA
CityZXNvdXJjZXMvYnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nIC0gd2lsbFNl
bmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIHJlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1p
bnZhbGlkLWZvcm1hdC5wbmcsIG1haW4gZG9jdW1lbnQgVVJMIHN1cHBvcnQtYnJva2VuLWltYWdl
LWRlbGVnYXRlLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
Kzx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK3Jlc291cmNlcy9icm9rZW4taW1hZ2Utd2l0
aC1pbnZhbGlkLWZvcm1hdC5wbmcgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2Ug
cmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZywgaHR0cCBzdGF0
dXMgY29kZSAwPgorcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBu
ZyAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2U6IE5PCitSYWRhciA4NjEwOTA4IC0gQWRkIGEgcmVz
b3VyY2UgZGVsZWdhdGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRo
ZSBicm9rZW4gaW1hZ2UuCisKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1
cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9pbWFnZXMvc3VwcG9ydC1icm9rZW4taW1hZ2UtZGVsZWdhdGUuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRl
bGVnYXRlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRTaG91bGRQYWludEJyb2tlbkltYWdlKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvYWRlZCgpIHsKKyAgICB2YXIgcmVz
dWx0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpOworICAgIHZhciBpbWcgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1nJyk7CisgICAgLy8gVGhlIGRlZmF1bHQgYnJva2Vu
IGltYWdlIGhlaWdodCBpbiBtYWMgaXMgMjAuCisgICAgcmVzdWx0LmlubmVySFRNTCA9IGltZy5v
ZmZzZXRIZWlnaHQgPj0gMTAgPyAiRkFJTCIgOiAiUEFTUyI7CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTaG91
bGRQYWludEJyb2tlbkltYWdlKHRydWUpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBmYWlsZWQoKSB7CisgICAgdmFyIHJl
c3VsdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKTsKKyAgICAvLyBSZXBvcnQg
J0ZBSUwnIGlmIFdlYkNvcmUgZGlkbid0IHJlcG9ydCBvbkVycm9yIG9uIGJyb2tlbiBpbWFnZS4K
KyAgICByZXN1bHQuaW5uZXJIVE1MID0gIkZBSUwiOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0U2hvdWxkUGFp
bnRCcm9rZW5JbWFnZSh0cnVlKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5
RG9uZSgpOworICAgIH0gCit9Cis8L3NjcmlwdD4KKzxib2R5PgorUmFkYXIgODYxMDkwOCAtIEFk
ZCBhIHJlc291cmNlIGRlbGVnYXRlIG1ldGhvZCB0byBxdWVyeSBpZiBXZWJDb3JlIHNob3VsZCBw
YWludCB0aGUgYnJva2VuIGltYWdlLgorPGRpdiBpZD0naW1nJz4KKzxpbWcgaWQ9ImJyb2tlbiIg
b25FcnJvcj0ibG9hZGVkKCkiIG9uTG9hZD0iZmFpbGVkKCkiIHNyYz0icmVzb3VyY2VzL2Jyb2tl
bi1pbWFnZS13aXRoLWludmFsaWQtZm9ybWF0LnBuZyI+Cis8L2Rpdj4KKzxkaXYgaWQ9J3Jlc3Vs
dCc+CityZXN1bHQgdGV4dC4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQtZm9y
bWF0LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ltYWdlcy9yZXNvdXJjZXMv
YnJva2VuLWltYWdlLXdpdGgtaW52YWxpZC1mb3JtYXQucG5nCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9pbWFnZXMvcmVzb3VyY2VzL2Jyb2tlbi1pbWFnZS13aXRoLWludmFsaWQt
Zm9ybWF0LnBuZwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZnNhZGxqZjkwM3EyYXNkZmlj
LT0yOXEyNDtsYXNkZgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNzk1OTcpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wMi0yNCAgWW9u
Z2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00ODc4MQorCisgICAgICAgIEFkZCBhIHJlc291cmNlIGxvYWQgZGVsZWdh
dGUgbWV0aG9kIHRvIHF1ZXJ5IGlmIFdlYkNvcmUgc2hvdWxkIHBhaW50IHRoZSBkZWZhdWx0IGJy
b2tlbiBpbWFnZSBmb3IgZmFpbGVkIGltYWdlcy4KKworICAgICAgICAqIGZhc3QvaW1hZ2VzL3Jl
c291cmNlcy9icm9rZW4taW1hZ2Utd2l0aC1pbnZhbGlkLWZvcm1hdC5wbmc6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvaW1hZ2VzL3N1cHBvcnQtYnJva2VuLWltYWdlLWRlbGVnYXRlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L2ltYWdlcy9zdXBwb3J0LWJyb2tlbi1p
bWFnZS1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDExLTAyLTI0ICBBbm5hIENh
dmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBPamFu
IFZhZmFpLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbQkocmV2aXNpb24gNzk1OTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0NSw0ICsyNDUs
MTUgQEAKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKKy0oQk9PTCl3ZWJWaWV3OiAoV2ViVmll
dyopd2ViVmlldyBzaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJMOihOU1VSTCopaW1hZ2VVUkwK
K3sKKyAgICAvLyBPbmx5IGxvZyB0aGUgbWVzc2FnZSB3aGVuIHNob3VsZFBhaW50QnJva2VuSW1h
Z2UoKSByZXR1cm5zIE5POyB0aGlzIGF2b2lkcyBjaGFuZ2luZyByZXN1bHRzIG9mIGxheW91dCB0
ZXN0cyB3aXRoIGZhaWxlZAorICAgIC8vIGltYWdlcywgZS5nLiwgc2VjdXJpdHkvYmxvY2stdGVz
dC1uby1wb3J0Lmh0bWwuCisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpICYmICFnTGF5b3V0VGVzdENvbnRyb2xsZXItPnNo
b3VsZFBhaW50QnJva2VuSW1hZ2UoKSkgeworICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHNob3VsZFBhaW50QnJva2VuSW1hZ2U6IE5P
IiwgW2ltYWdlVVJMIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKKyAg
ICAgICAgcHJpbnRmKCIlc1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CisgICAgfQorCisgICAg
cmV0dXJuIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSgpOwor
fQogQGVuZApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNzk1OTcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAKICAgICAs
IG1faGFuZGxlc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlcyhmYWxzZSkKICAgICAsIG1faXNQcmlu
dGluZyhmYWxzZSkKICAgICAsIG1fZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCh0cnVlKQorICAg
ICwgbV9zaG91bGRQYWludEJyb2tlbkltYWdlKHRydWUpCiAgICAgLCBtX3Rlc3RQYXRoT3JVUkwo
dGVzdFBhdGhPclVSTCkKICAgICAsIG1fZXhwZWN0ZWRQaXhlbEhhc2goZXhwZWN0ZWRQaXhlbEhh
c2gpCiB7CkBAIC0xNzgwLDYgKzE3ODEsMTggQEAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNob3VsZFBhaW50QnJv
a2VuSW1hZ2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8g
SGFzIE1hYyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVz
dENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxl
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0
U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50
c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQor
CiBzdGF0aWMgSlNWYWx1ZVJlZiBhcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENvdW50ICE9IDIpCkBA
IC0yMTI3LDYgKzIxNDAsNyBAQAogICAgICAgICB7ICJhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSIsIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAic2V0U2Nyb2xsYmFyUG9saWN5Iiwgc2V0U2Nyb2xsYmFyUG9saWN5Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiYXV0aGVudGljYXRlU2Vzc2lvbiIsIGF1dGhlbnRpY2F0ZVNl
c3Npb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRTaG91bGRQYWludEJyb2tlbklt
YWdlIiwgc2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgMCwgMCwgMCB9CiAgICAgfTsKIApAQCAtMjIxNiw1ICsyMjMwLDEwIEBACiAgICAgcmV0dXJu
IG1fVVJMc1RvUmVkaXJlY3Rbb3JpZ2luXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sIHNob3VsZFBhaW50QnJva2VuSW1hZ2Up
Cit7CisgICAgbV9zaG91bGRQYWludEJyb2tlbkltYWdlID0gc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZTsKK30KKwogY29uc3QgdW5zaWduZWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6Om1heFZpZXdXaWR0
aCA9IDgwMDsKIGNvbnN0IHVuc2lnbmVkIExheW91dFRlc3RDb250cm9sbGVyOjptYXhWaWV3SGVp
Z2h0ID0gNjAwOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oCShyZXZpc2lvbiA3OTU5NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwNyw2ICszMDcsOSBAQAogCiAgICAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IG1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdDsKIAorICAgIHZvaWQgc2V0
U2hvdWxkUGFpbnRCcm9rZW5JbWFnZShib29sKTsKKyAgICBib29sIHNob3VsZFBhaW50QnJva2Vu
SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZFBhaW50QnJva2VuSW1hZ2U7IH0KKwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhWaWV3V2lkdGg7CiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIG1heFZpZXdIZWlnaHQ7CiAKQEAgLTM1OCw2ICszNjEsNyBAQAogICAgIGJvb2wgbV9o
YW5kbGVzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VzOwogICAgIGJvb2wgbV9pc1ByaW50aW5nOwog
ICAgIGJvb2wgbV9kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkOworICAgIGJvb2wgbV9zaG91bGRQ
YWludEJyb2tlbkltYWdlOwogCiAgICAgc3RkOjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblVzZXJu
YW1lOwogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsgCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3
OTU5NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDExLTAyLTI0ICBZb25nanVuIFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4NzgxCisKKyAgICAgICAgQWRkIGEgcmVz
b3VyY2UgbG9hZCBkZWxlZ2F0ZSBtZXRob2QgdG8gcXVlcnkgaWYgV2ViQ29yZSBzaG91bGQgcGFp
bnQgdGhlIGRlZmF1bHQgYnJva2VuIGltYWdlIGZvciBmYWlsZWQgaW1hZ2VzLgorCisgICAgICAg
IEFkZCBhIG5ldyByZXNvdXJjZSBsb2FkIGNsaWVudCBtZXRob2QgKHNob3VsZFBhaW50QnJva2Vu
SW1hZ2UpLiAgV2ViS2l0IGNsaWVudCBjYW4gZGVjaWRlIGlmIFdlYkNvcmUKKyAgICAgICAgc2hv
dWxkIHBhaW50IHRoZSBkZWZhdWx0IGJyb2tlbiBpbWFnZSB3aGVuIGFuIGltYWdlIGZhaWxzIHRv
IGxvYWQgb3IgZGVjb2RlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RD
b250cm9sbGVyKToKKyAgICAgICAgKHNldFNob3VsZFBhaW50QnJva2VuSW1hZ2VDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRTaG91bGRQYWludEJyb2tlbkltYWdlKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3VsZFBhaW50QnJva2VuSW1hZ2UpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1b
UmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpzaG91bGRQYWludEJyb2tlbkltYWdlRm9yVVJM
Ol0pOgorCiAyMDExLTAyLTI0ICBBbmRyZXcgV2lsc29uICA8YXR3aWxzb25AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3OTU3MC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>