<?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>118104</bug_id>
          
          <creation_ts>2013-06-26 17:15:21 -0700</creation_ts>
          <short_desc>Web Inspector: AX: Add container ARIA roles (toolbar, main, labeled regions, etc.) so the layout is more discoverable to screen reader users</short_desc>
          <delta_ts>2013-06-27 17:18:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>118105</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="James Craig">jcraig</reporter>
          <assigned_to name="James Craig">jcraig</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>jcraig</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>903997</commentid>
    <comment_count>0</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-26 17:15:21 -0700</bug_when>
    <thetext>Web Inspector: AX: Add container ARIA roles (toolbar, main, labeled regions, etc.) so the layout is more discoverable to screen reader users</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903998</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-06-26 17:15:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/14283900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904124</commentid>
    <comment_count>2</comment_count>
      <attachid>205582</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 02:42:58 -0700</bug_when>
    <thetext>Created attachment 205582
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904150</commentid>
    <comment_count>3</comment_count>
      <attachid>205582</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-06-27 03:43:52 -0700</bug_when>
    <thetext>Comment on attachment 205582
patch

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

Thanks for helping with the AX stuff!

&gt; Source/WebInspectorUI/UserInterface/NavigationBar.js:26
&gt; +WebInspector.NavigationBar = function(element, navigationItems, optRole, optLabel) {

We don&apos;t prefix optional arguments. WebKit also does not like abbreviations.

&gt; Source/WebInspectorUI/UserInterface/NavigationItem.js:26
&gt; +WebInspector.NavigationItem = function(identifier, optRole, optLabel) {

Ditto

&gt; Source/WebInspectorUI/UserInterface/NavigationSidebarPanel.js:42
&gt; +    this.element.setAttribute(&quot;role&quot;, &quot;group&quot;);
&gt; +    this.element.setAttribute(&quot;aria-label&quot;, displayName);

This should probially be moved to SidebarPanel.js so it is set for all SidebarPanels, which would include the DetailsSidebarPanels on the right.

&gt; Source/WebInspectorUI/UserInterface/ButtonNavigationItem.js:26
&gt; +WebInspector.ButtonNavigationItem = function(identifier, toolTipOrLabel, image, imageWidth, imageHeight, suppressEmboss, optRole) {

Ditto

&gt; Source/WebInspectorUI/UserInterface/ButtonNavigationItem.js:35
&gt; +    this._element.setAttribute(&quot;role&quot;, (optRole || &quot;button&quot;));

No need for ().

&gt; Source/WebInspectorUI/UserInterface/Main.js:146
&gt; +    var toolbarElement = document.getElementById(&quot;toolbar&quot;);
&gt; +    toolbarElement.setAttribute(&quot;role&quot;, &quot;toolbar&quot;);
&gt; +    this.toolbar = new WebInspector.Toolbar(toolbarElement);

A new line between the last two lines would help readability. Or you could do this:

this.toolbar = new WebInspector.Toolbar(document.getElementById(&quot;toolbar&quot;));
this.toolbar.element.setAttribute(&quot;role&quot;, &quot;toolbar&quot;);

But why not make the Toolbar class set this in the constructor by default?

&gt; Source/WebInspectorUI/UserInterface/Main.js:152
&gt; +    contentElement.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Content&quot;));

Does this match Cocoa and NSWindow?

&gt; Source/WebInspectorUI/UserInterface/Main.js:177
&gt; +    var sidebarElement = document.getElementById(&quot;details-sidebar&quot;);
&gt; +    sidebarElement.setAttribute(&quot;role&quot;, &quot;group&quot;);
&gt; +    sidebarElement.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Details&quot;));
&gt; +    this.rightSidebar = this.detailsSidebar = new WebInspector.Sidebar(sidebarElement, WebInspector.Sidebar.Sides.Right);

I think this would read better if you did:

this.rightSidebar = this.detailsSidebar = new WebInspector.Sidebar(document.getElementById(&quot;details-sidebar&quot;), WebInspector.Sidebar.Sides.Right);
this.detailsSidebar.element.setAttribute(&quot;role&quot;, &quot;group&quot;);
this.detailsSidebar.element.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Details&quot;));

Though, I think Sidebar&apos;s constructor should set the role to &quot;group&quot;. And the constructor could have a label parameter like you did for the other classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904261</commentid>
    <comment_count>4</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 09:05:46 -0700</bug_when>
    <thetext>(In reply to comment #3)

&gt; &gt; Source/WebInspectorUI/UserInterface/Main.js:146
&gt; &gt; +    var toolbarElement = document.getElementById(&quot;toolbar&quot;);
&gt; &gt; +    toolbarElement.setAttribute(&quot;role&quot;, &quot;toolbar&quot;);
&gt; &gt; +    this.toolbar = new WebInspector.Toolbar(toolbarElement);
&gt; 
&gt; A new line between the last two lines would help readability. Or you could do this:
&gt; 
&gt; this.toolbar = new WebInspector.Toolbar(document.getElementById(&quot;toolbar&quot;));
&gt; this.toolbar.element.setAttribute(&quot;role&quot;, &quot;toolbar&quot;);
&gt; 
&gt; But why not make the Toolbar class set this in the constructor by default?

I started out that way, but the Toolbar class is used for more controls than the main toolbar, where the ARIA toolbar role would not be appropriate. I&apos;ll update the class to use the optional argument pattern, and comment it so it&apos;s more clear.

&gt; &gt; Source/WebInspectorUI/UserInterface/Main.js:152
&gt; &gt; +    contentElement.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Content&quot;));
&gt; 
&gt; Does this match Cocoa and NSWindow?

Not sure I understand this question. The equivalent panel in Xcode is just labeled using the filename of the current xcodeproj. I used the &quot;Content&quot; string because this section can contain files, inspector details, log statements, etc. Does that answer your question?

&gt; &gt; Source/WebInspectorUI/UserInterface/Main.js:177
&gt; &gt; +    var sidebarElement = document.getElementById(&quot;details-sidebar&quot;);
&gt; &gt; +    sidebarElement.setAttribute(&quot;role&quot;, &quot;group&quot;);
&gt; &gt; +    sidebarElement.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Details&quot;));
&gt; &gt; +    this.rightSidebar = this.detailsSidebar = new WebInspector.Sidebar(sidebarElement, WebInspector.Sidebar.Sides.Right);
&gt; 
&gt; I think this would read better if you did:
&gt; 
&gt; this.rightSidebar = this.detailsSidebar = new WebInspector.Sidebar(document.getElementById(&quot;details-sidebar&quot;), WebInspector.Sidebar.Sides.Right);
&gt; this.detailsSidebar.element.setAttribute(&quot;role&quot;, &quot;group&quot;);
&gt; this.detailsSidebar.element.setAttribute(&quot;aria-label&quot;, WebInspector.UIString(&quot;Details&quot;));
&gt; 
&gt; Though, I think Sidebar&apos;s constructor should set the role to &quot;group&quot;. And the constructor could have a label parameter like you did for the other classes.

Good idea. I&apos;ll make that and the other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904262</commentid>
    <comment_count>5</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-06-27 09:12:49 -0700</bug_when>
    <thetext>Toolbar class is only used for the main toolbar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904274</commentid>
    <comment_count>6</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 09:37:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Toolbar class is only used for the main toolbar.

Ah yeah, I was thinking of the NavigationBar superclass. I&apos;ll move this to Toolbar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904281</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-06-27 09:50:33 -0700</bug_when>
    <thetext>Toolbar is a subclass of NavigationBar, so you can just have the Toolbar constructor pass the role tool the NavigationBar constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904288</commentid>
    <comment_count>8</comment_count>
      <attachid>205617</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 10:06:17 -0700</bug_when>
    <thetext>Created attachment 205617
patch with review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904291</commentid>
    <comment_count>9</comment_count>
      <attachid>205617</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-06-27 10:33:00 -0700</bug_when>
    <thetext>Comment on attachment 205617
patch with review feedback

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

&gt; UserInterface/SidebarPanel.js:42
&gt; +    if (role) 
&gt; +        this._element.setAttribute(&quot;role&quot;, role);
&gt; +    else 
&gt; +        this._element.setAttribute(&quot;role&quot;, &quot;group&quot;);

this._element.setAttribute(&quot;role&quot;, role || &quot;group&quot;);

&gt; UserInterface/ButtonNavigationItem.js:39
&gt; +    if (role) 
&gt; +        this._element.setAttribute(&quot;role&quot;, role);
&gt; +    else 
&gt; +        this._element.setAttribute(&quot;role&quot;, &quot;button&quot;);

this._element.setAttribute(&quot;role&quot;, role || &quot;button&quot;);

&gt; UserInterface/Main.js:172
&gt; +    this.rightSidebar = this.detailsSidebar = new WebInspector.Sidebar(document.getElementById(&quot;details-sidebar&quot;), WebInspector.Sidebar.Sides.Right, &quot;group&quot;, WebInspector.UIString(&quot;Details&quot;));

Could pass null for the role. Why not give the navigationSidebar a label too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904305</commentid>
    <comment_count>10</comment_count>
      <attachid>205617</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 11:37:03 -0700</bug_when>
    <thetext>Comment on attachment 205617
patch with review feedback

Gonna get those last couple changes in an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904306</commentid>
    <comment_count>11</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-06-27 11:39:56 -0700</bug_when>
    <thetext>You can just land them when you commit too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904311</commentid>
    <comment_count>12</comment_count>
      <attachid>205622</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 12:02:47 -0700</bug_when>
    <thetext>Created attachment 205622
patch with review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904316</commentid>
    <comment_count>13</comment_count>
      <attachid>205622</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 12:11:12 -0700</bug_when>
    <thetext>Comment on attachment 205622
patch with review feedback

Rejecting attachment 205622 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 205622, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
oardManager.js
|===================================================================
|--- UserInterface/DashboardManager.js	(revision 152084)
|+++ UserInterface/DashboardManager.js	(working copy)
--------------------------
No file to patch.  Skipping patch.
1 out of 1 hunk ignored
patching file ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Timothy Hatcher&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/997168</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904324</commentid>
    <comment_count>14</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 13:07:56 -0700</bug_when>
    <thetext>Haven&apos;t seen that error before. Going to apply the patch clean checkout to see if this was a conflict with another commit, or if this is a commit bot bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904330</commentid>
    <comment_count>15</comment_count>
      <attachid>205627</attachid>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-27 13:27:51 -0700</bug_when>
    <thetext>Created attachment 205627
