<?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>107937</bug_id>
          
          <creation_ts>2013-01-25 04:44:53 -0800</creation_ts>
          <short_desc>Web Inspector: CPU pegged when inspecting LocalStorage that mutates.</short_desc>
          <delta_ts>2013-02-07 12:04:23 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Vivek Galatage">vivekg</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vivekg</cc>
    
    <cc>vivek.vg</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>816488</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-25 04:44:53 -0800</bug_when>
    <thetext>Downstream issue: http://code.google.com/p/chromium/issues/detail?id=172075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819784</commentid>
    <comment_count>1</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-01-29 21:54:34 -0800</bug_when>
    <thetext>The issue is with the current implementation of View update. The InspectorDOMStorageAgent fires domStorageUpdated() event for which the view triggers DOMStorage.getEntries. 

The domStorageUpdated event is fired for every set/remove/clear actions on the localStorage/sessionStorage. So in the test scenario mentioned above, the view update is also triggered for 1000 times. But the operation is expensive one as there are around 1000 entries in the localStorage. So for every call, the marshalling/unmarshalling is carried out, returned as an array back to inspector and then inspector creates a data grid of items. By the time the view is updated for one call, another is queued up to repeat the whole thing. This is very heavy operation as the objects also go through the GC recycle. Hence the inspector stalls or pegs the CPU.

I have modified the domStorageUpdated() event with some more additional parameters as:

/*
 * @param {string} storageId
 * @param {string} storageAction: Could be one of &quot;ItemSet&quot;, &quot;ItemRemoved&quot;, &quot;ItemsCleared&quot;
 * @param {string} key
 * @param {string} oldValue
 * @param {string} newValue
 */

domStorageUpdated(storageId, storageAction, key, oldValue, newValue)

So now its much more easier to update the view with just the change that occurred within the storage thereby reducing the getEntries calls altogether. When &quot;ItemsCleared&quot; is received, the entire grid is removed.

Here are the WIP patches
1. WebKit patch
http://pastebin.com/uaxUnxty

2. Chromium port patch
http://pastebin.com/PpwRZGwN

