<?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>138810</bug_id>
          
          <creation_ts>2014-11-17 16:15:40 -0800</creation_ts>
          <short_desc>Web Inspector: New CSS Rules should go into a new Stylesheet Resource that can be viewed/edited/saved</short_desc>
          <delta_ts>2018-08-21 14:55:56 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=172388</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=173189</see_also>
          <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>172387</blocked>
    
    <blocked>188819</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>thomasvandiepen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1049337</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-11-17 16:15:40 -0800</bug_when>
    <thetext>* SUMMARY
New CSS Rules should go into a new Stylesheet Resource that can be viewed/edited/saved. Currently to copy out the contents of test CSS added this way it is difficult. Having all the additions in one place and easy to copy/paste would be useful for developers. It may also be useful to just create a new Stylesheet resource entirely instead of non-obviously creating it by adding a new CSS Rule to a random element.

* NOTES
- Chrome - when adding new CSS rules creates a stylesheet resource you can jump too
- Firefox - you can create new stylesheet resources</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049339</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-11-17 16:15:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/19008875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168889</commentid>
    <comment_count>2</comment_count>
    <who name="Thomas van Diepen">thomasvandiepen</who>
    <bug_when>2016-02-27 12:15:54 -0800</bug_when>
    <thetext>In my opinion, it would be a better solution to be able to assign a rule to an existing css resource, since it would eventually end up there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309684</commentid>
    <comment_count>3</comment_count>
      <attachid>310411</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-17 11:06:54 -0700</bug_when>
    <thetext>Created attachment 310411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309715</commentid>
    <comment_count>4</comment_count>
      <attachid>310411</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-17 11:53:41 -0700</bug_when>
    <thetext>Comment on attachment 310411
Patch

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

• What happens when you select an Inspector Style Sheet and reload? Is there an error in the console?
• What is the Inspector StyleSheet&apos;s url normally?
• How does this feel when there are sub-frames? and each frame gets its own Inspector Style Sheet?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:491
&gt; +    _updateContent(styleSheet)

Note to self: I haven&apos;t reviewed this part of the patch.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleSheetTreeElement.js:40
&gt; +        this.mainTitle = WebInspector.UIString(&quot;Inspector Style Sheet&quot;);

Nit: This should be the `title` up above.

&gt; Source/WebInspectorUI/UserInterface/Views/FrameTreeElement.js:49
&gt; +        WebInspector.cssStyleManager.addEventListener(WebInspector.CSSStyleManager.Event.StyleSheetAdded, this._styleSheetAdded, this);

This needs to be removed somewhere otherwise we leak every FrameTreeElement that is created.

Shouldn&apos;t there be code in onpopulate that looks up an inspector stylesheet if one exists? onpopulate happens the first time this tree element is attached. Most of the time an Inspector Style Sheet probably does not exist, but you&apos;d have to sufficiently prove it can&apos;t exist or just match the existing pattern of having onpopulate generate all initial children.