patch with corrected paths

Previous patch was generated from a subdirectory, so the paths were wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904397</commentid>
    <comment_count>16</comment_count>
      <attachid>205627</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 17:17:58 -0700</bug_when>
    <thetext>Comment on attachment 205627
patch with corrected paths

Clearing flags on attachment: 205627

Committed r152141: &lt;http://trac.webkit.org/changeset/152141&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904398</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 17:18:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205582</attachid>
            <date>2013-06-27 02:42:58 -0700</date>
            <delta_ts>2013-06-27 10:06:17 -0700</delta_ts>
            <desc>patch</desc>
            <filename>118104.patch</filename>
            <type>text/plain</type>
            <size>12853</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwkocmV2aXNpb24gMTUyMDg0KQor
KysgU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogAGwAbwBjAGEAbABp
AHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiACgAYQBuAG8AbgB5AG0AbwB1AHMAIABmAHUAbgBjAHQA
aQBvAG4AKQAiAF0AIAA9ACAAIgAoAGEAbgBvAG4AeQBtAG8AdQBzACAAZgB1AG4AYwB0AGkAbwBu
ACkAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiADEAIABtAGEAdABj
AGgAIgBdACAAPQAgACIAMQAgAG0AYQB0AGMAaAAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0
AHIAaQBuAGcAcwBbACIAOQA5ADkAKwAiAF0AIAA9ACAAIgA5ADkAOQArACIAOwAKKwBsAG8AYwBh
AGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUA
cgAiAF0AIAA9ACAAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUAcgAiADsACiAAbABvAGMA
YQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQQBkAGQAIABBAHQAdAByAGkAYgB1AHQAZQAi
AF0AIAA9ACAAIgBBAGQAZAAgAEEAdAB0AHIAaQBiAHUAdABlACIAOwAKIABsAG8AYwBhAGwAaQB6
AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBBAGQAZAAgAE4AZQB3ACIAXQAgAD0AIAAiAEEAZABkACAA
TgBlAHcAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiAEEAbABsACIA
XQAgAD0AIAAiAEEAbABsACIAOwAKQEAgLTgyLDYgKzgzLDcgQEAKIABsAG8AYwBhAGwAaQB6AGUA
ZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgBzAG8AbABlACAAZQByAHIAbwByAHMALAAgAGMAbABp
AGMAawAgAHQAbwAgAHMAaABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgBdACAAPQAgACIA
QwBvAG4AcwBvAGwAZQAgAGUAcgByAG8AcgBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3
ACAAdABoAGUAIABDAG8AbgBzAG8AbABlACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBp
AG4AZwBzAFsAIgBDAG8AbgBzAG8AbABlACAAbABvAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAA
cwBoAG8AdwAgAHQAaABlACAAQwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABl
ACAAbABvAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAgAHQAaABlACAAQwBvAG4A
cwBvAGwAZQAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQwBvAG4A
cwBvAGwAZQAgAHcAYQByAG4AaQBuAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAg
AHQAaABlACAAQwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABlACAAdwBhAHIA
bgBpAG4AZwBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3ACAAdABoAGUAIABDAG8AbgBz
AG8AbABlACIAOwAKKwBsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgB0
AGUAbgB0ACIAXQAgAD0AIAAiAEMAbwBuAHQAZQBuAHQAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBk
AFMAdAByAGkAbgBnAHMAWwAiAEMAbwBuAHQAaQBuAHUAZQAgAHMAYwByAGkAcAB0ACAAZQB4AGUA
YwB1AHQAaQBvAG4AIAAoACUAcwAgAG8AcgAgACUAcwApACIAXQAgAD0AIAAiAEMAbwBuAHQAaQBu
AHUAZQAgAHMAYwByAGkAcAB0ACAAZQB4AGUAYwB1AHQAaQBvAG4AIAAoACUAcwAgAG8AcgAgACUA
cwApACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbwBrAGkA
ZQBzACIAXQAgAD0AIAAiAEMAbwBvAGsAaQBlAHMAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMA
dAByAGkAbgBnAHMAWwAiAEMAbwBwAHkAIABSAG8AdwAiAF0AIAA9ACAAIgBDAG8AcAB5ACAAUgBv
AHcAIgA7AApJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCShyZXZpc2lvbiAx
NTIwODQpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SYWRpb0J1dHRv
bk5hdmlnYXRpb25JdGVtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVu
dGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHsKLSAgICBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCB0
b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOworICAgIFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIHRvb2xUaXAsIGlt
YWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgbnVsbCwgInRhYiIpOwogfTsKIAogV2ViSW5z
cGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAicmFkaW8i
OwpAQCAtNDMsMTAgKzQzLDEzIEBACiAKICAgICBzZXQgc2VsZWN0ZWQoZmxhZykKICAgICB7Ci0g
ICAgICAgIGlmIChmbGFnKQorICAgICAgICBpZiAoZmxhZykgewogICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVk
IiwgImZhbHNlIik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgZ2V0IGFjdGl2ZSgpCkBAIC04
NSwxNSArODgsMTkgQEAKIAogICAgICAgICB2YXIgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7
CiAKLSAgICAgICAgaWYgKCFpc1NlbGVjdGVkKQorICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpIHsK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SYWRp
b0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7Cisg
ICAgICAgIH0KIAogICAgICAgICB2YXIgc2VsZWN0ZWRXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZz
ZXRXaWR0aDsKICAgICAgICAgaWYgKHNlbGVjdGVkV2lkdGgpCiAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc3R5bGUubWluV2lkdGggPSBzZWxlY3RlZFdpZHRoICsgInB4IjsKIAotICAgICAgICBp
ZiAoIWlzU2VsZWN0ZWQpCisgICAgICAgIGlmICghaXNTZWxlY3RlZCkgewogICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgIH0K
ICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRGFzaGJvYXJkTWFuYWdlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXNoYm9hcmRNYW5hZ2VyLmpzCShyZXZpc2lvbiAx
NTIwODQpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EYXNoYm9hcmRN
YW5hZ2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkTWFuYWdlciA9IGZ1bmN0aW9uKCkgewogICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAotICAgIHRoaXMudG9vbGJhckl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25JdGVtKCJkYXNoYm9hcmQiKTsKKyAgICB0aGlzLnRvb2xiYXJJdGVtID0gbmV3IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkIiwgImdyb3VwIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJBY3Rpdml0eSBWaWV3ZXIiKSk7CiAgICAgdGhpcy5fdmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyh0aGlzLnRvb2xiYXJJdGVtLmVsZW1lbnQpOwogCiAg
ICAgdGhpcy5fd2FpdGluZ0ZvckZpcnN0TWFpblJlc291cmNlVG9TdGFydFRyYWNraW5nU2l6ZSA9
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0
aW9uQmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL05hdmlnYXRpb25CYXIuanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFNvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25CYXIuanMJKHdvcmtpbmcgY29weSkKQEAg
LTIzLDEyICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdh
dGlvbkl0ZW1zKSB7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1l
bnQsIG5hdmlnYXRpb25JdGVtcywgb3B0Um9sZSwgb3B0TGFiZWwpIHsKICAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7CiAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9
IDA7CisgICAgCisgICAgaWYgKG9wdFJvbGUpCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0
cmlidXRlKCJyb2xlIiwgb3B0Um9sZSk7CisgICAgaWYgKG9wdExhYmVsKQorICAgICAgICB0aGlz
Ll9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIG9wdExhYmVsKTsKIAogICAgIHRo
aXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9mb2N1cy5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwg
dGhpcy5fYmx1ci5iaW5kKHRoaXMpLCBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDcgKzI5LDcgQEAKIAogICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwgPSBudWxs
OwogCi0gICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhcjsKKyAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyKG51bGwsIG51bGwsICJ0YWJsaXN0Iik7CiAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRp
b25JdGVtU2VsZWN0ZWQsIHRoaXMuX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOwogICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwog
CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uSXRl
bS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9O
YXZpZ2F0aW9uSXRlbS5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkl0ZW0uanMJKHdvcmtpbmcgY29weSkKQEAgLTIz
LDEyICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpIHsKK1dl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIG9wdFJvbGUs
IG9wdExhYmVsKSB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAg
dGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXIgfHwgbnVsbDsKIAogICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAKKyAgICBpZiAob3B0Um9s
ZSkgCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgb3B0Um9sZSk7
CisgICAgaWYgKG9wdExhYmVsKQorICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXJpYS1sYWJlbCIsIG9wdExhYmVsKTsKIAogICAgIHZhciBjbGFzc05hbWVzID0gdGhpcy5fY2xh
c3NOYW1lczsKICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyArK2kp
CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFNv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKICAgICBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmVsLmNhbGwodGhpcywgaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlw
LCBoaWRlVG9vbFRpcCwgaW1hZ2UsIGVsZW1lbnQpOwogCiAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05h
bWUpOworICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAiZ3JvdXAiKTsKKyAg
ICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgZGlzcGxheU5hbWUpOwog
CiAgICAgdGhpcy5fYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSA9IGF1dG9IaWRlVG9vbGJh
ckl0ZW1XaGVuRW1wdHkgfHwgZmFsc2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCShy
ZXZpc2lvbiAxNTIwODQpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
dXR0b25OYXZpZ2F0aW9uSXRlbS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRvb2xUaXBPckxhYmVs
LCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzKSB7CitXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29s
VGlwT3JMYWJlbCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9z
cywgb3B0Um9sZSkgewogICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMs
IGlkZW50aWZpZXIpOwogCiAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllcik7CkBAIC0zMiw2
ICszMiw3IEBACiAgICAgdGhpcy50b29sVGlwID0gdG9vbFRpcE9yTGFiZWw7CiAKICAgICB0aGlz
Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VDbGlja2VkLmJp
bmQodGhpcykpOworICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgKG9wdFJv
bGUgfHwgImJ1dHRvbiIpKTsKIAogICAgIHRoaXMuX2ltYWdlV2lkdGggPSBpbWFnZVdpZHRoIHx8
IDE2OwogICAgIHRoaXMuX2ltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQgfHwgMTY7CkluZGV4OiBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMJKHJldmlzaW9uIDE1
MjA4NCkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uanMJKHdv
cmtpbmcgY29weSkKQEAgLTE0MSw5ICsxNDEsMTUgQEAKICAgICAgICAgZG9jdW1lbnQuYm9keS5j
bGFzc0xpc3QuYWRkKCJuaWdodGx5LWJ1aWxkIik7CiAKICAgICAvLyBDcmVhdGUgdGhlIHVzZXIg
aW50ZXJmYWNlIGVsZW1lbnRzLgotICAgIHRoaXMudG9vbGJhciA9IG5ldyBXZWJJbnNwZWN0b3Iu
VG9vbGJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpKTsKKyAgICB2YXIgdG9v
bGJhckVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpOworICAgIHRv
b2xiYXJFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0b29sYmFyIik7CisgICAgdGhpcy50
b29sYmFyID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyKHRvb2xiYXJFbGVtZW50KTsKICAgICB0
aGlzLnRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5E
aXNwbGF5TW9kZURpZENoYW5nZSwgdGhpcy5fdG9vbGJhckRpc3BsYXlNb2RlRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICB0aGlzLnRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9v
bGJhci5FdmVudC5TaXplTW9kZURpZENoYW5nZSwgdGhpcy5fdG9vbGJhclNpemVNb2RlRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAKKyAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudCIpOworICAgIGNvbnRlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgi
cm9sZSIsICJtYWluIik7CisgICAgY29udGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxh
YmVsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IikpOwogCiAgICAgdGhpcy5jb250
ZW50QnJvd3NlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRlbnQtYnJvd3NlciIpLCB0aGlzKTsKICAgICB0aGlzLmNvbnRlbnRC
cm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50
LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2Vy
UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTE2NSw3ICsxNzEsMTAgQEAK
ICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNpZGViYXIuRXZlbnQuV2lkdGhEaWRDaGFuZ2UsIHRoaXMuX3NpZGViYXJXaWR0aERpZENoYW5n
ZSwgdGhpcyk7CiAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LlNpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9uYXZp
Z2F0aW9uU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMpOwogCi0gICAgdGhpcy5yaWdodFNpZGVi
YXIgPSB0aGlzLmRldGFpbHNTaWRlYmFyID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyKGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJkZXRhaWxzLXNpZGViYXIiKSwgV2ViSW5zcGVjdG9yLlNpZGVi
YXIuU2lkZXMuUmlnaHQpOworICAgIHZhciBzaWRlYmFyRWxlbWVudCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkZXRhaWxzLXNpZGViYXIiKTsKKyAgICBzaWRlYmFyRWxlbWVudC5zZXRBdHRy
aWJ1dGUoInJvbGUiLCAiZ3JvdXAiKTsKKyAgICBzaWRlYmFyRWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImFyaWEtbGFiZWwiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRldGFpbHMiKSk7CisgICAgdGhp
cy5yaWdodFNpZGViYXIgPSB0aGlzLmRldGFpbHNTaWRlYmFyID0gbmV3IFdlYkluc3BlY3Rvci5T
aWRlYmFyKHNpZGViYXJFbGVtZW50LCBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7
CiAgICAgdGhpcy5kZXRhaWxzU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
aWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9zaWRlYmFyQ29sbGFw
c2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogICAgIHRoaXMuZGV0YWlsc1NpZGViYXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5XaWR0aERpZENoYW5nZSwgdGhp
cy5fc2lkZWJhcldpZHRoRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLmRldGFpbHNTaWRlYmFy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVs
U2VsZWN0ZWQsIHRoaXMuX2RldGFpbHNTaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7CkluZGV4
OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjA4NCkKKysrIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAx
My0wNi0yNyAgSmFtZXMgQ3JhaWcgIDxqYW1lc0Bjb29raWVjcm9vay5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQVg6IEFkZCBjb250YWluZXIgQVJJQSByb2xlcyAodG9vbGJhciwgbWFp
biwgbGFiZWxlZCByZWdpb25zLCBldGMuKSBzbyB0aGUgbGF5b3V0IGlzIG1vcmUgZGlzY292ZXJh
YmxlIHRvIHNjcmVlbiByZWFkZXIgdXNlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExODEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1hZGUgdGhlIGJhc2ljIGxheW91dCAodG9vbGJhciwgc2lkZWJh
cnMsIG1haW4pIG9mIHRoZSBXZWIgSW5zcGVjdG9yIHVuZGVyc3RhbmRhYmxlIGFuZCBuYXZpZ2Fi
bGUgd2l0aCBWb2ljZU92ZXIuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CdXR0b25OYXZpZ2F0
aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Rhc2hib2FyZE1hbmFnZXIuanM6
CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL05hdmlnYXRpb25J
dGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanM6
CisKIDIwMTMtMDYtMjYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzdGVwcGluZyB0aHJvdWdoIHdoaWxlIHBhdXNlZCBpbiBkZWJ1
Z2dlciBtYWtlcyBhIHBvcG92ZXIgYXBwZWFyCg==
</data>
<flag name="review"
          id="227146"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205617</attachid>
            <date>2013-06-27 10:06:17 -0700</date>
            <delta_ts>2013-06-27 12:02:47 -0700</delta_ts>
            <desc>patch with review feedback</desc>
            <filename>118104.patch</filename>
            <type>text/plain</type>
            <size>14069</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjEw
NSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEzLTA2
LTI3ICBKYW1lcyBDcmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBWDogQWRkIGNvbnRhaW5lciBBUklBIHJvbGVzICh0b29sYmFyLCBtYWluLCBs
YWJlbGVkIHJlZ2lvbnMsIGV0Yy4pIHNvIHRoZSBsYXlvdXQgaXMgbW9yZSBkaXNjb3ZlcmFibGUg
dG8gc2NyZWVuIHJlYWRlciB1c2VycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTE4MTA0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBNYWRlIHRoZSBiYXNpYyBsYXlvdXQgKHRvb2xiYXIsIHNp
ZGViYXJzLCBtYWluKSBvZiB0aGUgV2ViIEluc3BlY3RvciB1bmRlcnN0YW5kYWJsZSBhbmQgbmF2
aWdhYmxlIHdpdGggVm9pY2VPdmVyLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9DU1NTdHlsZURldGFpbHNT
aWRlYmFyUGFuZWwuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9EYXNoYm9hcmRNYW5hZ2Vy
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL05hdmlnYXRpb25CYXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9OYXZpZ2F0
aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1JhZGlvQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9TaWRlYmFyLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
VG9vbGJhci5qczoKKwogMjAxMy0wNi0yNyAgTWF0dGhldyBIb2xkZW4gIDxqZnRob2xkZW5AeWFo
b28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERpc3BsYXkgY29sb3IgcGlja2VyIGlu
IHBvcG92ZXIgb24gY29sb3Igc3dhdGNoIGNsaWNrCkluZGV4OiBMb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBMb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgAoAGEAbgBvAG4A
eQBtAG8AdQBzACAAZgB1AG4AYwB0AGkAbwBuACkAIgBdACAAPQAgACIAKABhAG4AbwBuAHkAbQBv
AHUAcwAgAGYAdQBuAGMAdABpAG8AbgApACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBp
AG4AZwBzAFsAIgAxACAAbQBhAHQAYwBoACIAXQAgAD0AIAAiADEAIABtAGEAdABjAGgAIgA7AAog
AGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiADkAOQA5ACsAIgBdACAAPQAgACIA
OQA5ADkAKwAiADsACisAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQQBjAHQA
aQB2AGkAdAB5ACAAVgBpAGUAdwBlAHIAIgBdACAAPQAgACIAQQBjAHQAaQB2AGkAdAB5ACAAVgBp
AGUAdwBlAHIAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiAEEAZABk
ACAAQQB0AHQAcgBpAGIAdQB0AGUAIgBdACAAPQAgACIAQQBkAGQAIABBAHQAdAByAGkAYgB1AHQA
ZQAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQQBkAGQAIABOAGUA
dwAiAF0AIAA9ACAAIgBBAGQAZAAgAE4AZQB3ACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQA
cgBpAG4AZwBzAFsAIgBBAGwAbAAiAF0AIAA9ACAAIgBBAGwAbAAiADsACkBAIC04Miw2ICs4Myw3
IEBACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQwBvAG4AcwBvAGwAZQAg
AGUAcgByAG8AcgBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3ACAAdABoAGUAIABDAG8A
bgBzAG8AbABlACIAXQAgAD0AIAAiAEMAbwBuAHMAbwBsAGUAIABlAHIAcgBvAHIAcwAsACAAYwBs
AGkAYwBrACAAdABvACAAcwBoAG8AdwAgAHQAaABlACAAQwBvAG4AcwBvAGwAZQAiADsACiAAbABv
AGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQwBvAG4AcwBvAGwAZQAgAGwAbwBnAHMA
LAAgAGMAbABpAGMAawAgAHQAbwAgAHMAaABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgBd
ACAAPQAgACIAQwBvAG4AcwBvAGwAZQAgAGwAbwBnAHMALAAgAGMAbABpAGMAawAgAHQAbwAgAHMA
aABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMA
dAByAGkAbgBnAHMAWwAiAEMAbwBuAHMAbwBsAGUAIAB3AGEAcgBuAGkAbgBnAHMALAAgAGMAbABp
AGMAawAgAHQAbwAgAHMAaABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgBdACAAPQAgACIA
QwBvAG4AcwBvAGwAZQAgAHcAYQByAG4AaQBuAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBo
AG8AdwAgAHQAaABlACAAQwBvAG4AcwBvAGwAZQAiADsACisAbABvAGMAYQBsAGkAegBlAGQAUwB0
AHIAaQBuAGcAcwBbACIAQwBvAG4AdABlAG4AdAAiAF0AIAA9ACAAIgBDAG8AbgB0AGUAbgB0ACIA
OwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgB0AGkAbgB1AGUA
IABzAGMAcgBpAHAAdAAgAGUAeABlAGMAdQB0AGkAbwBuACAAKAAlAHMAIABvAHIAIAAlAHMAKQAi
AF0AIAA9ACAAIgBDAG8AbgB0AGkAbgB1AGUAIABzAGMAcgBpAHAAdAAgAGUAeABlAGMAdQB0AGkA
bwBuACAAKAAlAHMAIABvAHIAIAAlAHMAKQAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIA
aQBuAGcAcwBbACIAQwBvAG8AawBpAGUAcwAiAF0AIAA9ACAAIgBDAG8AbwBrAGkAZQBzACIAOwAK
IABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AcAB5ACAAUgBvAHcAIgBd
ACAAPQAgACIAQwBvAHAAeQAgAFIAbwB3ACIAOwAKSW5kZXg6IFVzZXJJbnRlcmZhY2UvU2lkZWJh
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNlL1NpZGViYXIuanMJKHJldmlzaW9uIDE1
MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvU2lkZWJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5TaWRlYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgc2lkZSwgc2lkZWJhclBhbmVs
cykgeworV2ViSW5zcGVjdG9yLlNpZGViYXIgPSBmdW5jdGlvbihlbGVtZW50LCBzaWRlLCBzaWRl
YmFyUGFuZWxzLCByb2xlLCBsYWJlbCkgewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKIAogICAgIGNvbnNvbGUuYXNzZXJ0KCFzaWRlIHx8IHNpZGUgPT09IFdlYkluc3BlY3Rv
ci5TaWRlYmFyLlNpZGVzLkxlZnQgfHwgc2lkZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lk
ZXMuUmlnaHQpOwpAQCAtMzQsNiArMzQsMTEgQEAKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlNpZGViYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwogICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9zaWRlKTsKIAorICAgIGlmIChyb2xl
KSAKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKKyAg
ICBpZiAobGFiZWwpCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxh
YmVsIiwgbGFiZWwpOworCiAgICAgdGhpcy5fcmVzaXplRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX3Jlc2l6ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuU2lkZWJhci5SZXNpemVFbGVtZW50U3R5bGVDbGFzc05hbWUpOwogICAgIHRo
aXMuX3Jlc2l6ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fcmVz
aXplck1vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CkluZGV4OiBVc2VySW50ZXJmYWNlL1Np
ZGViYXJQYW5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNlL1NpZGViYXJQYW5lbC5q
cwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9TaWRlYmFyUGFuZWwuanMJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwgaW1hZ2UsIGVs
ZW1lbnQpIHsKK1dlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVy
LCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwg
cm9sZSwgbGFiZWwpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAg
ICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKQEAgLTM1LDYgKzM1LDE3IEBACiAgICAg
dGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwuU3R5bGVDbGFzc05hbWUpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVu
dGlmaWVyKTsKKworICAgIGlmIChyb2xlKSAKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRy
aWJ1dGUoInJvbGUiLCByb2xlKTsKKyAgICBlbHNlIAorICAgICAgICB0aGlzLl9lbGVtZW50LnNl
dEF0dHJpYnV0ZSgicm9sZSIsICJncm91cCIpOworCisgICAgaWYgKGxhYmVsKQorICAgICAgICB0
aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKKyAgICBlbHNl
IAorICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGRpc3Bs
YXlOYW1lKTsKKwogfTsKIAogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFt
ZSA9ICJwYW5lbCI7CkluZGV4OiBVc2VySW50ZXJmYWNlL1Rvb2xiYXIuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVXNlckludGVyZmFjZS9Ub29sYmFyLmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBVc2VySW50
ZXJmYWNlL1Rvb2xiYXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAKIFdlYklu
c3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zKSB7CiAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuY2FsbCh0aGlzLCBlbGVtZW50LCBuYXZpZ2F0
aW9uSXRlbXMpOwogCisgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidG9v
bGJhciIpOworCiAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRp
c3BsYXlNb2RlLkljb25BbmRMYWJlbFZlcnRpY2FsOwogICAgIHRoaXMuc2l6ZU1vZGUgPSBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5TaXplTW9kZS5Ob3JtYWw7CiAKSW5kZXg6IFVzZXJJbnRlcmZhY2Uv
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVzZXJJbnRlcmZh
Y2UvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBV
c2VySW50ZXJmYWNlL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjksNyArMjksNyBAQAogCiAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbCA9IG51bGw7CiAK
LSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
OworICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIobnVsbCwgbnVsbCwgInRhYmxpc3QiKTsKICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZlbnQuTmF2aWdhdGlvbkl0
ZW1TZWxlY3RlZCwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7CiAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CiAKSW5k
ZXg6IFVzZXJJbnRlcmZhY2UvUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBVc2VySW50ZXJmYWNlL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMJKHJldmlzaW9u
IDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFdlYkluc3BlY3Rvci5SYWRp
b0J1dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcCwgaW1h
Z2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSB7Ci0gICAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdl
V2lkdGgsIGltYWdlSGVpZ2h0KTsKKyAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1h
Z2VIZWlnaHQsIG51bGwsICJ0YWIiKTsKIH07CiAKIFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5h
dmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gInJhZGlvIjsKQEAgLTQzLDEwICs0MywxMyBA
QAogCiAgICAgc2V0IHNlbGVjdGVkKGZsYWcpCiAgICAgewotICAgICAgICBpZiAoZmxhZykKKyAg
ICAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVDbGFz
c05hbWUpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLXNlbGVjdGVkIiwgInRydWUiKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRv
bk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhp
cy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAg
ICB9CiAgICAgfSwKIAogICAgIGdldCBhY3RpdmUoKQpAQCAtODUsMTUgKzg4LDE5IEBACiAKICAg
ICAgICAgdmFyIGlzU2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkOwogCi0gICAgICAgIGlmICghaXNT
ZWxlY3RlZCkKKyAgICAgICAgaWYgKCFpc1NlbGVjdGVkKSB7CiAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRB
dHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICB9CiAKICAgICAgICAg
dmFyIHNlbGVjdGVkV2lkdGggPSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7CiAgICAgICAgIGlm
IChzZWxlY3RlZFdpZHRoKQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLm1pbldpZHRo
ID0gc2VsZWN0ZWRXaWR0aCArICJweCI7CiAKLSAgICAgICAgaWYgKCFpc1NlbGVjdGVkKQorICAg
ICAgICBpZiAoIWlzU2VsZWN0ZWQpIHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVk
U3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgi
YXJpYS1zZWxlY3RlZCIsICJmYWxzZSIpOworICAgICAgICB9CiAgICAgfSwKIAogICAgIC8vIFBy
aXZhdGUKSW5kZXg6IFVzZXJJbnRlcmZhY2UvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVXNlckludGVyZmFjZS9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwkocmV2aXNpb24g
MTUyMDg0KQorKysgVXNlckludGVyZmFjZS9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9u
KGlkZW50aWZpZXIsIHRvb2xUaXBPckxhYmVsLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWln
aHQsIHN1cHByZXNzRW1ib3NzKSB7CitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwT3JMYWJlbCwgaW1hZ2UsIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywgcm9sZSwgbGFiZWwpIHsKICAgICBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyKTsKIAogICAgIGNvbnNv
bGUuYXNzZXJ0KGlkZW50aWZpZXIpOwpAQCAtMzIsNiArMzIsMTQgQEAKICAgICB0aGlzLnRvb2xU
aXAgPSB0b29sVGlwT3JMYWJlbDsKIAogICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9tb3VzZUNsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgCisgICAgaWYg
KHJvbGUpIAorICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUp
OworICAgIGVsc2UgCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwg
ImJ1dHRvbiIpOworICAgIAorICAgIGlmIChsYWJlbCkgCisgICAgICAgIHRoaXMuX2VsZW1lbnQu
c2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgdGhpcy5faW1hZ2VXaWR0
aCA9IGltYWdlV2lkdGggfHwgMTY7CiAgICAgdGhpcy5faW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdo
dCB8fCAxNjsKSW5kZXg6IFVzZXJJbnRlcmZhY2UvTWFpbi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2Vy
SW50ZXJmYWNlL01haW4uanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvTWFp
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCwxMCBAQAogICAgIHRoaXMudG9vbGJh
ciA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG9v
bGJhciIpKTsKICAgICB0aGlzLnRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VG9vbGJhci5FdmVudC5EaXNwbGF5TW9kZURpZENoYW5nZSwgdGhpcy5fdG9vbGJhckRpc3BsYXlN
b2RlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLnRvb2xiYXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5TaXplTW9kZURpZENoYW5nZSwgdGhpcy5fdG9vbGJh
clNpemVNb2RlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAKKyAgICB2YXIgY29udGVudEVsZW1lbnQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgIGNvbnRlbnRFbGVtZW50
LnNldEF0dHJpYnV0ZSgicm9sZSIsICJtYWluIik7CisgICAgY29udGVudEVsZW1lbnQuc2V0QXR0
cmlidXRlKCJhcmlhLWxhYmVsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IikpOwog
CiAgICAgdGhpcy5jb250ZW50QnJvd3NlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQtYnJvd3NlciIpLCB0aGlzKTsKICAg
ICB0aGlzLmNvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyLkV2ZW50LkN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMu
X2NvbnRlbnRCcm93c2VyUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTE2
NSw3ICsxNjksNyBAQAogICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5XaWR0aERpZENoYW5nZSwgdGhpcy5fc2lkZWJh
cldpZHRoRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0
ZWQsIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcyk7CiAKLSAgICB0
aGlzLnJpZ2h0U2lkZWJhciA9IHRoaXMuZGV0YWlsc1NpZGViYXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlNpZGViYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRldGFpbHMtc2lkZWJhciIpLCBXZWJJ
bnNwZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7CisgICAgdGhpcy5yaWdodFNpZGViYXIgPSB0
aGlzLmRldGFpbHNTaWRlYmFyID0gbmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJkZXRhaWxzLXNpZGViYXIiKSwgV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lk
ZXMuUmlnaHQsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGV0YWlscyIpKTsKICAg
ICB0aGlzLmRldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGVi
YXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3NpZGViYXJDb2xsYXBzZWRT
dGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgdGhpcy5kZXRhaWxzU2lkZWJhci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LldpZHRoRGlkQ2hhbmdlLCB0aGlzLl9z
aWRlYmFyV2lkdGhEaWRDaGFuZ2UsIHRoaXMpOwogICAgIHRoaXMuZGV0YWlsc1NpZGViYXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5TaWRlYmFyUGFuZWxTZWxl
Y3RlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlzKTsKSW5kZXg6IFVz
ZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNl
L05hdmlnYXRpb25CYXIuanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvTmF2
aWdhdGlvbkJhci5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDE3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpIHsKK1dlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zLCByb2xl
LCBsYWJlbCkgewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xh
c3NOYW1lIHx8IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLlN0eWxlQ2xhc3NOYW1lKTsKICAg
ICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAKKyAgICBpZiAocm9sZSkKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKKyAgICBpZiAobGFi
ZWwpCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFi
ZWwpOwogCiAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMu
X2ZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKSW5kZXg6IFVzZXJJ
bnRlcmZhY2UvTmF2aWdhdGlvbkl0ZW0uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVXNlckludGVyZmFjZS9O
YXZpZ2F0aW9uSXRlbS5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9OYXZp
Z2F0aW9uSXRlbS5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDE3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllcikgeworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25J
dGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcm9sZSwgbGFiZWwpIHsKICAgICBXZWJJbnNwZWN0
b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmll
ciB8fCBudWxsOwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgIAorICAgIGlmIChyb2xlKSAKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRB
dHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKKyAgICBpZiAobGFiZWwpCisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgdmFyIGNsYXNz
TmFtZXMgPSB0aGlzLl9jbGFzc05hbWVzOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NO
YW1lcy5sZW5ndGg7ICsraSkKSW5kZXg6IFVzZXJJbnRlcmZhY2UvRGFzaGJvYXJkTWFuYWdlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNlL0Rhc2hib2FyZE1hbmFnZXIuanMJKHJldmlz
aW9uIDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvRGFzaGJvYXJkTWFuYWdlci5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogV2ViSW5zcGVjdG9yLkRhc2hib2FyZE1hbmFnZXIg
PSBmdW5jdGlvbigpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKLSAg
ICB0aGlzLnRvb2xiYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFz
aGJvYXJkIik7CisgICAgdGhpcy50b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkl0ZW0oImRhc2hib2FyZCIsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0
aXZpdHkgVmlld2VyIikpOwogICAgIHRoaXMuX3ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZFZpZXcodGhpcy50b29sYmFySXRlbS5lbGVtZW50KTsKIAogICAgIHRoaXMuX3dhaXRpbmdG
b3JGaXJzdE1haW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUgPSB0cnVlOwo=
</data>
<flag name="review"
          id="227184"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="227189"
          type_id="3"
          status="-"
          setter="jcraig"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205622</attachid>
            <date>2013-06-27 12:02:47 -0700</date>
            <delta_ts>2013-06-27 13:27:51 -0700</delta_ts>
            <desc>patch with review feedback</desc>
            <filename>118104.patch</filename>
            <type>text/plain</type>
            <size>15313</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">SW5kZXg6IExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMJKHJldmlz
aW9uIDE1MjA4NCkKKysrIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogAGwAbwBjAGEAbABpAHoAZQBkAFMA
dAByAGkAbgBnAHMAWwAiACgAYQBuAG8AbgB5AG0AbwB1AHMAIABmAHUAbgBjAHQAaQBvAG4AKQAi
AF0AIAA9ACAAIgAoAGEAbgBvAG4AeQBtAG8AdQBzACAAZgB1AG4AYwB0AGkAbwBuACkAIgA7AAog
AGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiADEAIABtAGEAdABjAGgAIgBdACAA
PQAgACIAMQAgAG0AYQB0AGMAaAAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcA
cwBbACIAOQA5ADkAKwAiAF0AIAA9ACAAIgA5ADkAOQArACIAOwAKKwBsAG8AYwBhAGwAaQB6AGUA
ZABTAHQAcgBpAG4AZwBzAFsAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUAcgAiAF0AIAA9
ACAAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUAcgAiADsACiAAbABvAGMAYQBsAGkAegBl
AGQAUwB0AHIAaQBuAGcAcwBbACIAQQBkAGQAIABBAHQAdAByAGkAYgB1AHQAZQAiAF0AIAA9ACAA
IgBBAGQAZAAgAEEAdAB0AHIAaQBiAHUAdABlACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQA
cgBpAG4AZwBzAFsAIgBBAGQAZAAgAE4AZQB3ACIAXQAgAD0AIAAiAEEAZABkACAATgBlAHcAIgA7
AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiAEEAbABsACIAXQAgAD0AIAAi
AEEAbABsACIAOwAKQEAgLTgyLDYgKzgzLDcgQEAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBp
AG4AZwBzAFsAIgBDAG8AbgBzAG8AbABlACAAZQByAHIAbwByAHMALAAgAGMAbABpAGMAawAgAHQA
bwAgAHMAaABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgBdACAAPQAgACIAQwBvAG4AcwBv
AGwAZQAgAGUAcgByAG8AcgBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3ACAAdABoAGUA
IABDAG8AbgBzAG8AbABlACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsA
IgBDAG8AbgBzAG8AbABlACAAbABvAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAg
AHQAaABlACAAQwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABlACAAbABvAGcA
cwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAgAHQAaABlACAAQwBvAG4AcwBvAGwAZQAi
ADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQwBvAG4AcwBvAGwAZQAg
AHcAYQByAG4AaQBuAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAgAHQAaABlACAA
QwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABlACAAdwBhAHIAbgBpAG4AZwBz
ACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3ACAAdABoAGUAIABDAG8AbgBzAG8AbABlACIA
OwAKKwBsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgB0AGUAbgB0ACIA
XQAgAD0AIAAiAEMAbwBuAHQAZQBuAHQAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkA
bgBnAHMAWwAiAEMAbwBuAHQAaQBuAHUAZQAgAHMAYwByAGkAcAB0ACAAZQB4AGUAYwB1AHQAaQBv
AG4AIAAoACUAcwAgAG8AcgAgACUAcwApACIAXQAgAD0AIAAiAEMAbwBuAHQAaQBuAHUAZQAgAHMA
YwByAGkAcAB0ACAAZQB4AGUAYwB1AHQAaQBvAG4AIAAoACUAcwAgAG8AcgAgACUAcwApACIAOwAK
IABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbwBrAGkAZQBzACIAXQAg
AD0AIAAiAEMAbwBvAGsAaQBlAHMAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBn
AHMAWwAiAEMAbwBwAHkAIABSAG8AdwAiAF0AIAA9ACAAIgBDAG8AcAB5ACAAUgBvAHcAIgA7AApJ
bmRleDogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uSXRlbS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2Vy
SW50ZXJmYWNlL05hdmlnYXRpb25JdGVtLmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBVc2VySW50
ZXJmYWNlL05hdmlnYXRpb25JdGVtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyKSB7CitXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCByb2xlLCBsYWJlbCkgewogICAg
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2lkZW50aWZpZXIg
PSBpZGVudGlmaWVyIHx8IG51bGw7CiAKICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgCisgICAgaWYgKHJvbGUpIAorICAgICAgICB0aGlzLl9l
bGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUpOworICAgIGlmIChsYWJlbCkKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CiAKICAg
ICB2YXIgY2xhc3NOYW1lcyA9IHRoaXMuX2NsYXNzTmFtZXM7CiAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjbGFzc05hbWVzLmxlbmd0aDsgKytpKQpJbmRleDogVXNlckludGVyZmFjZS9DU1NTdHls
ZURldGFpbHNTaWRlYmFyUGFuZWwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVXNlckludGVyZmFjZS9DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFVzZXJJbnRl
cmZhY2UvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0y
OSw3ICsyOSw3IEBACiAKICAgICB0aGlzLl9zZWxlY3RlZFBhbmVsID0gbnVsbDsKIAotICAgIHRo
aXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7CisgICAg
dGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcihudWxs
LCBudWxsLCAidGFibGlzdCIpOwogICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVudC5OYXZpZ2F0aW9uSXRlbVNlbGVj
dGVkLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLCB0aGlzKTsKICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIApJbmRleDogVXNl
ckludGVyZmFjZS9TaWRlYmFyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVzZXJJbnRlcmZhY2UvU2lkZWJh
ci5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9TaWRlYmFyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNpZGViYXIgPSBmdW5jdGlvbihlbGVtZW50LCBz
aWRlLCBzaWRlYmFyUGFuZWxzKSB7CitXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0aW9uKGVs
ZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7CiAgICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQoIXNpZGUgfHwgc2lk
ZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuTGVmdCB8fCBzaWRlID09PSBXZWJJbnNw
ZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7CkBAIC0zNCw2ICszNCwxMCBAQAogICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuX3NpZGUp
OwogCisgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlIHx8ICJncm91
cCIpOworICAgIGlmIChsYWJlbCkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImFyaWEtbGFiZWwiLCBsYWJlbCk7CisKICAgICB0aGlzLl9yZXNpemVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fcmVzaXplRWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyLlJlc2l6ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSk7
CiAgICAgdGhpcy5fcmVzaXplRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9yZXNpemVyTW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKSW5kZXg6IFVzZXJJbnRl
cmZhY2UvVG9vbGJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNlL1Rvb2xiYXIuanMJ
KHJldmlzaW9uIDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvVG9vbGJhci5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVu
Y3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIuY2FsbCh0aGlzLCBlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpOworICAgIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLmNhbGwodGhpcywgZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1z
LCAidG9vbGJhciIpOwogCiAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbFZlcnRpY2FsOwogICAgIHRoaXMuc2l6ZU1vZGUg
PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXplTW9kZS5Ob3JtYWw7CkluZGV4OiBVc2VySW50ZXJm
YWNlL1NpZGViYXJQYW5lbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBVc2VySW50ZXJmYWNlL1NpZGViYXJQ
YW5lbC5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9TaWRlYmFyUGFuZWwu
anMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsID0gZnVuY3Rp
b24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwgaW1h
Z2UsIGVsZW1lbnQpIHsKK1dlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVu
dGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxl
bWVudCwgcm9sZSwgbGFiZWwpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
CiAKICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKQEAgLTM1LDYgKzM1LDEwIEBA
CiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChpZGVudGlmaWVyKTsKKworICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwg
cm9sZSB8fCAiZ3JvdXAiKTsKKyAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1s
YWJlbCIsIGxhYmVsIHx8IGRpc3BsYXlOYW1lKTsKKwogfTsKIAogV2ViSW5zcGVjdG9yLlNpZGVi
YXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJwYW5lbCI7CkluZGV4OiBVc2VySW50ZXJmYWNlL0J1
dHRvbk5hdmlnYXRpb25JdGVtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVzZXJJbnRlcmZhY2UvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uanMJKHJldmlzaW9uIDE1MjA4NCkKKysrIFVzZXJJbnRlcmZhY2UvQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uanMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwT3JMYWJlbCwg
aW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcykgeworV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRp
cE9yTGFiZWwsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3Ms
IHJvbGUsIGxhYmVsKSB7CiAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLmNhbGwodGhp
cywgaWRlbnRpZmllcik7CiAKICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKQEAgLTMy
LDYgKzMyLDExIEBACiAgICAgdGhpcy50b29sVGlwID0gdG9vbFRpcE9yTGFiZWw7CiAKICAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VDbGlja2Vk
LmJpbmQodGhpcykpOworICAgIAorICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xl
Iiwgcm9sZSB8fCAiYnV0dG9uIik7CisgICAgCisgICAgaWYgKGxhYmVsKSAKKyAgICAgICAgdGhp
cy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CiAKICAgICB0aGlz
Ll9pbWFnZVdpZHRoID0gaW1hZ2VXaWR0aCB8fCAxNjsKICAgICB0aGlzLl9pbWFnZUhlaWdodCA9
IGltYWdlSGVpZ2h0IHx8IDE2OwpJbmRleDogVXNlckludGVyZmFjZS9NYWluLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFVzZXJJbnRlcmZhY2UvTWFpbi5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlcklu
dGVyZmFjZS9NYWluLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNiArMTQ0LDEwIEBACiAgICAg
dGhpcy50b29sYmFyID0gbmV3IFdlYkluc3BlY3Rvci5Ub29sYmFyKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0b29sYmFyIikpOwogICAgIHRoaXMudG9vbGJhci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Ub29sYmFyLkV2ZW50LkRpc3BsYXlNb2RlRGlkQ2hhbmdlLCB0aGlzLl90b29s
YmFyRGlzcGxheU1vZGVEaWRDaGFuZ2UsIHRoaXMpOwogICAgIHRoaXMudG9vbGJhci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ub29sYmFyLkV2ZW50LlNpemVNb2RlRGlkQ2hhbmdlLCB0
aGlzLl90b29sYmFyU2l6ZU1vZGVEaWRDaGFuZ2UsIHRoaXMpOworICAgIAorICAgIHZhciBjb250
ZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgY29u
dGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgIm1haW4iKTsKKyAgICBjb250ZW50RWxl
bWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bnRlbnQiKSk7CiAKICAgICB0aGlzLmNvbnRlbnRCcm93c2VyID0gbmV3IFdlYkluc3BlY3Rvci5D
b250ZW50QnJvd3Nlcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudC1icm93c2VyIiks
IHRoaXMpOwogICAgIHRoaXMuY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENo
YW5nZSwgdGhpcy5fY29udGVudEJyb3dzZXJSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRo
aXMpOwpAQCAtMTY1LDcgKzE2OSw3IEBACiAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LldpZHRoRGlkQ2hhbmdlLCB0
aGlzLl9zaWRlYmFyV2lkdGhEaWRDaGFuZ2UsIHRoaXMpOwogICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5TaWRlYmFy
UGFuZWxTZWxlY3RlZCwgdGhpcy5fbmF2aWdhdGlvblNpZGViYXJQYW5lbFNlbGVjdGVkLCB0aGlz
KTsKIAotICAgIHRoaXMucmlnaHRTaWRlYmFyID0gdGhpcy5kZXRhaWxzU2lkZWJhciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2lkZWJhcihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGV0YWlscy1zaWRl
YmFyIiksIFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzLlJpZ2h0KTsKKyAgICB0aGlzLnJpZ2h0
U2lkZWJhciA9IHRoaXMuZGV0YWlsc1NpZGViYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXIo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRldGFpbHMtc2lkZWJhciIpLCBXZWJJbnNwZWN0b3Iu
U2lkZWJhci5TaWRlcy5SaWdodCwgImdyb3VwIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZXRh
aWxzIikpOwogICAgIHRoaXMuZGV0YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuU2lkZWJhci5FdmVudC5Db2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fc2lkZWJh
ckNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLmRldGFpbHNTaWRlYmFy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuV2lkdGhEaWRDaGFu
Z2UsIHRoaXMuX3NpZGViYXJXaWR0aERpZENoYW5nZSwgdGhpcyk7CiAgICAgdGhpcy5kZXRhaWxz
U2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50LlNpZGVi
YXJQYW5lbFNlbGVjdGVkLCB0aGlzLl9kZXRhaWxzU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMp
OwpJbmRleDogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uQmFyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFVz
ZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qcwkocmV2aXNpb24gMTUyMDg0KQorKysgVXNlcklu
dGVyZmFjZS9OYXZpZ2F0aW9uQmFyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMiArMjMsMTcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykgewor
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0aW9u
SXRlbXMsIHJvbGUsIGxhYmVsKSB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogCiAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY29uc3RydWN0
b3IuU3R5bGVDbGFzc05hbWUgfHwgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuU3R5bGVDbGFz
c05hbWUpOwogICAgIHRoaXMuX2VsZW1lbnQudGFiSW5kZXggPSAwOworICAgIAorICAgIGlmIChy
b2xlKQorICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUpOwor
ICAgIGlmIChsYWJlbCkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEt
bGFiZWwiLCBsYWJlbCk7CiAKICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZv
Y3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgIHRoaXMuX2VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2JsdXIuYmluZCh0aGlzKSwgZmFsc2UpOwpJ
bmRleDogVXNlckludGVyZmFjZS9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFVzZXJJbnRlcmZhY2UvUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwkocmV2aXNp
b24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwLCBp
bWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQpOworICAgIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBp
bWFnZUhlaWdodCwgbnVsbCwgInRhYiIpOwogfTsKIAogV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAicmFkaW8iOwpAQCAtNDMsMTAgKzQzLDEz
IEBACiAKICAgICBzZXQgc2VsZWN0ZWQoZmxhZykKICAgICB7Ci0gICAgICAgIGlmIChmbGFnKQor
ICAgICAgICBpZiAoZmxhZykgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNs
YXNzTmFtZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRy
aWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0
aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CisgICAg
ICAgIH0KICAgICB9LAogCiAgICAgZ2V0IGFjdGl2ZSgpCkBAIC04NSwxNSArODgsMTkgQEAKIAog
ICAgICAgICB2YXIgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7CiAKLSAgICAgICAgaWYgKCFp
c1NlbGVjdGVkKQorICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpIHsKICAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25J
dGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNl
dEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7CisgICAgICAgIH0KIAogICAgICAg
ICB2YXIgc2VsZWN0ZWRXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aDsKICAgICAgICAg
aWYgKHNlbGVjdGVkV2lkdGgpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUubWluV2lk
dGggPSBzZWxlY3RlZFdpZHRoICsgInB4IjsKIAotICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpCisg
ICAgICAgIGlmICghaXNTZWxlY3RlZCkgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0
ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRl
KCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgLy8g
UHJpdmF0ZQpJbmRleDogVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwkocmV2
aXNpb24gMTUyMDg0KQorKysgVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRj
dXRLZXksIGF1dG9QcnVuZU9sZFRvcExldmVsUmVzb3VyY2VUcmVlRWxlbWVudHMsIGF1dG9IaWRl
VG9vbGJhckl0ZW1XaGVuRW1wdHksIHdhbnRzVG9wT3ZlcmZsb3dTaGFkb3csIGVsZW1lbnQpIHsK
K1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmll
ciwgZGlzcGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBhdXRvUHJ1bmVPbGRU
b3BMZXZlbFJlc291cmNlVHJlZUVsZW1lbnRzLCBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5
LCB3YW50c1RvcE92ZXJmbG93U2hhZG93LCBlbGVtZW50LCByb2xlLCBsYWJlbCkgewogICAgIGlm
IChrZXlib2FyZFNob3J0Y3V0S2V5KQogICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0ID0g
bmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIGtleWJvYXJkU2hvcnRjdXRLZXksIHRoaXMudG9nZ2xl
LmJpbmQodGhpcykpOwogCkBAIC0zNSw3ICszNSw3IEBACiAgICAgICAgIHZhciBoaWRlVG9vbFRp
cCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFy
IikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKICAgICB9CiAKLSAgICBXZWJJbnNwZWN0b3IuU2lkZWJh
clBhbmVsLmNhbGwodGhpcywgaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBo
aWRlVG9vbFRpcCwgaW1hZ2UsIGVsZW1lbnQpOworICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVU
b29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwgfHwgZGlzcGxheU5hbWUpOwogCiAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRl
YmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwogCkluZGV4OiBVc2VySW50ZXJmYWNlL0Rhc2hib2Fy
ZE1hbmFnZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVXNlckludGVyZmFjZS9EYXNoYm9hcmRNYW5hZ2Vy
LmpzCShyZXZpc2lvbiAxNTIwODQpCisrKyBVc2VySW50ZXJmYWNlL0Rhc2hib2FyZE1hbmFnZXIu
anMJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDcgQEAKIFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRNYW5hZ2VyID0gZnVuY3Rpb24oKSB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwogCi0gICAgdGhpcy50b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0oImRhc2hib2FyZCIpOworICAgIHRoaXMudG9vbGJhckl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25JdGVtKCJkYXNoYm9hcmQiLCAiZ3JvdXAiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkFjdGl2aXR5IFZpZXdlciIpKTsKICAgICB0aGlzLl92aWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRWaWV3KHRoaXMudG9vbGJhckl0ZW0uZWxlbWVudCk7CiAKICAgICB0aGlz
Ll93YWl0aW5nRm9yRmlyc3RNYWluUmVzb3VyY2VUb1N0YXJ0VHJhY2tpbmdTaXplID0gdHJ1ZTsK
SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDE1MjEx
OSkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA2
LTI3ICBKYW1lcyBDcmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBWDogQWRkIGNvbnRhaW5lciBBUklBIHJvbGVzICh0b29sYmFyLCBtYWluLCBs
YWJlbGVkIHJlZ2lvbnMsIGV0Yy4pIAorICAgICAgICBzbyB0aGUgbGF5b3V0IGlzIG1vcmUgZGlz
Y292ZXJhYmxlIHRvIHNjcmVlbiByZWFkZXIgdXNlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEwNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgdGhlIGJhc2ljIGxheW91dCAodG9vbGJhciwg
c2lkZWJhcnMsIG1haW4pIG9mIHRoZSBXZWIgSW5zcGVjdG9yIHVuZGVyc3RhbmRhYmxlCisgICAg
ICAgIGFuZCBuYXZpZ2FibGUgd2l0aCBWb2ljZU92ZXIuCisKKyAgICAgICAgKiBMb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Rhc2hi
b2FyZE1hbmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL05hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1JhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9TaWRlYmFyLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVG9vbGJhci5qczoKKwogMjAxMy0wNi0yNyAgTWF0dGhldyBIb2xkZW4gIDxqZnRob2xk
ZW5AeWFob28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERpc3BsYXkgY29sb3IgcGlj
a2VyIGluIHBvcG92ZXIgb24gY29sb3Igc3dhdGNoIGNsaWNrCg==
</data>
<flag name="review"
          id="227193"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="227192"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205627</attachid>
            <date>2013-06-27 13:27:51 -0700</date>
            <delta_ts>2013-06-27 17:17:58 -0700</delta_ts>
            <desc>patch with corrected paths</desc>
            <filename>118104.patch</filename>
            <type>text/plain</type>
            <size>16171</size>
            <attacher name="James Craig">jcraig</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwkocmV2aXNpb24gMTUyMTIxKQor
