<?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>99660</bug_id>
          
          <creation_ts>2012-10-17 16:54:49 -0700</creation_ts>
          <short_desc>checkbox to toggle FPS counter in the inspector&apos;s settings</short_desc>
          <delta_ts>2012-11-13 21:53:35 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>egraether</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>brianderson</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>egraether</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>nduca</cc>
    
    <cc>peter+ews</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>skaslev</cc>
    
    <cc>timothy</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>744793</commentid>
    <comment_count>0</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-17 16:54:49 -0700</bug_when>
    <thetext>toggle FPS counter option</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744840</commentid>
    <comment_count>1</comment_count>
      <attachid>169310</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-17 17:27:58 -0700</bug_when>
    <thetext>Created attachment 169310
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744841</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 17:29:52 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744852</commentid>
    <comment_count>3</comment_count>
      <attachid>169310</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-17 17:43:52 -0700</bug_when>
    <thetext>Comment on attachment 169310
Patch

Attachment 169310 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14424298</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744885</commentid>
    <comment_count>4</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-17 18:16:17 -0700</bug_when>
    <thetext>test does not pass, because of dependency on the associated chromium patch: https://codereview.chromium.org/11189037/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744899</commentid>
    <comment_count>5</comment_count>
      <attachid>169310</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-17 19:06:36 -0700</bug_when>
    <thetext>Comment on attachment 169310
Patch

Attachment 169310 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14400643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744912</commentid>
    <comment_count>6</comment_count>
      <attachid>169310</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-17 19:33:38 -0700</bug_when>
    <thetext>Comment on attachment 169310
Patch

Attachment 169310 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14400649</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746119</commentid>
    <comment_count>7</comment_count>
      <attachid>169310</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-10-19 01:27:03 -0700</bug_when>
    <thetext>Comment on attachment 169310
Patch

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

&gt; Source/WebCore/page/ChromeClient.h:367
&gt; +        virtual void setShowFPSCounter(bool show) { }

Given this is only called by inspector, I think it would be better to plumb it through InspectorClient.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3939
&gt; +            // NOTE: disabled for &apos;show FPS counter&apos; option in WebInspector
&gt; +            // if (layerTreeViewSettings.showFPSCounter || layerTreeViewSettings.showPlatformLayerTree) {

Please remove the code instead of commenting it out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746442</commentid>
    <comment_count>8</comment_count>
      <attachid>169648</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-19 10:51:00 -0700</bug_when>
    <thetext>Created attachment 169648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746449</commentid>
    <comment_count>9</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-19 10:59:58 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 169310 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169310&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/ChromeClient.h:367
&gt; &gt; +        virtual void setShowFPSCounter(bool show) { }
&gt; 
&gt; Given this is only called by inspector, I think it would be better to plumb it through InspectorClient.

I will have a look at this.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3939
&gt; &gt; +            // NOTE: disabled for &apos;show FPS counter&apos; option in WebInspector
&gt; &gt; +            // if (layerTreeViewSettings.showFPSCounter || layerTreeViewSettings.showPlatformLayerTree) {
&gt; 
&gt; Please remove the code instead of commenting it out.

I agree, this was just temporary. It is solved in a different way in the new Patch, assuring that the fontAtlas is only loaded when used.

Thank you for your remarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746464</commentid>
    <comment_count>10</comment_count>
      <attachid>169648</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 11:13:09 -0700</bug_when>
    <thetext>Comment on attachment 169648
Patch

Attachment 169648 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14465529</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746486</commentid>
    <comment_count>11</comment_count>
      <attachid>169648</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-19 11:31:53 -0700</bug_when>
    <thetext>Comment on attachment 169648
Patch

Attachment 169648 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14455620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746587</commentid>
    <comment_count>12</comment_count>
      <attachid>169648</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-19 13:14:52 -0700</bug_when>
    <thetext>Comment on attachment 169648
Patch

Attachment 169648 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14460579</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746824</commentid>
    <comment_count>13</comment_count>
      <attachid>169736</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-19 18:24:17 -0700</bug_when>
    <thetext>Created attachment 169736
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746830</commentid>
    <comment_count>14</comment_count>
      <attachid>169736</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-19 18:41:13 -0700</bug_when>
    <thetext>Comment on attachment 169736
Patch

Attachment 169736 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14456738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746854</commentid>
    <comment_count>15</comment_count>
      <attachid>169736</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-19 19:30:54 -0700</bug_when>
    <thetext>Comment on attachment 169736
Patch

Attachment 169736 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14459739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746971</commentid>
    <comment_count>16</comment_count>
      <attachid>169736</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-10-20 06:57:03 -0700</bug_when>
    <thetext>Comment on attachment 169736
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:724
&gt; +    m_state-&gt;setBoolean(PageAgentState::showFPSCounter, show);

should we restore this value in InspectorPageAgent::restore() ?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:854
&gt; +#endif

#else
    UNUSED_PARAM(show);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747313</commentid>
    <comment_count>17</comment_count>
      <attachid>169736</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-10-22 01:48:28 -0700</bug_when>
    <thetext>Comment on attachment 169736
Patch

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

&gt; Source/WebCore/inspector/front-end/Settings.js:61
&gt; +    isAcceleratedCompositingActive: false

is that a setting?

&gt; Source/WebCore/inspector/front-end/inspector.js:370
&gt; +    PageAgent.isAcceleratedCompositingActive(WebInspector._initializeCapability.bind(WebInspector, &quot;isAcceleratedCompositingActive&quot;, null));

I don&apos;t think it&apos;s appropriate use for capabilities -- a capability is seen a constant property of particular combination of embedder, platform and enviroment, not something that may vary from page to page or even within a page lifetime. You probably want to check the platform supports accelerated compositing and can display FPS overlay.

&gt; Source/WebCore/inspector/front-end/inspector.js:481
&gt; +    else if (Capabilities.showFPSCounter)
&gt; +        WebInspector.settings.showFPSCounter.set(true);

Could you explain the intent behind these lines?

&gt; Source/WebKit/chromium/src/InspectorClientImpl.cpp:200
&gt; +bool InspectorClientImpl::isAcceleratedCompositingActive()
&gt; +{
&gt; +    return m_inspectedWebView-&gt;isAcceleratedCompositingActive(); 
&gt; +}

So we know whether the accelerated compositing is active at some point in time. What if it changes later?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748663</commentid>
    <comment_count>18</comment_count>
      <attachid>169736</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-10-23 08:19:57 -0700</bug_when>
    <thetext>Comment on attachment 169736
Patch

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

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:839
&gt; +bool WebViewImpl::getShowFPSCounter()

name this &quot;showFPSCounter()&quot;

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:846
&gt; +#if USE(ACCELERATED_COMPOSITING)

chromium code always has ACCELERATED_COMPOSITING enabled, so this is not needed here.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:852
&gt; +        m_layerTreeView-&gt;setShowFPSCounter(show);
&gt; +        if (show)
&gt; +            loadFontAtlas();

Can we loadFontAtlas() first so we can DCHECK that the atlas exists when turning on the FPS counter?

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3953
&gt; +            if (settingsImpl()-&gt;showFPSCounter())
&gt; +                setShowFPSCounter(true);

Why is this here? If settingsImpl()-&gt;showFPSCounter() is true, doesn&apos;t that mean that setShowFPSCounter(true) was already called (since it is calling settingsImpl()-&gt;setShowFPSCounter(show))?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749068</commentid>
    <comment_count>19</comment_count>
      <attachid>170253</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-23 15:42:31 -0700</bug_when>
    <thetext>Created attachment 170253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749072</commentid>
    <comment_count>20</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-23 15:50:14 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 169736 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169736&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorPageAgent.cpp:724
&gt; &gt; +    m_state-&gt;setBoolean(PageAgentState::showFPSCounter, show);
&gt; 
&gt; should we restore this value in InspectorPageAgent::restore() ?

I removed this line again. It was there because I copied the implementation of the &apos;showPaintRects&apos; setting. I could not track down in which cases InspectorPageAgent::restore() is called. Is there a reason to save and restore &apos;showFPSCounter&apos;?

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:854
&gt; &gt; +#endif
&gt; 
&gt; #else
&gt;     UNUSED_PARAM(show);

This change was not necessary. This condition now contains only the call to &apos;loadFontAtlas()&apos;, because this method was declared under the same condition in WebViewImpl.h

thank you</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749109</commentid>
    <comment_count>21</comment_count>
      <attachid>170253</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-23 16:19:02 -0700</bug_when>
    <thetext>Comment on attachment 170253
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:716
&gt; +void InspectorPageAgent::syncShowFPSCounter(ErrorString* errorString, bool inParam, bool* outParam)

This method synchronizes the &apos;showFPSCounter&apos; setting between inspector and compositor. It is called during the setup of the inspector. The &apos;inParam&apos; is true if &apos;showFPSCounter&apos; was activated with the inspector in the last session and got saved to localStorage with value &apos;true&apos;.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:718
&gt; +    *outParam = inParam || m_client-&gt;isShowFPSCounterFlagSet();

Setting the outParam assures that the checkbox in the inspector shows &apos;checked&apos; in case &apos;showFPSCounter&apos; was activated with the command-line flag.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:719
&gt; +    if (*outParam)

This condition assures that fontAtlas and HUDLayer are only created when needed.

&gt; Source/WebCore/inspector/front-end/Settings.js:60
&gt; +    isForceCompositingModeEnabled: false

Due to remarks of reviewers the checkbox for &apos;showFPSCounter&apos; now only shows up if &apos;force compositing mode&apos; is enabled. This value does not change during a session and as it is loaded asynchronous I found it is the cleanest way to put it here. Please let know if there are better places.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:844
&gt; +    return settingsImpl()-&gt;showFPSCounter();

At the moment I read the command-line flag from the settings of the &apos;WebViewImpl&apos;. I could not find an easy way to read it from the command-line flags directly.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:851
&gt; +#if USE(ACCELERATED_COMPOSITING)