&gt; Source/WebInspectorUI/UserInterface/Views/FrameTreeElement.js:268
&gt; +    _styleSheetAdded(event)
&gt; +    {
&gt; +        if (!event || !event.data || !event.data.styleSheet)
&gt; +            return;

We shouldn&apos;t need to be this paranoid in our own code. This entire check should be eliminated.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceSidebarPanel.js:401
&gt; +        // Only show &quot;inspector&quot; stylesheets in the Resources Sidebar.

Lets drop the quotes around inspector. Maybe drop this comment entirely.

&gt; Source/WebInspectorUI/UserInterface/Views/TextResourceContentView.js:203
&gt; +        if (this.resource instanceof WebInspector.CSSStyleSheet)
&gt;              this._textEditor.readOnly = false;
&gt; +        else {
&gt; +            // Check the MIME-type for CSS since Resource.Type.Stylesheet also includes XSL, which we can&apos;t edit yet.
&gt; +            if (this.resource.type === WebInspector.Resource.Type.Stylesheet &amp;&amp; this.resource.syntheticMIMEType === &quot;text/css&quot;)
&gt; +                this._textEditor.readOnly = false;
&gt; +
&gt; +            // Allow editing any local file since edits can be saved and reloaded right from the Inspector.
&gt; +            if (this.resource.urlComponents.scheme === &quot;file&quot;)
&gt; +                this._textEditor.readOnly = false;
&gt; +        }

This code is ugly when all it does is set the same value for 3 difference conditions.

It is also unclear to me why this needs to wait until _contentWillPopulate and isn&apos;t handled earlier (like the constructor) because the `resource` should be known.

How about something like a helper:

    _shouldBeEditable()
    {
        if (this.resource instanceof CSSStyleSheet)
            return true;

        // Blah blah.
        if (...)
           return true;
        ...
        return false;
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309899</commentid>
    <comment_count>5</comment_count>
      <attachid>310458</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-17 16:31:07 -0700</bug_when>
    <thetext>Created attachment 310458
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309900</commentid>
    <comment_count>6</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-17 16:31:44 -0700</bug_when>
    <thetext>(In reply to Joseph Pecoraro from comment #4)
&gt; • What happens when you select an Inspector Style Sheet and reload? Is there
&gt; an error in the console?

This was an issue previously, but I have resolved it in a new patch (I&apos;ll upload it shortly).

&gt; • What is the Inspector StyleSheet&apos;s url normally?

It matches the URL of the frame.

&gt; • How does this feel when there are sub-frames? and each frame gets its own
&gt; Inspector Style Sheet?

Correct, each frame will have it&apos;s own Inspector Style Sheet (assuming the user has created a new rule for a node inside that frame).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310755</commentid>
    <comment_count>7</comment_count>
      <attachid>310458</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-19 13:47:54 -0700</bug_when>
    <thetext>Comment on attachment 310458
Patch

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

After applying I found some issues.

1. Styles sidebar shows a URL for the rule. It should show &quot;Web Inspector&quot;.

r=me for this because it is a regression that makes a lot of sense.

2. Styles Sidebar doesn&apos;t immediately show changes to StyleSheet after switching tabs

Steps to Reproduce:
1. Inspect this page
2. Show Elements Tab
3. Select &lt;body&gt;
4. Show Styles Rules sidebar
5. Click the (+) to add a new rule
6. Switch to the Resources tab
7. Modify the Inspector Style Sheet rule for &quot;body {}&quot;
8. Switch back to the Elements tab
  =&gt; Rule still has cursor and its empty. Clicking out suddenly loads the content.

I think we will want to improve this back and forth. It might happen regardless of the Inspector Style Sheet, but its something we should look into fixing. I don&apos;t think we always want to blur the sidebar when switching tabs (maybe thats what we end up on) but certain if the content changes out from under it we should consider something here.

3. Uncaught exception!

[Error] Unhandled Promise Rejection: TypeError: representedObject.isInspectorStyleSheet is not a function. (In &apos;representedObject.isInspectorStyleSheet()&apos;, &apos;representedObject.isInspectorStyleSheet&apos; is undefined)
	fetchedStyleSheetContent (CSSStyleManager.js:527)
	fetchedStyleSheetContent
	promiseReactionJob

---

Other thoughts. I think we&apos;ll want a (+) button at the bottom of resources to create an inspector stylesheet if one doesn&apos;t exist for the current page. Because this is really super useful to just have these scratchpad stylesheets without having to hunt for how to create it (creating a new rule in the styles sidebar is obtuse).

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:170
&gt; -    preferredInspectorStyleSheetForFrame(frame, callback)
&gt; +    preferredInspectorStyleSheetForFrame(frame, callback, dontCreateIfMissing)

Style: Don&apos;t use dont and Never use never. Use `doNot` and notInTheForseeableFuture.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:404
&gt; -    _lookupStyleSheetForResource(resource, callback)
&gt; +    _lookupStyleSheetForSourceCode(sourceCode, callback)
&gt;      {
&gt; -        this._lookupStyleSheet(resource.parentFrame, resource.url, callback);
&gt; +        this._lookupStyleSheet(sourceCode.parentFrame, sourceCode.url, callback);
&gt;      }

WebInspector.SourceCode doesn&apos;t have a `parentFrame` accessor, but Resource does. This is starting to get hairy.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:467
&gt;          // Ignore if it isn&apos;t a CSS stylesheet.
&gt; -        if (resource.type !== WebInspector.Resource.Type.Stylesheet || resource.syntheticMIMEType !== &quot;text/css&quot;)
&gt; +        if (!(sourceCode instanceof WebInspector.CSSStyleSheet) &amp;&amp; (sourceCode.type !== WebInspector.Resource.Type.Stylesheet || sourceCode.syntheticMIMEType !== &quot;text/css&quot;))
&gt;              return;

I think this will get called if Scripts get edited. So you may want a helper which will make everything read easier and more correct:

    _isStyleSheet(sourceCode)
    {
        if (sourceCode instanceof WebInspector.CSSStyleSheet)
            return true;
        if (sourceCode instanceof WebInspector.Resource)
            return sourceCode.type === WebInspector.Resource.Type.Stylesheet &amp;&amp; sourceCode.syntheticMIMEType === &quot;text/css&quot;;
        return true;
    }

    ...

    if (!this._isStyleSheet(sourceCode))
        return;

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSStyleManager.js:528
&gt; +            if (representedObject.isInspectorStyleSheet())
&gt; +                representedObject.dispatchEventToListeners(WebInspector.SourceCode.Event.ContentDidChange);

Is there any reason for this conditional? Can&apos;t we do this always?

Also, its possible that representedObject here is no longer a CSSStyleSheet given it might change to a Resource above on line 508.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleSheetTreeElement.js:44
&gt; +        this._styleSheet = styleSheet;
&gt; +    }
&gt; +
&gt; +    // Public
&gt; +
&gt; +    get styleSheet() { return this._styleSheet; }

You can drop the member and just use this.representedObject here.

&gt; Source/WebInspectorUI/UserInterface/Views/TextResourceContentView.js:278
&gt; +    _shouldBeReadOnly()

Having seen this now, the opposite name makes more sense. _shouldBeEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310758</commentid>
    <comment_count>8</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-19 13:48:53 -0700</bug_when>
    <thetext>FWIW I don&apos;t think we need to solve (2) above before this lands (I think its an issue that affects existing code). But we should think about how to solve it and make our experience better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1310788</commentid>
    <comment_count>9</comment_count>
      <attachid>310704</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-19 14:57:43 -0700</bug_when>
    <thetext>Created attachment 310704
Patch

Created two new bugs based on previous comments:
- &lt;https://webkit.org/b/172387&gt; Web Inspector: Add method for creating Inspector Style Sheet resources
- &lt;https://webkit.org/b/172388&gt; Web Inspector: Changes are not applied in CSS sidebar when switching to Resources tab without blurring editor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311628</commentid>
    <comment_count>10</comment_count>
      <attachid>310704</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-22 15:46:23 -0700</bug_when>
    <thetext>Comment on attachment 310704
Patch

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

r=me

I think there is still some hairiness around CSSStyleSheet being used like a Resource but not being a Resource. I wish that would be cleaned up but I think the general approach in this patch is sound.

&gt; Source/WebInspectorUI/UserInterface/Views/CSSStyleDeclarationSection.js:257
&gt; +                    options.nameStyle = WebInspector.SourceCodeLocation.NameStyle.None;

This is exactly why I don&apos;t like using `const` for things that aren&apos;t const (namely: `options` here).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311646</commentid>
    <comment_count>11</comment_count>
      <attachid>310947</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-22 16:06:28 -0700</bug_when>
    <thetext>Created attachment 310947
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311667</commentid>
    <comment_count>12</comment_count>
      <attachid>310947</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-22 16:44:52 -0700</bug_when>
    <thetext>Comment on attachment 310947
Patch

Clearing flags on attachment: 310947

Committed r217258: &lt;http://trac.webkit.org/changeset/217258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1311668</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-05-22 16:44:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310411</attachid>
            <date>2017-05-17 11:06:54 -0700</date>
            <delta_ts>2017-05-17 16:31:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138810-20170517110656.patch</filename>
            <type>text/plain</type>
            <size>33984</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDEyNmMxNjEwYWViNWYxNjYwNzliYzkxNjc2NjMy
ZWFhMGE4NzliN2YuLmQ0ZDRlZGExMjQ4NjgzOGE1MDQyNTMzNDU3YmZhMzE2YWNkNTE0M2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDE3LTA1LTE3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBO
ZXcgQ1NTIFJ1bGVzIHNob3VsZCBnbyBpbnRvIGEgbmV3IFN0eWxlc2hlZXQgUmVzb3VyY2UgdGhh
dCBjYW4gYmUgdmlld2VkL2VkaXRlZC9zYXZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxl
TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuc3R5bGVTaGVldENo
YW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUu
X2xvb2t1cFN0eWxlU2hlZXRGb3JTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1hbmFnZXIucHJvdG90eXBlLl9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZS5hcHBs
eVN0eWxlU2hlZXRDaGFuZ2VzLnN0eWxlU2hlZXRGb3VuZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5fc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2Uu
YXBwbHlTdHlsZVNoZWV0Q2hhbmdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
YW5hZ2VyLnByb3RvdHlwZS5fc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUNvbnRlbnQuZmV0
Y2hlZFN0eWxlU2hlZXRDb250ZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1h
bmFnZXIucHJvdG90eXBlLl9sb29rdXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuX3Jlc291cmNl
Q29udGVudERpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUmVzb3VyY2VDb250ZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVmYWN0b3IgbWV0aG9kcyB0byB1c2UgU291cmNlQ29kZSBpbnN0ZWFkIG9mIFJlc291
cmNlIHRvIHN1cHBvcnQgQ1NTU3R5bGVTaGVldCBvYmplY3RzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgIEluY2x1ZGUgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
U2hlZXRUcmVlRWxlbWVudC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxl
Y3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlN0
eWxlc2hlZXQpOgorICAgICAgICBBZGQgVHlwZVZlcmlmaWVyIGZvciBDU1NTdHlsZVNoZWV0Lgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fcGFyc2VSdWxlUGF5bG9h
ZCk6CisgICAgICAgIE1hbnVhbGx5IGNyZWF0ZSBhIFNvdXJjZUNvZGVMb2NhdGlvbiBvYmplY3Qg
Zm9yIEluc3BlY3RvciBTdHlsZSBTaGVldHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBzdHlsZVNoZWV0KToKKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3M6CisgICAgICAgICg6
bWF0Y2hlcygucmVzb3VyY2UtaWNvbi5yZXNvdXJjZS10eXBlLXN0eWxlc2hlZXQsIC5zdHlsZXNz
aGVldC1pY29uKSAuaWNvbik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1l
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5m
b3J3YXJkaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
Ll9zdHlsZVNoZWV0QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5fc3R5bGVTaGVldEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVTZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICBM
aXN0ZW4gZm9yIHRoZSBjcmVhdGlvbiBvZiBDU1NTdHlsZVNoZWV0IG9iamVjdHMgYW5kIGFkZCB0
aGVtIHRvIHRoZSBzaWRlYmFyIGlmIHRoZXkgYXJlIGFuCisgICAgICAgIEluc3BlY3RvciBTdHls
ZSBTaGVldC4gIFJlZ3VsYXIgc3R5bGUgc2hlZXRzIGFyZSBhZGRlZCB2aWEgdGhlaXIgcmVzcGVj
dGl2ZSByZXNvdXJjZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9yUmVwcmVzZW50ZWRP
YmplY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5j
YW5TaG93UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNv
bnRlbnRWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5fcHJlcGFyZUVkaXRvckZvckluaXRpYWxDb250ZW50KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2xvb3NlbHlNYXRjaGVzU291
cmNlQ29kZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUuX21hdGNoZXNTb3VyY2VDb2RlTG9jYXRpb24pOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwb3J0
c1NhdmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5nZXQgc2F2ZURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6CisgICAgICAgIFN1
cHBvcnQgZWRpdGluZyBhbmQgc2F2aW5nIGFuIEluc3BlY3RvciBTdHlsZSBTaGVldCB2aWEgaXRz
IENTU1N0eWxlU2hlZXQgb2JqZWN0LgorCiAyMDE3LTA1LTE1ICBGdWppaSBIaXJvbm9yaSAgPEhp
cm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtHVEtdIFdlYiBJbnNwZWN0b3I6IEFk
ZCBuZXcgR1RLKyBpY29ucyBmb3IgU2VhcmNoIGljb24gb2YgUXVpY2sgT3BlbiBkaWFsb2cKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xv
Y2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IGU3MTZlNjdjYzdkN2I5MGM0NjY0YjZj
N2UyNzZmMjgzYmVkZDY4OGYuLjkwODliMTdlODA0ZTk2YTQ4YTgwYWY2MTE1MGFkNzA5NjFiNDMz
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDYwLDYgKzQ2MCw3IEBA
IGxvY2FsaXplZFN0cmluZ3NbIkluaXRpYXRlZCJdID0gIkluaXRpYXRlZCI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJJbml0aWF0b3IiXSA9ICJJbml0aWF0b3IiOwogbG9jYWxpemVkU3RyaW5nc1siSW5w
dXQ6ICJdID0gIklucHV0OiAiOwogbG9jYWxpemVkU3RyaW5nc1siSW5zZXQiXSA9ICJJbnNldCI7
Citsb2NhbGl6ZWRTdHJpbmdzWyJJbnNwZWN0b3IgU3R5bGUgU2hlZXQiXSA9ICJJbnNwZWN0b3Ig
U3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1siSW5zdGFuY2VzIl0gPSAiSW5zdGFuY2Vz
IjsKIGxvY2FsaXplZFN0cmluZ3NbIkludmFsaWQiXSA9ICJJbnZhbGlkIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkludmFsaWQgY2hhcmFjdGVycyJdID0gIkludmFsaWQgY2hhcmFjdGVycyI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXgg
ZDc4ZTdhZTZjNDdkMjM5ZjdmMjI2NmI5ODhmMjEwOWZjNGQ0YWRjZC4uOTJmYWMxMmY4ZjRjNjhj
MTlkMmJkMjRlNDlhYTU2MjY1NTMwOTY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTEyNSw3ICsxMTI1LDEwIEBAIFdlYklu
c3BlY3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9yUmVwcmVzZW50ZWRPYmplY3QgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyVGFiQ29udGVudFZpZXc7CiAgICAgfQogCi0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNjcmlwdCkKKyAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuRnJhbWUKKyAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UKKyAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0CisgICAgICAgIHx8IHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXc7CiAKICAgICAvLyBGSVhNRTogTW92
ZSBDb250ZW50IEZsb3dzIHRvIHRoZSBFbGVtZW50cyB0YWI/CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NT
dHlsZU1hbmFnZXIuanMKaW5kZXggOGUxMDFlMzFmMGQzMjM5ZTM5Yjk2MGI1YzlmZGQyZWY1OTQy
N2QyNi4uMzNkZGViZjlkZGUyMTgzYmJlM2ZhOGRkZjAwYzI0MzVhZDMzM2Q0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5
bGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcwpAQCAtMzQsNyArMzQsNyBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogCiAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMu
X21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFt
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0Fk
ZGVkLCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLlJl
c291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29u
dGVudERpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlLCB0aGlzKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl9zb3VyY2VDb2RlQ29u
dGVudERpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0
aGlzLl9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQuQXR0
cmlidXRlTW9kaWZpZWQsIHRoaXMuX25vZGVBdHRyaWJ1dGVzRGlkQ2hhbmdlLCB0aGlzKTsKQEAg
LTI4MCw3ICsyODAsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NT
U3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHN0eWxlU2hlZXQubm90ZUNvbnRlbnREaWRDaGFuZ2UoKTsKLSAgICAg
ICAgdGhpcy5fdXBkYXRlUmVzb3VyY2VDb250ZW50KHN0eWxlU2hlZXQpOworICAgICAgICB0aGlz
Ll91cGRhdGVDb250ZW50KHN0eWxlU2hlZXQpOwogICAgIH0KIAogICAgIHN0eWxlU2hlZXRBZGRl
ZChzdHlsZVNoZWV0SW5mbykKQEAgLTM5NSw5ICszOTUsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogICAgICAgICByZXR1cm4gZnJhbWUuaWQgKyAiOiIgKyB1cmw7CiAgICAgfQogCi0gICAg
X2xvb2t1cFN0eWxlU2hlZXRGb3JSZXNvdXJjZShyZXNvdXJjZSwgY2FsbGJhY2spCisgICAgX2xv
b2t1cFN0eWxlU2hlZXRGb3JTb3VyY2VDb2RlKHNvdXJjZUNvZGUsIGNhbGxiYWNrKQogICAgIHsK
LSAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldChyZXNvdXJjZS5wYXJlbnRGcmFtZSwgcmVz
b3VyY2UudXJsLCBjYWxsYmFjayk7CisgICAgICAgIHRoaXMuX2xvb2t1cFN0eWxlU2hlZXQoc291
cmNlQ29kZS5wYXJlbnRGcmFtZSwgc291cmNlQ29kZS51cmwsIGNhbGxiYWNrKTsKICAgICB9CiAK
ICAgICBfbG9va3VwU3R5bGVTaGVldChmcmFtZSwgdXJsLCBjYWxsYmFjaykKQEAgLTQ1Myw3MyAr
NDUzLDc4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1h
bmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgIENTU0FnZW50LmdldEFs
bFN0eWxlU2hlZXRzKHByb2Nlc3NTdHlsZVNoZWV0cy5iaW5kKHRoaXMpKTsKICAgICB9CiAKLSAg
ICBfcmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlKGV2ZW50KQorICAgIF9zb3VyY2VDb2RlQ29udGVu
dERpZENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LnRh
cmdldDsKLSAgICAgICAgaWYgKHJlc291cmNlID09PSB0aGlzLl9pZ25vcmVSZXNvdXJjZUNvbnRl
bnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlKQorICAgICAgICBsZXQgc291cmNlQ29kZSA9IGV2
ZW50LnRhcmdldDsKKyAgICAgICAgaWYgKHNvdXJjZUNvZGUgPT09IHRoaXMuX2lnbm9yZUNvbnRl
bnREaWRDaGFuZ2VFdmVudEZvclNvdXJjZUNvZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgLy8gSWdub3JlIGlmIGl0IGlzbid0IGEgQ1NTIHN0eWxlc2hlZXQuCi0gICAgICAgIGlm
IChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0
IHx8IHJlc291cmNlLnN5bnRoZXRpY01JTUVUeXBlICE9PSAidGV4dC9jc3MiKQorICAgICAgICBp
ZiAoIShzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQpICYm
IChzb3VyY2VDb2RlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQgfHwgc291cmNlQ29kZS5zeW50aGV0aWNNSU1FVHlwZSAhPT0gInRleHQvY3NzIikpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgZnVuY3Rpb24gYXBwbHlTdHlsZVNoZWV0Q2hhbmdl
cygpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRGb3VuZChzdHls
ZVNoZWV0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc291cmNlLl9fcGVuZGlu
Z0NoYW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICAgICAgc291cmNlQ29kZS5f
X3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gdW5kZWZpbmVkOwogCiAgICAgICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoc3R5bGVTaGVldCk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAvLyBUbyBw
cmV2ZW50IHVwZGF0aW5nIGEgVGV4dEVkaXRvcidzIGNvbnRlbnQgd2hpbGUgdGhlIHVzZXIgaXMg
dHlwaW5nIGluIGl0IHdlIHdhbnQgdG8KLSAgICAgICAgICAgICAgICAvLyBpZ25vcmUgdGhlIG5l
eHQgX3VwZGF0ZVJlc291cmNlQ29udGVudCBjYWxsLgotICAgICAgICAgICAgICAgIHJlc291cmNl
Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVudCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgLy8gaWdub3JlIHRoZSBuZXh0IF91cGRhdGVDb250ZW50IGNhbGwuCisgICAgICAgICAgICAg
ICAgc291cmNlQ29kZS5fX2lnbm9yZU5leHRVcGRhdGVDb250ZW50ID0gdHJ1ZTsKIAotICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5icmFuY2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNp
b25Gb3JSZXByZXNlbnRlZE9iamVjdChzdHlsZVNoZWV0KS5jb250ZW50ID0gcmVzb3VyY2UuY29u
dGVudDsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuYnJhbmNoTWFuYWdlci5jdXJyZW50
QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3Qoc3R5bGVTaGVldCkuY29udGVudCA9
IHNvdXJjZUNvZGUuY29udGVudDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGhpcy5f
bG9va3VwU3R5bGVTaGVldEZvclJlc291cmNlKHJlc291cmNlLCBzdHlsZVNoZWV0Rm91bmQuYmlu
ZCh0aGlzKSk7CisgICAgICAgICAgICB0aGlzLl9sb29rdXBTdHlsZVNoZWV0Rm9yU291cmNlQ29k
ZShzb3VyY2VDb2RlLCBzdHlsZVNoZWV0Rm91bmQuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBpZiAocmVzb3VyY2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCkKLSAgICAgICAgICAg
IGNsZWFyVGltZW91dChyZXNvdXJjZS5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0KTsKLSAgICAgICAg
cmVzb3VyY2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQoYXBwbHlTdHlsZVNo
ZWV0Q2hhbmdlcy5iaW5kKHRoaXMpLCA1MDApOworICAgICAgICBpZiAoc291cmNlQ29kZS5fX3Bl
bmRpbmdDaGFuZ2VUaW1lb3V0KQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHNvdXJjZUNvZGUu
X19wZW5kaW5nQ2hhbmdlVGltZW91dCk7CisgICAgICAgIHNvdXJjZUNvZGUuX19wZW5kaW5nQ2hh
bmdlVGltZW91dCA9IHNldFRpbWVvdXQoYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcy5iaW5kKHRoaXMp
LCA1MDApOwogICAgIH0KIAotICAgIF91cGRhdGVSZXNvdXJjZUNvbnRlbnQoc3R5bGVTaGVldCkK
KyAgICBfdXBkYXRlQ29udGVudChzdHlsZVNoZWV0KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoc3R5bGVTaGVldCk7CiAKICAgICAgICAgZnVuY3Rpb24gZmV0Y2hlZFN0eWxlU2hlZXRD
b250ZW50KHBhcmFtZXRlcnMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzdHlsZVNoZWV0
ID0gcGFyYW1ldGVycy5zb3VyY2VDb2RlOwotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBwYXJh
bWV0ZXJzLmNvbnRlbnQ7Ci0KLSAgICAgICAgICAgIHN0eWxlU2hlZXQuX19wZW5kaW5nQ2hhbmdl
VGltZW91dCA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAgIGxldCByZXByZXNlbnRlZE9iamVjdCA9
IHBhcmFtZXRlcnMuc291cmNlQ29kZTsKKyAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9f
cGVuZGluZ0NoYW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7CiAKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHN0eWxlU2hlZXQudXJsKTsKLSAgICAgICAgICAgIGlmICghc3R5bGVTaGVldC51cmwp
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdC51cmwpOworICAg
ICAgICAgICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdC51cmwpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBzdHlsZVNoZWV0LnBhcmVudEZyYW1l
LnJlc291cmNlRm9yVVJMKHN0eWxlU2hlZXQudXJsKTsKLSAgICAgICAgICAgIGlmICghcmVzb3Vy
Y2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFyZXByZXNlbnRl
ZE9iamVjdC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSkgeworICAgICAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWUucmVzb3VyY2VGb3JV
UkwocmVwcmVzZW50ZWRPYmplY3QudXJsKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIC8v
IE9ubHkgdHJ5IHRvIHVwZGF0ZSBzdHlsZXNoZWV0IHJlc291cmNlcy4gT3RoZXIgcmVzb3VyY2Vz
LCBsaWtlIGRvY3VtZW50cywgY2FuIGNvbnRhaW4KLSAgICAgICAgICAgIC8vIG11bHRpcGxlIHN0
eWxlc2hlZXRzIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgcmFuZ2VzIHRvIHVwZGF0ZSB0
aG9zZS4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5TdHlsZXNoZWV0KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAvLyBPbmx5IHRyeSB0byB1cGRhdGUgc3R5bGVzaGVldCByZXNvdXJjZXMuIE90aGVy
IHJlc291cmNlcywgbGlrZSBkb2N1bWVudHMsIGNhbiBjb250YWluCisgICAgICAgICAgICAgICAg
Ly8gbXVsdGlwbGUgc3R5bGVzaGVldHMgYW5kIHdlIGRvbid0IGhhdmUgdGhlIHNvdXJjZSByYW5n
ZXMgdG8gdXBkYXRlIHRob3NlLgorICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dC50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChy
ZXNvdXJjZS5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQpIHsKLSAgICAgICAgICAg
ICAgICByZXNvdXJjZS5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5fX2lnbm9yZU5leHRVcGRhdGVDb250
ZW50KSB7CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuX19pZ25vcmVOZXh0VXBk
YXRlQ29udGVudCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgdGhpcy5faWdub3JlUmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlRXZl
bnRGb3JSZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmJyYW5j
aE1hbmFnZXIuY3VycmVudEJyYW5jaC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHJlc291
cmNlKS5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgICAgIHRoaXMuX2lnbm9yZVJlc291cmNl
Q29udGVudERpZENoYW5nZUV2ZW50Rm9yUmVzb3VyY2UgPSBudWxsOworICAgICAgICAgICAgdGhp
cy5faWdub3JlQ29udGVudERpZENoYW5nZUV2ZW50Rm9yU291cmNlQ29kZSA9IHJlcHJlc2VudGVk
T2JqZWN0OworCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuYnJhbmNoTWFuYWdlci5jdXJyZW50
QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpLmNv
bnRlbnQgPSByZXByZXNlbnRlZE9iamVjdC5jb250ZW50OworCisgICAgICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICAgICAg
cmVwcmVzZW50ZWRPYmplY3QuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UpOworCisgICAgICAgICAgICB0aGlzLl9p
Z25vcmVDb250ZW50RGlkQ2hhbmdlRXZlbnRGb3JTb3VyY2VDb2RlID0gbnVsbDsKICAgICAgICAg
fQogCiAgICAgICAgIGZ1bmN0aW9uIHN0eWxlU2hlZXRSZWFkeSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZGJiODNhZTc5NDRhYTZiZTdl
NWUwMzhjZTlkMzA4YjAzOGM0YzVkMS4uYjdmNDNjZTcyNWFkODdmMmM2YzFjNGE2NzcxMDQzNGE1
YmQ2NjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbApAQCAtNTA2LDYgKzUwNiw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NhbGxGcmFtZVZpZXcuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DaGFydERldGFpbHNTZWN0aW9uUm93LmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Db2xsZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NvbGxlY3Rpb24uanMKaW5kZXggOGM3NzM5ZjgzN2JhMjhlMTkyZjVhOTY5YWY3ZTAxNzdl
NTYxZmFiZi4uYzYzZTRlNDUzZTA4NzdkZTMyODkxM2JmYjNlZjMzZWQzZGE2YzZiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rp
b24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nv
bGxlY3Rpb24uanMKQEAgLTExNiw0ICsxMTYsNSBAQCBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbiA9
IGNsYXNzIENvbGxlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgRnJhbWU6
IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSwKICAgICBS
ZXNvdXJjZTogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlLAogICAgIFNjcmlwdDogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlNjcmlwdCwKKyAgICBDU1NTdHlsZVNoZWV0OiAob2JqZWN0KSA9PiBvYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CmluZGV4IDA2ZDVlYWYxMDcwNjhlYzdhNmZkZTg2NzMyZDVjZmQyNWQ5YmNiZjUuLjFlN2VkMDE0
NmJmNWJjOTczNmY0MzRhNTU0ZDU5YjkwNzg1NzExOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CkBAIC03NjUsOCArNzY1LDEyIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3Mg
RE9NTm9kZVN0eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHNv
dXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2NyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihwYXlsb2Fk
LnNvdXJjZVVSTCwgcGF5bG9hZC5zb3VyY2VMaW5lKTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChzdHlsZVNoZWV0KQorICAgICAgICBpZiAoc3R5bGVTaGVldCkgeworICAgICAgICAgICAgaWYg
KCFzb3VyY2VDb2RlTG9jYXRpb24gJiYgc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQo
KSkKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzdHlsZVNoZWV0LmNyZWF0
ZVNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VSYW5nZS5zdGFydExpbmUsIHNvdXJjZVJhbmdlLnN0
YXJ0Q29sdW1uKQorCiAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzdHlsZVNoZWV0
Lm9mZnNldFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICB9
CiAKICAgICAgICAgdmFyIG1lZGlhTGlzdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsg
cGF5bG9hZC5tZWRpYSAmJiBpIDwgcGF5bG9hZC5tZWRpYS5sZW5ndGg7ICsraSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNl
Q29sbGVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9SZXNvdXJjZUNvbGxlY3Rpb24uanMKaW5kZXggYmQzOGFkMmY1YWFmZTkxNjdkNjU5ZGY0OGE3
ZDFhZTFlZDllOWY3MS4uZWM1YWQ3YzU1YzBkZWYxYTdiMzhjYjc1NTg1Y2FhNzAyNmYyOWRmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jl
c291cmNlQ29sbGVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC0xODgsNyArMTg4LDExIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24gPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAKIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24u
VHlwZVZlcmlmaWVyID0gewogICAgIERvY3VtZW50OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3Iu
Q29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsCi0gICAgU3R5bGVzaGVldDog
KG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNl
KG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0
eWxlc2hlZXQsCisgICAgU3R5bGVzaGVldDogKG9iamVjdCkgPT4geworICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkNTU1N0eWxlU2hlZXQob2JqZWN0KSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkNv
bGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQKKyAgICB9LAogICAgIEltYWdl
OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3Vy
Y2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUu
SW1hZ2UsCiAgICAgRm9udDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlw
ZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZS5UeXBlLkZvbnQsCiAgICAgU2NyaXB0OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0
b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVTaGVldFRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVTaGVldFRyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk5OWYxYjA2OTljZGIyOThkNGRh
NjVkZjAyYWQwMzJiOWUzZGY5MDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQuanMKQEAg
LTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0VHJl
ZUVsZW1lbnQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Ioc3R5bGVTaGVl
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxl
U2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpOworCisgICAgICAgIGNvbnN0IHRpdGxlID0g
bnVsbDsKKyAgICAgICAgY29uc3Qgc3VidGl0bGUgPSBudWxsOworICAgICAgICBjb25zdCBoYXND
aGlsZHJlbiA9IGZhbHNlOworICAgICAgICBzdXBlcihzdHlsZVNoZWV0LCAic3R5bGVzaGVldCIs
IHRpdGxlLCBzdWJ0aXRsZSwgc3R5bGVTaGVldCwgaGFzQ2hpbGRyZW4pOworCisgICAgICAgIHRo
aXMuX3N0eWxlU2hlZXQgPSBzdHlsZVNoZWV0OworCisgICAgICAgIHRoaXMubWFpblRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNwZWN0b3IgU3R5bGUgU2hlZXQiKTsKKworICAgICAg
ICB0aGlzLmFkZENsYXNzTmFtZSgic3R5bGVzaGVldC1pY29uIik7CisgICAgfQorCisgICAgLy8g
UHVibGljCisKKyAgICBnZXQgc3R5bGVTaGVldCgpIHsgcmV0dXJuIHRoaXMuX3N0eWxlU2hlZXQ7
IH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IGE2ODc5YzYxMmQ0Y2YzZmUyMjUzNTMxYTZiOTI2
Mjc5NjI4OGZkNjkuLjFmN2ZmMGI4MmIzMTE0ZWVhYzFiZDg1YzMzOTU3ZWJmOGJmNjA0NzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRWaWV3LmpzCkBAIC01NCw2ICs1NCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAg
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAg
ICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3KHJlcHJl
c2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQpCisgICAgICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyhyZXByZXNl
bnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOworCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZykKICAgICAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXco
cmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIApAQCAtMjM0LDYgKzIzNyw4IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLlZpZXcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJh
bWVUcmVlRWxlbWVudC5qcwppbmRleCBhYzMzNzMwZDBjOTg1ZGQ5YmE2MDgwMWVlZjI0NzNhYTM5
NzU4MTE4Li5mZDYzZWZjYzg1NmNmZDNiYjk1ZGY1Zjk0M2U2ODRlYjU3MGI1MjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVF
bGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0ZyYW1lVHJlZUVsZW1lbnQuanMKQEAgLTQ2LDYgKzQ2LDggQEAgV2ViSW5zcGVjdG9yLkZyYW1l
VHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlJlc28KICAgICAgICAgZnJhbWUuZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01UcmVlLkV2ZW50LkNvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcy5fY2hpbGRDb250ZW50
Rmxvd1dhc1JlbW92ZWQsIHRoaXMpOwogICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuUm9vdERPTU5vZGVJbnZhbGlkYXRlZCwg
dGhpcy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcyk7CiAKKyAgICAgICAgV2ViSW5zcGVj
dG9yLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWQsIHRo
aXMpOworCiAgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKICAgICAg
ICAgdGhpcy5mb2xkZXJTZXR0aW5nc0tleSA9IHRoaXMuX2ZyYW1lLnVybC5oYXNoOwogCkBAIC01
MywxNCArNTUsMjAgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFt
ZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc28KICAgICAgICAgdGhpcy5yZWdp
c3RlckZvbGRlcml6ZVNldHRpbmdzKCJmbG93cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxv
d3MiKSwgdGhpcy5fZnJhbWUuZG9tVHJlZS5jb250ZW50Rmxvd0NvbGxlY3Rpb24sIFdlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50KTsKICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRl
cml6ZVNldHRpbmdzKCJleHRyYS1zY3JpcHRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHRy
YSBTY3JpcHRzIiksIHRoaXMuX2ZyYW1lLmV4dHJhU2NyaXB0Q29sbGVjdGlvbiwgV2ViSW5zcGVj
dG9yLlNjcmlwdFRyZWVFbGVtZW50KTsKIAorICAgICAgICBmdW5jdGlvbiBmb3J3YXJkaW5nQ29u
c3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAg
ICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVTaGVldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0VHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQo
cmVwcmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZSkpIHsKICAgICAgICAgICAgIGxldCBmb2xkZXJOYW1lID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSk7CiAKLSAgICAgICAg
ICAgIGxldCB0cmVlRWxlbWVudENvbnN0cnVjdG9yID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJl
ZUVsZW1lbnQ7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvciA9IGZvcndh
cmRpbmdDb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Q29u
c3RydWN0b3IgPSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2VUcmVlRWxlbWVudDsKIAot
ICAgICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKGtleSwgZm9sZGVyTmFt
ZSwgdGhpcy5fZnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZSh2YWx1ZSksIHRyZWVFbGVt
ZW50Q29uc3RydWN0b3IpOworICAgICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRp
bmdzKGtleSwgZm9sZGVyTmFtZSwgdGhpcy5fZnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlw
ZSh2YWx1ZSksIGZvcndhcmRpbmdDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KIAogICAgICAgICB0
aGlzLnVwZGF0ZVBhcmVudFN0YXR1cygpOwpAQCAtMjUzLDQgKzI2MSwxNSBAQCBXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuUmVzbwogICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRo
aXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwogICAgIH0KKworICAg
IF9zdHlsZVNoZWV0QWRkZWQoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoIWV2ZW50IHx8ICFl
dmVudC5kYXRhIHx8ICFldmVudC5kYXRhLnN0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCFldmVudC5kYXRhLnN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNo
ZWV0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5hZGRSZXByZXNlbnRl
ZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLnN0eWxlU2hlZXQpOworICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCA1ZDk2NTc2YTBhY2UzMmI1NGYz
YzhiNWVkYTBlYjQ2MzM5YWQ0Zjg0Li5iY2YyNGFhZDU1MmI1ZjY1NGVmNjIwZDQ3NWEwMDViMWRi
Mjk3NDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTI3LDcgKzI3LDcg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KIHsKICAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSwg
c3R5bGVDbGFzc05hbWUpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBjb25z
b2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCBy
ZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LCByZXNvdXJjZSk7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBzdHlsZUNsYXNzTmFtZSA9PT0gInN0cmlu
ZyIpOwogCiAgICAgICAgIHN1cGVyKHJlc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSWNvbnMuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3MKaW5k
ZXggNjBlYmQ0NWRkNDUyYWZlNmFlODFiMDdhYjU4MDg3NDcwNDM5YmIxMy4uMGNkMTNhYmExMzQy
YjUxZDVmNzA5ODc0NGNjMTdlOTNjMGFhMmVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3MKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3MKQEAg
LTM5LDcgKzM5LDcgQEAKICAgICBjb250ZW50OiBpbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9Eb2N1
bWVudEZvbnQucG5nKSAxeCwgdXJsKC4uL0ltYWdlcy9Eb2N1bWVudEZvbnRAMngucG5nKSAyeCk7
CiB9CiAKLS5yZXNvdXJjZS1pY29uLnJlc291cmNlLXR5cGUtc3R5bGVzaGVldCAuaWNvbiB7Cis6
bWF0Y2hlcygucmVzb3VyY2UtaWNvbi5yZXNvdXJjZS10eXBlLXN0eWxlc2hlZXQsIC5zdHlsZXNo
ZWV0LWljb24pIC5pY29uIHsKICAgICBjb250ZW50OiBpbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9E
b2N1bWVudENTUy5wbmcpIDF4LCB1cmwoLi4vSW1hZ2VzL0RvY3VtZW50Q1NTQDJ4LnBuZykgMngp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCmluZGV4IDcxYmE3ZmMzNTFl
MzM1M2M1MTcyYWUxNzQyZDZhNWUwMzlkYTVkNTkuLjFmMTM5NzgxMGYzY2ZkYjBmZGVlMzY0NmRm
MGViYmNhODJlZjAzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzCkBAIC02
Myw2ICs2Myw4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJl
c291cmNlU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlNjcmlwdFJlbW92ZWQsIHRoaXMuX3NjcmlwdFdhc1JlbW92ZWQsIHRoaXMp
OwogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRzQ2xlYXJlZCwgdGhpcy5f
c2NyaXB0c0NsZWFyZWQsIHRoaXMpOwogCisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50
LlN0eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKKwogICAgICAg
ICBXZWJJbnNwZWN0b3IudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldFJlbW92ZWQsIHRoaXMuX3RhcmdldFJlbW92ZWQs
IHRoaXMpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRo
aXMuX2V4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcyk7CkBAIC0zOTIsNiArMzk0LDIxIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBh
bmVsIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfc3R5bGVTaGVl
dEFkZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSBldmVudC5kYXRh
LnN0eWxlU2hlZXQ7CisKKyAgICAgICAgLy8gT25seSBzaG93ICJpbnNwZWN0b3IiIHN0eWxlc2hl
ZXRzIGluIHRoZSBSZXNvdXJjZXMgU2lkZWJhci4KKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0Lmlz
SW5zcGVjdG9yU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxl
dCBmcmFtZVRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0
KHN0eWxlU2hlZXQucGFyZW50RnJhbWUpOworICAgICAgICBpZiAoIWZyYW1lVHJlZUVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5hZGRSZXBy
ZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShzdHlsZVNoZWV0KTsKKyAgICB9CisKICAgICBf
YWRkVGFyZ2V0V2l0aE1haW5SZXNvdXJjZSh0YXJnZXQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0YXJnZXQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRhcmdldC5UeXBlLldvcmtlcik7
CkBAIC00MjEsNiArNDM4LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsID0g
Y2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgaWYg
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50CiAg
ICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudAorICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50CiAgICAgICAgICAg
ICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVF
bGVtZW50KSB7CiAgICAgICAgICAgICBjb25zdCBjb29raWUgPSBudWxsOwogICAgICAgICAgICAg
Y29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMK
aW5kZXggNWQzOTYwN2Q2ODhjMjAxN2ZhYjY4MTQ1YWQ3ODUzZWQ2MjhiNWE1MS4uNmI4ZTZjZTRm
OTA1ZWFhMjQ4ZWVhZDEwYWY0MzU2YTc2Y2ZmN2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2Vz
VGFiQ29udGVudFZpZXcuanMKQEAgLTY0LDYgKzY0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
c1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBX
ZWIKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lCiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZQogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0CisgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0CiAgICAgICAgICAgICB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdwog
ICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Q29sbGVjdGlvbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4
IDIwMDEwYTY4NTlkMDliOWNjOWMyNGMyNWY0NTM1ZmY5NTQ4YWJjYzUuLmJjMDk0M2FlMGRlNzQ2
Y2ZjMmFiOGU5MDlhMDUxZTUzODZhMWIyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRp
dG9yLmpzCkBAIC01MTYsNiArNTE2LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAg
ICAgICAgIHRoaXMubWltZVR5cGUgPSB0aGlzLl9zb3VyY2VDb2RlLnN5bnRoZXRpY01JTUVUeXBl
OwogICAgICAgICBlbHNlIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlNjcmlwdCkKICAgICAgICAgICAgIHRoaXMubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0
IjsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9ICJ0ZXh0L2Nz
cyI7CiAKICAgICAgICAgLy8gRGVjaWRlIHRvIGF1dG9tYXRpY2FsbHkgZm9ybWF0IHRoZSBjb250
ZW50IGlmIGl0IGxvb2tzIG1pbmlmaWVkIGFuZCBpdCBjYW4gYmUgZm9ybWF0dGVkLgogICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5mb3JtYXR0ZWQpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkKICAgICAgICAgICAg
IHJldHVybiBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUgPT09IHRoaXMuX3Nv
dXJjZUNvZGU7Ci0gICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuU2NyaXB0KQorICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlNjcmlwdCB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlU2hlZXQpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLnNvdXJj
ZUNvZGUudXJsID09PSB0aGlzLl9zb3VyY2VDb2RlLnVybDsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTk3OCw3ICs5ODAsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9u
LmRpc3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlOwotICAgICAgICBpZiAodGhp
cy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAgICAg
aWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwg
dGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQog
ICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybCA9PT0g
dGhpcy5fc291cmNlQ29kZS51cmw7CiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VDb2Rl
TG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNlQ29kZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZWI0NGI4ZDA0ZWI1ZjBkOWI4ZTBmMTcyMTVm
YzA3MDRiMjRjYzNhMy4uZTlhMjRlNzM0ZmNhNjc5MzM2OGE2MTExZDg1YTEzODlhODU4OTI3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTEyNiw4ICsxMjYs
MTUgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJl
c291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5j
bG9zZSgpOwogICAgIH0KIAorICAgIGdldCBzdXBwb3J0c1NhdmUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN1cGVyLnN1cHBvcnRzU2F2ZSB8fCB0aGlzLnJlc291cmNlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQ7CisgICAgfQorCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAg
ICB7CisgICAgICAgIGlmICh0aGlzLnJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm4ge3VybDogIndlYi1pbnNwZWN0b3I6Ly8v
SW5zcGVjdG9yU3R5bGVTaGVldC5jc3MiLCBjb250ZW50OiB0aGlzLl90ZXh0RWRpdG9yLnN0cmlu
ZywgZm9yY2VTYXZlQXM6IHRydWV9OwogICAgICAgICByZXR1cm4ge3VybDogdGhpcy5yZXNvdXJj
ZS51cmwsIGNvbnRlbnQ6IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nfTsKICAgICB9CiAKQEAgLTE4
MywxMyArMTkwLDE3IEBAIFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNs
YXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIGlmICh0aGlz
Ll90ZXh0RWRpdG9yLnBhcmVudFZpZXcgPT09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgLy8gQ2hlY2sgdGhlIE1JTUUtdHlwZSBmb3IgQ1NTIHNpbmNlIFJlc291cmNlLlR5
cGUuU3R5bGVzaGVldCBhbHNvIGluY2x1ZGVzIFhTTCwgd2hpY2ggd2UgY2FuJ3QgZWRpdCB5ZXQu
Ci0gICAgICAgIGlmICh0aGlzLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5UeXBlLlN0eWxlc2hlZXQgJiYgdGhpcy5yZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSA9PT0g
InRleHQvY3NzIikKLSAgICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSBmYWxz
ZTsKLQotICAgICAgICAvLyBBbGxvdyBlZGl0aW5nIGFueSBsb2NhbCBmaWxlIHNpbmNlIGVkaXRz
IGNhbiBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgcmlnaHQgZnJvbSB0aGUgSW5zcGVjdG9yLgotICAg
ICAgICBpZiAodGhpcy5yZXNvdXJjZS51cmxDb21wb25lbnRzLnNjaGVtZSA9PT0gImZpbGUiKQor
ICAgICAgICBpZiAodGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0KQogICAgICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIENoZWNrIHRoZSBNSU1FLXR5cGUgZm9yIENT
UyBzaW5jZSBSZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQgYWxzbyBpbmNsdWRlcyBYU0wsIHdoaWNo
IHdlIGNhbid0IGVkaXQgeWV0LgorICAgICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCAmJiB0aGlzLnJlc291cmNl
LnN5bnRoZXRpY01JTUVUeXBlID09PSAidGV4dC9jc3MiKQorICAgICAgICAgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IucmVhZE9ubHkgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gQWxsb3cgZWRp
dGluZyBhbnkgbG9jYWwgZmlsZSBzaW5jZSBlZGl0cyBjYW4gYmUgc2F2ZWQgYW5kIHJlbG9hZGVk
IHJpZ2h0IGZyb20gdGhlIEluc3BlY3Rvci4KKyAgICAgICAgICAgIGlmICh0aGlzLnJlc291cmNl
LnVybENvbXBvbmVudHMuc2NoZW1lID09PSAiZmlsZSIpCisgICAgICAgICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5l
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl90
ZXh0RWRpdG9yKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310458</attachid>
            <date>2017-05-17 16:31:07 -0700</date>
            <delta_ts>2017-05-19 14:57:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138810-20170517163106.patch</filename>
            <type>text/plain</type>
            <size>37927</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDEyNmMxNjEwYWViNWYxNjYwNzliYzkxNjc2NjMy
ZWFhMGE4NzliN2YuLjA4M2NkMzg0MTcxMDliODYzNGExZjY2YjkwZDNjY2E1MzQyMTAwOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg1IEBACisyMDE3LTA1LTE3ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBO
ZXcgQ1NTIFJ1bGVzIHNob3VsZCBnbyBpbnRvIGEgbmV3IFN0eWxlc2hlZXQgUmVzb3VyY2UgdGhh
dCBjYW4gYmUgdmlld2VkL2VkaXRlZC9zYXZlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxl
TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUucHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIucHJvdG90eXBlLnN0eWxlU2hlZXRDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1hbmFnZXIucHJvdG90eXBlLl9sb29rdXBTdHlsZVNoZWV0Rm9yU291cmNl
Q29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5f
c291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UuYXBwbHlTdHlsZVNoZWV0Q2hhbmdlcy5zdHlsZVNo
ZWV0Rm91bmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5
cGUuX3NvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlLmFwcGx5U3R5bGVTaGVldENoYW5nZXMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuX3NvdXJjZUNv
ZGVDb250ZW50RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFn
ZXIucHJvdG90eXBlLl91cGRhdGVDb250ZW50LmZldGNoZWRTdHlsZVNoZWV0Q29udGVudCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5fbG9va3VwU3R5
bGVTaGVldEZvclJlc291cmNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1hbmFnZXIucHJvdG90eXBlLl9yZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2UpOiBEZWxldGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0
ZVJlc291cmNlQ29udGVudCk6IERlbGV0ZWQuCisgICAgICAgIFJlZmFjdG9yIG1ldGhvZHMgdG8g
dXNlIFNvdXJjZUNvZGUgaW5zdGVhZCBvZiBSZXNvdXJjZSB0byBzdXBwb3J0IENTU1N0eWxlU2hl
ZXQgb2JqZWN0cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAg
ICBJbmNsdWRlIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5TdHlsZXNoZWV0KToKKyAgICAgICAgQWRkIFR5
cGVWZXJpZmllciBmb3IgQ1NTU3R5bGVTaGVldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZVN0
eWxlcy5wcm90b3R5cGUuX3BhcnNlUnVsZVBheWxvYWQpOgorICAgICAgICBNYW51YWxseSBjcmVh
dGUgYSBTb3VyY2VDb2RlTG9jYXRpb24gb2JqZWN0IGZvciBJbnNwZWN0b3IgU3R5bGUgU2hlZXRz
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVsZW1l
bnQuanM6IEFkZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXRUcmVlRWxl
bWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5nZXQgc3R5bGVTaGVldCk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1Jlc291cmNlSWNvbnMuY3NzOgorICAgICAgICAoOm1hdGNoZXMoLnJlc291cmNlLWljb24ucmVz
b3VyY2UtdHlwZS1zdHlsZXNoZWV0LCAuc3R5bGVzc2hlZXQtaWNvbikgLmljb24pOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQuZm9yd2FyZGluZ0NvbnN0cnVjdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdHlsZVNoZWV0
QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fc3R5bGVT
aGVldEFkZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX3RyZWVTZWxlY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICBMaXN0ZW4gZm9yIHRo
ZSBjcmVhdGlvbiBvZiBDU1NTdHlsZVNoZWV0IG9iamVjdHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBz
aWRlYmFyIGlmIHRoZXkgYXJlIGFuCisgICAgICAgIEluc3BlY3RvciBTdHlsZSBTaGVldC4gIFJl
Z3VsYXIgc3R5bGUgc2hlZXRzIGFyZSBhZGRlZCB2aWEgdGhlaXIgcmVzcGVjdGl2ZSByZXNvdXJj
ZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUuX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBQ
cmV2ZW50IENTU1N0eWxlU2hlZXRUcmVlRWxlbWVudCBpbnN0YW5jZXMgZnJvbSBhdHRlbXB0aW5n
IHRvIHNhdmUgc3RhdGUgdG8gYSBjb29raWUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jh
c2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9y
UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJl
cHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1Zp
ZXdhYmxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRl
bnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5jYW5TaG93UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLnByb3RvdHlwZS5fcHJlcGFyZUVkaXRvckZvckluaXRpYWxDb250ZW50KToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2xvb3Nl
bHlNYXRjaGVzU291cmNlQ29kZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX21hdGNoZXNTb3VyY2VDb2RlTG9jYXRpb24pOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3Vw
cG9ydHNTYXZlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dy5wcm90b3R5cGUuZ2V0IHNhdmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2NvbnRlbnRXaWxsUG9wdWxhdGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hvdWxk
QmVSZWFkT25seSk6CisgICAgICAgIFN1cHBvcnQgZWRpdGluZyBhbmQgc2F2aW5nIGFuIEluc3Bl
Y3RvciBTdHlsZSBTaGVldCB2aWEgaXRzIENTU1N0eWxlU2hlZXQgb2JqZWN0LgorCiAyMDE3LTA1
LTE1ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFtHVEtdIFdlYiBJbnNwZWN0b3I6IEFkZCBuZXcgR1RLKyBpY29ucyBmb3IgU2VhcmNoIGljb24g
b2YgUXVpY2sgT3BlbiBkaWFsb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4
IGU3MTZlNjdjYzdkN2I5MGM0NjY0YjZjN2UyNzZmMjgzYmVkZDY4OGYuLjkwODliMTdlODA0ZTk2
YTQ4YTgwYWY2MTE1MGFkNzA5NjFiNDMzZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5n
cy5qcwpAQCAtNDYwLDYgKzQ2MCw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIkluaXRpYXRlZCJdID0g
IkluaXRpYXRlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbml0aWF0b3IiXSA9ICJJbml0aWF0b3Ii
OwogbG9jYWxpemVkU3RyaW5nc1siSW5wdXQ6ICJdID0gIklucHV0OiAiOwogbG9jYWxpemVkU3Ry
aW5nc1siSW5zZXQiXSA9ICJJbnNldCI7Citsb2NhbGl6ZWRTdHJpbmdzWyJJbnNwZWN0b3IgU3R5
bGUgU2hlZXQiXSA9ICJJbnNwZWN0b3IgU3R5bGUgU2hlZXQiOwogbG9jYWxpemVkU3RyaW5nc1si
SW5zdGFuY2VzIl0gPSAiSW5zdGFuY2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkludmFsaWQiXSA9
ICJJbnZhbGlkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkludmFsaWQgY2hhcmFjdGVycyJdID0gIklu
dmFsaWQgY2hhcmFjdGVycyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9CYXNlL01haW4uanMKaW5kZXggZDc4ZTdhZTZjNDdkMjM5ZjdmMjI2NmI5ODhmMjEwOWZj
NGQ0YWRjZC4uOTJmYWMxMmY4ZjRjNjhjMTlkMmJkMjRlNDlhYTU2MjY1NTMwOTY5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAt
MTEyNSw3ICsxMTI1LDEwIEBAIFdlYkluc3BlY3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9yUmVw
cmVzZW50ZWRPYmplY3QgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjCiAgICAgICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLkRlYnVnZ2VyVGFiQ29udGVudFZpZXc7CiAgICAgfQogCi0gICAg
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKKyAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUKKyAgICAgICAgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UKKyAgICAg
ICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0Cisg
ICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlN0eWxl
U2hlZXQpCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZp
ZXc7CiAKICAgICAvLyBGSVhNRTogTW92ZSBDb250ZW50IEZsb3dzIHRvIHRoZSBFbGVtZW50cyB0
YWI/CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKaW5kZXggOGUxMDFlMzFmMGQz
MjM5ZTM5Yjk2MGI1YzlmZGQyZWY1OTQyN2QyNi4uODNkMjQ0YmQ2NWRjOTFhOWVjYjdjMzE2OWNj
NGQzMjZmZWE1NzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcwpAQCAt
MzQsNyArMzQsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5
bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5G
cmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkLCB0aGlzLl9yZXNvdXJjZUFkZGVkLCB0aGlzKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VDb250
ZW50RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hh
bmdlLCB0aGlzLl9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UsIHRoaXMp
OwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5ET01Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX25vZGVBdHRyaWJ1
dGVzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICByZXR1cm4gc3R5bGVzOwogICAgIH0KIAotICAgIHByZWZlcnJlZElu
c3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShmcmFtZSwgY2FsbGJhY2spCisgICAgcHJlZmVycmVk
SW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGZyYW1lLCBjYWxsYmFjaywgZG9udENyZWF0ZUlm
TWlzc2luZykKICAgICB7CiAgICAgICAgIHZhciBpbnNwZWN0b3JTdHlsZVNoZWV0cyA9IHRoaXMu
X2luc3BlY3RvclN0eWxlU2hlZXRzRm9yRnJhbWUoZnJhbWUpOwogICAgICAgICBmb3IgKGxldCBz
dHlsZVNoZWV0IG9mIGluc3BlY3RvclN0eWxlU2hlZXRzKSB7CkBAIC0xNzcsNiArMTc3LDkgQEAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNsYXNzIENTU1N0eWxlTWFuYWdlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAg
ICAgIGlmIChkb250Q3JlYXRlSWZNaXNzaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAg
ICAgIGlmIChDU1NBZ2VudC5jcmVhdGVTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICBDU1NBZ2Vu
dC5jcmVhdGVTdHlsZVNoZWV0KGZyYW1lLmlkLCBmdW5jdGlvbihlcnJvciwgc3R5bGVTaGVldElk
KSB7CiAgICAgICAgICAgICAgICAgbGV0IHN0eWxlU2hlZXQgPSBXZWJJbnNwZWN0b3IuY3NzU3R5
bGVNYW5hZ2VyLnN0eWxlU2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZCk7CkBAIC0yODAs
NyArMjgzLDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNsYXNzIENTU1N0eWxl
TWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBzdHlsZVNoZWV0Lm5vdGVDb250ZW50RGlkQ2hhbmdlKCk7Ci0gICAgICAgIHRo
aXMuX3VwZGF0ZVJlc291cmNlQ29udGVudChzdHlsZVNoZWV0KTsKKyAgICAgICAgdGhpcy5fdXBk
YXRlQ29udGVudChzdHlsZVNoZWV0KTsKICAgICB9CiAKICAgICBzdHlsZVNoZWV0QWRkZWQoc3R5
bGVTaGVldEluZm8pCkBAIC0zOTUsOSArMzk4LDkgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFu
YWdlciA9IGNsYXNzIENTU1N0eWxlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
ICAgICAgICAgcmV0dXJuIGZyYW1lLmlkICsgIjoiICsgdXJsOwogICAgIH0KIAotICAgIF9sb29r
dXBTdHlsZVNoZWV0Rm9yUmVzb3VyY2UocmVzb3VyY2UsIGNhbGxiYWNrKQorICAgIF9sb29rdXBT
dHlsZVNoZWV0Rm9yU291cmNlQ29kZShzb3VyY2VDb2RlLCBjYWxsYmFjaykKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2xvb2t1cFN0eWxlU2hlZXQocmVzb3VyY2UucGFyZW50RnJhbWUsIHJlc291cmNl
LnVybCwgY2FsbGJhY2spOworICAgICAgICB0aGlzLl9sb29rdXBTdHlsZVNoZWV0KHNvdXJjZUNv
ZGUucGFyZW50RnJhbWUsIHNvdXJjZUNvZGUudXJsLCBjYWxsYmFjayk7CiAgICAgfQogCiAgICAg
X2xvb2t1cFN0eWxlU2hlZXQoZnJhbWUsIHVybCwgY2FsbGJhY2spCkBAIC00NTMsNzMgKzQ1Niw3
OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2Vy
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICBDU1NBZ2VudC5nZXRBbGxTdHls
ZVNoZWV0cyhwcm9jZXNzU3R5bGVTaGVldHMuYmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgX3Jl
c291cmNlQ29udGVudERpZENoYW5nZShldmVudCkKKyAgICBfc291cmNlQ29kZUNvbnRlbnREaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC50YXJnZXQ7
Ci0gICAgICAgIGlmIChyZXNvdXJjZSA9PT0gdGhpcy5faWdub3JlUmVzb3VyY2VDb250ZW50RGlk
Q2hhbmdlRXZlbnRGb3JSZXNvdXJjZSkKKyAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBldmVudC50
YXJnZXQ7CisgICAgICAgIGlmIChzb3VyY2VDb2RlID09PSB0aGlzLl9pZ25vcmVDb250ZW50RGlk
Q2hhbmdlRXZlbnRGb3JTb3VyY2VDb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IC8vIElnbm9yZSBpZiBpdCBpc24ndCBhIENTUyBzdHlsZXNoZWV0LgotICAgICAgICBpZiAocmVz
b3VyY2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCB8fCBy
ZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSAhPT0gInRleHQvY3NzIikKKyAgICAgICAgaWYgKCEo
c291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KSAmJiAoc291
cmNlQ29kZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0IHx8
IHNvdXJjZUNvZGUuc3ludGhldGljTUlNRVR5cGUgIT09ICJ0ZXh0L2NzcyIpKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIGZ1bmN0aW9uIGFwcGx5U3R5bGVTaGVldENoYW5nZXMoKQog
ICAgICAgICB7CiAgICAgICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0Rm91bmQoc3R5bGVTaGVl
dCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXNvdXJjZS5fX3BlbmRpbmdDaGFu
Z2VUaW1lb3V0ID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIHNvdXJjZUNvZGUuX19wZW5k
aW5nQ2hhbmdlVGltZW91dCA9IHVuZGVmaW5lZDsKIAogICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHN0eWxlU2hlZXQpOwogICAgICAgICAgICAgICAgIGlmICghc3R5bGVTaGVldCkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAgICAgLy8gVG8gcHJldmVu
dCB1cGRhdGluZyBhIFRleHRFZGl0b3IncyBjb250ZW50IHdoaWxlIHRoZSB1c2VyIGlzIHR5cGlu
ZyBpbiBpdCB3ZSB3YW50IHRvCi0gICAgICAgICAgICAgICAgLy8gaWdub3JlIHRoZSBuZXh0IF91
cGRhdGVSZXNvdXJjZUNvbnRlbnQgY2FsbC4KLSAgICAgICAgICAgICAgICByZXNvdXJjZS5fX2ln
bm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIC8v
IGlnbm9yZSB0aGUgbmV4dCBfdXBkYXRlQ29udGVudCBjYWxsLgorICAgICAgICAgICAgICAgIHNv
dXJjZUNvZGUuX19pZ25vcmVOZXh0VXBkYXRlQ29udGVudCA9IHRydWU7CiAKLSAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuYnJhbmNoTWFuYWdlci5jdXJyZW50QnJhbmNoLnJldmlzaW9uRm9y
UmVwcmVzZW50ZWRPYmplY3Qoc3R5bGVTaGVldCkuY29udGVudCA9IHJlc291cmNlLmNvbnRlbnQ7
CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmJyYW5jaE1hbmFnZXIuY3VycmVudEJyYW5j
aC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHN0eWxlU2hlZXQpLmNvbnRlbnQgPSBzb3Vy
Y2VDb2RlLmNvbnRlbnQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuX2xvb2t1
cFN0eWxlU2hlZXRGb3JSZXNvdXJjZShyZXNvdXJjZSwgc3R5bGVTaGVldEZvdW5kLmJpbmQodGhp
cykpOworICAgICAgICAgICAgdGhpcy5fbG9va3VwU3R5bGVTaGVldEZvclNvdXJjZUNvZGUoc291
cmNlQ29kZSwgc3R5bGVTaGVldEZvdW5kLmJpbmQodGhpcykpOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKHJlc291cmNlLl9fcGVuZGluZ0NoYW5nZVRpbWVvdXQpCi0gICAgICAgICAgICBjbGVh
clRpbWVvdXQocmVzb3VyY2UuX19wZW5kaW5nQ2hhbmdlVGltZW91dCk7Ci0gICAgICAgIHJlc291
cmNlLl9fcGVuZGluZ0NoYW5nZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGFwcGx5U3R5bGVTaGVldENo
YW5nZXMuYmluZCh0aGlzKSwgNTAwKTsKKyAgICAgICAgaWYgKHNvdXJjZUNvZGUuX19wZW5kaW5n
Q2hhbmdlVGltZW91dCkKKyAgICAgICAgICAgIGNsZWFyVGltZW91dChzb3VyY2VDb2RlLl9fcGVu
ZGluZ0NoYW5nZVRpbWVvdXQpOworICAgICAgICBzb3VyY2VDb2RlLl9fcGVuZGluZ0NoYW5nZVRp
bWVvdXQgPSBzZXRUaW1lb3V0KGFwcGx5U3R5bGVTaGVldENoYW5nZXMuYmluZCh0aGlzKSwgNTAw
KTsKICAgICB9CiAKLSAgICBfdXBkYXRlUmVzb3VyY2VDb250ZW50KHN0eWxlU2hlZXQpCisgICAg
X3VwZGF0ZUNvbnRlbnQoc3R5bGVTaGVldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHN0eWxlU2hlZXQpOwogCiAgICAgICAgIGZ1bmN0aW9uIGZldGNoZWRTdHlsZVNoZWV0Q29udGVu
dChwYXJhbWV0ZXJzKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc3R5bGVTaGVldCA9IHBh
cmFtZXRlcnMuc291cmNlQ29kZTsKLSAgICAgICAgICAgIHZhciBjb250ZW50ID0gcGFyYW1ldGVy
cy5jb250ZW50OworICAgICAgICAgICAgbGV0IHJlcHJlc2VudGVkT2JqZWN0ID0gcGFyYW1ldGVy
cy5zb3VyY2VDb2RlOworICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuX19wZW5kaW5nQ2hh
bmdlVGltZW91dCA9IHVuZGVmaW5lZDsKIAotICAgICAgICAgICAgc3R5bGVTaGVldC5fX3BlbmRp
bmdDaGFuZ2VUaW1lb3V0ID0gdW5kZWZpbmVkOwotCi0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZVNoZWV0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQudXJsKQorICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QudXJsKTsKKyAgICAgICAg
ICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QudXJsKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gc3R5bGVTaGVldC5wYXJlbnRGcmFtZS5yZXNv
dXJjZUZvclVSTChzdHlsZVNoZWV0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXJlc291cmNlKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmpl
Y3QuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpIHsKKyAgICAgICAgICAgICAgICByZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0LnBhcmVudEZyYW1lLnJlc291cmNlRm9yVVJMKHJl
cHJlc2VudGVkT2JqZWN0LnVybCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXByZXNlbnRlZE9i
amVjdCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAvLyBPbmx5
IHRyeSB0byB1cGRhdGUgc3R5bGVzaGVldCByZXNvdXJjZXMuIE90aGVyIHJlc291cmNlcywgbGlr
ZSBkb2N1bWVudHMsIGNhbiBjb250YWluCi0gICAgICAgICAgICAvLyBtdWx0aXBsZSBzdHlsZXNo
ZWV0cyBhbmQgd2UgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIHJhbmdlcyB0byB1cGRhdGUgdGhvc2Uu
Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLlJlc291cmNl
LlR5cGUuU3R5bGVzaGVldCkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgLy8gT25seSB0cnkgdG8gdXBkYXRlIHN0eWxlc2hlZXQgcmVzb3VyY2VzLiBPdGhlciByZXNv
dXJjZXMsIGxpa2UgZG9jdW1lbnRzLCBjYW4gY29udGFpbgorICAgICAgICAgICAgICAgIC8vIG11
bHRpcGxlIHN0eWxlc2hlZXRzIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgcmFuZ2VzIHRv
IHVwZGF0ZSB0aG9zZS4KKyAgICAgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QudHlw
ZSAhPT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2UuX19pZ25vcmVOZXh0VXBkYXRlUmVzb3VyY2VDb250ZW50KSB7Ci0gICAgICAgICAgICAgICAg
cmVzb3VyY2UuX19pZ25vcmVOZXh0VXBkYXRlUmVzb3VyY2VDb250ZW50ID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QuX19pZ25vcmVOZXh0VXBkYXRlQ29udGVudCkg
eworICAgICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9faWdub3JlTmV4dFVwZGF0ZUNv
bnRlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIHRoaXMuX2lnbm9yZVJlc291cmNlQ29udGVudERpZENoYW5nZUV2ZW50Rm9y
UmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5icmFuY2hNYW5h
Z2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZSku
Y29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJjZUNvbnRl
bnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX2ln
bm9yZUNvbnRlbnREaWRDaGFuZ2VFdmVudEZvclNvdXJjZUNvZGUgPSByZXByZXNlbnRlZE9iamVj
dDsKKworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmJyYW5jaE1hbmFnZXIuY3VycmVudEJyYW5j
aC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KS5jb250ZW50
ID0gcmVwcmVzZW50ZWRPYmplY3QuY29udGVudDsKKworICAgICAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU291cmNl
Q29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlKTsKKworICAgICAgICAgICAgdGhpcy5faWdub3Jl
Q29udGVudERpZENoYW5nZUV2ZW50Rm9yU291cmNlQ29kZSA9IG51bGw7CiAgICAgICAgIH0KIAog
ICAgICAgICBmdW5jdGlvbiBzdHlsZVNoZWV0UmVhZHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGRiYjgzYWU3OTQ0YWE2YmU3ZTVlMDM4
Y2U5ZDMwOGIwMzhjNGM1ZDEuLmI3ZjQzY2U3MjVhZDg3ZjJjNmMxYzRhNjc3MTA0MzRhNWJkNjYy
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
QEAgLTUwNiw2ICs1MDYsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NTU1N0
eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DYWxsRnJhbWVWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQ2hhcnREZXRhaWxzU2VjdGlvblJvdy5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ29s
bGVjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
b2xsZWN0aW9uLmpzCmluZGV4IDhjNzczOWY4MzdiYTI4ZTE5MmY1YTk2OWFmN2UwMTc3ZTU2MWZh
YmYuLmM2M2U0ZTQ1M2UwODc3ZGUzMjg5MTNiZmIzZWYzM2VkM2RhNmM2YmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0
aW9uLmpzCkBAIC0xMTYsNCArMTE2LDUgQEAgV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24gPSBjbGFz
cyBDb2xsZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIEZyYW1lOiAob2Jq
ZWN0KSA9PiBvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUsCiAgICAgUmVzb3Vy
Y2U6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSwK
ICAgICBTY3JpcHQ6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5T
Y3JpcHQsCisgICAgQ1NTU3R5bGVTaGVldDogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRl
eCAwNmQ1ZWFmMTA3MDY4ZWM3YTZmZGU4NjczMmQ1Y2ZkMjVkOWJjYmY1Li4xZTdlZDAxNDZiZjVi
Yzk3MzZmNDM0YTU1NGQ1OWI5MDc4NTcxMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAt
NzY1LDggKzc2NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5v
ZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICBzb3VyY2VD
b2RlTG9jYXRpb24gPSB0aGlzLl9jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24ocGF5bG9hZC5zb3Vy
Y2VVUkwsIHBheWxvYWQuc291cmNlTGluZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3R5
bGVTaGVldCkKKyAgICAgICAgaWYgKHN0eWxlU2hlZXQpIHsKKyAgICAgICAgICAgIGlmICghc291
cmNlQ29kZUxvY2F0aW9uICYmIHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpCisg
ICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gc3R5bGVTaGVldC5jcmVhdGVTb3Vy
Y2VDb2RlTG9jYXRpb24oc291cmNlUmFuZ2Uuc3RhcnRMaW5lLCBzb3VyY2VSYW5nZS5zdGFydENv
bHVtbikKKwogICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gc3R5bGVTaGVldC5vZmZz
ZXRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIHZhciBtZWRpYUxpc3QgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHBheWxv
YWQubWVkaWEgJiYgaSA8IHBheWxvYWQubWVkaWEubGVuZ3RoOyArK2kpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxl
Y3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVz
b3VyY2VDb2xsZWN0aW9uLmpzCmluZGV4IGJkMzhhZDJmNWFhZmU5MTY3ZDY1OWRmNDhhN2QxYWUx
ZWQ5ZTlmNzEuLmVjNWFkN2M1NWMwZGVmMWE3YjM4Y2I3NTU4NWNhYTcwMjZmMjlkZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJj
ZUNvbGxlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcwpAQCAtMTg4LDcgKzE4OCwxMSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLgogCiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVW
ZXJpZmllciA9IHsKICAgICBEb2N1bWVudDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxl
Y3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LAotICAgIFN0eWxlc2hlZXQ6IChvYmpl
Y3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmpl
Y3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNo
ZWV0LAorICAgIFN0eWxlc2hlZXQ6IChvYmplY3QpID0+IHsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5DU1NTdHlsZVNoZWV0KG9iamVjdCkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0CisgICAgfSwKICAgICBJbWFnZTogKG9i
amVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9i
amVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkltYWdl
LAogICAgIEZvbnQ6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJp
Zmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5Gb250LAogICAgIFNjcmlwdDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNv
bGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
U2hlZXRUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDliMjI2ZTc4ZjY3M2IwNjU4MDUzNWI4
MGFhNjk3YWMxZDM4MzkzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50LmpzCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVt
ZW50ID0gY2xhc3MgQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHN0eWxlU2hlZXQpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQpOworICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZVNoZWV0
LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKTsKKworICAgICAgICBjb25zdCBjbGFzc05hbWVzID0g
WyJzdHlsZXNoZWV0IiwgInN0eWxlc2hlZXQtaWNvbiJdOworICAgICAgICBjb25zdCB0aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5zcGVjdG9yIFN0eWxlIFNoZWV0Iik7CisgICAgICAg
IGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKKyAgICAgICAgY29uc3QgaGFzQ2hpbGRyZW4gPSBmYWxz
ZTsKKyAgICAgICAgc3VwZXIoc3R5bGVTaGVldCwgY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxl
LCBzdHlsZVNoZWV0LCBoYXNDaGlsZHJlbik7CisKKyAgICAgICAgdGhpcy5fc3R5bGVTaGVldCA9
IHN0eWxlU2hlZXQ7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc3R5bGVTaGVl
dCgpIHsgcmV0dXJuIHRoaXMuX3N0eWxlU2hlZXQ7IH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IGE2ODc5YzYxMmQ0Y2YzZmUyMjUzNTMxYTZiOTI2Mjc5NjI4OGZkNjkuLjFmN2ZmMGI4MmIzMTE0
ZWVhYzFiZDg1YzMzOTU3ZWJmOGJmNjA0NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC01NCw2ICs1
NCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50
cyk7CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmVzb3VyY2VDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMp
OworCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZykKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJn
dW1lbnRzKTsKIApAQCAtMjM0LDYgKzIzNyw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9
IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZykKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCBhYzMz
NzMwZDBjOTg1ZGQ5YmE2MDgwMWVlZjI0NzNhYTM5NzU4MTE4Li5iMDM2NmEwZjRlNmJlZTdlZDg2
NzI5ZDAxY2Y4ODgxMjNlMzRlYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKQEAgLTUz
LDE0ICs1MywyMCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1l
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzbwogICAgICAgICB0aGlzLnJlZ2lz
dGVyRm9sZGVyaXplU2V0dGluZ3MoImZsb3dzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93
cyIpLCB0aGlzLl9mcmFtZS5kb21UcmVlLmNvbnRlbnRGbG93Q29sbGVjdGlvbiwgV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQpOwogICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVy
aXplU2V0dGluZ3MoImV4dHJhLXNjcmlwdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4dHJh
IFNjcmlwdHMiKSwgdGhpcy5fZnJhbWUuZXh0cmFTY3JpcHRDb2xsZWN0aW9uLCBXZWJJbnNwZWN0
b3IuU2NyaXB0VHJlZUVsZW1lbnQpOwogCisgICAgICAgIGZ1bmN0aW9uIGZvcndhcmRpbmdDb25z
dHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgLi4uZXh0cmFBcmd1bWVudHMpIHsKKyAgICAgICAg
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0KQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
U2hlZXRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCwgLi4uZXh0cmFBcmd1bWVudHMpOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudChy
ZXByZXNlbnRlZE9iamVjdCwgLi4uZXh0cmFBcmd1bWVudHMpOworICAgICAgICB9CisKICAgICAg
ICAgZm9yIChsZXQgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlKSkgewogICAgICAgICAgICAgbGV0IGZvbGRlck5hbWUgPSBXZWJJbnNwZWN0
b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0cnVlKTsKIAotICAgICAgICAg
ICAgbGV0IHRyZWVFbGVtZW50Q29uc3RydWN0b3IgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RWxlbWVudDsKKyAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudENvbnN0cnVjdG9yID0gZm9yd2Fy
ZGluZ0NvbnN0cnVjdG9yOwogICAgICAgICAgICAgaWYgKHZhbHVlID09PSBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpCiAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnRDb25z
dHJ1Y3RvciA9IFdlYkluc3BlY3Rvci5XZWJTb2NrZXRSZXNvdXJjZVRyZWVFbGVtZW50OwogCi0g
ICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3Moa2V5LCBmb2xkZXJOYW1l
LCB0aGlzLl9mcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb25Gb3JUeXBlKHZhbHVlKSwgdHJlZUVsZW1l
bnRDb25zdHJ1Y3Rvcik7CisgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGlu
Z3Moa2V5LCBmb2xkZXJOYW1lLCB0aGlzLl9mcmFtZS5yZXNvdXJjZUNvbGxlY3Rpb25Gb3JUeXBl
KHZhbHVlKSwgZm9yd2FyZGluZ0NvbnN0cnVjdG9yKTsKICAgICAgICAgfQogCiAgICAgICAgIHRo
aXMudXBkYXRlUGFyZW50U3RhdHVzKCk7CkBAIC0xMTMsNiArMTE5LDE1IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYklu
c3BlY3Rvci5SZXNvCiAgICAgewogICAgICAgICAvLyBJbW1lZGlhdGUgc3VwZXJjbGFzc2VzIGFy
ZSBza2lwcGVkLCBzaW5jZSBGcmFtZXMgaGFuZGxlIHRoZWlyIG93biBTb3VyY2VNYXBSZXNvdXJj
ZXMuCiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
YXR0YWNoLmNhbGwodGhpcyk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5
bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWQsIHRoaXMpOworICAgIH0KKworICAg
IG9uZGV0YWNoKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0
eWxlU2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKKworICAgICAgICBz
dXBlci5vbmRldGFjaCgpOwogICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIEZvbGRlcml6
ZWRUcmVlRWxlbWVudCAoUHJvdGVjdGVkKS4KQEAgLTE3MCw2ICsxODUsOSBAQCBXZWJJbnNwZWN0
b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuUmVzbwogICAgICAgICAgICAgaWYgKGV4dHJhU2NyaXB0LnNvdXJjZVVSTCB8fCBl
eHRyYVNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMKQogICAgICAgICAgICAgICAgIHRoaXMuYWRkQ2hp
bGRGb3JSZXByZXNlbnRlZE9iamVjdChleHRyYVNjcmlwdCk7CiAgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBkb250Q3JlYXRlSWZNaXNzaW5nID0gdHJ1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUodGhp
cy5fZnJhbWUsIHRoaXMuYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0NoaWxkUXVldWUuYmluZCh0
aGlzKSwgZG9udENyZWF0ZUlmTWlzc2luZyk7CiAgICAgfQogCiAgICAgb25leHBhbmQoKQpAQCAt
MjUzLDQgKzI3MSwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZy
YW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzbwogICAgICAgICBpZiAodGhp
cy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRl
bnRGbG93TGlzdCgpOwogICAgIH0KKworICAgIF9zdHlsZVNoZWV0QWRkZWQoZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVk
T2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuc3R5bGVTaGVldCk7CisgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IDRjMzI3NjNjYmU5MTg4
M2E5YWI3YTRiYjAyNjI4MmZkYjk0N2NhZDMuLmJhZTJkNDAyNjgzOTg3OTNlMTczZWY1M2QwN2Jk
Y2QxZWUyNzU3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAt
NjQ1LDYgKzY0NSw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAgICAgICAgICAgICB8fCB0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JZGxlVHJlZUVsZW1lbnQKICAgICAg
ICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50CisgICAgICAgICAgICB8fCB0cmVlRWxl
bWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQKICAg
ICAgICAgICAgIHx8IHR5cGVvZiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gInN0
cmluZyIKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDVkOTY1NzZhMGFjZTMyYjU0ZjNjOGI1ZWRhMGViNDYzMzlhZDRmODQuLmJjZjI0YWFkNTUyYjVm
NjU0ZWY2MjBkNDc1YTAwNWIxZGIyOTc0MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmll
dy5qcwpAQCAtMjcsNyArMjcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldyA9
IGNsYXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0bwogewogICAgIGNv
bnN0cnVjdG9yKHJlc291cmNlLCBzdHlsZUNsYXNzTmFtZSkKICAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlLCByZXNv
dXJjZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlc291cmNlIHx8IHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlU2hlZXQsIHJlc291cmNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHN0eWxl
Q2xhc3NOYW1lID09PSAic3RyaW5nIik7CiAKICAgICAgICAgc3VwZXIocmVzb3VyY2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VJY29ucy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZUljb25zLmNzcwppbmRleCA2MGViZDQ1ZGQ0NTJhZmU2YWU4MWIwN2FiNTgwODc0NzA0
MzliYjEzLi4wY2QxM2FiYTEzNDJiNTFkNWY3MDk4NzQ0Y2MxN2U5M2MwYWEyZWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUlj
b25zLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZUljb25zLmNzcwpAQCAtMzksNyArMzksNyBAQAogICAgIGNvbnRlbnQ6IGltYWdlLXNl
dCh1cmwoLi4vSW1hZ2VzL0RvY3VtZW50Rm9udC5wbmcpIDF4LCB1cmwoLi4vSW1hZ2VzL0RvY3Vt
ZW50Rm9udEAyeC5wbmcpIDJ4KTsKIH0KIAotLnJlc291cmNlLWljb24ucmVzb3VyY2UtdHlwZS1z
dHlsZXNoZWV0IC5pY29uIHsKKzptYXRjaGVzKC5yZXNvdXJjZS1pY29uLnJlc291cmNlLXR5cGUt
c3R5bGVzaGVldCwgLnN0eWxlc2hlZXQtaWNvbikgLmljb24gewogICAgIGNvbnRlbnQ6IGltYWdl
LXNldCh1cmwoLi4vSW1hZ2VzL0RvY3VtZW50Q1NTLnBuZykgMXgsIHVybCguLi9JbWFnZXMvRG9j
dW1lbnRDU1NAMngucG5nKSAyeCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwu
anMKaW5kZXggNzFiYTdmYzM1MWUzMzUzYzUxNzJhZTE3NDJkNmE1ZTAzOWRhNWQ1OS4uNmRlMGU4
ZDNjOTFkNTFmZmYzYzRmYWU4ZGU0NTEzMWI1NWFlNjYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VT
aWRlYmFyUGFuZWwuanMKQEAgLTYzLDYgKzYzLDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0UmVtb3ZlZCwgdGhpcy5fc2Ny
aXB0V2FzUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlNj
cmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7CiAKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRk
ZWQsIHRoaXMpOworCiAgICAgICAgIFdlYkluc3BlY3Rvci50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0UmVtb3ZlZCwg
dGhpcy5fdGFyZ2V0UmVtb3ZlZCwgdGhpcyk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlm
aWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLkV4dHJh
RG9tYWluc0FjdGl2YXRlZCwgdGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzKTsKQEAg
LTM5Miw2ICszOTQsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xh
c3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgfQogICAg
IH0KIAorICAgIF9zdHlsZVNoZWV0QWRkZWQoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgc3R5
bGVTaGVldCA9IGV2ZW50LmRhdGEuc3R5bGVTaGVldDsKKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0
LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGxldCBmcmFtZVRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHN0eWxlU2hlZXQucGFyZW50RnJhbWUpOworICAgICAgICBpZiAoIWZyYW1lVHJlZUVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnJhbWVUcmVlRWxlbWVudC5hZGRS
ZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShzdHlsZVNoZWV0KTsKKyAgICB9CisKICAg
ICBfYWRkVGFyZ2V0V2l0aE1haW5SZXNvdXJjZSh0YXJnZXQpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCh0YXJnZXQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRhcmdldC5UeXBlLldvcmtl
cik7CkBAIC00MjEsNiArNDM2LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVs
ID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAg
aWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50
CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudAorICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50CiAgICAgICAg
ICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1Ry
ZWVFbGVtZW50KSB7CiAgICAgICAgICAgICBjb25zdCBjb29raWUgPSBudWxsOwogICAgICAgICAg
ICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcu
anMKaW5kZXggNWQzOTYwN2Q2ODhjMjAxN2ZhYjY4MTQ1YWQ3ODUzZWQ2MjhiNWE1MS4uNmI4ZTZj
ZTRmOTA1ZWFhMjQ4ZWVhZDEwYWY0MzU2YTc2Y2ZmN2Q1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VzVGFiQ29udGVudFZpZXcuanMKQEAgLTY0LDYgKzY0LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWIKICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkZyYW1lCiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5SZXNvdXJjZQogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0CisgICAgICAgICAgICB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0CiAgICAgICAgICAg
ICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Rmxv
dwogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29sbGVjdGlvbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmlu
ZGV4IDIwMDEwYTY4NTlkMDliOWNjOWMyNGMyNWY0NTM1ZmY5NTQ4YWJjYzUuLmJjMDk0M2FlMGRl
NzQ2Y2ZjMmFiOGU5MDlhMDUxZTUzODZhMWIyYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzCkBAIC01MTYsNiArNTE2LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAg
ICAgICAgICAgIHRoaXMubWltZVR5cGUgPSB0aGlzLl9zb3VyY2VDb2RlLnN5bnRoZXRpY01JTUVU
eXBlOwogICAgICAgICBlbHNlIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHRoaXMubWltZVR5cGUgPSAidGV4dC9qYXZhc2Ny
aXB0IjsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9ICJ0ZXh0
L2NzcyI7CiAKICAgICAgICAgLy8gRGVjaWRlIHRvIGF1dG9tYXRpY2FsbHkgZm9ybWF0IHRoZSBj
b250ZW50IGlmIGl0IGxvb2tzIG1pbmlmaWVkIGFuZCBpdCBjYW4gYmUgZm9ybWF0dGVkLgogICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5mb3JtYXR0ZWQpOwpAQCAtOTY5LDcgKzk3MSw3IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc291cmNl
Q29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkKICAgICAgICAg
ICAgIHJldHVybiBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUgPT09IHRoaXMu
X3NvdXJjZUNvZGU7Ci0gICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlJlc291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2NyaXB0KQorICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNjcmlwdCB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlU2hlZXQpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLnNv
dXJjZUNvZGUudXJsID09PSB0aGlzLl9zb3VyY2VDb2RlLnVybDsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTk3OCw3ICs5ODAsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRl
eHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuU291cmNlTWFwUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0
aW9uLmRpc3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlOwotICAgICAgICBpZiAo
dGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAg
ICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2Ug
fHwgdGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
KQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybCA9
PT0gdGhpcy5fc291cmNlQ29kZS51cmw7CiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VD
b2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNlQ29kZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZWI0NGI4ZDA0ZWI1ZjBkOWI4ZTBmMTcy
MTVmYzA3MDRiMjRjYzNhMy4uYzNkOWRlYmMyOGU0OTk5Y2UzMTc5ZGUwNjljNDg1NTAxY2MzZmMz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTM4LDYgKzM4
LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJl
c291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdE
aWRDaGFuZ2UsIHRoaXMuX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzKTsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50V2lsbFBvcHVsYXRlLCB0aGlzLl9jb250ZW50
V2lsbFBvcHVsYXRlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50RGlk
UG9wdWxhdGUsIHRoaXMuX2NvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IucmVhZE9ubHkgPSB0aGlzLl9zaG91bGRCZVJlYWRPbmx5KCk7CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRzQ2hhbmdl
ZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgdGhp
cy5fcHJvYmVTZXRzQ2hhbmdlZCwgdGhpcyk7CkBAIC0xMjYsOCArMTI3LDE1IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKICAgICB9
CiAKKyAgICBnZXQgc3VwcG9ydHNTYXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdXBlci5z
dXBwb3J0c1NhdmUgfHwgdGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NT
dHlsZVNoZWV0OworICAgIH0KKwogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgeworICAgICAgICBp
ZiAodGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQor
ICAgICAgICAgICAgcmV0dXJuIHt1cmw6ICJ3ZWItaW5zcGVjdG9yOi8vL0luc3BlY3RvclN0eWxl
U2hlZXQuY3NzIiwgY29udGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmcsIGZvcmNlU2F2ZUFz
OiB0cnVlfTsKICAgICAgICAgcmV0dXJuIHt1cmw6IHRoaXMucmVzb3VyY2UudXJsLCBjb250ZW50
OiB0aGlzLl90ZXh0RWRpdG9yLnN0cmluZ307CiAgICAgfQogCkBAIC0xODMsMTQgKzE5MSw2IEBA
IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIGlmICh0aGlzLl90ZXh0RWRpdG9yLnBh
cmVudFZpZXcgPT09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gQ2hl
Y2sgdGhlIE1JTUUtdHlwZSBmb3IgQ1NTIHNpbmNlIFJlc291cmNlLlR5cGUuU3R5bGVzaGVldCBh
bHNvIGluY2x1ZGVzIFhTTCwgd2hpY2ggd2UgY2FuJ3QgZWRpdCB5ZXQuCi0gICAgICAgIGlmICh0
aGlzLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQgJiYgdGhpcy5yZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSA9PT0gInRleHQvY3NzIikKLSAg
ICAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSBmYWxzZTsKLQotICAgICAgICAv
LyBBbGxvdyBlZGl0aW5nIGFueSBsb2NhbCBmaWxlIHNpbmNlIGVkaXRzIGNhbiBiZSBzYXZlZCBh
bmQgcmVsb2FkZWQgcmlnaHQgZnJvbSB0aGUgSW5zcGVjdG9yLgotICAgICAgICBpZiAodGhpcy5y
ZXNvdXJjZS51cmxDb21wb25lbnRzLnNjaGVtZSA9PT0gImZpbGUiKQotICAgICAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOwotCiAgICAgICAgIHRoaXMuZWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fdGV4dEVkaXRv
cik7CiAgICAgfQpAQCAtMjc0LDQgKzI3NCwyMCBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNl
Q29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgog
ICAgICAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0g
dGhpcy5yZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UpOwogICAgIH0KKworICAgIF9zaG91bGRCZVJlYWRPbmx5KCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLnJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gQ2hlY2sg
dGhlIE1JTUUtdHlwZSBmb3IgQ1NTIHNpbmNlIFJlc291cmNlLlR5cGUuU3R5bGVzaGVldCBhbHNv
IGluY2x1ZGVzIFhTTCwgd2hpY2ggd2UgY2FuJ3QgZWRpdCB5ZXQuCisgICAgICAgIGlmICh0aGlz
LnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQg
JiYgdGhpcy5yZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSA9PT0gInRleHQvY3NzIikKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyBBbGxvdyBlZGl0aW5nIGFueSBsb2Nh
bCBmaWxlIHNpbmNlIGVkaXRzIGNhbiBiZSBzYXZlZCBhbmQgcmVsb2FkZWQgcmlnaHQgZnJvbSB0
aGUgSW5zcGVjdG9yLgorICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS51cmxDb21wb25lbnRzLnNj
aGVtZSA9PT0gImZpbGUiKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KIH07Cg==
</data>
<flag name="review"
          id="331521"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310704</attachid>
            <date>2017-05-19 14:57:43 -0700</date>
            <delta_ts>2017-05-22 16:06:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>138810.diff</filename>
            <type>text/plain</type>
            <size>33701</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDEyNmMxNjEwYWViLi5lZjY1OWI5YzZkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTctMDUtMTkgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5l
dyBDU1MgUnVsZXMgc2hvdWxkIGdvIGludG8gYSBuZXcgU3R5bGVzaGVldCBSZXNvdXJjZSB0aGF0
IGNhbiBiZSB2aWV3ZWQvZWRpdGVkL3NhdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qczoKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVN
YW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLnByb3RvdHlwZS5wcmVmZXJyZWRJbnNw
ZWN0b3JTdHlsZVNoZWV0Rm9yRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVJlc291cmNlQ29udGVudC5mZXRjaGVkU3R5bGVTaGVl
dENvbnRlbnQpOgorICAgICAgICBNYW51YWxseSBkaXNwYXRjaCBhIGNoYW5nZSBldmVudCBmb3Ig
bW9kaWZpY2F0aW9ucyB0byBDU1NTdHlsZVNoZWV0IG9iamVjdHMgc2luY2UgdGhleSBhcmUKKyAg
ICAgICAgbm90IGNvdmVyZWQgYnkgdGhlIGxpc3RlbmVyIGZvciBSZXNvdXJjZSBjaGFuZ2VzLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgIEluY2x1ZGUgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0NvbGxlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29sbGVj
dGlvbi5UeXBlVmVyaWZpZXIpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291
cmNlQ29sbGVjdGlvbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rp
b24uVHlwZVZlcmlmaWVyLlN0eWxlc2hlZXQpOgorICAgICAgICBBZGQgVHlwZVZlcmlmaWVyIGZv
ciBDU1NTdHlsZVNoZWV0LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9k
ZVN0eWxlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzLnByb3RvdHlw
ZS5fcGFyc2VSdWxlUGF5bG9hZCk6CisgICAgICAgIE1hbnVhbGx5IGNyZWF0ZSBhIFNvdXJjZUNv
ZGVMb2NhdGlvbiBvYmplY3QgZm9yIEluc3BlY3RvciBTdHlsZSBTaGVldHMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qczogQWRkZWQu
CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50KToKKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3M6CisgICAgICAgICg6
bWF0Y2hlcygucmVzb3VyY2UtaWNvbi5yZXNvdXJjZS10eXBlLXN0eWxlc2hlZXQsIC5zdHlsZXNz
aGVldC1pY29uKSAuaWNvbik6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1l
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5m
b3J3YXJkaW5nQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uYXR0YWNoKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbmRldGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUub25wb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxl
bWVudC5wcm90b3R5cGUuX3N0eWxlU2hlZXRBZGRlZCk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNpZGViYXJQYW5lbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlLl9zdHlsZVNoZWV0QWRkZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdHJlZVNlbGVjdGlvbkRpZENoYW5n
ZSk6CisgICAgICAgIExpc3RlbiBmb3IgdGhlIGNyZWF0aW9uIG9mIENTU1N0eWxlU2hlZXQgb2Jq
ZWN0cyBhbmQgYWRkIHRoZW0gdG8gdGhlIHNpZGViYXIgaWYgdGhleSBhcmUgYW4KKyAgICAgICAg
SW5zcGVjdG9yIFN0eWxlIFNoZWV0LiAgUmVndWxhciBzdHlsZSBzaGVldHMgYXJlIGFkZGVkIHZp
YSB0aGVpciByZXNwZWN0aXZlIHJlc291cmNlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faXNUcmVlRWxlbWVudFdpdGhvdXRSZXBy
ZXNlbnRlZE9iamVjdCk6CisgICAgICAgIFByZXZlbnQgQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50
IGluc3RhbmNlcyBmcm9tIGF0dGVtcHRpbmcgdG8gc2F2ZSBzdGF0ZSB0byBhIGNvb2tpZS4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLnRhYkNvbnRlbnRWaWV3Q2xhc3NGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uTGluayk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5jcmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLmNhblNo
b3dSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFZpZXcpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlLl9wcmVwYXJlRWRpdG9yRm9ySW5pdGlhbENvbnRlbnQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fbG9vc2VseU1hdGNoZXNTb3VyY2VD
b2RlTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZS5fbWF0Y2hlc1NvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwb3J0c1NhdmUpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQg
c2F2ZURhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fY29udGVudFdpbGxQb3B1bGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9zaG91bGRCZUVkaXRhYmxlKToKKyAg
ICAgICAgU3VwcG9ydCBlZGl0aW5nIGFuZCBzYXZpbmcgYW4gSW5zcGVjdG9yIFN0eWxlIFNoZWV0
IHZpYSBpdHMgQ1NTU3R5bGVTaGVldCBvYmplY3QuCisKIDIwMTctMDUtMTUgIEZ1amlpIEhpcm9u
b3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViIEluc3Bl
Y3RvcjogQWRkIG5ldyBHVEsrIGljb25zIGZvciBTZWFyY2ggaWNvbiBvZiBRdWljayBPcGVuIGRp
YWxvZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZTcxNmU2N2NjN2QuLjkw
ODliMTdlODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTQ2MCw2ICs0
NjAsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJJbml0aWF0ZWQiXSA9ICJJbml0aWF0ZWQiOwogbG9j
YWxpemVkU3RyaW5nc1siSW5pdGlhdG9yIl0gPSAiSW5pdGlhdG9yIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIklucHV0OiAiXSA9ICJJbnB1dDogIjsKIGxvY2FsaXplZFN0cmluZ3NbIkluc2V0Il0gPSAi
SW5zZXQiOworbG9jYWxpemVkU3RyaW5nc1siSW5zcGVjdG9yIFN0eWxlIFNoZWV0Il0gPSAiSW5z
cGVjdG9yIFN0eWxlIFNoZWV0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkluc3RhbmNlcyJdID0gIklu
c3RhbmNlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbnZhbGlkIl0gPSAiSW52YWxpZCI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJJbnZhbGlkIGNoYXJhY3RlcnMiXSA9ICJJbnZhbGlkIGNoYXJhY3RlcnMi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9N
YWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpz
CmluZGV4IGQ3OGU3YWU2YzQ3Li5hYzk0ZjI5NGM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMTEyNSw3ICsxMTI1LDEwIEBA
IFdlYkluc3BlY3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9yUmVwcmVzZW50ZWRPYmplY3QgPSBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyVGFiQ29udGVudFZpZXc7CiAgICAgfQogCi0gICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lIHx8IHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKKyAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUKKyAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UKKyAgICAgICAgfHwgcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0CisgICAgICAgIHx8IHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlN0eWxlU2hlZXQpCiAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXc7CiAKICAgICAvLyBGSVhN
RTogTW92ZSBDb250ZW50IEZsb3dzIHRvIHRoZSBFbGVtZW50cyB0YWI/CkBAIC0yMzEzLDcgKzIz
MTYsNyBAQCBXZWJJbnNwZWN0b3IuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uTGluayA9IGZ1bmN0
aW9uKHNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9ucwogICAgIGlmIChvcHRpb25zLnVzZUdvVG9B
cnJvd0J1dHRvbikKICAgICAgICAgbGlua0VsZW1lbnQuYXBwZW5kQ2hpbGQoV2ViSW5zcGVjdG9y
LmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKICAgICBlbHNlCi0gICAgICAgIHNvdXJjZUNvZGVM
b2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcobGlua0VsZW1lbnQsICJ0
ZXh0Q29udGVudCIpOworICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlz
cGxheUxvY2F0aW9uU3RyaW5nKGxpbmtFbGVtZW50LCAidGV4dENvbnRlbnQiLCBvcHRpb25zLmNv
bHVtblN0eWxlLCBvcHRpb25zLm5hbWVTdHlsZSwgb3B0aW9ucy5wcmVmaXgpOwogCiAgICAgaWYg
KG9wdGlvbnMuZG9udEZsb2F0KQogICAgICAgICBsaW5rRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
b250LWZsb2F0Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKaW5kZXggOGUx
MDFlMzFmMGQuLmUzYzMxNjljNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTU3R5bGVNYW5hZ2Vy
LmpzCkBAIC0xNjcsNyArMTY3LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlciA9IGNs
YXNzIENTU1N0eWxlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAg
cmV0dXJuIHN0eWxlczsKICAgICB9CiAKLSAgICBwcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNoZWV0
Rm9yRnJhbWUoZnJhbWUsIGNhbGxiYWNrKQorICAgIHByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hl
ZXRGb3JGcmFtZShmcmFtZSwgY2FsbGJhY2ssIGRvTm90Q3JlYXRlSWZNaXNzaW5nKQogICAgIHsK
ICAgICAgICAgdmFyIGluc3BlY3RvclN0eWxlU2hlZXRzID0gdGhpcy5faW5zcGVjdG9yU3R5bGVT
aGVldHNGb3JGcmFtZShmcmFtZSk7CiAgICAgICAgIGZvciAobGV0IHN0eWxlU2hlZXQgb2YgaW5z
cGVjdG9yU3R5bGVTaGVldHMpIHsKQEAgLTE3Nyw2ICsxNzcsOSBAQCBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGRvTm90Q3Jl
YXRlSWZNaXNzaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgIGlmIChDU1NBZ2Vu
dC5jcmVhdGVTdHlsZVNoZWV0KSB7CiAgICAgICAgICAgICBDU1NBZ2VudC5jcmVhdGVTdHlsZVNo
ZWV0KGZyYW1lLmlkLCBmdW5jdGlvbihlcnJvciwgc3R5bGVTaGVldElkKSB7CiAgICAgICAgICAg
ICAgICAgbGV0IHN0eWxlU2hlZXQgPSBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRGb3JJZGVudGlmaWVyKHN0eWxlU2hlZXRJZCk7CkBAIC00OTQsMzEgKzQ5NywzOCBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIGZ1bmN0aW9uIGZldGNoZWRTdHlsZVNo
ZWV0Q29udGVudChwYXJhbWV0ZXJzKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgc3R5bGVT
aGVldCA9IHBhcmFtZXRlcnMuc291cmNlQ29kZTsKLSAgICAgICAgICAgIHZhciBjb250ZW50ID0g
cGFyYW1ldGVycy5jb250ZW50OwotCi0gICAgICAgICAgICBzdHlsZVNoZWV0Ll9fcGVuZGluZ0No
YW5nZVRpbWVvdXQgPSB1bmRlZmluZWQ7CisgICAgICAgICAgICBsZXQgcmVwcmVzZW50ZWRPYmpl
Y3QgPSBwYXJhbWV0ZXJzLnNvdXJjZUNvZGU7CisgICAgICAgICAgICByZXByZXNlbnRlZE9iamVj
dC5fX3BlbmRpbmdDaGFuZ2VUaW1lb3V0ID0gdW5kZWZpbmVkOwogCi0gICAgICAgICAgICBjb25z
b2xlLmFzc2VydChzdHlsZVNoZWV0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXN0eWxlU2hlZXQu
dXJsKQorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QudXJsKTsK
KyAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QudXJsKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgdmFyIHJlc291cmNlID0gc3R5bGVTaGVldC5wYXJlbnRG
cmFtZS5yZXNvdXJjZUZvclVSTChzdHlsZVNoZWV0LnVybCk7Ci0gICAgICAgICAgICBpZiAoIXJl
c291cmNlKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICghc3R5bGVT
aGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSkgeworICAgICAgICAgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3QucGFyZW50RnJhbWUucmVzb3VyY2VGb3JVUkwo
cmVwcmVzZW50ZWRPYmplY3QudXJsKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJlcHJlc2VudGVk
T2JqZWN0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIC8vIE9u
bHkgdHJ5IHRvIHVwZGF0ZSBzdHlsZXNoZWV0IHJlc291cmNlcy4gT3RoZXIgcmVzb3VyY2VzLCBs
aWtlIGRvY3VtZW50cywgY2FuIGNvbnRhaW4KLSAgICAgICAgICAgIC8vIG11bHRpcGxlIHN0eWxl
c2hlZXRzIGFuZCB3ZSBkb24ndCBoYXZlIHRoZSBzb3VyY2UgcmFuZ2VzIHRvIHVwZGF0ZSB0aG9z
ZS4KLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UuVHlwZS5TdHlsZXNoZWV0KQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICAvLyBPbmx5IHRyeSB0byB1cGRhdGUgc3R5bGVzaGVldCByZXNvdXJjZXMuIE90aGVyIHJl
c291cmNlcywgbGlrZSBkb2N1bWVudHMsIGNhbiBjb250YWluCisgICAgICAgICAgICAgICAgLy8g
bXVsdGlwbGUgc3R5bGVzaGVldHMgYW5kIHdlIGRvbid0IGhhdmUgdGhlIHNvdXJjZSByYW5nZXMg
dG8gdXBkYXRlIHRob3NlLgorICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC50
eXBlICE9PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0KQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChyZXNv
dXJjZS5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQpIHsKLSAgICAgICAgICAgICAg
ICByZXNvdXJjZS5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5fX2lnbm9yZU5leHRVcGRhdGVSZXNvdXJj
ZUNvbnRlbnQpIHsKKyAgICAgICAgICAgICAgICByZXByZXNlbnRlZE9iamVjdC5fX2lnbm9yZU5l
eHRVcGRhdGVSZXNvdXJjZUNvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuX2lnbm9yZVJlc291cmNlQ29udGVu
dERpZENoYW5nZUV2ZW50Rm9yUmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5icmFuY2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRl
ZE9iamVjdChyZXNvdXJjZSkuY29udGVudCA9IGNvbnRlbnQ7CisgICAgICAgICAgICB0aGlzLl9p
Z25vcmVSZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2VFdmVudEZvclJlc291cmNlID0gcmVwcmVzZW50
ZWRPYmplY3Q7CisKKyAgICAgICAgICAgIGxldCByZXZpc2lvbiA9IFdlYkluc3BlY3Rvci5icmFu
Y2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdChyZXBy
ZXNlbnRlZE9iamVjdCk7CisgICAgICAgICAgICBpZiAoc3R5bGVTaGVldC5pc0luc3BlY3RvclN0
eWxlU2hlZXQoKSkgeworICAgICAgICAgICAgICAgIHJldmlzaW9uLmNvbnRlbnQgPSByZXByZXNl
bnRlZE9iamVjdC5jb250ZW50OworICAgICAgICAgICAgICAgIHN0eWxlU2hlZXQuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRD
aGFuZ2UpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV2aXNpb24uY29u
dGVudCA9IHBhcmFtZXRlcnMuY29udGVudDsKKwogICAgICAgICAgICAgdGhpcy5faWdub3JlUmVz
b3VyY2VDb250ZW50RGlkQ2hhbmdlRXZlbnRGb3JSZXNvdXJjZSA9IG51bGw7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGRiYjgzYWU3OTQ0Li5iN2Y0M2NlNzI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNTA2LDYgKzUwNiw3IEBACiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVs
ZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DYWxsRnJhbWVUcmVl
RWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NhbGxGcmFtZVZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DaGFydERldGFpbHNTZWN0
aW9uUm93LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NvbGxlY3Rpb24uanMKaW5kZXggOGM3NzM5ZjgzN2IuLmM2
M2U0ZTQ1M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ29sbGVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ29sbGVjdGlvbi5qcwpAQCAtMTE2LDQgKzExNiw1IEBAIFdlYkluc3Bl
Y3Rvci5Db2xsZWN0aW9uID0gY2xhc3MgQ29sbGVjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICBGcmFtZTogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lLAogICAgIFJlc291cmNlOiAob2JqZWN0KSA9PiBvYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UsCiAgICAgU2NyaXB0OiAob2JqZWN0KSA9PiBvYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0LAorICAgIENTU1N0eWxlU2hlZXQ6IChvYmplY3Qp
ID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0LAogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlU3R5bGVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGVTdHlsZXMuanMKaW5kZXggMDZkNWVhZjEwNzAuLjFlN2VkMDE0NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0
eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RE9NTm9kZVN0eWxlcy5qcwpAQCAtNzY1LDggKzc2NSwxMiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9k
ZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9jcmVhdGVTb3VyY2VDb2Rl
TG9jYXRpb24ocGF5bG9hZC5zb3VyY2VVUkwsIHBheWxvYWQuc291cmNlTGluZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoc3R5bGVTaGVldCkKKyAgICAgICAgaWYgKHN0eWxlU2hlZXQpIHsK
KyAgICAgICAgICAgIGlmICghc291cmNlQ29kZUxvY2F0aW9uICYmIHN0eWxlU2hlZXQuaXNJbnNw
ZWN0b3JTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0g
c3R5bGVTaGVldC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlUmFuZ2Uuc3RhcnRMaW5l
LCBzb3VyY2VSYW5nZS5zdGFydENvbHVtbikKKwogICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0
aW9uID0gc3R5bGVTaGVldC5vZmZzZXRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0
aW9uKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZhciBtZWRpYUxpc3QgPSBbXTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IHBheWxvYWQubWVkaWEgJiYgaSA8IHBheWxvYWQubWVkaWEubGVuZ3Ro
OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCmluZGV4IGJkMzhhZDJmNWFh
Li5lYzVhZDdjNTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC0xODgs
NyArMTg4LDExIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbGxlY3Rpb24gPSBjbGFzcyBSZXNv
dXJjZUNvbGxlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuCiAKIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyID0gewogICAgIERvY3VtZW50OiAob2JqZWN0KSA9
PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAm
JiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsCi0g
ICAgU3R5bGVzaGVldDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsCisgICAgU3R5bGVzaGVldDogKG9iamVjdCkgPT4gewor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkNTU1N0eWxl
U2hlZXQob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYg
b2JqZWN0LnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQKKyAg
ICB9LAogICAgIEltYWdlOiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBl
VmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLlR5cGUuSW1hZ2UsCiAgICAgRm9udDogKG9iamVjdCkgPT4gV2ViSW5zcGVjdG9y
LkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlKG9iamVjdCkgJiYgb2JqZWN0LnR5cGUg
PT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLkZvbnQsCiAgICAgU2NyaXB0OiAob2JqZWN0
KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0
KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU2NyaXB0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NT
U3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcwppbmRleCA0OWNhOWMw
ODM0Ny4uNmNjOGU0MWRhYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzCkBAIC0yNTMsNiArMjUzLDExIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbiA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uIGV4dGVuCiAg
ICAgICAgICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCiAgICAgICAgICAgICAg
ICAgICAgIGlnbm9yZVNlYXJjaFRhYjogdHJ1ZSwKICAgICAgICAgICAgICAgICB9OworICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9zdHlsZS5vd25lclN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHls
ZVNoZWV0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5uYW1lU3R5bGUgPSBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lOworICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zLnByZWZpeCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5zcGVjdG9y
IFN0eWxlIFNoZWV0IikgKyAiOiI7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAg
ICAgbGV0IHNvdXJjZUNvZGVMaW5rID0gV2ViSW5zcGVjdG9yLmNyZWF0ZVNvdXJjZUNvZGVMb2Nh
dGlvbkxpbmsodGhpcy5fc3R5bGUub3duZXJSdWxlLnNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9u
cyk7CiAgICAgICAgICAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5hcHBlbmRDaGlsZChzb3Vy
Y2VDb2RlTGluayk7CiAgICAgICAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVT
aGVldFRyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li45ZjY2NjM2NmQ1YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcwpAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVu
dCA9IGNsYXNzIENTU1N0eWxlU2hlZXRUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihzdHlsZVNoZWV0KQorICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGVTaGVldC5p
c0luc3BlY3RvclN0eWxlU2hlZXQoKSk7CisKKyAgICAgICAgY29uc3QgY2xhc3NOYW1lcyA9IFsi
c3R5bGVzaGVldCIsICJzdHlsZXNoZWV0LWljb24iXTsKKyAgICAgICAgY29uc3QgdGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluc3BlY3RvciBTdHlsZSBTaGVldCIpOworICAgICAgICBj
b25zdCBzdWJ0aXRsZSA9IG51bGw7CisgICAgICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gZmFsc2U7
CisgICAgICAgIHN1cGVyKHN0eWxlU2hlZXQsIGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwg
c3R5bGVTaGVldCwgaGFzQ2hpbGRyZW4pOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IGE2ODc5YzYxMmQ0Li4xZjdmZjBiODJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTU0LDYgKzU0
LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuU2NyaXB0Q29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRz
KTsKIAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVTaGVldCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRSZXNvdXJjZUNvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7
CisKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1
bWVudHMpOwogCkBAIC0yMzQsNiArMjM3LDggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ID0g
Y2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVmlldwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5UaW1lbGluZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IGFjMzM3
MzBkMGM5Li43YTI2OTY2YjlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCkBAIC01Mywx
NCArNTMsMjAgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRy
ZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc28KICAgICAgICAgdGhpcy5yZWdpc3Rl
ckZvbGRlcml6ZVNldHRpbmdzKCJmbG93cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvd3Mi
KSwgdGhpcy5fZnJhbWUuZG9tVHJlZS5jb250ZW50Rmxvd0NvbGxlY3Rpb24sIFdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd1RyZWVFbGVtZW50KTsKICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6
ZVNldHRpbmdzKCJleHRyYS1zY3JpcHRzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHRyYSBT
Y3JpcHRzIiksIHRoaXMuX2ZyYW1lLmV4dHJhU2NyaXB0Q29sbGVjdGlvbiwgV2ViSW5zcGVjdG9y
LlNjcmlwdFRyZWVFbGVtZW50KTsKIAorICAgICAgICBmdW5jdGlvbiBmb3J3YXJkaW5nQ29uc3Ry
dWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKSB7CisgICAgICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVT
aGVldCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZVNo
ZWV0VHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKTsKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQocmVw
cmVzZW50ZWRPYmplY3QsIC4uLmV4dHJhQXJndW1lbnRzKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZSkpIHsKICAgICAgICAgICAgIGxldCBmb2xkZXJOYW1lID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSk7CiAKLSAgICAgICAgICAg
IGxldCB0cmVlRWxlbWVudENvbnN0cnVjdG9yID0gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQ7CisgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvciA9IGZvcndhcmRp
bmdDb25zdHJ1Y3RvcjsKICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGUuV2ViU29ja2V0KQogICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50Q29uc3Ry
dWN0b3IgPSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2VUcmVlRWxlbWVudDsKIAotICAg
ICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKGtleSwgZm9sZGVyTmFtZSwg
dGhpcy5fZnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZSh2YWx1ZSksIHRyZWVFbGVtZW50
Q29uc3RydWN0b3IpOworICAgICAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdz
KGtleSwgZm9sZGVyTmFtZSwgdGhpcy5fZnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZSh2
YWx1ZSksIGZvcndhcmRpbmdDb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
LnVwZGF0ZVBhcmVudFN0YXR1cygpOwpAQCAtMTEzLDYgKzExOSwxNSBAQCBXZWJJbnNwZWN0b3Iu
RnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuUmVzbwogICAgIHsKICAgICAgICAgLy8gSW1tZWRpYXRlIHN1cGVyY2xhc3NlcyBhcmUg
c2tpcHBlZCwgc2luY2UgRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNlTWFwUmVzb3VyY2Vz
LgogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0
dGFjaC5jYWxsKHRoaXMpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkV2ZW50LlN0eWxl
U2hlZXRBZGRlZCwgdGhpcy5fc3R5bGVTaGVldEFkZGVkLCB0aGlzKTsKKyAgICB9CisKKyAgICBv
bmRldGFjaCgpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5FdmVudC5TdHls
ZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRBZGRlZCwgdGhpcyk7CisKKyAgICAgICAgc3Vw
ZXIub25kZXRhY2goKTsKICAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBGb2xkZXJpemVk
VHJlZUVsZW1lbnQgKFByb3RlY3RlZCkuCkBAIC0xNzAsNiArMTg1LDkgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlJlc28KICAgICAgICAgICAgIGlmIChleHRyYVNjcmlwdC5zb3VyY2VVUkwgfHwgZXh0
cmFTY3JpcHQuc291cmNlTWFwcGluZ1VSTCkKICAgICAgICAgICAgICAgICB0aGlzLmFkZENoaWxk
Rm9yUmVwcmVzZW50ZWRPYmplY3QoZXh0cmFTY3JpcHQpOwogICAgICAgICB9CisKKyAgICAgICAg
Y29uc3QgZG9Ob3RDcmVhdGVJZk1pc3NpbmcgPSB0cnVlOworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzU3R5bGVNYW5hZ2VyLnByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZSh0aGlz
Ll9mcmFtZSwgdGhpcy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZS5iaW5kKHRo
aXMpLCBkb05vdENyZWF0ZUlmTWlzc2luZyk7CiAgICAgfQogCiAgICAgb25leHBhbmQoKQpAQCAt
MjUzLDQgKzI3MSwxMiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZy
YW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzbwogICAgICAgICBpZiAodGhp
cy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRl
bnRGbG93TGlzdCgpOwogICAgIH0KKworICAgIF9zdHlsZVNoZWV0QWRkZWQoZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoIWV2ZW50LmRhdGEuc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hl
ZXQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVk
T2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRhdGEuc3R5bGVTaGVldCk7CisgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCmluZGV4IDRjMzI3NjNjYmU5Li5i
YWUyZDQwMjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC02
NDUsNiArNjQ1LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW4KICAgICAgICAgICAgIHx8IHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLklkbGVUcmVlRWxlbWVudAogICAgICAg
ICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NQnJlYWtwb2lu
dFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5YSFJCcmVha3BvaW50VHJlZUVsZW1lbnQKKyAgICAgICAgICAgIHx8IHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVudAogICAg
ICAgICAgICAgfHwgdHlwZW9mIHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSAic3Ry
aW5nIgogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBTdHJpbmc7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXgg
NWQ5NjU3NmEwYWMuLmJjZjI0YWFkNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcu
anMKQEAgLTI3LDcgKzI3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcgPSBj
bGFzcyBSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG8KIHsKICAgICBjb25z
dHJ1Y3RvcihyZXNvdXJjZSwgc3R5bGVDbGFzc05hbWUpCiAgICAgewotICAgICAgICBjb25zb2xl
LmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSwgcmVzb3Vy
Y2UpOworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSB8fCByZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0LCByZXNvdXJjZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBzdHlsZUNs
YXNzTmFtZSA9PT0gInN0cmluZyIpOwogCiAgICAgICAgIHN1cGVyKHJlc291cmNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
SWNvbnMuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VJY29ucy5jc3MKaW5kZXggNjBlYmQ0NWRkNDUuLjBjZDEzYWJhMTM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUljb25z
LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUljb25zLmNzcwpAQCAtMzksNyArMzksNyBAQAogICAgIGNvbnRlbnQ6IGltYWdlLXNldCh1
cmwoLi4vSW1hZ2VzL0RvY3VtZW50Rm9udC5wbmcpIDF4LCB1cmwoLi4vSW1hZ2VzL0RvY3VtZW50
Rm9udEAyeC5wbmcpIDJ4KTsKIH0KIAotLnJlc291cmNlLWljb24ucmVzb3VyY2UtdHlwZS1zdHls
ZXNoZWV0IC5pY29uIHsKKzptYXRjaGVzKC5yZXNvdXJjZS1pY29uLnJlc291cmNlLXR5cGUtc3R5
bGVzaGVldCwgLnN0eWxlc2hlZXQtaWNvbikgLmljb24gewogICAgIGNvbnRlbnQ6IGltYWdlLXNl
dCh1cmwoLi4vSW1hZ2VzL0RvY3VtZW50Q1NTLnBuZykgMXgsIHVybCguLi9JbWFnZXMvRG9jdW1l
bnRDU1NAMngucG5nKSAyeCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMK
aW5kZXggNzFiYTdmYzM1MWUuLjZkZTBlOGQzYzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGVi
YXJQYW5lbC5qcwpAQCAtNjMsNiArNjMsOCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwgPSBjbGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogICAg
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRSZW1vdmVkLCB0aGlzLl9zY3JpcHRX
YXNSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0
c0NsZWFyZWQsIHRoaXMuX3NjcmlwdHNDbGVhcmVkLCB0aGlzKTsKIAorICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTWFuYWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRBZGRlZCwg
dGhpcyk7CisKICAgICAgICAgV2ViSW5zcGVjdG9yLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB0aGlz
Ll90YXJnZXRSZW1vdmVkLCB0aGlzKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0
aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uRXh0cmFEb21h
aW5zQWN0aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMpOwpAQCAtMzky
LDYgKzM5NCwxOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBjbGFzcyBS
ZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB9CiAgICAgfQog
CisgICAgX3N0eWxlU2hlZXRBZGRlZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBzdHlsZVNo
ZWV0ID0gZXZlbnQuZGF0YS5zdHlsZVNoZWV0OworICAgICAgICBpZiAoIXN0eWxlU2hlZXQuaXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0
IGZyYW1lVHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Qo
c3R5bGVTaGVldC5wYXJlbnRGcmFtZSk7CisgICAgICAgIGlmICghZnJhbWVUcmVlRWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmcmFtZVRyZWVFbGVtZW50LmFkZFJlcHJl
c2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKHN0eWxlU2hlZXQpOworICAgIH0KKwogICAgIF9h
ZGRUYXJnZXRXaXRoTWFpblJlc291cmNlKHRhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRhcmdldC50eXBlID09PSBXZWJJbnNwZWN0b3IuVGFyZ2V0LlR5cGUuV29ya2VyKTsK
QEAgLTQyMSw2ICs0MzYsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwgPSBj
bGFzcyBSZXNvdXJjZVNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICBpZiAo
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQKICAg
ICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNl
VHJlZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50CisgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQKICAgICAgICAgICAg
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVs
ZW1lbnQpIHsKICAgICAgICAgICAgIGNvbnN0IGNvb2tpZSA9IG51bGw7CiAgICAgICAgICAgICBj
b25zdCBvcHRpb25zID0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcwpp
bmRleCA1ZDM5NjA3ZDY4OC4uNmI4ZTZjZTRmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1Rh
YkNvbnRlbnRWaWV3LmpzCkBAIC02NCw2ICs2NCw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNU
YWJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
CiAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5GcmFtZQogICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UKICAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdAorICAgICAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldAogICAgICAgICAgICAgfHwg
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cKICAg
ICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNv
bGxlY3Rpb247CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcwppbmRleCAy
MDAxMGE2ODU5ZC4uYmMwOTQzYWUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9y
LmpzCkBAIC01MTYsNiArNTE2LDggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
ID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAg
ICAgIHRoaXMubWltZVR5cGUgPSB0aGlzLl9zb3VyY2VDb2RlLnN5bnRoZXRpY01JTUVUeXBlOwog
ICAgICAgICBlbHNlIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNjcmlwdCkKICAgICAgICAgICAgIHRoaXMubWltZVR5cGUgPSAidGV4dC9qYXZhc2NyaXB0IjsK
KyAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgdGhpcy5taW1lVHlwZSA9ICJ0ZXh0L2NzcyI7
CiAKICAgICAgICAgLy8gRGVjaWRlIHRvIGF1dG9tYXRpY2FsbHkgZm9ybWF0IHRoZSBjb250ZW50
IGlmIGl0IGxvb2tzIG1pbmlmaWVkIGFuZCBpdCBjYW4gYmUgZm9ybWF0dGVkLgogICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5mb3JtYXR0ZWQpOwpAQCAtOTY5LDcgKzk3MSw3IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9y
IGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybiBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUgPT09IHRoaXMuX3NvdXJj
ZUNvZGU7Ci0gICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KQorICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlNjcmlwdCB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlU2hlZXQpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNv
ZGUudXJsID09PSB0aGlzLl9zb3VyY2VDb2RlLnVybDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTk3OCw3ICs5ODAsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlTWFwUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLmRp
c3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlOwotICAgICAgICBpZiAodGhpcy5f
c291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAgICAgaWYg
KHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgdGhp
cy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQogICAg
ICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLnVybCA9PT0gdGhp
cy5fc291cmNlQ29kZS51cmw7CiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlTG9j
YXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNlQ29kZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJl
c291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZWI0NGI4ZDA0ZWIuLjJkYWE1ODlmYjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVz
b3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwpAQCAtMzgsNiArMzgsNyBAQCBX
ZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VD
b250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGluZ0RpZENoYW5n
ZSwgdGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9w
dWxhdGUsIHRoaXMpOwogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRQb3B1bGF0
ZSwgdGhpcy5fY29udGVudERpZFBvcHVsYXRlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fdGV4dEVk
aXRvci5yZWFkT25seSA9ICF0aGlzLl9zaG91bGRCZUVkaXRhYmxlKCk7CiAKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9i
ZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRzQ2hhbmdlZCwgdGhp
cyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgdGhpcy5fcHJv
YmVTZXRzQ2hhbmdlZCwgdGhpcyk7CkBAIC0xMjYsOCArMTI3LDE1IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV2ViCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKICAgICB9CiAKKyAg
ICBnZXQgc3VwcG9ydHNTYXZlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdXBlci5zdXBwb3J0
c1NhdmUgfHwgdGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNo
ZWV0OworICAgIH0KKwogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgeworICAgICAgICBpZiAodGhp
cy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQorICAgICAg
ICAgICAgcmV0dXJuIHt1cmw6ICJ3ZWItaW5zcGVjdG9yOi8vL0luc3BlY3RvclN0eWxlU2hlZXQu
Y3NzIiwgY29udGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmcsIGZvcmNlU2F2ZUFzOiB0cnVl
fTsKICAgICAgICAgcmV0dXJuIHt1cmw6IHRoaXMucmVzb3VyY2UudXJsLCBjb250ZW50OiB0aGlz
Ll90ZXh0RWRpdG9yLnN0cmluZ307CiAgICAgfQogCkBAIC0xODMsMTQgKzE5MSw2IEBAIFdlYklu
c3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViCiAgICAgICAgIGlmICh0aGlzLl90ZXh0RWRpdG9yLnBhcmVudFZp
ZXcgPT09IHRoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gQ2hlY2sgdGhl
IE1JTUUtdHlwZSBmb3IgQ1NTIHNpbmNlIFJlc291cmNlLlR5cGUuU3R5bGVzaGVldCBhbHNvIGlu
Y2x1ZGVzIFhTTCwgd2hpY2ggd2UgY2FuJ3QgZWRpdCB5ZXQuCi0gICAgICAgIGlmICh0aGlzLnJl
c291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQgJiYg
dGhpcy5yZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSA9PT0gInRleHQvY3NzIikKLSAgICAgICAg
ICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSBmYWxzZTsKLQotICAgICAgICAvLyBBbGxv
dyBlZGl0aW5nIGFueSBsb2NhbCBmaWxlIHNpbmNlIGVkaXRzIGNhbiBiZSBzYXZlZCBhbmQgcmVs
b2FkZWQgcmlnaHQgZnJvbSB0aGUgSW5zcGVjdG9yLgotICAgICAgICBpZiAodGhpcy5yZXNvdXJj
ZS51cmxDb21wb25lbnRzLnNjaGVtZSA9PT0gImZpbGUiKQotICAgICAgICAgICAgdGhpcy5fdGV4
dEVkaXRvci5yZWFkT25seSA9IGZhbHNlOwotCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOwogICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fdGV4dEVkaXRvcik7CiAg
ICAgfQpAQCAtMjc0LDQgKzI3NCwyMCBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAg
ICBpZiAoYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5y
ZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2UpOwogICAgIH0KKworICAgIF9zaG91bGRCZUVkaXRhYmxlKCkKKyAgICB7CisgICAg
ICAgIGlmICh0aGlzLnJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hl
ZXQpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBDaGVjayB0aGUgTUlN
RS10eXBlIGZvciBDU1Mgc2luY2UgUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0IGFsc28gaW5jbHVk
ZXMgWFNMLCB3aGljaCB3ZSBjYW4ndCBlZGl0IHlldC4KKyAgICAgICAgaWYgKHRoaXMucmVzb3Vy
Y2UudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCAmJiB0aGlz
LnJlc291cmNlLnN5bnRoZXRpY01JTUVUeXBlID09PSAidGV4dC9jc3MiKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgLy8gQWxsb3cgZWRpdGluZyBhbnkgbG9jYWwgZmlsZSBz
aW5jZSBlZGl0cyBjYW4gYmUgc2F2ZWQgYW5kIHJlbG9hZGVkIHJpZ2h0IGZyb20gdGhlIEluc3Bl
Y3Rvci4KKyAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UudXJsQ29tcG9uZW50cy5zY2hlbWUgPT09
ICJmaWxlIikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CiB9Owo=
</data>
<flag name="review"
          id="331781"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310947</attachid>
            <date>2017-05-22 16:06:28 -0700</date>
            <delta_ts>2017-05-22 16:44:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>138810.diff</filename>
            <type>text/plain</type>
            <size>33945</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDIyNzE2MWY5NmU5Li4xZDRkZDk2MjNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTctMDUtMjIgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5l
dyBDU1MgUnVsZXMgc2hvdWxkIGdvIGludG8gYSBuZXcgU3R5bGVzaGVldCBSZXNvdXJjZSB0aGF0
IGNhbiBiZSB2aWV3ZWQvZWRpdGVkL3NhdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4MTAKKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGgg
UGVjb3Jhcm8uCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanM6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0eWxl
TWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFuYWdlci5wcm90b3R5cGUucHJlZmVycmVkSW5z
cGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVSZXNvdXJjZUNvbnRlbnQuZmV0Y2hlZFN0eWxlU2hl
ZXRDb250ZW50KToKKyAgICAgICAgTWFudWFsbHkgZGlzcGF0Y2ggYSBjaGFuZ2UgZXZlbnQgZm9y
IG1vZGlmaWNhdGlvbnMgdG8gQ1NTU3R5bGVTaGVldCBvYmplY3RzIHNpbmNlIHRoZXkgYXJlCisg
ICAgICAgIG5vdCBjb3ZlcmVkIGJ5IHRoZSBsaXN0ZW5lciBmb3IgUmVzb3VyY2UgY2hhbmdlcy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBJbmNsdWRlIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbGxl
Y3Rpb24uVHlwZVZlcmlmaWVyKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZUNvbGxlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb2xsZWN0
aW9uLlR5cGVWZXJpZmllci5TdHlsZXNoZWV0KToKKyAgICAgICAgQWRkIFR5cGVWZXJpZmllciBm
b3IgQ1NTU3R5bGVTaGVldC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5v
ZGVTdHlsZXMuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZVN0eWxlcy5wcm90b3R5
cGUuX3BhcnNlUnVsZVBheWxvYWQpOgorICAgICAgICBNYW51YWxseSBjcmVhdGUgYSBTb3VyY2VD
b2RlTG9jYXRpb24gb2JqZWN0IGZvciBJbnNwZWN0b3IgU3R5bGUgU2hlZXRzLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQuanM6IEFkZGVk
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXRUcmVlRWxlbWVudCk6CisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSWNvbnMuY3NzOgorICAgICAgICAo
Om1hdGNoZXMoLnJlc291cmNlLWljb24ucmVzb3VyY2UtdHlwZS1zdHlsZXNoZWV0LCAuc3R5bGVz
c2hlZXQtaWNvbikgLmljb24pOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9GcmFt
ZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQu
Zm9yd2FyZGluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVF
bGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5vbmF0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90
b3R5cGUub25kZXRhY2gpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9ucG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9zdHlsZVNoZWV0QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTaWRlYmFyUGFuZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5fc3R5bGVTaGVldEFkZGVkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3RyZWVTZWxlY3Rpb25EaWRDaGFu
Z2UpOgorICAgICAgICBMaXN0ZW4gZm9yIHRoZSBjcmVhdGlvbiBvZiBDU1NTdHlsZVNoZWV0IG9i
amVjdHMgYW5kIGFkZCB0aGVtIHRvIHRoZSBzaWRlYmFyIGlmIHRoZXkgYXJlIGFuCisgICAgICAg
IEluc3BlY3RvciBTdHlsZSBTaGVldC4gIFJlZ3VsYXIgc3R5bGUgc2hlZXRzIGFyZSBhZGRlZCB2
aWEgdGhlaXIgcmVzcGVjdGl2ZSByZXNvdXJjZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVw
cmVzZW50ZWRPYmplY3QpOgorICAgICAgICBQcmV2ZW50IENTU1N0eWxlU2hlZXRUcmVlRWxlbWVu
dCBpbnN0YW5jZXMgZnJvbSBhdHRlbXB0aW5nIHRvIHNhdmUgc3RhdGUgdG8gYSBjb29raWUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci50YWJDb250ZW50Vmlld0NsYXNzRm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbkxpbmspOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jYW5T
aG93UmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRl
bnRWaWV3KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRp
dG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3Rv
dHlwZS5fcHJlcGFyZUVkaXRvckZvckluaXRpYWxDb250ZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUuX2xvb3NlbHlNYXRjaGVzU291cmNl
Q29kZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUuX21hdGNoZXNTb3VyY2VDb2RlTG9jYXRpb24pOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcG9ydHNTYXZlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0
IHNhdmVEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmll
dy5wcm90b3R5cGUuX2NvbnRlbnRXaWxsUG9wdWxhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2hvdWxkQmVFZGl0YWJsZSk6Cisg
ICAgICAgIFN1cHBvcnQgZWRpdGluZyBhbmQgc2F2aW5nIGFuIEluc3BlY3RvciBTdHlsZSBTaGVl
dCB2aWEgaXRzIENTU1N0eWxlU2hlZXQgb2JqZWN0LgorCiAyMDE3LTA1LTIyICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHdlYmtpdCByZWxv
YWQgcG9saWN5IHNob3VsZCBtYXRjaCBkZWZhdWx0IGJlaGF2aW9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwppbmRleCBlNzE2ZTY3Y2M3ZC4uOTA4OWIxN2U4MDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtNDYwLDYgKzQ2MCw3IEBAIGxvY2FsaXplZFN0cmlu
Z3NbIkluaXRpYXRlZCJdID0gIkluaXRpYXRlZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJJbml0aWF0
b3IiXSA9ICJJbml0aWF0b3IiOwogbG9jYWxpemVkU3RyaW5nc1siSW5wdXQ6ICJdID0gIklucHV0
OiAiOwogbG9jYWxpemVkU3RyaW5nc1siSW5zZXQiXSA9ICJJbnNldCI7Citsb2NhbGl6ZWRTdHJp
bmdzWyJJbnNwZWN0b3IgU3R5bGUgU2hlZXQiXSA9ICJJbnNwZWN0b3IgU3R5bGUgU2hlZXQiOwog
bG9jYWxpemVkU3RyaW5nc1siSW5zdGFuY2VzIl0gPSAiSW5zdGFuY2VzIjsKIGxvY2FsaXplZFN0
cmluZ3NbIkludmFsaWQiXSA9ICJJbnZhbGlkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkludmFsaWQg
Y2hhcmFjdGVycyJdID0gIkludmFsaWQgY2hhcmFjdGVycyI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggM2E1MWViZGE0ZjguLjNm
MzI1ZTY1N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9NYWluLmpzCkBAIC0xMTI1LDcgKzExMjUsMTAgQEAgV2ViSW5zcGVjdG9yLnRhYkNvbnRl
bnRWaWV3Q2xhc3NGb3JSZXByZXNlbnRlZE9iamVjdCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWMKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRGVidWdnZXJUYWJDb250ZW50Vmll
dzsKICAgICB9CiAKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRnJhbWUgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2Ny
aXB0KQorICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5G
cmFtZQorICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZQorICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5TY3JpcHQKKyAgICAgICAgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNUYWJDb250ZW50VmlldzsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIENvbnRlbnQgRmxvd3Mg
dG8gdGhlIEVsZW1lbnRzIHRhYj8KQEAgLTIzMTMsNyArMjMxNiw3IEBAIFdlYkluc3BlY3Rvci5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb25MaW5rID0gZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9u
LCBvcHRpb25zCiAgICAgaWYgKG9wdGlvbnMudXNlR29Ub0Fycm93QnV0dG9uKQogICAgICAgICBs
aW5rRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9u
KCkpOwogICAgIGVsc2UKLSAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURp
c3BsYXlMb2NhdGlvblN0cmluZyhsaW5rRWxlbWVudCwgInRleHRDb250ZW50Iik7CisgICAgICAg
IHNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcobGlu
a0VsZW1lbnQsICJ0ZXh0Q29udGVudCIsIG9wdGlvbnMuY29sdW1uU3R5bGUsIG9wdGlvbnMubmFt
ZVN0eWxlLCBvcHRpb25zLnByZWZpeCk7CiAKICAgICBpZiAob3B0aW9ucy5kb250RmxvYXQpCiAg
ICAgICAgIGxpbmtFbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbnQtZmxvYXQiKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1N0
eWxlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0NTU1N0eWxlTWFuYWdlci5qcwppbmRleCA4ZTEwMWUzMWYwZC4uZTNjMzE2OWM1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0NTU1N0eWxlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9DU1NTdHlsZU1hbmFnZXIuanMKQEAgLTE2Nyw3ICsxNjcsNyBA
QCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyID0gY2xhc3MgQ1NTU3R5bGVNYW5hZ2VyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICByZXR1cm4gc3R5bGVzOwogICAgIH0K
IAotICAgIHByZWZlcnJlZEluc3BlY3RvclN0eWxlU2hlZXRGb3JGcmFtZShmcmFtZSwgY2FsbGJh
Y2spCisgICAgcHJlZmVycmVkSW5zcGVjdG9yU3R5bGVTaGVldEZvckZyYW1lKGZyYW1lLCBjYWxs
YmFjaywgZG9Ob3RDcmVhdGVJZk1pc3NpbmcpCiAgICAgewogICAgICAgICB2YXIgaW5zcGVjdG9y
U3R5bGVTaGVldHMgPSB0aGlzLl9pbnNwZWN0b3JTdHlsZVNoZWV0c0ZvckZyYW1lKGZyYW1lKTsK
ICAgICAgICAgZm9yIChsZXQgc3R5bGVTaGVldCBvZiBpbnNwZWN0b3JTdHlsZVNoZWV0cykgewpA
QCAtMTc3LDYgKzE3Nyw5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIgPSBjbGFzcyBD
U1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoZG9Ob3RDcmVhdGVJZk1pc3NpbmcpCisgICAgICAg
ICAgICByZXR1cm47CisKICAgICAgICAgaWYgKENTU0FnZW50LmNyZWF0ZVN0eWxlU2hlZXQpIHsK
ICAgICAgICAgICAgIENTU0FnZW50LmNyZWF0ZVN0eWxlU2hlZXQoZnJhbWUuaWQsIGZ1bmN0aW9u
KGVycm9yLCBzdHlsZVNoZWV0SWQpIHsKICAgICAgICAgICAgICAgICBsZXQgc3R5bGVTaGVldCA9
IFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuc3R5bGVTaGVldEZvcklkZW50aWZpZXIoc3R5
bGVTaGVldElkKTsKQEAgLTQ5NCwzMSArNDk3LDM4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1h
bmFnZXIgPSBjbGFzcyBDU1NTdHlsZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAKICAgICAgICAgZnVuY3Rpb24gZmV0Y2hlZFN0eWxlU2hlZXRDb250ZW50KHBhcmFtZXRlcnMp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gcGFyYW1ldGVycy5zb3Vy
Y2VDb2RlOwotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBwYXJhbWV0ZXJzLmNvbnRlbnQ7Ci0K
LSAgICAgICAgICAgIHN0eWxlU2hlZXQuX19wZW5kaW5nQ2hhbmdlVGltZW91dCA9IHVuZGVmaW5l
ZDsKKyAgICAgICAgICAgIGxldCByZXByZXNlbnRlZE9iamVjdCA9IHBhcmFtZXRlcnMuc291cmNl
Q29kZTsKKyAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9fcGVuZGluZ0NoYW5nZVRpbWVv
dXQgPSB1bmRlZmluZWQ7CiAKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQu
dXJsKTsKLSAgICAgICAgICAgIGlmICghc3R5bGVTaGVldC51cmwpCisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdC51cmwpOworICAgICAgICAgICAgaWYgKCFyZXBy
ZXNlbnRlZE9iamVjdC51cmwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICB2YXIgcmVzb3VyY2UgPSBzdHlsZVNoZWV0LnBhcmVudEZyYW1lLnJlc291cmNlRm9yVVJMKHN0
eWxlU2hlZXQudXJsKTsKLSAgICAgICAgICAgIGlmICghcmVzb3VyY2UpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKCFzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVT
aGVldCgpKSB7CisgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNlbnRl
ZE9iamVjdC5wYXJlbnRGcmFtZS5yZXNvdXJjZUZvclVSTChyZXByZXNlbnRlZE9iamVjdC51cmwp
OworICAgICAgICAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgLy8gT25seSB0cnkgdG8gdXBkYXRlIHN0eWxl
c2hlZXQgcmVzb3VyY2VzLiBPdGhlciByZXNvdXJjZXMsIGxpa2UgZG9jdW1lbnRzLCBjYW4gY29u
dGFpbgotICAgICAgICAgICAgLy8gbXVsdGlwbGUgc3R5bGVzaGVldHMgYW5kIHdlIGRvbid0IGhh
dmUgdGhlIHNvdXJjZSByYW5nZXMgdG8gdXBkYXRlIHRob3NlLgotICAgICAgICAgICAgaWYgKHJl
c291cmNlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIC8vIE9ubHkgdHJ5IHRvIHVw
ZGF0ZSBzdHlsZXNoZWV0IHJlc291cmNlcy4gT3RoZXIgcmVzb3VyY2VzLCBsaWtlIGRvY3VtZW50
cywgY2FuIGNvbnRhaW4KKyAgICAgICAgICAgICAgICAvLyBtdWx0aXBsZSBzdHlsZXNoZWV0cyBh
bmQgd2UgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIHJhbmdlcyB0byB1cGRhdGUgdGhvc2UuCisgICAg
ICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnR5cGUgIT09IFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHJlc291cmNlLl9faWdub3JlTmV4dFVwZGF0
ZVJlc291cmNlQ29udGVudCkgewotICAgICAgICAgICAgICAgIHJlc291cmNlLl9faWdub3JlTmV4
dFVwZGF0ZVJlc291cmNlQ29udGVudCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVudCkgeworICAgICAgICAg
ICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9faWdub3JlTmV4dFVwZGF0ZVJlc291cmNlQ29udGVu
dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgdGhpcy5faWdub3JlUmVzb3VyY2VDb250ZW50RGlkQ2hhbmdlRXZlbnRGb3JSZXNv
dXJjZSA9IHJlc291cmNlOwotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmJyYW5jaE1hbmFnZXIu
Y3VycmVudEJyYW5jaC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHJlc291cmNlKS5jb250
ZW50ID0gY29udGVudDsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZVJlc291cmNlQ29udGVudERp
ZENoYW5nZUV2ZW50Rm9yUmVzb3VyY2UgPSByZXByZXNlbnRlZE9iamVjdDsKKworICAgICAgICAg
ICAgbGV0IHJldmlzaW9uID0gV2ViSW5zcGVjdG9yLmJyYW5jaE1hbmFnZXIuY3VycmVudEJyYW5j
aC5yZXZpc2lvbkZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAg
ICAgICAgIGlmIChzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKSB7CisgICAgICAg
ICAgICAgICAgcmV2aXNpb24uY29udGVudCA9IHJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnQ7Cisg
ICAgICAgICAgICAgICAgc3R5bGVTaGVldC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSk7CisgICAgICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgICAgICByZXZpc2lvbi5jb250ZW50ID0gcGFyYW1ldGVycy5jb250
ZW50OworCiAgICAgICAgICAgICB0aGlzLl9pZ25vcmVSZXNvdXJjZUNvbnRlbnREaWRDaGFuZ2VF
dmVudEZvclJlc291cmNlID0gbnVsbDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZGJiODNhZTc5NDQuLmI3ZjQzY2U3
MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CkBAIC01MDYsNiArNTA2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ2FsbEZyYW1lVmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0NoYXJ0RGV0YWlsc1NlY3Rpb25Sb3cuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Nv
bGxlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q29sbGVjdGlvbi5qcwppbmRleCA4Yzc3MzlmODM3Yi4uYzYzZTRlNDUzZTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0aW9uLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Db2xsZWN0
aW9uLmpzCkBAIC0xMTYsNCArMTE2LDUgQEAgV2ViSW5zcGVjdG9yLkNvbGxlY3Rpb24gPSBjbGFz
cyBDb2xsZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgIEZyYW1lOiAob2Jq
ZWN0KSA9PiBvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUsCiAgICAgUmVzb3Vy
Y2U6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSwK
ICAgICBTY3JpcHQ6IChvYmplY3QpID0+IG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5T
Y3JpcHQsCisgICAgQ1NTU3R5bGVTaGVldDogKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRl
eCAwNmQ1ZWFmMTA3MC4uMWU3ZWQwMTQ2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBAIC03
NjUsOCArNzY1LDEyIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9k
ZVN0eWxlcyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgICAgIHNvdXJjZUNv
ZGVMb2NhdGlvbiA9IHRoaXMuX2NyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbihwYXlsb2FkLnNvdXJj
ZVVSTCwgcGF5bG9hZC5zb3VyY2VMaW5lKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChzdHls
ZVNoZWV0KQorICAgICAgICBpZiAoc3R5bGVTaGVldCkgeworICAgICAgICAgICAgaWYgKCFzb3Vy
Y2VDb2RlTG9jYXRpb24gJiYgc3R5bGVTaGVldC5pc0luc3BlY3RvclN0eWxlU2hlZXQoKSkKKyAg
ICAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzdHlsZVNoZWV0LmNyZWF0ZVNvdXJj
ZUNvZGVMb2NhdGlvbihzb3VyY2VSYW5nZS5zdGFydExpbmUsIHNvdXJjZVJhbmdlLnN0YXJ0Q29s
dW1uKQorCiAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzdHlsZVNoZWV0Lm9mZnNl
dFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICB9CiAKICAg
ICAgICAgdmFyIG1lZGlhTGlzdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgcGF5bG9h
ZC5tZWRpYSAmJiBpIDwgcGF5bG9hZC5tZWRpYS5sZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZUNvbGxlY3Rpb24uanMKaW5kZXggYmQzOGFkMmY1YWEuLmVjNWFkN2M1NWMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VD
b2xsZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMKQEAgLTE4OCw3ICsxODgsMTEgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29sbGVjdGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRz
IFdlYkluc3BlY3Rvci4KIAogV2ViSW5zcGVjdG9yLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVy
aWZpZXIgPSB7CiAgICAgRG9jdW1lbnQ6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwKLSAgICBTdHlsZXNoZWV0OiAob2JqZWN0
KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0
KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVl
dCwKKyAgICBTdHlsZXNoZWV0OiAob2JqZWN0KSA9PiB7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuQ1NTU3R5bGVTaGVldChvYmplY3QpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlv
bi5UeXBlVmVyaWZpZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldAorICAgIH0sCiAgICAgSW1hZ2U6IChvYmpl
Y3QpID0+IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmpl
Y3QpICYmIG9iamVjdC50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5JbWFnZSwK
ICAgICBGb250OiAob2JqZWN0KSA9PiBXZWJJbnNwZWN0b3IuQ29sbGVjdGlvbi5UeXBlVmVyaWZp
ZXIuUmVzb3VyY2Uob2JqZWN0KSAmJiBvYmplY3QudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291
cmNlLlR5cGUuRm9udCwKICAgICBTY3JpcHQ6IChvYmplY3QpID0+IFdlYkluc3BlY3Rvci5Db2xs
ZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZShvYmplY3QpICYmIG9iamVjdC50eXBlID09PSBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5TY3JpcHQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLmpzCmluZGV4IDQ5Y2E5YzA4MzQ3Li5lZGM5NDQ0YTM3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKQEAgLTI0OCwxMSAr
MjQ4LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGNsYXNz
IENTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uIGV4dGVuCiAgICAgICAgICAgICAgICAgYXBwZW5k
U2VsZWN0b3JUZXh0S25vd25Ub01hdGNoLmNhbGwodGhpcywgdGhpcy5fc3R5bGUub3duZXJSdWxl
LnNlbGVjdG9yVGV4dCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9zdHlsZS5vd25lclJ1bGUu
c291cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsK
KyAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHsKICAgICAgICAgICAgICAgICAgICAgZG9u
dEZsb2F0OiB0cnVlLAogICAgICAgICAgICAgICAgICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVl
LAogICAgICAgICAgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCiAgICAgICAgICAg
ICAgICAgfTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3R5bGUub3duZXJTdHlsZVNoZWV0
LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMu
bmFtZVN0eWxlID0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuTm9u
ZTsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcmVmaXggPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkluc3BlY3RvciBTdHlsZSBTaGVldCIpICsgIjoiOworICAgICAgICAgICAgICAgIH0K
KwogICAgICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlTGluayA9IFdlYkluc3BlY3Rvci5jcmVh
dGVTb3VyY2VDb2RlTG9jYXRpb25MaW5rKHRoaXMuX3N0eWxlLm93bmVyUnVsZS5zb3VyY2VDb2Rl
TG9jYXRpb24sIG9wdGlvbnMpOwogICAgICAgICAgICAgICAgIHRoaXMuX29yaWdpbkVsZW1lbnQu
YXBwZW5kQ2hpbGQoc291cmNlQ29kZUxpbmspOwogICAgICAgICAgICAgfSBlbHNlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
U2hlZXRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlU2hlZXRUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uOWY2NjYzNjZkNWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZVNoZWV0VHJlZUVsZW1l
bnQuanMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYkluc3BlY3Rvci5DU1NTdHls
ZVNoZWV0VHJlZUVsZW1lbnQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0VHJlZUVsZW1lbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Io
c3R5bGVTaGVldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlU2hlZXQgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHN0eWxlU2hlZXQuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkpOworCisgICAgICAgIGNvbnN0
IGNsYXNzTmFtZXMgPSBbInN0eWxlc2hlZXQiLCAic3R5bGVzaGVldC1pY29uIl07CisgICAgICAg
IGNvbnN0IHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbnNwZWN0b3IgU3R5bGUgU2hl
ZXQiKTsKKyAgICAgICAgY29uc3Qgc3VidGl0bGUgPSBudWxsOworICAgICAgICBjb25zdCBoYXND
aGlsZHJlbiA9IGZhbHNlOworICAgICAgICBzdXBlcihzdHlsZVNoZWV0LCBjbGFzc05hbWVzLCB0
aXRsZSwgc3VidGl0bGUsIHN0eWxlU2hlZXQsIGhhc0NoaWxkcmVuKTsKKyAgICB9Cit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcwppbmRleCBhNjg3OWM2MTJkNC4uMWY3ZmYwYjgyYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmpzCkBAIC01NCw2ICs1NCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENv
bnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0
LCBleHRyYUFyZ3VtZW50cyk7CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQpCisgICAgICAgICAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwg
ZXh0cmFBcmd1bWVudHMpOworCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZykKICAgICAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcocmVwcmVzZW50ZWRP
YmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIApAQCAtMjM0LDYgKzIzNyw4IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZp
ZXcKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGlu
ZykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVu
dC5qcwppbmRleCBhYzMzNzMwZDBjOS4uN2EyNjk2NmI5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxl
bWVudC5qcwpAQCAtNTMsMTQgKzUzLDIwIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50
ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvCiAgICAg
ICAgIHRoaXMucmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncygiZmxvd3MiLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkZsb3dzIiksIHRoaXMuX2ZyYW1lLmRvbVRyZWUuY29udGVudEZsb3dDb2xsZWN0
aW9uLCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCk7CiAgICAgICAgIHRoaXMu
cmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncygiZXh0cmEtc2NyaXB0cyIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRXh0cmEgU2NyaXB0cyIpLCB0aGlzLl9mcmFtZS5leHRyYVNjcmlwdENvbGxlY3Rp
b24sIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCk7CiAKKyAgICAgICAgZnVuY3Rpb24g
Zm9yd2FyZGluZ0NvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0LCAuLi5leHRyYUFyZ3VtZW50
cykgeworICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlU2hlZXQpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0LCAuLi5leHRy
YUFyZ3VtZW50cyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0LCAuLi5leHRyYUFyZ3VtZW50cyk7CisgICAg
ICAgIH0KKwogICAgICAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMo
V2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUpKSB7CiAgICAgICAgICAgICBsZXQgZm9sZGVyTmFt
ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUodmFsdWUsIHRydWUp
OwogCi0gICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvciA9IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZVRyZWVFbGVtZW50OworICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50Q29uc3Ry
dWN0b3IgPSBmb3J3YXJkaW5nQ29uc3RydWN0b3I7CiAgICAgICAgICAgICBpZiAodmFsdWUgPT09
IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCkKICAgICAgICAgICAgICAgICB0
cmVlRWxlbWVudENvbnN0cnVjdG9yID0gV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlVHJl
ZUVsZW1lbnQ7CiAKLSAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncyhr
ZXksIGZvbGRlck5hbWUsIHRoaXMuX2ZyYW1lLnJlc291cmNlQ29sbGVjdGlvbkZvclR5cGUodmFs
dWUpLCB0cmVlRWxlbWVudENvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJG
b2xkZXJpemVTZXR0aW5ncyhrZXksIGZvbGRlck5hbWUsIHRoaXMuX2ZyYW1lLnJlc291cmNlQ29s
bGVjdGlvbkZvclR5cGUodmFsdWUpLCBmb3J3YXJkaW5nQ29uc3RydWN0b3IpOwogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsKQEAgLTExMyw2ICsxMTksMTUg
QEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc28KICAgICB7CiAgICAgICAgIC8vIEltbWVkaWF0ZSBz
dXBlcmNsYXNzZXMgYXJlIHNraXBwZWQsIHNpbmNlIEZyYW1lcyBoYW5kbGUgdGhlaXIgb3duIFNv
dXJjZU1hcFJlc291cmNlcy4KICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzU3R5bGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTWFu
YWdlci5FdmVudC5TdHlsZVNoZWV0QWRkZWQsIHRoaXMuX3N0eWxlU2hlZXRBZGRlZCwgdGhpcyk7
CisgICAgfQorCisgICAgb25kZXRhY2goKQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c1N0eWxlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1h
bmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9zdHlsZVNoZWV0QWRkZWQsIHRoaXMp
OworCisgICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7CiAgICAgfQogCiAgICAgLy8gT3ZlcnJpZGVz
IGZyb20gRm9sZGVyaXplZFRyZWVFbGVtZW50IChQcm90ZWN0ZWQpLgpAQCAtMTcwLDYgKzE4NSw5
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgRnJhbWVUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvCiAgICAgICAgICAgICBpZiAoZXh0cmFTY3JpcHQu
c291cmNlVVJMIHx8IGV4dHJhU2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwpCiAgICAgICAgICAgICAg
ICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV4dHJhU2NyaXB0KTsKICAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IGRvTm90Q3JlYXRlSWZNaXNzaW5nID0gdHJ1ZTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5wcmVmZXJyZWRJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9yRnJhbWUodGhpcy5fZnJhbWUsIHRoaXMuYWRkUmVwcmVzZW50ZWRPYmplY3RUb05ld0No
aWxkUXVldWUuYmluZCh0aGlzKSwgZG9Ob3RDcmVhdGVJZk1pc3NpbmcpOwogICAgIH0KIAogICAg
IG9uZXhwYW5kKCkKQEAgLTI1Myw0ICsyNzEsMTIgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQgPSBjbGFzcyBGcmFtZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc28K
ICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLl9mcmFtZS5kb21U
cmVlLnJlcXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKICAgICB9CisKKyAgICBfc3R5bGVTaGVldEFk
ZGVkKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKCFldmVudC5kYXRhLnN0eWxlU2hlZXQuaXNJ
bnNwZWN0b3JTdHlsZVNoZWV0KCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLnN0eWxlU2hl
ZXQpOworICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRl
eCA0YzMyNzYzY2JlOS4uYmFlMmQ0MDI2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qcwpAQCAtNjQ1LDYgKzY0NSw3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluCiAg
ICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JZGxlVHJl
ZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuWEhSQnJlYWtwb2ludFRyZWVFbGVtZW50CisgICAgICAg
ICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5DU1NTdHlsZVNoZWV0
VHJlZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHR5cGVvZiB0cmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCA9PT0gInN0cmluZyIKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRl
bnRWaWV3LmpzCmluZGV4IDVkOTY1NzZhMGFjLi5iY2YyNGFhZDU1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0yNyw3ICsyNyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3Bl
Y3RvCiB7CiAgICAgY29uc3RydWN0b3IocmVzb3VyY2UsIHN0eWxlQ2xhc3NOYW1lKQogICAgIHsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2UsIHJlc291cmNlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgcmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVTaGVldCwgcmVzb3VyY2UpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0eXBlb2Ygc3R5bGVDbGFzc05hbWUgPT09ICJzdHJpbmciKTsKIAogICAgICAgICBzdXBlcihy
ZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZUljb25zLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlSWNvbnMuY3NzCmluZGV4IGNiZjlmNjUyNWViLi5mYjhkZWZk
MTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VJY29ucy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VJY29ucy5jc3MKQEAgLTM5LDcgKzM5LDcgQEAKICAgICBjb250
ZW50OiBpbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9Eb2N1bWVudEZvbnQucG5nKSAxeCwgdXJsKC4u
L0ltYWdlcy9Eb2N1bWVudEZvbnRAMngucG5nKSAyeCk7CiB9CiAKLS5yZXNvdXJjZS1pY29uLnJl
c291cmNlLXR5cGUtc3R5bGVzaGVldCAuaWNvbiB7Cis6bWF0Y2hlcygucmVzb3VyY2UtaWNvbi5y
ZXNvdXJjZS10eXBlLXN0eWxlc2hlZXQsIC5zdHlsZXNoZWV0LWljb24pIC5pY29uIHsKICAgICBj
b250ZW50OiBpbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9Eb2N1bWVudENTUy5wbmcpIDF4LCB1cmwo
Li4vSW1hZ2VzL0RvY3VtZW50Q1NTQDJ4LnBuZykgMngpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
U2lkZWJhclBhbmVsLmpzCmluZGV4IDcxYmE3ZmMzNTFlLi42ZGUwZThkM2M5MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKQEAgLTYzLDYgKzYzLDggQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXZWJJbnNwZWMKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0UmVtb3Zl
ZCwgdGhpcy5fc2NyaXB0V2FzUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7CiAK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1hbmFnZXIuRXZlbnQuU3R5bGVTaGVldEFkZGVkLCB0aGlzLl9z
dHlsZVNoZWV0QWRkZWQsIHRoaXMpOworCiAgICAgICAgIFdlYkluc3BlY3Rvci50YXJnZXRNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFy
Z2V0UmVtb3ZlZCwgdGhpcy5fdGFyZ2V0UmVtb3ZlZCwgdGhpcyk7CiAKICAgICAgICAgV2ViSW5z
cGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZp
Y2F0aW9uLkV4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVk
LCB0aGlzKTsKQEAgLTM5Miw2ICszOTQsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWMKICAg
ICAgICAgfQogICAgIH0KIAorICAgIF9zdHlsZVNoZWV0QWRkZWQoZXZlbnQpCisgICAgeworICAg
ICAgICBsZXQgc3R5bGVTaGVldCA9IGV2ZW50LmRhdGEuc3R5bGVTaGVldDsKKyAgICAgICAgaWYg
KCFzdHlsZVNoZWV0LmlzSW5zcGVjdG9yU3R5bGVTaGVldCgpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGxldCBmcmFtZVRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJl
cHJlc2VudGVkT2JqZWN0KHN0eWxlU2hlZXQucGFyZW50RnJhbWUpOworICAgICAgICBpZiAoIWZy
YW1lVHJlZUVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZnJhbWVUcmVl
RWxlbWVudC5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShzdHlsZVNoZWV0KTsK
KyAgICB9CisKICAgICBfYWRkVGFyZ2V0V2l0aE1haW5SZXNvdXJjZSh0YXJnZXQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRhcmdl
dC5UeXBlLldvcmtlcik7CkBAIC00MjEsNiArNDM2LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNw
ZWMKICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudAorICAgICAgICAgICAgfHwg
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldFRyZWVFbGVt
ZW50CiAgICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5D
b250ZW50Rmxvd1RyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICBjb25zdCBjb29raWUgPSBudWxs
OwogICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlc1RhYkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VzVGFi
Q29udGVudFZpZXcuanMKaW5kZXggNWQzOTYwN2Q2ODguLjZiOGU2Y2U0ZjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZXNUYWJD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXNvdXJjZXNUYWJDb250ZW50Vmlldy5qcwpAQCAtNjQsNiArNjQsNyBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZXNUYWJDb250ZW50
VmlldyBleHRlbmRzIFdlYgogICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUKICAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlCiAgICAgICAgICAgICB8fCByZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQKKyAgICAgICAgICAgIHx8
IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNTU1N0eWxlU2hlZXQK
ICAgICAgICAgICAgIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93CiAgICAgICAgICAgICB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Db2xsZWN0aW9uOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKaW5kZXggMjAwMTBhNjg1OWQuLmJjMDk0M2FlMGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5qcwpAQCAtNTE2LDYgKzUxNiw4IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV2Vi
SW5zcGVjCiAgICAgICAgICAgICB0aGlzLm1pbWVUeXBlID0gdGhpcy5fc291cmNlQ29kZS5zeW50
aGV0aWNNSU1FVHlwZTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICB0aGlzLm1pbWVUeXBlID0gInRl
eHQvamF2YXNjcmlwdCI7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVTaGVldCkKKyAgICAgICAgICAgIHRoaXMubWltZVR5
cGUgPSAidGV4dC9jc3MiOwogCiAgICAgICAgIC8vIERlY2lkZSB0byBhdXRvbWF0aWNhbGx5IGZv
cm1hdCB0aGUgY29udGVudCBpZiBpdCBsb29rcyBtaW5pZmllZCBhbmQgaXQgY2FuIGJlIGZvcm1h
dHRlZC4KICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuZm9ybWF0dGVkKTsKQEAgLTk2OSw3
ICs5NzEsNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3Vy
Y2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdlYkluc3BlYwogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2Up
CiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2Rl
ID09PSB0aGlzLl9zb3VyY2VDb2RlOwotICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSB8fCB0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UgfHwgdGhpcy5fc291cmNlQ29kZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQgfHwgdGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZVNoZWV0KQogICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVM
b2NhdGlvbi5zb3VyY2VDb2RlLnVybCA9PT0gdGhpcy5fc291cmNlQ29kZS51cmw7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC05NzgsNyArOTgwLDcgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yID0gY2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBX
ZWJJbnNwZWMKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuIHNvdXJj
ZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSA9PT0gdGhpcy5fc291cmNlQ29kZTsKLSAg
ICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2UpCisgICAgICAgIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVTaGVldCkKICAgICAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNl
Q29kZS51cmwgPT09IHRoaXMuX3NvdXJjZUNvZGUudXJsOwogICAgICAgICBpZiAodGhpcy5fc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICByZXR1
cm4gc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMuX3NvdXJjZUNvZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0
UmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IGViNDRiOGQwNGViLi4y
ZGFhNTg5ZmIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAg
LTM4LDYgKzM4LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xh
c3MgVGV4dFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWIKICAgICAgICAgdGhpcy5fdGV4
dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkZv
cm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlLCB0
aGlzKTsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50V2lsbFBvcHVsYXRlLCB0aGlz
Ll9jb250ZW50V2lsbFBvcHVsYXRlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5D
b250ZW50RGlkUG9wdWxhdGUsIHRoaXMuX2NvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSAhdGhpcy5fc2hvdWxkQmVFZGl0YWJsZSgp
OwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3Byb2Jl
U2V0c0NoYW5nZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldFJl
bW92ZWQsIHRoaXMuX3Byb2JlU2V0c0NoYW5nZWQsIHRoaXMpOwpAQCAtMTI2LDggKzEyNywxNSBA
QCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3Vy
Y2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmNsb3Nl
KCk7CiAgICAgfQogCisgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gc3VwZXIuc3VwcG9ydHNTYXZlIHx8IHRoaXMucmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVTaGVldDsKKyAgICB9CisKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsK
KyAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVTaGVldCkKKyAgICAgICAgICAgIHJldHVybiB7dXJsOiAid2ViLWluc3BlY3RvcjovLy9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNzcyIsIGNvbnRlbnQ6IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nLCBm
b3JjZVNhdmVBczogdHJ1ZX07CiAgICAgICAgIHJldHVybiB7dXJsOiB0aGlzLnJlc291cmNlLnVy
bCwgY29udGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmd9OwogICAgIH0KIApAQCAtMTgzLDE0
ICsxOTEsNiBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBU
ZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYgogICAgICAgICBpZiAodGhpcy5fdGV4
dEVkaXRvci5wYXJlbnRWaWV3ID09PSB0aGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIC8vIENoZWNrIHRoZSBNSU1FLXR5cGUgZm9yIENTUyBzaW5jZSBSZXNvdXJjZS5UeXBlLlN0
eWxlc2hlZXQgYWxzbyBpbmNsdWRlcyBYU0wsIHdoaWNoIHdlIGNhbid0IGVkaXQgeWV0LgotICAg
ICAgICBpZiAodGhpcy5yZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5TdHlsZXNoZWV0ICYmIHRoaXMucmVzb3VyY2Uuc3ludGhldGljTUlNRVR5cGUgPT09ICJ0ZXh0
L2NzcyIpCi0gICAgICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJlYWRPbmx5ID0gZmFsc2U7Ci0K
LSAgICAgICAgLy8gQWxsb3cgZWRpdGluZyBhbnkgbG9jYWwgZmlsZSBzaW5jZSBlZGl0cyBjYW4g
YmUgc2F2ZWQgYW5kIHJlbG9hZGVkIHJpZ2h0IGZyb20gdGhlIEluc3BlY3Rvci4KLSAgICAgICAg
aWYgKHRoaXMucmVzb3VyY2UudXJsQ29tcG9uZW50cy5zY2hlbWUgPT09ICJmaWxlIikKLSAgICAg
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSBmYWxzZTsKLQogICAgICAgICB0aGlz
LmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMu
X3RleHRFZGl0b3IpOwogICAgIH0KQEAgLTI3NCw0ICsyNzQsMjAgQEAgV2ViSW5zcGVjdG9yLlRl
eHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZpZXcgZXh0
ZW5kcyBXZWIKICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJj
ZUNvZGUgPT09IHRoaXMucmVzb3VyY2UpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKICAgICB9CisKKyAgICBfc2hvdWxkQmVFZGl0YWJs
ZSgpCisgICAgeworICAgICAgICBpZiAodGhpcy5yZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZVNoZWV0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAg
Ly8gQ2hlY2sgdGhlIE1JTUUtdHlwZSBmb3IgQ1NTIHNpbmNlIFJlc291cmNlLlR5cGUuU3R5bGVz
aGVldCBhbHNvIGluY2x1ZGVzIFhTTCwgd2hpY2ggd2UgY2FuJ3QgZWRpdCB5ZXQuCisgICAgICAg
IGlmICh0aGlzLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlN0
eWxlc2hlZXQgJiYgdGhpcy5yZXNvdXJjZS5zeW50aGV0aWNNSU1FVHlwZSA9PT0gInRleHQvY3Nz
IikKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEFsbG93IGVkaXRpbmcg
YW55IGxvY2FsIGZpbGUgc2luY2UgZWRpdHMgY2FuIGJlIHNhdmVkIGFuZCByZWxvYWRlZCByaWdo
dCBmcm9tIHRoZSBJbnNwZWN0b3IuCisgICAgICAgIGlmICh0aGlzLnJlc291cmNlLnVybENvbXBv
bmVudHMuc2NoZW1lID09PSAiZmlsZSIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>