Please let me know if we can proceed with the above approach to fix the said issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819790</commentid>
    <comment_count>2</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-01-29 22:03:34 -0800</bug_when>
    <thetext>(In reply to comment #1)


&gt; Here are the WIP patches
&gt; 1. WebKit patch
&gt; http://pastebin.com/uaxUnxty
&gt; 
&gt; 2. Chromium port patch
&gt; http://pastebin.com/PpwRZGwN
&gt; 

The above patches just outline the work done in the backend. Currently I am just logging the domStorageEvent and its associated data in the console on domStorageUpdated(). This will eventually be replaced with proper handling of the action.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820110</commentid>
    <comment_count>3</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-01-30 05:09:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; 
&gt; 
&gt; &gt; Here are the WIP patches
&gt; &gt; 1. WebKit patch
&gt; &gt; http://pastebin.com/uaxUnxty
&gt; &gt; 
&gt; &gt; 2. Chromium port patch
&gt; &gt; http://pastebin.com/PpwRZGwN
&gt; &gt; 
&gt; 
&gt; The above patches just outline the work done in the backend. Currently I am just logging the domStorageEvent and its associated data in the console on domStorageUpdated(). This will eventually be replaced with proper handling of the action.

I didn&apos;t look deeply into your patches but sounds like it might be easier to simply add a timeout for localStorage view update (do not update it more than once per second, probably only when this view is shown and focused)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820138</commentid>
    <comment_count>4</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-01-30 06:06:51 -0800</bug_when>
    <thetext>(In reply to comment #3)

&gt; I didn&apos;t look deeply into your patches but sounds like it might be easier to simply add a timeout for localStorage view update (do not update it more than once per second, probably only when this view is shown and focused)

Thank you for your feedback. I agree that setting the timeout is much easier than that one presented in the patch. 

The reason for the above patch is the information about the DOM storage change has almost reached the frontend. (Currently the InspectorDOMStorageAgent::didDispatchDOMStorageEvent() method does receive all the changed key, newValue and oldValue). The only missing thing is exposing this back to the front-end. This way only the delta change will be notified and we need not fetch the whole local/session storage entries again and again. Thereby reducing the round trips. And this will be done, as you have pointed out below, only when the view is in focus. Your thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821512</commentid>
    <comment_count>5</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-01-31 07:27:34 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822614</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-01 04:28:11 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; ping?

(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; 
&gt; &gt; I didn&apos;t look deeply into your patches but sounds like it might be easier to simply add a timeout for localStorage view update (do not update it more than once per second, probably only when this view is shown and focused)
&gt; 
&gt; Thank you for your feedback. I agree that setting the timeout is much easier than that one presented in the patch. 
&gt; 
&gt; The reason for the above patch is the information about the DOM storage change has almost reached the frontend. (Currently the InspectorDOMStorageAgent::didDispatchDOMStorageEvent() method does receive all the changed key, newValue and oldValue). The only missing thing is exposing this back to the front-end. This way only the delta change will be notified and we need not fetch the whole local/session storage entries again and again. Thereby reducing the round trips. And this will be done, as you have pointed out below, only when the view is in focus. Your thoughts?

I don&apos;t understand why do you need storageAction parameter. It seems to me that the action performed is already defined by key/newValue pair. 
Key is null =&gt; Clear
Key is not null, Value is null =&gt; Remove
Key and Value are not Nulls =&gt; Set</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822620</commentid>
    <comment_count>7</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-01 04:32:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t understand why do you need storageAction parameter. It seems to me that the action performed is already defined by key/newValue pair. 
&gt; Key is null =&gt; Clear
&gt; Key is not null, Value is null =&gt; Remove
&gt; Key and Value are not Nulls =&gt; Set

Yeah perfect. This sounds good to me! And I apologize for doing a bit of over-engineering :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822636</commentid>
    <comment_count>8</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-01 04:52:54 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I don&apos;t understand why do you need storageAction parameter. It seems to me that the action performed is already defined by key/newValue pair. 
&gt; Key is null =&gt; Clear
&gt; Key is not null, Value is null =&gt; Remove
&gt; Key and Value are not Nulls =&gt; Set

I performed a quick test as:

1. localStorage.setItem(&quot;hello&quot;,&quot;world&quot;);
creates a new entry in the local storage.

2. localStorage.setItem(&quot;hello&quot;,&quot;&quot;);
3. localStorage.removeItem(&quot;hello&quot;);

Now for 2 and 3, we get the return values as
key: &quot;hello&quot;
newValue: &quot;&quot;
oldValue: &quot;world&quot;

So in this case we wont be able to distinguish which operation was performed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822683</commentid>
    <comment_count>9</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-01 05:52:11 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; I don&apos;t understand why do you need storageAction parameter. It seems to me that the action performed is already defined by key/newValue pair. 
&gt; &gt; Key is null =&gt; Clear
&gt; &gt; Key is not null, Value is null =&gt; Remove
&gt; &gt; Key and Value are not Nulls =&gt; Set
&gt; 
&gt; I performed a quick test as:
&gt; 
&gt; 1. localStorage.setItem(&quot;hello&quot;,&quot;world&quot;);
&gt; creates a new entry in the local storage.
&gt; 
&gt; 2. localStorage.setItem(&quot;hello&quot;,&quot;&quot;);
&gt; 3. localStorage.removeItem(&quot;hello&quot;);
&gt; 
&gt; Now for 2 and 3, we get the return values as
&gt; key: &quot;hello&quot;
&gt; newValue: &quot;&quot;
&gt; oldValue: &quot;world&quot;
&gt; 
&gt; So in this case we wont be able to distinguish which operation was performed.

We do not distinguish empty and null strings in the inspector protocol. You can still distinguish this cases on the back-end though. I&apos;m fine with adding separate inspector protocol method for each case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825191</commentid>
    <comment_count>10</comment_count>
      <attachid>186560</attachid>
    <who name="Vivek Galatage">vivek.vg</who>
    <bug_when>2013-02-04 23:59:02 -0800</bug_when>
    <thetext>Created attachment 186560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825240</commentid>
    <comment_count>11</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-05 00:54:09 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=186560) [details]
&gt; Patch

The functionality test is available at LayoutTests/inspector/storage-panel-dom-storage-update.html 

I think we need to add the protocol test. But this is not a public protocol api/event yet. So shall we add that test to LayoutTests/inspector-protocol ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825277</commentid>
    <comment_count>12</comment_count>
      <attachid>186560</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-05 01:54:58 -0800</bug_when>
    <thetext>Comment on attachment 186560
Patch

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

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:71
&gt; +        var rootNode = this._dataGrid.rootNode();

You should not be doing this all when the view is not visible.

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:80
&gt; +                if (childNode.data.key === key &amp;&amp; childNode.data.value === oldValue) {

Why do you need to compare the old values? If key is getting removed, it does not matter what value it had.

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:88
&gt; +            rootNode.appendChild(childNode);

This is still going to be slow if localstorage is being populated within a loop. I wonder if it makes sense to send keys only and request values lazily. Could be a part of a separate change though.

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:94
&gt; +                if (childNode.data.key === key &amp;&amp; childNode.data.value === oldValue) {

ditto

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:104
&gt;      update: function()

This mo longer needs to be public.

&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:120
&gt; +    WebInspector.domStorageModel.addEventListener(WebInspector.DOMStorageModel.Events.DOMStorageChanged, this._domStorageChanged, this);

While you are here, it might make sense to move the listener registration from the panel into the views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825287</commentid>
    <comment_count>13</comment_count>
      <attachid>186560</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-05 02:06:35 -0800</bug_when>
    <thetext>Comment on attachment 186560
Patch

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

Thank you for your review.

&gt;&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:71
&gt;&gt; +        var rootNode = this._dataGrid.rootNode();
&gt; 
&gt; You should not be doing this all when the view is not visible.

This check is done prior to calling onChange in ResourcesPanel::_domStorageChanged(). Hence I did avoid calling it again here.

&gt;&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:80
&gt;&gt; +                if (childNode.data.key === key &amp;&amp; childNode.data.value === oldValue) {
&gt; 
&gt; Why do you need to compare the old values? If key is getting removed, it does not matter what value it had.

Agree. Will remove it.

&gt;&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:88
&gt;&gt; +            rootNode.appendChild(childNode);
&gt; 
&gt; This is still going to be slow if localstorage is being populated within a loop. I wonder if it makes sense to send keys only and request values lazily. Could be a part of a separate change though.

hmm I am not quite sure why would it be slow in a loop. Can you please let me know what is that I am missing? As the event, &quot;DOMStorageChanged&quot;, is fired every time there&apos;s a change in the DOM storage, the value associated with the key is also sent alongwith.

&gt;&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:104
&gt;&gt;      update: function()
&gt; 
&gt; This mo longer needs to be public.

Agree. Will change it.

&gt;&gt; Source/WebCore/inspector/front-end/ResourcesPanel.js:120
&gt;&gt; +    WebInspector.domStorageModel.addEventListener(WebInspector.DOMStorageModel.Events.DOMStorageChanged, this._domStorageChanged, this);
&gt; 
&gt; While you are here, it might make sense to move the listener registration from the panel into the views.

In that case the view needs to know about the model. I think the current registration mechanism shields the view from having the knowledge of the model. Also the panel has control over the views(i.e. which view is currently visible and which of them are not).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825316</commentid>
    <comment_count>14</comment_count>
      <attachid>186585</attachid>
    <who name="Vivek Galatage">vivek.vg</who>
    <bug_when>2013-02-05 02:45:15 -0800</bug_when>
    <thetext>Created attachment 186585
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825325</commentid>
    <comment_count>15</comment_count>
      <attachid>186588</attachid>
    <who name="Vivek Galatage">vivek.vg</who>
    <bug_when>2013-02-05 02:50:07 -0800</bug_when>
    <thetext>Created attachment 186588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825329</commentid>
    <comment_count>16</comment_count>
      <attachid>186588</attachid>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-05 02:54:09 -0800</bug_when>
    <thetext>Comment on attachment 186588
Patch

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

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:77
&gt; +            this.deleteButton.visible = false;

The delete button&apos;s visibility should be handled as well.

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:187
&gt;      },

The above lines were causing the view update being called twice by explicitly calling update() and the other being triggered by the DOM Storage Agent. This is unnecessary hence removing it.

&gt; Source/WebCore/inspector/front-end/DOMStorageItemsView.js:-149
&gt; -        this.update();

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825416</commentid>
    <comment_count>17</comment_count>
      <attachid>186588</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-05 05:50:34 -0800</bug_when>
    <thetext>Comment on attachment 186588
Patch

Attachment 186588 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16368679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825443</commentid>
    <comment_count>18</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-05 06:37:28 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 186588 [details])
&gt; Attachment 186588 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/16368679

This change is not related to the build failure observed on win ews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826148</commentid>
    <comment_count>19</comment_count>
    <who name="Vivek Galatage">vivekg</who>
    <bug_when>2013-02-06 00:09:38 -0800</bug_when>
    <thetext>ping r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827194</commentid>
    <comment_count>20</comment_count>
      <attachid>186588</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-02-07 02:01:18 -0800</bug_when>
    <thetext>Comment on attachment 186588
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:1500
&gt; +                    { &quot;name&quot;: &quot;oldValue&quot;, &quot;type&quot;: &quot;string&quot; },

oldValue and newValue should be optional as they makes sense not for all actions. Even key param should be optional as there is no key for itemsCleared. Vsevolod&apos;s suggestion to split the event into 4 would eliminate the problem.

&gt; Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:238
&gt; +    if (key.isEmpty() &amp;&amp; key.isNull())

isNull implies isEmpty

&gt; Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:240
&gt; +    else if (newValue.isEmpty() &amp;&amp; newValue.isNull())

ditto

&gt; Source/WebCore/inspector/InspectorDOMStorageAgent.cpp:242
&gt; +    else if (oldValue.isEmpty() &amp;&amp; oldValue.isNull())

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827262</commentid>
    <comment_count>21</comment_count>
      <attachid>187045</attachid>
    <who name="Vivek Galatage">vivek.vg</who>
    <bug_when>2013-02-07 03:37:27 -0800</bug_when>
    <thetext>Created attachment 187045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827545</commentid>
    <comment_count>22</comment_count>
      <attachid>187045</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 08:27:13 -0800</bug_when>
    <thetext>Comment on attachment 187045
Patch

Rejecting attachment 187045 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;--bot-id=gce-cq-04&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 187045, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
commit-queue/Source/WebKit/chromium/third_party/v8-i18n --revision 164 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
54&gt;At revision 164.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/16435214</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827627</commentid>
    <comment_count>23</comment_count>
      <attachid>187129</attachid>
    <who name="Vivek Galatage">vivek.vg</who>
    <bug_when>2013-02-07 09:47:03 -0800</bug_when>
    <thetext>Created attachment 187129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827776</commentid>
    <comment_count>24</comment_count>
      <attachid>187129</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 12:04:16 -0800</bug_when>
    <thetext>Comment on attachment 187129
Patch

Clearing flags on attachment: 187129

Committed r142161: &lt;http://trac.webkit.org/changeset/142161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827777</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 12:04:23 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186560</attachid>
            <date>2013-02-04 23:59:02 -0800</date>
            <delta_ts>2013-02-05 02:45:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107937-20130205132642.patch</filename>
            <type>text/plain</type>
            <size>12089</size>
            <attacher name="Vivek Galatage">vivek.vg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmYjJhMGMyYTMyYjZl
MDBlNzIwOGZkZDg0ODJhMDUwMTg1NTVmNC4uODk4M2ZlZjJlNmFjMDlmZGUxYjFlMGZlMGUyZTgx
MWJkZTA4Nzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAyLTA0ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENQVSBwZWdnZWQgd2hlbiBpbnNwZWN0aW5nIExvY2FsU3RvcmFnZSB0aGF0IG11dGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9N
IHN0b3JhZ2UgYWdlbnQgd2lsbCBmaXJlIGFuIGV2ZW50IHRvIHRoZSBmcm9udGVuZCBkZXRhaWxp
bmcgd2hpY2gKKyAgICAgICAgYWN0aW9uIHdhcyBwZXJmb3JtZWQgb24gdGhlIERPTSBzdG9yYWdl
LiBCYXNlZCBvbiB0aGlzIGFjdGlvbiwgdGhlIGZyb250LWVuZAorICAgICAgICB3aWxsIGp1c3Qg
YWRkL3VwZGF0ZS9yZW1vdmUgdGhlIGVudHJ5IGluIHRoZSB2aWV3LiBUaGlzIGVuaGFuY2VzIHRo
ZSBmcm9udC1lbmQKKyAgICAgICAgcGVyZm9ybWFuY2UgYXMgd2VsbCBkdWUgdG8gYXZvaWRhbmNl
IHRvIHRoZSByZXBldGl0aXZlIGNhbGxzIHRvIERPTVN0b3JhZ2UuZ2V0RW50cmllcygpCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIGFzIHRoaXMgaXMgV0lQIHBhdGNoLiBXaWxsIHVwZGF0ZSB0aGUg
dGVzdHMgb25jZSByPworCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUuX2RvbVN0b3JhZ2VD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90
b3R5cGUuZG9tU3RvcmFnZUNoYW5nZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
RE9NU3RvcmFnZUl0ZW1zVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
SXRlbXNWaWV3LnByb3RvdHlwZS5vbkNoYW5nZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQ
YW5lbCk6CisKIDIwMTMtMDItMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtWOF0gU2ltcGxpZnkgQ29kZUdlbmVyYXRvclY4LnBtIGJ5IHVzaW5nIElu
aGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUoIkV2ZW50VGFyZ2V0IikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2ZTI0YWI3NzE0MTA1ZjkzYTVhNWJjODkyNzQ1NTU0
NTk1Nzc0YmI5Li5hYTQzMTg4OGU1NTc5Yjc3ZjY5MzMxMGE0YzM1N2Y4MWRmNTRmNjEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC03OTYsMjIgKzc5NiwyMiBA
QAogICAgICAgICAiY29tbWFuZHMiOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiZW5hYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxl
cyBjb25zb2xlIGRvbWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8g
dGhlIGNsaWVudCBieSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3Rp
ZmljYXRpb24uIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25z
b2xlIGRvbWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8gdGhlIGNs
aWVudCBieSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3RpZmljYXRp
b24uIgogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJkaXNhYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMg
Y29uc29sZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBtZXNzYWdlcyBmcm9tIGJl
aW5nIHJlcG9ydGVkIHRvIHRoZSBjbGllbnQuIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRGlzYWJsZXMgY29uc29sZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBt
ZXNzYWdlcyBmcm9tIGJlaW5nIHJlcG9ydGVkIHRvIHRoZSBjbGllbnQuIgogICAgICAgICAgICAg
fSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhck1lc3NhZ2Vz
IiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGNvbnNvbGUgbWVzc2Fn
ZXMgY29sbGVjdGVkIGluIHRoZSBicm93c2VyLiIgCisgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkNsZWFycyBjb25zb2xlIG1lc3NhZ2VzIGNvbGxlY3RlZCBpbiB0aGUgYnJvd3Nlci4i
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjog
InNldE1vbml0b3JpbmdYSFJFbmFibGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9v
bGVhbiIsICJkZXNjcmlwdGlvbiI6ICJNb25pdG9yaW5nIGVuYWJsZWQgc3RhdGUuIiB9CiAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBt
b25pdG9yaW5nIG9mIFhNTEh0dHBSZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY29uc29s
ZSB3aWxsIHJlY2VpdmUgbWVzc2FnZXMgdXBvbiBlYWNoIFhIUiBpc3N1ZWQuIiwgCisgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgbW9uaXRvcmluZyBvZiBYTUxIdHRwUmVx
dWVzdC4gSWYgPGNvZGU+dHJ1ZTwvY29kZT4sIGNvbnNvbGUgd2lsbCByZWNlaXZlIG1lc3NhZ2Vz
IHVwb24gZWFjaCBYSFIgaXNzdWVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUK
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQAogICAg
ICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImNhY2hlRGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNh
Y2hlIGRpc2FibGVkIHN0YXRlLiIgfQogICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVz
dC4gSWYgPGNvZGU+dHJ1ZTwvY29kZT4sIGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBpZ25vcmluZyBjYWNoZSBmb3IgZWFj
aCByZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY2FjaGUgd2lsbCBub3QgYmUgdXNlZC4i
CiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xNDky
LDkgKzE0OTIsMTMgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogImRvbVN0b3JhZ2VVcGRhdGVkIiwKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlQ2hhbmdlZCIsCiAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RvcmFn
ZUlkIiwgICIkcmVmIjogIlN0b3JhZ2VJZCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogInN0b3JhZ2VJZCIsICAiJHJlZiI6ICJTdG9yYWdlSWQiIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYWN0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIml0ZW1B
ZGRlZCIsICJpdGVtVXBkYXRlZCIsICJpdGVtUmVtb3ZlZCIsICJpdGVtc0NsZWFyZWQiXSB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvbGRWYWx1ZSIsICJ0eXBlIjogInN0cmlu
ZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjog
InN0cmluZyIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmNwcAppbmRleCA5Y2Y4ODc1NTRiZDMxNzliMzYyMzc1YjI2NzBkOWNmZmVkNWNmNDczLi41
MWExMmE3NzBkZjhlNjk5NzhjZTE2ZDIxMzYwOTM1NzNkY2Y3YmE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAt
MjIyLDcgKzIyMiw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRVc2VET01T
dG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpCiAgICAgICAgIHJlc291cmNl
LT5iaW5kKG1fZnJvbnRlbmQpOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiBz
ZWN1cml0eU9yaWdpbiwgUGFnZSopCit2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBl
LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQogewogICAgIGlmICghbV9m
cm9udGVuZCB8fCAhbV9lbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0yMzIsNyArMjMyLDE4
IEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VF
dmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTCiAgICAgaWYgKGlkLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZC0+ZG9tc3RvcmFnZSgpLT5kb21TdG9yYWdlVXBk
YXRlZChpZCk7CisgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlvbjo6RW51
bSBhY3Rpb247CisKKyAgICBpZiAoa2V5LmlzRW1wdHkoKSAmJiBrZXkuaXNOdWxsKCkpCisgICAg
ICAgIGFjdGlvbiA9IEluc3BlY3RvckZyb250ZW5kOjpET01TdG9yYWdlOjpBY3Rpb246Okl0ZW1z
Q2xlYXJlZDsKKyAgICBlbHNlIGlmIChuZXdWYWx1ZS5pc0VtcHR5KCkgJiYgbmV3VmFsdWUuaXNO
dWxsKCkpCisgICAgICAgIGFjdGlvbiA9IEluc3BlY3RvckZyb250ZW5kOjpET01TdG9yYWdlOjpB
Y3Rpb246Okl0ZW1SZW1vdmVkOworICAgIGVsc2UgaWYgKG9sZFZhbHVlLmlzRW1wdHkoKSAmJiBv
bGRWYWx1ZS5pc051bGwoKSkKKyAgICAgICAgYWN0aW9uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRP
TVN0b3JhZ2U6OkFjdGlvbjo6SXRlbUFkZGVkOworICAgIGVsc2UKKyAgICAgICAgYWN0aW9uID0g
SW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlvbjo6SXRlbVVwZGF0ZWQ7CisKKyAg
ICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VDaGFuZ2VkKGlkLCBhY3Rpb24s
IGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmNsZWFyUmVzb3VyY2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRE9NU3RvcmFnZS5qcwppbmRleCA3YWY0NDJiMmQ3MzFjNDA0YjRmNGU1M2QyMzU1
YTkzYjUyMWU2MTFhLi5hODM1YWI0YzQ0M2I4OTRkYTc2NzIyNDU1MDg0YTc5ZmVhYWVhM2UzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2Uu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpz
CkBAIC05Niw3ICs5Niw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwgPSBmdW5jdGlv
bigpCiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzID0gewogICAgIERPTVN0
b3JhZ2VBZGRlZDogIkRPTVN0b3JhZ2VBZGRlZCIsCi0gICAgRE9NU3RvcmFnZVVwZGF0ZWQ6ICJE
T01TdG9yYWdlVXBkYXRlZCIKKyAgICBET01TdG9yYWdlQ2hhbmdlZDogIkRPTVN0b3JhZ2VDaGFu
Z2VkIgogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAg
LTExMSwxMCArMTExLDIyIEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBl
ID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01TdG9yYWdlQWdlbnQuU3RvcmFnZUlk
fSBzdG9yYWdlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uCisgICAgICogQHBhcmFt
IHtzdHJpbmd9IGtleQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWYWx1ZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuZXdWYWx1ZQogICAgICAqLwotICAgIF9kb21TdG9yYWdlVXBkYXRlZDog
ZnVuY3Rpb24oc3RvcmFnZUlkKQorICAgIF9kb21TdG9yYWdlQ2hhbmdlZDogZnVuY3Rpb24oc3Rv
cmFnZUlkLCBhY3Rpb24sIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKQogICAgIHsKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2Rl
bC5FdmVudHMuRE9NU3RvcmFnZVVwZGF0ZWQsIHRoaXMuX3N0b3JhZ2VzW3N0b3JhZ2VJZF0pOwor
ICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX3N0b3JhZ2VzW3N0b3JhZ2VJZF07CisgICAg
ICAgIHZhciBzdG9yYWdlRGF0YSA9IHsKKyAgICAgICAgICAgIHN0b3JhZ2U6IGRvbVN0b3JhZ2Us
CisgICAgICAgICAgICBhY3Rpb246IGFjdGlvbiwKKyAgICAgICAgICAgIGtleToga2V5LAorICAg
ICAgICAgICAgb2xkVmFsdWU6IG9sZFZhbHVlLAorICAgICAgICAgICAgbmV3VmFsdWU6IG5ld1Zh
bHVlCisgICAgICAgIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VDaGFuZ2VkLCBzdG9y
YWdlRGF0YSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTY1LDEwICsxNzcsMTQgQEAgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yYWdlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWN0
aW9uCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBv
bGRWYWx1ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWYWx1ZQogICAgICAqLwotICAgIGRv
bVN0b3JhZ2VVcGRhdGVkOiBmdW5jdGlvbihzdG9yYWdlSWQpCisgICAgZG9tU3RvcmFnZUNoYW5n
ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwgYWN0aW9uLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSkK
ICAgICB7Ci0gICAgICAgIHRoaXMuX21vZGVsLl9kb21TdG9yYWdlVXBkYXRlZChzdG9yYWdlSWQp
OworICAgICAgICB0aGlzLl9tb2RlbC5fZG9tU3RvcmFnZUNoYW5nZWQoc3RvcmFnZUlkLCBhY3Rp
b24sIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5q
cwppbmRleCBhYWMyOTdjZjI5YTNjZWM5OTg2NmVmNDE1NjkyOWJiYmNmZDU0OGI2Li4yZGFkNjNh
MGZhNmQ0YmE2NjMwZDkwYmVmN2JiOGY4MjY5N2RhNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCkBA
IC02MCw2ICs2MCw0NyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSBmYWxzZTsKICAgICB9
LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmFsdWUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKKyAgICAgKi8KKyAgICBvbkNoYW5nZTogZnVuY3Rpb24o
YWN0aW9uLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIHZhciByb290
Tm9kZSA9IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCk7CisgICAgICAgIHN3aXRjaCAoYWN0aW9u
KSB7CisgICAgICAgIGNhc2UgIml0ZW1zQ2xlYXJlZCI6CisgICAgICAgICAgICByb290Tm9kZS5y
ZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgIml0ZW1S
ZW1vdmVkIjoKKyAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHJvb3ROb2RlLmNoaWxkcmVuOwor
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBjaGlsZHJlbltpXTsKKyAgICAgICAgICAg
ICAgICBpZiAoY2hpbGROb2RlLmRhdGEua2V5ID09PSBrZXkgJiYgY2hpbGROb2RlLmRhdGEudmFs
dWUgPT09IG9sZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgIHJvb3ROb2RlLnJlbW92ZUNo
aWxkKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJp
dGVtQWRkZWQiOgorICAgICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlKHtrZXk6IGtleSwgdmFsdWU6IG5ld1ZhbHVlfSwgZmFsc2UpOworICAgICAg
ICAgICAgcm9vdE5vZGUuYXBwZW5kQ2hpbGQoY2hpbGROb2RlKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJpdGVtVXBkYXRlZCI6CisgICAgICAgICAgICB2YXIgY2hpbGRyZW4g
PSByb290Tm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hp
bGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gY2hp
bGRyZW5baV07CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0ga2V5
ICYmIGNoaWxkTm9kZS5kYXRhLnZhbHVlID09PSBvbGRWYWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgICBjaGlsZE5vZGUuZGF0YS52YWx1ZSA9IG5ld1ZhbHVlOworICAgICAgICAgICAgICAgICAg
ICBjaGlsZE5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0sCisKICAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGV0YWNoQ2hpbGRWaWV3cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYWE5NDAyNDQ3YTZmOThkYTJjMzBmYTQ0
MTE0YTI0ZGJmYjUxNDY4OS4uMWU2NzM5NTU1NDhhMmQzMjk4YWM1NjZmZDJiM2U0MjYxM2Q5NDE1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291
cmNlc1BhbmVsLmpzCkBAIC0xMTcsNyArMTE3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAKICAgICBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1v
ZGVsLnN0b3JhZ2VzKCkuZm9yRWFjaCh0aGlzLl9hZGRET01TdG9yYWdlLmJpbmQodGhpcykpOwog
ICAgIFdlYkluc3BlY3Rvci5kb21TdG9yYWdlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cy5ET01TdG9yYWdlQWRkZWQsIHRoaXMuX2RvbVN0
b3JhZ2VBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3Jh
Z2VVcGRhdGVkLCB0aGlzLl9kb21TdG9yYWdlVXBkYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVj
dG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VDaGFuZ2VkLCB0aGlzLl9kb21TdG9yYWdlQ2hhbmdl
ZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7
CkBAIC01NzUsMTIgKzU3NSwxMiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90
eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVu
dAogICAgICAqLwotICAgIF9kb21TdG9yYWdlVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2RvbVN0b3JhZ2VDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBz
dG9yYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0qLyAoZXZlbnQuZGF0
YSk7Ci0gICAgICAgIHZhciB2aWV3ID0gdGhpcy5fZG9tU3RvcmFnZVZpZXdzLmdldChzdG9yYWdl
KTsKKyAgICAgICAgdmFyIHN0b3JhZ2VEYXRhID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZX0qLyAoZXZlbnQuZGF0YSk7CisgICAgICAgIHZhciB2aWV3ID0gdGhpcy5fZG9tU3Rv
cmFnZVZpZXdzLmdldChzdG9yYWdlRGF0YS5zdG9yYWdlKTsKICAgICAgICAgaWYgKHRoaXMudmlz
aWJsZVZpZXcgJiYgdmlldyA9PT0gdGhpcy52aXNpYmxlVmlldykKLSAgICAgICAgICAgIHZpZXcu
dXBkYXRlKCk7CisgICAgICAgICAgICB2aWV3Lm9uQ2hhbmdlKHN0b3JhZ2VEYXRhLmFjdGlvbiwg
c3RvcmFnZURhdGEua2V5LCBzdG9yYWdlRGF0YS5vbGRWYWx1ZSwgc3RvcmFnZURhdGEubmV3VmFs
dWUpOwogICAgIH0sCiAKICAgICBfcG9wdWxhdGVBcHBsaWNhdGlvbkNhY2hlVHJlZTogZnVuY3Rp
b24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186585</attachid>
            <date>2013-02-05 02:45:15 -0800</date>
            <delta_ts>2013-02-05 02:50:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107937-20130205161254.patch</filename>
            <type>text/plain</type>
            <size>15254</size>
            <attacher name="Vivek Galatage">vivek.vg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmYjJhMGMyYTMyYjZl
MDBlNzIwOGZkZDg0ODJhMDUwMTg1NTVmNC4uYjUxYWE1MTI5MTkzM2E1Y2RmOTExYTY0NDMzNTFh
MDhmZmE0NDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTA1ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENQVSBwZWdnZWQgd2hlbiBpbnNwZWN0aW5nIExvY2FsU3RvcmFnZSB0aGF0IG11dGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9N
IHN0b3JhZ2UgYWdlbnQgd2lsbCBmaXJlIGFuIGV2ZW50IHRvIHRoZSBmcm9udGVuZCBkZXRhaWxp
bmcgd2hpY2gKKyAgICAgICAgYWN0aW9uIHdhcyBwZXJmb3JtZWQgb24gdGhlIERPTSBzdG9yYWdl
LiBCYXNlZCBvbiB0aGlzIGFjdGlvbiwgdGhlIGZyb250LWVuZAorICAgICAgICB3aWxsIGp1c3Qg
YWRkL3VwZGF0ZS9yZW1vdmUgdGhlIGVudHJ5IGluIHRoZSB2aWV3LiBUaGlzIGVuaGFuY2VzIHRo
ZSBmcm9udC1lbmQKKyAgICAgICAgcGVyZm9ybWFuY2UgYXMgd2VsbCBkdWUgdG8gYXZvaWRhbmNl
IHRvIHRoZSByZXBldGl0aXZlIGNhbGxzIHRvIERPTVN0b3JhZ2UuZ2V0RW50cmllcygpCisKKyAg
ICAgICAgRXhpc3RpbmcgdGVzdDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwt
ZG9tLXN0b3JhZ2UtdXBkYXRlLmh0bWwgc2hvdWxkIHZlcmlmeSB0aGlzCisgICAgICAgIGNoYW5n
ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9kb21TdG9yYWdlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmRvbVN0
b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJ
dGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5w
cm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVt
c1ZpZXcucHJvdG90eXBlLm9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fdXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9lZGl0aW5n
Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJv
dG90eXBlLl9kZWxldGVDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6
CisKIDIwMTMtMDItMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtWOF0gU2ltcGxpZnkgQ29kZUdlbmVyYXRvclY4LnBtIGJ5IHVzaW5nIEluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoIkV2ZW50VGFyZ2V0IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgppbmRleCA2ZTI0YWI3NzE0MTA1ZjkzYTVhNWJjODkyNzQ1NTU0NTk1Nzc0
YmI5Li5hYTQzMTg4OGU1NTc5Yjc3ZjY5MzMxMGE0YzM1N2Y4MWRmNTRmNjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC03OTYsMjIgKzc5NiwyMiBAQAogICAg
ICAgICAiY29tbWFuZHMiOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUi
OiAiZW5hYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25z
b2xlIGRvbWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8gdGhlIGNs
aWVudCBieSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3RpZmljYXRp
b24uIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25zb2xlIGRv
bWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8gdGhlIGNsaWVudCBi
eSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3RpZmljYXRpb24uIgog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJk
aXNhYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgY29uc29s
ZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBtZXNzYWdlcyBmcm9tIGJlaW5nIHJl
cG9ydGVkIHRvIHRoZSBjbGllbnQuIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RGlzYWJsZXMgY29uc29sZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBtZXNzYWdl
cyBmcm9tIGJlaW5nIHJlcG9ydGVkIHRvIHRoZSBjbGllbnQuIgogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhck1lc3NhZ2VzIiwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGNvbnNvbGUgbWVzc2FnZXMgY29s
bGVjdGVkIGluIHRoZSBicm93c2VyLiIgCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkNsZWFycyBjb25zb2xlIG1lc3NhZ2VzIGNvbGxlY3RlZCBpbiB0aGUgYnJvd3Nlci4iCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldE1v
bml0b3JpbmdYSFJFbmFibGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJkZXNjcmlwdGlvbiI6ICJNb25pdG9yaW5nIGVuYWJsZWQgc3RhdGUuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBtb25pdG9y
aW5nIG9mIFhNTEh0dHBSZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY29uc29sZSB3aWxs
IHJlY2VpdmUgbWVzc2FnZXMgdXBvbiBlYWNoIFhIUiBpc3N1ZWQuIiwgCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgbW9uaXRvcmluZyBvZiBYTUxIdHRwUmVxdWVzdC4g
SWYgPGNvZGU+dHJ1ZTwvY29kZT4sIGNvbnNvbGUgd2lsbCByZWNlaXZlIG1lc3NhZ2VzIHVwb24g
ZWFjaCBYSFIgaXNzdWVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICB7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQAogICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNh
Y2hlRGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlIGRp
c2FibGVkIHN0YXRlLiIgfQogICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlRvZ2dsZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVzdC4gSWYg
PGNvZGU+dHJ1ZTwvY29kZT4sIGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBpZ25vcmluZyBjYWNoZSBmb3IgZWFjaCByZXF1
ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY2FjaGUgd2lsbCBub3QgYmUgdXNlZC4iCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xNDkyLDkgKzE0
OTIsMTMgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJuYW1lIjogImRvbVN0b3JhZ2VVcGRhdGVkIiwKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlQ2hhbmdlZCIsCiAgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RvcmFnZUlkIiwg
ICIkcmVmIjogIlN0b3JhZ2VJZCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
b3JhZ2VJZCIsICAiJHJlZiI6ICJTdG9yYWdlSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYWN0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIml0ZW1BZGRlZCIs
ICJpdGVtVXBkYXRlZCIsICJpdGVtUmVtb3ZlZCIsICJpdGVtc0NsZWFyZWQiXSB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvbGRWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjogInN0cmlu
ZyIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCA5Y2Y4ODc1NTRiZDMxNzliMzYyMzc1YjI2NzBkOWNmZmVkNWNmNDczLi44NmI2NjYy
NmI4MTQ1MTFiNmQyZDczYTVjZDhjODdiZTc3NzA2NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjIs
NyArMjIzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZFVzZURPTVN0b3Jh
Z2UoU3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGkKICAgICAgICAgcmVzb3VyY2UtPmJp
bmQobV9mcm9udGVuZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRE
aXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBQYWdlKikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNw
YXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgUGFnZSopCiB7CiAgICAgaWYgKCFtX2Zyb250
ZW5kIHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMiw3ICsyMzMsMTggQEAg
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VVcGRhdGVk
KGlkKTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RE9NU3RvcmFnZTo6QWN0aW9uOjpFbnVtIGFj
dGlvbjsKKworICAgIGlmIChrZXkuaXNFbXB0eSgpICYmIGtleS5pc051bGwoKSkKKyAgICAgICAg
YWN0aW9uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlvbjo6SXRlbXNDbGVh
cmVkOworICAgIGVsc2UgaWYgKG5ld1ZhbHVlLmlzRW1wdHkoKSAmJiBuZXdWYWx1ZS5pc051bGwo
KSkKKyAgICAgICAgYWN0aW9uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlv
bjo6SXRlbVJlbW92ZWQ7CisgICAgZWxzZSBpZiAob2xkVmFsdWUuaXNFbXB0eSgpICYmIG9sZFZh
bHVlLmlzTnVsbCgpKQorICAgICAgICBhY3Rpb24gPSBJbnNwZWN0b3JGcm9udGVuZDo6RE9NU3Rv
cmFnZTo6QWN0aW9uOjpJdGVtQWRkZWQ7CisgICAgZWxzZQorICAgICAgICBhY3Rpb24gPSBJbnNw
ZWN0b3JGcm9udGVuZDo6RE9NU3RvcmFnZTo6QWN0aW9uOjpJdGVtVXBkYXRlZDsKKworICAgIG1f
ZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3RvcmFnZUNoYW5nZWQoaWQsIGFjdGlvbiwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6Y2xlYXJSZXNvdXJjZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01TdG9yYWdlLmpzCmluZGV4IDdhZjQ0MmIyZDczMWM0MDRiNGY0ZTUzZDIzNTVhOTNi
NTIxZTYxMWEuLjY4MjNkMzAzY2Q1NGM3MzE4Y2UyNjQ3MDVlNjJmYWI0NGE5OWFiNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTYsNyArOTcsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsID0gZnVuY3Rpb24o
KQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cyA9IHsKICAgICBET01TdG9y
YWdlQWRkZWQ6ICJET01TdG9yYWdlQWRkZWQiLAotICAgIERPTVN0b3JhZ2VVcGRhdGVkOiAiRE9N
U3RvcmFnZVVwZGF0ZWQiCisgICAgRE9NU3RvcmFnZUNoYW5nZWQ6ICJET01TdG9yYWdlQ2hhbmdl
ZCIKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CkBAIC0x
MTEsMTAgKzExMiwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZSA9
IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0g
c3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmFsdWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV3VmFsdWUKICAgICAgKi8KLSAgICBfZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1
bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBfZG9tU3RvcmFnZUNoYW5nZWQ6IGZ1bmN0aW9uKHN0b3Jh
Z2VJZCwgYWN0aW9uLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwu
RXZlbnRzLkRPTVN0b3JhZ2VVcGRhdGVkLCB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdKTsKKyAg
ICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdOworICAgICAg
ICB2YXIgc3RvcmFnZURhdGEgPSB7CisgICAgICAgICAgICBzdG9yYWdlOiBkb21TdG9yYWdlLAor
ICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sCisgICAgICAgICAgICBrZXk6IGtleSwKKyAgICAg
ICAgICAgIG9sZFZhbHVlOiBvbGRWYWx1ZSwKKyAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1
ZQorICAgICAgICB9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cy5ET01TdG9yYWdlQ2hhbmdlZCwgc3RvcmFn
ZURhdGEpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE2NSwxMCArMTc4LDE0IEBAIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gc3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlv
bgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xk
VmFsdWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKICAgICAgKi8KLSAgICBkb21T
dG9yYWdlVXBkYXRlZDogZnVuY3Rpb24oc3RvcmFnZUlkKQorICAgIGRvbVN0b3JhZ2VDaGFuZ2Vk
OiBmdW5jdGlvbihzdG9yYWdlSWQsIGFjdGlvbiwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUpCiAg
ICAgewotICAgICAgICB0aGlzLl9tb2RlbC5fZG9tU3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsK
KyAgICAgICAgdGhpcy5fbW9kZWwuX2RvbVN0b3JhZ2VDaGFuZ2VkKHN0b3JhZ2VJZCwgYWN0aW9u
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMK
aW5kZXggYWFjMjk3Y2YyOWEzY2VjOTk4NjZlZjQxNTY5MjliYmJjZmQ1NDhiNi4uNzUwNTQ1ZTI5
ZTM3ODFjZTI4MWFhNzQ4MjZjZTMzNjIxMTU5NTgyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcwpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01Miw3ICs1Myw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnVw
ZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAgICAgd2lsbEhpZGU6
IGZ1bmN0aW9uKCkKQEAgLTYwLDcgKzYxLDU3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRl
bXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9
IGZhbHNlOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWYWx1ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdW
YWx1ZQorICAgICAqLworICAgIG9uQ2hhbmdlOiBmdW5jdGlvbihhY3Rpb24sIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIHJvb3ROb2RlID0gdGhpcy5fZGF0YUdy
aWQucm9vdE5vZGUoKTsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gcm9vdE5vZGUuY2hpbGRyZW47
CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgIml0ZW1zQ2xlYXJlZCI6
CisgICAgICAgICAgICByb290Tm9kZS5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgdGhp
cy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSAiaXRlbVJlbW92ZWQiOgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGls
ZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBjaGls
ZHJlbltpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmRhdGEua2V5ID09PSBrZXkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IChjaGlsZHJl
bi5sZW5ndGggPiAxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNl
ICJpdGVtQWRkZWQiOgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uZGF0YS5rZXkgPT09
IGtleSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgY2hp
bGROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoe2tleToga2V5LCB2YWx1ZTog
bmV3VmFsdWV9LCBmYWxzZSk7CisgICAgICAgICAgICByb290Tm9kZS5pbnNlcnRDaGlsZChjaGls
ZE5vZGUsIGNoaWxkcmVuLmxlbmd0aCAtIDEpOworICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0
b24udmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgIml0
ZW1VcGRhdGVkIjoKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gY2hpbGRyZW5baV07
CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0ga2V5KSB7CisgICAg
ICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5kYXRhLnZhbHVlID0gbmV3VmFsdWU7CisgICAgICAg
ICAgICAgICAgICAgIGNoaWxkTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfSwKKworICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuZGV0YWNoQ2hpbGRWaWV3cygpOwogICAgICAgICB0aGlzLmRvbVN0b3JhZ2Uu
Z2V0RW50cmllcyh0aGlzLl9zaG93RE9NU3RvcmFnZUVudHJpZXMuYmluZCh0aGlzKSk7CkBAIC0x
MjAsNyArMTcxLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0s
CiAKICAgICBfZWRpdGluZ0NhbGxiYWNrOiBmdW5jdGlvbihlZGl0aW5nTm9kZSwgY29sdW1uSWRl
bnRpZmllciwgb2xkVGV4dCwgbmV3VGV4dCkKQEAgLTEzMSwxMSArMTgyLDggQEAgV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGRv
bVN0b3JhZ2UucmVtb3ZlSXRlbShvbGRUZXh0KTsKIAogICAgICAgICAgICAgZG9tU3RvcmFnZS5z
ZXRJdGVtKG5ld1RleHQsIGVkaXRpbmdOb2RlLmRhdGEudmFsdWUpOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbShlZGl0aW5n
Tm9kZS5kYXRhLmtleSwgbmV3VGV4dCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVwZGF0
ZSgpOwogICAgIH0sCiAKICAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCkBAIC0x
NDMsMTAgKzE5MSwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGlmICghbm9kZSB8fCBub2RlLmlzQ3JlYXRpb25Ob2RlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCisgICAgICAgIHZhciBvbGRWYWx1ZSA9IG5vZGUuZGF0YS52YWx1ZTsK
KwogICAgICAgICBpZiAodGhpcy5kb21TdG9yYWdlKQogICAgICAgICAgICAgdGhpcy5kb21TdG9y
YWdlLnJlbW92ZUl0ZW0obm9kZS5kYXRhLmtleSk7Ci0KLSAgICAgICAgdGhpcy51cGRhdGUoKTsK
ICAgICB9LAogCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFu
ZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVs
LmpzCmluZGV4IGFhOTQwMjQ0N2E2Zjk4ZGEyYzMwZmE0NDExNGEyNGRiZmI1MTQ2ODkuLjkxMTAx
MjE2ZjYxZGQ3Mzc4NWJjZGRkNmUzODE0ZGMwMGViZmY3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMSw2ICsx
LDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTAgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jh
cm8KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMTcsNyArMTE4
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsID0gZnVuY3Rpb24oZGF0YWJhc2UpCiAK
ICAgICBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1vZGVsLnN0b3JhZ2VzKCkuZm9yRWFjaCh0aGlz
Ll9hZGRET01TdG9yYWdlLmJpbmQodGhpcykpOwogICAgIFdlYkluc3BlY3Rvci5kb21TdG9yYWdl
TW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50
cy5ET01TdG9yYWdlQWRkZWQsIHRoaXMuX2RvbVN0b3JhZ2VBZGRlZCwgdGhpcyk7Ci0gICAgV2Vi
SW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VVcGRhdGVkLCB0aGlzLl9kb21TdG9yYWdl
VXBkYXRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VD
aGFuZ2VkLCB0aGlzLl9kb21TdG9yYWdlQ2hhbmdlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CkBAIC01NzUsMTIgKzU3NiwxMiBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAogICAgICAqLwotICAgIF9kb21TdG9yYWdl
VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbVN0b3JhZ2VDaGFuZ2VkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBzdG9yYWdlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZX0qLyAoZXZlbnQuZGF0YSk7Ci0gICAgICAgIHZhciB2aWV3ID0gdGhp
cy5fZG9tU3RvcmFnZVZpZXdzLmdldChzdG9yYWdlKTsKKyAgICAgICAgdmFyIHN0b3JhZ2VEYXRh
ID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZX0qLyAoZXZlbnQuZGF0YSk7Cisg
ICAgICAgIHZhciB2aWV3ID0gdGhpcy5fZG9tU3RvcmFnZVZpZXdzLmdldChzdG9yYWdlRGF0YS5z
dG9yYWdlKTsKICAgICAgICAgaWYgKHRoaXMudmlzaWJsZVZpZXcgJiYgdmlldyA9PT0gdGhpcy52
aXNpYmxlVmlldykKLSAgICAgICAgICAgIHZpZXcudXBkYXRlKCk7CisgICAgICAgICAgICB2aWV3
Lm9uQ2hhbmdlKHN0b3JhZ2VEYXRhLmFjdGlvbiwgc3RvcmFnZURhdGEua2V5LCBzdG9yYWdlRGF0
YS5vbGRWYWx1ZSwgc3RvcmFnZURhdGEubmV3VmFsdWUpOwogICAgIH0sCiAKICAgICBfcG9wdWxh
dGVBcHBsaWNhdGlvbkNhY2hlVHJlZTogZnVuY3Rpb24oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186588</attachid>
            <date>2013-02-05 02:50:07 -0800</date>
            <delta_ts>2013-02-07 03:37:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107937-20130205161746.patch</filename>
            <type>text/plain</type>
            <size>15145</size>
            <attacher name="Vivek Galatage">vivek.vg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNmYjJhMGMyYTMyYjZl
MDBlNzIwOGZkZDg0ODJhMDUwMTg1NTVmNC4uYjUxYWE1MTI5MTkzM2E1Y2RmOTExYTY0NDMzNTFh
MDhmZmE0NDM5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTAyLTA1ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENQVSBwZWdnZWQgd2hlbiBpbnNwZWN0aW5nIExvY2FsU3RvcmFnZSB0aGF0IG11dGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9N
IHN0b3JhZ2UgYWdlbnQgd2lsbCBmaXJlIGFuIGV2ZW50IHRvIHRoZSBmcm9udGVuZCBkZXRhaWxp
bmcgd2hpY2gKKyAgICAgICAgYWN0aW9uIHdhcyBwZXJmb3JtZWQgb24gdGhlIERPTSBzdG9yYWdl
LiBCYXNlZCBvbiB0aGlzIGFjdGlvbiwgdGhlIGZyb250LWVuZAorICAgICAgICB3aWxsIGp1c3Qg
YWRkL3VwZGF0ZS9yZW1vdmUgdGhlIGVudHJ5IGluIHRoZSB2aWV3LiBUaGlzIGVuaGFuY2VzIHRo
ZSBmcm9udC1lbmQKKyAgICAgICAgcGVyZm9ybWFuY2UgYXMgd2VsbCBkdWUgdG8gYXZvaWRhbmNl
IHRvIHRoZSByZXBldGl0aXZlIGNhbGxzIHRvIERPTVN0b3JhZ2UuZ2V0RW50cmllcygpCisKKyAg
ICAgICAgRXhpc3RpbmcgdGVzdDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwt
ZG9tLXN0b3JhZ2UtdXBkYXRlLmh0bWwgc2hvdWxkIHZlcmlmeSB0aGlzCisgICAgICAgIGNoYW5n
ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9kb21TdG9yYWdlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmRvbVN0
b3JhZ2VDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJ
dGVtc1ZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5w
cm90b3R5cGUud2FzU2hvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVt
c1ZpZXcucHJvdG90eXBlLm9uQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fdXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9lZGl0aW5n
Q2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJv
dG90eXBlLl9kZWxldGVDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbCk6
CisKIDIwMTMtMDItMDMgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtWOF0gU2ltcGxpZnkgQ29kZUdlbmVyYXRvclY4LnBtIGJ5IHVzaW5nIEluaGVyaXRz
RXh0ZW5kZWRBdHRyaWJ1dGUoIkV2ZW50VGFyZ2V0IikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3IuanNvbgppbmRleCA2ZTI0YWI3NzE0MTA1ZjkzYTVhNWJjODkyNzQ1NTU0NTk1Nzc0
YmI5Li5hYTQzMTg4OGU1NTc5Yjc3ZjY5MzMxMGE0YzM1N2Y4MWRmNTRmNjEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC03OTYsMjIgKzc5NiwyMiBAQAogICAg
ICAgICAiY29tbWFuZHMiOiBbCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUi
OiAiZW5hYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25z
b2xlIGRvbWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8gdGhlIGNs
aWVudCBieSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3RpZmljYXRp
b24uIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5hYmxlcyBjb25zb2xlIGRv
bWFpbiwgc2VuZHMgdGhlIG1lc3NhZ2VzIGNvbGxlY3RlZCBzbyBmYXIgdG8gdGhlIGNsaWVudCBi
eSBtZWFucyBvZiB0aGUgPGNvZGU+bWVzc2FnZUFkZGVkPC9jb2RlPiBub3RpZmljYXRpb24uIgog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJk
aXNhYmxlIiwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZXMgY29uc29s
ZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBtZXNzYWdlcyBmcm9tIGJlaW5nIHJl
cG9ydGVkIHRvIHRoZSBjbGllbnQuIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RGlzYWJsZXMgY29uc29sZSBkb21haW4sIHByZXZlbnRzIGZ1cnRoZXIgY29uc29sZSBtZXNzYWdl
cyBmcm9tIGJlaW5nIHJlcG9ydGVkIHRvIHRoZSBjbGllbnQuIgogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJjbGVhck1lc3NhZ2VzIiwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGNvbnNvbGUgbWVzc2FnZXMgY29s
bGVjdGVkIGluIHRoZSBicm93c2VyLiIgCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkNsZWFycyBjb25zb2xlIG1lc3NhZ2VzIGNvbGxlY3RlZCBpbiB0aGUgYnJvd3Nlci4iCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogInNldE1v
bml0b3JpbmdYSFJFbmFibGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJlbmFibGVkIiwgInR5cGUiOiAiYm9vbGVhbiIs
ICJkZXNjcmlwdGlvbiI6ICJNb25pdG9yaW5nIGVuYWJsZWQgc3RhdGUuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBtb25pdG9y
aW5nIG9mIFhNTEh0dHBSZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY29uc29sZSB3aWxs
IHJlY2VpdmUgbWVzc2FnZXMgdXBvbiBlYWNoIFhIUiBpc3N1ZWQuIiwgCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIlRvZ2dsZXMgbW9uaXRvcmluZyBvZiBYTUxIdHRwUmVxdWVzdC4g
SWYgPGNvZGU+dHJ1ZTwvY29kZT4sIGNvbnNvbGUgd2lsbCByZWNlaXZlIG1lc3NhZ2VzIHVwb24g
ZWFjaCBYSFIgaXNzdWVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICB7CkBAIC0xMDUyLDcgKzEwNTIsNyBAQAogICAgICAgICAg
ICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNh
Y2hlRGlzYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIkNhY2hlIGRp
c2FibGVkIHN0YXRlLiIgfQogICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlRvZ2dsZXMgaWdub3JpbmcgY2FjaGUgZm9yIGVhY2ggcmVxdWVzdC4gSWYg
PGNvZGU+dHJ1ZTwvY29kZT4sIGNhY2hlIHdpbGwgbm90IGJlIHVzZWQuIiAKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBpZ25vcmluZyBjYWNoZSBmb3IgZWFjaCByZXF1
ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY2FjaGUgd2lsbCBub3QgYmUgdXNlZC4iCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0xNDkyLDkgKzE0
OTIsMTMgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJuYW1lIjogImRvbVN0b3JhZ2VVcGRhdGVkIiwKKyAgICAgICAg
ICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlQ2hhbmdlZCIsCiAgICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic3RvcmFnZUlkIiwg
ICIkcmVmIjogIlN0b3JhZ2VJZCIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0
b3JhZ2VJZCIsICAiJHJlZiI6ICJTdG9yYWdlSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYWN0aW9uIiwgInR5cGUiOiAic3RyaW5nIiwgImVudW0iOiBbIml0ZW1BZGRlZCIs
ICJpdGVtVXBkYXRlZCIsICJpdGVtUmVtb3ZlZCIsICJpdGVtc0NsZWFyZWQiXSB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvbGRWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjogInN0cmlu
ZyIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cAppbmRleCA5Y2Y4ODc1NTRiZDMxNzliMzYyMzc1YjI2NzBkOWNmZmVkNWNmNDczLi44NmI2NjYy
NmI4MTQ1MTFiNmQyZDczYTVjZDhjODdiZTc3NzA2NGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMjIs
NyArMjIzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZFVzZURPTVN0b3Jh
Z2UoU3RvcmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGkKICAgICAgICAgcmVzb3VyY2UtPmJp
bmQobV9mcm9udGVuZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWRE
aXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3Vy
aXR5T3JpZ2luLCBQYWdlKikKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNw
YXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRW
YWx1ZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUsIFNl
Y3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgUGFnZSopCiB7CiAgICAgaWYgKCFtX2Zyb250
ZW5kIHx8ICFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMiw3ICsyMzMsMTggQEAg
dm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFMKICAgICBpZiAoaWQuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VVcGRhdGVk
KGlkKTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZDo6RE9NU3RvcmFnZTo6QWN0aW9uOjpFbnVtIGFj
dGlvbjsKKworICAgIGlmIChrZXkuaXNFbXB0eSgpICYmIGtleS5pc051bGwoKSkKKyAgICAgICAg
YWN0aW9uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlvbjo6SXRlbXNDbGVh
cmVkOworICAgIGVsc2UgaWYgKG5ld1ZhbHVlLmlzRW1wdHkoKSAmJiBuZXdWYWx1ZS5pc051bGwo
KSkKKyAgICAgICAgYWN0aW9uID0gSW5zcGVjdG9yRnJvbnRlbmQ6OkRPTVN0b3JhZ2U6OkFjdGlv
bjo6SXRlbVJlbW92ZWQ7CisgICAgZWxzZSBpZiAob2xkVmFsdWUuaXNFbXB0eSgpICYmIG9sZFZh
bHVlLmlzTnVsbCgpKQorICAgICAgICBhY3Rpb24gPSBJbnNwZWN0b3JGcm9udGVuZDo6RE9NU3Rv
cmFnZTo6QWN0aW9uOjpJdGVtQWRkZWQ7CisgICAgZWxzZQorICAgICAgICBhY3Rpb24gPSBJbnNw
ZWN0b3JGcm9udGVuZDo6RE9NU3RvcmFnZTo6QWN0aW9uOjpJdGVtVXBkYXRlZDsKKworICAgIG1f
ZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3RvcmFnZUNoYW5nZWQoaWQsIGFjdGlvbiwga2V5
LCBvbGRWYWx1ZSwgbmV3VmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6Y2xlYXJSZXNvdXJjZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01TdG9yYWdlLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9ET01TdG9yYWdlLmpzCmluZGV4IDdhZjQ0MmIyZDczMWM0MDRiNGY0ZTUzZDIzNTVhOTNi
NTIxZTYxMWEuLjY4MjNkMzAzY2Q1NGM3MzE4Y2UyNjQ3MDVlNjJmYWI0NGE5OWFiNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtOTYsNyArOTcsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsID0gZnVuY3Rpb24o
KQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cyA9IHsKICAgICBET01TdG9y
YWdlQWRkZWQ6ICJET01TdG9yYWdlQWRkZWQiLAotICAgIERPTVN0b3JhZ2VVcGRhdGVkOiAiRE9N
U3RvcmFnZVVwZGF0ZWQiCisgICAgRE9NU3RvcmFnZUNoYW5nZWQ6ICJET01TdG9yYWdlQ2hhbmdl
ZCIKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CkBAIC0x
MTEsMTAgKzExMiwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZSA9
IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NU3RvcmFnZUFnZW50LlN0b3JhZ2VJZH0g
c3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbgorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmFsdWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV3VmFsdWUKICAgICAgKi8KLSAgICBfZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1
bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBfZG9tU3RvcmFnZUNoYW5nZWQ6IGZ1bmN0aW9uKHN0b3Jh
Z2VJZCwgYWN0aW9uLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSkKICAgICB7Ci0gICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwu
RXZlbnRzLkRPTVN0b3JhZ2VVcGRhdGVkLCB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdKTsKKyAg
ICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdOworICAgICAg
ICB2YXIgc3RvcmFnZURhdGEgPSB7CisgICAgICAgICAgICBzdG9yYWdlOiBkb21TdG9yYWdlLAor
ICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sCisgICAgICAgICAgICBrZXk6IGtleSwKKyAgICAg
ICAgICAgIG9sZFZhbHVlOiBvbGRWYWx1ZSwKKyAgICAgICAgICAgIG5ld1ZhbHVlOiBuZXdWYWx1
ZQorICAgICAgICB9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cy5ET01TdG9yYWdlQ2hhbmdlZCwgc3RvcmFn
ZURhdGEpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE2NSwxMCArMTc4LDE0IEBAIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICAvKioKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gc3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGFjdGlv
bgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xk
VmFsdWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKICAgICAgKi8KLSAgICBkb21T
dG9yYWdlVXBkYXRlZDogZnVuY3Rpb24oc3RvcmFnZUlkKQorICAgIGRvbVN0b3JhZ2VDaGFuZ2Vk
OiBmdW5jdGlvbihzdG9yYWdlSWQsIGFjdGlvbiwga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUpCiAg
ICAgewotICAgICAgICB0aGlzLl9tb2RlbC5fZG9tU3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsK
KyAgICAgICAgdGhpcy5fbW9kZWwuX2RvbVN0b3JhZ2VDaGFuZ2VkKHN0b3JhZ2VJZCwgYWN0aW9u
LCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMK
aW5kZXggYWFjMjk3Y2YyOWEzY2VjOTk4NjZlZjQxNTY5MjliYmJjZmQ1NDhiNi4uY2VkOTE1MWFk
MDYwOWU5MWIyOTRlMjQ4YmZjNjZiZTQ1Y2QyMTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcwpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC01Miw3ICs1Myw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnVw
ZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAgICAgd2lsbEhpZGU6
IGZ1bmN0aW9uKCkKQEAgLTYwLDcgKzYxLDU3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRl
bXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9
IGZhbHNlOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleQorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBvbGRWYWx1ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdW
YWx1ZQorICAgICAqLworICAgIG9uQ2hhbmdlOiBmdW5jdGlvbihhY3Rpb24sIGtleSwgb2xkVmFs
dWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIHJvb3ROb2RlID0gdGhpcy5fZGF0YUdy
aWQucm9vdE5vZGUoKTsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gcm9vdE5vZGUuY2hpbGRyZW47
CisgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CisgICAgICAgIGNhc2UgIml0ZW1zQ2xlYXJlZCI6
CisgICAgICAgICAgICByb290Tm9kZS5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICAgICAgdGhp
cy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Y2FzZSAiaXRlbVJlbW92ZWQiOgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGls
ZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSBjaGls
ZHJlbltpXTsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGROb2RlLmRhdGEua2V5ID09PSBrZXkp
IHsKKyAgICAgICAgICAgICAgICAgICAgcm9vdE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTsK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IChjaGlsZHJl
bi5sZW5ndGggPiAxKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBjYXNl
ICJpdGVtQWRkZWQiOgorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uZGF0YS5rZXkgPT09
IGtleSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgY2hp
bGROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoe2tleToga2V5LCB2YWx1ZTog
bmV3VmFsdWV9LCBmYWxzZSk7CisgICAgICAgICAgICByb290Tm9kZS5pbnNlcnRDaGlsZChjaGls
ZE5vZGUsIGNoaWxkcmVuLmxlbmd0aCAtIDEpOworICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0
b24udmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNhc2UgIml0
ZW1VcGRhdGVkIjoKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gY2hpbGRyZW5baV07
CisgICAgICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0ga2V5KSB7CisgICAg
ICAgICAgICAgICAgICAgIGNoaWxkTm9kZS5kYXRhLnZhbHVlID0gbmV3VmFsdWU7CisgICAgICAg
ICAgICAgICAgICAgIGNoaWxkTm9kZS5yZWZyZXNoKCk7CisgICAgICAgICAgICAgICAgICAgIHRo
aXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfSwKKworICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuZGV0YWNoQ2hpbGRWaWV3cygpOwogICAgICAgICB0aGlzLmRvbVN0b3JhZ2Uu
Z2V0RW50cmllcyh0aGlzLl9zaG93RE9NU3RvcmFnZUVudHJpZXMuYmluZCh0aGlzKSk7CkBAIC0x
MjAsNyArMTcxLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0s
CiAKICAgICBfZWRpdGluZ0NhbGxiYWNrOiBmdW5jdGlvbihlZGl0aW5nTm9kZSwgY29sdW1uSWRl
bnRpZmllciwgb2xkVGV4dCwgbmV3VGV4dCkKQEAgLTEzMSwxMSArMTgyLDggQEAgV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGRv
bVN0b3JhZ2UucmVtb3ZlSXRlbShvbGRUZXh0KTsKIAogICAgICAgICAgICAgZG9tU3RvcmFnZS5z
ZXRJdGVtKG5ld1RleHQsIGVkaXRpbmdOb2RlLmRhdGEudmFsdWUpOwotICAgICAgICB9IGVsc2Ug
eworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbShlZGl0aW5n
Tm9kZS5kYXRhLmtleSwgbmV3VGV4dCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVwZGF0
ZSgpOwogICAgIH0sCiAKICAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCkBAIC0x
NDUsOCArMTkzLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGlmICh0aGlzLmRvbVN0b3JhZ2UpCiAgICAgICAgICAgICB0aGlzLmRv
bVN0b3JhZ2UucmVtb3ZlSXRlbShub2RlLmRhdGEua2V5KTsKLQotICAgICAgICB0aGlzLnVwZGF0
ZSgpOwogICAgIH0sCiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMKaW5kZXggYWE5NDAyNDQ3YTZmOThkYTJjMzBmYTQ0MTE0YTI0ZGJmYjUxNDY4OS4u
OTExMDEyMTZmNjFkZDczNzg1YmNkZGQ2ZTM4MTRkYzAwZWJmZjcxNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQ
ZWNvcmFybworICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw3
ICsxMTgsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFz
ZSkKIAogICAgIFdlYkluc3BlY3Rvci5kb21TdG9yYWdlTW9kZWwuc3RvcmFnZXMoKS5mb3JFYWNo
KHRoaXMuX2FkZERPTVN0b3JhZ2UuYmluZCh0aGlzKSk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbVN0
b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwu
RXZlbnRzLkRPTVN0b3JhZ2VBZGRlZCwgdGhpcy5fZG9tU3RvcmFnZUFkZGVkLCB0aGlzKTsKLSAg
ICBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZVVwZGF0ZWQsIHRoaXMuX2RvbVN0
b3JhZ2VVcGRhdGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3Rv
cmFnZUNoYW5nZWQsIHRoaXMuX2RvbVN0b3JhZ2VDaGFuZ2VkLCB0aGlzKTsKIH0KIAogV2ViSW5z
cGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTU3NSwxMiArNTc2LDEyIEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRXZlbnR9IGV2ZW50CiAgICAgICovCi0gICAgX2RvbVN0
b3JhZ2VVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZG9tU3RvcmFnZUNoYW5nZWQ6IGZ1
bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIHN0b3JhZ2UgPSAvKiogQHR5cGUge1dl
Ykluc3BlY3Rvci5ET01TdG9yYWdlfSovIChldmVudC5kYXRhKTsKLSAgICAgICAgdmFyIHZpZXcg
PSB0aGlzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0b3JhZ2UpOworICAgICAgICB2YXIgc3RvcmFn
ZURhdGEgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01TdG9yYWdlfSovIChldmVudC5kYXRh
KTsKKyAgICAgICAgdmFyIHZpZXcgPSB0aGlzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0b3JhZ2VE
YXRhLnN0b3JhZ2UpOwogICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09PSB0
aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdmlldy51cGRhdGUoKTsKKyAgICAgICAgICAg
IHZpZXcub25DaGFuZ2Uoc3RvcmFnZURhdGEuYWN0aW9uLCBzdG9yYWdlRGF0YS5rZXksIHN0b3Jh
Z2VEYXRhLm9sZFZhbHVlLCBzdG9yYWdlRGF0YS5uZXdWYWx1ZSk7CiAgICAgfSwKIAogICAgIF9w
b3B1bGF0ZUFwcGxpY2F0aW9uQ2FjaGVUcmVlOiBmdW5jdGlvbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187045</attachid>
            <date>2013-02-07 03:37:27 -0800</date>
            <delta_ts>2013-02-07 09:46:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107937-20130207170504.patch</filename>
            <type>text/plain</type>
            <size>21088</size>
            <attacher name="Vivek Galatage">vivek.vg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE4NGQwMjhlOWUzNGZi
NzMzZGQyZGI2ZWRkZTRiOGYwNGJhMDVkMy4uZjMzZWViZWVmODJjNDEwYzFkZTcyOGUxMTdmNWY4
ZTY1ODAxNDI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAyLTA3ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENQVSBwZWdnZWQgd2hlbiBpbnNwZWN0aW5nIExvY2FsU3RvcmFnZSB0aGF0IG11dGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgRE9N
IHN0b3JhZ2UgYWdlbnQgd2lsbCBmaXJlIGFuIGV2ZW50IHRvIHRoZSBmcm9udGVuZCBiYXNlZCBv
biB0aGUgYWN0aW9uCisgICAgICAgIHBlcmZvcm1lZCBvbiB0aGUgc3RvcmFnZS4gQmFzZWQgb24g
dGhpcyBhY3Rpb24sIHRoZSBmcm9udC1lbmQgd2lsbCBqdXN0IGFkZC91cGRhdGUvcmVtb3ZlCisg
ICAgICAgIHRoZSBlbnRyeSBpbiB0aGUgdmlldy4gVGhpcyBlbmhhbmNlcyB0aGUgZnJvbnQtZW5k
IHJlc3BvbnNpdmVuZXNzIGFzIHRoZSByb3VuZCB0cmlwCisgICAgICAgIGZvciBmZXRjaGluZyB0
aGUgc3RvcmFnZSBlbnRyaWVzIGhhcyBiZWVuIGVsaW1pbmF0ZWQuCisKKyAgICAgICAgRXhpc3Rp
bmcgdGVzdDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0b3JhZ2UtcGFuZWwtZG9tLXN0b3JhZ2Ut
dXBkYXRlLmh0bWwgc2hvdWxkIHZlcmlmeSB0aGlzCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERp
c3BhdGNoRE9NU3RvcmFnZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TVN0b3JhZ2UuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3Rv
dHlwZS5fZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU1vZGVsLnByb3RvdHlwZS5fZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9kb21TdG9yYWdlSXRlbUFk
ZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9k
b21TdG9yYWdlSXRlbVVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VE
aXNwYXRjaGVyLnByb3RvdHlwZS5kb21TdG9yYWdlSXRlbXNDbGVhcmVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90b3R5cGUuZG9tU3RvcmFnZUl0ZW1S
ZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90
b3R5cGUuZG9tU3RvcmFnZUl0ZW1BZGRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VJdGVtVXBkYXRlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLndhc1Nob3duKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fZG9tU3RvcmFnZUl0ZW1zQ2xl
YXJlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5
cGUuX2RvbVN0b3JhZ2VJdGVtUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX2RvbVN0b3JhZ2VJdGVtQWRkZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9kb21TdG9yYWdlSXRl
bVVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJv
dG90eXBlLl91cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1Zp
ZXcucHJvdG90eXBlLl9zaG93RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX2Vk
aXRpbmdDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmll
dy5wcm90b3R5cGUuX2RlbGV0ZUNhbGxiYWNrKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX3No
b3dET01TdG9yYWdlLmdldCBpZik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLl9zaG93RE9NU3RvcmFnZSk6CisKIDIwMTMtMDItMDUgIEp1bGllbiBDaGFm
ZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0NTUyBHcmlkIExheW91
dF0gR3JpZCBpdGVtJ3MgbG9naWNhbCBoZWlnaHQgaXMgbm90IHByb3Blcmx5IHJlY29tcHV0ZWQg
YWZ0ZXIgLXdlYmtpdC1ncmlkLWNvbHVtbiAvIC13ZWJraXQtZ3JpZC1yb3cgY2hhbmdlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGVjZmNmZTc0YmRhYzE3ZTlh
ZWMyMjgxMmVkNmI5YWVjZTdhNTkxYmQuLmI3YjNlY2FmOTY0ZDg3MGViNTU2NzhkZDJhMGNlNTFh
Y2M3NTJkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTgw
NCwyMiArODA0LDIyIEBACiAgICAgICAgICJjb21tYW5kcyI6IFsKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAotICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJFbmFibGVzIGNvbnNvbGUgZG9tYWluLCBzZW5kcyB0aGUgbWVzc2FnZXMgY29sbGVj
dGVkIHNvIGZhciB0byB0aGUgY2xpZW50IGJ5IG1lYW5zIG9mIHRoZSA8Y29kZT5tZXNzYWdlQWRk
ZWQ8L2NvZGU+IG5vdGlmaWNhdGlvbi4iIAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJFbmFibGVzIGNvbnNvbGUgZG9tYWluLCBzZW5kcyB0aGUgbWVzc2FnZXMgY29sbGVjdGVkIHNv
IGZhciB0byB0aGUgY2xpZW50IGJ5IG1lYW5zIG9mIHRoZSA8Y29kZT5tZXNzYWdlQWRkZWQ8L2Nv
ZGU+IG5vdGlmaWNhdGlvbi4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJEaXNhYmxlcyBjb25zb2xlIGRvbWFpbiwgcHJldmVudHMgZnVydGhlciBjb25zb2xlIG1l
c3NhZ2VzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gdGhlIGNsaWVudC4iIAorICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBjb25zb2xlIGRvbWFpbiwgcHJldmVudHMgZnVy
dGhlciBjb25zb2xlIG1lc3NhZ2VzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gdGhlIGNsaWVudC4i
CiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjog
ImNsZWFyTWVzc2FnZXMiLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDbGVhcnMg
Y29uc29sZSBtZXNzYWdlcyBjb2xsZWN0ZWQgaW4gdGhlIGJyb3dzZXIuIiAKKyAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGNvbnNvbGUgbWVzc2FnZXMgY29sbGVjdGVkIGlu
IHRoZSBicm93c2VyLiIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAic2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQiLAogICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImVuYWJsZWQi
LCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIk1vbml0b3JpbmcgZW5hYmxlZCBz
dGF0ZS4iIH0KICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJUb2dnbGVzIG1vbml0b3Jpbmcgb2YgWE1MSHR0cFJlcXVlc3QuIElmIDxjb2RlPnRydWU8
L2NvZGU+LCBjb25zb2xlIHdpbGwgcmVjZWl2ZSBtZXNzYWdlcyB1cG9uIGVhY2ggWEhSIGlzc3Vl
ZC4iLCAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBtb25pdG9yaW5n
IG9mIFhNTEh0dHBSZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY29uc29sZSB3aWxsIHJl
Y2VpdmUgbWVzc2FnZXMgdXBvbiBlYWNoIFhIUiBpc3N1ZWQuIiwKICAgICAgICAgICAgICAgICAi
aGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHsKQEAgLTEwNjAsNyAr
MTA2MCw3IEBACiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiY2FjaGVEaXNhYmxlZCIsICJ0eXBlIjogImJvb2xlYW4iLCAiZGVz
Y3JpcHRpb24iOiAiQ2FjaGUgZGlzYWJsZWQgc3RhdGUuIiB9CiAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVG9nZ2xlcyBpZ25vcmluZyBjYWNoZSBm
b3IgZWFjaCByZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9jb2RlPiwgY2FjaGUgd2lsbCBub3QgYmUg
dXNlZC4iIAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUb2dnbGVzIGlnbm9yaW5n
IGNhY2hlIGZvciBlYWNoIHJlcXVlc3QuIElmIDxjb2RlPnRydWU8L2NvZGU+LCBjYWNoZSB3aWxs
IG5vdCBiZSB1c2VkLiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50
cyI6IFsKQEAgLTE1MDAsMTAgKzE1MDAsMzQgQEAKICAgICAgICAgICAgICAgICBdCiAgICAgICAg
ICAgICB9LAogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJuYW1lIjogImRvbVN0b3Jh
Z2VVcGRhdGVkIiwKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlSXRlbXNDbGVh
cmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdG9yYWdlSWQiLCAgIiRyZWYiOiAiU3RvcmFnZUlkIiB9CiAgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAibmFtZSI6ICJkb21TdG9yYWdlSXRlbVJlbW92ZWQiLAorICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInN0b3JhZ2VJZCIsICAi
JHJlZiI6ICJTdG9yYWdlSWQiIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAia2V5
IiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlSXRlbUFk
ZGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJzdG9yYWdlSWQiLCAgIiRyZWYiOiAiU3RvcmFnZUlkIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIgfQor
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiZG9tU3RvcmFnZUl0ZW1VcGRhdGVkIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdG9yYWdl
SWQiLCAgIiRyZWYiOiAiU3RvcmFnZUlkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJvbGRWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAg
IF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDljZjg4
NzU1NGJkMzE3OWIzNjIzNzViMjY3MGQ5Y2ZmZWQ1Y2Y0NzMuLjA2YzQyNzBlNzIyYTkyNjU2NGU3
YmJiZjdiMWNmOGJlNzZmNzFmM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyMiw3ICsyMjMsNyBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkVXNlRE9NU3RvcmFnZShTdG9yYWdlQXJl
YSogc3RvcmFnZUFyZWEsIGJvb2wgaQogICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5k
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3Rv
cmFnZUV2ZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0
b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIFBh
Z2UqKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFn
ZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBT
dHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4q
IHNlY3VyaXR5T3JpZ2luLCBQYWdlKikKIHsKICAgICBpZiAoIW1fZnJvbnRlbmQgfHwgIW1fZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMyLDcgKzIzMywxNCBAQCB2b2lkIEluc3BlY3Rv
ckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5n
JiwgY29uc3QgUwogICAgIGlmIChpZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3RvcmFnZVVwZGF0ZWQoaWQpOworICAgIGlm
IChrZXkuaXNOdWxsKCkpCisgICAgICAgIG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3Rv
cmFnZUl0ZW1zQ2xlYXJlZChpZCk7CisgICAgZWxzZSBpZiAobmV3VmFsdWUuaXNOdWxsKCkpCisg
ICAgICAgIG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKGlk
LCBrZXkpOworICAgIGVsc2UgaWYgKG9sZFZhbHVlLmlzTnVsbCgpKQorICAgICAgICBtX2Zyb250
ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VJdGVtQWRkZWQoaWQsIGtleSwgbmV3VmFsdWUp
OworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udGVuZC0+ZG9tc3RvcmFnZSgpLT5kb21TdG9yYWdl
SXRlbVVwZGF0ZWQoaWQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNsZWFyUmVzb3VyY2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcwppbmRleCA3YWY0NDJiMmQ3MzFj
NDA0YjRmNGU1M2QyMzU1YTkzYjUyMWU2MTFhLi5iMTM0NDE5NTk5ZTM1Mjg0OTkyYzJjMGZiMDYx
MTAyYmI4ZGI4ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01TdG9yYWdlLmpzCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDcgKzk3LDEwIEBAIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlTW9kZWwgPSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZl
bnRzID0gewogICAgIERPTVN0b3JhZ2VBZGRlZDogIkRPTVN0b3JhZ2VBZGRlZCIsCi0gICAgRE9N
U3RvcmFnZVVwZGF0ZWQ6ICJET01TdG9yYWdlVXBkYXRlZCIKKyAgICBET01TdG9yYWdlSXRlbXND
bGVhcmVkOiAiRE9NU3RvcmFnZUl0ZW1zQ2xlYXJlZCIsCisgICAgRE9NU3RvcmFnZUl0ZW1SZW1v
dmVkOiAiRE9NU3RvcmFnZUl0ZW1SZW1vdmVkIiwKKyAgICBET01TdG9yYWdlSXRlbUFkZGVkOiAi
RE9NU3RvcmFnZUl0ZW1BZGRlZCIsCisgICAgRE9NU3RvcmFnZUl0ZW1VcGRhdGVkOiAiRE9NU3Rv
cmFnZUl0ZW1VcGRhdGVkIgogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLnByb3Rv
dHlwZSA9IHsKQEAgLTExMiw5ICsxMTYsNjEgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01TdG9yYWdlQWdlbnQu
U3RvcmFnZUlkfSBzdG9yYWdlSWQKICAgICAgKi8KLSAgICBfZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1
bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBfZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24o
c3RvcmFnZUlkKQogICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZVVwZGF0ZWQsIHRo
aXMuX3N0b3JhZ2VzW3N0b3JhZ2VJZF0pOworICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMu
X3N0b3JhZ2VzW3N0b3JhZ2VJZF07CisgICAgICAgIHZhciBzdG9yYWdlRGF0YSA9IHsKKyAgICAg
ICAgICAgIHN0b3JhZ2U6IGRvbVN0b3JhZ2UKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMu
RE9NU3RvcmFnZUl0ZW1zQ2xlYXJlZCwgc3RvcmFnZURhdGEpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0RPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWR9IHN0b3JhZ2VJZAorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1SZW1v
dmVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSkKKyAgICB7CisgICAgICAgIHZhciBkb21TdG9y
YWdlID0gdGhpcy5fc3RvcmFnZXNbc3RvcmFnZUlkXTsKKyAgICAgICAgdmFyIHN0b3JhZ2VEYXRh
ID0geworICAgICAgICAgICAgc3RvcmFnZTogZG9tU3RvcmFnZSwKKyAgICAgICAgICAgIGtleTog
a2V5CisgICAgICAgIH07CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VJdGVtUmVtb3ZlZCwg
c3RvcmFnZURhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTVN0b3Jh
Z2VBZ2VudC5TdG9yYWdlSWR9IHN0b3JhZ2VJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKKyAgICAgKi8KKyAgICBfZG9tU3RvcmFn
ZUl0ZW1BZGRlZDogZnVuY3Rpb24oc3RvcmFnZUlkLCBrZXksIG5ld1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdOworICAgICAg
ICB2YXIgc3RvcmFnZURhdGEgPSB7CisgICAgICAgICAgICBzdG9yYWdlOiBkb21TdG9yYWdlLAor
ICAgICAgICAgICAga2V5OiBrZXksCisgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUKKyAg
ICAgICAgfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZUl0ZW1BZGRlZCwgc3RvcmFnZURh
dGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTVN0b3JhZ2VBZ2VudC5T
dG9yYWdlSWR9IHN0b3JhZ2VJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gb2xkVmFsdWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUK
KyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1VcGRhdGVkOiBmdW5jdGlvbihzdG9yYWdlSWQs
IGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGRvbVN0b3JhZ2Ug
PSB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdOworICAgICAgICB2YXIgc3RvcmFnZURhdGEgPSB7
CisgICAgICAgICAgICBzdG9yYWdlOiBkb21TdG9yYWdlLAorICAgICAgICAgICAga2V5OiBrZXks
CisgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUsCisgICAgICAgICAgICBuZXdWYWx1ZTog
bmV3VmFsdWUKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZUl0ZW1VcGRh
dGVkLCBzdG9yYWdlRGF0YSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTY2LDEwICsyMjIsNDAg
QEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICAv
KioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmFnZUlkCiAgICAgICovCi0gICAgZG9tU3Rv
cmFnZVVwZGF0ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBkb21TdG9yYWdlSXRlbXNDbGVh
cmVkOiBmdW5jdGlvbihzdG9yYWdlSWQpCiAgICAgewotICAgICAgICB0aGlzLl9tb2RlbC5fZG9t
U3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsKLSAgICB9CisgICAgICAgIHRoaXMuX21vZGVsLl9k
b21TdG9yYWdlSXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yYWdlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5
CisgICAgICovCisgICAgZG9tU3RvcmFnZUl0ZW1SZW1vdmVkOiBmdW5jdGlvbihzdG9yYWdlSWQs
IGtleSkKKyAgICB7CisgICAgICAgIHRoaXMuX21vZGVsLl9kb21TdG9yYWdlSXRlbVJlbW92ZWQo
c3RvcmFnZUlkLCBrZXkpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gc3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleQorICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuZXdWYWx1ZQorICAgICAqLworICAgIGRvbVN0b3JhZ2VJdGVtQWRkZWQ6IGZ1bmN0
aW9uKHN0b3JhZ2VJZCwga2V5LCBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIHRoaXMuX21vZGVs
Ll9kb21TdG9yYWdlSXRlbUFkZGVkKHN0b3JhZ2VJZCwga2V5LCBuZXdWYWx1ZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yYWdlSWQKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30ga2V5CisgICAgICogQHBhcmFtIHtzdHJpbmd9IG9sZFZhbHVlCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IG5ld1ZhbHVlCisgICAgICovCisgICAgZG9tU3RvcmFnZUl0ZW1VcGRh
dGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKQorICAgIHsK
KyAgICAgICAgdGhpcy5fbW9kZWwuX2RvbVN0b3JhZ2VJdGVtVXBkYXRlZChzdG9yYWdlSWQsIGtl
eSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB9LAogfQogCiAvKioKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5q
cwppbmRleCBhYWMyOTdjZjI5YTNjZWM5OTg2NmVmNDE1NjkyOWJiYmNmZDU0OGI2Li41MzVkYTEy
YzM1M2NiMWU3MDg2NDhmYWFhNjIzMmFkZjdkM2EyOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCkBA
IC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25p
Y3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI3LDExICsyOCwxMiBAQAogICogQGNvbnN0cnVjdG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5z
cGVjdG9yLlZpZXd9CiAgKi8KLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3ID0gZnVu
Y3Rpb24oZG9tU3RvcmFnZSkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3ID0gZnVu
Y3Rpb24oZG9tU3RvcmFnZSwgZG9tU3RvcmFnZU1vZGVsKQogewogICAgIFdlYkluc3BlY3Rvci5W
aWV3LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmRvbVN0b3JhZ2UgPSBkb21TdG9yYWdlOworICAg
IHRoaXMuZG9tU3RvcmFnZU1vZGVsID0gZG9tU3RvcmFnZU1vZGVsOwogCiAgICAgdGhpcy5lbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtdmlldyIpOwogICAgIHRoaXMuZWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJ0YWJsZSIpOwpAQCAtNDIsNiArNDQsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VJdGVtc1ZpZXcgPSBmdW5jdGlvbihkb21TdG9yYWdlKQogCiAgICAgdGhpcy5yZWZyZXNo
QnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7CiAg
ICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcmVm
cmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOworCisgICAgdGhpcy5kb21TdG9yYWdlTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU1vZGVsLkV2ZW50cy5ET01TdG9y
YWdlSXRlbXNDbGVhcmVkLCB0aGlzLl9kb21TdG9yYWdlSXRlbXNDbGVhcmVkLCB0aGlzKTsKKyAg
ICB0aGlzLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VJdGVtUmVtb3ZlZCwgdGhpcy5fZG9tU3RvcmFn
ZUl0ZW1SZW1vdmVkLCB0aGlzKTsKKyAgICB0aGlzLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VJdGVt
QWRkZWQsIHRoaXMuX2RvbVN0b3JhZ2VJdGVtQWRkZWQsIHRoaXMpOworICAgIHRoaXMuZG9tU3Rv
cmFnZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5F
dmVudHMuRE9NU3RvcmFnZUl0ZW1VcGRhdGVkLCB0aGlzLl9kb21TdG9yYWdlSXRlbVVwZGF0ZWQs
IHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUg
PSB7CkBAIC01Miw3ICs1OSw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgIHdhc1Nob3duOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0
aGlzLnVwZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRhdGUoKTsKICAgICB9LAogCiAgICAgd2ls
bEhpZGU6IGZ1bmN0aW9uKCkKQEAgLTYwLDcgKzY3LDkzIEBAIFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlz
aWJsZSA9IGZhbHNlOwogICAgIH0sCiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBf
ZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuaXNTaG93aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5fZGF0YUdyaWQucm9vdE5vZGUoKS5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLl9k
YXRhR3JpZC5hZGRDcmVhdGlvbk5vZGUoZmFsc2UpOworICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRv
bi52aXNpYmxlID0gZmFsc2U7CisgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAg
ICAqLworICAgIF9kb21TdG9yYWdlSXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLmlzU2hvd2luZygpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBzdG9yYWdlRGF0YSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByb290Tm9k
ZSA9IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCk7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHJv
b3ROb2RlLmNoaWxkcmVuOworCisgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuW2ldOworICAgICAgICAgICAgaWYgKGNoaWxkTm9k
ZS5kYXRhLmtleSA9PT0gc3RvcmFnZURhdGEua2V5KSB7CisgICAgICAgICAgICAgICAgcm9vdE5v
ZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUJ1
dHRvbi52aXNpYmxlID0gKGNoaWxkcmVuLmxlbmd0aCA+IDEpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZG9tU3Rv
cmFnZUl0ZW1BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMu
aXNTaG93aW5nKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHN0b3JhZ2VE
YXRhID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJvb3ROb2RlID0gdGhpcy5fZGF0YUdyaWQu
cm9vdE5vZGUoKTsKKyAgICAgICAgdmFyIGNoaWxkcmVuID0gcm9vdE5vZGUuY2hpbGRyZW47CisK
KyAgICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKKyAgICAgICAgdGhpcy5kZWxldGVCdXR0b24u
dmlzaWJsZSA9IHRydWU7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGlmIChjaGlsZHJlbltpXS5kYXRhLmtleSA9PT0gc3Rv
cmFnZURhdGEua2V5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgY2hp
bGROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoe2tleTogc3RvcmFnZURhdGEu
a2V5LCB2YWx1ZTogc3RvcmFnZURhdGEubmV3VmFsdWV9LCBmYWxzZSk7CisgICAgICAgIHJvb3RO
b2RlLmluc2VydENoaWxkKGNoaWxkTm9kZSwgY2hpbGRyZW4ubGVuZ3RoIC0gMSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkV2ZW50fSBldmVudAorICAg
ICAqLworICAgIF9kb21TdG9yYWdlSXRlbVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKCF0aGlzLmlzU2hvd2luZygpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBzdG9yYWdlRGF0YSA9IGV2ZW50LmRhdGE7CisgICAgICAgIHZhciByb290Tm9k
ZSA9IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCk7CisgICAgICAgIHZhciBjaGlsZHJlbiA9IHJv
b3ROb2RlLmNoaWxkcmVuOworCisgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CisKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuW2ldOworICAgICAgICAgICAgaWYgKGNoaWxkTm9k
ZS5kYXRhLmtleSA9PT0gc3RvcmFnZURhdGEua2V5KSB7CisgICAgICAgICAgICAgICAgY2hpbGRO
b2RlLmRhdGEudmFsdWUgPSBzdG9yYWdlRGF0YS5uZXdWYWx1ZTsKKyAgICAgICAgICAgICAgICBj
aGlsZE5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZp
c2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICBfdXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAg
ICB0aGlzLmRldGFjaENoaWxkVmlld3MoKTsKICAgICAgICAgdGhpcy5kb21TdG9yYWdlLmdldEVu
dHJpZXModGhpcy5fc2hvd0RPTVN0b3JhZ2VFbnRyaWVzLmJpbmQodGhpcykpOwpAQCAtNzQsNyAr
MTY3LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IHRoaXMuX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJp
ZXMoZW50cmllcyk7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNob3codGhpcy5lbGVtZW50KTsK
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXV0b1NpemVDb2x1bW5zKDEwKTsKLSAgICAgICAgdGhp
cy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7CisgICAgICAgIHRoaXMuZGVsZXRlQnV0dG9u
LnZpc2libGUgPSAodGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5jaGlsZHJlbi5sZW5ndGggPiAx
KTsKICAgICB9LAogCiAgICAgX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXM6IGZ1bmN0aW9u
KGVudHJpZXMpCkBAIC0xMjAsNyArMjEzLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVt
c1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlv
bihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX3Vw
ZGF0ZSgpOwogICAgIH0sCiAKICAgICBfZWRpdGluZ0NhbGxiYWNrOiBmdW5jdGlvbihlZGl0aW5n
Tm9kZSwgY29sdW1uSWRlbnRpZmllciwgb2xkVGV4dCwgbmV3VGV4dCkKQEAgLTEzMSwxMSArMjI0
LDggQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgIGRvbVN0b3JhZ2UucmVtb3ZlSXRlbShvbGRUZXh0KTsKIAogICAgICAgICAg
ICAgZG9tU3RvcmFnZS5zZXRJdGVtKG5ld1RleHQsIGVkaXRpbmdOb2RlLmRhdGEudmFsdWUpOwot
ICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRvbVN0b3JhZ2Uu
c2V0SXRlbShlZGl0aW5nTm9kZS5kYXRhLmtleSwgbmV3VGV4dCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB0aGlzLnVwZGF0ZSgpOwogICAgIH0sCiAKICAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0
aW9uKG5vZGUpCkBAIC0xNDUsOCArMjM1LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVt
c1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRvbVN0b3JhZ2UpCiAgICAg
ICAgICAgICB0aGlzLmRvbVN0b3JhZ2UucmVtb3ZlSXRlbShub2RlLmRhdGEua2V5KTsKLQotICAg
ICAgICB0aGlzLnVwZGF0ZSgpOwogICAgIH0sCiAKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5WaWV3LnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYWE5NDAyNDQ3YTZmOThkYTJjMzBmYTQ0MTE0
YTI0ZGJmYjUxNDY4OS4uNmQzMWM2OWRlODI2ZGM4YzdhZmFmYjBmNWZmODM2YjZkZjJiNzgyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNl
c1BhbmVsLmpzCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OCwgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEpvc2VwaCBQZWNvcmFybworICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExNyw3ICsxMTgsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBm
dW5jdGlvbihkYXRhYmFzZSkKIAogICAgIFdlYkluc3BlY3Rvci5kb21TdG9yYWdlTW9kZWwuc3Rv
cmFnZXMoKS5mb3JFYWNoKHRoaXMuX2FkZERPTVN0b3JhZ2UuYmluZCh0aGlzKSk7CiAgICAgV2Vi
SW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VBZGRlZCwgdGhpcy5fZG9tU3RvcmFnZUFk
ZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9tU3RvcmFnZU1vZGVsLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZVVwZGF0
ZWQsIHRoaXMuX2RvbVN0b3JhZ2VVcGRhdGVkLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLlJl
c291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTQ2OSw3ICs0NjksNyBAQCBXZWJJbnNwZWN0
b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgdmlldzsKICAgICAg
ICAgdmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3cy5nZXQoZG9tU3RvcmFnZSk7CiAgICAgICAg
IGlmICghdmlldykgewotICAgICAgICAgICAgdmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUl0ZW1zVmlldyhkb21TdG9yYWdlKTsKKyAgICAgICAgICAgIHZpZXcgPSBuZXcgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcoZG9tU3RvcmFnZSwgV2ViSW5zcGVjdG9yLmRvbVN0
b3JhZ2VNb2RlbCk7CiAgICAgICAgICAgICB0aGlzLl9kb21TdG9yYWdlVmlld3MucHV0KGRvbVN0
b3JhZ2UsIHZpZXcpOwogICAgICAgICB9CiAKQEAgLTU3MiwxNyArNTcyLDYgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGF0YWJhc2UuZ2V0VGFi
bGVOYW1lcyh0YWJsZU5hbWVzQ2FsbGJhY2spOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8KLSAgICBfZG9tU3RvcmFn
ZVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHN0b3JhZ2UgPSAv
KiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01TdG9yYWdlfSovIChldmVudC5kYXRhKTsKLSAgICAg
ICAgdmFyIHZpZXcgPSB0aGlzLl9kb21TdG9yYWdlVmlld3MuZ2V0KHN0b3JhZ2UpOwotICAgICAg
ICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09PSB0aGlzLnZpc2libGVWaWV3KQotICAg
ICAgICAgICAgdmlldy51cGRhdGUoKTsKLSAgICB9LAotCiAgICAgX3BvcHVsYXRlQXBwbGljYXRp
b25DYWNoZVRyZWU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2FwcGxpY2F0aW9u
Q2FjaGVNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1vZGVsKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187129</attachid>
            <date>2013-02-07 09:47:03 -0800</date>
            <delta_ts>2013-02-07 12:04:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107937-20130207231337.patch</filename>
            <type>text/plain</type>
            <size>20998</size>
            <attacher name="Vivek Galatage">vivek.vg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGJlMTE1OWFkODdlMTUz
NjhhODNmZWFlYzkwNDA3MWU5YjQ2ZWFiZC4uMWExODdjNGYwMjI1OGQ3ZjAwMGY5MWFhZTczZTFm
NGUxYjhmYzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAyLTA3ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrLnZnQHNhbXN1bmcuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IENQVSBwZWdnZWQgd2hlbiBpbnNwZWN0aW5nIExvY2FsU3RvcmFnZSB0aGF0IG11dGF0ZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc5MzcK
KworICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgorCisgICAgICAgIFRoZSBE
T00gc3RvcmFnZSBhZ2VudCB3aWxsIGZpcmUgYW4gZXZlbnQgdG8gdGhlIGZyb250ZW5kIGJhc2Vk
IG9uIHRoZSBhY3Rpb24KKyAgICAgICAgcGVyZm9ybWVkIG9uIHRoZSBzdG9yYWdlLiBCYXNlZCBv
biB0aGlzIGFjdGlvbiwgdGhlIGZyb250LWVuZCB3aWxsIGp1c3QgYWRkL3VwZGF0ZS9yZW1vdmUK
KyAgICAgICAgdGhlIGVudHJ5IGluIHRoZSB2aWV3LiBUaGlzIGVuaGFuY2VzIHRoZSBmcm9udC1l
bmQgcmVzcG9uc2l2ZW5lc3MgYXMgdGhlIHJvdW5kIHRyaXAKKyAgICAgICAgZm9yIGZldGNoaW5n
IHRoZSBzdG9yYWdlIGVudHJpZXMgaGFzIGJlZW4gZWxpbWluYXRlZC4KKworICAgICAgICBFeGlz
dGluZyB0ZXN0OiBMYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3RvcmFnZS1wYW5lbC1kb20tc3RvcmFn
ZS11cGRhdGUuaHRtbCBzaG91bGQgdmVyaWZ5IHRoZSBjaGFuZ2UKKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvRE9NU3RvcmFnZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9k
ZWwucHJvdG90eXBlLl9kb21TdG9yYWdlSXRlbXNDbGVhcmVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlTW9kZWwucHJvdG90eXBlLl9kb21TdG9yYWdlSXRlbVJlbW92ZWQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUuX2RvbVN0b3Jh
Z2VJdGVtQWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90
b3R5cGUuX2RvbVN0b3JhZ2VJdGVtVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZURpc3BhdGNoZXIucHJvdG90eXBlLmRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRjaGVyLnByb3RvdHlwZS5kb21TdG9y
YWdlSXRlbVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRj
aGVyLnByb3RvdHlwZS5kb21TdG9yYWdlSXRlbUFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlRGlzcGF0Y2hlci5wcm90b3R5cGUuZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUud2FzU2hvd24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9kb21TdG9yYWdl
SXRlbXNDbGVhcmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3
LnByb3RvdHlwZS5fZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZS5fZG9tU3RvcmFnZUl0ZW1BZGRlZCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX2RvbVN0
b3JhZ2VJdGVtVXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1z
Vmlldy5wcm90b3R5cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZUl0ZW1zVmlldy5wcm90b3R5cGUuX3Nob3dET01TdG9yYWdlRW50cmllcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25D
bGlja2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3Rv
dHlwZS5fZWRpdGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdl
SXRlbXNWaWV3LnByb3RvdHlwZS5fZGVsZXRlQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VzUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3Rv
dHlwZS5fc2hvd0RPTVN0b3JhZ2UuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUuX3Nob3dET01TdG9yYWdlKToKKwogMjAxMy0wMi0wNyAgR2F2
aW4gUGV0ZXJzICA8Z2F2aW5wQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTQyMTEyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CmluZGV4IDRlNWJiMzI1M2IxNDI5N2Q0NDFjNTI4YWIyNzJlZjViZDQ1OGI3NDcuLjZhZjZlNGY1
NmVhZjBmZWFjM2FlODhmNzhhNjg3ZjdjYTE1ZGRjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KQEAgLTgyMSwyMiArODIxLDIyIEBACiAgICAgICAgICJjb21tYW5k
cyI6IFsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJlbmFibGUiLAot
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIGNvbnNvbGUgZG9tYWluLCBz
ZW5kcyB0aGUgbWVzc2FnZXMgY29sbGVjdGVkIHNvIGZhciB0byB0aGUgY2xpZW50IGJ5IG1lYW5z
IG9mIHRoZSA8Y29kZT5tZXNzYWdlQWRkZWQ8L2NvZGU+IG5vdGlmaWNhdGlvbi4iIAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIGNvbnNvbGUgZG9tYWluLCBzZW5kcyB0
aGUgbWVzc2FnZXMgY29sbGVjdGVkIHNvIGZhciB0byB0aGUgY2xpZW50IGJ5IG1lYW5zIG9mIHRo
ZSA8Y29kZT5tZXNzYWdlQWRkZWQ8L2NvZGU+IG5vdGlmaWNhdGlvbi4iCiAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAotICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBjb25zb2xlIGRvbWFpbiwgcHJl
dmVudHMgZnVydGhlciBjb25zb2xlIG1lc3NhZ2VzIGZyb20gYmVpbmcgcmVwb3J0ZWQgdG8gdGhl
IGNsaWVudC4iIAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlcyBjb25z
b2xlIGRvbWFpbiwgcHJldmVudHMgZnVydGhlciBjb25zb2xlIG1lc3NhZ2VzIGZyb20gYmVpbmcg
cmVwb3J0ZWQgdG8gdGhlIGNsaWVudC4iCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICJuYW1lIjogImNsZWFyTWVzc2FnZXMiLAotICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDbGVhcnMgY29uc29sZSBtZXNzYWdlcyBjb2xsZWN0ZWQgaW4gdGhl
IGJyb3dzZXIuIiAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2xlYXJzIGNvbnNv
bGUgbWVzc2FnZXMgY29sbGVjdGVkIGluIHRoZSBicm93c2VyLiIKICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAic2V0TW9uaXRvcmluZ1hIUkVu
YWJsZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImVuYWJsZWQiLCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9u
IjogIk1vbml0b3JpbmcgZW5hYmxlZCBzdGF0ZS4iIH0KICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUb2dnbGVzIG1vbml0b3Jpbmcgb2YgWE1MSHR0
cFJlcXVlc3QuIElmIDxjb2RlPnRydWU8L2NvZGU+LCBjb25zb2xlIHdpbGwgcmVjZWl2ZSBtZXNz
YWdlcyB1cG9uIGVhY2ggWEhSIGlzc3VlZC4iLCAKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiVG9nZ2xlcyBtb25pdG9yaW5nIG9mIFhNTEh0dHBSZXF1ZXN0LiBJZiA8Y29kZT50cnVl
PC9jb2RlPiwgY29uc29sZSB3aWxsIHJlY2VpdmUgbWVzc2FnZXMgdXBvbiBlYWNoIFhIUiBpc3N1
ZWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgIHsKQEAgLTEwNzcsNyArMTA3Nyw3IEBACiAgICAgICAgICAgICAgICAgInBhcmFt
ZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiY2FjaGVEaXNhYmxlZCIs
ICJ0eXBlIjogImJvb2xlYW4iLCAiZGVzY3JpcHRpb24iOiAiQ2FjaGUgZGlzYWJsZWQgc3RhdGUu
IiB9CiAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
VG9nZ2xlcyBpZ25vcmluZyBjYWNoZSBmb3IgZWFjaCByZXF1ZXN0LiBJZiA8Y29kZT50cnVlPC9j
b2RlPiwgY2FjaGUgd2lsbCBub3QgYmUgdXNlZC4iIAorICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJUb2dnbGVzIGlnbm9yaW5nIGNhY2hlIGZvciBlYWNoIHJlcXVlc3QuIElmIDxjb2Rl
PnRydWU8L2NvZGU+LCBjYWNoZSB3aWxsIG5vdCBiZSB1c2VkLiIKICAgICAgICAgICAgIH0KICAg
ICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTE1MTcsMTAgKzE1MTcsMzQgQEAKICAg
ICAgICAgICAgICAgICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICJuYW1lIjogImRvbVN0b3JhZ2VVcGRhdGVkIiwKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJkb21TdG9yYWdlSXRlbXNDbGVhcmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdG9yYWdlSWQiLCAgIiRyZWYi
OiAiU3RvcmFnZUlkIiB9CiAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJkb21TdG9yYWdlSXRlbVJlbW92ZWQi
LAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInN0b3JhZ2VJZCIsICAiJHJlZiI6ICJTdG9yYWdlSWQiIH0sCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAia2V5IiwgInR5cGUiOiAic3RyaW5nIiB9CisgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAi
bmFtZSI6ICJkb21TdG9yYWdlSXRlbUFkZGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVy
cyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzdG9yYWdlSWQiLCAgIiRyZWYi
OiAiU3RvcmFnZUlkIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0
eXBlIjogInN0cmluZyIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1
ZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZG9tU3RvcmFnZUl0ZW1V
cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzdG9yYWdlSWQiLCAgIiRyZWYiOiAiU3RvcmFnZUlkIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICJ0eXBlIjogInN0cmluZyIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvbGRWYWx1ZSIsICJ0eXBlIjogInN0cmluZyIg
fSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICJ0eXBlIjogInN0
cmluZyIgfQorICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAg
IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCmluZGV4IDljZjg4NzU1NGJkMzE3OWIzNjIzNzViMjY3MGQ5Y2ZmZWQ1Y2Y0
NzMuLjA2YzQyNzBlNzIyYTkyNjU2NGU3YmJiZjdiMWNmOGJlNzZmNzFmM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIyMiw3ICsyMjMsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlk
VXNlRE9NU3RvcmFnZShTdG9yYWdlQXJlYSogc3RvcmFnZUFyZWEsIGJvb2wgaQogICAgICAgICBy
ZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFN0cmluZyYsIFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlLCBTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sIFBhZ2UqKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBTdG9yYWdlVHlwZSBzdG9y
YWdlVHlwZSwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBQYWdlKikKIHsKICAgICBp
ZiAoIW1fZnJvbnRlbmQgfHwgIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjMyLDcg
KzIzMywxNCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01T
dG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiwgY29uc3QgUwogICAgIGlmIChpZC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3Rv
cmFnZVVwZGF0ZWQoaWQpOworICAgIGlmIChrZXkuaXNOdWxsKCkpCisgICAgICAgIG1fZnJvbnRl
bmQtPmRvbXN0b3JhZ2UoKS0+ZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZChpZCk7CisgICAgZWxzZSBp
ZiAobmV3VmFsdWUuaXNOdWxsKCkpCisgICAgICAgIG1fZnJvbnRlbmQtPmRvbXN0b3JhZ2UoKS0+
ZG9tU3RvcmFnZUl0ZW1SZW1vdmVkKGlkLCBrZXkpOworICAgIGVsc2UgaWYgKG9sZFZhbHVlLmlz
TnVsbCgpKQorICAgICAgICBtX2Zyb250ZW5kLT5kb21zdG9yYWdlKCktPmRvbVN0b3JhZ2VJdGVt
QWRkZWQoaWQsIGtleSwgbmV3VmFsdWUpOworICAgIGVsc2UKKyAgICAgICAgbV9mcm9udGVuZC0+
ZG9tc3RvcmFnZSgpLT5kb21TdG9yYWdlSXRlbVVwZGF0ZWQoaWQsIGtleSwgb2xkVmFsdWUsIG5l
d1ZhbHVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmNsZWFyUmVzb3Vy
Y2VzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
U3RvcmFnZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFn
ZS5qcwppbmRleCA3YWY0NDJiMmQ3MzFjNDA0YjRmNGU1M2QyMzU1YTkzYjUyMWU2MTFhLi5iMTM0
NDE5NTk5ZTM1Mjg0OTkyYzJjMGZiMDYxMTAyYmI4ZGI4ZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDcgKzk3LDEw
IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwgPSBmdW5jdGlvbigpCiAKIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzID0gewogICAgIERPTVN0b3JhZ2VBZGRlZDogIkRP
TVN0b3JhZ2VBZGRlZCIsCi0gICAgRE9NU3RvcmFnZVVwZGF0ZWQ6ICJET01TdG9yYWdlVXBkYXRl
ZCIKKyAgICBET01TdG9yYWdlSXRlbXNDbGVhcmVkOiAiRE9NU3RvcmFnZUl0ZW1zQ2xlYXJlZCIs
CisgICAgRE9NU3RvcmFnZUl0ZW1SZW1vdmVkOiAiRE9NU3RvcmFnZUl0ZW1SZW1vdmVkIiwKKyAg
ICBET01TdG9yYWdlSXRlbUFkZGVkOiAiRE9NU3RvcmFnZUl0ZW1BZGRlZCIsCisgICAgRE9NU3Rv
cmFnZUl0ZW1VcGRhdGVkOiAiRE9NU3RvcmFnZUl0ZW1VcGRhdGVkIgogfQogCiBXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTExMiw5ICsxMTYsNjEgQEAgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtET01TdG9yYWdlQWdlbnQuU3RvcmFnZUlkfSBzdG9yYWdlSWQKICAgICAgKi8KLSAg
ICBfZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICBfZG9tU3RvcmFn
ZUl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24oc3RvcmFnZUlkKQogICAgIHsKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVu
dHMuRE9NU3RvcmFnZVVwZGF0ZWQsIHRoaXMuX3N0b3JhZ2VzW3N0b3JhZ2VJZF0pOworICAgICAg
ICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX3N0b3JhZ2VzW3N0b3JhZ2VJZF07CisgICAgICAgIHZh
ciBzdG9yYWdlRGF0YSA9IHsKKyAgICAgICAgICAgIHN0b3JhZ2U6IGRvbVN0b3JhZ2UKKyAgICAg
ICAgfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZUl0ZW1zQ2xlYXJlZCwgc3RvcmFnZURh
dGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTVN0b3JhZ2VBZ2VudC5T
dG9yYWdlSWR9IHN0b3JhZ2VJZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKi8K
KyAgICBfZG9tU3RvcmFnZUl0ZW1SZW1vdmVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSkKKyAg
ICB7CisgICAgICAgIHZhciBkb21TdG9yYWdlID0gdGhpcy5fc3RvcmFnZXNbc3RvcmFnZUlkXTsK
KyAgICAgICAgdmFyIHN0b3JhZ2VEYXRhID0geworICAgICAgICAgICAgc3RvcmFnZTogZG9tU3Rv
cmFnZSwKKyAgICAgICAgICAgIGtleToga2V5CisgICAgICAgIH07CisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRz
LkRPTVN0b3JhZ2VJdGVtUmVtb3ZlZCwgc3RvcmFnZURhdGEpOworICAgIH0sCisKKyAgICAvKioK
KyAgICAgKiBAcGFyYW0ge0RPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWR9IHN0b3JhZ2VJZAorICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmFsdWUK
KyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1BZGRlZDogZnVuY3Rpb24oc3RvcmFnZUlkLCBr
ZXksIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9zdG9y
YWdlc1tzdG9yYWdlSWRdOworICAgICAgICB2YXIgc3RvcmFnZURhdGEgPSB7CisgICAgICAgICAg
ICBzdG9yYWdlOiBkb21TdG9yYWdlLAorICAgICAgICAgICAga2V5OiBrZXksCisgICAgICAgICAg
ICBuZXdWYWx1ZTogbmV3VmFsdWUKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3Rv
cmFnZUl0ZW1BZGRlZCwgc3RvcmFnZURhdGEpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0RPTVN0b3JhZ2VBZ2VudC5TdG9yYWdlSWR9IHN0b3JhZ2VJZAorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBrZXkKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb2xkVmFsdWUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmV3VmFsdWUKKyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1VcGRh
dGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKQorICAgIHsK
KyAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9zdG9yYWdlc1tzdG9yYWdlSWRdOworICAg
ICAgICB2YXIgc3RvcmFnZURhdGEgPSB7CisgICAgICAgICAgICBzdG9yYWdlOiBkb21TdG9yYWdl
LAorICAgICAgICAgICAga2V5OiBrZXksCisgICAgICAgICAgICBvbGRWYWx1ZTogb2xkVmFsdWUs
CisgICAgICAgICAgICBuZXdWYWx1ZTogbmV3VmFsdWUKKyAgICAgICAgfTsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5F
dmVudHMuRE9NU3RvcmFnZUl0ZW1VcGRhdGVkLCBzdG9yYWdlRGF0YSk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMTY2LDEwICsyMjIsNDAgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEaXNwYXRj
aGVyLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmFn
ZUlkCiAgICAgICovCi0gICAgZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkK
KyAgICBkb21TdG9yYWdlSXRlbXNDbGVhcmVkOiBmdW5jdGlvbihzdG9yYWdlSWQpCiAgICAgewot
ICAgICAgICB0aGlzLl9tb2RlbC5fZG9tU3RvcmFnZVVwZGF0ZWQoc3RvcmFnZUlkKTsKLSAgICB9
CisgICAgICAgIHRoaXMuX21vZGVsLl9kb21TdG9yYWdlSXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdG9yYWdlSWQKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5CisgICAgICovCisgICAgZG9tU3RvcmFnZUl0ZW1SZW1v
dmVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSkKKyAgICB7CisgICAgICAgIHRoaXMuX21vZGVs
Ll9kb21TdG9yYWdlSXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpOworICAgIH0sCisKKyAgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RvcmFnZUlkCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGtleQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWYWx1ZQorICAgICAqLworICAgIGRv
bVN0b3JhZ2VJdGVtQWRkZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5LCBuZXdWYWx1ZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX21vZGVsLl9kb21TdG9yYWdlSXRlbUFkZGVkKHN0b3JhZ2VJZCwg
a2V5LCBuZXdWYWx1ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBzdG9yYWdlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5CisgICAgICogQHBhcmFtIHtz
dHJpbmd9IG9sZFZhbHVlCisgICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZhbHVlCisgICAgICov
CisgICAgZG9tU3RvcmFnZUl0ZW1VcGRhdGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgb2xk
VmFsdWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fbW9kZWwuX2RvbVN0b3JhZ2VJ
dGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICB9LAog
fQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcwppbmRleCBhYWMyOTdjZjI5YTNjZWM5OTg2NmVmNDE1
NjkyOWJiYmNmZDU0OGI2Li41MzVkYTEyYzM1M2NiMWU3MDg2NDhmYWFhNjIzMmFkZjdkM2EyOGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3Jh
Z2VJdGVtc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01TdG9yYWdlSXRlbXNWaWV3LmpzCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwOCBOb2tpYSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3LDExICsyOCwxMiBAQAogICogQGNvbnN0cnVj
dG9yCiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlZpZXd9CiAgKi8KLVdlYkluc3BlY3Rvci5E
T01TdG9yYWdlSXRlbXNWaWV3ID0gZnVuY3Rpb24oZG9tU3RvcmFnZSkKK1dlYkluc3BlY3Rvci5E
T01TdG9yYWdlSXRlbXNWaWV3ID0gZnVuY3Rpb24oZG9tU3RvcmFnZSwgZG9tU3RvcmFnZU1vZGVs
KQogewogICAgIFdlYkluc3BlY3Rvci5WaWV3LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLmRvbVN0
b3JhZ2UgPSBkb21TdG9yYWdlOworICAgIHRoaXMuZG9tU3RvcmFnZU1vZGVsID0gZG9tU3RvcmFn
ZU1vZGVsOwogCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtdmlldyIp
OwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0YWJsZSIpOwpAQCAtNDIsNiArNDQs
MTEgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcgPSBmdW5jdGlvbihkb21TdG9y
YWdlKQogCiAgICAgdGhpcy5yZWZyZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNC
YXJCdXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3Jh
Z2Utc3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOworCisgICAg
dGhpcy5kb21TdG9yYWdlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZU1vZGVsLkV2ZW50cy5ET01TdG9yYWdlSXRlbXNDbGVhcmVkLCB0aGlzLl9kb21TdG9yYWdl
SXRlbXNDbGVhcmVkLCB0aGlzKTsKKyAgICB0aGlzLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VJdGVt
UmVtb3ZlZCwgdGhpcy5fZG9tU3RvcmFnZUl0ZW1SZW1vdmVkLCB0aGlzKTsKKyAgICB0aGlzLmRv
bVN0b3JhZ2VNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9k
ZWwuRXZlbnRzLkRPTVN0b3JhZ2VJdGVtQWRkZWQsIHRoaXMuX2RvbVN0b3JhZ2VJdGVtQWRkZWQs
IHRoaXMpOworICAgIHRoaXMuZG9tU3RvcmFnZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VNb2RlbC5FdmVudHMuRE9NU3RvcmFnZUl0ZW1VcGRhdGVkLCB0aGlz
Ll9kb21TdG9yYWdlSXRlbVVwZGF0ZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CkBAIC01Miw3ICs1OSw3IEBAIFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgIHdhc1Nob3duOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB0aGlzLnVwZGF0ZSgpOworICAgICAgICB0aGlzLl91cGRh
dGUoKTsKICAgICB9LAogCiAgICAgd2lsbEhpZGU6IGZ1bmN0aW9uKCkKQEAgLTYwLDcgKzY3LDkz
IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOwogICAgIH0sCiAKLSAgICB1cGRh
dGU6IGZ1bmN0aW9uKCkKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVu
dH0gZXZlbnQKKyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNTaG93aW5nKCkpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKS5yZW1vdmVDaGls
ZHJlbigpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRDcmVhdGlvbk5vZGUoZmFsc2UpOwor
ICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0gZmFsc2U7CisgICAgICAgIGV2ZW50
LmNvbnN1bWUodHJ1ZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9kb21TdG9yYWdlSXRlbVJlbW92ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzU2hvd2luZygpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBzdG9yYWdlRGF0YSA9IGV2ZW50LmRh
dGE7CisgICAgICAgIHZhciByb290Tm9kZSA9IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCk7Cisg
ICAgICAgIHZhciBjaGlsZHJlbiA9IHJvb3ROb2RlLmNoaWxkcmVuOworCisgICAgICAgIGV2ZW50
LmNvbnN1bWUodHJ1ZSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuW2ldOwor
ICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0gc3RvcmFnZURhdGEua2V5KSB7
CisgICAgICAgICAgICAgICAgcm9vdE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTsKKyAgICAg
ICAgICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0gKGNoaWxkcmVuLmxlbmd0aCA+
IDEpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZl
bnQKKyAgICAgKi8KKyAgICBfZG9tU3RvcmFnZUl0ZW1BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuaXNTaG93aW5nKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdmFyIHN0b3JhZ2VEYXRhID0gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHJv
b3ROb2RlID0gdGhpcy5fZGF0YUdyaWQucm9vdE5vZGUoKTsKKyAgICAgICAgdmFyIGNoaWxkcmVu
ID0gcm9vdE5vZGUuY2hpbGRyZW47CisKKyAgICAgICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKKyAg
ICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7CisKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGlmIChjaGls
ZHJlbltpXS5kYXRhLmtleSA9PT0gc3RvcmFnZURhdGEua2V5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB2YXIgY2hpbGROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUoe2tleTogc3RvcmFnZURhdGEua2V5LCB2YWx1ZTogc3RvcmFnZURhdGEubmV3VmFsdWV9
LCBmYWxzZSk7CisgICAgICAgIHJvb3ROb2RlLmluc2VydENoaWxkKGNoaWxkTm9kZSwgY2hpbGRy
ZW4ubGVuZ3RoIC0gMSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLkV2ZW50fSBldmVudAorICAgICAqLworICAgIF9kb21TdG9yYWdlSXRlbVVwZGF0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzU2hvd2luZygpKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBzdG9yYWdlRGF0YSA9IGV2ZW50LmRh
dGE7CisgICAgICAgIHZhciByb290Tm9kZSA9IHRoaXMuX2RhdGFHcmlkLnJvb3ROb2RlKCk7Cisg
ICAgICAgIHZhciBjaGlsZHJlbiA9IHJvb3ROb2RlLmNoaWxkcmVuOworCisgICAgICAgIGV2ZW50
LmNvbnN1bWUodHJ1ZSk7CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IGNoaWxkcmVuW2ldOwor
ICAgICAgICAgICAgaWYgKGNoaWxkTm9kZS5kYXRhLmtleSA9PT0gc3RvcmFnZURhdGEua2V5KSB7
CisgICAgICAgICAgICAgICAgY2hpbGROb2RlLmRhdGEudmFsdWUgPSBzdG9yYWdlRGF0YS5uZXdW
YWx1ZTsKKyAgICAgICAgICAgICAgICBjaGlsZE5vZGUucmVmcmVzaCgpOworICAgICAgICAgICAg
ICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfdXBkYXRlOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLmRldGFjaENoaWxkVmlld3MoKTsKICAgICAg
ICAgdGhpcy5kb21TdG9yYWdlLmdldEVudHJpZXModGhpcy5fc2hvd0RPTVN0b3JhZ2VFbnRyaWVz
LmJpbmQodGhpcykpOwpAQCAtNzQsNyArMTY3LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJ
dGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IHRoaXMuX2Rh
dGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMoZW50cmllcyk7CiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnNob3codGhpcy5lbGVtZW50KTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXV0b1NpemVD
b2x1bW5zKDEwKTsKLSAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7Cisg
ICAgICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSAodGhpcy5fZGF0YUdyaWQucm9vdE5v
ZGUoKS5jaGlsZHJlbi5sZW5ndGggPiAxKTsKICAgICB9LAogCiAgICAgX2RhdGFHcmlkRm9yRE9N
U3RvcmFnZUVudHJpZXM6IGZ1bmN0aW9uKGVudHJpZXMpCkBAIC0xMjAsNyArMjEzLDcgQEAgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3JlZnJl
c2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBk
YXRlKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgIH0sCiAKICAgICBfZWRpdGluZ0Nh
bGxiYWNrOiBmdW5jdGlvbihlZGl0aW5nTm9kZSwgY29sdW1uSWRlbnRpZmllciwgb2xkVGV4dCwg
bmV3VGV4dCkKQEAgLTEzMSwxMSArMjI0LDggQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVt
c1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGRvbVN0b3JhZ2UucmVtb3ZlSXRl
bShvbGRUZXh0KTsKIAogICAgICAgICAgICAgZG9tU3RvcmFnZS5zZXRJdGVtKG5ld1RleHQsIGVk
aXRpbmdOb2RlLmRhdGEudmFsdWUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbShlZGl0aW5nTm9kZS5kYXRhLmtleSwgbmV3
VGV4dCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnVwZGF0ZSgpOwogICAgIH0sCiAKICAg
ICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCkBAIC0xNDUsOCArMjM1LDYgQEAgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
ICh0aGlzLmRvbVN0b3JhZ2UpCiAgICAgICAgICAgICB0aGlzLmRvbVN0b3JhZ2UucmVtb3ZlSXRl
bShub2RlLmRhdGEua2V5KTsKLQotICAgICAgICB0aGlzLnVwZGF0ZSgpOwogICAgIH0sCiAKICAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYWE5
NDAyNDQ3YTZmOThkYTJjMzBmYTQ0MTE0YTI0ZGJmYjUxNDY4OS4uNmQzMWM2OWRlODI2ZGM4Yzdh
ZmFmYjBmNWZmODM2YjZkZjJiNzgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xLDYgKzEsNyBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybworICogQ29weXJp
Z2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExNyw3ICsxMTgsNiBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzUGFuZWwgPSBmdW5jdGlvbihkYXRhYmFzZSkKIAogICAgIFdlYkluc3Bl
Y3Rvci5kb21TdG9yYWdlTW9kZWwuc3RvcmFnZXMoKS5mb3JFYWNoKHRoaXMuX2FkZERPTVN0b3Jh
Z2UuYmluZCh0aGlzKSk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlTW9kZWwuRXZlbnRzLkRPTVN0b3JhZ2VB
ZGRlZCwgdGhpcy5fZG9tU3RvcmFnZUFkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9t
U3RvcmFnZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VNb2Rl
bC5FdmVudHMuRE9NU3RvcmFnZVVwZGF0ZWQsIHRoaXMuX2RvbVN0b3JhZ2VVcGRhdGVkLCB0aGlz
KTsKIH0KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKQEAgLTQ2
OSw3ICs0NjksNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB2YXIgdmlldzsKICAgICAgICAgdmlldyA9IHRoaXMuX2RvbVN0b3JhZ2VWaWV3cy5n
ZXQoZG9tU3RvcmFnZSk7CiAgICAgICAgIGlmICghdmlldykgewotICAgICAgICAgICAgdmlldyA9
IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldyhkb21TdG9yYWdlKTsKKyAgICAg
ICAgICAgIHZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcoZG9tU3Rv
cmFnZSwgV2ViSW5zcGVjdG9yLmRvbVN0b3JhZ2VNb2RlbCk7CiAgICAgICAgICAgICB0aGlzLl9k
b21TdG9yYWdlVmlld3MucHV0KGRvbVN0b3JhZ2UsIHZpZXcpOwogICAgICAgICB9CiAKQEAgLTU3
MiwxNyArNTcyLDYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZGF0YWJhc2UuZ2V0VGFibGVOYW1lcyh0YWJsZU5hbWVzQ2FsbGJhY2spOwogICAg
IH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQK
LSAgICAgKi8KLSAgICBfZG9tU3RvcmFnZVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgdmFyIHN0b3JhZ2UgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5ET01TdG9yYWdl
fSovIChldmVudC5kYXRhKTsKLSAgICAgICAgdmFyIHZpZXcgPSB0aGlzLl9kb21TdG9yYWdlVmll
d3MuZ2V0KHN0b3JhZ2UpOwotICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09
PSB0aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgdmlldy51cGRhdGUoKTsKLSAgICB9LAot
CiAgICAgX3BvcHVsYXRlQXBwbGljYXRpb25DYWNoZVRyZWU6IGZ1bmN0aW9uKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1vZGVsKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>