KysgU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogAGwAbwBjAGEAbABp
AHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiACgAYQBuAG8AbgB5AG0AbwB1AHMAIABmAHUAbgBjAHQA
aQBvAG4AKQAiAF0AIAA9ACAAIgAoAGEAbgBvAG4AeQBtAG8AdQBzACAAZgB1AG4AYwB0AGkAbwBu
ACkAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiADEAIABtAGEAdABj
AGgAIgBdACAAPQAgACIAMQAgAG0AYQB0AGMAaAAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0
AHIAaQBuAGcAcwBbACIAOQA5ADkAKwAiAF0AIAA9ACAAIgA5ADkAOQArACIAOwAKKwBsAG8AYwBh
AGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUA
cgAiAF0AIAA9ACAAIgBBAGMAdABpAHYAaQB0AHkAIABWAGkAZQB3AGUAcgAiADsACiAAbABvAGMA
YQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQQBkAGQAIABBAHQAdAByAGkAYgB1AHQAZQAi
AF0AIAA9ACAAIgBBAGQAZAAgAEEAdAB0AHIAaQBiAHUAdABlACIAOwAKIABsAG8AYwBhAGwAaQB6
AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBBAGQAZAAgAE4AZQB3ACIAXQAgAD0AIAAiAEEAZABkACAA
TgBlAHcAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMAdAByAGkAbgBnAHMAWwAiAEEAbABsACIA
XQAgAD0AIAAiAEEAbABsACIAOwAKQEAgLTgyLDYgKzgzLDcgQEAKIABsAG8AYwBhAGwAaQB6AGUA
ZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgBzAG8AbABlACAAZQByAHIAbwByAHMALAAgAGMAbABp
AGMAawAgAHQAbwAgAHMAaABvAHcAIAB0AGgAZQAgAEMAbwBuAHMAbwBsAGUAIgBdACAAPQAgACIA
QwBvAG4AcwBvAGwAZQAgAGUAcgByAG8AcgBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3
ACAAdABoAGUAIABDAG8AbgBzAG8AbABlACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBp
AG4AZwBzAFsAIgBDAG8AbgBzAG8AbABlACAAbABvAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAA
cwBoAG8AdwAgAHQAaABlACAAQwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABl
ACAAbABvAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAgAHQAaABlACAAQwBvAG4A
cwBvAGwAZQAiADsACiAAbABvAGMAYQBsAGkAegBlAGQAUwB0AHIAaQBuAGcAcwBbACIAQwBvAG4A
cwBvAGwAZQAgAHcAYQByAG4AaQBuAGcAcwAsACAAYwBsAGkAYwBrACAAdABvACAAcwBoAG8AdwAg
AHQAaABlACAAQwBvAG4AcwBvAGwAZQAiAF0AIAA9ACAAIgBDAG8AbgBzAG8AbABlACAAdwBhAHIA
bgBpAG4AZwBzACwAIABjAGwAaQBjAGsAIAB0AG8AIABzAGgAbwB3ACAAdABoAGUAIABDAG8AbgBz
AG8AbABlACIAOwAKKwBsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbgB0
AGUAbgB0ACIAXQAgAD0AIAAiAEMAbwBuAHQAZQBuAHQAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBk
AFMAdAByAGkAbgBnAHMAWwAiAEMAbwBuAHQAaQBuAHUAZQAgAHMAYwByAGkAcAB0ACAAZQB4AGUA
YwB1AHQAaQBvAG4AIAAoACUAcwAgAG8AcgAgACUAcwApACIAXQAgAD0AIAAiAEMAbwBuAHQAaQBu
AHUAZQAgAHMAYwByAGkAcAB0ACAAZQB4AGUAYwB1AHQAaQBvAG4AIAAoACUAcwAgAG8AcgAgACUA
cwApACIAOwAKIABsAG8AYwBhAGwAaQB6AGUAZABTAHQAcgBpAG4AZwBzAFsAIgBDAG8AbwBrAGkA
ZQBzACIAXQAgAD0AIAAiAEMAbwBvAGsAaQBlAHMAIgA7AAogAGwAbwBjAGEAbABpAHoAZQBkAFMA
dAByAGkAbgBnAHMAWwAiAEMAbwBwAHkAIABSAG8AdwAiAF0AIAA9ACAAIgBDAG8AcAB5ACAAUgBv
AHcAIgA7AApJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCShyZXZpc2lvbiAx
NTIxMjEpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9SYWRpb0J1dHRv
bk5hdmlnYXRpb25JdGVtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8K
IAogV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVu
dGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHsKLSAgICBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCB0
b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOworICAgIFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIHRvb2xUaXAsIGlt
YWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgbnVsbCwgInRhYiIpOwogfTsKIAogV2ViSW5z
cGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAicmFkaW8i
OwpAQCAtNDMsMTAgKzQzLDEzIEBACiAKICAgICBzZXQgc2VsZWN0ZWQoZmxhZykKICAgICB7Ci0g
ICAgICAgIGlmIChmbGFnKQorICAgICAgICBpZiAoZmxhZykgewogICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAidHJ1ZSIpOworICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVk
IiwgImZhbHNlIik7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgZ2V0IGFjdGl2ZSgpCkBAIC04
NSwxNSArODgsMTkgQEAKIAogICAgICAgICB2YXIgaXNTZWxlY3RlZCA9IHRoaXMuc2VsZWN0ZWQ7
CiAKLSAgICAgICAgaWYgKCFpc1NlbGVjdGVkKQorICAgICAgICBpZiAoIWlzU2VsZWN0ZWQpIHsK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SYWRp
b0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOworICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsICJ0cnVlIik7Cisg
ICAgICAgIH0KIAogICAgICAgICB2YXIgc2VsZWN0ZWRXaWR0aCA9IHRoaXMuZWxlbWVudC5vZmZz
ZXRXaWR0aDsKICAgICAgICAgaWYgKHNlbGVjdGVkV2lkdGgpCiAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc3R5bGUubWluV2lkdGggPSBzZWxlY3RlZFdpZHRoICsgInB4IjsKIAotICAgICAgICBp
ZiAoIWlzU2VsZWN0ZWQpCisgICAgICAgIGlmICghaXNTZWxlY3RlZCkgewogICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CisgICAgICAgIH0K
ICAgICB9LAogCiAgICAgLy8gUHJpdmF0ZQpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMJKHJl
dmlzaW9uIDE1MjEyMSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0J1
dHRvbk5hdmlnYXRpb25JdGVtLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcE9yTGFiZWws
IGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MpIHsKK1dlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRvb2xU
aXBPckxhYmVsLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3Nz
LCByb2xlLCBsYWJlbCkgewogICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRo
aXMsIGlkZW50aWZpZXIpOwogCiAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRpZmllcik7CkBAIC0z
Miw2ICszMiwxMSBAQAogICAgIHRoaXMudG9vbFRpcCA9IHRvb2xUaXBPckxhYmVsOwogCiAgICAg
dGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlQ2xpY2tl
ZC5iaW5kKHRoaXMpKTsKKyAgICAKKyAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9s
ZSIsIHJvbGUgfHwgImJ1dHRvbiIpOworICAgIAorICAgIGlmIChsYWJlbCkgCisgICAgICAgIHRo
aXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgdGhp
cy5faW1hZ2VXaWR0aCA9IGltYWdlV2lkdGggfHwgMTY7CiAgICAgdGhpcy5faW1hZ2VIZWlnaHQg
PSBpbWFnZUhlaWdodCB8fCAxNjsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5qcwkocmV2aXNpb24gMTUyMTIxKQorKysgU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDYgKzE0NCwx
MCBAQAogICAgIHRoaXMudG9vbGJhciA9IG5ldyBXZWJJbnNwZWN0b3IuVG9vbGJhcihkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidG9vbGJhciIpKTsKICAgICB0aGlzLnRvb2xiYXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5EaXNwbGF5TW9kZURpZENoYW5nZSwg
dGhpcy5fdG9vbGJhckRpc3BsYXlNb2RlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLnRvb2xi
YXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5TaXplTW9kZURp
ZENoYW5nZSwgdGhpcy5fdG9vbGJhclNpemVNb2RlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAKKyAg
ICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
OworICAgIGNvbnRlbnRFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJtYWluIik7CisgICAg
Y29udGVudEVsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb250ZW50IikpOwogCiAgICAgdGhpcy5jb250ZW50QnJvd3NlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQt
YnJvd3NlciIpLCB0aGlzKTsKICAgICB0aGlzLmNvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93c2VyUmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlLCB0aGlzKTsKQEAgLTE2NSw3ICsxNjksNyBAQAogICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5XaWR0aERp
ZENoYW5nZSwgdGhpcy5fc2lkZWJhcldpZHRoRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB0aGlzLm5h
dmlnYXRpb25TaWRlYmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZl
bnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQsIHRoaXMuX25hdmlnYXRpb25TaWRlYmFyUGFuZWxTZWxl
Y3RlZCwgdGhpcyk7CiAKLSAgICB0aGlzLnJpZ2h0U2lkZWJhciA9IHRoaXMuZGV0YWlsc1NpZGVi
YXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXIoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRl
dGFpbHMtc2lkZWJhciIpLCBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7CisgICAg
dGhpcy5yaWdodFNpZGViYXIgPSB0aGlzLmRldGFpbHNTaWRlYmFyID0gbmV3IFdlYkluc3BlY3Rv
ci5TaWRlYmFyKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXRhaWxzLXNpZGViYXIiKSwgV2Vi
SW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuUmlnaHQsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGV0YWlscyIpKTsKICAgICB0aGlzLmRldGFpbHNTaWRlYmFyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMuX3NpZGViYXJDb2xsYXBzZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgdGhpcy5kZXRh
aWxzU2lkZWJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TaWRlYmFyLkV2ZW50Lldp
ZHRoRGlkQ2hhbmdlLCB0aGlzLl9zaWRlYmFyV2lkdGhEaWRDaGFuZ2UsIHRoaXMpOwogICAgIHRo
aXMuZGV0YWlsc1NpZGViYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2lkZWJhci5F
dmVudC5TaWRlYmFyUGFuZWxTZWxlY3RlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJQYW5lbFNlbGVj
dGVkLCB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05h
dmlnYXRpb25CYXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qcwkocmV2aXNpb24gMTUyMTIxKQorKysgU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qcwkod29ya2luZyBjb3B5
KQpAQCAtMjMsMTIgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBmdW5jdGlvbihlbGVtZW50LCBu
YXZpZ2F0aW9uSXRlbXMpIHsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyID0gZnVuY3Rpb24o
ZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zLCByb2xlLCBsYWJlbCkgewogICAgIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NOYW1lIHx8IFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uQmFyLlN0eWxlQ2xhc3NOYW1lKTsKICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0g
MDsKKyAgICAKKyAgICBpZiAocm9sZSkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCByb2xlKTsKKyAgICBpZiAobGFiZWwpCisgICAgICAgIHRoaXMuX2VsZW1lbnQu
c2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgdGhpcy5fZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsK
ICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJp
bmQodGhpcyksIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL05hdmlnYXRpb25JdGVtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25JdGVtLmpzCShyZXZpc2lvbiAxNTIxMjEpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uSXRlbS5qcwkod29y
a2luZyBjb3B5KQpAQCAtMjMsMTIgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24o
aWRlbnRpZmllcikgeworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgcm9sZSwgbGFiZWwpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CiAKICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllciB8fCBudWxsOwogCiAgICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgIAorICAg
IGlmIChyb2xlKSAKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCBy
b2xlKTsKKyAgICBpZiAobGFiZWwpCisgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRl
KCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCiAgICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFz
c05hbWVzOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7ICsraSkK
SW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Rhc2hib2FyZE1hbmFn
ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
RGFzaGJvYXJkTWFuYWdlci5qcwkocmV2aXNpb24gMTUyMTIxKQorKysgU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvRGFzaGJvYXJkTWFuYWdlci5qcwkod29ya2luZyBjb3B5KQpA
QCAtMjYsNyArMjYsNyBAQAogV2ViSW5zcGVjdG9yLkRhc2hib2FyZE1hbmFnZXIgPSBmdW5jdGlv
bigpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLnRv
b2xiYXJJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkIik7
CisgICAgdGhpcy50b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0o
ImRhc2hib2FyZCIsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmll
d2VyIikpOwogICAgIHRoaXMuX3ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXco
dGhpcy50b29sYmFySXRlbS5lbGVtZW50KTsKIAogICAgIHRoaXMuX3dhaXRpbmdGb3JGaXJzdE1h
aW5SZXNvdXJjZVRvU3RhcnRUcmFja2luZ1NpemUgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvU2lkZWJhci5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TaWRlYmFyLmpzCShyZXZpc2lvbiAxNTIxMjEp
CisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TaWRlYmFyLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNpZGViYXIgPSBmdW5jdGlvbihlbGVtZW50LCBz
aWRlLCBzaWRlYmFyUGFuZWxzKSB7CitXZWJJbnNwZWN0b3IuU2lkZWJhciA9IGZ1bmN0aW9uKGVs
ZW1lbnQsIHNpZGUsIHNpZGViYXJQYW5lbHMsIHJvbGUsIGxhYmVsKSB7CiAgICAgV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwogCiAgICAgY29uc29sZS5hc3NlcnQoIXNpZGUgfHwgc2lk
ZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuTGVmdCB8fCBzaWRlID09PSBXZWJJbnNw
ZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7CkBAIC0zNCw2ICszNCwxMCBAQAogICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7CiAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuX3NpZGUp
OwogCisgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlIHx8ICJncm91
cCIpOworICAgIGlmIChsYWJlbCkKKyAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
ImFyaWEtbGFiZWwiLCBsYWJlbCk7CisKICAgICB0aGlzLl9yZXNpemVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgdGhpcy5fcmVzaXplRWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyLlJlc2l6ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSk7
CiAgICAgdGhpcy5fcmVzaXplRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9yZXNpemVyTW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1NpZGViYXJQYW5lbC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9TaWRlYmFyUGFuZWwuanMJKHJl
dmlzaW9uIDE1MjEyMSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Np
ZGViYXJQYW5lbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVU
b29sVGlwLCBpbWFnZSwgZWxlbWVudCkgeworV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCA9IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAs
IGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkgewogICAgIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKIAogICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOwpAQCAtMzUs
NiArMzUsMTAgQEAKICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7CiAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKGlkZW50aWZpZXIpOworCisgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCByb2xlIHx8ICJncm91cCIpOworICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwgfHwgZGlzcGxheU5hbWUpOworCiB9OwogCiBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gInBhbmVsIjsKSW5kZXg6IFNvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rvb2xiYXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVG9vbGJhci5qcwkocmV2aXNpb24g
MTUyMTIxKQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVG9vbGJhci5q
cwkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKIFdlYkluc3BlY3Rvci5U
b29sYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zKSB7Ci0gICAgV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25CYXIuY2FsbCh0aGlzLCBlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMp
OworICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLmNhbGwodGhpcywgZWxlbWVudCwgbmF2
aWdhdGlvbkl0ZW1zLCAidG9vbGJhciIpOwogCiAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IFdlYklu
c3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbFZlcnRpY2FsOwogICAgIHRo
aXMuc2l6ZU1vZGUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXplTW9kZS5Ob3JtYWw7CkluZGV4
OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMJKHJldmlzaW9uIDE1MjEyMSkKKysrIFNvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMJKHdv
cmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGZ1
bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtl
eSwgYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50cywgYXV0b0hpZGVUb29s
YmFySXRlbVdoZW5FbXB0eSwgd2FudHNUb3BPdmVyZmxvd1NoYWRvdywgZWxlbWVudCkgeworV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBk
aXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGF1dG9QcnVuZU9sZFRvcExl
dmVsUmVzb3VyY2VUcmVlRWxlbWVudHMsIGF1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHksIHdh
bnRzVG9wT3ZlcmZsb3dTaGFkb3csIGVsZW1lbnQsIHJvbGUsIGxhYmVsKSB7CiAgICAgaWYgKGtl
eWJvYXJkU2hvcnRjdXRLZXkpCiAgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQuTW9kaWZpZXIuQ29udHJvbCwga2V5Ym9hcmRTaG9ydGN1dEtleSwgdGhpcy50b2dnbGUuYmlu
ZCh0aGlzKSk7CiAKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgdmFyIGhpZGVUb29sVGlwID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHRoZSAlcyBuYXZpZ2F0aW9uIHNpZGViYXIiKS5m
b3JtYXQoZGlzcGxheU5hbWUpOwogICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVU
b29sVGlwLCBpbWFnZSwgZWxlbWVudCk7CisgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5j
YWxsKHRoaXMsIGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xU
aXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCB8fCBkaXNwbGF5TmFtZSk7CiAKICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5TdHlsZUNsYXNzTmFtZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9DU1NTdHlsZURldGFpbHNTaWRlYmFy
UGFuZWwuanMJKHJldmlzaW9uIDE1MjEyMSkKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNyBAQAogCiAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbCA9IG51bGw7CiAKLSAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwor
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIo
bnVsbCwgbnVsbCwgInRhYmxpc3QiKTsKICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZlbnQuTmF2aWdhdGlvbkl0ZW1T
ZWxlY3RlZCwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCwgdGhpcyk7CiAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTUyMTIxKQorKysgU291cmNlL1dlYklu
c3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEz
LTA2LTI3ICBKYW1lcyBDcmFpZyAgPGphbWVzQGNvb2tpZWNyb29rLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBWDogQWRkIGNvbnRhaW5lciBBUklBIHJvbGVzICh0b29sYmFyLCBtYWlu
LCBsYWJlbGVkIHJlZ2lvbnMsIGV0Yy4pIAorICAgICAgICBzbyB0aGUgbGF5b3V0IGlzIG1vcmUg
ZGlzY292ZXJhYmxlIHRvIHNjcmVlbiByZWFkZXIgdXNlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEwNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgdGhlIGJhc2ljIGxheW91dCAodG9vbGJh
ciwgc2lkZWJhcnMsIG1haW4pIG9mIHRoZSBXZWIgSW5zcGVjdG9yIHVuZGVyc3RhbmRhYmxlCisg
ICAgICAgIGFuZCBuYXZpZ2FibGUgd2l0aCBWb2ljZU92ZXIuCisKKyAgICAgICAgKiBMb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Rh
c2hib2FyZE1hbmFnZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdhdGlvbkJhci5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL05hdmlnYXRpb25JdGVtLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1JhZGlvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9TaWRlYmFyLmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVG9vbGJhci5qczoKKwogMjAxMy0wNi0yNyAgTWF0dGhldyBIb2xkZW4gIDxqZnRo
b2xkZW5AeWFob28uY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IERpc3BsYXkgY29sb3Ig
cGlja2VyIGluIHBvcG92ZXIgb24gY29sb3Igc3dhdGNoIGNsaWNrCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>