This condition is here, because &apos;loadFontAtlas()&apos; was declared within the same condition in &apos;WebViewImpl.h&apos;, so this avoids possible build breaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749115</commentid>
    <comment_count>22</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-23 16:26:18 -0700</bug_when>
    <thetext>(In reply to comment #17)
I addressed your concerns in Patch #4 and explained my revised implementation in Comment #21. Thank you for your remarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749119</commentid>
    <comment_count>23</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-10-23 16:29:48 -0700</bug_when>
    <thetext>(In reply to comment #18)
All these suggestions were also addressed in Patch #4 and explained in Comment #21. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749145</commentid>
    <comment_count>24</comment_count>
      <attachid>170253</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-23 17:20:56 -0700</bug_when>
    <thetext>Comment on attachment 170253
Patch

Attachment 170253 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14500746</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749150</commentid>
    <comment_count>25</comment_count>
      <attachid>170253</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 17:25:48 -0700</bug_when>
    <thetext>Comment on attachment 170253
Patch

Attachment 170253 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14539060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754583</commentid>
    <comment_count>26</comment_count>
      <attachid>171500</attachid>
    <who name="">egraether</who>
    <bug_when>2012-10-30 12:27:51 -0700</bug_when>
    <thetext>Created attachment 171500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758697</commentid>
    <comment_count>27</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-11-05 10:55:54 -0800</bug_when>
    <thetext>@caseq, mind taking a look?

ews failures should resolve when http://codereview.chromium.org/11189037/ lands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759616</commentid>
    <comment_count>28</comment_count>
      <attachid>171500</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-06 06:34:43 -0800</bug_when>
    <thetext>Comment on attachment 171500
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:342
&gt; +                &quot;name&quot;: &quot;syncShowFPSCounter&quot;,
&gt; +                &quot;description&quot;: &quot;Synchronizes the showFPSCounter setting with the backend&quot;,

I think we&apos;re going to get rid of the about:flags flag for the FPS counter eventually, so let&apos;s not expose the complexity of syncing different values for the option into the inspector protocol. How about just ORing the values of the command line flag with the value of inspector option?

&gt; Source/WebCore/inspector/Inspector.json:444
&gt; +                &quot;name&quot;: &quot;isForceCompositingModeEnabled&quot;,

I think the conditions of whether we can show FPS counter may vary per embedder, so hard-coding the limitations of chromium implementation into front-end and adding protocol methods to support this does not seem fair. Can we instead expose the capability, i.e. canShowFPSCounter() and ignore the fact that chromium can only do this while accelerated compositing is on, perhaps just add a warning text to the option in the UI?

&gt; Source/WebCore/inspector/InspectorClient.h:82
&gt; +    virtual bool isShowFPSCounterFlagSet() { return false; }

I suggest we drop this.

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3988
&gt; +void WebViewImpl::loadFontAtlas()

nit: loadFontAtlasIfNecessary()

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3991
&gt; +    if (!m_isFontAtlasLoaded) {

nit: we prefer early bail-outs, i.e.
if (m_isFontAtlasLoaded)
    return;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759943</commentid>
    <comment_count>29</comment_count>
      <attachid>172629</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-06 12:05:15 -0800</bug_when>
    <thetext>Created attachment 172629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759947</commentid>
    <comment_count>30</comment_count>
      <attachid>172629</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-06 12:11:37 -0800</bug_when>
    <thetext>Comment on attachment 172629
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:722
&gt; +    *outParam = m_page-&gt;settings()-&gt;forceCompositingMode();

I renamed the capability check to canShowFPSCounter, but I&apos;m not yet sure where to put the check for compositing mode best, so that it fits chromium and works for other embedders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759950</commentid>
    <comment_count>31</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-11-06 12:18:12 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 171500 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171500&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/Inspector.json:342
&gt; &gt; +                &quot;name&quot;: &quot;syncShowFPSCounter&quot;,
&gt; &gt; +                &quot;description&quot;: &quot;Synchronizes the showFPSCounter setting with the backend&quot;,
&gt; 
&gt; I think we&apos;re going to get rid of the about:flags flag for the FPS counter eventually, so let&apos;s not expose the complexity of syncing different values for the option into the inspector protocol. How about just ORing the values of the command line flag with the value of inspector option?

I removed the syncing.

&gt; &gt; Source/WebCore/inspector/Inspector.json:444
&gt; &gt; +                &quot;name&quot;: &quot;isForceCompositingModeEnabled&quot;,
&gt; 
&gt; I think the conditions of whether we can show FPS counter may vary per embedder, so hard-coding the limitations of chromium implementation into front-end and adding protocol methods to support this does not seem fair. Can we instead expose the capability, i.e. canShowFPSCounter() and ignore the fact that chromium can only do this while accelerated compositing is on, perhaps just add a warning text to the option in the UI?

I did the renaming and put a comment about this in the new patch.

&gt; &gt; Source/WebCore/inspector/InspectorClient.h:82
&gt; &gt; +    virtual bool isShowFPSCounterFlagSet() { return false; }
&gt; 
&gt; I suggest we drop this.

dropped, it was used in the syncing.

&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3988
&gt; &gt; +void WebViewImpl::loadFontAtlas()
&gt; 
&gt; nit: loadFontAtlasIfNecessary()
&gt; 
&gt; &gt; Source/WebKit/chromium/src/WebViewImpl.cpp:3991
&gt; &gt; +    if (!m_isFontAtlasLoaded) {
&gt; 
&gt; nit: we prefer early bail-outs, i.e.
&gt; if (m_isFontAtlasLoaded)
&gt;     return;

both nits implemented

please have a look at the new patch, thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761749</commentid>
    <comment_count>32</comment_count>
      <attachid>172629</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-08 07:08:29 -0800</bug_when>
    <thetext>Comment on attachment 172629
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:722
&gt;&gt; +    *outParam = m_page-&gt;settings()-&gt;forceCompositingMode();
&gt; 
&gt; I renamed the capability check to canShowFPSCounter, but I&apos;m not yet sure where to put the check for compositing mode best, so that it fits chromium and works for other embedders.

Do you think we should only support FPS counters if compositing is forced? I thought that would be almost never for the majority of the users. So my ideas was that we perhaps should always show the checkbos for chrome, but only honor it when in accelerated compositing (whether forced or not).

&gt; Source/WebCore/inspector/InspectorPageAgent.h:113
&gt; +    virtual void canShowFPSCounter(ErrorString*, bool* outParam);

drop outParam in declaration, just bool*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762010</commentid>
    <comment_count>33</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-11-08 11:43:08 -0800</bug_when>
    <thetext>I think making the fps counter chrome only makes sense.

But, I think that its wasted effort to make the fps counter work when we are is software mode. We would have to make a page overlay version of it, and do custom plumbing for fps for the software mode. And, it is our plan to end-of-life software mode EVERYWHERE. As in, chrome will only EVER use force compositing mode. This is already the case on windows canary, android and cros. Linux and MacOS will follow suit in 6 months, I expect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762032</commentid>
    <comment_count>34</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-08 12:01:59 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; I think making the fps counter chrome only makes sense.

I&apos;m not suggesting we implement it on any other platform, but given that part of it is in WebCore, it would be fair to assume other platforms may (eventually) implement it. Hence we just check the capability, and the platform returns whether it can do it or not.

&gt; But, I think that its wasted effort to make the fps counter work when we are is software mode.

I&apos;m not suggesting this either, in my view it&apos;s just a matter of whether we disable the checkbox if compositing is not forced or just ignore its value if compositing is not used at the moment.

&gt; And, it is our plan to end-of-life software mode EVERYWHERE. As in, chrome will only EVER use force compositing mode.

Just out of curiosity, what about those with black-listed GPUs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762042</commentid>
    <comment_count>35</comment_count>
    <who name="">egraether</who>
    <bug_when>2012-11-08 12:14:19 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; I think making the fps counter chrome only makes sense.
&gt; 
&gt; I&apos;m not suggesting we implement it on any other platform, but given that part of it is in WebCore, it would be fair to assume other platforms may (eventually) implement it. Hence we just check the capability, and the platform returns whether it can do it or not.

I agree. So I just plumb the canShowFPSCounter request to InspectorClient and InspectorClientImpl returns the force compositing mode flag then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762056</commentid>
    <comment_count>36</comment_count>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-08 12:26:24 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #34)
&gt; &gt; (In reply to comment #33)
&gt; &gt; &gt; I think making the fps counter chrome only makes sense.
&gt; &gt; 
&gt; &gt; I&apos;m not suggesting we implement it on any other platform, but given that part of it is in WebCore, it would be fair to assume other platforms may (eventually) implement it. Hence we just check the capability, and the platform returns whether it can do it or not.
&gt; 
&gt; I agree. So I just plumb the canShowFPSCounter request to InspectorClient and InspectorClientImpl returns the force compositing mode flag then?

That&apos;s certainly an option, but I was rather thinking of always returning true for chrome, so that we still let those that have compositing on some pages but don&apos;t have it forced use it whenever compositing is active. There probably wob&apos;t be any difference once, as Nat says, compositing would be forced everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762089</commentid>
    <comment_count>37</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-11-08 12:54:31 -0800</bug_when>
    <thetext>
Have you considered plumbing for the frontend to say to the agent &quot;do you support showing an fps counter&quot;?


&gt; I&apos;m not suggesting this either, in my view it&apos;s just a matter of whether we disable the checkbox if compositing is not forced or just ignore its value if compositing is not used at the moment.
I&apos;m totally fine ignoring its value. That probably wont upset people too much...


&gt; Just out of curiosity, what about those with black-listed GPUs?
We&apos;re going to have a software fallback to force compositing mode, 124671. Force compositing mode will be on but we render the compositing tree with software.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762090</commentid>
    <comment_count>38</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2012-11-08 12:54:53 -0800</bug_when>
    <thetext>Oh, derp derp derp. I can&apos;t keep up with y&apos;all. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762366</commentid>
    <comment_count>39</comment_count>
      <attachid>173158</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-08 17:31:02 -0800</bug_when>
    <thetext>Created attachment 173158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762373</commentid>
    <comment_count>40</comment_count>
      <attachid>173158</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-08 17:35:01 -0800</bug_when>
    <thetext>Comment on attachment 173158
Patch

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

&gt; Source/WebCore/inspector/InspectorClient.h:83
&gt; +    virtual bool canShowFPSCounter() { return false; }

Made false the default.

&gt; Source/WebCore/inspector/InspectorPageAgent.h:113
&gt; +    virtual void canShowFPSCounter(ErrorString*, bool*);

Dropped the outParam.

&gt; Source/WebKit/chromium/src/InspectorClientImpl.cpp:205
&gt; +    return true;

Chromium returns true;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762904</commentid>
    <comment_count>41</comment_count>
      <attachid>173158</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-11-09 05:49:56 -0800</bug_when>
    <thetext>Comment on attachment 173158
Patch

LGTM. Pavel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762935</commentid>
    <comment_count>42</comment_count>
      <attachid>173158</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-09 06:12:19 -0800</bug_when>
    <thetext>Comment on attachment 173158
Patch

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

Please fix nits prior to landing.

&gt; Source/WebCore/inspector/Inspector.json:351
&gt; +                    { &quot;name&quot;: &quot;result&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;True for showing the FPS counter&quot; }

I do understand that you copied the one above, but we should not call input parameter &quot;result&quot;, it should be &quot;enabled&quot; or &quot;show&quot;.

&gt;&gt; Source/WebCore/inspector/InspectorClient.h:83
&gt;&gt; +    virtual bool canShowFPSCounter() { return false; }
&gt; 
&gt; Made false the default.

I would follow the pattern above and reverse the order (canShow, then show). You should also move these above to after overrideDeviceMetrics

&gt;&gt; Source/WebCore/inspector/InspectorPageAgent.h:113
&gt;&gt; +    virtual void canShowFPSCounter(ErrorString*, bool*);
&gt; 
&gt; Dropped the outParam.

Also reverse order.

&gt; Source/WebKit/chromium/src/InspectorClientImpl.h:86
&gt; +    virtual bool canShowFPSCounter();

reverse

&gt; Source/WebKit/chromium/src/WebViewImpl.cpp:4030
&gt; +void WebViewImpl::loadFontAtlasIfNecessary()

The order of declaration should match the order of definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763069</commentid>
    <comment_count>43</comment_count>
      <attachid>173319</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-09 09:11:26 -0800</bug_when>
    <thetext>Created attachment 173319
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763082</commentid>
    <comment_count>44</comment_count>
      <attachid>173319</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-09 09:21:54 -0800</bug_when>
    <thetext>Comment on attachment 173319
Patch

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

resolved the nits:

&gt; Source/WebCore/inspector/Inspector.json:351
&gt; +                    { &quot;name&quot;: &quot;show&quot;, &quot;type&quot;: &quot;boolean&quot;, &quot;description&quot;: &quot;True if the FPS count can be shown&quot; }

reordered and renamed return values

&gt; Source/WebCore/inspector/InspectorClient.h:75
&gt; +    virtual bool canShowFPSCounter() { return false; }

reordered and moved up

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:714
&gt; +void InspectorPageAgent::canShowFPSCounter(ErrorString*, bool* outParam)

reordered

&gt; Source/WebCore/inspector/InspectorPageAgent.h:112
&gt; +    virtual void canShowFPSCounter(ErrorString*, bool*);

reordered

&gt; Source/WebKit/chromium/src/InspectorClientImpl.cpp:166
&gt; +bool InspectorClientImpl::canShowFPSCounter()

reordered and moved up

&gt; Source/WebKit/chromium/src/InspectorClientImpl.h:80
&gt; +    virtual bool canShowFPSCounter();

reordered and moved up

&gt; Source/WebKit/chromium/src/WebViewImpl.h:654
&gt; +    void loadFontAtlasIfNecessary();

The declaration and definition order is a bit chaotic in WebViewImpl. I moved the declaration right after setIsAcceleratedCompositingActive() to match the definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763186</commentid>
    <comment_count>45</comment_count>
      <attachid>173319</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-09 11:22:09 -0800</bug_when>
    <thetext>Comment on attachment 173319
Patch

Rejecting attachment 173319 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/Platform/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/14770709</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763272</commentid>
    <comment_count>46</comment_count>
      <attachid>173319</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-09 13:30:12 -0800</bug_when>
    <thetext>Comment on attachment 173319
Patch

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

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:721
&gt; +    m_client-&gt;setShowFPSCounter(show);

Ok, now that I look at it, I can see that there are two important pieces missing. Sorry for not spotting them earlier:

1) You need to m_client-&gt;setShowFPSCounter(false) from disable(ErrorString).
It is necessary to remove the FPS counter when inspector is closed. No inspector settings should affect running page when inspector is closed.

2) You need to store enabled state in the m_state via m_state-&gt;setBoolean(PageAgentState::showFPSCounter, show) here. 
Then, in enable(ErrorString) you should check it via m_state-&gt;getBoolean and in case it is true, you should m_client-&gt;setShowFPSCounter(true);

This code path will be used in case when navigation changes renderer process. You basically store your settings in the m_state cookie that is then passed into the restore of the other renderer renderer. 

You can follow the setScriptExecutionDisabled and mimic its behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763414</commentid>
    <comment_count>47</comment_count>
      <attachid>173387</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-09 16:02:44 -0800</bug_when>
    <thetext>Created attachment 173387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763421</commentid>
    <comment_count>48</comment_count>
      <attachid>173387</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-09 16:08:20 -0800</bug_when>
    <thetext>Comment on attachment 173387
Patch

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

I thought it was nice that the FPS counter stays, but I understand why it should get disabled.
Thank you very much for the instructions.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:370
&gt; +    bool showFPSCounter = m_state-&gt;getBoolean(PageAgentState::pageAgentShowFPSCounter);

restoring the setting

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:381
&gt; +    setShowFPSCounter(0, false);

disabling the setting

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:725
&gt; +    m_state-&gt;setBoolean(PageAgentState::pageAgentShowFPSCounter, show);

saving the setting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763687</commentid>
    <comment_count>49</comment_count>
      <attachid>173387</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-10 11:28:53 -0800</bug_when>
    <thetext>Comment on attachment 173387
Patch

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

&gt; Source/WebCore/inspector/front-end/SettingsScreen.js:277
&gt; +        p.appendChild(this._createCheckboxSetting(WebInspector.UIString(&quot;Show FPS meter&quot;), WebInspector.settings.showFPSCounter));

One last nit prior to landing: please add this new string into WebCore/English.lproj/localizedStrings.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764645</commentid>
    <comment_count>50</comment_count>
      <attachid>173683</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-12 12:04:13 -0800</bug_when>
    <thetext>Created attachment 173683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765418</commentid>
    <comment_count>51</comment_count>
      <attachid>173683</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 02:25:55 -0800</bug_when>
    <thetext>Comment on attachment 173683
Patch

Clearing flags on attachment: 173683

Committed r134391: &lt;http://trac.webkit.org/changeset/134391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765419</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 02:26:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765674</commentid>
    <comment_count>53</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-13 09:08:59 -0800</bug_when>
    <thetext>Reverted r134391 for reason:

Speculative rollout, trying to fix browser_tests failure.

Committed r134427: &lt;http://trac.webkit.org/changeset/134427&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766256</commentid>
    <comment_count>54</comment_count>
      <attachid>174041</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-13 17:59:00 -0800</bug_when>
    <thetext>Created attachment 174041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766269</commentid>
    <comment_count>55</comment_count>
      <attachid>174041</attachid>
    <who name="">egraether</who>
    <bug_when>2012-11-13 18:09:52 -0800</bug_when>
    <thetext>Comment on attachment 174041
Patch

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

I&apos;m sorry for the inconvenience.

&gt; Source/WebCore/inspector/InspectorPageAgent.cpp:728
&gt; +    if (mainFrame() &amp;&amp; mainFrame()-&gt;view())

This condition fixes the failing Chromium tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766412</commentid>
    <comment_count>56</comment_count>
      <attachid>174041</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 21:53:28 -0800</bug_when>
    <thetext>Comment on attachment 174041
Patch

Clearing flags on attachment: 174041

Committed r134542: &lt;http://trac.webkit.org/changeset/134542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766413</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-13 21:53:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169310</attachid>
            <date>2012-10-17 17:27:58 -0700</date>
            <delta_ts>2012-10-19 10:50:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121017172644.patch</filename>
            <type>text/plain</type>
            <size>14892</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NGNkNjAwOTVjMTYy
OTRlMmNkMjA2YjBhZjBiNjMzMzU1MDJlMjlhLi4yNzAyODEzZDU3YjY4ZjE2Y2I3MjNlMGQ1YTdh
OTg4OTNiMzFjYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0xMC0xNyAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFz
IGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9u
cyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaDoKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorCiAyMDEyLTEwLTEzICBDaHJp
cyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViQXVkaW9CdXMgbmVl
ZHMgc3VwcG9ydCBmb3IgcmVzaXppbmcgYnVzIHRvIGEgc21hbGxlciBzaXplCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggZTQ0ZGVkMWU0ZGRmMmM0NGNjOGNhZGE4NTg2Mzc3ZTM0OGYwNGQ3NS4uNDhmMzQ3NTQ5Nzhk
OWQwMTY0ZjVkNWYxNzVlM2FhMWIxMWU0NmZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBA
CisyMDEyLTEwLTE3ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgor
CisgICAgICAgIHRvZ2dsZSBGUFMgY291bnRlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUg
Y2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rp
b24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChQYWdlQWdlbnRTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3Vu
dGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlLmdldCBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2Vk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAg
KiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50Ojpz
ZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChDaHJvbWVDbGllbnQpOgorCiAyMDEyLTEwLTE2
ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29t
PgogCiAgICAgICAgIEltcGxlbWVudCB0ZXN0UnVubmVyLmR1bXBTZWxlY3Rpb25SZWN0KCkgaW4g
V2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA5YjhlNjBiNWFi
ODg1NzE2Nzg1YTBmNzA3YTUwNjk4Y2RiMWJhMDdjLi5jYmEwY2NiNzk1MTEwNGFhMmViZjEyNjcy
ZDg1MmMxZGMzZDNiZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2
IEBACisyMDEyLTEwLTE3ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29t
PgorCisgICAgICAgIHRvZ2dsZSBGUFMgY291bnRlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
Vmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRTaG93RlBTQ291
bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBs
Lmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBs
Lmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMTAtMTYgIFNoZXJpZmYgQm90ICA8
d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuICBSb2xs
ZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
clRyZWVWaWV3LmgKaW5kZXggOWM5NWFkMmQzZTRkNDg4MGE3NzUyOWZhYzYxNjhiZjk1M2RhYzQ4
Ny4uYzI3NzBkYTI2NjYxOTdmMDYzOTM1NWNhYWY2OGYwOGNhNjI4NmNiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTEx
Niw2ICsxMTYsOCBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdXNlQW5jaG9yIGlzIGZhbHNlLCBkZXN0
aW5hdGlvbiBpcyB0aGUgZmluYWwgdG9wLWxlZnQgc2Nyb2xsIHBvc2l0aW9uLgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydFBhZ2VTY2FsZUFuaW1hdGlvbihjb25zdCBXZWJQb2ludCYgZGVzdGluYXRp
b24sIGJvb2wgdXNlQW5jaG9yLCBmbG9hdCBuZXdQYWdlU2NhbGUsIGRvdWJsZSBkdXJhdGlvblNl
YykgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpID0gMDsK
KwogCiAgICAgLy8gRmxvdyBjb250cm9sIGFuZCBzY2hlZHVsaW5nIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KaW5kZXggMDUxYWJhNDk1N2Y4ZjNmNzBiZTFkMzI5N2I1YjgxM2JlYTIwYWE4YS4uNGVh
MzI5MmQ1ODU0OWJkZWZjNmFiZjAyNGUwYjk2YmIwMjk5ODZhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzM4LDYgKzMzOCwxNCBAQAogICAgICAgICAgICAg
ICAgICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNldFNob3dGUFNDb3VudGVyIiwKKyAgICAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMgdGhhdCBiYWNrZW5kIGRpc3BsYXlzIHRoZSBmcmFtZXJh
dGUiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogInJlc3VsdCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAi
VHJ1ZSBmb3Igc2hvd2luZyB0aGUgZnJhbWVyYXRlIiB9CisgICAgICAgICAgICAgICAgXSwKKyAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMiLAog
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIGlmIHNjcmlwdHMgY2Fu
IGJlIGV4ZWN1dGVkIGluIHRoZSBwYWdlLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IDc4ODY4NWIxZTdiMmVkY2FhZWNiNjcxZGE0M2JiYjI4NGU2MGUzZGMuLmNjMGMyNTBmNmM5
NGMxMjY5MmY5OWViMTdkYTk1NTFjOGRlODNhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgog
I2luY2x1ZGUgIkNhY2hlZFNjcmlwdC5oIgorI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUg
IkNocm9tZUNsaWVudC5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlscy5oIgogI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkNvb2tpZUphci5oIgpAQCAtOTMsNiArOTUsNyBAQCBz
dGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZVtdID0gInBhZ2VB
Z2VudFNjcmVlbkhlaWdodE92ZXJyaQogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rm9udFNj
YWxlRmFjdG9yT3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVycmlkZSI7
CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRGaXRXaW5kb3dbXSA9ICJwYWdlQWdlbnRGaXRX
aW5kb3ciOwogc3RhdGljIGNvbnN0IGNoYXIgc2hvd1BhaW50UmVjdHNbXSA9ICJzaG93UGFpbnRS
ZWN0cyI7CitzdGF0aWMgY29uc3QgY2hhciBzaG93RlBTQ291bnRlcltdID0gInNob3dGUFNDb3Vu
dGVyIjsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogc3RhdGljIGNvbnN0IGNoYXIgdG91Y2hF
dmVudEVtdWxhdGlvbkVuYWJsZWRbXSA9ICJ0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZCI7CiAj
ZW5kaWYKQEAgLTcxMyw2ICs3MTYsMTMgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNo
b3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogICAgICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQoreworICAg
IG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnNob3dGUFNDb3VudGVyLCBzaG93
KTsKKyAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hv
dyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JT
dHJpbmcqLCBQYWdlQ29tbWFuZEhhbmRsZXI6OlJlc3VsdDo6RW51bSogc3RhdHVzKQogewogICAg
IGJvb2wgZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCBlNTRiYjcyNTdjZjE5ZmQ5
NWIwNjBkMGI5YzljMTA5N2ZiNTQzNzg1Li4yYzAwNzkxYzg3NTU3ODE2YTE4NzI3NTFhZTVmZWZl
ODA4ZGFjYTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5P
dmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2
b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3aWR0aCwgaW50
IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93
KTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5n
KiwgUGFnZUNvbW1hbmRIYW5kbGVyOjpSZXN1bHQ6OkVudW0qKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0R2VvbG9jYXRpb25PdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IGRvdWJs
ZSosIGNvbnN0IGRvdWJsZSosIGNvbnN0IGRvdWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggY2M5OGI0Y2Q1MDAwZDViZDhmNTAz
MzljOTBkZTU0Njg1OWRiYzMzNC4uYzUzNTBjOWFjMTIxYjlkYzg3NGIwOWRkZjNhY2Y3ZjQ2Yzg3
YmQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0
aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdz
LmpzCkBAIC05NSw2ICs5NSw3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLnNob3dTY3JpcHRGb2xkZXJzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93U2Ny
aXB0Rm9sZGVycyIsIHRydWUpOwogICAgIHRoaXMuZW11bGF0ZVRvdWNoRXZlbnRzID0gdGhpcy5j
cmVhdGVTZXR0aW5nKCJlbXVsYXRlVG91Y2hFdmVudHMiLCBmYWxzZSk7CiAgICAgdGhpcy5zaG93
UGFpbnRSZWN0cyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1BhaW50UmVjdHMiLCBmYWxzZSk7
CisgICAgdGhpcy5zaG93RlBTQ291bnRlciA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd0ZQU0Nv
dW50ZXIiLCBmYWxzZSk7CiAgICAgdGhpcy5zaG93U2hhZG93RE9NID0gdGhpcy5jcmVhdGVTZXR0
aW5nKCJzaG93U2hhZG93RE9NIiwgZmFsc2UpOwogICAgIHRoaXMuem9vbUxldmVsID0gdGhpcy5j
cmVhdGVTZXR0aW5nKCJ6b29tTGV2ZWwiLCAwKTsKICAgICB0aGlzLnNhdmVkVVJMcyA9IHRoaXMu
Y3JlYXRlU2V0dGluZygic2F2ZWRVUkxzIiwge30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXggZjU3ZTNlODAyMmI1
N2NlMWNkYzI3ZGI3NDMxNmYwMzAxYjE2YzNkMC4uYWQ0Mjg0YzViYWU5NDU2MzgzMjJkYmViNDg4
ZGVlNjliNmYzMWMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5nc1NjcmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCkBAIC0yNzEsNiArMjcxLDggQEAgV2ViSW5zcGVjdG9y
LkdlbmVyaWNTZXR0aW5nc1RhYiA9IGZ1bmN0aW9uKCkKICAgICBwID0gdGhpcy5fYXBwZW5kU2Vj
dGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbmRlcmluZyIpKTsKICAgICBwLmFwcGVuZENo
aWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNo
b3cgcGFpbnQgcmVjdGFuZ2xlcyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1BhaW50UmVj
dHMpKTsKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMuYWRkQ2hhbmdl
TGlzdGVuZXIodGhpcy5fc2hvd1BhaW50UmVjdHNDaGFuZ2VkLCB0aGlzKTsKKyAgICBwLmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
InNob3cgRlBTIGRpc3BsYXkiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVy
KSk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmFkZENoYW5nZUxp
c3RlbmVyKHRoaXMuX3Nob3dGUFNDb3VudGVyQ2hhbmdlZCwgdGhpcyk7CiAKICAgICBwID0gdGhp
cy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMiKSk7CiAgICAg
cC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTaG93IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRG
b2xkZXJzKSk7CkBAIC0zMDMsNiArMzA1LDExIEBAIFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGlu
Z3NUYWIucHJvdG90eXBlID0gewogICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMo
V2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzLmdldCgpKTsKICAgICB9LAogCisg
ICAgX3Nob3dGUFNDb3VudGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgUGFn
ZUFnZW50LnNldFNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291
bnRlci5nZXQoKSk7CisgICAgfSwKKwogICAgIF91cGRhdGVTY3JpcHREaXNhYmxlZENoZWNrYm94
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBleGVjdXRpb25TdGF0dXNDYWxs
YmFjayhlcnJvciwgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCAyZWU2MGJlMTg3NzRkY2I5YWI5YzA0ODgyNDJhM2RhNjkz
NTVlYTY0Li4zMzE2ZWMzM2ExNjQzODU3ZTZiNzdkOTFhNDM2YzgwYWRjYTIyZDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDcz
LDYgKzQ3Myw5IEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9
IGZ1bmN0aW9uKCkKICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3Rz
LmdldCgpKQogICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHModHJ1ZSk7CiAKKyAg
ICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmdldCgpKQorICAgICAg
ICBQYWdlQWdlbnQuc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CisKICAgICBpZiAoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmphdmFTY3JpcHREaXNhYmxlZC5nZXQoKSkKICAgICAgICAgUGFnZUFnZW50
LnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKHRydWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAppbmRleCA2YTM2MzFkMjI3OWNkNjAxZWViMzA0ZWU0MGM1Yzk3ZDc3OTE3OGI5Li4z
MDUxMjViZjU5NmE3YWY4MWVhYjcxZDhiYjA2MGQzZThlNWQzOWNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgKQEAgLTM2NCw2ICszNjQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdmlydHVhbCBGbG9hdFNpemUgbWluaW11bVdpbmRvd1NpemUoKSBjb25zdCB7IHJl
dHVybiBGbG9hdFNpemUoMTAwLCAxMDApOyB9OwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG93RlBTQ291bnRlcihib29sIHNob3cpIHsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSB7IH0KICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlldy5oCmluZGV4IGI3NzhmMjk2YTRlMzJiMWNjY2NiMzM3MTc2NDE2NGY5MjBl
M2QyZjkuLjBhZDgzZGZlYWE4MWIyYTQyYmIwMzEyYTkxZmViMjRkNWQwNjYyNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTQ2Nyw2ICs0NjcsOCBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3Rpb25FZGl0YWJsZSgpIGNvbnN0ID0gMDsK
IAorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKSA9IDA7CisKICAgICAv
LyBCZW5jaG1hcmtpbmcgc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0KiBi
ZW5jaG1hcmtTdXBwb3J0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCA2NTgxMGI5MGMyZmE4NzE0YjUyYjRl
NjU3Mzc0Njc0ZWUzMjljNjM1Li5mYjE1OTVjNjZjNzIyMDQ1NTI0Yjk2YWMwZTUwZmIwMGU1NzE5
NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBs
LmNwcApAQCAtMTE0NSw0ICsxMTQ1LDkgQEAgdm9pZCBOYXZpZ2F0b3JDb250ZW50VXRpbHNDbGll
bnRJbXBsOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcihjb25zdCBTdHJpbmcmIHNjaGUKIH0gCiAj
ZW5kaWYKIAordm9pZCBDaHJvbWVDbGllbnRJbXBsOjpzZXRTaG93RlBTQ291bnRlcihib29sIHNo
b3cpCit7CisgICAgbV93ZWJWaWV3LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9DaHJvbWVDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVD
bGllbnRJbXBsLmgKaW5kZXggZjk5NjgzMWY2MWQ5Mjk1NmQ0NjFlNWVjN2YzNThkZjZhZTA3NTRk
NC4uY2UzMTQ1N2E3MzYzZWQxMDBmNDJmNzRiYjY1ZmM5MTU0ZDEwMmU3MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaApAQCAtMjIzLDYgKzIyMyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNQb2ludGVyTG9ja2VkKCk7CiAjZW5kaWYK
IAorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKTsKKwogcHJpdmF0ZToK
ICAgICBXZWJOYXZpZ2F0aW9uUG9saWN5IGdldE5hdmlnYXRpb25Qb2xpY3koKTsKICAgICB2b2lk
IGdldFBvcHVwTWVudUluZm8oV2ViQ29yZTo6UG9wdXBDb250YWluZXIqLCBXZWJQb3B1cE1lbnVJ
bmZvKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXgg
ZDZiZjk0Yjk2NzYzOTg0Nzk3NDZkOGIzMzE3YzA3MTkxMzg5NWYwNi4uMGFmYWZhYTU5MzM5YmY1
YTY0ZjZjMDM2ODVhMTBjMTIyOWQyNjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtODM2LDYgKzgzNiwxMSBAQCBXZWJWaWV3QmVuY2htYXJrU3Vw
cG9ydCogV2ViVmlld0ltcGw6OmJlbmNobWFya1N1cHBvcnQoKQogICAgIHJldHVybiAmbV9iZW5j
aG1hcmtTdXBwb3J0OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlcihi
b29sIHNob3cpCit7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTaG93RlBTQ291bnRlcihzaG93
KTsKK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKChldmVudC50eXBlID09IFdlYklucHV0RXZl
bnQ6OlJhd0tleURvd24pCkBAIC0zOTMwLDEzICszOTM1LDE0IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
ICAgICAgICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKICAgICAgICAgICAgIC8vIE9ubHkg
YWxsb2NhdGUgdGhlIGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFk
cy11cCBkaXNwbGF5LgotICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93
RlBTQ291bnRlciB8fCBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVl
KSB7CisgICAgICAgICAgICAvLyBOT1RFOiBkaXNhYmxlZCBmb3IgJ3Nob3cgRlBTIGNvdW50ZXIn
IG9wdGlvbiBpbiBXZWJJbnNwZWN0b3IKKyAgICAgICAgICAgIC8vIGlmIChsYXllclRyZWVWaWV3
U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0
Zm9ybUxheWVyVHJlZSkgewogICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2Vi
Vmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKSBpbml0aWFs
aXplIGZvbnQgYXRsYXMiKTsKICAgICAgICAgICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFi
bGVbMTI4XTsKICAgICAgICAgICAgICAgICBpbnQgZm9udEhlaWdodDsKICAgICAgICAgICAgICAg
ICBTa0JpdG1hcCBiaXRtYXAgPSBXZWJDb3JlOjpDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5l
cmF0ZUZvbnRBdGxhcyhhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKICAgICAgICAgICAg
ICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFi
bGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gfQogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIo
KTsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0NzkwN2YxMjQx
N2UzZjIyMGFjOGIwMGY5MzYwYWVmYWFhMGRhZjQyLi5hN2YwY2QwYzEwMWJkYzkyMTYzNTcyM2M4
ODRjZTI1ZTUzN2ZhMDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTMwNiw2ICszMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVu
Y2htYXJrU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29s
KTsKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2ls
bEJlZ2luRnJhbWUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169648</attachid>
            <date>2012-10-19 10:51:00 -0700</date>
            <delta_ts>2012-10-19 18:24:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121019104943.patch</filename>
            <type>text/plain</type>
            <size>17211</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NGNkNjAwOTVjMTYy
OTRlMmNkMjA2YjBhZjBiNjMzMzU1MDJlMjlhLi5hNzMyOTAxZGFmYjY3OTU4NWFiMDA1MDg5MTk0
NWQwYzI5MzI1NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0xOSAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yLgorCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFNldHRp
bmdzKToKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorCiAyMDEyLTEwLTEzICBDaHJpcyBS
b2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViQXVkaW9CdXMgbmVlZHMg
c3VwcG9ydCBmb3IgcmVzaXppbmcgYnVzIHRvIGEgc21hbGxlciBzaXplCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTQ0ZGVkMWU0ZGRmMmM0NGNjOGNhZGE4NTg2Mzc3ZTM0OGYwNGQ3NS4uOTA1NDMxZTY5ZWNmYjE0
NGE5OTJhMTg3NDRhMTBkMGMyNzY3ZGUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisy
MDEyLTEwLTE5ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisg
ICAgICAgIHRvZ2dsZSBGUFMgY291bnRlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjaGVja2JveCB0byB0aGUgV2ViIEluc3Bl
Y3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIGNvbXBvc2l0
b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChQYWdlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRp
bmdzVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90
eXBlLmdldCBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAg
IChDaHJvbWVDbGllbnQpOgorCiAyMDEyLTEwLTE2ICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxy
YXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCB0ZXN0
UnVubmVyLmR1bXBTZWxlY3Rpb25SZWN0KCkgaW4gV2ViS2l0VGVzdFJ1bm5lcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA5YjhlNjBiNWFiODg1NzE2Nzg1YTBmNzA3YTUwNjk4Y2RiMWJh
MDdjLi4wNmE4MmU0YTUwMTE3ZmM3OThjZDFjNjJjMGRhMzk5ZmZiNmZiMGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTEwLTE5ICBFYmVyaGFyZCBH
cmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIHRvZ2dsZSBGUFMgY291
bnRlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk5NjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkZWQgYSBjaGVja2JveCB0byB0aGUgV2ViIEluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRv
Z2dsZSB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIGNvbXBvc2l0b3IuCisKKyAgICAgICAgKiBwdWJs
aWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICogc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnRJbXBsOjpzZXRTaG93
RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmg6CisgICAgICAgIChDaHJvbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0Nv
dW50ZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KyAgICAgICAgKFdlYlZpZXdJbXBsKToKKwogMjAxMi0xMC0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBE
RVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXll
clRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaAppbmRleCA5Yzk1YWQyZDNlNGQ0ODgwYTc3NTI5ZmFjNjE2OGJmOTUzZGFjNDg3Li44
ZjBkMzU3MDY0ZjE2M2JmMTYyNGRjYmVjM2FlNmI2OGRjY2FjZWFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtNDYsNyAr
NDYsNiBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFNldHRpbmdzIHsKICAgICAgICAgU2V0dGluZ3Mo
KQogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2UpCi0gICAgICAgICAgICAs
IHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRy
ZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJlY3RzKGZhbHNlKQogICAgICAgICAg
ICAgLCByZW5kZXJWU3luY0VuYWJsZWQodHJ1ZSkKQEAgLTU3LDcgKzU2LDYgQEAgcHVibGljOgog
ICAgICAgICB9CiAKICAgICAgICAgYm9vbCBhY2NlbGVyYXRlUGFpbnRpbmc7Ci0gICAgICAgIGJv
b2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hvd1BsYXRmb3JtTGF5ZXJUcmVlOwog
ICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwogICAgICAgICBib29sIHJlbmRlclZTeW5jRW5h
YmxlZDsKQEAgLTExNiw2ICsxMTQsMTIgQEAgcHVibGljOgogICAgIC8vIElmIHVzZUFuY2hvciBp
cyBmYWxzZSwgZGVzdGluYXRpb24gaXMgdGhlIGZpbmFsIHRvcC1sZWZ0IHNjcm9sbCBwb3NpdGlv
bi4KICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRQYWdlU2NhbGVBbmltYXRpb24oY29uc3QgV2ViUG9p
bnQmIGRlc3RpbmF0aW9uLCBib29sIHVzZUFuY2hvciwgZmxvYXQgbmV3UGFnZVNjYWxlLCBkb3Vi
bGUgZHVyYXRpb25TZWMpID0gMDsKIAorICAgIC8vIFRvZ2dsZXMgdGhlIEZQUyBjb3VudGVyIGlu
IHRoZSBIVUQgbGF5ZXIKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkg
PSAwOworCisgICAgLy8gQ2hlY2tzIGlmIGEgZm9udCBhdGxhcyB3YXMgbG9hZGVkIGFuZCBwYXNz
ZWQgdG8gdGhlIEhVRCBsYXllcgorICAgIHZpcnR1YWwgYm9vbCBoYXNGb250QXRsYXMoKSA9IDA7
CisKIAogICAgIC8vIEZsb3cgY29udHJvbCBhbmQgc2NoZWR1bGluZyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCmluZGV4IDA1MWFiYTQ5NTdmOGYzZjcwYmUxZDMyOTdiNWI4MTNiZWEyMGFhOGEuLjRl
YTMyOTJkNTg1NDliZGVmYzZhYmYwMjRlMGI5NmJiMDI5OTg2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMzOCw2ICszMzgsMTQgQEAKICAgICAgICAgICAg
ICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAibmFtZSI6ICJzZXRTaG93RlBTQ291bnRlciIsCisgICAgICAgICAgICAgICAg
ImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkaXNwbGF5cyB0aGUgZnJhbWVy
YXRlIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjog
IlRydWUgZm9yIHNob3dpbmcgdGhlIGZyYW1lcmF0ZSIgfQorICAgICAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzIiwK
ICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyBpZiBzY3JpcHRzIGNh
biBiZSBleGVjdXRlZCBpbiB0aGUgcGFnZS4iLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjog
WwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApp
bmRleCA3ODg2ODViMWU3YjJlZGNhYWVjYjY3MWRhNDNiYmIyODRlNjBlM2RjLi5jYzBjMjUwZjZj
OTRjMTI2OTJmOTllYjE3ZGE5NTUxYzhkZTgzYWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJDYWNoZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRl
ICJDaHJvbWVDbGllbnQuaCIKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbHMuaCIKICNpbmNs
dWRlICJDb29raWUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKQEAgLTkzLDYgKzk1LDcgQEAg
c3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGVbXSA9ICJwYWdl
QWdlbnRTY3JlZW5IZWlnaHRPdmVycmkKIHN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEZvbnRT
Y2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGUi
Owogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0V2luZG93W10gPSAicGFnZUFnZW50Rml0
V2luZG93IjsKIHN0YXRpYyBjb25zdCBjaGFyIHNob3dQYWludFJlY3RzW10gPSAic2hvd1BhaW50
UmVjdHMiOworc3RhdGljIGNvbnN0IGNoYXIgc2hvd0ZQU0NvdW50ZXJbXSA9ICJzaG93RlBTQ291
bnRlciI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHN0YXRpYyBjb25zdCBjaGFyIHRvdWNo
RXZlbnRFbXVsYXRpb25FbmFibGVkW10gPSAidG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQiOwog
I2VuZGlmCkBAIC03MTMsNiArNzE2LDEzIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRT
aG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdlLT5t
YWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFn
ZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdykKK3sKKyAg
ICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpzaG93RlBTQ291bnRlciwgc2hv
dyk7CisgICAgbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNldFNob3dGUFNDb3VudGVyKHNo
b3cpOworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZSgpOworfQor
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9y
U3RyaW5nKiwgUGFnZUNvbW1hbmRIYW5kbGVyOjpSZXN1bHQ6OkVudW0qIHN0YXR1cykKIHsKICAg
ICBib29sIGRpc2FibGVkQnlTY3JpcHRDb250cm9sbGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKaW5kZXggZTU0YmI3MjU3Y2YxOWZk
OTViMDYwZDBiOWM5YzEwOTdmYjU0Mzc4NS4uMmMwMDc5MWM4NzU1NzgxNmExODcyNzUxYWU1ZmVm
ZTgwOGRhY2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
T3ZlcnJpZGVEZXZpY2VNZXRyaWNzKEVycm9yU3RyaW5nKiwgYm9vbCopOwogICAgIHZpcnR1YWwg
dm9pZCBzZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGRvdWJsZSBmb250U2NhbGVGYWN0b3IsIGJvb2wgZml0V2luZG93KTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hv
dyk7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmlu
ZyosIFBhZ2VDb21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEdlb2xvY2F0aW9uT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3Vi
bGUqLCBjb25zdCBkb3VibGUqLCBjb25zdCBkb3VibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGNjOThiNGNkNTAwMGQ1YmQ4ZjUw
MzM5YzkwZGU1NDY4NTlkYmMzMzQuLmM1MzUwYzlhYzEyMWI5ZGM4NzRiMDlkZGYzYWNmN2Y0NmM4
N2JkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtOTUsNiArOTUsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigp
CiAgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1Nj
cmlwdEZvbGRlcnMiLCB0cnVlKTsKICAgICB0aGlzLmVtdWxhdGVUb3VjaEV2ZW50cyA9IHRoaXMu
Y3JlYXRlU2V0dGluZygiZW11bGF0ZVRvdWNoRXZlbnRzIiwgZmFsc2UpOwogICAgIHRoaXMuc2hv
d1BhaW50UmVjdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dQYWludFJlY3RzIiwgZmFsc2Up
OworICAgIHRoaXMuc2hvd0ZQU0NvdW50ZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dGUFND
b3VudGVyIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1NoYWRvd0RPTSA9IHRoaXMuY3JlYXRlU2V0
dGluZygic2hvd1NoYWRvd0RPTSIsIGZhbHNlKTsKICAgICB0aGlzLnpvb21MZXZlbCA9IHRoaXMu
Y3JlYXRlU2V0dGluZygiem9vbUxldmVsIiwgMCk7CiAgICAgdGhpcy5zYXZlZFVSTHMgPSB0aGlz
LmNyZWF0ZVNldHRpbmcoInNhdmVkVVJMcyIsIHt9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmluZGV4IGY1N2UzZTgwMjJi
NTdjZTFjZGMyN2RiNzQzMTZmMDMwMWIxNmMzZDAuLmFkNDI4NGM1YmFlOTQ1NjM4MzIyZGJlYjQ4
OGRlZTY5YjZmMzFjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtMjcxLDYgKzI3MSw4IEBAIFdlYkluc3BlY3Rv
ci5HZW5lcmljU2V0dGluZ3NUYWIgPSBmdW5jdGlvbigpCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNl
Y3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZW5kZXJpbmciKSk7CiAgICAgcC5hcHBlbmRD
aGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
aG93IHBhaW50IHJlY3RhbmdsZXMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJl
Y3RzKSk7CiAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzLmFkZENoYW5n
ZUxpc3RlbmVyKHRoaXMuX3Nob3dQYWludFJlY3RzQ2hhbmdlZCwgdGhpcyk7CisgICAgcC5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJzaG93IEZQUyBkaXNwbGF5IiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRl
cikpOworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5hZGRDaGFuZ2VM
aXN0ZW5lcih0aGlzLl9zaG93RlBTQ291bnRlckNoYW5nZWQsIHRoaXMpOwogCiAgICAgcCA9IHRo
aXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2VzIikpOwogICAg
IHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2hvdyBmb2xkZXJzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0
Rm9sZGVycykpOwpAQCAtMzAzLDYgKzMwNSwxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRp
bmdzVGFiLnByb3RvdHlwZSA9IHsKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3Rz
KFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5nZXQoKSk7CiAgICAgfSwKIAor
ICAgIF9zaG93RlBTQ291bnRlckNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFBh
Z2VBZ2VudC5zZXRTaG93RlBTQ291bnRlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0Nv
dW50ZXIuZ2V0KCkpOworICAgIH0sCisKICAgICBfdXBkYXRlU2NyaXB0RGlzYWJsZWRDaGVja2Jv
eDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZXhlY3V0aW9uU3RhdHVzQ2Fs
bGJhY2soZXJyb3IsIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMmVlNjBiZTE4Nzc0ZGNiOWFiOWMwNDg4MjQyYTNkYTY5
MzU1ZWE2NC4uMzMxNmVjMzNhMTY0Mzg1N2U2Yjc3ZDkxYTQzNmM4MGFkY2EyMmQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQ3
Myw2ICs0NzMsOSBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMg
PSBmdW5jdGlvbigpCiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0
cy5nZXQoKSkKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKHRydWUpOwogCisg
ICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5nZXQoKSkKKyAgICAg
ICAgUGFnZUFnZW50LnNldFNob3dGUFNDb3VudGVyKHRydWUpOworCiAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5qYXZhU2NyaXB0RGlzYWJsZWQuZ2V0KCkpCiAgICAgICAgIFBhZ2VBZ2Vu
dC5zZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCh0cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
Q2xpZW50LmgKaW5kZXggNmEzNjMxZDIyNzljZDYwMWVlYjMwNGVlNDBjNWM5N2Q3NzkxNzhiOS4u
ZjBhYzMwZjU3OTdlM2Y1M2E1OTg0NDVmMWFmNDYxNmYzY2JkYzA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCkBAIC0zNjQsNiArMzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIHZpcnR1YWwgRmxvYXRTaXplIG1pbmltdW1XaW5kb3dTaXplKCkgY29uc3QgeyBy
ZXR1cm4gRmxvYXRTaXplKDEwMCwgMTAwKTsgfTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0ZQU0NvdW50ZXIoYm9vbCkgeyB9CisKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpIHsgfQogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmgKaW5kZXggYjc3OGYyOTZhNGUzMmIxY2NjY2IzMzcxNzY0MTY0ZjkyMGUzZDJm
OS4uMGFkODNkZmVhYTgxYjJhNDJiYjAzMTJhOTFmZWIyNGQ1ZDA2NjI2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNDY3LDYgKzQ2Nyw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGlvbkVkaXRhYmxlKCkgY29uc3QgPSAwOwogCisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpID0gMDsKKwogICAgIC8vIEJl
bmNobWFya2luZyBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIGJlbmNo
bWFya1N1cHBvcnQoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDY1ODEwYjkwYzJmYTg3MTRiNTJiNGU2NTcz
NzQ2NzRlZTMyOWM2MzUuLmZiMTU5NWM2NmM3MjIwNDU1MjRiOTZhYzBlNTBmYjAwZTU3MTk1ZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CkBAIC0xMTQ1LDQgKzExNDUsOSBAQCB2b2lkIE5hdmlnYXRvckNvbnRlbnRVdGlsc0NsaWVudElt
cGw6OnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyKGNvbnN0IFN0cmluZyYgc2NoZQogfSAKICNlbmRp
ZgogCit2b2lkIENocm9tZUNsaWVudEltcGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wgc2hvdykK
K3sKKyAgICBtX3dlYlZpZXctPnNldFNob3dGUFNDb3VudGVyKHNob3cpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAppbmRleCBmOTk2ODMxZjYxZDkyOTU2ZDQ2MWU1ZWM3ZjM1OGRmNmFlMDc1NGQ0Li5j
ZTMxNDU3YTczNjNlZDEwMGY0MmY3NGJiNjVmYzkxNTRkMTAyZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0yMjMsNiArMjIzLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1BvaW50ZXJMb2NrZWQoKTsKICNlbmRpZgogCisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpOworCiBwcml2YXRlOgogICAg
IFdlYk5hdmlnYXRpb25Qb2xpY3kgZ2V0TmF2aWdhdGlvblBvbGljeSgpOwogICAgIHZvaWQgZ2V0
UG9wdXBNZW51SW5mbyhXZWJDb3JlOjpQb3B1cENvbnRhaW5lciosIFdlYlBvcHVwTWVudUluZm8q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBkNmJm
OTRiOTY3NjM5ODQ3OTc0NmQ4YjMzMTdjMDcxOTEzODk1ZjA2Li4yYjJiY2MyYmE2YWI3MDE2ZGU5
OGVjNmE4ZmMxZjAwMTMwYTk0YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCkBAIC04MzYsNiArODM2LDE2IEBAIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0
KiBXZWJWaWV3SW1wbDo6YmVuY2htYXJrU3VwcG9ydCgpCiAgICAgcmV0dXJuICZtX2JlbmNobWFy
a1N1cHBvcnQ7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wg
c2hvdykKK3sKKyAgICBpZiAoaXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkpIHsKKyAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIi
KTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKKyAg
ICAgICAgaWYgKHNob3cpCisgICAgICAgICAgICBsb2FkRm9udEF0bGFzKCk7CisgICAgfQorfQor
CiBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bikKQEAgLTM4OTUsNyArMzkwNSw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7CiAgICAgICAgIGxheWVy
VHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCkt
PmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCk7CiAg
ICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0
aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGFpbnRSZWN0
cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucmVuZGVyVlN5bmNFbmFibGVkID0g
c2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jRW5hYmxlZCgpOwpAQCAtMzkyOSwxNCArMzkzOCwx
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgICAgICBpZiAobV9wYWdlT3ZlcmxheXMpCiAgICAgICAgICAg
ICAgICAgbV9wYWdlT3ZlcmxheXMtPnVwZGF0ZSgpOwogCi0gICAgICAgICAgICAvLyBPbmx5IGFs
bG9jYXRlIHRoZSBmb250IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMt
dXAgZGlzcGxheS4KLSAgICAgICAgICAgIGlmIChsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd0ZQ
U0NvdW50ZXIgfHwgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSkg
ewotICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKSBpbml0aWFsaXplIGZvbnQgYXRsYXMi
KTsKLSAgICAgICAgICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICAg
ICAgICAgICAgICBpbnQgZm9udEhlaWdodDsKLSAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRt
YXAgPSBXZWJDb3JlOjpDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5lcmF0ZUZvbnRBdGxhcyhh
c2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUpCisgICAgICAgICAgICAgICAgbG9hZEZvbnRBdGxhcygpOwor
CisgICAgICAgICAgICBpZiAoc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCkpCisgICAg
ICAgICAgICAgICAgc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jbGVhcigpOwogICAgICAgICAg
ICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKQEAgLTM5NDgsNiAr
Mzk1NCwxNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
c2V0Q2xpcHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOwogfQog
Cit2b2lkIFdlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzKCkKK3sKKyAgICBpZiAoIW1fbGF5ZXJU
cmVlVmlldy0+aGFzRm9udEF0bGFzKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJX
ZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhcygpIik7CisgICAgICAgIFdlYlJlY3QgYXNjaWlUb1Jl
Y3RUYWJsZVsxMjhdOworICAgICAgICBpbnQgZm9udEhlaWdodDsKKyAgICAgICAgU2tCaXRtYXAg
Yml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhVREZvbnRBdGxhczo6Z2VuZXJhdGVGb250QXRs
YXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmll
dy0+c2V0Rm9udEF0bGFzKGJpdG1hcCwgYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7Cisg
ICAgfQorfQorCiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IDQ3OTA3ZjEyNDE3ZTNmMjIwYWM4YjAwZjkzNjBhZWZhYWEw
ZGFmNDIuLjk2OWFkNTE4Y2E0MjI3OGE4MjFiNGE5YzkzNTlmZmUwNGZmZGJlZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMzA2LDYgKzMwNiw3IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2ZVdoZWVsRmxpbmdB
bmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMmKTsKICAgICB2aXJ0
dWFsIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0KCk7CisgICAgdmly
dHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpOwogCiAgICAgLy8gV2ViTGF5ZXJUcmVl
Vmlld0NsaWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpOwpAQCAtNjQ5LDYg
KzY1MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJD
YW52YXMqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCByZWFsbG9jYXRlUmVu
ZGVyZXIoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisgICAgdm9pZCBs
b2FkRm9udEF0bGFzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169736</attachid>
            <date>2012-10-19 18:24:17 -0700</date>
            <delta_ts>2012-10-23 15:42:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121019182300.patch</filename>
            <type>text/plain</type>
            <size>21879</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5NGNkNjAwOTVjMTYy
OTRlMmNkMjA2YjBhZjBiNjMzMzU1MDJlMjlhLi5hNzMyOTAxZGFmYjY3OTU4NWFiMDA1MDg5MTk0
NWQwYzI5MzI1NzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0xOSAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yLgorCisgICAg
ICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFNldHRp
bmdzKToKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorCiAyMDEyLTEwLTEzICBDaHJpcyBS
b2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViQXVkaW9CdXMgbmVlZHMg
c3VwcG9ydCBmb3IgcmVzaXppbmcgYnVzIHRvIGEgc21hbGxlciBzaXplCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTQ0ZGVkMWU0ZGRmMmM0NGNjOGNhZGE4NTg2Mzc3ZTM0OGYwNGQ3NS4uNTJjNDY1MjdmZmZkZjk3
OTI1ZmQ1MjhmMjk5ODY0YTIwOTAzNzBkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisy
MDEyLTEwLTE5ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisg
ICAgICAgIHRvZ2dsZSBGUFMgY291bnRlciBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjaGVja2JveCB0byB0aGUgV2ViIEluc3Bl
Y3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIGNvbXBvc2l0
b3IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6Z2V0U2hvd0ZQU0NvdW50ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAg
ICAgIChQYWdlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdl
bnQ6OmdldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5nc1NjcmVlbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HZW5lcmlj
U2V0dGluZ3NUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYi5w
cm90b3R5cGUuZ2V0IF9zaG93RlBTQ291bnRlckNoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmRvTG9hZGVk
RG9uZSk6CisKIDIwMTItMTAtMTYgIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Vi
by5kYS5jb3N0YUBpbnRlbC5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IHRlc3RSdW5uZXIuZHVt
cFNlbGVjdGlvblJlY3QoKSBpbiBXZWJLaXRUZXN0UnVubmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDliOGU2MGI1YWI4ODU3MTY3ODVhMGY3MDdhNTA2OThjZGIxYmEwN2MuLmRjOTQ2
NDc3Yjc2ZjExNmU0NTNjODJmYjA0NjRlNjZhYzIxNjg4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTAtMTkgIEViZXJoYXJkIEdyYWV0aGVyICA8
ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgdG9nZ2xlIEZQUyBjb3VudGVyIG9wdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBh
IGNoZWNrYm94IHRvIHRoZSBXZWIgSW5zcGVjdG9yJ3Mgc2V0dGluZ3MgdG8gdG9nZ2xlIHRoZSBG
UFMgY291bnRlciBpbiB0aGUgY29tcG9zaXRvci4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3
Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OmdldFNob3dGUFND
b3VudGVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNs
aWVudEltcGw6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
Q2xpZW50SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKiBz
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50SW1wbCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OmdldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhcyk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMTAtMTYgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuICBSb2xsZWQgREVQUy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllclRyZWVWaWV3LmgKaW5kZXggOWM5NWFkMmQzZTRkNDg4MGE3NzUyOWZhYzYxNjhi
Zjk1M2RhYzQ4Ny4uOGYwZDM1NzA2NGYxNjNiZjE2MjRkY2JlYzNhZTZiNjhkY2NhY2VhZiAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmgKQEAgLTQ2LDcgKzQ2LDYgQEAgcHVibGljOgogICAgIHN0cnVjdCBTZXR0aW5ncyB7CiAgICAg
ICAgIFNldHRpbmdzKCkKICAgICAgICAgICAgIDogYWNjZWxlcmF0ZVBhaW50aW5nKGZhbHNlKQot
ICAgICAgICAgICAgLCBzaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxz
ZSkKICAgICAgICAgICAgICwgcmVuZGVyVlN5bmNFbmFibGVkKHRydWUpCkBAIC01Nyw3ICs1Niw2
IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5n
OwotICAgICAgICBib29sIHNob3dGUFNDb3VudGVyOwogICAgICAgICBib29sIHNob3dQbGF0Zm9y
bUxheWVyVHJlZTsKICAgICAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKICAgICAgICAgYm9vbCBy
ZW5kZXJWU3luY0VuYWJsZWQ7CkBAIC0xMTYsNiArMTE0LDEyIEBAIHB1YmxpYzoKICAgICAvLyBJ
ZiB1c2VBbmNob3IgaXMgZmFsc2UsIGRlc3RpbmF0aW9uIGlzIHRoZSBmaW5hbCB0b3AtbGVmdCBz
Y3JvbGwgcG9zaXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0UGFnZVNjYWxlQW5pbWF0aW9u
KGNvbnN0IFdlYlBvaW50JiBkZXN0aW5hdGlvbiwgYm9vbCB1c2VBbmNob3IsIGZsb2F0IG5ld1Bh
Z2VTY2FsZSwgZG91YmxlIGR1cmF0aW9uU2VjKSA9IDA7CiAKKyAgICAvLyBUb2dnbGVzIHRoZSBG
UFMgY291bnRlciBpbiB0aGUgSFVEIGxheWVyCisgICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFND
b3VudGVyKGJvb2wpID0gMDsKKworICAgIC8vIENoZWNrcyBpZiBhIGZvbnQgYXRsYXMgd2FzIGxv
YWRlZCBhbmQgcGFzc2VkIHRvIHRoZSBIVUQgbGF5ZXIKKyAgICB2aXJ0dWFsIGJvb2wgaGFzRm9u
dEF0bGFzKCkgPSAwOworCiAKICAgICAvLyBGbG93IGNvbnRyb2wgYW5kIHNjaGVkdWxpbmcgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAwNTFhYmE0OTU3ZjhmM2Y3MGJlMWQzMjk3YjViODEz
YmVhMjBhYThhLi43YzEyYTE0NGM1YmUyZDM0Njk5ZDRjMThlMjFjMDQ2MDkwYWIzYWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0zMzgsNiArMzM4LDIyIEBA
CiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0U2hvd0ZQU0NvdW50ZXIiLAorICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDaGVja3MgaWYgYmFja2VuZCBkaXNwbGF5cyB0
aGUgZnJhbWVyYXRlIiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0
aW9uIjogIlRydWUgaWYgZnJhbWVyYXRlIGlzIHNob3duIiB9CisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRTaG93RlBTQ291bnRlciIsCisgICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBkaXNwbGF5
cyB0aGUgZnJhbWVyYXRlIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRl
c2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcgdGhlIGZyYW1lcmF0ZSIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0U2NyaXB0RXhlY3V0
aW9uU3RhdHVzIiwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyBp
ZiBzY3JpcHRzIGNhbiBiZSBleGVjdXRlZCBpbiB0aGUgcGFnZS4iLAogICAgICAgICAgICAgICAg
ICJyZXR1cm5zIjogWwpAQCAtNDIwLDYgKzQzNiwxNCBAQAogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInZpc2libGUiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRy
dWUgZm9yIHNob3dpbmcgY29tcG9zaXRpbmcgYm9yZGVycy4iIH0KICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNoZWNrcyBpZiBiYWNr
ZW5kIGhhcyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBlbmFibGVkIiwKKyAgICAgICAgICAgICAg
ICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAi
dHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgaXMgZW5hYmxlZCIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAg
ICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2
ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRl
eCAyZDRmYjNmMjYxMjljYjkwNDI5Mzg4ZTA2ZDMxMmRkMzVkMzEwNWE0Li4xNzVkZjc5NjIxMDkz
NGJkMTAxMTYwOTA0ZmIwMDRhZWQ1MmYyMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNsaWVudC5oCkBAIC03NSw2ICs3NSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKSB7IH0KIAog
ICAgIHN0YXRpYyBib29sIGRvRGlzcGF0Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJv
bnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworCisgICAgdmlydHVhbCBib29sIGdl
dFNob3dGUFNDb3VudGVyKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvd0ZQU0NvdW50ZXIoYm9vbCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlKCkgeyByZXR1cm4gZmFsc2U7IH0KIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKaW5kZXggNzg4Njg1YjFlN2IyZWRjYWFlY2I2NzFkYTQzYmJiMjg0ZTYwZTNkYy4u
MjY4MmMzNzc4NTQxOGVlOGZlZDAxODE3OTJkYjAzOTRlMTYwMTc3ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTkzLDYgKzkzLDcg
QEAgc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGVbXSA9ICJw
YWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmkKIHN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudEZv
bnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJp
ZGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0V2luZG93W10gPSAicGFnZUFnZW50
Rml0V2luZG93IjsKIHN0YXRpYyBjb25zdCBjaGFyIHNob3dQYWludFJlY3RzW10gPSAic2hvd1Bh
aW50UmVjdHMiOworc3RhdGljIGNvbnN0IGNoYXIgc2hvd0ZQU0NvdW50ZXJbXSA9ICJzaG93RlBT
Q291bnRlciI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIHN0YXRpYyBjb25zdCBjaGFyIHRv
dWNoRXZlbnRFbXVsYXRpb25FbmFibGVkW10gPSAidG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQi
OwogI2VuZGlmCkBAIC03MTMsNiArNzE0LDE4IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFt
KQoreworICAgICpvdXRQYXJhbSA9IG1fY2xpZW50LT5nZXRTaG93RlBTQ291bnRlcigpOworfQor
Cit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcq
LCBib29sIHNob3cpCit7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6
c2hvd0ZQU0NvdW50ZXIsIHNob3cpOworICAgIG1fY2xpZW50LT5zZXRTaG93RlBTQ291bnRlcihz
aG93KTsKKyAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJv
clN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKiBzdGF0dXMpCiB7CiAg
ICAgYm9vbCBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9IGZhbHNlOwpAQCAtMTEyOSw2ICsx
MTQyLDExIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCB2aXNpYmxlCiAgICAgc2V0dGluZ3MtPnNldFNob3dS
ZXBhaW50Q291bnRlcih2aXNpYmxlKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6Omlz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFt
KQoreworICAgICpvdXRQYXJhbSA9IG1fY2xpZW50LT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuaAppbmRleCBlNTRiYjcyNTdjZjE5ZmQ5NWIwNjBkMGI5YzljMTA5N2ZiNTQzNzg1Li40MTEx
ZTk5ODA1YWY4MzJiNzNiOTcyZTk5Y2ZmZmU2NjZhM2IyOTg2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xMDksNiArMTA5LDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5PdmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJp
bmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShF
cnJvclN0cmluZyosIGludCB3aWR0aCwgaW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3Rv
ciwgYm9vbCBmaXRXaW5kb3cpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhF
cnJvclN0cmluZyosIGJvb2wgc2hvdyk7CisgICAgdmlydHVhbCB2b2lkIGdldFNob3dGUFNDb3Vu
dGVyKEVycm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pOworICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7CiAgICAgdmlydHVhbCB2b2lk
IGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGxl
cjo6UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdEV4ZWN1dGlvbkRp
c2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEdlb2xvY2F0
aW9uT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3VibGUqLCBjb25zdCBkb3VibGUqLCBj
b25zdCBkb3VibGUqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nKiwgYm9v
bCogb3V0X3BhcmFtKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlz
aWJsZShFcnJvclN0cmluZyosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBpc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sKiBvdXRQYXJhbSk7CiAKICAgICAv
LyBHZW9sb2NhdGlvbiBvdmVycmlkZSBoZWxwZXJzLgogICAgIEdlb2xvY2F0aW9uUG9zaXRpb24q
IG92ZXJyaWRlR2VvbG9jYXRpb25Qb3NpdGlvbihHZW9sb2NhdGlvblBvc2l0aW9uKik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBjYzk4
YjRjZDUwMDBkNWJkOGY1MDMzOWM5MGRlNTQ2ODU5ZGJjMzM0Li4zOTAyNTc0ZWIxNTYxY2NiODI4
ZDE3OTExNjU1MjQxYTU5NmIwYjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTU3LDYgKzU3LDggQEAgdmFyIENhcGFiaWxpdGllcyA9
IHsKICAgICB0aW1lbGluZVN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb246IGZhbHNlLAogICAg
IGNhbk92ZXJyaWRlR2VvbG9jYXRpb246IGZhbHNlLAogICAgIGNhbk92ZXJyaWRlRGV2aWNlT3Jp
ZW50YXRpb246IGZhbHNlLAorICAgIHNob3dGUFNDb3VudGVyOiBmYWxzZSwKKyAgICBpc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU6IGZhbHNlCiB9CiAKIC8qKgpAQCAtOTUsNiArOTcsNyBA
QCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2NyaXB0
Rm9sZGVycyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsK
ICAgICB0aGlzLmVtdWxhdGVUb3VjaEV2ZW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygiZW11bGF0
ZVRvdWNoRXZlbnRzIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0aGlzLmNy
ZWF0ZVNldHRpbmcoInNob3dQYWludFJlY3RzIiwgZmFsc2UpOworICAgIHRoaXMuc2hvd0ZQU0Nv
dW50ZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dGUFNDb3VudGVyIiwgZmFsc2UpOwogICAg
IHRoaXMuc2hvd1NoYWRvd0RPTSA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NoYWRvd0RPTSIs
IGZhbHNlKTsKICAgICB0aGlzLnpvb21MZXZlbCA9IHRoaXMuY3JlYXRlU2V0dGluZygiem9vbUxl
dmVsIiwgMCk7CiAgICAgdGhpcy5zYXZlZFVSTHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNhdmVk
VVJMcyIsIHt9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3NTY3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzU2NyZWVuLmpzCmluZGV4IGY1N2UzZTgwMjJiNTdjZTFjZGMyN2RiNzQzMTZmMDMw
MWIxNmMzZDAuLjRmMzk3MGU3MjVlODQ3NzhiYzgyYmZiNGQyZjQ4MWE0ZmNkYjMxOTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4u
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVl
bi5qcwpAQCAtMjcyLDYgKzI3MiwxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFi
ID0gZnVuY3Rpb24oKQogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0
aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwYWludCByZWN0YW5nbGVzIiksIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cykpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5zaG93UGFpbnRSZWN0cy5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93UGFpbnRSZWN0
c0NoYW5nZWQsIHRoaXMpOwogCisgICAgaWYgKENhcGFiaWxpdGllcy5pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpIHsKKyAgICAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVj
a2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJzaG93IEZQUyBkaXNwbGF5IiksIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlcikpOworICAgICAgICBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd0ZQ
U0NvdW50ZXJDaGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKICAgICBwID0gdGhpcy5fYXBwZW5kU2Vj
dGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMiKSk7CiAgICAgcC5hcHBlbmRDaGls
ZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93
IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzKSk7CiAg
ICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTZWFyY2ggaW4gY29udGVudCBzY3JpcHRzIiksIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5zZWFyY2hJbkNvbnRlbnRTY3JpcHRzKSk7CkBAIC0zMDMsNiArMzA4LDExIEBAIFdlYklu
c3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlID0gewogICAgICAgICBQYWdlQWdl
bnQuc2V0U2hvd1BhaW50UmVjdHMoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3Rz
LmdldCgpKTsKICAgICB9LAogCisgICAgX3Nob3dGUFNDb3VudGVyQ2hhbmdlZDogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgUGFnZUFnZW50LnNldFNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5nZXQoKSk7CisgICAgfSwKKwogICAgIF91cGRhdGVT
Y3JpcHREaXNhYmxlZENoZWNrYm94OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBmdW5jdGlv
biBleGVjdXRpb25TdGF0dXNDYWxsYmFjayhlcnJvciwgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAyZWU2MGJlMTg3NzRk
Y2I5YWI5YzA0ODgyNDJhM2RhNjkzNTVlYTY0Li45MjkzNmRkMTVmYjM1YzZhNjhhNmMzYzk5MGRm
YjllODBmMzlkMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcwpAQCAtMzY2LDYgKzM2Niw4IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERv
bmUgPSBmdW5jdGlvbigpCiAgICAgUHJvZmlsZXJBZ2VudC5pc1NhbXBsaW5nKFdlYkluc3BlY3Rv
ci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJzYW1wbGluZ0NQVVBy
b2ZpbGVyIiwgbnVsbCkpOwogICAgIFByb2ZpbGVyQWdlbnQuaGFzSGVhcFByb2ZpbGVyKFdlYklu
c3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJoZWFwUHJv
ZmlsZXJQcmVzZW50IiwgbnVsbCkpOwogICAgIFRpbWVsaW5lQWdlbnQuc3VwcG9ydHNGcmFtZUlu
c3RydW1lbnRhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2Vi
SW5zcGVjdG9yLCAidGltZWxpbmVTdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uIiwgbnVsbCkp
OworICAgIFBhZ2VBZ2VudC5nZXRTaG93RlBTQ291bnRlcihXZWJJbnNwZWN0b3IuX2luaXRpYWxp
emVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAic2hvd0ZQU0NvdW50ZXIiLCBudWxsKSk7
CisgICAgUGFnZUFnZW50LmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShXZWJJbnNwZWN0
b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiaXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlIiwgbnVsbCkpOwogICAgIFBhZ2VBZ2VudC5jYW5PdmVycmlkZURl
dmljZU1ldHJpY3MoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYklu
c3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyIsIG51bGwpKTsKICAgICBQYWdlQWdl
bnQuY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmls
aXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbiIsIG51bGwpKTsK
ICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbihXZWJJbnNwZWN0b3Iu
X2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVEZXZp
Y2VPcmllbnRhdGlvbiIsIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGll
cy5iaW5kKFdlYkluc3BlY3RvcikpKTsKQEAgLTQ3Myw2ICs0NzUsMTEgQEAgV2ViSW5zcGVjdG9y
Ll9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rpb24oKQogICAgIGlmIChXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMuZ2V0KCkpCiAgICAgICAgIFBhZ2VBZ2Vu
dC5zZXRTaG93UGFpbnRSZWN0cyh0cnVlKTsKIAorICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkpCisgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93RlBTQ291
bnRlcih0cnVlKTsKKyAgICBlbHNlIGlmIChDYXBhYmlsaXRpZXMuc2hvd0ZQU0NvdW50ZXIpCisg
ICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5zZXQodHJ1ZSk7CisK
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmphdmFTY3JpcHREaXNhYmxlZC5nZXQoKSkK
ICAgICAgICAgUGFnZUFnZW50LnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKHRydWUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYjc3OGYyOTZhNGUzMmIx
Y2NjY2IzMzcxNzY0MTY0ZjkyMGUzZDJmOS4uZTc1NjY4MmE3NjQ4ZmM1MTNhZWYyODRmMGMwMmRj
MDQ4YjViOTU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAt
NDY3LDYgKzQ2Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGlvbkVk
aXRhYmxlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGdldFNob3dGUFNDb3VudGVy
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKSA9IDA7CisK
ICAgICAvLyBCZW5jaG1hcmtpbmcgc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYlZpZXdCZW5jaG1hcmtTdXBw
b3J0KiBiZW5jaG1hcmtTdXBwb3J0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRleCA0MDJiODY5NWM5
ZDE2OGI1YzEyNjFkNTc5NTgxNDgwYThjYjQwNmQ1Li5kNzJkNmJkZmMwNDRkMzY2NzYxMmQ0NTgy
NzE5MWE3OTE4ZDNhZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
bnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMTg0LDQgKzE4NCwxOSBAQCBXZWJEZXZUb29sc0Fn
ZW50SW1wbCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9vbHNBZ2VudCgpCiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5k
ZXZUb29sc0FnZW50KCkpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudEltcGw6OmdldFNob3dG
UFNDb3VudGVyKCkKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0ZWRXZWJWaWV3LT5nZXRTaG93RlBT
Q291bnRlcigpOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnNldFNob3dGUFNDb3Vu
dGVyKGJvb2wgc2hvdykKK3sKKyAgICBtX2luc3BlY3RlZFdlYlZpZXctPnNldFNob3dGUFNDb3Vu
dGVyKHNob3cpOworfQorCitib29sIEluc3BlY3RvckNsaWVudEltcGw6OmlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1faW5zcGVjdGVkV2ViVmlldy0+aXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCk7IAorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwu
aAppbmRleCA5ZTFlYTM3MGU0NzMxZWU2ODUxZTBhN2M2NWNkMzIwYjY4M2ZjMTJhLi44YzU3MmZi
ZDM4NjdmZWQzNjFlNTZkMDRmMzVkZjU1YTk3Y2ZjZjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC04MCw2ICs4MCwxMSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNv
bnN0IHZvaWQqPiYpOwogCisgICAgdmlydHVhbCBib29sIGdldFNob3dGUFNDb3VudGVyKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpOworCisgICAgdmlydHVhbCBi
b29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpOworCiBwcml2YXRlOgogICAgIC8v
IFdlYlRocmVhZDo6VGFza09ic2VydmVyCiAgICAgdmlydHVhbCB2b2lkIHdpbGxQcm9jZXNzVGFz
aygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGQ2
YmY5NGI5Njc2Mzk4NDc5NzQ2ZDhiMzMxN2MwNzE5MTM4OTVmMDYuLjUxYzE5MmNjOTNkZmI4N2Nm
ZjNmYTQxYTBiMzM1MmYxZWZiYmQwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTgzNiw2ICs4MzYsMjQgQEAgV2ViVmlld0JlbmNobWFya1N1cHBv
cnQqIFdlYlZpZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkKICAgICByZXR1cm4gJm1fYmVuY2ht
YXJrU3VwcG9ydDsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6Z2V0U2hvd0ZQU0NvdW50ZXIoKQor
eworICAgIHJldHVybiBzZXR0aW5nc0ltcGwoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKK30KKwordm9p
ZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93KQoreworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBzZXR0aW5nc0ltcGwoKS0+c2V0U2hvd0ZQU0Nv
dW50ZXIoc2hvdyk7CisgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7
CisgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2ViVmlld0ltcGw6OnNldFNob3dGUFNDb3Vu
dGVyIik7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7
CisgICAgICAgIGlmIChzaG93KQorICAgICAgICAgICAgbG9hZEZvbnRBdGxhcygpOworICAgIH0K
KyNlbmRpZgorfQorCiBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBXZWJL
ZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5w
dXRFdmVudDo6UmF3S2V5RG93bikKQEAgLTM4OTUsNyArMzkxMyw2IEBAIHZvaWQgV2ViVmlld0lt
cGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAg
ICAgICBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7CiAg
ICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCkt
PnNldHRpbmdzKCktPmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJU
cmVlVmlld1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFND
b3VudGVyKCk7CiAgICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXll
clRyZWUgPSBzZXR0aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAg
IGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5z
aG93UGFpbnRSZWN0cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucmVuZGVyVlN5
bmNFbmFibGVkID0gc2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jRW5hYmxlZCgpOwpAQCAtMzky
OSwxNCArMzk0NiwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgICAgICBpZiAobV9wYWdlT3ZlcmxheXMp
CiAgICAgICAgICAgICAgICAgbV9wYWdlT3ZlcmxheXMtPnVwZGF0ZSgpOwogCi0gICAgICAgICAg
ICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVz
ZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KLSAgICAgICAgICAgIGlmIChsYXllclRyZWVWaWV3U2V0
dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9y
bUxheWVyVHJlZSkgewotICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2ViVmll
d0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKSBpbml0aWFsaXpl
IGZvbnQgYXRsYXMiKTsKLSAgICAgICAgICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVb
MTI4XTsKLSAgICAgICAgICAgICAgICBpbnQgZm9udEhlaWdodDsKLSAgICAgICAgICAgICAgICBT
a0JpdG1hcCBiaXRtYXAgPSBXZWJDb3JlOjpDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5lcmF0
ZUZvbnRBdGxhcyhhc2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKLSAgICAgICAgICAgICAg
ICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUs
IGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpCisgICAgICAgICAgICAgICAgbG9hZEZv
bnRBdGxhcygpOworCisgICAgICAgICAgICBpZiAoc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3Vu
dGVyKCkpCisgICAgICAgICAgICAgICAgc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jbGVhcigp
OwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsK
QEAgLTM5NDgsNiArMzk2MiwxNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIHBhZ2UoKS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+c2V0Q2xpcHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzKCkKK3sKKyAgICBp
ZiAoIW1fbGF5ZXJUcmVlVmlldy0+aGFzRm9udEF0bGFzKCkpIHsKKyAgICAgICAgVFJBQ0VfRVZF
TlQwKCJjYyIsICJXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhcygpIik7CisgICAgICAgIFdlYlJl
Y3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOworICAgICAgICBpbnQgZm9udEhlaWdodDsKKyAgICAg
ICAgU2tCaXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhVREZvbnRBdGxhczo6Z2Vu
ZXJhdGVGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7CisgICAgICAgIG1f
bGF5ZXJUcmVlVmlldy0+c2V0Rm9udEF0bGFzKGJpdG1hcCwgYXNjaWlUb1JlY3RUYWJsZSwgZm9u
dEhlaWdodCk7CisgICAgfQorfQorCiAjZW5kaWYKIAogbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDQ3OTA3ZjEyNDE3ZTNmMjIwYWM4YjAw
ZjkzNjBhZWZhYWEwZGFmNDIuLjNiZTllNzdhZWUyYWM2NDk2MTBiY2I0YzFhOTJkZGIyNjUxNmQx
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMzA2LDYg
KzMwNiw4IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFjdGl2
ZVdoZWVsRmxpbmdBbmltYXRpb24oY29uc3QgV2ViQWN0aXZlV2hlZWxGbGluZ1BhcmFtZXRlcnMm
KTsKICAgICB2aXJ0dWFsIFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0
KCk7CisgICAgdmlydHVhbCBib29sIGdldFNob3dGUFNDb3VudGVyKCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpOwogCiAgICAgLy8gV2ViTGF5ZXJUcmVlVmlld0Ns
aWVudAogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVnaW5GcmFtZSgpOwpAQCAtNjQ5LDYgKzY1MSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1BpeGVsUmVhZGJhY2tUb0NhbnZhcyhXZWJDYW52YXMq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCByZWFsbG9jYXRlUmVuZGVyZXIo
KTsKICAgICB2b2lkIHVwZGF0ZUxheWVyVHJlZVZpZXdwb3J0KCk7CisgICAgdm9pZCBsb2FkRm9u
dEF0bGFzKCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170253</attachid>
            <date>2012-10-23 15:42:31 -0700</date>
            <delta_ts>2012-10-30 12:27:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121023154108.patch</filename>
            <type>text/plain</type>
            <size>21727</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyMDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMzk2YjQ4OWJlZTcx
MDQyMTllN2FlODIyZTFlMzgxZWI1YTYwMDdiLi4zY2JhYWY5NmE4MTJkMzc1MjQ2ODU0MzFmYjAy
MzNmY2JkNjg0YzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yMyAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yLiBUaGUgY2hl
Y2tib3ggaXMgb25seSBzaG93biBpZiAnZm9yY2UgY29tcG9zaXRpbmcgbW9kZScgaXMgYWN0aXZl
LgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAg
ICAgKFNldHRpbmdzKToKKyAgICAgICAgKFdlYkxheWVyVHJlZVZpZXcpOgorCiAyMDEyLTEwLTE5
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTMxOTQ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNkYzU5N2IzZjcz
YTNkZTlhY2I5MGQ3NDUyMGE0NmFiY2NkMTRmMDkuLjJkOGEwYzMyZWQ0MTYzNjFiZTkxYjYwNjU2
ZjcxNDM2ZmQ4YTI5OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMC0yMyAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yLiBUaGUgY2hl
Y2tib3ggaXMgb25seSBzaG93biBpZiAnZm9yY2UgY29tcG9zaXRpbmcgbW9kZScgaXMgYWN0aXZl
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzeW5jU2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dG
UFNDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6aXNGb3Jj
ZUNvbXBvc2l0aW5nTW9kZUVuYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlLmdldCBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2Vk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9kb0xv
YWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzLnN5bmNTaG93RlBTQ291bnRlckNhbGxiYWNrKToKKwog
MjAxMi0xMC0yMSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
RmFjdG9yIHN0eWxlc2hlZXQgaW52YWxpZGF0aW9uIGFuYWx5c2lzIGNvZGUgaW50byBhIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGNmYTRmMzIxMzg0MTVlMWFiZmJhYjQxYjQ1
NjYxYjZiZTJkOGNkZTAuLmUxMDVmNTQzYWNjNDlmNzM0ZjYwMzY3NDFkOTQ3YzBiM2MyMzM0M2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTAtMjMg
IEViZXJoYXJkIEdyYWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgdG9n
Z2xlIEZQUyBjb3VudGVyIG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94IHRvIHRoZSBXZWIgSW5zcGVjdG9yJ3Mgc2V0
dGluZ3MgdG8gdG9nZ2xlIHRoZSBGUFMgY291bnRlciBpbiB0aGUgY29tcG9zaXRvci4gVGhlIGNo
ZWNrYm94IGlzIG9ubHkgc2hvd24gaWYgJ2ZvcmNlIGNvbXBvc2l0aW5nIG1vZGUnIGlzIGFjdGl2
ZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAg
ICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckNsaWVudEltcGw6OmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OnNldFNob3dGUFND
b3VudGVyKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAo
SW5zcGVjdG9yQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTaG93RlBT
Q291bnRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bG9hZEZv
bnRBdGxhcyk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3
SW1wbCk6CisKIDIwMTItMTAtMTkgIFl1c3VmIE96dXlzYWwgIDx5dXN1Zm9AZ29vZ2xlLmNvbT4K
IAogICAgICAgICBbY2hyb21pdW1dIERvdWJsZS10YXAgZGVmYXVsdHMgdG8gem9vbSAoc2hvdWxk
IG9ubHkgZG8gdGhpcyBvbiBBbmRyb2lkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA5Yzk1YWQyZDNlNGQ0ODgwYTc3NTI5
ZmFjNjE2OGJmOTUzZGFjNDg3Li4yZjRlZjZjMjhlMTg4Y2VmMmFlYmZjYzE0Y2JlMzI0YjI4OGU3
MmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaApAQCAtNDYsNyArNDYsNiBAQCBwdWJsaWM6CiAgICAgc3RydWN0IFNldHRpbmdz
IHsKICAgICAgICAgU2V0dGluZ3MoKQogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmco
ZmFsc2UpCi0gICAgICAgICAgICAsIHNob3dGUFNDb3VudGVyKGZhbHNlKQogICAgICAgICAgICAg
LCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAgICAsIHNob3dQYWludFJl
Y3RzKGZhbHNlKQogICAgICAgICAgICAgLCByZW5kZXJWU3luY0VuYWJsZWQodHJ1ZSkKQEAgLTU3
LDcgKzU2LDYgQEAgcHVibGljOgogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBhY2NlbGVyYXRl
UGFpbnRpbmc7Ci0gICAgICAgIGJvb2wgc2hvd0ZQU0NvdW50ZXI7CiAgICAgICAgIGJvb2wgc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlOwogICAgICAgICBib29sIHNob3dQYWludFJlY3RzOwogICAgICAg
ICBib29sIHJlbmRlclZTeW5jRW5hYmxlZDsKQEAgLTE2MCw2ICsxNTgsMTIgQEAgcHVibGljOgog
ICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2Rl
IGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiAgICAgdmlydHVhbCB2b2lk
IHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3QgPSAwOwogCisgICAgLy8g
VG9nZ2xlcyB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIEhVRCBsYXllcgorICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG93RlBTQ291bnRlcihib29sKSA9IDA7CisKKyAgICAvLyBDaGVja3MgaWYgYSBmb250
IGF0bGFzIHdhcyBsb2FkZWQgYW5kIHBhc3NlZCB0byB0aGUgSFVEIGxheWVyCisgICAgdmlydHVh
bCBib29sIGhhc0ZvbnRBdGxhcygpIGNvbnN0ID0gMDsKKwogICAgIC8vIFByb3ZpZGVzIGEgZm9u
dCBhdGxhcyB0byB1c2UgZm9yIGRlYnVnIHZpc3VhbGl6YXRpb25zLiBUaGUgYXRsYXMgbXVzdCBi
ZSBhIGJpdG1hcCBjb250YWluaW5nIGdseXBoIGRhdGEsIGEgdGFibGUgb2YKICAgICAvLyBBU0NJ
SSBjaGFyYWN0ZXIgdmFsdWVzIHRvIGEgc3VicmVjdGFuZ2xlIG9mIHRoZSBhdGxhcyByZXByZXNl
bnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGgsIGFuZCB0aGUgZ2x5cGggaGVpZ2h0LgogICAg
IHZpcnR1YWwgdm9pZCBzZXRGb250QXRsYXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RU
YWJsZVsxMjhdLCBpbnQgZm9udEhlaWdodCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uCmluZGV4IDA1MWFiYTQ5NTdmOGYzZjcwYmUxZDMyOTdiNWI4MTNiZWEyMGFh
OGEuLmVhNzU0YjQ2YTRiZmQzYjBhMTQ1NjU0MzllZjBlZmVkMDI0MTEyZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMzOCw2ICszMzgsMjUgQEAKICAgICAg
ICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJzeW5jU2hvd0ZQU0NvdW50ZXIiLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW5jaHJvbml6ZXMgdGhlIHNob3dGUFNDb3VudGVyIHNl
dHRpbmcgd2l0aCB0aGUgYmFja2VuZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hvdyIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiQ3VycmVudCBzdGF0ZSBvZiBzaG93RlBTQ291bnRlciBzZXR0aW5n
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwg
ImRlc2NyaXB0aW9uIjogIk5ldyBzdGF0ZSBmb3Igc2hvd0ZQU0NvdW50ZXIgc2V0dGluZyIgfQor
ICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0U2hv
d0ZQU0NvdW50ZXIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0
aGF0IGJhY2tlbmQgc2hvd3MgdGhlIEZQUyBjb3VudGVyIiwKKyAgICAgICAgICAgICAgICAicGFy
YW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlw
ZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcgdGhlIEZQUyBj
b3VudGVyIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjog
dHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMiLAogICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJEZXRlcm1pbmVzIGlmIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkIGluIHRoZSBwYWdl
LiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCkBAIC00MjAsNiArNDM5LDE0IEBACiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmlzaWJsZSIsICJ0eXBlIjogImJvb2xlYW4i
LCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBmb3Igc2hvd2luZyBjb21wb3NpdGluZyBib3JkZXJzLiIg
fQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaXNG
b3JjZUNvbXBvc2l0aW5nTW9kZUVuYWJsZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJDaGVja3MgaWYgYmFja2VuZCBoYXMgZm9yY2VkIGNvbXBvc2l0aW5nIG1vZGUiLAorICAg
ICAgICAgICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlc3VsdCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiBmb3Jj
ZSBjb21wb3NpdGluZyBtb2RlIGlzIGVuYWJsZWQiIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAg
ICAgICAgICJldmVudHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKaW5kZXggMmE0NzQ1YTgxZWVkODZmNTNmYjM2ZmMzNDMwMDY2ZjNlZTg2MGQzYS4uY2Q1
ZTBiNmYwY2QyMzc0NWFiZjA0MTRkOTU4Yjk0ZDRlMWFiMTI1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGR1bXBVbmNvdW50ZWRBbGxvY2F0ZWRPYmplY3RzKGNvbnN0IEhhc2hN
YXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mKSB7IH0KIAogICAgIHN0YXRpYyBib29sIGRvRGlzcGF0
Y2hNZXNzYWdlT25Gcm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpOworCisgICAgdmlydHVhbCBib29sIGlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9v
bCkgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDc4ODY4NWIxZTdiMmVkY2Fh
ZWNiNjcxZGE0M2JiYjI4NGU2MGUzZGMuLmMwNmFlY2UxMzRjNjIyNDkzZWM4MjYwZDVhMmI3MjU2
YTFmODE0MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCkBAIC03MTMsNiArNzEzLDE5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpzeW5jU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBi
b29sIGluUGFyYW0sIGJvb2wqIG91dFBhcmFtKQoreworICAgICpvdXRQYXJhbSA9IGluUGFyYW0g
fHwgbV9jbGllbnQtPmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCk7CisgICAgaWYgKCpvdXRQYXJh
bSkKKyAgICAgICAgc2V0U2hvd0ZQU0NvdW50ZXIoZXJyb3JTdHJpbmcsICpvdXRQYXJhbSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmlu
ZyosIGJvb2wgc2hvdykKK3sKKyAgICBtX2NsaWVudC0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7
CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJp
bmcqLCBQYWdlQ29tbWFuZEhhbmRsZXI6OlJlc3VsdDo6RW51bSogc3RhdHVzKQogewogICAgIGJv
b2wgZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKQEAgLTExMjksNiArMTE0Miwx
MSBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJs
ZShFcnJvclN0cmluZyosIGJvb2wgdmlzaWJsZQogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWlu
dENvdW50ZXIodmlzaWJsZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojppc0ZvcmNl
Q29tcG9zaXRpbmdNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQorewor
ICAgICpvdXRQYXJhbSA9IG1fcGFnZS0+c2V0dGluZ3MoKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BF
Q1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaApp
bmRleCBlNTRiYjcyNTdjZjE5ZmQ5NWIwNjBkMGI5YzljMTA5N2ZiNTQzNzg1Li4yMjUzYmU1N2Y5
YThjNjIzMjFlZmIwZGIwY2Y1NWFhMDI3YTlhOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBAIC0xMDksNiArMTA5LDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjYW5PdmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBi
b29sKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0
cmluZyosIGludCB3aWR0aCwgaW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9v
bCBmaXRXaW5kb3cpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0
cmluZyosIGJvb2wgc2hvdyk7CisgICAgdmlydHVhbCB2b2lkIHN5bmNTaG93RlBTQ291bnRlcihF
cnJvclN0cmluZyosIGJvb2wgaW5QYXJhbSwgYm9vbCogb3V0UGFyYW0pOworICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7CiAgICAgdmly
dHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21t
YW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdEV4
ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEdlb2xvY2F0aW9uT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3VibGUqLCBjb25zdCBk
b3VibGUqLCBjb25zdCBkb3VibGUqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3Ry
aW5nKiwgYm9vbCogb3V0X3BhcmFtKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBpc0Zv
cmNlQ29tcG9zaXRpbmdNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKTsK
IAogICAgIC8vIEdlb2xvY2F0aW9uIG92ZXJyaWRlIGhlbHBlcnMuCiAgICAgR2VvbG9jYXRpb25Q
b3NpdGlvbiogb3ZlcnJpZGVHZW9sb2NhdGlvblBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24q
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmlu
ZGV4IGNjOThiNGNkNTAwMGQ1YmQ4ZjUwMzM5YzkwZGU1NDY4NTlkYmMzMzQuLmYxNDc5ZjM4YjAz
M2IxOWNlZWQzOWVlMDg3YzMxMDZlYzgwMmExY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNTcsNiArNTcsNyBAQCB2YXIgQ2FwYWJp
bGl0aWVzID0gewogICAgIHRpbWVsaW5lU3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbjogZmFs
c2UsCiAgICAgY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbjogZmFsc2UsCiAgICAgY2FuT3ZlcnJpZGVE
ZXZpY2VPcmllbnRhdGlvbjogZmFsc2UsCisgICAgaXNGb3JjZUNvbXBvc2l0aW5nTW9kZUVuYWJs
ZWQ6IGZhbHNlCiB9CiAKIC8qKgpAQCAtOTUsNiArOTYsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGlu
Z3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRl
U2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKICAgICB0aGlzLmVtdWxhdGVUb3Vj
aEV2ZW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygiZW11bGF0ZVRvdWNoRXZlbnRzIiwgZmFsc2Up
OwogICAgIHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dQYWlu
dFJlY3RzIiwgZmFsc2UpOworICAgIHRoaXMuc2hvd0ZQU0NvdW50ZXIgPSB0aGlzLmNyZWF0ZVNl
dHRpbmcoInNob3dGUFNDb3VudGVyIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1NoYWRvd0RPTSA9
IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NoYWRvd0RPTSIsIGZhbHNlKTsKICAgICB0aGlzLnpv
b21MZXZlbCA9IHRoaXMuY3JlYXRlU2V0dGluZygiem9vbUxldmVsIiwgMCk7CiAgICAgdGhpcy5z
YXZlZFVSTHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNhdmVkVVJMcyIsIHt9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmlu
ZGV4IGZlNWFhYjAzY2I4YjYxNTJjNmI5NjJjZTBjOWRkYjdkZjdjMDFhY2IuLmY0OWNiM2FmZmNi
ZWEyNWY0NzVjODMwNWFmNjIxZmYwY2RiNWQ2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtMjcyLDYgKzI3Miwx
MSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiID0gZnVuY3Rpb24oKQogICAgIHAu
YXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyBwYWludCByZWN0YW5nbGVzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93
UGFpbnRSZWN0cykpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5h
ZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93UGFpbnRSZWN0c0NoYW5nZWQsIHRoaXMpOwogCisg
ICAgaWYgKENhcGFiaWxpdGllcy5pc0ZvcmNlQ29tcG9zaXRpbmdNb2RlRW5hYmxlZCkgeworICAg
ICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoInNob3cgRlBTIGRpc3BsYXkiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNo
b3dGUFNDb3VudGVyKSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291
bnRlci5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93RlBTQ291bnRlckNoYW5nZWQsIHRoaXMp
OworICAgIH0KKwogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU291cmNlcyIpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94
U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgZm9sZGVycyIpLCBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMpKTsKICAgICBwLmFwcGVuZENoaWxkKHRoaXMu
X2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCBpbiBj
b250ZW50IHNjcmlwdHMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNlYXJjaEluQ29udGVudFNj
cmlwdHMpKTsKQEAgLTMwMyw2ICszMDgsMTEgQEAgV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5n
c1RhYi5wcm90b3R5cGUgPSB7CiAgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0cyhX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMuZ2V0KCkpOwogICAgIH0sCiAKKyAg
ICBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBQYWdl
QWdlbnQuc2V0U2hvd0ZQU0NvdW50ZXIoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3Vu
dGVyLmdldCgpKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZVNjcmlwdERpc2FibGVkQ2hlY2tib3g6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGV4ZWN1dGlvblN0YXR1c0NhbGxi
YWNrKGVycm9yLCBzdGF0dXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCmluZGV4IGQyYTRkM2EyZDk5ZmM1YjBiZGQzODc4YzAxZmM3MzQwZjVl
N2RlZjAuLjM5MDQyNGFkZmE4MjQ4ZTZhMGQ3ZWNiNTc0M2NmOWEwOTU0Mjg2ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0zNjks
NiArMzY5LDcgQEAgV2ViSW5zcGVjdG9yLmRvTG9hZGVkRG9uZSA9IGZ1bmN0aW9uKCkKICAgICBQ
cm9maWxlckFnZW50LmlzU2FtcGxpbmcoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0
eS5iaW5kKFdlYkluc3BlY3RvciwgInNhbXBsaW5nQ1BVUHJvZmlsZXIiLCBudWxsKSk7CiAgICAg
UHJvZmlsZXJBZ2VudC5oYXNIZWFwUHJvZmlsZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2Fw
YWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImhlYXBQcm9maWxlclByZXNlbnQiLCBudWxsKSk7
CiAgICAgVGltZWxpbmVBZ2VudC5zdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKFdlYkluc3Bl
Y3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJ0aW1lbGluZVN1
cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24iLCBudWxsKSk7CisgICAgUGFnZUFnZW50LmlzRm9y
Y2VDb21wb3NpdGluZ01vZGVFbmFibGVkKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxp
dHkuYmluZChXZWJJbnNwZWN0b3IsICJpc0ZvcmNlQ29tcG9zaXRpbmdNb2RlRW5hYmxlZCIsIG51
bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VNZXRyaWNzKFdlYkluc3BlY3Rv
ci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJjYW5PdmVycmlkZURl
dmljZU1ldHJpY3MiLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlR2VvbG9jYXRp
b24oV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3Rvciwg
ImNhbk92ZXJyaWRlR2VvbG9jYXRpb24iLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJy
aWRlRGV2aWNlT3JpZW50YXRpb24oV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5i
aW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24iLCBXZWJJbnNw
ZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMuYmluZChXZWJJbnNwZWN0b3IpKSk7
CkBAIC00NzksNiArNDgwLDEzIEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFi
aWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmphdmFT
Y3JpcHREaXNhYmxlZC5nZXQoKSkKICAgICAgICAgUGFnZUFnZW50LnNldFNjcmlwdEV4ZWN1dGlv
bkRpc2FibGVkKHRydWUpOwogCisgICAgZnVuY3Rpb24gc3luY1Nob3dGUFNDb3VudGVyQ2FsbGJh
Y2soZXJyb3IsIHNob3cpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hv
d0ZQU0NvdW50ZXIuc2V0KHNob3cpOworICAgIH0KKworICAgIFBhZ2VBZ2VudC5zeW5jU2hvd0ZQ
U0NvdW50ZXIoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmdldCgpLCBzeW5j
U2hvd0ZQU0NvdW50ZXJDYWxsYmFjayk7CisKICAgICB0aGlzLmRvbUFnZW50Ll9lbXVsYXRlVG91
Y2hFdmVudHNDaGFuZ2VkKCk7CiAKICAgICBXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5sb2Fk
Q29tcGxldGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXgg
Yjc3OGYyOTZhNGUzMmIxY2NjY2IzMzcxNzY0MTY0ZjkyMGUzZDJmOS4uZmRiNzM5MTkyNTAxNWI5
YTNlMmM3NTUyOGYxOTI0M2NhYmQzMDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaApAQCAtNDY3LDYgKzQ2Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1NlbGVjdGlvbkVkaXRhYmxlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGlz
U2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBT
Q291bnRlcihib29sKSA9IDA7CisKICAgICAvLyBCZW5jaG1hcmtpbmcgc3VwcG9ydCAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFs
IFdlYlZpZXdCZW5jaG1hcmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0KCkgeyByZXR1cm4gMDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBs
LmNwcAppbmRleCBmODAyMGVmMGIzYTZiYTUyN2U2Y2FiZmMwOWVmZjhjYmYxZWVhYzY1Li43MGFm
OTQ1YWNlNGRhNzRkOWE1YTMzYzg2MzVhYTY1NjAxYzBiZTNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMTkwLDQgKzE5
MCwxNCBAQCBXZWJEZXZUb29sc0FnZW50SW1wbCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9v
bHNBZ2VudCgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4o
bV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOwogfQogCitib29sIEluc3BlY3Rv
ckNsaWVudEltcGw6OmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCkKK3sKKyAgICByZXR1cm4gbV9p
bnNwZWN0ZWRXZWJWaWV3LT5pc1Nob3dGUFNDb3VudGVyRmxhZ1NldCgpOworfQorCit2b2lkIElu
c3BlY3RvckNsaWVudEltcGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBt
X2luc3BlY3RlZFdlYlZpZXctPnNldFNob3dGUFNDb3VudGVyKHNob3cpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuaAppbmRleCAzNGRlMzVhMDk5MzA5ZjM1OGI4Mzc0ZTQyZTdiZTE1NDllNWQ3
ZThlLi4wZTllMmNjMzEyY2NkY2Q4NTJlYTNkNDc5ODc1NGI5MzdhODU2NzFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC04MSw2
ICs4MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhI
YXNoU2V0PGNvbnN0IHZvaWQqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkQWxs
b2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+Jik7CiAKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTaG93RlBTQ291bnRlckZsYWdTZXQoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViVGhyZWFk
OjpUYXNrT2JzZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFByb2Nlc3NUYXNrKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggOWYyYTg0NWRkZmY5
OGY4ODliYWZjNmFiMDFlNGRmNzY3NTIxNTdhZi4uZmY0MjAyZDAxMjU1YjgxNjc5M2YyNzc3ZDFk
NjY1ZmU3Y2U0YWM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcApAQCAtODM5LDYgKzgzOSwyMiBAQCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogV2ViVmll
d0ltcGw6OmJlbmNobWFya1N1cHBvcnQoKQogICAgIHJldHVybiAmbV9iZW5jaG1hcmtTdXBwb3J0
OwogfQogCitib29sIFdlYlZpZXdJbXBsOjppc1Nob3dGUFNDb3VudGVyRmxhZ1NldCgpCit7Cisg
ICAgcmV0dXJuIHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigpOworfQorCit2b2lkIFdl
YlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgid2Vi
a2l0IiwgIldlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlciIpOworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICAgICAgbG9hZEZvbnRBdGxhcygpOworI2VuZGlmCisgICAg
ICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7CisgICAgfQorfQor
CiBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50
JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3
S2V5RG93bikKQEAgLTM4OTgsNyArMzkxNCw2IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKIAogICAgICAgICBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncyBsYXllclRyZWVWaWV3U2V0dGluZ3M7CiAgICAgICAgIGxheWVy
VHJlZVZpZXdTZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBwYWdlKCktPnNldHRpbmdzKCkt
PmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKTsKLSAgICAgICAgbGF5ZXJUcmVlVmlld1NldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCk7CiAg
ICAgICAgIGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0
aW5nc0ltcGwoKS0+c2hvd1BsYXRmb3JtTGF5ZXJUcmVlKCk7CiAgICAgICAgIGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5zaG93UGFpbnRSZWN0cyA9IHNldHRpbmdzSW1wbCgpLT5zaG93UGFpbnRSZWN0
cygpOwogICAgICAgICBsYXllclRyZWVWaWV3U2V0dGluZ3MucmVuZGVyVlN5bmNFbmFibGVkID0g
c2V0dGluZ3NJbXBsKCktPnJlbmRlclZTeW5jRW5hYmxlZCgpOwpAQCAtMzkzMiwxNCArMzk0Nywx
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgICAgICBpZiAobV9wYWdlT3ZlcmxheXMpCiAgICAgICAgICAg
ICAgICAgbV9wYWdlT3ZlcmxheXMtPnVwZGF0ZSgpOwogCi0gICAgICAgICAgICAvLyBPbmx5IGFs
bG9jYXRlIHRoZSBmb250IGF0bGFzIGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMt
dXAgZGlzcGxheS4KLSAgICAgICAgICAgIGlmIChsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd0ZQ
U0NvdW50ZXIgfHwgbGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSkg
ewotICAgICAgICAgICAgICAgIFRSQUNFX0VWRU5UMCgiY2MiLCAiV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSh0cnVlKSBpbml0aWFsaXplIGZvbnQgYXRsYXMi
KTsKLSAgICAgICAgICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICAg
ICAgICAgICAgICBpbnQgZm9udEhlaWdodDsKLSAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRt
YXAgPSBXZWJDb3JlOjpDb21wb3NpdG9ySFVERm9udEF0bGFzOjpnZW5lcmF0ZUZvbnRBdGxhcyhh
c2NpaVRvUmVjdFRhYmxlLCBmb250SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX2xheWVyVHJl
ZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5z
aG93UGxhdGZvcm1MYXllclRyZWUpCisgICAgICAgICAgICAgICAgbG9hZEZvbnRBdGxhcygpOwor
CisgICAgICAgICAgICBpZiAoaXNTaG93RlBTQ291bnRlckZsYWdTZXQoKSkKKyAgICAgICAgICAg
ICAgICBzZXRTaG93RlBTQ291bnRlcih0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNsZWFyKCk7CiAgICAgICAgICAgICBtX2lz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IGZhbHNlOwpAQCAtMzk1MSw2ICszOTYzLDE4
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShi
b29sIGFjdGl2ZSkKICAgICAgICAgcGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXRDbGlw
c1JlcGFpbnRzKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk7CiB9CiAKK3ZvaWQg
V2ViVmlld0ltcGw6OmxvYWRGb250QXRsYXMoKQoreworICAgIEFTU0VSVChtX2xheWVyVHJlZVZp
ZXcpOworICAgIGlmICghbV9sYXllclRyZWVWaWV3LT5oYXNGb250QXRsYXMoKSkgeworICAgICAg
ICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhcyIpOwor
ICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKKyAgICAgICAgaW50IGZvbnRI
ZWlnaHQ7CisgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6OkNvbXBvc2l0b3JIVURG
b250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQp
OworICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9S
ZWN0VGFibGUsIGZvbnRIZWlnaHQpOworICAgIH0KK30KKwogI2VuZGlmCiAKIG5hbWVzcGFjZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA0NzkwN2YxMjQx
N2UzZjIyMGFjOGIwMGY5MzYwYWVmYWFhMGRhZjQyLi4yMjAwODJlZDM4OGQyYmJjMDM3ZWU0MTY1
MmNlNTYwNTUxMGZiZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKQEAgLTMwNiw2ICszMDYsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxp
bmdQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVu
Y2htYXJrU3VwcG9ydCgpOworICAgIHZpcnR1YWwgYm9vbCBpc1Nob3dGUFNDb3VudGVyRmxhZ1Nl
dCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKTsKIAogICAgIC8v
IFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUo
KTsKQEAgLTY0OSw2ICs2NTEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9QaXhlbFJlYWRiYWNr
VG9DYW52YXMoV2ViQ2FudmFzKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQg
cmVhbGxvY2F0ZVJlbmRlcmVyKCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclRyZWVWaWV3cG9ydCgp
OworICAgIHZvaWQgbG9hZEZvbnRBdGxhcygpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171500</attachid>
            <date>2012-10-30 12:27:51 -0700</date>
            <delta_ts>2012-11-06 12:05:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121030122616.patch</filename>
            <type>text/plain</type>
            <size>21394</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAyMTJkZDY2ZjViNzdm
ZmJjYzA5OTMwNjJjM2JkZmVmZjE3NTUyMWVjLi4yZjc3ZmIxYWRiYjk1MWVlY2QzMGFjNWRjZGZl
ZWFiNDlkYjA5N2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMC0zMCAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yLiBUaGUgY2hl
Y2tib3ggaXMgb25seSBzaG93biBpZiAnZm9yY2UgY29tcG9zaXRpbmcgbW9kZScgaXMgYWN0aXZl
LgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDoKKyAgICAg
ICAgKFdlYkxheWVyVHJlZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3
OjpzZXRTaG93RlBTQ291bnRlcik6CisKIDIwMTItMTAtMjYgIENocmlzdG9waGVyIENhbWVyb24g
IDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgYWRkaXRp
b25hbCBtZW1vcnkgbWFuYWdlbWVudCBmaWVsZHMgdG8gV2ViR3JhcGhpY3NDb250ZXh0M0QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAzODJhNTRjZjVkODFjMDc0ZTJlYTM2NTg2MzZlNjBkYTJiNTkyMTJkLi45OGVk
NjhkM2FhMTczMWU3N2FjMTcwYWVkOGQyYjRiMTE5YTIxZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTItMTAtMzAgIEViZXJoYXJkIEdyYWV0aGVyICA8ZWdyYWV0aGVyQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgdG9nZ2xlIEZQUyBjb3VudGVyIG9wdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94IHRvIHRo
ZSBXZWIgSW5zcGVjdG9yJ3Mgc2V0dGluZ3MgdG8gdG9nZ2xlIHRoZSBGUFMgY291bnRlciBpbiB0
aGUgY29tcG9zaXRvci4gVGhlIGNoZWNrYm94IGlzIG9ubHkgc2hvd24gaWYgJ2ZvcmNlIGNvbXBv
c2l0aW5nIG1vZGUnIGlzIGFjdGl2ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChJ
bnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50Ojppc1No
b3dGUFNDb3VudGVyRmxhZ1NldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6
OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c3luY1Nob3dG
UFNDb3VudGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmlzRm9yY2VDb21wb3NpdGluZ01vZGVFbmFibGVkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzU2NyZWVuLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYik6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiLnByb3RvdHlwZS5nZXQg
X3Nob3dGUFNDb3VudGVyQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcy5zeW5jU2hvd0ZQ
U0NvdW50ZXJDYWxsYmFjayk6CisKIDIwMTItMTAtMjkgIEdsZW5uIEFkYW1zICA8Z2xlbm5Ac2t5
bmF2LmNvbT4KIAogICAgICAgICBbQ1NTT01dIEV4dHJhbmVvdXMgd2hpdGVzcGFjZSBpbiBDU1NJ
bXBvcnRSdWxlLmNzc1RleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYWZjOTM5Mzll
YzVkMWZhMjJkMWQxNWNjNTJkN2Q1NWFmZmQwOTQ2ZC4uMzVhMjg5ZGViNDhhNjQ2OTQ2ODQ4MTQ2
OTg2ZjRlOTJhYTgzZDJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
MCBAQAorMjAxMi0xMC0zMCAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNv
bT4KKworICAgICAgICB0b2dnbGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdl
YiBJbnNwZWN0b3IncyBzZXR0aW5ncyB0byB0b2dnbGUgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBj
b21wb3NpdG9yLiBUaGUgY2hlY2tib3ggaXMgb25seSBzaG93biBpZiAnZm9yY2UgY29tcG9zaXRp
bmcgbW9kZScgaXMgYWN0aXZlLgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAg
ICAgKFdlYlZpZXcpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6aXNTaG93RlBTQ291bnRlckZsYWdT
ZXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50
SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aXNTaG93RlBTQ291bnRlckZsYWdTZXQp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFNo
b3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjps
b2FkRm9udEF0bGFzKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdl
YlZpZXdJbXBsKToKKwogMjAxMi0xMC0yOSAgUGF0cmljayBEdWJyb3kgIDxkdWJyb3lAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN0eWxlIHRvb2xiYXIgdG8gbWF0Y2gg
Q2hyb21pdW0gdG9vbGJhciBvbiBDaHJvbWl1bS9NYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmluZGV4IDM3Y2M4NmVhNjZiY2Q5
ZmI1YzAyMWU1ZjU3YTRjMGJlYmRjZmJiZWMuLjg5ZGQ5YTg5MDA1NjU0ZTU1MTZhMjBkZjllM2Y3
ZTk0NDcyOTFiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0xNjMsNiArMTYzLDkgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJs
b2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmlu
Z1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3QgPSAwOwogCisgICAgLy8gVG9nZ2xlcyB0
aGUgRlBTIGNvdW50ZXIgaW4gdGhlIEhVRCBsYXllcgorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93
RlBTQ291bnRlcihib29sKSB7IH0KKwogICAgIC8vIFByb3ZpZGVzIGEgZm9udCBhdGxhcyB0byB1
c2UgZm9yIGRlYnVnIHZpc3VhbGl6YXRpb25zLiBUaGUgYXRsYXMgbXVzdCBiZSBhIGJpdG1hcCBj
b250YWluaW5nIGdseXBoIGRhdGEsIGEgdGFibGUgb2YKICAgICAvLyBBU0NJSSBjaGFyYWN0ZXIg
dmFsdWVzIHRvIGEgc3VicmVjdGFuZ2xlIG9mIHRoZSBhdGxhcyByZXByZXNlbnRpbmcgdGhlIGNv
cnJlc3BvbmRpbmcgZ2x5cGgsIGFuZCB0aGUgZ2x5cGggaGVpZ2h0LgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb250QXRsYXMoU2tCaXRtYXAsIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBp
bnQgZm9udEhlaWdodCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CmluZGV4IGU2MTU3ZGM3YmExN2Y1ZjRhYjJlZDYzYzNmY2NhOWY0ZjFlNjk4NDIuLjEyMmYwZjdh
MjQxYmU2MzBlYWYxNWQ4YWRmMTc5OGMxNjlhZWNkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KQEAgLTMzOCw2ICszMzgsMjUgQEAKICAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJzeW5jU2hvd0ZQU0NvdW50ZXIiLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJTeW5jaHJvbml6ZXMgdGhlIHNob3dGUFNDb3VudGVyIHNldHRpbmcgd2l0aCB0
aGUgYmFja2VuZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAic2hvdyIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiQ3VycmVudCBzdGF0ZSBvZiBzaG93RlBTQ291bnRlciBzZXR0aW5nIiB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIk5ldyBzdGF0ZSBmb3Igc2hvd0ZQU0NvdW50ZXIgc2V0dGluZyIgfQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0U2hvd0ZQU0NvdW50ZXIi
LAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQg
c2hvd3MgdGhlIEZQUyBjb3VudGVyIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcgdGhlIEZQUyBjb3VudGVyIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTY3Jp
cHRFeGVjdXRpb25TdGF0dXMiLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXRl
cm1pbmVzIGlmIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkIGluIHRoZSBwYWdlLiIsCiAgICAgICAg
ICAgICAgICAgInJldHVybnMiOiBbCkBAIC00MjAsNiArNDM5LDE0IEBACiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidmlzaWJsZSIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRp
b24iOiAiVHJ1ZSBmb3Igc2hvd2luZyBjb21wb3NpdGluZyBib3JkZXJzLiIgfQogICAgICAgICAg
ICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiaXNGb3JjZUNvbXBvc2l0
aW5nTW9kZUVuYWJsZWQiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDaGVja3Mg
aWYgYmFja2VuZCBoYXMgZm9yY2VkIGNvbXBvc2l0aW5nIG1vZGUiLAorICAgICAgICAgICAgICAg
ICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICJ0
eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiBmb3JjZSBjb21wb3NpdGlu
ZyBtb2RlIGlzIGVuYWJsZWQiIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAg
ICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVu
dHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
YTQyYzJhYWJjMTY2YzU5YjJjNGY2MTNkNWQzMDM1YmRlNDEwODAzYi4uNmRlMTk5M2FiNGRiNzg3
ZjE3YjQyM2RmMWE3NmEyMmQzMjUxYjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDbGllbnQuaApAQCAtNzgsNiArNzgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGR1bXBVbmNvdW50ZWRBbGxvY2F0ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9p
ZCosIHNpemVfdD4mKSB7IH0KIAogICAgIHN0YXRpYyBib29sIGRvRGlzcGF0Y2hNZXNzYWdlT25G
cm9udGVuZFBhZ2UoUGFnZSogZnJvbnRlbmRQYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwor
CisgICAgdmlydHVhbCBib29sIGlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgeyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDUzNzkzYTM3OTk1N2FkMDBlNzk5NTBlZTc2ZDZi
ZjNkNWNkMjAwYmEuLjkwYWJmNDNkYzNiYzM1N2NhY2I2YjM3ZWQzM2FkZDM4N2U1MWI0ODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBA
IC03MTQsNiArNzE0LDE5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93UGFpbnRS
ZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUo
KS0+dmlldygpLT5pbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojpz
eW5jU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBib29sIGluUGFyYW0s
IGJvb2wqIG91dFBhcmFtKQoreworICAgICpvdXRQYXJhbSA9IGluUGFyYW0gfHwgbV9jbGllbnQt
PmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCk7CisgICAgaWYgKCpvdXRQYXJhbSkKKyAgICAgICAg
c2V0U2hvd0ZQU0NvdW50ZXIoZXJyb3JTdHJpbmcsICpvdXRQYXJhbSk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hv
dykKK3sKKyAgICBtX2NsaWVudC0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7CisgICAgbV9wYWdl
LT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcqLCBQYWdlQ29t
bWFuZEhhbmRsZXI6OlJlc3VsdDo6RW51bSogc3RhdHVzKQogewogICAgIGJvb2wgZGlzYWJsZWRC
eVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKQEAgLTExMjEsNiArMTEzNCwxMSBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmlu
ZyosIGJvb2wgdmlzaWJsZQogICAgIHNldHRpbmdzLT5zZXRTaG93UmVwYWludENvdW50ZXIodmlz
aWJsZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojppc0ZvcmNlQ29tcG9zaXRpbmdN
b2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQoreworICAgICpvdXRQYXJh
bSA9IG1fcGFnZS0+c2V0dGluZ3MoKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAyNzY4YmIx
N2ZiZTI4NmNmNjU1NDljNzY5MDMxYjVlYmRmZTI5MmFmLi4zMmYxYjQwZTkzYzZlMDM1MmMwODQ1
YTRiMGYxNjJjNWFkNjc1NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCkBAIC0xMDksNiArMTA5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBjYW5PdmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAg
dmlydHVhbCB2b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3
aWR0aCwgaW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wg
c2hvdyk7CisgICAgdmlydHVhbCB2b2lkIHN5bmNTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyos
IGJvb2wgaW5QYXJhbSwgYm9vbCogb3V0UGFyYW0pOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93
RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7CiAgICAgdmlydHVhbCB2b2lkIGdl
dFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGxlcjo6
UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdEV4ZWN1dGlvbkRpc2Fi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEdlb2xvY2F0aW9u
T3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3VibGUqLCBjb25zdCBkb3VibGUqLCBjb25z
dCBkb3VibGUqKTsKQEAgLTEyMCw2ICsxMjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFRvdWNoRW11bGF0aW9uRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCog
b3V0X3BhcmFtKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJs
ZShFcnJvclN0cmluZyosIGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBpc0ZvcmNlQ29tcG9zaXRp
bmdNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKTsKIAogICAgIC8vIEdl
b2xvY2F0aW9uIG92ZXJyaWRlIGhlbHBlcnMuCiAgICAgR2VvbG9jYXRpb25Qb3NpdGlvbiogb3Zl
cnJpZGVHZW9sb2NhdGlvblBvc2l0aW9uKEdlb2xvY2F0aW9uUG9zaXRpb24qKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGRkNTgyZjA2
ZDI2MDk3NTZkZWM1OGY1OTc3MjQzZGQwMzQ5NzEyMjYuLmU1N2IyYzExYTUyZGE2MTc1MWZmYmQ5
MjNmM2VlM2U1YzZkMTY4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TZXR0aW5ncy5qcwpAQCAtNTgsNiArNTgsNyBAQCB2YXIgQ2FwYWJpbGl0aWVzID0gewog
ICAgIGNhbk1vbml0b3JNYWluVGhyZWFkOiBmYWxzZSwKICAgICBjYW5PdmVycmlkZUdlb2xvY2F0
aW9uOiBmYWxzZSwKICAgICBjYW5PdmVycmlkZURldmljZU9yaWVudGF0aW9uOiBmYWxzZSwKKyAg
ICBpc0ZvcmNlQ29tcG9zaXRpbmdNb2RlRW5hYmxlZDogZmFsc2UKIH0KIAogLyoqCkBAIC05Niw2
ICs5Nyw3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLnNo
b3dTY3JpcHRGb2xkZXJzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93U2NyaXB0Rm9sZGVycyIs
IHRydWUpOwogICAgIHRoaXMuZW11bGF0ZVRvdWNoRXZlbnRzID0gdGhpcy5jcmVhdGVTZXR0aW5n
KCJlbXVsYXRlVG91Y2hFdmVudHMiLCBmYWxzZSk7CiAgICAgdGhpcy5zaG93UGFpbnRSZWN0cyA9
IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1BhaW50UmVjdHMiLCBmYWxzZSk7CisgICAgdGhpcy5z
aG93RlBTQ291bnRlciA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd0ZQU0NvdW50ZXIiLCBmYWxz
ZSk7CiAgICAgdGhpcy5zaG93U2hhZG93RE9NID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93U2hh
ZG93RE9NIiwgZmFsc2UpOwogICAgIHRoaXMuem9vbUxldmVsID0gdGhpcy5jcmVhdGVTZXR0aW5n
KCJ6b29tTGV2ZWwiLCAwKTsKICAgICB0aGlzLnNhdmVkVVJMcyA9IHRoaXMuY3JlYXRlU2V0dGlu
Zygic2F2ZWRVUkxzIiwge30pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKaW5kZXggMjc5Mzc1YTkwYzQ4NTc1M2M1YWRjMGQ2
ZjE5ODllNzg3ZTA0ZjNjZS4uMjQ1NGJjMWFmYzFhOWIyMmI1MTFjMTNmMzkzYTcyOWU2YTJiMzRm
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzU2NyZWVuLmpzCkBAIC0yNzIsNiArMjcyLDExIEBAIFdlYkluc3BlY3Rvci5HZW5lcmljU2V0
dGluZ3NUYWIgPSBmdW5jdGlvbigpCiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVj
a2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHBhaW50IHJlY3RhbmdsZXMi
KSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzKSk7CiAgICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzLmFkZENoYW5nZUxpc3RlbmVyKHRoaXMuX3Nob3dQ
YWludFJlY3RzQ2hhbmdlZCwgdGhpcyk7CiAKKyAgICBpZiAoQ2FwYWJpbGl0aWVzLmlzRm9yY2VD
b21wb3NpdGluZ01vZGVFbmFibGVkKSB7CisgICAgICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3Jl
YXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygic2hvdyBGUFMgZGlzcGxh
eSIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIpKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmFkZENoYW5nZUxpc3RlbmVyKHRoaXMu
X3Nob3dGUFNDb3VudGVyQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCiAgICAgcCA9IHRoaXMuX2Fw
cGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2VzIikpOwogICAgIHAuYXBw
ZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyBmb2xkZXJzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVy
cykpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIGluIGNvbnRlbnQgc2NyaXB0cyIpLCBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3Muc2VhcmNoSW5Db250ZW50U2NyaXB0cykpOwpAQCAtMzA1LDYgKzMxMCwxMSBA
QCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiLnByb3RvdHlwZSA9IHsKICAgICAgICAg
UGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFp
bnRSZWN0cy5nZXQoKSk7CiAgICAgfSwKIAorICAgIF9zaG93RlBTQ291bnRlckNoYW5nZWQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93RlBTQ291bnRlcihXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkpOworICAgIH0sCisKICAgICBf
dXBkYXRlU2NyaXB0RGlzYWJsZWRDaGVja2JveDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAg
ZnVuY3Rpb24gZXhlY3V0aW9uU3RhdHVzQ2FsbGJhY2soZXJyb3IsIHN0YXR1cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggMjE1NWNm
M2ZhZjMwZGNiMjE1ODI0NDNkZjU4Y2ExZWIyN2MxOTk2NS4uZDAzMTFmODA4MDAzNDI4YTg3MDE4
MzY5MDJhNjhlOWM3MzQwYTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM3MCw2ICszNzAsNyBAQCBXZWJJbnNwZWN0b3IuZG9M
b2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIFByb2ZpbGVyQWdlbnQuaGFzSGVhcFByb2ZpbGVy
KFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJo
ZWFwUHJvZmlsZXJQcmVzZW50IiwgbnVsbCkpOwogICAgIFRpbWVsaW5lQWdlbnQuc3VwcG9ydHNG
cmFtZUluc3RydW1lbnRhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJp
bmQoV2ViSW5zcGVjdG9yLCAidGltZWxpbmVTdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uIiwg
bnVsbCkpOwogICAgIFRpbWVsaW5lQWdlbnQuY2FuTW9uaXRvck1haW5UaHJlYWQoV2ViSW5zcGVj
dG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgInRpbWVsaW5lQ2Fu
TW9uaXRvck1haW5UaHJlYWQiLCBudWxsKSk7CisgICAgUGFnZUFnZW50LmlzRm9yY2VDb21wb3Np
dGluZ01vZGVFbmFibGVkKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChX
ZWJJbnNwZWN0b3IsICJpc0ZvcmNlQ29tcG9zaXRpbmdNb2RlRW5hYmxlZCIsIG51bGwpKTsKICAg
ICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VNZXRyaWNzKFdlYkluc3BlY3Rvci5faW5pdGlh
bGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJjYW5PdmVycmlkZURldmljZU1ldHJp
Y3MiLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlR2VvbG9jYXRpb24oV2ViSW5z
cGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJy
aWRlR2VvbG9jYXRpb24iLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlRGV2aWNl
T3JpZW50YXRpb24oV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYklu
c3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24iLCBXZWJJbnNwZWN0b3IuX2Rv
TG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMuYmluZChXZWJJbnNwZWN0b3IpKSk7CkBAIC00ODIs
NiArNDgzLDEzIEBAIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9
IGZ1bmN0aW9uKCkKICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmphdmFTY3JpcHREaXNh
YmxlZC5nZXQoKSkKICAgICAgICAgUGFnZUFnZW50LnNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVk
KHRydWUpOwogCisgICAgZnVuY3Rpb24gc3luY1Nob3dGUFNDb3VudGVyQ2FsbGJhY2soZXJyb3Is
IHNob3cpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50
ZXIuc2V0KHNob3cpOworICAgIH0KKworICAgIFBhZ2VBZ2VudC5zeW5jU2hvd0ZQU0NvdW50ZXIo
V2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmdldCgpLCBzeW5jU2hvd0ZQU0Nv
dW50ZXJDYWxsYmFjayk7CisKICAgICB0aGlzLmRvbUFnZW50Ll9lbXVsYXRlVG91Y2hFdmVudHND
aGFuZ2VkKCk7CiAKICAgICBXZWJJbnNwZWN0b3IuV29ya2VyTWFuYWdlci5sb2FkQ29tcGxldGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYjc3OGYyOTZh
NGUzMmIxY2NjY2IzMzcxNzY0MTY0ZjkyMGUzZDJmOS4uZmRiNzM5MTkyNTAxNWI5YTNlMmM3NTUy
OGYxOTI0M2NhYmQzMDc2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aApAQCAtNDY3LDYgKzQ2Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVj
dGlvbkVkaXRhYmxlKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBib29sIGlzU2hvd0ZQU0Nv
dW50ZXJGbGFnU2V0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihi
b29sKSA9IDA7CisKICAgICAvLyBCZW5jaG1hcmtpbmcgc3VwcG9ydCAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICB2aXJ0dWFsIFdlYlZpZXdC
ZW5jaG1hcmtTdXBwb3J0KiBiZW5jaG1hcmtTdXBwb3J0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAppbmRl
eCBjNmU3YjIyNzcxNzNjYjAzMTU4MjllNTA3MTIxYzdlYWQxN2MxMzlhLi45Y2E3Mjc1YTkzOTRk
NjhiMTRiNTc3YTQzZWRjNGZiNmMxYzUyM2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcApAQCAtMTk1LDQgKzE5NSwxNCBAQCBX
ZWJEZXZUb29sc0FnZW50SW1wbCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9vbHNBZ2VudCgp
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0
ZWRXZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOwogfQogCitib29sIEluc3BlY3RvckNsaWVudElt
cGw6OmlzU2hvd0ZQU0NvdW50ZXJGbGFnU2V0KCkKK3sKKyAgICByZXR1cm4gbV9pbnNwZWN0ZWRX
ZWJWaWV3LT5pc1Nob3dGUFNDb3VudGVyRmxhZ1NldCgpOworfQorCit2b2lkIEluc3BlY3RvckNs
aWVudEltcGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBtX2luc3BlY3Rl
ZFdlYlZpZXctPnNldFNob3dGUFNDb3VudGVyKHNob3cpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAppbmRleCA3NWUxZTQzNDJiMzZmMDAwMmMzZTc5NzYxYmQ0NjE3Nzc2ZjQxZDI5Li4xNDk5
NmI0OTA1MzI4MTRiZTA1MzI5ZTQ2ZGQwNjllMWQwZjRlNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC04Miw2ICs4Miw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNv
bnN0IHZvaWQqPiYpOwogICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkQWxsb2NhdGVkT2Jq
ZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+Jik7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTaG93RlBTQ291bnRlckZsYWdTZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hv
d0ZQU0NvdW50ZXIoYm9vbCk7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViVGhyZWFkOjpUYXNrT2Jz
ZXJ2ZXIKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFByb2Nlc3NUYXNrKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZDM3Nzg3MWJjNzI2YmQ3OTliNzU5
MDg4ZDcxMGQwNTkzMmU4MTI1Yi4uOTg0YzUzNmM3YjI4ZGUxYTk5NjkxNGM3YzVmM2QyZGFkNWI3
NGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAt
NDI0LDYgKzQyNCw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQpCiAgICAgLCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHkoZmFsc2UpCiAgICAgLCBtX2Rl
dmljZVNjYWxlSW5Db21wb3NpdG9yKDEpCiAgICAgLCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIo
LTEpCisgICAgLCBtX2lzRm9udEF0bGFzTG9hZGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxF
KElOUFVUX1NQRUVDSCkKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGll
bnRJbXBsOjpjcmVhdGUoY2xpZW50KSkKQEAgLTgyOSw2ICs4MzAsMjIgQEAgV2ViVmlld0JlbmNo
bWFya1N1cHBvcnQqIFdlYlZpZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkKICAgICByZXR1cm4g
Jm1fYmVuY2htYXJrU3VwcG9ydDsKIH0KIAorYm9vbCBXZWJWaWV3SW1wbDo6aXNTaG93RlBTQ291
bnRlckZsYWdTZXQoKQoreworICAgIHJldHVybiBzZXR0aW5nc0ltcGwoKS0+c2hvd0ZQU0NvdW50
ZXIoKTsKK30KKwordm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93
KQoreworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAgICAg
ICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIi
KTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIGxvYWRGb250QXRs
YXMoKTsKKyNlbmRpZgorICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldFNob3dGUFNDb3VudGVy
KHNob3cpOworICAgIH0KK30KKwogYm9vbCBXZWJWaWV3SW1wbDo6aGFuZGxlS2V5RXZlbnQoY29u
c3QgV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiB7CiAgICAgQVNTRVJUKChldmVudC50eXBlID09
IFdlYklucHV0RXZlbnQ6OlJhd0tleURvd24pCkBAIC0zOTQ4LDE3ICszOTY1LDE1IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2
ZSkKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRBY3RpdmF0ZUNvbXBvc2l0b3IobV9pbnB1dEhh
bmRsZXJJZGVudGlmaWVyKTsKICAgICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlID0gdHJ1ZTsKICAgICAgICAgICAgIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkID0g
ZmFsc2U7CisgICAgICAgICAgICBtX2lzRm9udEF0bGFzTG9hZGVkID0gZmFsc2U7CiAgICAgICAg
ICAgICBpZiAobV9wYWdlT3ZlcmxheXMpCiAgICAgICAgICAgICAgICAgbV9wYWdlT3ZlcmxheXMt
PnVwZGF0ZSgpOwogCi0gICAgICAgICAgICAvLyBPbmx5IGFsbG9jYXRlIHRoZSBmb250IGF0bGFz
IGlmIHdlIGhhdmUgcmVhc29uIHRvIHVzZSB0aGUgaGVhZHMtdXAgZGlzcGxheS4KLSAgICAgICAg
ICAgIGlmIChsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIgfHwgbGF5ZXJUcmVl
Vmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxheWVyVHJlZSkgewotICAgICAgICAgICAgICAgIFRS
QUNFX0VWRU5UMCgiY2MiLCAiV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSh0cnVlKSBpbml0aWFsaXplIGZvbnQgYXRsYXMiKTsKLSAgICAgICAgICAgICAgICBX
ZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVbMTI4XTsKLSAgICAgICAgICAgICAgICBpbnQgZm9udEhl
aWdodDsKLSAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBXZWJDb3JlOjpDb21wb3Np
dG9ySFVERm9udEF0bGFzOjpnZW5lcmF0ZUZvbnRBdGxhcyhhc2NpaVRvUmVjdFRhYmxlLCBmb250
SGVpZ2h0KTsKLSAgICAgICAgICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZvbnRBdGxhcyhi
aXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUp
CisgICAgICAgICAgICAgICAgbG9hZEZvbnRBdGxhcygpOworCisgICAgICAgICAgICBpZiAoaXNT
aG93RlBTQ291bnRlckZsYWdTZXQoKSkKKyAgICAgICAgICAgICAgICBzZXRTaG93RlBTQ291bnRl
cih0cnVlKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmNsZWFyKCk7CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSA9IGZhbHNlOwpAQCAtMzk3MCw2ICszOTg1LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpLT5zZXRDbGlwc1JlcGFpbnRzKCFtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmxvYWRGb250
QXRsYXMoKQoreworICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcpOworICAgIGlmICghbV9pc0Zv
bnRBdGxhc0xvYWRlZCkgeworICAgICAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3
SW1wbDo6bG9hZEZvbnRBdGxhcyIpOworICAgICAgICBXZWJSZWN0IGFzY2lpVG9SZWN0VGFibGVb
MTI4XTsKKyAgICAgICAgaW50IGZvbnRIZWlnaHQ7CisgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9
IFdlYkNvcmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lp
VG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOworICAgICAgICBtX2xheWVyVHJlZVZpZXctPnNldEZv
bnRBdGxhcyhiaXRtYXAsIGFzY2lpVG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOworICAgICAgICBt
X2lzRm9udEF0bGFzTG9hZGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKICNlbmRpZgogCiBuYW1lc3Bh
Y2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggYzYzMjM5
OTdmMmNmMmRmZmIyNTBmMWJlOTM5MmViOGM2NTljMjcyOS4uZWFmMDkwMzA2MjRjNzUwYzhlN2Vm
OTZmMTQ0NDE2MzA0NGFiMGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC0zMDcsNiArMzA3LDggQEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVl
bEZsaW5nUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwgV2ViVmlld0JlbmNobWFya1N1cHBvcnQq
IGJlbmNobWFya1N1cHBvcnQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTaG93RlBTQ291bnRlckZs
YWdTZXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAKICAg
ICAvLyBXZWJMYXllclRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZy
YW1lKCk7CkBAIC02NTIsNiArNjU0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUGl4ZWxSZWFk
YmFja1RvQ2FudmFzKFdlYkNhbnZhcyosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2
b2lkIHJlYWxsb2NhdGVSZW5kZXJlcigpOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmVlVmlld3Bv
cnQoKTsKKyAgICB2b2lkIGxvYWRGb250QXRsYXMoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQpAQCAtODQzLDYgKzg0Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Nv
bXBvc2l0b3JTdXJmYWNlUmVhZHk7CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRv
cjsKICAgICBpbnQgbV9pbnB1dEhhbmRsZXJJZGVudGlmaWVyOworICAgIGJvb2wgbV9pc0ZvbnRB
dGxhc0xvYWRlZDsKICNlbmRpZgogICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1
cnJlbnRJbnB1dEV2ZW50OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172629</attachid>
            <date>2012-11-06 12:05:15 -0800</date>
            <delta_ts>2012-11-08 17:30:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121106120328.patch</filename>
            <type>text/plain</type>
            <size>18765</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwMzNkZjFkMDg3Y2U5
YjhhZWU1OWI0YWRmYWE4OTc1OWJhMjE5ZjA3Li4wNWU4NGU1MzkwYzAyYTJmODFjOTYzMjBhZjhh
MjcwY2I5NGIyMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0wNiAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICB0b2dn
bGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIFdlYiBJbnNwZWN0b3IncyBzZXR0
aW5ncyBmb3IgdG9nZ2xpbmcgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBjb21wb3NpdG9yJ3MgSFVE
TGF5ZXIuIFRoZSBjaGVja2JveCBpcyBvbmx5IHNob3duIGlmICJmb3JjZSBjb21wb3NpdGluZyBt
b2RlIiBpcyBhY3RpdmUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMC0yMyAgU3RlcGhl
biBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbc2tpYV0gSW1w
bGVtZW50IHJlZmVyZW5jZSAodXJsKSBmaWx0ZXJzIG9uIGNvbXBvc2l0ZWQgbGF5ZXJzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDY2MWE5NWNhNjU3M2RjY2JiYjBmMTdmYmM2ZTNiNzFjNDA0Zjc4ZDAuLjczNThi
MjkyNzRlYTc5NmI3ZWFjMTYzNmZiZWZlNzUxOTBmYzJiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMi0xMS0wNiAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xl
LmNvbT4KKworICAgICAgICB0b2dnbGUgRlBTIGNvdW50ZXIgb3B0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhl
IFdlYiBJbnNwZWN0b3IncyBzZXR0aW5ncyBmb3IgdG9nZ2xpbmcgdGhlIEZQUyBjb3VudGVyIGlu
IHRoZSBjb21wb3NpdG9yJ3MgSFVETGF5ZXIuIFRoZSBjaGVja2JveCBpcyBvbmx5IHNob3duIGlm
ICJmb3JjZSBjb21wb3NpdGluZyBtb2RlIiBpcyBhY3RpdmUuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
OgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50Ojpz
ZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3Jl
ZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlLmdldCBfc2hvd0ZQ
U0NvdW50ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgorCiAyMDEyLTExLTA2
ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGdvb2dsZS5jb20+CiAKICAgICAgICAgQWRk
ZWQgY29uc29sZS5jbGVhcigpIG1ldGhvZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAx
NjVkMzAwZDQ3NTVmOGZhZWUxZDI0MGM5YTliNTcxMzBjOGZhMTEyLi5jZmYzMmNhMTg5YmYzNmIw
YjU5NDE0ZDkxMzUzNWVjNzgzNzg3MmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI4IEBACisyMDEyLTExLTA2ICBFYmVyaGFyZCBHcmFldGhlciAgPGVncmFldGhlckBn
b29nbGUuY29tPgorCisgICAgICAgIHRvZ2dsZSBGUFMgY291bnRlciBvcHRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjaGVja2JveCB0
byB0aGUgV2ViIEluc3BlY3RvcidzIHNldHRpbmdzIGZvciB0b2dnbGluZyB0aGUgRlBTIGNvdW50
ZXIgaW4gdGhlIGNvbXBvc2l0b3IncyBIVURMYXllci4gVGhlIGNoZWNrYm94IGlzIG9ubHkgc2hv
d24gaWYgImZvcmNlIGNvbXBvc2l0aW5nIG1vZGUiIGlzIGFjdGl2ZS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBzcmMvSW5zcGVj
dG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6
OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudEltcGwpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRTaG93RlBT
Q291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMTEtMDYgIFN0ZXBo
ZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZC4gIFJvbGxlZCBERVBTLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllclRyZWVWaWV3LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCAzNDUwNDVhZDRjOGYyZjM1NTZmOWRlMDIyZDFlY2Mw
MWEwMDkzYzM2Li5jZDkxMWVkOTYxMDJhMWFlYjNiZjIzN2NhMWM4MjA2MDk3NTlmZjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aApAQCAtMTY5LDYgKzE2OSw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGNhbGwgaXMgcmVsYXRp
dmVseSBleHBlbnNpdmUgaW4gdGhyZWFkZWQgbW9kZSBhcyBpdCBibG9ja3Mgb24gdGhlIGNvbXBv
c2l0b3IgdGhyZWFkLgogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJp
bmdTdGF0cyYpIGNvbnN0ID0gMDsKIAorICAgIC8vIFRvZ2dsZXMgdGhlIEZQUyBjb3VudGVyIGlu
IHRoZSBIVUQgbGF5ZXIKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkg
eyB9CisKICAgICAvLyBQcm92aWRlcyBhIGZvbnQgYXRsYXMgdG8gdXNlIGZvciBkZWJ1ZyB2aXN1
YWxpemF0aW9ucy4gVGhlIGF0bGFzIG11c3QgYmUgYSBiaXRtYXAgY29udGFpbmluZyBnbHlwaCBk
YXRhLCBhIHRhYmxlIG9mCiAgICAgLy8gQVNDSUkgY2hhcmFjdGVyIHZhbHVlcyB0byBhIHN1YnJl
Y3RhbmdsZSBvZiB0aGUgYXRsYXMgcmVwcmVzZW50aW5nIHRoZSBjb3JyZXNwb25kaW5nIGdseXBo
LCBhbmQgdGhlIGdseXBoIGhlaWdodC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFzKFdl
YlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdLCBjb25zdCBTa0JpdG1hcCYsIGludCBmb250SGVp
Z2h0KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA1N2Jk
NzlhNzJmYzBkODg5NjcxZjBmY2JmNmIzOWY5YjllYzQ5Y2FmLi42M2M3YmFmZjMyYjQ5ODkxMWYz
YTVkODUxOTViMTQ5MGMxMjNiMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCkBAIC0zNDUsNiArMzQ1LDIyIEBACiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRy
dWUKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAic2V0U2hvd0ZQU0NvdW50ZXIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJS
ZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgdGhlIEZQUyBjb3VudGVyIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyZXN1
bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcg
dGhlIEZQUyBjb3VudGVyIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJjYW5TaG93RlBTQ291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlRlbGxzIGlmIGJhY2tlbmQgc3VwcG9ydHMgYSBGUFMgY291bnRlciBkaXNwbGF5
IiwKKyAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJyZXN1bHQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUg
aWYgdGhlIEZQUyBjb3VudCBjYW4gYmUgc2hvd24iIH0KKyAgICAgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICJuYW1lIjogImdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyIsCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkRldGVybWluZXMgaWYgc2NyaXB0cyBjYW4g
YmUgZXhlY3V0ZWQgaW4gdGhlIHBhZ2UuIiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCBhNDJjMmFh
YmMxNjZjNTliMmM0ZjYxM2Q1ZDMwMzViZGU0MTA4MDNiLi4zMGNkNzdlZmFmZWM1YWZkNWI3NjM5
OTM0ZmJiNGMyMzgzNTEzZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNsaWVudC5oCkBAIC03OCw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHVt
cFVuY291bnRlZEFsbG9jYXRlZE9iamVjdHMoY29uc3QgSGFzaE1hcDxjb25zdCB2b2lkKiwgc2l6
ZV90PiYpIHsgfQogCiAgICAgc3RhdGljIGJvb2wgZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5k
UGFnZShQYWdlKiBmcm9udGVuZFBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgeyB9CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdl
QWdlbnQuY3BwCmluZGV4IDFkZGFhN2Y1NmFlZWRlYzI5MDU5ZDliZjQ3YmQ5NjNiZDliYWM5ZmUu
LmM2MTgyMzBiNmFjZTZhMTNmYmI4NjhmYjZhNzRhNjYwODFkZjg0NWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03MTEsNiArNzEx
LDE3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0
cmluZyosIGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5p
bnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291
bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdykKK3sKKyAgICBtX2NsaWVudC0+c2V0U2hvd0ZQ
U0NvdW50ZXIoc2hvdyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlk
YXRlKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjYW5TaG93RlBTQ291bnRlcihF
cnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQoreworICAgICpvdXRQYXJhbSA9IG1fcGFnZS0+
c2V0dGluZ3MoKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21t
YW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxlZEJ5
U2NyaXB0Q29udHJvbGxlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDI3NjhiYjE3ZmJlMjg2Y2Y2NTU0OWM3NjkwMzFiNWVi
ZGZlMjkyYWYuLjQ1MzkyMTg5ZGEzOTExYjllZGNkN2NjMjZjYjRkM2IzMjkxMjEyNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwOSw2
ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbk92ZXJyaWRlRGV2aWNlTWV0
cmljcyhFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlTWV0
cmljc092ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUg
Zm9udFNjYWxlRmFjdG9yLCBib29sIGZpdFdpbmRvdyk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNo
b3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpOworICAgIHZpcnR1YWwg
dm9pZCBjYW5TaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nKiwgUGFn
ZUNvbW1hbmRIYW5kbGVyOjpSZXN1bHQ6OkVudW0qKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2Ny
aXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0R2VvbG9jYXRpb25PdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IGRvdWJsZSosIGNv
bnN0IGRvdWJsZSosIGNvbnN0IGRvdWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggY2YzNTMyZGQ0YTM3OGExZTAxODkxMmY3NmU2
ODhmMzA3YWI5MWI0NC4uYTIwMTcwZmQ3ZWVmN2Q1NDY4ZDZiMmNiZGJjNzgxNTFmMWM4Zjc1MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBA
IC01OCw2ICs1OCw3IEBAIHZhciBDYXBhYmlsaXRpZXMgPSB7CiAgICAgdGltZWxpbmVDYW5Nb25p
dG9yTWFpblRocmVhZDogZmFsc2UsCiAgICAgY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbjogZmFsc2Us
CiAgICAgY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbjogZmFsc2UsCisgICAgY2FuU2hvd0ZQ
U0NvdW50ZXI6IGZhbHNlCiB9CiAKIC8qKgpAQCAtOTYsNiArOTcsNyBAQCBXZWJJbnNwZWN0b3Iu
U2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMu
Y3JlYXRlU2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKICAgICB0aGlzLmVtdWxh
dGVUb3VjaEV2ZW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygiZW11bGF0ZVRvdWNoRXZlbnRzIiwg
ZmFsc2UpOwogICAgIHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNo
b3dQYWludFJlY3RzIiwgZmFsc2UpOworICAgIHRoaXMuc2hvd0ZQU0NvdW50ZXIgPSB0aGlzLmNy
ZWF0ZVNldHRpbmcoInNob3dGUFNDb3VudGVyIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1NoYWRv
d0RPTSA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NoYWRvd0RPTSIsIGZhbHNlKTsKICAgICB0
aGlzLnpvb21MZXZlbCA9IHRoaXMuY3JlYXRlU2V0dGluZygiem9vbUxldmVsIiwgMCk7CiAgICAg
dGhpcy5zYXZlZFVSTHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNhdmVkVVJMcyIsIHt9KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3Jl
ZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVu
LmpzCmluZGV4IGM5ODM2MWNmOWVhNmM3MDdkY2I3MGI5OGEyZmJkM2RlMDI0MGFmMmIuLjk0ZDFm
MmYwNGI2MGIwYWM3NDY3MTQ1NzVjYzY2OTUxOGMzZWI4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtMjcyLDYg
KzI3MiwxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiID0gZnVuY3Rpb24oKQog
ICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hvdyBwYWludCByZWN0YW5nbGVzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5zaG93UGFpbnRSZWN0cykpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRS
ZWN0cy5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93UGFpbnRSZWN0c0NoYW5nZWQsIHRoaXMp
OwogCisgICAgaWYgKENhcGFiaWxpdGllcy5jYW5TaG93RlBTQ291bnRlcikgeworICAgICAgICBw
LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNob3cgRlBTIG1ldGVyIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291
bnRlcikpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuYWRk
Q2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkLCB0aGlzKTsKKyAgICB9
CisKICAgICBwID0gdGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNv
dXJjZXMiKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmco
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9yLnNldHRp
bmdzLnNob3dTY3JpcHRGb2xkZXJzKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVD
aGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2ggaW4gY29udGVudCBz
Y3JpcHRzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zZWFyY2hJbkNvbnRlbnRTY3JpcHRzKSk7
CkBAIC0zMDgsNiArMzEzLDExIEBAIFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJv
dG90eXBlID0gewogICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzLmdldCgpKTsKICAgICB9LAogCisgICAgX3Nob3dG
UFNDb3VudGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgUGFnZUFnZW50LnNl
dFNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5nZXQo
KSk7CisgICAgfSwKKwogICAgIF91cGRhdGVTY3JpcHREaXNhYmxlZENoZWNrYm94OiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBleGVjdXRpb25TdGF0dXNDYWxsYmFjayhlcnJv
ciwgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcwppbmRleCBkNjdmYjBjYjExZjAzODI2OGEzMDI0Y2UxMWJmYTM4ODEyYWEwOTQ0Li44
YmEyZThiMjYwMjkyZTNjNjkxMzU5MDBjZWY5MTM1MmQ0ZWU2ZWQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMzcxLDYgKzM3MSw3
IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgUHJvZmlsZXJB
Z2VudC5oYXNIZWFwUHJvZmlsZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5i
aW5kKFdlYkluc3BlY3RvciwgImhlYXBQcm9maWxlclByZXNlbnQiLCBudWxsKSk7CiAgICAgVGlt
ZWxpbmVBZ2VudC5zdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKFdlYkluc3BlY3Rvci5faW5p
dGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJ0aW1lbGluZVN1cHBvcnRzRnJh
bWVJbnN0cnVtZW50YXRpb24iLCBudWxsKSk7CiAgICAgVGltZWxpbmVBZ2VudC5jYW5Nb25pdG9y
TWFpblRocmVhZChXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5z
cGVjdG9yLCAidGltZWxpbmVDYW5Nb25pdG9yTWFpblRocmVhZCIsIG51bGwpKTsKKyAgICBQYWdl
QWdlbnQuY2FuU2hvd0ZQU0NvdW50ZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0
eS5iaW5kKFdlYkluc3BlY3RvciwgImNhblNob3dGUFNDb3VudGVyIiwgbnVsbCkpOwogICAgIFBh
Z2VBZ2VudC5jYW5PdmVycmlkZURldmljZU1ldHJpY3MoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXpl
Q2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyIs
IG51bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbihXZWJJbnNwZWN0
b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVH
ZW9sb2NhdGlvbiIsIG51bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VPcmll
bnRhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVj
dG9yLCAiY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbiIsIFdlYkluc3BlY3Rvci5fZG9Mb2Fk
ZWREb25lV2l0aENhcGFiaWxpdGllcy5iaW5kKFdlYkluc3BlY3RvcikpKTsKQEAgLTQ4Myw2ICs0
ODQsOSBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5j
dGlvbigpCiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5qYXZhU2NyaXB0RGlzYWJsZWQu
Z2V0KCkpCiAgICAgICAgIFBhZ2VBZ2VudC5zZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCh0cnVl
KTsKIAorICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkp
CisgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93RlBTQ291bnRlcih0cnVlKTsKKwogICAgIHRoaXMu
ZG9tQWdlbnQuX2VtdWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rv
ci5Xb3JrZXJNYW5hZ2VyLmxvYWRDb21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaAppbmRleCA0OWFhYTUxMzgxMTk4ODQxNTc3OTEzMGM5ZWYwMjZiNzg2M2Q4
YTM5Li4yZWMxYjFiYWRhMGFlZDlmNTA1M2NjN2I4YzIwNjc5MjI4YmUxZDU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC00NzEsNiArNDcxLDggQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0aW9uRWRpdGFibGUoKSBjb25zdCA9IDA7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgPSAwOworCiAgICAgLy8g
QmVuY2htYXJraW5nIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVu
Y2htYXJrU3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggYzZlN2IyMjc3MTczY2IwMzE1
ODI5ZTUwNzEyMWM3ZWFkMTdjMTM5YS4uZjI1NWMyMWMxMWE2NGIxMDNjMmRmZDdhN2E3MmMwYTE2
OWE2NGI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5jcHAKQEAgLTE5NSw0ICsxOTUsOSBAQCBXZWJEZXZUb29sc0FnZW50SW1wbCog
SW5zcGVjdG9yQ2xpZW50SW1wbDo6ZGV2VG9vbHNBZ2VudCgpCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYkRldlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0Fn
ZW50KCkpOwogfQogCit2b2lkIEluc3BlY3RvckNsaWVudEltcGw6OnNldFNob3dGUFNDb3VudGVy
KGJvb2wgc2hvdykKK3sKKyAgICBtX2luc3BlY3RlZFdlYlZpZXctPnNldFNob3dGUFNDb3VudGVy
KHNob3cpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAppbmRleCA3NWUxZTQzNDJiMzZmMDAw
MmMzZTc5NzYxYmQ0NjE3Nzc2ZjQxZDI5Li5hODEyM2JlNGE4ZmE0MGZmYWY3MGQ4NTJkYTExMzE2
NzI4ZWRiOThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Z2V0QWxsb2NhdGVkT2JqZWN0cyhIYXNoU2V0PGNvbnN0IHZvaWQqPiYpOwogICAgIHZpcnR1YWwg
dm9pZCBkdW1wVW5jb3VudGVkQWxsb2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZv
aWQqLCBzaXplX3Q+Jik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9v
bCk7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgd2lsbFByb2Nlc3NUYXNrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggM2Y4M2U0Y2JjYzlkYjRkMDIzYzEyNTM2Yjk3YzQ3YjZiODRj
YjJhZC4uNTZmM2E2YjVlMDkyNmIyMWU5NTA3ODVlOWYwZDNiZjQ5MTg3NTk2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDI1LDYgKzQyNSw3IEBA
IFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBt
X2NvbXBvc2l0b3JTdXJmYWNlUmVhZHkoZmFsc2UpCiAgICAgLCBtX2RldmljZVNjYWxlSW5Db21w
b3NpdG9yKDEpCiAgICAgLCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIoLTEpCisgICAgLCBtX2lz
Rm9udEF0bGFzTG9hZGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkK
ICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUo
Y2xpZW50KSkKQEAgLTgzMCw2ICs4MzEsMTcgQEAgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIFdl
YlZpZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkKICAgICByZXR1cm4gJm1fYmVuY2htYXJrU3Vw
cG9ydDsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93
KQoreworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAgICAg
ICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIi
KTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIGxvYWRGb250QXRs
YXNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hv
d0ZQU0NvdW50ZXIoc2hvdyk7CisgICAgfQorfQorCiBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVL
ZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2
ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKQEAgLTM5OTQsMTcgKzQwMDYs
MTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRv
cihtX2lucHV0SGFuZGxlcklkZW50aWZpZXIpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRp
b25GYWlsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNGb250QXRsYXNMb2FkZWQgPSBmYWxz
ZTsKICAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKICAgICAgICAgICAgICAgICBtX3Bh
Z2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAgICAgICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhl
IGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5
LgotICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291bnRlciB8
fCBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKSB7Ci0gICAgICAg
ICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIGluaXRpYWxpemUgZm9udCBhdGxhcyIpOwotICAgICAg
ICAgICAgICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwotICAgICAgICAgICAgICAg
IGludCBmb250SGVpZ2h0OwotICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNv
cmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0
VGFibGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0
Rm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGJpdG1hcCwgZm9udEhlaWdodCk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9y
bUxheWVyVHJlZSkKKyAgICAgICAgICAgICAgICBsb2FkRm9udEF0bGFzSWZOZWNlc3NhcnkoKTsK
KworICAgICAgICAgICAgaWYgKHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigpKQorICAg
ICAgICAgICAgICAgIHNldFNob3dGUFNDb3VudGVyKHRydWUpOwogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKICAgICAgICAg
ICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7CkBAIC00MDE2LDYg
KzQwMjYsMjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCkt
PnNldENsaXBzUmVwYWludHMoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKTsKIH0K
IAordm9pZCBXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBB
U1NFUlQobV9sYXllclRyZWVWaWV3KTsKKworICAgIGlmIChtX2lzRm9udEF0bGFzTG9hZGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1w
bDo6bG9hZEZvbnRBdGxhcyIpOworICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwor
ICAgIGludCBmb250SGVpZ2h0OworICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6OkNvbXBv
c2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGZv
bnRIZWlnaHQpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Rm9udEF0bGFzKGFzY2lpVG9SZWN0
VGFibGUsIGJpdG1hcCwgZm9udEhlaWdodCk7CisgICAgbV9pc0ZvbnRBdGxhc0xvYWRlZCA9IHRy
dWU7Cit9CisKICNlbmRpZgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmgKaW5kZXggMDJhMWU1MzcwNDBiNjgwMDc2OGZjMWJlOTFjM2ZhYjZmMDZm
ZWM1Mi4uNzM4ODdmZWQ0MGI0MDkwMTI2MzkyOTlkZTlmMWQ1MWFmYmJlN2YxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0zMDksNiArMzA5LDcgQEAgcHVi
bGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0Fu
aW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogICAgIHZpcnR1
YWwgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIGJlbmNobWFya1N1cHBvcnQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAKICAgICAvLyBXZWJMYXllclRyZWVW
aWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CkBAIC02NTQsNiAr
NjU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNh
bnZhcyosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHJlYWxsb2NhdGVSZW5k
ZXJlcigpOwogICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmVlVmlld3BvcnQoKTsKKyAgICB2b2lkIGxv
YWRGb250QXRsYXNJZk5lY2Vzc2FyeSgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0VTVFVSRV9F
VkVOVFMpCkBAIC04NDYsNiArODQ4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29tcG9zaXRv
clN1cmZhY2VSZWFkeTsKICAgICBmbG9hdCBtX2RldmljZVNjYWxlSW5Db21wb3NpdG9yOwogICAg
IGludCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXI7CisgICAgYm9vbCBtX2lzRm9udEF0bGFzTG9h
ZGVkOwogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElu
cHV0RXZlbnQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173158</attachid>
            <date>2012-11-08 17:31:02 -0800</date>
            <delta_ts>2012-11-09 09:11:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121108172911.patch</filename>
            <type>text/plain</type>
            <size>19070</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNWNiMjg3MzAyNGM1
MjUwZjEzZjE3NDFiYjY2MDg5YzlhNmUwZWNjLi40NDNmNTBkMmIxYjYwZDQwMmQwZTBiZDQ3Nzk0
YzY2MzlkNWU3YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0wOCAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVj
a2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hl
Y2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVy
LiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMS0wOCAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1
Y2UgV2ViU2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRmOTViODE0
ZWQ0ZDM0ZGViZjkwZmQ4ZDU2OTI1YzBhMjBjNjMyNzAuLjEyODlkMDJjMWQyMjI0YzdhNmNiYWQ4
Zjk5NzgzMGUzMTcyOTQ4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMS0w
OCAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBj
aGVja2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
Y2hlY2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3Vu
dGVyLiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQ6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQU0NvdW50ZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdz
VGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBl
LmdldCBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgor
CiAyMDEyLTExLTA4ICBPdHRvIERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIERpc2FibGUgY29va2llcyBvbiBmaWxlOi8vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGYyMTc3MzhjNDA4YmY2ODFkMzE2ZDMxNzgzN2Y1YmIyYjM2YjQ0
MGMuLjFiM2U0NjBjMzg0Mjk3M2UzNTIxYzc4MjdjYTU4MWU4MmNiMTljNmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTEtMDggIEViZXJoYXJkIEdy
YWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgY2hlY2tib3ggdG8gdG9n
Z2xlIEZQUyBjb3VudGVyIGluIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94IHRvIHRo
ZSBpbnNwZWN0b3IncyBzZXR0aW5ncyB0byB0b2dnbGUgYSBGUFMgY291bnRlci4gVGhlIGNoZWNr
Ym94IGFwcGVhcnMgd2hlbiBJbnNwZWN0b3JDbGllbnQ6OmNhblNob3dGUFNDb3VudGVyKCkgcmV0
dXJucyB0cnVlLgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZp
ZXcpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAg
IChJbnNwZWN0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmll
d0ltcGwpOgorCiAyMDEyLTExLTA4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRXhwb3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCmluZGV4IDM0NTA0NWFkNGM4ZjJmMzU1NmY5ZGUwMjJkMWVjYzAxYTAwOTNjMzYuLmNk
OTExZWQ5NjEwMmExYWViM2JmMjM3Y2ExYzgyMDYwOTc1OWZmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0xNjksNiAr
MTY5LDkgQEAgcHVibGljOgogICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2
ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQu
CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29u
c3QgPSAwOwogCisgICAgLy8gVG9nZ2xlcyB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIEhVRCBsYXll
cgorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKSB7IH0KKwogICAgIC8v
IFByb3ZpZGVzIGEgZm9udCBhdGxhcyB0byB1c2UgZm9yIGRlYnVnIHZpc3VhbGl6YXRpb25zLiBU
aGUgYXRsYXMgbXVzdCBiZSBhIGJpdG1hcCBjb250YWluaW5nIGdseXBoIGRhdGEsIGEgdGFibGUg
b2YKICAgICAvLyBBU0NJSSBjaGFyYWN0ZXIgdmFsdWVzIHRvIGEgc3VicmVjdGFuZ2xlIG9mIHRo
ZSBhdGxhcyByZXByZXNlbnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGgsIGFuZCB0aGUgZ2x5
cGggaGVpZ2h0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRsYXMoV2ViUmVjdCBhc2NpaVRv
UmVjdFRhYmxlWzEyOF0sIGNvbnN0IFNrQml0bWFwJiwgaW50IGZvbnRIZWlnaHQpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDUxZDg2Yjg2MWNiNWZlNGU1
MTY5YjQyYWJmYTg1MTFkNjViZGM5ZDAuLmI3ZDY5ODY2OGI4NTMyOGRmNzEzMDZmY2NhYzRjNzEy
ODRkODRjNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTM0
NSw2ICszNDUsMjIgQEAKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRTaG93RlBT
Q291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIHRoYXQg
YmFja2VuZCBzaG93cyB0aGUgRlBTIGNvdW50ZXIiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3VsdCIsICJ0eXBlIjog
ImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBmb3Igc2hvd2luZyB0aGUgRlBTIGNvdW50
ZXIiIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVl
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjog
ImNhblNob3dGUFNDb3VudGVyIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGVs
bHMgaWYgYmFja2VuZCBzdXBwb3J0cyBhIEZQUyBjb3VudGVyIGRpc3BsYXkiLAorICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInJlc3Vs
dCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiB0aGUgRlBTIGNv
dW50IGNhbiBiZSBzaG93biIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzIiwKICAgICAgICAgICAgICAg
ICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyBpZiBzY3JpcHRzIGNhbiBiZSBleGVjdXRlZCBp
biB0aGUgcGFnZS4iLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmluZGV4IGE0MmMyYWFiYzE2NmM1OWIyYzRm
NjEzZDVkMzAzNWJkZTQxMDgwM2IuLjRlZGRkYjM2ZDU0MmNiNGM3MTU0ZDM3ZGNhZTRiZjkwMmFi
NzgxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKQEAg
LTc4LDYgKzc4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkdW1wVW5jb3VudGVkQWxs
b2NhdGVkT2JqZWN0cyhjb25zdCBIYXNoTWFwPGNvbnN0IHZvaWQqLCBzaXplX3Q+JikgeyB9CiAK
ICAgICBzdGF0aWMgYm9vbCBkb0Rpc3BhdGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZy
b250ZW5kUGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG93RlBTQ291bnRlcihib29sKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd0ZQU0Nv
dW50ZXIoKSB7IHJldHVybiBmYWxzZTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRl
eCAxZGRhYTdmNTZhZWVkZWMyOTA1OWQ5YmY0N2JkOTYzYmQ5YmFjOWZlLi5mZDZkOWZlNDQ2MGM2
MWIxZDljODJiMWZkZmNkODNkNDQ2Yjg5NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNzExLDYgKzcxMSwxNyBAQCB2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNo
b3cpCiAgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZSgpOwog
fQogCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJp
bmcqLCBib29sIHNob3cpCit7CisgICAgbV9jbGllbnQtPnNldFNob3dGUFNDb3VudGVyKHNob3cp
OworICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+aW52YWxpZGF0ZSgpOworfQorCit2
b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBi
b29sKiBvdXRQYXJhbSkKK3sKKyAgICAqb3V0UGFyYW0gPSBtX2NsaWVudC0+Y2FuU2hvd0ZQU0Nv
dW50ZXIoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlv
blN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKiBz
dGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxlZEJ5U2NyaXB0Q29udHJvbGxlciA9IGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDI3
NjhiYjE3ZmJlMjg2Y2Y2NTU0OWM3NjkwMzFiNWViZGZlMjkyYWYuLjQ0ZTVhNDVlNmFhYzZmMWU2
ZmNjNzhlZDIxMTljODBmMDgxZTViOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwOSw2ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyhFcnJvclN0cmluZyosIGJvb2wqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKEVycm9yU3RyaW5nKiwg
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgZm9udFNjYWxlRmFjdG9yLCBib29sIGZpdFdp
bmRvdyk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwg
Ym9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJp
bmcqLCBib29sIHNob3cpOworICAgIHZpcnR1YWwgdm9pZCBjYW5TaG93RlBTQ291bnRlcihFcnJv
clN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3Rh
dHVzKEVycm9yU3RyaW5nKiwgUGFnZUNvbW1hbmRIYW5kbGVyOjpSZXN1bHQ6OkVudW0qKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbG9jYXRpb25PdmVycmlkZShFcnJvclN0cmlu
ZyosIGNvbnN0IGRvdWJsZSosIGNvbnN0IGRvdWJsZSosIGNvbnN0IGRvdWJsZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggMWFlMjEw
ODNiMTQxZjY1MzA5ZGEwNDQwNWE5YjBlMmExNDEwYjA2ZC4uNmQ1OGE5NjU0ODMyOGRiZTdlZTI4
NjFjNzM1YjRlODBmOTlmNWRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzCkBAIC01OCw2ICs1OCw3IEBAIHZhciBDYXBhYmlsaXRpZXMgPSB7
CiAgICAgdGltZWxpbmVDYW5Nb25pdG9yTWFpblRocmVhZDogZmFsc2UsCiAgICAgY2FuT3ZlcnJp
ZGVHZW9sb2NhdGlvbjogZmFsc2UsCiAgICAgY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbjog
ZmFsc2UsCisgICAgY2FuU2hvd0ZQU0NvdW50ZXI6IGZhbHNlCiB9CiAKIC8qKgpAQCAtOTYsNiAr
OTcsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93
U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0
cnVlKTsKICAgICB0aGlzLmVtdWxhdGVUb3VjaEV2ZW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygi
ZW11bGF0ZVRvdWNoRXZlbnRzIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0
aGlzLmNyZWF0ZVNldHRpbmcoInNob3dQYWludFJlY3RzIiwgZmFsc2UpOworICAgIHRoaXMuc2hv
d0ZQU0NvdW50ZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dGUFNDb3VudGVyIiwgZmFsc2Up
OwogICAgIHRoaXMuc2hvd1NoYWRvd0RPTSA9IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NoYWRv
d0RPTSIsIGZhbHNlKTsKICAgICB0aGlzLnpvb21MZXZlbCA9IHRoaXMuY3JlYXRlU2V0dGluZygi
em9vbUxldmVsIiwgMCk7CiAgICAgdGhpcy5zYXZlZFVSTHMgPSB0aGlzLmNyZWF0ZVNldHRpbmco
InNhdmVkVVJMcyIsIHt9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmluZGV4IDAwYTgzNTU3NGYzNGNkNmZlMDdjOTgyNGMz
ZjVjODQ4ZTljN2IwNmMuLjg0Mjg4Y2IxMGM1YmI4ZDUzNTBjMzM3YmMxYzI5NzQxY2I3MDZmNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NT
Y3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qcwpAQCAtMjczLDYgKzI3MywxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRp
bmdzVGFiID0gZnVuY3Rpb24oKQogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2ti
b3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBwYWludCByZWN0YW5nbGVzIiks
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cykpOwogICAgIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93UGFp
bnRSZWN0c0NoYW5nZWQsIHRoaXMpOwogCisgICAgaWYgKENhcGFiaWxpdGllcy5jYW5TaG93RlBT
Q291bnRlcikgeworICAgICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0
dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgRlBTIG1ldGVyIiksIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93RlBTQ291bnRlcikpOworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2hvd0ZQU0NvdW50ZXIuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd0ZQU0NvdW50ZXJD
aGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKICAgICBwID0gdGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMiKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9j
cmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IGZvbGRlcnMi
KSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzKSk7CiAgICAgcC5hcHBl
bmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTZWFyY2ggaW4gY29udGVudCBzY3JpcHRzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zZWFy
Y2hJbkNvbnRlbnRTY3JpcHRzKSk7CkBAIC0zMDksNiArMzE0LDExIEBAIFdlYkluc3BlY3Rvci5H
ZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlID0gewogICAgICAgICBQYWdlQWdlbnQuc2V0U2hv
d1BhaW50UmVjdHMoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dQYWludFJlY3RzLmdldCgpKTsK
ICAgICB9LAogCisgICAgX3Nob3dGUFNDb3VudGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgUGFnZUFnZW50LnNldFNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5zaG93RlBTQ291bnRlci5nZXQoKSk7CisgICAgfSwKKwogICAgIF91cGRhdGVTY3JpcHREaXNh
YmxlZENoZWNrYm94OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBleGVjdXRp
b25TdGF0dXNDYWxsYmFjayhlcnJvciwgc3RhdHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCA1ODdjYjYyMzM0Y2Y0YzUxOGQxY2Q1
ZmYzN2QwNzcyM2RjMjg2YTYwLi42ZmJmN2JkOGQxOTNlN2M4ODcwNzQ2NGYzN2U2NDUxYTBlNjEx
ZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcwpAQCAtMzcxLDYgKzM3MSw3IEBAIFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5j
dGlvbigpCiAgICAgUHJvZmlsZXJBZ2VudC5oYXNIZWFwUHJvZmlsZXIoV2ViSW5zcGVjdG9yLl9p
bml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImhlYXBQcm9maWxlclByZXNl
bnQiLCBudWxsKSk7CiAgICAgVGltZWxpbmVBZ2VudC5zdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0
aW9uKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3Is
ICJ0aW1lbGluZVN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24iLCBudWxsKSk7CiAgICAgVGlt
ZWxpbmVBZ2VudC5jYW5Nb25pdG9yTWFpblRocmVhZChXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVD
YXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAidGltZWxpbmVDYW5Nb25pdG9yTWFpblRocmVh
ZCIsIG51bGwpKTsKKyAgICBQYWdlQWdlbnQuY2FuU2hvd0ZQU0NvdW50ZXIoV2ViSW5zcGVjdG9y
Ll9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhblNob3dGUFNDb3Vu
dGVyIiwgbnVsbCkpOwogICAgIFBhZ2VBZ2VudC5jYW5PdmVycmlkZURldmljZU1ldHJpY3MoV2Vi
SW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92
ZXJyaWRlRGV2aWNlTWV0cmljcyIsIG51bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVH
ZW9sb2NhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5z
cGVjdG9yLCAiY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbiIsIG51bGwpKTsKICAgICBQYWdlQWdlbnQu
Y2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBh
YmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbiIs
IFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcy5iaW5kKFdlYkluc3Bl
Y3RvcikpKTsKQEAgLTQ4Myw2ICs0ODQsOSBAQCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdp
dGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5qYXZhU2NyaXB0RGlzYWJsZWQuZ2V0KCkpCiAgICAgICAgIFBhZ2VBZ2VudC5zZXRTY3JpcHRF
eGVjdXRpb25EaXNhYmxlZCh0cnVlKTsKIAorICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
c2hvd0ZQU0NvdW50ZXIuZ2V0KCkpCisgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93RlBTQ291bnRl
cih0cnVlKTsKKwogICAgIHRoaXMuZG9tQWdlbnQuX2VtdWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQo
KTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5hZ2VyLmxvYWRDb21wbGV0ZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCA0OWFhYTUxMzgxMTk4ODQx
NTc3OTEzMGM5ZWYwMjZiNzg2M2Q4YTM5Li4yZWMxYjFiYWRhMGFlZDlmNTA1M2NjN2I4YzIwNjc5
MjI4YmUxZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC00
NzEsNiArNDcxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0aW9uRWRp
dGFibGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIo
Ym9vbCkgPSAwOworCiAgICAgLy8gQmVuY2htYXJraW5nIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJWaWV3
QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5k
ZXggYzZlN2IyMjc3MTczY2IwMzE1ODI5ZTUwNzEyMWM3ZWFkMTdjMTM5YS4uNTUyZDY3OTk4MDhl
NzEzYTJiMmM5OGZjOGI3ODZkOTQyOGYxZWI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTE5NSw0ICsxOTUsMTQgQEAg
V2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3BlY3RvckNsaWVudEltcGw6OmRldlRvb2xzQWdlbnQo
KQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5zcGVj
dGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2VudCgpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRJ
bXBsOjpzZXRTaG93RlBTQ291bnRlcihib29sIHNob3cpCit7CisgICAgbV9pbnNwZWN0ZWRXZWJW
aWV3LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKK30KKworYm9vbCBJbnNwZWN0b3JDbGllbnRJ
bXBsOjpjYW5TaG93RlBTQ291bnRlcigpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SW5zcGVjdG9yQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVj
dG9yQ2xpZW50SW1wbC5oCmluZGV4IDc1ZTFlNDM0MmIzNmYwMDAyYzNlNzk3NjFiZDQ2MTc3NzZm
NDFkMjkuLjQ4OTY1YzBhZDg0ZTBhYWFjZDc1MGQxODk0NGZlZGNjMGZiN2RhNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTgy
LDYgKzgyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0ZWRPYmplY3Rz
KEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7CiAgICAgdmlydHVhbCB2b2lkIGR1bXBVbmNvdW50ZWRB
bGxvY2F0ZWRPYmplY3RzKGNvbnN0IEhhc2hNYXA8Y29uc3Qgdm9pZCosIHNpemVfdD4mKTsKIAor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY2FuU2hvd0ZQU0NvdW50ZXIoKTsKKwogcHJpdmF0ZToKICAgICAvLyBXZWJUaHJlYWQ6OlRh
c2tPYnNlcnZlcgogICAgIHZpcnR1YWwgdm9pZCB3aWxsUHJvY2Vzc1Rhc2soKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBmNmY5ZmM2ZmE3YzEyNDgw
YWQ0MDZjZTVhODk5NWVhNjNkNGMzYzkwLi43Mjc2MjFmMjJjNzgxNmM4ODM3OWFkZWZhNmMwOTE2
NmI5Njc4YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CkBAIC00MjUsNiArNDI1LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGll
bnQqIGNsaWVudCkKICAgICAsIG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeShmYWxzZSkKICAgICAs
IG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IoMSkKICAgICAsIG1faW5wdXRIYW5kbGVySWRlbnRp
ZmllcigtMSkKKyAgICAsIG1faXNGb250QXRsYXNMb2FkZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBF
TkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1
dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQpAQCAtODMxLDYgKzgzMiwxNyBAQCBXZWJWaWV3
QmVuY2htYXJrU3VwcG9ydCogV2ViVmlld0ltcGw6OmJlbmNobWFya1N1cHBvcnQoKQogICAgIHJl
dHVybiAmbV9iZW5jaG1hcmtTdXBwb3J0OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG93
RlBTQ291bnRlcihib29sIHNob3cpCit7CisgICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBs
OjpzZXRTaG93RlBTQ291bnRlciIpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
KyAgICAgICAgbG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5KCk7CisjZW5kaWYKKyAgICAgICAgbV9s
YXllclRyZWVWaWV3LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKKyAgICB9Cit9CisKIGJvb2wg
V2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50
KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3du
KQpAQCAtMzk5NSwxNyArNDAwNywxNSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1faW5wdXRIYW5kbGVySWRlbnRpZmllcik7CiAgICAgICAg
ICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgICAg
ICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZhbHNlOworICAgICAgICAgICAgbV9pc0Zv
bnRBdGxhc0xvYWRlZCA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKG1fcGFnZU92ZXJsYXlzKQog
ICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJsYXlzLT51cGRhdGUoKTsKIAotICAgICAgICAgICAg
Ly8gT25seSBhbGxvY2F0ZSB0aGUgZm9udCBhdGxhcyBpZiB3ZSBoYXZlIHJlYXNvbiB0byB1c2Ug
dGhlIGhlYWRzLXVwIGRpc3BsYXkuCi0gICAgICAgICAgICBpZiAobGF5ZXJUcmVlVmlld1NldHRp
bmdzLnNob3dGUFNDb3VudGVyIHx8IGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1M
YXllclRyZWUpIHsKLSAgICAgICAgICAgICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIldlYlZpZXdJ
bXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUodHJ1ZSkgaW5pdGlhbGl6ZSBm
b250IGF0bGFzIik7Ci0gICAgICAgICAgICAgICAgV2ViUmVjdCBhc2NpaVRvUmVjdFRhYmxlWzEy
OF07Ci0gICAgICAgICAgICAgICAgaW50IGZvbnRIZWlnaHQ7Ci0gICAgICAgICAgICAgICAgU2tC
aXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhVREZvbnRBdGxhczo6Z2VuZXJhdGVG
b250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7Ci0gICAgICAgICAgICAgICAg
bV9sYXllclRyZWVWaWV3LT5zZXRGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgYml0bWFwLCBm
b250SGVpZ2h0KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsYXllclRyZWVWaWV3
U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKQorICAgICAgICAgICAgICAgIGxvYWRGb250
QXRsYXNJZk5lY2Vzc2FyeSgpOworCisgICAgICAgICAgICBpZiAoc2V0dGluZ3NJbXBsKCktPnNo
b3dGUFNDb3VudGVyKCkpCisgICAgICAgICAgICAgICAgc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5jbGVhcigpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUg
PSBmYWxzZTsKQEAgLTQwMTcsNiArNDAyNywyMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIHBhZ2UoKS0+
bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0Q2xpcHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzSWZO
ZWNlc3NhcnkoKQoreworICAgIEFTU0VSVChtX2xheWVyVHJlZVZpZXcpOworCisgICAgaWYgKG1f
aXNGb250QXRsYXNMb2FkZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFRSQUNFX0VWRU5UMCgi
d2Via2l0IiwgIldlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzIik7CisgICAgV2ViUmVjdCBhc2Np
aVRvUmVjdFRhYmxlWzEyOF07CisgICAgaW50IGZvbnRIZWlnaHQ7CisgICAgU2tCaXRtYXAgYml0
bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhVREZvbnRBdGxhczo6Z2VuZXJhdGVGb250QXRsYXMo
YXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRG
b250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgYml0bWFwLCBmb250SGVpZ2h0KTsKKyAgICBtX2lz
Rm9udEF0bGFzTG9hZGVkID0gdHJ1ZTsKK30KKwogI2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAwMmExZTUzNzA0MGI2ODAw
NzY4ZmMxYmU5MWMzZmFiNmYwNmZlYzUyLi43Mzg4N2ZlZDQwYjQwOTAxMjYzOTI5OWRlOWYxZDUx
YWZiYmU3ZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAg
LTMwOSw2ICszMDksNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNm
ZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJh
bWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJr
U3VwcG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKTsKIAog
ICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2lu
RnJhbWUoKTsKQEAgLTY1NCw2ICs2NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9QaXhlbFJl
YWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAg
IHZvaWQgcmVhbGxvY2F0ZVJlbmRlcmVyKCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclRyZWVWaWV3
cG9ydCgpOworICAgIHZvaWQgbG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5KCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKQEAgLTg0Niw2ICs4NDgsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9jb21wb3NpdG9yU3VyZmFjZVJlYWR5OwogICAgIGZsb2F0IG1fZGV2aWNlU2Nh
bGVJbkNvbXBvc2l0b3I7CiAgICAgaW50IG1faW5wdXRIYW5kbGVySWRlbnRpZmllcjsKKyAgICBi
b29sIG1faXNGb250QXRsYXNMb2FkZWQ7CiAjZW5kaWYKICAgICBzdGF0aWMgY29uc3QgV2ViSW5w
dXRFdmVudCogbV9jdXJyZW50SW5wdXRFdmVudDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173319</attachid>
            <date>2012-11-09 09:11:26 -0800</date>
            <delta_ts>2012-11-09 16:02:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121109090934.patch</filename>
            <type>text/plain</type>
            <size>19141</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNWNiMjg3MzAyNGM1
MjUwZjEzZjE3NDFiYjY2MDg5YzlhNmUwZWNjLi5hM2YxZTQ1MDQ3NGUzYmI0MmFmNjc1NGQzN2Q4
MjMzMjA4ZGJmOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0wOSAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVj
a2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hl
Y2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVy
LiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMS0wOCAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1
Y2UgV2ViU2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRmOTViODE0
ZWQ0ZDM0ZGViZjkwZmQ4ZDU2OTI1YzBhMjBjNjMyNzAuLmRjMzgwMjI0Y2FhZTQ3YTRhYzc5NTQ0
ZmMzMzAzNTkyOWI0MzhjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMi0xMS0w
OSAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBj
aGVja2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
Y2hlY2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3Vu
dGVyLiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6Y2FuU2hv
d0ZQU0NvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpzZXRTaG93
RlBTQ291bnRlcik6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
UGFnZUFnZW50OjpjYW5TaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdz
VGFiKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBl
LmdldCBfc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgor
CiAyMDEyLTExLTA4ICBPdHRvIERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIERpc2FibGUgY29va2llcyBvbiBmaWxlOi8vCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGYyMTc3MzhjNDA4YmY2ODFkMzE2ZDMxNzgzN2Y1YmIyYjM2YjQ0
MGMuLmJiOTVlMjk2NmExZGRjZDdmZTUwNzg1NzE1YTI5ZjQyYzNjYzU0MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMTEtMDkgIEViZXJoYXJkIEdy
YWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgY2hlY2tib3ggdG8gdG9n
Z2xlIEZQUyBjb3VudGVyIGluIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94IHRvIHRo
ZSBpbnNwZWN0b3IncyBzZXR0aW5ncyB0byB0b2dnbGUgYSBGUFMgY291bnRlci4gVGhlIGNoZWNr
Ym94IGFwcGVhcnMgd2hlbiBJbnNwZWN0b3JDbGllbnQ6OmNhblNob3dGUFNDb3VudGVyKCkgcmV0
dXJucyB0cnVlLgorCisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZp
ZXcpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6Y2FuU2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50SW1wbDo6c2V0U2hvd0ZQ
U0NvdW50ZXIpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAg
IChJbnNwZWN0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzSWZO
ZWNlc3NhcnkpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAoV2ViVmll
d0ltcGwpOgorCiAyMDEyLTExLTA4ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgRXhwb3NlIHNuYXBzaG90cyBpbiBwbGF0Zm9ybS9sZXZlbGRiIHdyYXBwZXIg
QVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVy
VHJlZVZpZXcuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVl
Vmlldy5oCmluZGV4IDM0NTA0NWFkNGM4ZjJmMzU1NmY5ZGUwMjJkMWVjYzAxYTAwOTNjMzYuLmNk
OTExZWQ5NjEwMmExYWViM2JmMjM3Y2ExYzgyMDYwOTc1OWZmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0xNjksNiAr
MTY5LDkgQEAgcHVibGljOgogICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2
ZSBpbiB0aHJlYWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQu
CiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29u
c3QgPSAwOwogCisgICAgLy8gVG9nZ2xlcyB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIEhVRCBsYXll
cgorICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKSB7IH0KKwogICAgIC8v
IFByb3ZpZGVzIGEgZm9udCBhdGxhcyB0byB1c2UgZm9yIGRlYnVnIHZpc3VhbGl6YXRpb25zLiBU
aGUgYXRsYXMgbXVzdCBiZSBhIGJpdG1hcCBjb250YWluaW5nIGdseXBoIGRhdGEsIGEgdGFibGUg
b2YKICAgICAvLyBBU0NJSSBjaGFyYWN0ZXIgdmFsdWVzIHRvIGEgc3VicmVjdGFuZ2xlIG9mIHRo
ZSBhdGxhcyByZXByZXNlbnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGgsIGFuZCB0aGUgZ2x5
cGggaGVpZ2h0LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRsYXMoV2ViUmVjdCBhc2NpaVRv
UmVjdFRhYmxlWzEyOF0sIGNvbnN0IFNrQml0bWFwJiwgaW50IGZvbnRIZWlnaHQpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDUxZDg2Yjg2MWNiNWZlNGU1
MTY5YjQyYWJmYTg1MTFkNjViZGM5ZDAuLjc1MmNjOTNkNjU2YmI2YTAzOWVhNjZhNWU0NWY5ZGI2
ZWRmMjZlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTM0
NSw2ICszNDUsMjIgQEAKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJjYW5TaG93RlBT
Q291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRlbGxzIGlmIGJhY2tl
bmQgc3VwcG9ydHMgYSBGUFMgY291bnRlciBkaXNwbGF5IiwKKyAgICAgICAgICAgICAgICAicmV0
dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93IiwgInR5cGUiOiAi
Ym9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlIGlmIHRoZSBGUFMgY291bnQgY2FuIGJlIHNo
b3duIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1
ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJzZXRTaG93RlBTQ291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJl
cXVlc3RzIHRoYXQgYmFja2VuZCBzaG93cyB0aGUgRlBTIGNvdW50ZXIiLAorICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNob3ci
LCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9yIHNob3dpbmcgdGhl
IEZQUyBjb3VudGVyIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlk
ZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMiLAogICAgICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIGlmIHNjcmlwdHMgY2FuIGJlIGV4ZWN1dGVkIGluIHRo
ZSBwYWdlLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYTQyYzJhYWJjMTY2YzU5YjJjNGY2MTNk
NWQzMDM1YmRlNDEwODAzYi4uMjRiZGU1MTFiMTgzYTE5YjYyYjI2YTgxMzFjOGI5YzIwMmMxODJi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNzIs
NiArNzIsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBQbGF0Zm9ybXMgbWF5IHdhbnQg
dG8gaW1wbGVtZW50IHRoaXMgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI4ODYpLgogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93RlBTQ291bnRl
cigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVy
KGJvb2wpIHsgfQorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRp
b24oKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9i
amVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMWRkYWE3ZjU2YWVlZGVjMjkwNTlk
OWJmNDdiZDk2M2JkOWJhYzlmZS4uOGYxNjgyYmQ2OGRhY2ZkMjg0MDViNTdkNDI0MDZmMDYzMWUx
MGMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKQEAgLTcxMSw2ICs3MTEsMTcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNo
b3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogICAgICAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNhblNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCit7
CisgICAgKm91dFBhcmFtID0gbV9jbGllbnQtPmNhblNob3dGUFNDb3VudGVyKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJv
b2wgc2hvdykKK3sKKyAgICBtX2NsaWVudC0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7CisgICAg
bV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcqLCBQ
YWdlQ29tbWFuZEhhbmRsZXI6OlJlc3VsdDo6RW51bSogc3RhdHVzKQogewogICAgIGJvb2wgZGlz
YWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAyNzY4YmIxN2ZiZTI4NmNmNjU1NDljNzY5
MDMxYjVlYmRmZTI5MmFmLi4zOTdlODViMmEyOGQwNmY5NDM5MzkwMTA1NDI5Y2FjOWM1ZGE4Yjli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCkBA
IC0xMDksNiArMTA5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5PdmVycmlkZURl
dmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2b2lkIHNldERl
dmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3aWR0aCwgaW50IGhlaWdodCwg
ZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7CisgICAgdmlydHVh
bCB2b2lkIGNhblNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCopOworICAgIHZpcnR1
YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7CiAgICAg
dmlydHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VD
b21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lkIHNldFNjcmlw
dEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEdlb2xvY2F0aW9uT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3VibGUqLCBjb25z
dCBkb3VibGUqLCBjb25zdCBkb3VibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDFhZTIxMDgzYjE0MWY2NTMwOWRhMDQ0MDVhOWIw
ZTJhMTQxMGIwNmQuLjZkNThhOTY1NDgzMjhkYmU3ZWUyODYxYzczNWI0ZTgwZjk5ZjVkYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAt
NTgsNiArNTgsNyBAQCB2YXIgQ2FwYWJpbGl0aWVzID0gewogICAgIHRpbWVsaW5lQ2FuTW9uaXRv
ck1haW5UaHJlYWQ6IGZhbHNlLAogICAgIGNhbk92ZXJyaWRlR2VvbG9jYXRpb246IGZhbHNlLAog
ICAgIGNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb246IGZhbHNlLAorICAgIGNhblNob3dGUFND
b3VudGVyOiBmYWxzZQogfQogCiAvKioKQEAgLTk2LDYgKzk3LDcgQEAgV2ViSW5zcGVjdG9yLlNl
dHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd1NjcmlwdEZvbGRlcnMgPSB0aGlzLmNy
ZWF0ZVNldHRpbmcoInNob3dTY3JpcHRGb2xkZXJzIiwgdHJ1ZSk7CiAgICAgdGhpcy5lbXVsYXRl
VG91Y2hFdmVudHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImVtdWxhdGVUb3VjaEV2ZW50cyIsIGZh
bHNlKTsKICAgICB0aGlzLnNob3dQYWludFJlY3RzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93
UGFpbnRSZWN0cyIsIGZhbHNlKTsKKyAgICB0aGlzLnNob3dGUFNDb3VudGVyID0gdGhpcy5jcmVh
dGVTZXR0aW5nKCJzaG93RlBTQ291bnRlciIsIGZhbHNlKTsKICAgICB0aGlzLnNob3dTaGFkb3dE
T00gPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dTaGFkb3dET00iLCBmYWxzZSk7CiAgICAgdGhp
cy56b29tTGV2ZWwgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInpvb21MZXZlbCIsIDApOwogICAgIHRo
aXMuc2F2ZWRVUkxzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzYXZlZFVSTHMiLCB7fSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVu
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5q
cwppbmRleCAwMGE4MzU1NzRmMzRjZDZmZTA3Yzk4MjRjM2Y1Yzg0OGU5YzdiMDZjLi44NDI4OGNi
MTBjNWJiOGQ1MzUwYzMzN2JjMWMyOTc0MWNiNzA2ZjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKQEAgLTI3Myw2ICsy
NzMsMTEgQEAgV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYiA9IGZ1bmN0aW9uKCkKICAg
ICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlNob3cgcGFpbnQgcmVjdGFuZ2xlcyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
c2hvd1BhaW50UmVjdHMpKTsKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1BhaW50UmVj
dHMuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1BhaW50UmVjdHNDaGFuZ2VkLCB0aGlzKTsK
IAorICAgIGlmIChDYXBhYmlsaXRpZXMuY2FuU2hvd0ZQU0NvdW50ZXIpIHsKKyAgICAgICAgcC5h
cHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IEZQUyBtZXRlciIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50
ZXIpKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmFkZENo
YW5nZUxpc3RlbmVyKHRoaXMuX3Nob3dGUFNDb3VudGVyQ2hhbmdlZCwgdGhpcyk7CisgICAgfQor
CiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3Vy
Y2VzIikpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBmb2xkZXJzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5zaG93U2NyaXB0Rm9sZGVycykpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hl
Y2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIGluIGNvbnRlbnQgc2Ny
aXB0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2VhcmNoSW5Db250ZW50U2NyaXB0cykpOwpA
QCAtMzA5LDYgKzMxNCwxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5nZXQoKSk7CiAgICAgfSwKIAorICAgIF9zaG93RlBT
Q291bnRlckNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFBhZ2VBZ2VudC5zZXRT
aG93RlBTQ291bnRlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkp
OworICAgIH0sCisKICAgICBfdXBkYXRlU2NyaXB0RGlzYWJsZWRDaGVja2JveDogZnVuY3Rpb24o
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZXhlY3V0aW9uU3RhdHVzQ2FsbGJhY2soZXJyb3Is
IHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMKaW5kZXggNTg3Y2I2MjMzNGNmNGM1MThkMWNkNWZmMzdkMDc3MjNkYzI4NmE2MC4uNmZi
ZjdiZDhkMTkzZTdjODg3MDc0NjRmMzdlNjQ1MWEwZTYxMWRhYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM3MSw2ICszNzEsNyBA
QCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIFByb2ZpbGVyQWdl
bnQuaGFzSGVhcFByb2ZpbGVyKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHkuYmlu
ZChXZWJJbnNwZWN0b3IsICJoZWFwUHJvZmlsZXJQcmVzZW50IiwgbnVsbCkpOwogICAgIFRpbWVs
aW5lQWdlbnQuc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRp
YWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAidGltZWxpbmVTdXBwb3J0c0ZyYW1l
SW5zdHJ1bWVudGF0aW9uIiwgbnVsbCkpOwogICAgIFRpbWVsaW5lQWdlbnQuY2FuTW9uaXRvck1h
aW5UaHJlYWQoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3Bl
Y3RvciwgInRpbWVsaW5lQ2FuTW9uaXRvck1haW5UaHJlYWQiLCBudWxsKSk7CisgICAgUGFnZUFn
ZW50LmNhblNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFiaWxpdHku
YmluZChXZWJJbnNwZWN0b3IsICJjYW5TaG93RlBTQ291bnRlciIsIG51bGwpKTsKICAgICBQYWdl
QWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VNZXRyaWNzKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNh
cGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJjYW5PdmVycmlkZURldmljZU1ldHJpY3MiLCBu
dWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlR2VvbG9jYXRpb24oV2ViSW5zcGVjdG9y
Ll9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJyaWRlR2Vv
bG9jYXRpb24iLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlRGV2aWNlT3JpZW50
YXRpb24oV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3Rv
ciwgImNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24iLCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVk
RG9uZVdpdGhDYXBhYmlsaXRpZXMuYmluZChXZWJJbnNwZWN0b3IpKSk7CkBAIC00ODMsNiArNDg0
LDkgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rp
b24oKQogICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuamF2YVNjcmlwdERpc2FibGVkLmdl
dCgpKQogICAgICAgICBQYWdlQWdlbnQuc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQodHJ1ZSk7
CiAKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVyLmdldCgpKQor
ICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CisKICAgICB0aGlzLmRv
bUFnZW50Ll9lbXVsYXRlVG91Y2hFdmVudHNDaGFuZ2VkKCk7CiAKICAgICBXZWJJbnNwZWN0b3Iu
V29ya2VyTWFuYWdlci5sb2FkQ29tcGxldGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmgKaW5kZXggNDlhYWE1MTM4MTE5ODg0MTU3NzkxMzBjOWVmMDI2Yjc4NjNkOGEz
OS4uMmVjMWIxYmFkYTBhZWQ5ZjUwNTNjYzdiOGMyMDY3OTIyOGJlMWQ1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNDcxLDYgKzQ3MSw4IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGlvbkVkaXRhYmxlKCkgY29uc3QgPSAwOwogCisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpID0gMDsKKwogICAgIC8vIEJl
bmNobWFya2luZyBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIGJlbmNo
bWFya1N1cHBvcnQoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IGM2ZTdiMjI3NzE3M2NiMDMxNTgy
OWU1MDcxMjFjN2VhZDE3YzEzOWEuLjIyMGI3ZGI3NDMwNjUyNDcyMmU4YTNjYTVmZmEzNmRlNzhl
NDI3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNs
aWVudEltcGwuY3BwCkBAIC0xNjMsNiArMTYzLDE2IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1w
bDo6YXV0b1pvb21QYWdlVG9GaXRXaWR0aCgpCiAgICAgICAgIGFnZW50LT5hdXRvWm9vbVBhZ2VU
b0ZpdFdpZHRoKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluc3BlY3RvckNsaWVudElt
cGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBtX2luc3BlY3RlZFdlYlZp
ZXctPnNldFNob3dGUFNDb3VudGVyKHNob3cpOworfQorCiBib29sIEluc3BlY3RvckNsaWVudElt
cGw6OnN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKQogewogICAgIHJldHVybiB0cnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmlu
ZGV4IDc1ZTFlNDM0MmIzNmYwMDAyYzNlNzk3NjFiZDQ2MTc3NzZmNDFkMjkuLmE3NTkyNTdhZjg1
Y2U4MDE4MTQ4MmNjMzM0NjIzZTE0YjZjMThiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTc3LDYgKzc3LDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvdmVycmlkZURldmljZU1ldHJpY3MoaW50LCBpbnQsIGZsb2F0
LCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgYXV0b1pvb21QYWdlVG9GaXRXaWR0aCgpOwogCisg
ICAgdmlydHVhbCBib29sIGNhblNob3dGUFNDb3VudGVyKCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNob3dGUFNDb3VudGVyKGJvb2wpOworCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJ
bnN0cnVtZW50YXRpb24oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0ZWRPYmplY3Rz
KEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKaW5kZXggZjZmOWZjNmZhN2MxMjQ4MGFkNDA2Y2U1YTg5OTVlYTYzZDRjM2M5
MC4uNzI3NjIxZjIyYzc4MTZjODgzNzlhZGVmYTZjMDkxNjZiOTY3OGI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDI1LDYgKzQyNSw3IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2Nv
bXBvc2l0b3JTdXJmYWNlUmVhZHkoZmFsc2UpCiAgICAgLCBtX2RldmljZVNjYWxlSW5Db21wb3Np
dG9yKDEpCiAgICAgLCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIoLTEpCisgICAgLCBtX2lzRm9u
dEF0bGFzTG9hZGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAg
ICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpjcmVhdGUoY2xp
ZW50KSkKQEAgLTgzMSw2ICs4MzIsMTcgQEAgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIFdlYlZp
ZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkKICAgICByZXR1cm4gJm1fYmVuY2htYXJrU3VwcG9y
dDsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93KQor
eworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgeworICAgICAgICBU
UkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIiKTsK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIGxvYWRGb250QXRsYXNJ
Zk5lY2Vzc2FyeSgpOworI2VuZGlmCisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0U2hvd0ZQ
U0NvdW50ZXIoc2hvdyk7CisgICAgfQorfQorCiBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVLZXlF
dmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NFUlQoKGV2ZW50
LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKQEAgLTM5OTUsMTcgKzQwMDcsMTUg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJv
b2wgYWN0aXZlKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29tcG9zaXRvciht
X2lucHV0SGFuZGxlcklkZW50aWZpZXIpOwogICAgICAgICAgICAgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgbV9jb21wb3NpdG9yQ3JlYXRpb25G
YWlsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNGb250QXRsYXNMb2FkZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKICAgICAgICAgICAgICAgICBtX3BhZ2VP
dmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAgICAgICAgIC8vIE9ubHkgYWxsb2NhdGUgdGhlIGZv
bnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBkaXNwbGF5Lgot
ICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291bnRlciB8fCBs
YXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKSB7Ci0gICAgICAgICAg
ICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQWN0aXZlKHRydWUpIGluaXRpYWxpemUgZm9udCBhdGxhcyIpOwotICAgICAgICAg
ICAgICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwotICAgICAgICAgICAgICAgIGlu
dCBmb250SGVpZ2h0OwotICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6
OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFi
bGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Rm9u
dEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGJpdG1hcCwgZm9udEhlaWdodCk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAobGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQbGF0Zm9ybUxh
eWVyVHJlZSkKKyAgICAgICAgICAgICAgICBsb2FkRm9udEF0bGFzSWZOZWNlc3NhcnkoKTsKKwor
ICAgICAgICAgICAgaWYgKHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigpKQorICAgICAg
ICAgICAgICAgIHNldFNob3dGUFNDb3VudGVyKHRydWUpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKICAgICAgICAgICAg
IG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7CkBAIC00MDE3LDYgKzQw
MjcsMjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgpLT52aWV3KCktPnNl
dENsaXBzUmVwYWludHMoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKTsKIH0KIAor
dm9pZCBXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5KCkKK3sKKyAgICBBU1NF
UlQobV9sYXllclRyZWVWaWV3KTsKKworICAgIGlmIChtX2lzRm9udEF0bGFzTG9hZGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6
bG9hZEZvbnRBdGxhcyIpOworICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOworICAg
IGludCBmb250SGVpZ2h0OworICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6OkNvbXBvc2l0
b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGZvbnRI
ZWlnaHQpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Rm9udEF0bGFzKGFzY2lpVG9SZWN0VGFi
bGUsIGJpdG1hcCwgZm9udEhlaWdodCk7CisgICAgbV9pc0ZvbnRBdGxhc0xvYWRlZCA9IHRydWU7
Cit9CisKICNlbmRpZgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggMDJhMWU1MzcwNDBiNjgwMDc2OGZjMWJlOTFjM2ZhYjZmMDZmZWM1
Mi4uOWYwNTYxODBiMzg5MDY0Yzg1MGQ0N2U1NDE5Zjk3ZjI5NmY4ZWM0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0zMDksNiArMzA5LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxGbGluZ0FuaW1h
dGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogICAgIHZpcnR1YWwg
V2ViVmlld0JlbmNobWFya1N1cHBvcnQqIGJlbmNobWFya1N1cHBvcnQoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAKICAgICAvLyBXZWJMYXllclRyZWVWaWV3
Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CkBAIC02NTAsNiArNjUx
LDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2
b2lkIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sKTsKKyAgICB2b2lkIGxv
YWRGb250QXRsYXNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgZG9Db21wb3NpdGUoKTsKICAgICB2
b2lkIGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNhbnZhcyosIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKTsKICAgICB2b2lkIHJlYWxsb2NhdGVSZW5kZXJlcigpOwpAQCAtODQ2LDYgKzg0OCw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHk7CiAgICAgZmxv
YXQgbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcjsKICAgICBpbnQgbV9pbnB1dEhhbmRsZXJJZGVu
dGlmaWVyOworICAgIGJvb2wgbV9pc0ZvbnRBdGxhc0xvYWRlZDsKICNlbmRpZgogICAgIHN0YXRp
YyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJlbnRJbnB1dEV2ZW50OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173387</attachid>
            <date>2012-11-09 16:02:44 -0800</date>
            <delta_ts>2012-11-12 12:04:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121109160051.patch</filename>
            <type>text/plain</type>
            <size>20784</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhNWNiMjg3MzAyNGM1
MjUwZjEzZjE3NDFiYjY2MDg5YzlhNmUwZWNjLi5hM2YxZTQ1MDQ3NGUzYmI0MmFmNjc1NGQzN2Q4
MjMzMjA4ZGJmOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0wOSAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVj
a2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hl
Y2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVy
LiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMS0wOCAg
U2FtaSBLeW9zdGlsYSAgPHNreW9zdGlsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnRyb2R1
Y2UgV2ViU2NyZWVuSW5mby5kZXZpY2VTY2FsZUZhY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGIyMmI0ZDMw
ODg1OTUwZmNlYjhhY2M3MWRhZTI1ZDk5YzQwMTljNWUuLmM4YTU2ZGQzMzAzOWNmMDY0NTUyNzJj
MzgzYjZiNTUwNzRhZGE4MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMi0xMS0w
OSAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBj
aGVja2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEg
Y2hlY2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3Vu
dGVyLiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQ
U0NvdW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudDo6Y2FuU2hv
d0ZQU0NvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpzZXRTaG93
RlBTQ291bnRlcik6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoUGFnZUFnZW50U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjplbmFibGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FuU2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3Vu
dGVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkdlbmVy
aWNTZXR0aW5nc1RhYik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFi
LnByb3RvdHlwZS5nZXQgX3Nob3dGUFNDb3VudGVyQ2hhbmdlZCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuZG9Mb2Fk
ZWREb25lKToKKwogMjAxMi0xMS0wOSAgQnJ1bm8gZGUgT2xpdmVpcmEgQWJpbmFkZXIgIDxicnVu
by5hYmluYWRlckBiYXN5c2tvbS5jb20+CiAKICAgICAgICAgW2Nzc10gVGV4dCBkZWNvcmF0aW9u
J3MgImJsaW5rIiBub3QgdmFsaWQgd2hlbiBDU1MzX1RFWFQgaXMgZW5hYmxlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBkNTg2ZmJhNDMyMjM5MmRlY2JiNzUzY2M0ZGMwYjRhMDAxNDgx
YWRiLi5jZTQwYTg3YWQzYjdmZGY5NDYxNmUwODQ1OWQzN2MzYmM2NDVlOGY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTExLTA5ICBFYmVyaGFyZCBH
cmFldGhlciAgPGVncmFldGhlckBnb29nbGUuY29tPgorCisgICAgICAgIGNoZWNrYm94IHRvIHRv
Z2dsZSBGUFMgY291bnRlciBpbiB0aGUgaW5zcGVjdG9yJ3Mgc2V0dGluZ3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NjYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBjaGVja2JveCB0byB0
aGUgaW5zcGVjdG9yJ3Mgc2V0dGluZ3MgdG8gdG9nZ2xlIGEgRlBTIGNvdW50ZXIuIFRoZSBjaGVj
a2JveCBhcHBlYXJzIHdoZW4gSW5zcGVjdG9yQ2xpZW50OjpjYW5TaG93RlBTQ291bnRlcigpIHJl
dHVybnMgdHJ1ZS4KKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgIChXZWJW
aWV3KToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OmNhblNob3dGUFNDb3VudGVyKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6OnNldFNob3dG
UFNDb3VudGVyKToKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oOgorICAgICAg
ICAoSW5zcGVjdG9yQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhc0lm
TmVjZXNzYXJ5KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYlZp
ZXdJbXBsKToKKwogMjAxMi0xMS0wOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNDAxMC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmll
dy5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgK
aW5kZXggMzQ1MDQ1YWQ0YzhmMmYzNTU2ZjlkZTAyMmQxZWNjMDFhMDA5M2MzNi4uY2Q5MTFlZDk2
MTAyYTFhZWIzYmYyMzdjYTFjODIwNjA5NzU5ZmY0NCAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKQEAgLTE2OSw2ICsxNjksOSBA
QCBwdWJsaWM6CiAgICAgLy8gVGhpcyBjYWxsIGlzIHJlbGF0aXZlbHkgZXhwZW5zaXZlIGluIHRo
cmVhZGVkIG1vZGUgYXMgaXQgYmxvY2tzIG9uIHRoZSBjb21wb3NpdG9yIHRocmVhZC4KICAgICB2
aXJ0dWFsIHZvaWQgcmVuZGVyaW5nU3RhdHMoV2ViUmVuZGVyaW5nU3RhdHMmKSBjb25zdCA9IDA7
CiAKKyAgICAvLyBUb2dnbGVzIHRoZSBGUFMgY291bnRlciBpbiB0aGUgSFVEIGxheWVyCisgICAg
dmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpIHsgfQorCiAgICAgLy8gUHJvdmlk
ZXMgYSBmb250IGF0bGFzIHRvIHVzZSBmb3IgZGVidWcgdmlzdWFsaXphdGlvbnMuIFRoZSBhdGxh
cyBtdXN0IGJlIGEgYml0bWFwIGNvbnRhaW5pbmcgZ2x5cGggZGF0YSwgYSB0YWJsZSBvZgogICAg
IC8vIEFTQ0lJIGNoYXJhY3RlciB2YWx1ZXMgdG8gYSBzdWJyZWN0YW5nbGUgb2YgdGhlIGF0bGFz
IHJlcHJlc2VudGluZyB0aGUgY29ycmVzcG9uZGluZyBnbHlwaCwgYW5kIHRoZSBnbHlwaCBoZWln
aHQuCiAgICAgdmlydHVhbCB2b2lkIHNldEZvbnRBdGxhcyhXZWJSZWN0IGFzY2lpVG9SZWN0VGFi
bGVbMTI4XSwgY29uc3QgU2tCaXRtYXAmLCBpbnQgZm9udEhlaWdodCkgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYmI2MzdmN2JmYzZmZWU0ODllZjY4MmMx
MDFjNTkxN2I1ZWFmNmU1Ni4uNGE2NDgzNmIwZjY0ZGZhNWZkYmNhMTljNDk5NTVmODI4ODM2ZDdi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzQ1LDYgKzM0
NSwyMiBAQAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9LAog
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogImNhblNob3dGUFNDb3VudGVy
IiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGVsbHMgaWYgYmFja2VuZCBzdXBw
b3J0cyBhIEZQUyBjb3VudGVyIGRpc3BsYXkiLAorICAgICAgICAgICAgICAgICJyZXR1cm5zIjog
WworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNob3ciLCAidHlwZSI6ICJib29sZWFu
IiwgImRlc2NyaXB0aW9uIjogIlRydWUgaWYgdGhlIEZQUyBjb3VudCBjYW4gYmUgc2hvd24iIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInNldFNo
b3dGUFNDb3VudGVyIiwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdHMg
dGhhdCBiYWNrZW5kIHNob3dzIHRoZSBGUFMgY291bnRlciIsCisgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hvdyIsICJ0eXBl
IjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBmb3Igc2hvd2luZyB0aGUgRlBTIGNv
dW50ZXIiIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogImdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkRldGVybWluZXMgaWYgc2NyaXB0cyBjYW4gYmUgZXhlY3V0ZWQgaW4gdGhlIHBhZ2Uu
IiwKICAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDbGllbnQuaAppbmRleCBhNDJjMmFhYmMxNjZjNTliMmM0ZjYxM2Q1ZDMwMzVi
ZGU0MTA4MDNiLi4yNGJkZTUxMWIxODNhMTliNjJiMjZhODEzMWM4YjljMjAyYzE4MmJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCkBAIC03Miw2ICs3Miw5
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IFBsYXRmb3JtcyBtYXkgd2FudCB0byBpbXBs
ZW1lbnQgdGhpcyAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
Mjg4NikuCiAgICAgfQogCisgICAgdmlydHVhbCBib29sIGNhblNob3dGUFNDb3VudGVyKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkg
eyB9CisKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsb2NhdGVkT2JqZWN0cyhI
YXNoU2V0PGNvbnN0IHZvaWQqPiYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCAxZGRhYTdmNTZhZWVkZWMyOTA1OWQ5YmY0N2Jk
OTYzYmQ5YmFjOWZlLi4xN2JiMzU4NGRhZDYzNzk1NzNmNGJmM2RjZjkwYTdlZGY5ZWZlYmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApA
QCAtOTIsNiArOTIsNyBAQCBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5XaWR0aE92
ZXJyaWRlW10gPSAicGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZQogc3RhdGljIGNvbnN0IGNo
YXIgcGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRTY3JlZW5IZWln
aHRPdmVycmlkZSI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JP
dmVycmlkZVtdID0gInBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlIjsKIHN0YXRpYyBj
b25zdCBjaGFyIHBhZ2VBZ2VudEZpdFdpbmRvd1tdID0gInBhZ2VBZ2VudEZpdFdpbmRvdyI7Citz
dGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTaG93RlBTQ291bnRlcltdID0gInBhZ2VBZ2VudFNo
b3dGUFNDb3VudGVyIjsKIHN0YXRpYyBjb25zdCBjaGFyIHNob3dQYWludFJlY3RzW10gPSAic2hv
d1BhaW50UmVjdHMiOwogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiBzdGF0aWMgY29uc3QgY2hh
ciB0b3VjaEV2ZW50RW11bGF0aW9uRW5hYmxlZFtdID0gInRvdWNoRXZlbnRFbXVsYXRpb25FbmFi
bGVkIjsKQEAgLTM2Niw2ICszNjcsOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZW5hYmxl
KEVycm9yU3RyaW5nKikKICAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpw
YWdlQWdlbnRFbmFibGVkLCB0cnVlKTsKICAgICBib29sIHNjcmlwdEV4ZWN1dGlvbkRpc2FibGVk
ID0gbV9zdGF0ZS0+Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyaXB0RXhl
Y3V0aW9uRGlzYWJsZWQpOwogICAgIHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKDAsIHNjcmlw
dEV4ZWN1dGlvbkRpc2FibGVkKTsKKyAgICBib29sIHNob3dGUFNDb3VudGVyID0gbV9zdGF0ZS0+
Z2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIpOworICAg
IHNldFNob3dGUFNDb3VudGVyKDAsIHNob3dGUFNDb3VudGVyKTsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvclBhZ2VBZ2VudCh0aGlzKTsKIH0KIApAQCAtMzc1LDYgKzM3
OCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvclBhZ2VBZ2VudCgwKTsKIAogICAg
IHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKDAsIGZhbHNlKTsKKyAgICBzZXRTaG93RlBTQ291
bnRlcigwLCBmYWxzZSk7CiAKICAgICAvLyBXaGVuIGRpc2FibGluZyB0aGUgYWdlbnQsIHJlc2V0
IHRoZSBvdmVycmlkZSB2YWx1ZXMuCiAgICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0
ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSwgMCk7CkBAIC03MTEsNiArNzE1LDE4IEBA
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyos
IGJvb2wgc2hvdykKICAgICAgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlk
YXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjYW5TaG93RlBTQ291bnRlcihF
cnJvclN0cmluZyosIGJvb2wqIG91dFBhcmFtKQoreworICAgICpvdXRQYXJhbSA9IG1fY2xpZW50
LT5jYW5TaG93RlBTQ291bnRlcigpOworfQorCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0
U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpCit7CisgICAgbV9zdGF0ZS0+
c2V0Qm9vbGVhbihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIsIHNob3cp
OworICAgIG1fY2xpZW50LT5zZXRTaG93RlBTQ291bnRlcihzaG93KTsKKyAgICBtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKK30KKwogdm9pZCBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VDb21tYW5k
SGFuZGxlcjo6UmVzdWx0OjpFbnVtKiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxlZEJ5U2Ny
aXB0Q29udHJvbGxlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCmluZGV4IDI3NjhiYjE3ZmJlMjg2Y2Y2NTU0OWM3NjkwMzFiNWViZGZl
MjkyYWYuLjM5N2U4NWIyYTI4ZDA2Zjk0MzkzOTAxMDU0MjljYWM5YzVkYThiOWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwOSw2ICsx
MDksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbk92ZXJyaWRlRGV2aWNlTWV0cmlj
cyhFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNlTWV0cmlj
c092ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3VibGUgZm9u
dFNjYWxlRmFjdG9yLCBib29sIGZpdFdpbmRvdyk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3dQ
YWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fu
U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKik7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KTsKICAgICB2aXJ0dWFsIHZv
aWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nKiwgUGFnZUNvbW1hbmRIYW5k
bGVyOjpSZXN1bHQ6OkVudW0qKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhlY3V0aW9u
RGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0R2VvbG9j
YXRpb25PdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IGRvdWJsZSosIGNvbnN0IGRvdWJsZSos
IGNvbnN0IGRvdWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2V0dGluZ3MuanMKaW5kZXggMWFlMjEwODNiMTQxZjY1MzA5ZGEwNDQwNWE5YjBlMmExNDEwYjA2
ZC4uNmQ1OGE5NjU0ODMyOGRiZTdlZTI4NjFjNzM1YjRlODBmOTlmNWRhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC01OCw2ICs1OCw3
IEBAIHZhciBDYXBhYmlsaXRpZXMgPSB7CiAgICAgdGltZWxpbmVDYW5Nb25pdG9yTWFpblRocmVh
ZDogZmFsc2UsCiAgICAgY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbjogZmFsc2UsCiAgICAgY2FuT3Zl
cnJpZGVEZXZpY2VPcmllbnRhdGlvbjogZmFsc2UsCisgICAgY2FuU2hvd0ZQU0NvdW50ZXI6IGZh
bHNlCiB9CiAKIC8qKgpAQCAtOTYsNiArOTcsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBm
dW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRlU2V0dGlu
Zygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKICAgICB0aGlzLmVtdWxhdGVUb3VjaEV2ZW50
cyA9IHRoaXMuY3JlYXRlU2V0dGluZygiZW11bGF0ZVRvdWNoRXZlbnRzIiwgZmFsc2UpOwogICAg
IHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dQYWludFJlY3Rz
IiwgZmFsc2UpOworICAgIHRoaXMuc2hvd0ZQU0NvdW50ZXIgPSB0aGlzLmNyZWF0ZVNldHRpbmco
InNob3dGUFNDb3VudGVyIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1NoYWRvd0RPTSA9IHRoaXMu
Y3JlYXRlU2V0dGluZygic2hvd1NoYWRvd0RPTSIsIGZhbHNlKTsKICAgICB0aGlzLnpvb21MZXZl
bCA9IHRoaXMuY3JlYXRlU2V0dGluZygiem9vbUxldmVsIiwgMCk7CiAgICAgdGhpcy5zYXZlZFVS
THMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNhdmVkVVJMcyIsIHt9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmluZGV4IDAw
YTgzNTU3NGYzNGNkNmZlMDdjOTgyNGMzZjVjODQ4ZTljN2IwNmMuLjg0Mjg4Y2IxMGM1YmI4ZDUz
NTBjMzM3YmMxYzI5NzQxY2I3MDZmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtMjczLDYgKzI3MywxMSBAQCBX
ZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiID0gZnVuY3Rpb24oKQogICAgIHAuYXBwZW5k
Q2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyBwYWludCByZWN0YW5nbGVzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRS
ZWN0cykpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5hZGRDaGFu
Z2VMaXN0ZW5lcih0aGlzLl9zaG93UGFpbnRSZWN0c0NoYW5nZWQsIHRoaXMpOwogCisgICAgaWYg
KENhcGFiaWxpdGllcy5jYW5TaG93RlBTQ291bnRlcikgeworICAgICAgICBwLmFwcGVuZENoaWxk
KHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cg
RlBTIG1ldGVyIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlcikpOworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuYWRkQ2hhbmdlTGlzdGVu
ZXIodGhpcy5fc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKICAgICBwID0g
dGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMiKSk7CiAg
ICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTaG93IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dTY3Jp
cHRGb2xkZXJzKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRp
bmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2ggaW4gY29udGVudCBzY3JpcHRzIiksIFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5zZWFyY2hJbkNvbnRlbnRTY3JpcHRzKSk7CkBAIC0zMDksNiAr
MzE0LDExIEBAIFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlID0gewog
ICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMoV2ViSW5zcGVjdG9yLnNldHRpbmdz
LnNob3dQYWludFJlY3RzLmdldCgpKTsKICAgICB9LAogCisgICAgX3Nob3dGUFNDb3VudGVyQ2hh
bmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgUGFnZUFnZW50LnNldFNob3dGUFNDb3Vu
dGVyKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5nZXQoKSk7CisgICAgfSwK
KwogICAgIF91cGRhdGVTY3JpcHREaXNhYmxlZENoZWNrYm94OiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICBmdW5jdGlvbiBleGVjdXRpb25TdGF0dXNDYWxsYmFjayhlcnJvciwgc3RhdHVzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRl
eCA1ODdjYjYyMzM0Y2Y0YzUxOGQxY2Q1ZmYzN2QwNzcyM2RjMjg2YTYwLi42ZmJmN2JkOGQxOTNl
N2M4ODcwNzQ2NGYzN2U2NDUxYTBlNjExZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMzcxLDYgKzM3MSw3IEBAIFdlYkluc3Bl
Y3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgUHJvZmlsZXJBZ2VudC5oYXNIZWFw
UHJvZmlsZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3Bl
Y3RvciwgImhlYXBQcm9maWxlclByZXNlbnQiLCBudWxsKSk7CiAgICAgVGltZWxpbmVBZ2VudC5z
dXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFi
aWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJ0aW1lbGluZVN1cHBvcnRzRnJhbWVJbnN0cnVtZW50
YXRpb24iLCBudWxsKSk7CiAgICAgVGltZWxpbmVBZ2VudC5jYW5Nb25pdG9yTWFpblRocmVhZChX
ZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAidGlt
ZWxpbmVDYW5Nb25pdG9yTWFpblRocmVhZCIsIG51bGwpKTsKKyAgICBQYWdlQWdlbnQuY2FuU2hv
d0ZQU0NvdW50ZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYklu
c3BlY3RvciwgImNhblNob3dGUFNDb3VudGVyIiwgbnVsbCkpOwogICAgIFBhZ2VBZ2VudC5jYW5P
dmVycmlkZURldmljZU1ldHJpY3MoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5i
aW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyIsIG51bGwpKTsKICAg
ICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbihXZWJJbnNwZWN0b3IuX2luaXRpYWxp
emVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbiIs
IG51bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbihXZWJJ
bnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3Zl
cnJpZGVEZXZpY2VPcmllbnRhdGlvbiIsIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENh
cGFiaWxpdGllcy5iaW5kKFdlYkluc3BlY3RvcikpKTsKQEAgLTQ4Myw2ICs0ODQsOSBAQCBXZWJJ
bnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAg
aWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5qYXZhU2NyaXB0RGlzYWJsZWQuZ2V0KCkpCiAgICAg
ICAgIFBhZ2VBZ2VudC5zZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCh0cnVlKTsKIAorICAgIGlm
IChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkpCisgICAgICAgIFBh
Z2VBZ2VudC5zZXRTaG93RlBTQ291bnRlcih0cnVlKTsKKwogICAgIHRoaXMuZG9tQWdlbnQuX2Vt
dWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3JrZXJNYW5h
Z2VyLmxvYWRDb21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcu
aAppbmRleCA0OWFhYTUxMzgxMTk4ODQxNTc3OTEzMGM5ZWYwMjZiNzg2M2Q4YTM5Li4yZWMxYjFi
YWRhMGFlZDlmNTA1M2NjN2I4YzIwNjc5MjI4YmUxZDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oCkBAIC00NzEsNiArNDcxLDggQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBib29sIGlzU2VsZWN0aW9uRWRpdGFibGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgPSAwOworCiAgICAgLy8gQmVuY2htYXJraW5n
IHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3VwcG9y
dCgpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5z
cGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggYzZlN2IyMjc3MTczY2IwMzE1ODI5ZTUwNzEyMWM3
ZWFkMTdjMTM5YS4uMjIwYjdkYjc0MzA2NTI0NzIyZThhM2NhNWZmYTM2ZGU3OGU0MjcwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5j
cHAKQEAgLTE2Myw2ICsxNjMsMTYgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjphdXRvWm9v
bVBhZ2VUb0ZpdFdpZHRoKCkKICAgICAgICAgYWdlbnQtPmF1dG9ab29tUGFnZVRvRml0V2lkdGgo
KTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjYW5TaG93RlBTQ291bnRlcigpCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c2V0U2hv
d0ZQU0NvdW50ZXIoYm9vbCBzaG93KQoreworICAgIG1faW5zcGVjdGVkV2ViVmlldy0+c2V0U2hv
d0ZQU0NvdW50ZXIoc2hvdyk7Cit9CisKIGJvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6c3VwcG9y
dHNGcmFtZUluc3RydW1lbnRhdGlvbigpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5kZXggNzVlMWU0
MzQyYjM2ZjAwMDJjM2U3OTc2MWJkNDYxNzc3NmY0MWQyOS4uYTc1OTI1N2FmODVjZTgwMTgxNDgy
Y2MzMzQ2MjNlMTRiNmMxOGIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG92ZXJyaWRlRGV2aWNlTWV0cmljcyhpbnQsIGludCwgZmxvYXQsIGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCBhdXRvWm9vbVBhZ2VUb0ZpdFdpZHRoKCk7CiAKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuU2hvd0ZQU0NvdW50ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0Nv
dW50ZXIoYm9vbCk7CisKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3RydW1lbnRh
dGlvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxj
b25zdCB2b2lkKj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cAppbmRleCBmNmY5ZmM2ZmE3YzEyNDgwYWQ0MDZjZTVhODk5NWVhNjNkNGMzYzkwLi43Mjc2MjFm
MjJjNzgxNmM4ODM3OWFkZWZhNmMwOTE2NmI5Njc4YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MjUsNiArNDI1LDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29tcG9zaXRvclN1
cmZhY2VSZWFkeShmYWxzZSkKICAgICAsIG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3IoMSkKICAg
ICAsIG1faW5wdXRIYW5kbGVySWRlbnRpZmllcigtMSkKKyAgICAsIG1faXNGb250QXRsYXNMb2Fk
ZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwgbV9zcGVl
Y2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQpKQpAQCAt
ODMxLDYgKzgzMiwxNyBAQCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogV2ViVmlld0ltcGw6OmJl
bmNobWFya1N1cHBvcnQoKQogICAgIHJldHVybiAmbV9iZW5jaG1hcmtTdXBwb3J0OwogfQogCit2
b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlcihib29sIHNob3cpCit7CisgICAgaWYg
KGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CisgICAgICAgIFRSQUNFX0VWRU5U
MCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlciIpOworI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgbG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5
KCk7CisjZW5kaWYKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTaG93RlBTQ291bnRlcihz
aG93KTsKKyAgICB9Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50KGNvbnN0
IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlwZSA9PSBX
ZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duKQpAQCAtMzk5NSwxNyArNDAwNywxNSBAQCB2b2lkIFdl
YlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUp
CiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1faW5wdXRIYW5k
bGVySWRlbnRpZmllcik7CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSA9IHRydWU7CiAgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZCA9IGZh
bHNlOworICAgICAgICAgICAgbV9pc0ZvbnRBdGxhc0xvYWRlZCA9IGZhbHNlOwogICAgICAgICAg
ICAgaWYgKG1fcGFnZU92ZXJsYXlzKQogICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJsYXlzLT51
cGRhdGUoKTsKIAotICAgICAgICAgICAgLy8gT25seSBhbGxvY2F0ZSB0aGUgZm9udCBhdGxhcyBp
ZiB3ZSBoYXZlIHJlYXNvbiB0byB1c2UgdGhlIGhlYWRzLXVwIGRpc3BsYXkuCi0gICAgICAgICAg
ICBpZiAobGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IGxheWVyVHJlZVZp
ZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKLSAgICAgICAgICAgICAgICBUUkFD
RV9FVkVOVDAoImNjIiwgIldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUodHJ1ZSkgaW5pdGlhbGl6ZSBmb250IGF0bGFzIik7Ci0gICAgICAgICAgICAgICAgV2Vi
UmVjdCBhc2NpaVRvUmVjdFRhYmxlWzEyOF07Ci0gICAgICAgICAgICAgICAgaW50IGZvbnRIZWln
aHQ7Ci0gICAgICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRv
ckhVREZvbnRBdGxhczo6Z2VuZXJhdGVGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhl
aWdodCk7Ci0gICAgICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRGb250QXRsYXMoYXNj
aWlUb1JlY3RUYWJsZSwgYml0bWFwLCBmb250SGVpZ2h0KTsKLSAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKQor
ICAgICAgICAgICAgICAgIGxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSgpOworCisgICAgICAgICAg
ICBpZiAoc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCkpCisgICAgICAgICAgICAgICAg
c2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9pc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKQEAgLTQwMTcsNiArNDAyNywyMSBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAgICAgICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0Q2xpcHNSZXBh
aW50cyghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOwogfQogCit2b2lkIFdlYlZp
ZXdJbXBsOjpsb2FkRm9udEF0bGFzSWZOZWNlc3NhcnkoKQoreworICAgIEFTU0VSVChtX2xheWVy
VHJlZVZpZXcpOworCisgICAgaWYgKG1faXNGb250QXRsYXNMb2FkZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIFRSQUNFX0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpsb2FkRm9udEF0
bGFzIik7CisgICAgV2ViUmVjdCBhc2NpaVRvUmVjdFRhYmxlWzEyOF07CisgICAgaW50IGZvbnRI
ZWlnaHQ7CisgICAgU2tCaXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhVREZvbnRB
dGxhczo6Z2VuZXJhdGVGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdodCk7Cisg
ICAgbV9sYXllclRyZWVWaWV3LT5zZXRGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgYml0bWFw
LCBmb250SGVpZ2h0KTsKKyAgICBtX2lzRm9udEF0bGFzTG9hZGVkID0gdHJ1ZTsKK30KKwogI2Vu
ZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAppbmRleCAwMmExZTUzNzA0MGI2ODAwNzY4ZmMxYmU5MWMzZmFiNmYwNmZlYzUyLi45ZjA1NjE4
MGIzODkwNjRjODUwZDQ3ZTU0MTlmOTdmMjk2ZjhlYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTMwOSw2ICszMDksNyBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9uKGNvbnN0
IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJWaWV3QmVu
Y2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG93RlBTQ291bnRlcihib29sKTsKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKTsKQEAgLTY1MCw2ICs2NTEsNyBAQCBwcml2
YXRlOgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQgc2V0SXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wpOworICAgIHZvaWQgbG9hZEZvbnRBdGxh
c0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQgZG9QaXhl
bFJlYWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgcmVhbGxvY2F0ZVJlbmRlcmVyKCk7CkBAIC04NDYsNiArODQ4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeTsKICAgICBmbG9hdCBtX2Rldmlj
ZVNjYWxlSW5Db21wb3NpdG9yOwogICAgIGludCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXI7Cisg
ICAgYm9vbCBtX2lzRm9udEF0bGFzTG9hZGVkOwogI2VuZGlmCiAgICAgc3RhdGljIGNvbnN0IFdl
YklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173683</attachid>
            <date>2012-11-12 12:04:13 -0800</date>
            <delta_ts>2012-11-13 17:58:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121112120215.patch</filename>
            <type>text/plain</type>
            <size>21658</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA4NmZkMTc0ZTQ4YTM3
NzQxOGFmYzBkODNlYjAzNmQxYmU1NDhkZDc5Li5iMzEwOWY0NTA5YTI1MWRjYmIyZGU0ZTc1NjU2
NWM3ODFiMWU4ZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0xMiAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVj
a2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hl
Y2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVy
LiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMS0xMiAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFNjaGVkdWxlIHRoZSBSVENEYXRhQ2hhbm5lbCBldmVudHMgdG8gYmUgdHJpZ2dl
cmVkIGF0IGlkbGUgc3RhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2MjQ5YTg3YWUxNzc0ODY0YWI4NzM5Y2Q0
NzhmMmUzOGY3ZGVlOTk0Li43M2M1MWQwZDEyOTJmZTUyYjAxZDE0ZGViNzE5ZGQ3MjM1ZDE2YTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMTEtMTIgIEViZXJoYXJkIEdyYWV0
aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgY2hlY2tib3ggdG8gdG9nZ2xl
IEZQUyBjb3VudGVyIGluIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94IHRvIHRoZSBp
bnNwZWN0b3IncyBzZXR0aW5ncyB0byB0b2dnbGUgYSBGUFMgY291bnRlci4gVGhlIGNoZWNrYm94
IGFwcGVhcnMgd2hlbiBJbnNwZWN0b3JDbGllbnQ6OmNhblNob3dGUFNDb3VudGVyKCkgcmV0dXJu
cyB0cnVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEVuZ2xpc2gubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ2xpZW50OjpjYW5TaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQ6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAgICAgKEluc3Bl
Y3RvckNsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6
CisgICAgICAgIChQYWdlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6
OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpjYW5TaG93
RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlLmdldCBfc2hvd0ZQU0NvdW50
ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgorCiAyMDEyLTExLTEyICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogTWFrZSBzdXJlIHRoYXQgTWVkaWFDb25zdHJhaW50cyBvbmx5IGhhcyBvcHRpb25hbCBh
bmQgbWFuZGF0b3J5IGF0IHRoZSB0b3AgbGV2ZWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggZjU4MWRlMjE3MDI1MjljYWM4NWVjNjUxMDhlOGRlZTNiZmEwMmY2OC4uZGFkNDUzZjg3YTNj
YjZmODQ2ZjNhYTZkM2FlZGNlMjdhYjI2MDc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyOSBAQAorMjAxMi0xMS0xMiAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRo
ZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVja2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIg
aW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNl
dHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVyLiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVu
IEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0NvdW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICog
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JD
bGllbnRJbXBsOjpjYW5TaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZXRTaG93RlBTQ291bnRlcik6CisgICAg
ICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVu
dEltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBs
OjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTIt
MTEtMTIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRk
IHN1cHBvcnQgZm9yIHdlZWsvbW9udGggdG8gTG9jYWxlOjpmb3JtYXREYXRlVGltZSgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcu
aCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCmlu
ZGV4IDM0NTA0NWFkNGM4ZjJmMzU1NmY5ZGUwMjJkMWVjYzAxYTAwOTNjMzYuLmNkOTExZWQ5NjEw
MmExYWViM2JmMjM3Y2ExYzgyMDYwOTc1OWZmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC0xNjksNiArMTY5LDkgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgY2FsbCBpcyByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBpbiB0aHJl
YWRlZCBtb2RlIGFzIGl0IGJsb2NrcyBvbiB0aGUgY29tcG9zaXRvciB0aHJlYWQuCiAgICAgdmly
dHVhbCB2b2lkIHJlbmRlcmluZ1N0YXRzKFdlYlJlbmRlcmluZ1N0YXRzJikgY29uc3QgPSAwOwog
CisgICAgLy8gVG9nZ2xlcyB0aGUgRlBTIGNvdW50ZXIgaW4gdGhlIEhVRCBsYXllcgorICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihib29sKSB7IH0KKwogICAgIC8vIFByb3ZpZGVz
IGEgZm9udCBhdGxhcyB0byB1c2UgZm9yIGRlYnVnIHZpc3VhbGl6YXRpb25zLiBUaGUgYXRsYXMg
bXVzdCBiZSBhIGJpdG1hcCBjb250YWluaW5nIGdseXBoIGRhdGEsIGEgdGFibGUgb2YKICAgICAv
LyBBU0NJSSBjaGFyYWN0ZXIgdmFsdWVzIHRvIGEgc3VicmVjdGFuZ2xlIG9mIHRoZSBhdGxhcyBy
ZXByZXNlbnRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgZ2x5cGgsIGFuZCB0aGUgZ2x5cGggaGVpZ2h0
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRGb250QXRsYXMoV2ViUmVjdCBhc2NpaVRvUmVjdFRhYmxl
WzEyOF0sIGNvbnN0IFNrQml0bWFwJiwgaW50IGZvbnRIZWlnaHQpIHsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNl
L1dlYkNvcmUvRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDZkM2RiZGM5
OGNmMmIwZDE2NzYzZmE5MDU5OGZiMjlkZTEyMDcyOWYuLjAyZmQ4NjRkMWZjYWM4MzJhYzljZTQz
NGM2MTg3N2I5MzllNmE1ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9q
L2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTY0Niw2ICs2NDYsNyBAQCBsb2NhbGl6ZWRTdHJpbmdz
WyJIaWRlIG5hdmlnYXRvciJdID0gIkhpZGUgbmF2aWdhdG9yIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkluZGV4ZWREQiJdID0gIkluZGV4ZWREQiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJBbmltYXRpb24i
XSA9ICJBbmltYXRpb24iOwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBwYWludCByZWN0YW5nbGVz
Il0gPSAiU2hvdyBwYWludCByZWN0YW5nbGVzIjsKK2xvY2FsaXplZFN0cmluZ3NbIlNob3cgRlBT
IG1ldGVyIl0gPSAiU2hvdyBGUFMgbWV0ZXIiOwogbG9jYWxpemVkU3RyaW5nc1siU2VjdXJpdHkg
b3JpZ2luIl0gPSAiU2VjdXJpdHkgb3JpZ2luIjsKIGxvY2FsaXplZFN0cmluZ3NbIlZlcnNpb24i
XSA9ICJWZXJzaW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIlByaW1hcnkga2V5Il0gPSAiUHJpbWFy
eSBrZXkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGJiNjM3
ZjdiZmM2ZmVlNDg5ZWY2ODJjMTAxYzU5MTdiNWVhZjZlNTYuLjRhNjQ4MzZiMGY2NGRmYTVmZGJj
YTE5YzQ5OTU1ZjgyODgzNmQ3YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24KQEAgLTM0NSw2ICszNDUsMjIgQEAKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1
ZQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6
ICJjYW5TaG93RlBTQ291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRl
bGxzIGlmIGJhY2tlbmQgc3VwcG9ydHMgYSBGUFMgY291bnRlciBkaXNwbGF5IiwKKyAgICAgICAg
ICAgICAgICAicmV0dXJucyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzaG93
IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlIGlmIHRoZSBGUFMgY291
bnQgY2FuIGJlIHNob3duIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAibmFtZSI6ICJzZXRTaG93RlBTQ291bnRlciIsCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlJlcXVlc3RzIHRoYXQgYmFja2VuZCBzaG93cyB0aGUgRlBTIGNvdW50ZXIiLAor
ICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogInNob3ciLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIlRydWUgZm9y
IHNob3dpbmcgdGhlIEZQUyBjb3VudGVyIiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMiLAogICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEZXRlcm1pbmVzIGlmIHNjcmlwdHMgY2FuIGJlIGV4
ZWN1dGVkIGluIHRoZSBwYWdlLiIsCiAgICAgICAgICAgICAgICAgInJldHVybnMiOiBbCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggYTQyYzJhYWJjMTY2
YzU5YjJjNGY2MTNkNWQzMDM1YmRlNDEwODAzYi4uMjRiZGU1MTFiMTgzYTE5YjYyYjI2YTgxMzFj
OGI5YzIwMmMxODJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaApAQCAtNzIsNiArNzIsOSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBQbGF0Zm9y
bXMgbWF5IHdhbnQgdG8gaW1wbGVtZW50IHRoaXMgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODI4ODYpLgogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBjYW5T
aG93RlBTQ291bnRlcigpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFNo
b3dGUFNDb3VudGVyKGJvb2wpIHsgfQorCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnJhbWVJ
bnN0cnVtZW50YXRpb24oKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGdl
dEFsbG9jYXRlZE9iamVjdHMoSGFzaFNldDxjb25zdCB2b2lkKj4mKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggMWRkYWE3ZjU2
YWVlZGVjMjkwNTlkOWJmNDdiZDk2M2JkOWJhYzlmZS4uMTdiYjM1ODRkYWQ2Mzc5NTczZjRiZjNk
Y2Y5MGE3ZWRmOWVmZWJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKQEAgLTkyLDYgKzkyLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcGFn
ZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZVtdID0gInBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJp
ZGUKIHN0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlW10gPSAi
cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFn
ZW50Rm9udFNjYWxlRmFjdG9yT3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JP
dmVycmlkZSI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRGaXRXaW5kb3dbXSA9ICJwYWdl
QWdlbnRGaXRXaW5kb3ciOworc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2hvd0ZQU0NvdW50
ZXJbXSA9ICJwYWdlQWdlbnRTaG93RlBTQ291bnRlciI7CiBzdGF0aWMgY29uc3QgY2hhciBzaG93
UGFpbnRSZWN0c1tdID0gInNob3dQYWludFJlY3RzIjsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogc3RhdGljIGNvbnN0IGNoYXIgdG91Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWRbXSA9ICJ0b3Vj
aEV2ZW50RW11bGF0aW9uRW5hYmxlZCI7CkBAIC0zNjYsNiArMzY3LDggQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVh
bihQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50RW5hYmxlZCwgdHJ1ZSk7CiAgICAgYm9vbCBzY3Jp
cHRFeGVjdXRpb25EaXNhYmxlZCA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKTsKICAgICBzZXRTY3JpcHRFeGVjdXRp
b25EaXNhYmxlZCgwLCBzY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk7CisgICAgYm9vbCBzaG93RlBT
Q291bnRlciA9IG1fc3RhdGUtPmdldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNo
b3dGUFNDb3VudGVyKTsKKyAgICBzZXRTaG93RlBTQ291bnRlcigwLCBzaG93RlBTQ291bnRlcik7
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQYWdlQWdlbnQodGhpcyk7
CiB9CiAKQEAgLTM3NSw2ICszNzgsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJs
ZShFcnJvclN0cmluZyopCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JQ
YWdlQWdlbnQoMCk7CiAKICAgICBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCgwLCBmYWxzZSk7
CisgICAgc2V0U2hvd0ZQU0NvdW50ZXIoMCwgZmFsc2UpOwogCiAgICAgLy8gV2hlbiBkaXNhYmxp
bmcgdGhlIGFnZW50LCByZXNldCB0aGUgb3ZlcnJpZGUgdmFsdWVzLgogICAgIG1fc3RhdGUtPnNl
dExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUsIDApOwpA
QCAtNzExLDYgKzcxNSwxOCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd1BhaW50
UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpCiAgICAgICAgIG1fcGFnZS0+bWFpbkZyYW1l
KCktPnZpZXcoKS0+aW52YWxpZGF0ZSgpOwogfQogCit2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6
Y2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKiBvdXRQYXJhbSkKK3sKKyAgICAq
b3V0UGFyYW0gPSBtX2NsaWVudC0+Y2FuU2hvd0ZQU0NvdW50ZXIoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93
KQoreworICAgIG1fc3RhdGUtPnNldEJvb2xlYW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNo
b3dGUFNDb3VudGVyLCBzaG93KTsKKyAgICBtX2NsaWVudC0+c2V0U2hvd0ZQU0NvdW50ZXIoc2hv
dyk7CisgICAgbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5pbnZhbGlkYXRlKCk7Cit9CisK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRTY3JpcHRFeGVjdXRpb25TdGF0dXMoRXJyb3JT
dHJpbmcqLCBQYWdlQ29tbWFuZEhhbmRsZXI6OlJlc3VsdDo6RW51bSogc3RhdHVzKQogewogICAg
IGJvb2wgZGlzYWJsZWRCeVNjcmlwdENvbnRyb2xsZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAppbmRleCAyNzY4YmIxN2ZiZTI4NmNm
NjU1NDljNzY5MDMxYjVlYmRmZTI5MmFmLi4zOTdlODViMmEyOGQwNmY5NDM5MzkwMTA1NDI5Y2Fj
OWM1ZGE4YjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5oCkBAIC0xMDksNiArMTA5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjYW5P
dmVycmlkZURldmljZU1ldHJpY3MoRXJyb3JTdHJpbmcqLCBib29sKik7CiAgICAgdmlydHVhbCB2
b2lkIHNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyosIGludCB3aWR0aCwgaW50
IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZhY3RvciwgYm9vbCBmaXRXaW5kb3cpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdyk7Cisg
ICAgdmlydHVhbCB2b2lkIGNhblNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCopOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hv
dyk7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmlu
ZyosIFBhZ2VDb21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKik7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEdlb2xvY2F0aW9uT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBjb25zdCBkb3Vi
bGUqLCBjb25zdCBkb3VibGUqLCBjb25zdCBkb3VibGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDFhZTIxMDgzYjE0MWY2NTMwOWRh
MDQ0MDVhOWIwZTJhMTQxMGIwNmQuLjZkNThhOTY1NDgzMjhkYmU3ZWUyODYxYzczNWI0ZTgwZjk5
ZjVkYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtNTgsNiArNTgsNyBAQCB2YXIgQ2FwYWJpbGl0aWVzID0gewogICAgIHRpbWVsaW5l
Q2FuTW9uaXRvck1haW5UaHJlYWQ6IGZhbHNlLAogICAgIGNhbk92ZXJyaWRlR2VvbG9jYXRpb246
IGZhbHNlLAogICAgIGNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb246IGZhbHNlLAorICAgIGNh
blNob3dGUFNDb3VudGVyOiBmYWxzZQogfQogCiAvKioKQEAgLTk2LDYgKzk3LDcgQEAgV2ViSW5z
cGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuc2hvd1NjcmlwdEZvbGRlcnMg
PSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dTY3JpcHRGb2xkZXJzIiwgdHJ1ZSk7CiAgICAgdGhp
cy5lbXVsYXRlVG91Y2hFdmVudHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImVtdWxhdGVUb3VjaEV2
ZW50cyIsIGZhbHNlKTsKICAgICB0aGlzLnNob3dQYWludFJlY3RzID0gdGhpcy5jcmVhdGVTZXR0
aW5nKCJzaG93UGFpbnRSZWN0cyIsIGZhbHNlKTsKKyAgICB0aGlzLnNob3dGUFNDb3VudGVyID0g
dGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93RlBTQ291bnRlciIsIGZhbHNlKTsKICAgICB0aGlzLnNo
b3dTaGFkb3dET00gPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dTaGFkb3dET00iLCBmYWxzZSk7
CiAgICAgdGhpcy56b29tTGV2ZWwgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInpvb21MZXZlbCIsIDAp
OwogICAgIHRoaXMuc2F2ZWRVUkxzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzYXZlZFVSTHMiLCB7
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzU2NyZWVuLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
c1NjcmVlbi5qcwppbmRleCAwMGE4MzU1NzRmMzRjZDZmZTA3Yzk4MjRjM2Y1Yzg0OGU5YzdiMDZj
Li44NDI4OGNiMTBjNWJiOGQ1MzUwYzMzN2JjMWMyOTc0MWNiNzA2ZjUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKQEAg
LTI3Myw2ICsyNzMsMTEgQEAgV2ViSW5zcGVjdG9yLkdlbmVyaWNTZXR0aW5nc1RhYiA9IGZ1bmN0
aW9uKCkKICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgcGFpbnQgcmVjdGFuZ2xlcyIpLCBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3Muc2hvd1BhaW50UmVjdHMpKTsKICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hv
d1BhaW50UmVjdHMuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1BhaW50UmVjdHNDaGFuZ2Vk
LCB0aGlzKTsKIAorICAgIGlmIChDYXBhYmlsaXRpZXMuY2FuU2hvd0ZQU0NvdW50ZXIpIHsKKyAg
ICAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaG93IEZQUyBtZXRlciIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hv
d0ZQU0NvdW50ZXIpKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3Vu
dGVyLmFkZENoYW5nZUxpc3RlbmVyKHRoaXMuX3Nob3dGUFNDb3VudGVyQ2hhbmdlZCwgdGhpcyk7
CisgICAgfQorCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTb3VyY2VzIikpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hT
ZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBmb2xkZXJzIiksIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVycykpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VhcmNoIGluIGNv
bnRlbnQgc2NyaXB0cyIpLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2VhcmNoSW5Db250ZW50U2Ny
aXB0cykpOwpAQCAtMzA5LDYgKzMxNCwxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdz
VGFiLnByb3RvdHlwZSA9IHsKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5nZXQoKSk7CiAgICAgfSwKIAorICAg
IF9zaG93RlBTQ291bnRlckNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFBhZ2VB
Z2VudC5zZXRTaG93RlBTQ291bnRlcihXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50
ZXIuZ2V0KCkpOworICAgIH0sCisKICAgICBfdXBkYXRlU2NyaXB0RGlzYWJsZWRDaGVja2JveDog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZXhlY3V0aW9uU3RhdHVzQ2FsbGJh
Y2soZXJyb3IsIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggNTg3Y2I2MjMzNGNmNGM1MThkMWNkNWZmMzdkMDc3MjNkYzI4
NmE2MC4uNmZiZjdiZDhkMTkzZTdjODg3MDc0NjRmMzdlNjQ1MWEwZTYxMWRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTM3MSw2
ICszNzEsNyBAQCBXZWJJbnNwZWN0b3IuZG9Mb2FkZWREb25lID0gZnVuY3Rpb24oKQogICAgIFBy
b2ZpbGVyQWdlbnQuaGFzSGVhcFByb2ZpbGVyKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNhcGFi
aWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJoZWFwUHJvZmlsZXJQcmVzZW50IiwgbnVsbCkpOwog
ICAgIFRpbWVsaW5lQWdlbnQuc3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbihXZWJJbnNwZWN0
b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAidGltZWxpbmVTdXBw
b3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uIiwgbnVsbCkpOwogICAgIFRpbWVsaW5lQWdlbnQuY2Fu
TW9uaXRvck1haW5UaHJlYWQoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5k
KFdlYkluc3BlY3RvciwgInRpbWVsaW5lQ2FuTW9uaXRvck1haW5UaHJlYWQiLCBudWxsKSk7Cisg
ICAgUGFnZUFnZW50LmNhblNob3dGUFNDb3VudGVyKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6ZUNh
cGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJjYW5TaG93RlBTQ291bnRlciIsIG51bGwpKTsK
ICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VNZXRyaWNzKFdlYkluc3BlY3Rvci5faW5p
dGlhbGl6ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJjYW5PdmVycmlkZURldmljZU1l
dHJpY3MiLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlR2VvbG9jYXRpb24oV2Vi
SW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92
ZXJyaWRlR2VvbG9jYXRpb24iLCBudWxsKSk7CiAgICAgUGFnZUFnZW50LmNhbk92ZXJyaWRlRGV2
aWNlT3JpZW50YXRpb24oV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdl
Ykluc3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlT3JpZW50YXRpb24iLCBXZWJJbnNwZWN0b3Iu
X2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMuYmluZChXZWJJbnNwZWN0b3IpKSk7CkBAIC00
ODMsNiArNDg0LDkgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVz
ID0gZnVuY3Rpb24oKQogICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuamF2YVNjcmlwdERp
c2FibGVkLmdldCgpKQogICAgICAgICBQYWdlQWdlbnQuc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJs
ZWQodHJ1ZSk7CiAKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dGUFNDb3VudGVy
LmdldCgpKQorICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CisKICAg
ICB0aGlzLmRvbUFnZW50Ll9lbXVsYXRlVG91Y2hFdmVudHNDaGFuZ2VkKCk7CiAKICAgICBXZWJJ
bnNwZWN0b3IuV29ya2VyTWFuYWdlci5sb2FkQ29tcGxldGVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggNDlhYWE1MTM4MTE5ODg0MTU3NzkxMzBjOWVmMDI2
Yjc4NjNkOGEzOS4uMmVjMWIxYmFkYTBhZWQ5ZjUwNTNjYzdiOGMyMDY3OTIyOGJlMWQ1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtNDcxLDYgKzQ3MSw4IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdGlvbkVkaXRhYmxlKCkgY29uc3Qg
PSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpID0gMDsKKwog
ICAgIC8vIEJlbmNobWFya2luZyBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogICAgIHZpcnR1YWwgV2ViVmlld0JlbmNobWFya1N1cHBv
cnQqIGJlbmNobWFya1N1cHBvcnQoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IGM2ZTdiMjI3NzE3
M2NiMDMxNTgyOWU1MDcxMjFjN2VhZDE3YzEzOWEuLjIyMGI3ZGI3NDMwNjUyNDcyMmU4YTNjYTVm
ZmEzNmRlNzhlNDI3MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0xNjMsNiArMTYzLDE2IEBAIHZvaWQgSW5zcGVjdG9y
Q2xpZW50SW1wbDo6YXV0b1pvb21QYWdlVG9GaXRXaWR0aCgpCiAgICAgICAgIGFnZW50LT5hdXRv
Wm9vbVBhZ2VUb0ZpdFdpZHRoKCk7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6Y2Fu
U2hvd0ZQU0NvdW50ZXIoKQoreworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEluc3BlY3Rv
ckNsaWVudEltcGw6OnNldFNob3dGUFNDb3VudGVyKGJvb2wgc2hvdykKK3sKKyAgICBtX2luc3Bl
Y3RlZFdlYlZpZXctPnNldFNob3dGUFNDb3VudGVyKHNob3cpOworfQorCiBib29sIEluc3BlY3Rv
ckNsaWVudEltcGw6OnN1cHBvcnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKQogewogICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9y
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50
SW1wbC5oCmluZGV4IDc1ZTFlNDM0MmIzNmYwMDAyYzNlNzk3NjFiZDQ2MTc3NzZmNDFkMjkuLmE3
NTkyNTdhZjg1Y2U4MDE4MTQ4MmNjMzM0NjIzZTE0YjZjMThiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTc3LDYgKzc3LDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBvdmVycmlkZURldmljZU1ldHJpY3MoaW50LCBp
bnQsIGZsb2F0LCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgYXV0b1pvb21QYWdlVG9GaXRXaWR0
aCgpOwogCisgICAgdmlydHVhbCBib29sIGNhblNob3dGUFNDb3VudGVyKCk7CisgICAgdmlydHVh
bCB2b2lkIHNldFNob3dGUFNDb3VudGVyKGJvb2wpOworCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzRnJhbWVJbnN0cnVtZW50YXRpb24oKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRBbGxvY2F0
ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggZjZmOWZjNmZhN2MxMjQ4MGFkNDA2Y2U1YTg5OTVl
YTYzZDRjM2M5MC4uNzI3NjIxZjIyYzc4MTZjODgzNzlhZGVmYTZjMDkxNjZiOTY3OGI1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDI1LDYgKzQy
NSw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAg
ICAgLCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHkoZmFsc2UpCiAgICAgLCBtX2RldmljZVNjYWxl
SW5Db21wb3NpdG9yKDEpCiAgICAgLCBtX2lucHV0SGFuZGxlcklkZW50aWZpZXIoLTEpCisgICAg
LCBtX2lzRm9udEF0bGFzTG9hZGVkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1NQ
RUVDSCkKICAgICAsIG1fc3BlZWNoSW5wdXRDbGllbnQoU3BlZWNoSW5wdXRDbGllbnRJbXBsOjpj
cmVhdGUoY2xpZW50KSkKQEAgLTgzMSw2ICs4MzIsMTcgQEAgV2ViVmlld0JlbmNobWFya1N1cHBv
cnQqIFdlYlZpZXdJbXBsOjpiZW5jaG1hcmtTdXBwb3J0KCkKICAgICByZXR1cm4gJm1fYmVuY2ht
YXJrU3VwcG9ydDsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0NvdW50ZXIoYm9v
bCBzaG93KQoreworICAgIGlmIChpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSkgewor
ICAgICAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJWaWV3SW1wbDo6c2V0U2hvd0ZQU0Nv
dW50ZXIiKTsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgICAgIGxvYWRG
b250QXRsYXNJZk5lY2Vzc2FyeSgpOworI2VuZGlmCisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy0+
c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7CisgICAgfQorfQorCiBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVLZXlFdmVudChjb25zdCBXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKICAgICBBU1NF
UlQoKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6UmF3S2V5RG93bikKQEAgLTM5OTUsMTcg
KzQwMDcsMTUgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICAgICAgbV9jbGllbnQtPmRpZEFjdGl2YXRlQ29t
cG9zaXRvcihtX2lucHV0SGFuZGxlcklkZW50aWZpZXIpOwogICAgICAgICAgICAgbV9pc0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSB0cnVlOwogICAgICAgICAgICAgbV9jb21wb3NpdG9y
Q3JlYXRpb25GYWlsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNGb250QXRsYXNMb2FkZWQg
PSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtX3BhZ2VPdmVybGF5cykKICAgICAgICAgICAgICAg
ICBtX3BhZ2VPdmVybGF5cy0+dXBkYXRlKCk7CiAKLSAgICAgICAgICAgIC8vIE9ubHkgYWxsb2Nh
dGUgdGhlIGZvbnQgYXRsYXMgaWYgd2UgaGF2ZSByZWFzb24gdG8gdXNlIHRoZSBoZWFkcy11cCBk
aXNwbGF5LgotICAgICAgICAgICAgaWYgKGxheWVyVHJlZVZpZXdTZXR0aW5ncy5zaG93RlBTQ291
bnRlciB8fCBsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKSB7Ci0g
ICAgICAgICAgICAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJXZWJWaWV3SW1wbDo6c2V0SXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKHRydWUpIGluaXRpYWxpemUgZm9udCBhdGxhcyIpOwot
ICAgICAgICAgICAgICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsxMjhdOwotICAgICAgICAg
ICAgICAgIGludCBmb250SGVpZ2h0OwotICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9
IFdlYkNvcmU6OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lp
VG9SZWN0VGFibGUsIGZvbnRIZWlnaHQpOwotICAgICAgICAgICAgICAgIG1fbGF5ZXJUcmVlVmll
dy0+c2V0Rm9udEF0bGFzKGFzY2lpVG9SZWN0VGFibGUsIGJpdG1hcCwgZm9udEhlaWdodCk7Ci0g
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dQ
bGF0Zm9ybUxheWVyVHJlZSkKKyAgICAgICAgICAgICAgICBsb2FkRm9udEF0bGFzSWZOZWNlc3Nh
cnkoKTsKKworICAgICAgICAgICAgaWYgKHNldHRpbmdzSW1wbCgpLT5zaG93RlBTQ291bnRlcigp
KQorICAgICAgICAgICAgICAgIHNldFNob3dGUFNDb3VudGVyKHRydWUpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QuY2xlYXIoKTsKICAg
ICAgICAgICAgIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlID0gZmFsc2U7CkBAIC00
MDE3LDYgKzQwMjcsMjEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBwYWdlKCktPm1haW5GcmFtZSgpLT52
aWV3KCktPnNldENsaXBzUmVwYWludHMoIW1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZl
KTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6bG9hZEZvbnRBdGxhc0lmTmVjZXNzYXJ5KCkKK3sK
KyAgICBBU1NFUlQobV9sYXllclRyZWVWaWV3KTsKKworICAgIGlmIChtX2lzRm9udEF0bGFzTG9h
ZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBUUkFDRV9FVkVOVDAoIndlYmtpdCIsICJXZWJW
aWV3SW1wbDo6bG9hZEZvbnRBdGxhcyIpOworICAgIFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJsZVsx
MjhdOworICAgIGludCBmb250SGVpZ2h0OworICAgIFNrQml0bWFwIGJpdG1hcCA9IFdlYkNvcmU6
OkNvbXBvc2l0b3JIVURGb250QXRsYXM6OmdlbmVyYXRlRm9udEF0bGFzKGFzY2lpVG9SZWN0VGFi
bGUsIGZvbnRIZWlnaHQpOworICAgIG1fbGF5ZXJUcmVlVmlldy0+c2V0Rm9udEF0bGFzKGFzY2lp
VG9SZWN0VGFibGUsIGJpdG1hcCwgZm9udEhlaWdodCk7CisgICAgbV9pc0ZvbnRBdGxhc0xvYWRl
ZCA9IHRydWU7Cit9CisKICNlbmRpZgogCiBuYW1lc3BhY2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMDJhMWU1MzcwNDBiNjgwMDc2OGZjMWJlOTFjM2Zh
YjZmMDZmZWM1Mi4uOWYwNTYxODBiMzg5MDY0Yzg1MGQ0N2U1NDE5Zjk3ZjI5NmY4ZWM0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0zMDksNiArMzA5LDcg
QEAgcHVibGljOgogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQWN0aXZlV2hlZWxG
bGluZ0FuaW1hdGlvbihjb25zdCBXZWJBY3RpdmVXaGVlbEZsaW5nUGFyYW1ldGVycyYpOwogICAg
IHZpcnR1YWwgV2ViVmlld0JlbmNobWFya1N1cHBvcnQqIGJlbmNobWFya1N1cHBvcnQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCk7CiAKICAgICAvLyBXZWJMYXll
clRyZWVWaWV3Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCk7CkBAIC02
NTAsNiArNjUxLDcgQEAgcHJpdmF0ZToKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICB2b2lkIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sKTsKKyAg
ICB2b2lkIGxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSgpOwogICAgIHZvaWQgZG9Db21wb3NpdGUo
KTsKICAgICB2b2lkIGRvUGl4ZWxSZWFkYmFja1RvQ2FudmFzKFdlYkNhbnZhcyosIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIHJlYWxsb2NhdGVSZW5kZXJlcigpOwpAQCAtODQ2
LDYgKzg0OCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2NvbXBvc2l0b3JTdXJmYWNlUmVhZHk7
CiAgICAgZmxvYXQgbV9kZXZpY2VTY2FsZUluQ29tcG9zaXRvcjsKICAgICBpbnQgbV9pbnB1dEhh
bmRsZXJJZGVudGlmaWVyOworICAgIGJvb2wgbV9pc0ZvbnRBdGxhc0xvYWRlZDsKICNlbmRpZgog
ICAgIHN0YXRpYyBjb25zdCBXZWJJbnB1dEV2ZW50KiBtX2N1cnJlbnRJbnB1dEV2ZW50OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174041</attachid>
            <date>2012-11-13 17:59:00 -0800</date>
            <delta_ts>2012-11-13 21:53:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99660-20121113175700.patch</filename>
            <type>text/plain</type>
            <size>21645</size>
            <attacher>egraether</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0Mzc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCAwZGU4NjJiNTNmM2Uw
NDk5Mzk3ZGM1ZGIxMjFiZjAwZDE0MjRiODQwLi43ZTFkNDdlNTE2MDI1M2M2ZWIxOTBiZjA4Y2E2
NDg1MDdiZTNlZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0xMS0xMyAg
RWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29vZ2xlLmNvbT4KKworICAgICAgICBjaGVj
a2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTY2MAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgY2hl
Y2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdzIHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVy
LiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3BlY3RvckNsaWVudDo6Y2FuU2hvd0ZQU0Nv
dW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXJUcmVlVmlldy5oOgorICAgICAgICAoV2ViTGF5ZXJUcmVlVmlldyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFNob3dGUFNDb3VudGVyKToKKwogMjAxMi0xMS0xMiAg
QWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIERlbGV0ZSBXZWJDb21wb3NpdG9yLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMDMxNzU5NWRhODZkMDI4
MTFhYTNmNjdjYzQ4YzU5ZjNiOTllZDFiLi40MThhMjJmNWY2ZWJjMTExMDAxNjMzMmM3MDgxMTQw
MzRhYzA2YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTItMTEtMTMgIEViZXJo
YXJkIEdyYWV0aGVyICA8ZWdyYWV0aGVyQGdvb2dsZS5jb20+CisKKyAgICAgICAgY2hlY2tib3gg
dG8gdG9nZ2xlIEZQUyBjb3VudGVyIGluIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk2NjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIGNoZWNrYm94
IHRvIHRoZSBpbnNwZWN0b3IncyBzZXR0aW5ncyB0byB0b2dnbGUgYSBGUFMgY291bnRlci4gVGhl
IGNoZWNrYm94IGFwcGVhcnMgd2hlbiBJbnNwZWN0b3JDbGllbnQ6OmNhblNob3dGUFNDb3VudGVy
KCkgcmV0dXJucyB0cnVlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIEVu
Z2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50OjpjYW5TaG93RlBTQ291bnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OnNldFNob3dGUFNDb3VudGVyKToKKyAgICAg
ICAgKEluc3BlY3RvckNsaWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VB
Z2VudC5jcHA6CisgICAgICAgIChQYWdlQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpjYW5TaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2hvd0ZQU0NvdW50ZXIpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NT
Y3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBlLmdldCBfc2hv
d0ZQU0NvdW50ZXJDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3Bl
Y3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5kb0xvYWRlZERvbmUpOgorCiAyMDEyLTEx
LTEyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAg
IFtRdF0gUkVHUkVTU0lPTigxMzQxNDIpOiBvdmVyc2NhbGVkIHRpbGVzIGluIHBpeGVsIHRlc3Qg
cmVzdWx0cyBhbmQgTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDMz
ODlmOTk1YWRiNzhhYjcxMGI0ZTE3ZTUzMWEwZWQxYWMwYzkxNy4uNTRjOTQwNmNhNTEwZjFmN2Fj
MzA3NWExMjU1N2U2MjllNmYwZDlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxMi0xMS0xMyAgRWJlcmhhcmQgR3JhZXRoZXIgIDxlZ3JhZXRoZXJAZ29v
Z2xlLmNvbT4KKworICAgICAgICBjaGVja2JveCB0byB0b2dnbGUgRlBTIGNvdW50ZXIgaW4gdGhl
IGluc3BlY3RvcidzIHNldHRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZGVkIGEgY2hlY2tib3ggdG8gdGhlIGluc3BlY3RvcidzIHNldHRpbmdz
IHRvIHRvZ2dsZSBhIEZQUyBjb3VudGVyLiBUaGUgY2hlY2tib3ggYXBwZWFycyB3aGVuIEluc3Bl
Y3RvckNsaWVudDo6Y2FuU2hvd0ZQU0NvdW50ZXIoKSByZXR1cm5zIHRydWUuCisKKyAgICAgICAg
KiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICogc3JjL0lu
c3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJ
bXBsOjpjYW5TaG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpzZXRTaG93RlBTQ291bnRlcik6CisgICAgICAgICog
c3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudEltcGwp
OgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZp
ZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRT
aG93RlBTQ291bnRlcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0ltcGw6OmxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSk6CisgICAgICAgICog
c3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6CisKIDIwMTItMTEtMTIg
IE1pbiBRaW4gIDxxaW5taW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCB3aW5kb3dSZWN0
IGNhbGN1bGF0aW9uIGZvciB3ZWJwbHVnaW4gZHVlIHRvIHBhZ2Ugc2NhbGUgZmFjdG9ycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3
LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApp
bmRleCAzNDUwNDVhZDRjOGYyZjM1NTZmOWRlMDIyZDFlY2MwMWEwMDkzYzM2Li5jZDkxMWVkOTYx
MDJhMWFlYjNiZjIzN2NhMWM4MjA2MDk3NTlmZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaApAQCAtMTY5LDYgKzE2OSw5IEBA
IHB1YmxpYzoKICAgICAvLyBUaGlzIGNhbGwgaXMgcmVsYXRpdmVseSBleHBlbnNpdmUgaW4gdGhy
ZWFkZWQgbW9kZSBhcyBpdCBibG9ja3Mgb24gdGhlIGNvbXBvc2l0b3IgdGhyZWFkLgogICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJpbmdTdGF0cyhXZWJSZW5kZXJpbmdTdGF0cyYpIGNvbnN0ID0gMDsK
IAorICAgIC8vIFRvZ2dsZXMgdGhlIEZQUyBjb3VudGVyIGluIHRoZSBIVUQgbGF5ZXIKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgeyB9CisKICAgICAvLyBQcm92aWRl
cyBhIGZvbnQgYXRsYXMgdG8gdXNlIGZvciBkZWJ1ZyB2aXN1YWxpemF0aW9ucy4gVGhlIGF0bGFz
IG11c3QgYmUgYSBiaXRtYXAgY29udGFpbmluZyBnbHlwaCBkYXRhLCBhIHRhYmxlIG9mCiAgICAg
Ly8gQVNDSUkgY2hhcmFjdGVyIHZhbHVlcyB0byBhIHN1YnJlY3RhbmdsZSBvZiB0aGUgYXRsYXMg
cmVwcmVzZW50aW5nIHRoZSBjb3JyZXNwb25kaW5nIGdseXBoLCBhbmQgdGhlIGdseXBoIGhlaWdo
dC4KICAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9udEF0bGFzKFdlYlJlY3QgYXNjaWlUb1JlY3RUYWJs
ZVsxMjhdLCBjb25zdCBTa0JpdG1hcCYsIGludCBmb250SGVpZ2h0KSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBmNmZkNGEw
ZDEzY2Y0NGRjNzBjZGQ2NzlmNWM3YjE5YTk2ZDY2ODJmLi43MzMyNDU4YWFhMWQzNWExZWI0YjIx
NGY3MGI5ZWM3YTVjOGZlNDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC02NDcsNiArNjQ3LDcgQEAgbG9jYWxpemVkU3RyaW5n
c1siSGlkZSBuYXZpZ2F0b3IiXSA9ICJIaWRlIG5hdmlnYXRvciI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJJbmRleGVkREIiXSA9ICJJbmRleGVkREIiOwogbG9jYWxpemVkU3RyaW5nc1siQW5pbWF0aW9u
Il0gPSAiQW5pbWF0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgcGFpbnQgcmVjdGFuZ2xl
cyJdID0gIlNob3cgcGFpbnQgcmVjdGFuZ2xlcyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IEZQ
UyBtZXRlciJdID0gIlNob3cgRlBTIG1ldGVyIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNlY3VyaXR5
IG9yaWdpbiJdID0gIlNlY3VyaXR5IG9yaWdpbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJWZXJzaW9u
Il0gPSAiVmVyc2lvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJQcmltYXJ5IGtleSJdID0gIlByaW1h
cnkga2V5IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBiYjYz
N2Y3YmZjNmZlZTQ4OWVmNjgyYzEwMWM1OTE3YjVlYWY2ZTU2Li40YTY0ODM2YjBmNjRkZmE1ZmRi
Y2ExOWM0OTk1NWY4Mjg4MzZkN2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uCkBAIC0zNDUsNiArMzQ1LDIyIEBACiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRy
dWUKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUi
OiAiY2FuU2hvd0ZQU0NvdW50ZXIiLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJU
ZWxscyBpZiBiYWNrZW5kIHN1cHBvcnRzIGEgRlBTIGNvdW50ZXIgZGlzcGxheSIsCisgICAgICAg
ICAgICAgICAgInJldHVybnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2hv
dyIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiVHJ1ZSBpZiB0aGUgRlBTIGNv
dW50IGNhbiBiZSBzaG93biIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
ImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgIm5hbWUiOiAic2V0U2hvd0ZQU0NvdW50ZXIiLAorICAgICAgICAgICAgICAgICJkZXNj
cmlwdGlvbiI6ICJSZXF1ZXN0cyB0aGF0IGJhY2tlbmQgc2hvd3MgdGhlIEZQUyBjb3VudGVyIiwK
KyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJzaG93IiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJUcnVlIGZv
ciBzaG93aW5nIHRoZSBGUFMgY291bnRlciIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzIiwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGV0ZXJtaW5lcyBpZiBzY3JpcHRzIGNhbiBiZSBl
eGVjdXRlZCBpbiB0aGUgcGFnZS4iLAogICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCmluZGV4IGE0MmMyYWFiYzE2
NmM1OWIyYzRmNjEzZDVkMzAzNWJkZTQxMDgwM2IuLjI0YmRlNTExYjE4M2ExOWI2MmIyNmE4MTMx
YzhiOWMyMDJjMTgyYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmgKQEAgLTcyLDYgKzcyLDkgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogUGxhdGZv
cm1zIG1heSB3YW50IHRvIGltcGxlbWVudCB0aGlzIChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyODg2KS4KICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
U2hvd0ZQU0NvdW50ZXIoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRT
aG93RlBTQ291bnRlcihib29sKSB7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZyYW1l
SW5zdHJ1bWVudGF0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBn
ZXRBbGxvY2F0ZWRPYmplY3RzKEhhc2hTZXQ8Y29uc3Qgdm9pZCo+JikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IDFkZGFhN2Y1
NmFlZWRlYzI5MDU5ZDliZjQ3YmQ5NjNiZDliYWM5ZmUuLmNiYjY0M2JiNTQ4ZWNiYzVmZWY4ZDVm
ODQzZjkzZjJlNWY2ZDZlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC05Miw2ICs5Miw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIHBh
Z2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGVbXSA9ICJwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJy
aWRlCiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZVtdID0g
InBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlIjsKIHN0YXRpYyBjb25zdCBjaGFyIHBhZ2VB
Z2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9udFNjYWxlRmFjdG9y
T3ZlcnJpZGUiOwogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50Rml0V2luZG93W10gPSAicGFn
ZUFnZW50Rml0V2luZG93IjsKK3N0YXRpYyBjb25zdCBjaGFyIHBhZ2VBZ2VudFNob3dGUFNDb3Vu
dGVyW10gPSAicGFnZUFnZW50U2hvd0ZQU0NvdW50ZXIiOwogc3RhdGljIGNvbnN0IGNoYXIgc2hv
d1BhaW50UmVjdHNbXSA9ICJzaG93UGFpbnRSZWN0cyI7CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKIHN0YXRpYyBjb25zdCBjaGFyIHRvdWNoRXZlbnRFbXVsYXRpb25FbmFibGVkW10gPSAidG91
Y2hFdmVudEVtdWxhdGlvbkVuYWJsZWQiOwpAQCAtMzY2LDYgKzM2Nyw4IEBAIHZvaWQgSW5zcGVj
dG9yUGFnZUFnZW50OjplbmFibGUoRXJyb3JTdHJpbmcqKQogICAgIG1fc3RhdGUtPnNldEJvb2xl
YW4oUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudEVuYWJsZWQsIHRydWUpOwogICAgIGJvb2wgc2Ny
aXB0RXhlY3V0aW9uRGlzYWJsZWQgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCk7CiAgICAgc2V0U2NyaXB0RXhlY3V0
aW9uRGlzYWJsZWQoMCwgc2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQpOworICAgIGJvb2wgc2hvd0ZQ
U0NvdW50ZXIgPSBtX3N0YXRlLT5nZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRT
aG93RlBTQ291bnRlcik7CisgICAgc2V0U2hvd0ZQU0NvdW50ZXIoMCwgc2hvd0ZQU0NvdW50ZXIp
OwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yUGFnZUFnZW50KHRoaXMp
OwogfQogCkBAIC0zNzUsNiArMzc4LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRpc2Fi
bGUoRXJyb3JTdHJpbmcqKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9y
UGFnZUFnZW50KDApOwogCiAgICAgc2V0U2NyaXB0RXhlY3V0aW9uRGlzYWJsZWQoMCwgZmFsc2Up
OworICAgIHNldFNob3dGUFNDb3VudGVyKDAsIGZhbHNlKTsKIAogICAgIC8vIFdoZW4gZGlzYWJs
aW5nIHRoZSBhZ2VudCwgcmVzZXQgdGhlIG92ZXJyaWRlIHZhbHVlcy4KICAgICBtX3N0YXRlLT5z
ZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlLCAwKTsK
QEAgLTcxMSw2ICs3MTUsMjAgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNob3dQYWlu
dFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KQogICAgICAgICBtX3BhZ2UtPm1haW5GcmFt
ZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmNhblNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCogb3V0UGFyYW0pCit7CisgICAg
Km91dFBhcmFtID0gbV9jbGllbnQtPmNhblNob3dGUFNDb3VudGVyKCk7Cit9CisKK3ZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpzZXRTaG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wgc2hv
dykKK3sKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRT
aG93RlBTQ291bnRlciwgc2hvdyk7CisgICAgbV9jbGllbnQtPnNldFNob3dGUFNDb3VudGVyKHNo
b3cpOworCisgICAgaWYgKG1haW5GcmFtZSgpICYmIG1haW5GcmFtZSgpLT52aWV3KCkpCisgICAg
ICAgIG1haW5GcmFtZSgpLT52aWV3KCktPmludmFsaWRhdGUoKTsKK30KKwogdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIFBhZ2VD
b21tYW5kSGFuZGxlcjo6UmVzdWx0OjpFbnVtKiBzdGF0dXMpCiB7CiAgICAgYm9vbCBkaXNhYmxl
ZEJ5U2NyaXB0Q29udHJvbGxlciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDI3NjhiYjE3ZmJlMjg2Y2Y2NTU0OWM3NjkwMzFi
NWViZGZlMjkyYWYuLjM5N2U4NWIyYTI4ZDA2Zjk0MzkzOTAxMDU0MjljYWM5YzVkYThiOWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEw
OSw2ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbk92ZXJyaWRlRGV2aWNl
TWV0cmljcyhFcnJvclN0cmluZyosIGJvb2wqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGV2aWNl
TWV0cmljc092ZXJyaWRlKEVycm9yU3RyaW5nKiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBkb3Vi
bGUgZm9udFNjYWxlRmFjdG9yLCBib29sIGZpdFdpbmRvdyk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFNob3dQYWludFJlY3RzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KTsKKyAgICB2aXJ0dWFsIHZv
aWQgY2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sKik7CisgICAgdmlydHVhbCB2
b2lkIHNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93KTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2NyaXB0RXhlY3V0aW9uU3RhdHVzKEVycm9yU3RyaW5nKiwgUGFnZUNvbW1h
bmRIYW5kbGVyOjpSZXN1bHQ6OkVudW0qKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2NyaXB0RXhl
Y3V0aW9uRGlzYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
R2VvbG9jYXRpb25PdmVycmlkZShFcnJvclN0cmluZyosIGNvbnN0IGRvdWJsZSosIGNvbnN0IGRv
dWJsZSosIGNvbnN0IGRvdWJsZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanMKaW5kZXggODFkYzk1NmM1NDZiMDkxMzNmN2I2MGMzODc5Y2RiMDAy
MzM0Zjk2MS4uY2NhMDExZGQ1YjE2ZjJkZGQyYmI4NjgzZjhhOGZhOGQwOTJjZjViOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC01OCw2
ICs1OCw3IEBAIHZhciBDYXBhYmlsaXRpZXMgPSB7CiAgICAgdGltZWxpbmVDYW5Nb25pdG9yTWFp
blRocmVhZDogZmFsc2UsCiAgICAgY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbjogZmFsc2UsCiAgICAg
Y2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbjogZmFsc2UsCisgICAgY2FuU2hvd0ZQU0NvdW50
ZXI6IGZhbHNlCiB9CiAKIC8qKgpAQCAtOTYsNiArOTcsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGlu
Z3MgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5zaG93U2NyaXB0Rm9sZGVycyA9IHRoaXMuY3JlYXRl
U2V0dGluZygic2hvd1NjcmlwdEZvbGRlcnMiLCB0cnVlKTsKICAgICB0aGlzLmVtdWxhdGVUb3Vj
aEV2ZW50cyA9IHRoaXMuY3JlYXRlU2V0dGluZygiZW11bGF0ZVRvdWNoRXZlbnRzIiwgZmFsc2Up
OwogICAgIHRoaXMuc2hvd1BhaW50UmVjdHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNob3dQYWlu
dFJlY3RzIiwgZmFsc2UpOworICAgIHRoaXMuc2hvd0ZQU0NvdW50ZXIgPSB0aGlzLmNyZWF0ZVNl
dHRpbmcoInNob3dGUFNDb3VudGVyIiwgZmFsc2UpOwogICAgIHRoaXMuc2hvd1NoYWRvd0RPTSA9
IHRoaXMuY3JlYXRlU2V0dGluZygic2hvd1NoYWRvd0RPTSIsIGZhbHNlKTsKICAgICB0aGlzLnpv
b21MZXZlbCA9IHRoaXMuY3JlYXRlU2V0dGluZygiem9vbUxldmVsIiwgMCk7CiAgICAgdGhpcy5z
YXZlZFVSTHMgPSB0aGlzLmNyZWF0ZVNldHRpbmcoInNhdmVkVVJMcyIsIHt9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzCmlu
ZGV4IDFkYWY1Zjk3MmE3ZTlmYWE5YTc2Njk4OGY3NTAyNWY5Mzg4MzU3NDEuLjlmY2M3MmMxNWNj
YTM2NzdlMDIxZDgzNDk3ZGUyMmY5NWY3ZmJhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4uanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwpAQCAtMjczLDYgKzI3Mywx
MSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJpY1NldHRpbmdzVGFiID0gZnVuY3Rpb24oKQogICAgIHAu
YXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2tib3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyBwYWludCByZWN0YW5nbGVzIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93
UGFpbnRSZWN0cykpOwogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93UGFpbnRSZWN0cy5h
ZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLl9zaG93UGFpbnRSZWN0c0NoYW5nZWQsIHRoaXMpOwogCisg
ICAgaWYgKENhcGFiaWxpdGllcy5jYW5TaG93RlBTQ291bnRlcikgeworICAgICAgICBwLmFwcGVu
ZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNob3cgRlBTIG1ldGVyIiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlcikp
OworICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuYWRkQ2hhbmdl
TGlzdGVuZXIodGhpcy5fc2hvd0ZQU0NvdW50ZXJDaGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKICAg
ICBwID0gdGhpcy5fYXBwZW5kU2VjdGlvbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJjZXMi
KSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2JveFNldHRpbmcoV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTaG93IGZvbGRlcnMiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNo
b3dTY3JpcHRGb2xkZXJzKSk7CiAgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVDaGVja2Jv
eFNldHRpbmcoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWFyY2ggaW4gY29udGVudCBzY3JpcHRz
IiksIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zZWFyY2hJbkNvbnRlbnRTY3JpcHRzKSk7CkBAIC0z
MTEsNiArMzE2LDExIEBAIFdlYkluc3BlY3Rvci5HZW5lcmljU2V0dGluZ3NUYWIucHJvdG90eXBl
ID0gewogICAgICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMoV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLnNob3dQYWludFJlY3RzLmdldCgpKTsKICAgICB9LAogCisgICAgX3Nob3dGUFNDb3Vu
dGVyQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgUGFnZUFnZW50LnNldFNob3dG
UFNDb3VudGVyKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93RlBTQ291bnRlci5nZXQoKSk7Cisg
ICAgfSwKKwogICAgIF91cGRhdGVTY3JpcHREaXNhYmxlZENoZWNrYm94OiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBleGVjdXRpb25TdGF0dXNDYWxsYmFjayhlcnJvciwgc3Rh
dHVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cwppbmRleCA1ODdjYjYyMzM0Y2Y0YzUxOGQxY2Q1ZmYzN2QwNzcyM2RjMjg2YTYwLi42ZmJmN2Jk
OGQxOTNlN2M4ODcwNzQ2NGYzN2U2NDUxYTBlNjExZGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMzcxLDYgKzM3MSw3IEBAIFdl
Ykluc3BlY3Rvci5kb0xvYWRlZERvbmUgPSBmdW5jdGlvbigpCiAgICAgUHJvZmlsZXJBZ2VudC5o
YXNIZWFwUHJvZmlsZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5kKFdl
Ykluc3BlY3RvciwgImhlYXBQcm9maWxlclByZXNlbnQiLCBudWxsKSk7CiAgICAgVGltZWxpbmVB
Z2VudC5zdXBwb3J0c0ZyYW1lSW5zdHJ1bWVudGF0aW9uKFdlYkluc3BlY3Rvci5faW5pdGlhbGl6
ZUNhcGFiaWxpdHkuYmluZChXZWJJbnNwZWN0b3IsICJ0aW1lbGluZVN1cHBvcnRzRnJhbWVJbnN0
cnVtZW50YXRpb24iLCBudWxsKSk7CiAgICAgVGltZWxpbmVBZ2VudC5jYW5Nb25pdG9yTWFpblRo
cmVhZChXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9y
LCAidGltZWxpbmVDYW5Nb25pdG9yTWFpblRocmVhZCIsIG51bGwpKTsKKyAgICBQYWdlQWdlbnQu
Y2FuU2hvd0ZQU0NvdW50ZXIoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJpbGl0eS5iaW5k
KFdlYkluc3BlY3RvciwgImNhblNob3dGUFNDb3VudGVyIiwgbnVsbCkpOwogICAgIFBhZ2VBZ2Vu
dC5jYW5PdmVycmlkZURldmljZU1ldHJpY3MoV2ViSW5zcGVjdG9yLl9pbml0aWFsaXplQ2FwYWJp
bGl0eS5iaW5kKFdlYkluc3BlY3RvciwgImNhbk92ZXJyaWRlRGV2aWNlTWV0cmljcyIsIG51bGwp
KTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVHZW9sb2NhdGlvbihXZWJJbnNwZWN0b3IuX2lu
aXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAiY2FuT3ZlcnJpZGVHZW9sb2Nh
dGlvbiIsIG51bGwpKTsKICAgICBQYWdlQWdlbnQuY2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlv
bihXZWJJbnNwZWN0b3IuX2luaXRpYWxpemVDYXBhYmlsaXR5LmJpbmQoV2ViSW5zcGVjdG9yLCAi
Y2FuT3ZlcnJpZGVEZXZpY2VPcmllbnRhdGlvbiIsIFdlYkluc3BlY3Rvci5fZG9Mb2FkZWREb25l
V2l0aENhcGFiaWxpdGllcy5iaW5kKFdlYkluc3BlY3RvcikpKTsKQEAgLTQ4Myw2ICs0ODQsOSBA
QCBXZWJJbnNwZWN0b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigp
CiAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5qYXZhU2NyaXB0RGlzYWJsZWQuZ2V0KCkp
CiAgICAgICAgIFBhZ2VBZ2VudC5zZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZCh0cnVlKTsKIAor
ICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0ZQU0NvdW50ZXIuZ2V0KCkpCisgICAg
ICAgIFBhZ2VBZ2VudC5zZXRTaG93RlBTQ291bnRlcih0cnVlKTsKKwogICAgIHRoaXMuZG9tQWdl
bnQuX2VtdWxhdGVUb3VjaEV2ZW50c0NoYW5nZWQoKTsKIAogICAgIFdlYkluc3BlY3Rvci5Xb3Jr
ZXJNYW5hZ2VyLmxvYWRDb21wbGV0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXcuaAppbmRleCA0OWFhYTUxMzgxMTk4ODQxNTc3OTEzMGM5ZWYwMjZiNzg2M2Q4YTM5Li4y
ZWMxYjFiYWRhMGFlZDlmNTA1M2NjN2I4YzIwNjc5MjI4YmUxZDU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC00NzEsNiArNDcxLDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBib29sIGlzU2VsZWN0aW9uRWRpdGFibGUoKSBjb25zdCA9IDA7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCkgPSAwOworCiAgICAgLy8gQmVuY2ht
YXJraW5nIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiAgICAgdmlydHVhbCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJr
U3VwcG9ydCgpIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggYzZlN2IyMjc3MTczY2IwMzE1ODI5ZTUw
NzEyMWM3ZWFkMTdjMTM5YS4uMjIwYjdkYjc0MzA2NTI0NzIyZThhM2NhNWZmYTM2ZGU3OGU0Mjcw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50
SW1wbC5jcHAKQEAgLTE2Myw2ICsxNjMsMTYgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjph
dXRvWm9vbVBhZ2VUb0ZpdFdpZHRoKCkKICAgICAgICAgYWdlbnQtPmF1dG9ab29tUGFnZVRvRml0
V2lkdGgoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjYW5TaG93RlBTQ291bnRl
cigpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6
c2V0U2hvd0ZQU0NvdW50ZXIoYm9vbCBzaG93KQoreworICAgIG1faW5zcGVjdGVkV2ViVmlldy0+
c2V0U2hvd0ZQU0NvdW50ZXIoc2hvdyk7Cit9CisKIGJvb2wgSW5zcGVjdG9yQ2xpZW50SW1wbDo6
c3VwcG9ydHNGcmFtZUluc3RydW1lbnRhdGlvbigpCiB7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKaW5kZXgg
NzVlMWU0MzQyYjM2ZjAwMDJjM2U3OTc2MWJkNDYxNzc3NmY0MWQyOS4uYTc1OTI1N2FmODVjZTgw
MTgxNDgyY2MzMzQ2MjNlMTRiNmMxOGIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG92ZXJyaWRlRGV2aWNlTWV0cmljcyhpbnQsIGludCwgZmxvYXQsIGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBhdXRvWm9vbVBhZ2VUb0ZpdFdpZHRoKCk7CiAKKyAgICB2
aXJ0dWFsIGJvb2wgY2FuU2hvd0ZQU0NvdW50ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hv
d0ZQU0NvdW50ZXIoYm9vbCk7CisKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGcmFtZUluc3Ry
dW1lbnRhdGlvbigpOwogCiAgICAgdmlydHVhbCB2b2lkIGdldEFsbG9jYXRlZE9iamVjdHMoSGFz
aFNldDxjb25zdCB2b2lkKj4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAppbmRleCBmNmY5ZmM2ZmE3YzEyNDgwYWQ0MDZjZTVhODk5NWVhNjNkNGMzYzkwLi43
Mjc2MjFmMjJjNzgxNmM4ODM3OWFkZWZhNmMwOTE2NmI5Njc4YjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MjUsNiArNDI1LDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1fY29tcG9z
aXRvclN1cmZhY2VSZWFkeShmYWxzZSkKICAgICAsIG1fZGV2aWNlU2NhbGVJbkNvbXBvc2l0b3Io
MSkKICAgICAsIG1faW5wdXRIYW5kbGVySWRlbnRpZmllcigtMSkKKyAgICAsIG1faXNGb250QXRs
YXNMb2FkZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfU1BFRUNIKQogICAgICwg
bV9zcGVlY2hJbnB1dENsaWVudChTcGVlY2hJbnB1dENsaWVudEltcGw6OmNyZWF0ZShjbGllbnQp
KQpAQCAtODMxLDYgKzgzMiwxNyBAQCBXZWJWaWV3QmVuY2htYXJrU3VwcG9ydCogV2ViVmlld0lt
cGw6OmJlbmNobWFya1N1cHBvcnQoKQogICAgIHJldHVybiAmbV9iZW5jaG1hcmtTdXBwb3J0Owog
fQogCit2b2lkIFdlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlcihib29sIHNob3cpCit7Cisg
ICAgaWYgKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpKSB7CisgICAgICAgIFRSQUNF
X0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpzZXRTaG93RlBTQ291bnRlciIpOworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAgICAgbG9hZEZvbnRBdGxhc0lmTmVj
ZXNzYXJ5KCk7CisjZW5kaWYKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRTaG93RlBTQ291
bnRlcihzaG93KTsKKyAgICB9Cit9CisKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUtleUV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewogICAgIEFTU0VSVCgoZXZlbnQudHlw
ZSA9PSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duKQpAQCAtMzk5NSwxNyArNDAwNywxNSBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkQWN0aXZhdGVDb21wb3NpdG9yKG1faW5w
dXRIYW5kbGVySWRlbnRpZmllcik7CiAgICAgICAgICAgICBtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxl
ZCA9IGZhbHNlOworICAgICAgICAgICAgbV9pc0ZvbnRBdGxhc0xvYWRlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgaWYgKG1fcGFnZU92ZXJsYXlzKQogICAgICAgICAgICAgICAgIG1fcGFnZU92ZXJs
YXlzLT51cGRhdGUoKTsKIAotICAgICAgICAgICAgLy8gT25seSBhbGxvY2F0ZSB0aGUgZm9udCBh
dGxhcyBpZiB3ZSBoYXZlIHJlYXNvbiB0byB1c2UgdGhlIGhlYWRzLXVwIGRpc3BsYXkuCi0gICAg
ICAgICAgICBpZiAobGF5ZXJUcmVlVmlld1NldHRpbmdzLnNob3dGUFNDb3VudGVyIHx8IGxheWVy
VHJlZVZpZXdTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUpIHsKLSAgICAgICAgICAgICAg
ICBUUkFDRV9FVkVOVDAoImNjIiwgIldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdBY3RpdmUodHJ1ZSkgaW5pdGlhbGl6ZSBmb250IGF0bGFzIik7Ci0gICAgICAgICAgICAg
ICAgV2ViUmVjdCBhc2NpaVRvUmVjdFRhYmxlWzEyOF07Ci0gICAgICAgICAgICAgICAgaW50IGZv
bnRIZWlnaHQ7Ci0gICAgICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29t
cG9zaXRvckhVREZvbnRBdGxhczo6Z2VuZXJhdGVGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwg
Zm9udEhlaWdodCk7Ci0gICAgICAgICAgICAgICAgbV9sYXllclRyZWVWaWV3LT5zZXRGb250QXRs
YXMoYXNjaWlUb1JlY3RUYWJsZSwgYml0bWFwLCBmb250SGVpZ2h0KTsKLSAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChsYXllclRyZWVWaWV3U2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKQorICAgICAgICAgICAgICAgIGxvYWRGb250QXRsYXNJZk5lY2Vzc2FyeSgpOworCisgICAg
ICAgICAgICBpZiAoc2V0dGluZ3NJbXBsKCktPnNob3dGUFNDb3VudGVyKCkpCisgICAgICAgICAg
ICAgICAgc2V0U2hvd0ZQU0NvdW50ZXIodHJ1ZSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jbGVhcigpOwogICAgICAgICAgICAgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUgPSBmYWxzZTsKQEAgLTQwMTcsNiArNDAyNywy
MSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUo
Ym9vbCBhY3RpdmUpCiAgICAgICAgIHBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c2V0Q2xp
cHNSZXBhaW50cyghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOwogfQogCit2b2lk
IFdlYlZpZXdJbXBsOjpsb2FkRm9udEF0bGFzSWZOZWNlc3NhcnkoKQoreworICAgIEFTU0VSVCht
X2xheWVyVHJlZVZpZXcpOworCisgICAgaWYgKG1faXNGb250QXRsYXNMb2FkZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIFRSQUNFX0VWRU5UMCgid2Via2l0IiwgIldlYlZpZXdJbXBsOjpsb2Fk
Rm9udEF0bGFzIik7CisgICAgV2ViUmVjdCBhc2NpaVRvUmVjdFRhYmxlWzEyOF07CisgICAgaW50
IGZvbnRIZWlnaHQ7CisgICAgU2tCaXRtYXAgYml0bWFwID0gV2ViQ29yZTo6Q29tcG9zaXRvckhV
REZvbnRBdGxhczo6Z2VuZXJhdGVGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwgZm9udEhlaWdo
dCk7CisgICAgbV9sYXllclRyZWVWaWV3LT5zZXRGb250QXRsYXMoYXNjaWlUb1JlY3RUYWJsZSwg
Yml0bWFwLCBmb250SGVpZ2h0KTsKKyAgICBtX2lzRm9udEF0bGFzTG9hZGVkID0gdHJ1ZTsKK30K
KwogI2VuZGlmCiAKIG5hbWVzcGFjZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAppbmRleCAwMmExZTUzNzA0MGI2ODAwNzY4ZmMxYmU5MWMzZmFiNmYwNmZlYzUyLi45
ZjA1NjE4MGIzODkwNjRjODUwZDQ3ZTU0MTlmOTdmMjk2ZjhlYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTMwOSw2ICszMDksNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBY3RpdmVXaGVlbEZsaW5nQW5pbWF0aW9u
KGNvbnN0IFdlYkFjdGl2ZVdoZWVsRmxpbmdQYXJhbWV0ZXJzJik7CiAgICAgdmlydHVhbCBXZWJW
aWV3QmVuY2htYXJrU3VwcG9ydCogYmVuY2htYXJrU3VwcG9ydCgpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG93RlBTQ291bnRlcihib29sKTsKIAogICAgIC8vIFdlYkxheWVyVHJlZVZpZXdDbGll
bnQKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlZ2luRnJhbWUoKTsKQEAgLTY1MCw2ICs2NTEsNyBA
QCBwcml2YXRlOgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZvaWQg
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wpOworICAgIHZvaWQgbG9hZEZv
bnRBdGxhc0lmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBkb0NvbXBvc2l0ZSgpOwogICAgIHZvaWQg
ZG9QaXhlbFJlYWRiYWNrVG9DYW52YXMoV2ViQ2FudmFzKiwgY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYpOwogICAgIHZvaWQgcmVhbGxvY2F0ZVJlbmRlcmVyKCk7CkBAIC04NDYsNiArODQ4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fY29tcG9zaXRvclN1cmZhY2VSZWFkeTsKICAgICBmbG9hdCBt
X2RldmljZVNjYWxlSW5Db21wb3NpdG9yOwogICAgIGludCBtX2lucHV0SGFuZGxlcklkZW50aWZp
ZXI7CisgICAgYm9vbCBtX2lzRm9udEF0bGFzTG9hZGVkOwogI2VuZGlmCiAgICAgc3RhdGljIGNv
bnN0IFdlYklucHV0RXZlbnQqIG1fY3VycmVudElucHV0RXZlbnQ7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>