<?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>230351</bug_id>
          
          <creation_ts>2021-09-16 08:43:57 -0700</creation_ts>
          <short_desc>Web Inspector: Support fuzzy matching in CSS completions</short_desc>
          <delta_ts>2022-01-18 06:36:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>231432</dependson>
    
    <dependson>231604</dependson>
          <blocked>233369</blocked>
    
    <blocked>234092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Razvan Caliman">rcaliman</reporter>
          <assigned_to name="Razvan Caliman">rcaliman</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>pangle</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1794051</commentid>
    <comment_count>0</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-09-16 08:43:57 -0700</bug_when>
    <thetext>&lt;rdar://82976292&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1794054</commentid>
    <comment_count>1</comment_count>
      <attachid>438354</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-09-16 09:01:55 -0700</bug_when>
    <thetext>Created attachment 438354
Prototype

Messy and buggy prototype.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803297</commentid>
    <comment_count>2</comment_count>
      <attachid>440968</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-10-12 12:16:07 -0700</bug_when>
    <thetext>Created attachment 440968
WIP Patch

Work In Progress: extend CSSCompletions to support fuzzy matching. Update consumers in SpreadsheetTextProperty and SpreadsheetTextField</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1815113</commentid>
    <comment_count>3</comment_count>
      <attachid>444271</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-15 10:14:23 -0800</bug_when>
    <thetext>Created attachment 444271
WIP Patch

Work In Progress: add CSSQueryController, add fuzzyMatching setting, divorce CSS name and value text field value from their text contents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816136</commentid>
    <comment_count>4</comment_count>
      <attachid>444582</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-17 14:46:53 -0800</bug_when>
    <thetext>Created attachment 444582
Patch 1.0

Implementation of fuzzy matching for completions of CSS properties and values in the Styles details sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816234</commentid>
    <comment_count>5</comment_count>
      <attachid>444582</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-17 17:20:02 -0800</bug_when>
    <thetext>Comment on attachment 444582
Patch 1.0

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

&gt; Source/WebInspectorUI/ChangeLog:9
&gt; +        Use fuzzy matching for identifying CSS completions in the Styles detalils sidebar.

detalils

&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:234
&gt; +    experimentalFuzzyMatchingStyles: new WI.Setting(&quot;experimental-fuzzy-matching-styles&quot;, false),

This should have &quot;completion&quot; somewhere in the name since that&apos;s what it controls.  Maybe `experimentalCSSCompletionFuzzyMatching`?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:30
&gt; +        console.assert(Array.isArray(values), values);

Style: I&apos;d add a newline after this

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:33
&gt; +        this._values = values ?? [];

We normally only use `??` when we care about falsy values other than `null`/`undefined` (e.g. if the value is a number, we may want to include `0` as a valid input).  Since this is an array, we should ignore all falsy values and use `||` instead.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:92
&gt; +        // 2. Uppercase characters that follow a lowercase letter.

Is this used for CSS variables (e.g. `--myColor`)?  Or was this just a copypasta from `WI.ResourceQueryController`?

Speaking of, is it even possible for CSS variables to reach this point?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:101
&gt; +                isSpecial = true;

It seems a bit odd to me that &quot;-&quot;is considered a special character when it exists _so_ prevalently in CSS.  Perhaps this is trying to get something like `border--right-` to match `border-top-right-radius`?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:259
&gt; +        if (this._queryController)
&gt; +            this._queryController.addValues(values);

this._queryController?.addValues(values);

&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:265
&gt; +        if (!this._queryController)
&gt; +            this._queryController = new WI.CSSQueryController(this._values);

this._queryController ||= new WI.CSSQueryController(this._values);

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:97
&gt; +    if (currentTokenValue === &quot;(&quot; || currentTokenValue === &quot;)&quot; || currentTokenValue === &quot;,&quot;)

What about spaces (e.g. `border: 1px solid red`)?

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:73
&gt; +.completion-suggestions-container &gt; .item &gt; .highlighted {

NIT: Normally the word &quot;highlighted&quot; implies a different background color, not text styling.

Regardless, can we use a more specific/explanatory name for this (e.g. &quot;matched&quot; which is also used for a similar thing with CSS selectors)?

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:191
&gt; +                let highlightedResultFragment = this._createHighlightedCompletionFragment(completion.value, completion.matchingTextRanges);
&gt; +                itemElement.appendChild(highlightedResultFragment);

NIT: I&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:208
&gt; +    }

We should have some sort of
```
    console.assert(false, &quot;not reached&quot;);
    return &quot;&quot;;
```
at the end just in case.

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:231
&gt; +            highlightSpan.classList.add(&quot;highlighted&quot;);

ditto (Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:73)

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:989
&gt; +    _valueCompletionDataProvider(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})

Frankly at this point it&apos;d probably be easier to turn this into a `options = {}` so that we don&apos;t have to keep updating all the various callsites that&apos;re just a passthrough.
```
    _valueCompletionDataProvider(text, options = {})
    {
        options.additionalFunctionValueCompletionsProvider = this.additionalFunctionValueCompletionsProvider.bind(this);
        return WI.CSSKeywordCompletions.forPartialPropertyValue(text, this._nameElement.textContent.trim(), options);
    }
```

ditto for `_nameCompletionDataProvider` above

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:66
&gt; +    get value() { return this._pendingValue ?? this._element.textContent; }

Style: This is no longer a simple `get`, so it (and the corresponding `set`) should be expanded onto multiple lines.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:67
&gt;      set value(value) { this._element.textContent = value; }

Should this have any consideration for `_pendingValue`?  Maybe a `console.assert(!this._pendingValue)`?  Or a `this._pendingValue = null;`?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:425
&gt; +        const fuzzyMatching = WI.settings.experimentalFuzzyMatchingStyles.value;

Style: We only use `const` for things that do not change between Web Inspector sessions (i.e. actual constants).  Please use `let`.

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:38
&gt; +                    padvalue: &quot;a-bc_de.f&quot;,
&gt; +                    expected: &quot;^^^ ^  ^&quot;,

I thought `_` and `.` are NOT considered special characters?

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:46
&gt; +                    padvalue: &quot;ab-c_d.ef&quot;,
&gt; +                    expected: &quot;^ ^^^ ^&quot;,

ditto (:37)

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:70
&gt; +        name: &quot;ExecuteQueryAgainstNoResources&quot;,

oops?  It seems like this may have been a mostly-copypasta from test for `WI.ResourceQueryController` :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816235</commentid>
    <comment_count>6</comment_count>
      <attachid>444582</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-11-17 17:25:46 -0800</bug_when>
    <thetext>Comment on attachment 444582
Patch 1.0

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

&gt; Source/WebInspectorUI/ChangeLog:77
&gt; +        * UserInterface/Views/SpreadsheetTextField.js:

It would probably be worthwhile to explain the class variables that do /almost/ the same thing as they previous did. (e.g. what became what, and why.) For example suggestionHint -&gt; _completionText. Also particularly for this class it would be helpful to be a bit more verbose about the changes you&apos;ve made here with details in the key methods below, instead of just a list of general changes underneath the list of methods.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:73
&gt; +        // Results are sorted in descending order by rank.
&gt; +        // Results of equal rank are sorted alphabetically by value.

NIT: Comments are redundant with code below.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:83
&gt; +    _findSpecialCharacterIndices(string)

Is it necessary to duplicate this logic both here and in `WI.ResourceQueryController`? Could this function instead be a static method of `WI.QueryController` that takes both a string to search as well as a string/list of separators that each subclass keeps a `const` for?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:34
&gt; +WI.CSSKeywordCompletions.forPartialPropertyName = function(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})

NIT: `useFuzzyMatching`?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:55
&gt; +WI.CSSKeywordCompletions.forPartialPropertyValue = function(text, propertyName, {caretPosition, additionalFunctionValueCompletionsProvider, fuzzyMatching} = {})

Ditto :34?

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:97
&gt;&gt; +    // If the current token value is a comma or parenthesis, treat it as if we are at the start of a new token.
&gt;&gt; +    if (currentTokenValue === &quot;(&quot; || currentTokenValue === &quot;)&quot; || currentTokenValue === &quot;,&quot;)
&gt; 
&gt; What about spaces (e.g. `border: 1px solid red`)?

Is this actually correct? Shouldn&apos;t we need to make sure there is a space between the `)` and the cursor in order to consider ourselves at the start of a new token, since as far as I understand it isn&apos;t valid to run two functions right up against each other without a space in between? e.g. `border: var(--awesome-color)|` shouldn&apos;t offer completions, but `border: var(--awesome-color) |` should?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:123
&gt;      }
&gt; +    else

Style: This should be on a single line (e.g. `} else`)

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:197
&gt;              if (this._delegate &amp;&amp; typeof this._delegate.completionSuggestionsViewCustomizeCompletionElement === &quot;function&quot;)
&gt; -                this._delegate.completionSuggestionsViewCustomizeCompletionElement(this, itemElement, completions[i]);
&gt; +                this._delegate.completionSuggestionsViewCustomizeCompletionElement(this, itemElement, completion);

Nit: While you are here can we update this to use optional chaining like you did on :94 and :105

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:232
&gt; +            highlightSpan.append(completionText.substring(textRange.startColumn, textRange.endColumn));

I know I can be a bit assertion-happy at times, but I think we may want to consider asserting that the start and end points are within the completion text, since this substring call makes that assumption.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:965
&gt; +    _nameCompletionDataProvider(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})

Nit: `useFuzzyMatching`?

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:989
&gt;&gt; +    _valueCompletionDataProvider(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})
&gt; 
&gt; Frankly at this point it&apos;d probably be easier to turn this into a `options = {}` so that we don&apos;t have to keep updating all the various callsites that&apos;re just a passthrough.
&gt; ```
&gt;     _valueCompletionDataProvider(text, options = {})
&gt;     {
&gt;         options.additionalFunctionValueCompletionsProvider = this.additionalFunctionValueCompletionsProvider.bind(this);
&gt;         return WI.CSSKeywordCompletions.forPartialPropertyValue(text, this._nameElement.textContent.trim(), options);
&gt;     }
&gt; ```
&gt; 
&gt; ditto for `_nameCompletionDataProvider` above

Ditto :965?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:32
&gt; +        this._value = element.textContent;

This appears to be unused?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:-99
&gt; -
&gt; -        // Removing the suggestion hint element may leave the contents of `_element` fragmented into multiple text nodes.
&gt; -        this._combineEditorElementChildren();

Why remove this? Is it no longer possible for multiple dismissed completions to result in an increasingly fragmented list of children elements?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:133
&gt; +        this._completionText = &quot;&quot;;

This variable should be defined in the constructor as well.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:546
&gt; +        let caretPosition = this._getCaretPosition();
&gt; +        let newCaretPosition = moveCaretToEndOfCompletion ? caretPosition - this._completionPrefix.length + this._completionText.length : null;

I don&apos;t think this is right - having a null caret position shouldn&apos;t work when we use it on :553 with `setBaseAndExtent()`. I think you need to replace `null` with `caretPosition` here.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:548
&gt; +        // Setting the value collapses the text selection. Get the caret position before doing this.

Nit: Odd that this comment applies to both this line as well as the preceding lines as well. I&apos;d just drop the bit about caret position.

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:17
&gt; +                    padvalue: &quot;Abcd&quot;,

Nit: Can we just call this value and add three more spaces between `value:` and `&quot;Abcd&quot;` instead? Same for all cases below.

&gt;&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:70
&gt;&gt; +        name: &quot;ExecuteQueryAgainstNoResources&quot;,
&gt; 
&gt; oops?  It seems like this may have been a mostly-copypasta from test for `WI.ResourceQueryController` :/

`ExecuteQueryAgainstNoValues`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816485</commentid>
    <comment_count>7</comment_count>
      <attachid>444582</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-18 09:27:20 -0800</bug_when>
    <thetext>Comment on attachment 444582
Patch 1.0

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:234
&gt;&gt; +    experimentalFuzzyMatchingStyles: new WI.Setting(&quot;experimental-fuzzy-matching-styles&quot;, false),
&gt; 
&gt; This should have &quot;completion&quot; somewhere in the name since that&apos;s what it controls.  Maybe `experimentalCSSCompletionFuzzyMatching`?

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:30
&gt;&gt; +        console.assert(Array.isArray(values), values);
&gt; 
&gt; Style: I&apos;d add a newline after this

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:33
&gt;&gt; +        this._values = values ?? [];
&gt; 
&gt; We normally only use `??` when we care about falsy values other than `null`/`undefined` (e.g. if the value is a number, we may want to include `0` as a valid input).  Since this is an array, we should ignore all falsy values and use `||` instead.

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:73
&gt;&gt; +        // Results of equal rank are sorted alphabetically by value.
&gt; 
&gt; NIT: Comments are redundant with code below.

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:83
&gt;&gt; +    _findSpecialCharacterIndices(string)
&gt; 
&gt; Is it necessary to duplicate this logic both here and in `WI.ResourceQueryController`? Could this function instead be a static method of `WI.QueryController` that takes both a string to search as well as a string/list of separators that each subclass keeps a `const` for?

The logic for identifying special characters is very likely to diverge between matching file paths and CSS properties and variables. 
Also, see below comment.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:92
&gt;&gt; +        // 2. Uppercase characters that follow a lowercase letter.
&gt; 
&gt; Is this used for CSS variables (e.g. `--myColor`)?  Or was this just a copypasta from `WI.ResourceQueryController`?
&gt; 
&gt; Speaking of, is it even possible for CSS variables to reach this point?

For now, it&apos;s copied from `WI.ResourceQueryController` verbatim, but I expect to make changes here in an upcoming patch.

Yes, CSS variables are already supported as-is. I haven&apos;t yet made particular tweaks for them, but I might refine condition, either dropping it all together or expanding it to consider all uppercase characters special given that CSS variables are case-sensitive.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:101
&gt;&gt; +                isSpecial = true;
&gt; 
&gt; It seems a bit odd to me that &quot;-&quot;is considered a special character when it exists _so_ prevalently in CSS.  Perhaps this is trying to get something like `border--right-` to match `border-top-right-radius`?

Special characters have the role of boosting the rank of a result when matched or boosting the weight of a character adjacent to it when not matched. `See WI.QueryResult._calculateRank()`

For example:
query = &quot;r&quot;
results in ranked order: [r]esize, clip-[r]ule, g[r]id

&gt; Perhaps this is trying to get something like `border--right-` to match `border-top-right-radius`?
Yes, that too.

There&apos;s more tweaking we need to do to the ranking algorithm. Right now it&apos;s copied verbatim from `WI.ResourceQueryController` where special characters in filenames have more meaning than the humble dash in CSS. Adjustments will happen in follow-ups.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:259
&gt;&gt; +            this._queryController.addValues(values);
&gt; 
&gt; this._queryController?.addValues(values);

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSCompletions.js:265
&gt;&gt; +            this._queryController = new WI.CSSQueryController(this._values);
&gt; 
&gt; this._queryController ||= new WI.CSSQueryController(this._values);

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:34
&gt;&gt; +WI.CSSKeywordCompletions.forPartialPropertyName = function(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})
&gt; 
&gt; NIT: `useFuzzyMatching`?

Yes, sounds better.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:97
&gt;&gt;&gt; +    if (currentTokenValue === &quot;(&quot; || currentTokenValue === &quot;)&quot; || currentTokenValue === &quot;,&quot;)
&gt;&gt; 
&gt;&gt; What about spaces (e.g. `border: 1px solid red`)?
&gt; 
&gt; Is this actually correct? Shouldn&apos;t we need to make sure there is a space between the `)` and the cursor in order to consider ourselves at the start of a new token, since as far as I understand it isn&apos;t valid to run two functions right up against each other without a space in between? e.g. `border: var(--awesome-color)|` shouldn&apos;t offer completions, but `border: var(--awesome-color) |` should?

&gt; What about spaces (e.g. `border: 1px solid red`)?
This worked before and still works. 
The completion is offered for the token at the cursor position when the cursor is at the end of the token.
There&apos;s an open FIXME for mid-token: webkit.org/b/227157 Styles: Support completions mid-token. 

&gt; I understand it isn&apos;t valid to run two functions right up against each other without a space in between? e.g. `border: var(--awesome-color)|` shouldn&apos;t offer completions, but `border: var(--awesome-color) |` should?
You are right. The change doesn&apos;t guard against that. 
It guards against showing suggestions for the query &quot;)&quot; which would match var(), env(), etc. I moved it to a separate check to return no completions at all.

STP 135 also show completions for characters immediately following a closing parenthesis. So this isn&apos;t a new issue. I&apos;d investigate + fix that in a follow-up.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:123
&gt;&gt; +    else
&gt; 
&gt; Style: This should be on a single line (e.g. `} else`)

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:73
&gt;&gt; +.completion-suggestions-container &gt; .item &gt; .highlighted {
&gt; 
&gt; NIT: Normally the word &quot;highlighted&quot; implies a different background color, not text styling.
&gt; 
&gt; Regardless, can we use a more specific/explanatory name for this (e.g. &quot;matched&quot; which is also used for a similar thing with CSS selectors)?

Done. Also renamed `_createHighlightedCompletionFragment()` -&gt; `_createMatchedCompletionFragment()`

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:191
&gt;&gt; +                itemElement.appendChild(highlightedResultFragment);
&gt; 
&gt; NIT: I&apos;d inline this

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:197
&gt;&gt; +                this._delegate.completionSuggestionsViewCustomizeCompletionElement(this, itemElement, completion);
&gt; 
&gt; Nit: While you are here can we update this to use optional chaining like you did on :94 and :105

Good idea! Done. 

I wanted to update other similar sequences around this part of the code, but the patch is already sprawling. May happen in a follow-up. Optional chaining is beautiful

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:208
&gt;&gt; +    }
&gt; 
&gt; We should have some sort of
&gt; ```
&gt;     console.assert(false, &quot;not reached&quot;);
&gt;     return &quot;&quot;;
&gt; ```
&gt; at the end just in case.

Should never get here, but sure. Makes the linter happy too.
Also added an assert, because if we ever get a completion of a different type, somethings wrong.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:231
&gt;&gt; +            highlightSpan.classList.add(&quot;highlighted&quot;);
&gt; 
&gt; ditto (Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.css:73)

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:232
&gt;&gt; +            highlightSpan.append(completionText.substring(textRange.startColumn, textRange.endColumn));
&gt; 
&gt; I know I can be a bit assertion-happy at times, but I think we may want to consider asserting that the start and end points are within the completion text, since this substring call makes that assumption.

Good idea. Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:965
&gt;&gt; +    _nameCompletionDataProvider(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})
&gt; 
&gt; Nit: `useFuzzyMatching`?

Done

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetStyleProperty.js:989
&gt;&gt;&gt; +    _valueCompletionDataProvider(text, {caretPosition, allowEmptyPrefix, fuzzyMatching} = {})
&gt;&gt; 
&gt;&gt; Frankly at this point it&apos;d probably be easier to turn this into a `options = {}` so that we don&apos;t have to keep updating all the various callsites that&apos;re just a passthrough.
&gt;&gt; ```
&gt;&gt;     _valueCompletionDataProvider(text, options = {})
&gt;&gt;     {
&gt;&gt;         options.additionalFunctionValueCompletionsProvider = this.additionalFunctionValueCompletionsProvider.bind(this);
&gt;&gt;         return WI.CSSKeywordCompletions.forPartialPropertyValue(text, this._nameElement.textContent.trim(), options);
&gt;&gt;     }
&gt;&gt; ```
&gt;&gt; 
&gt;&gt; ditto for `_nameCompletionDataProvider` above
&gt; 
&gt; Ditto :965?

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:32
&gt;&gt; +        this._value = element.textContent;
&gt; 
&gt; This appears to be unused?

Indeed. Removed accidental leftover.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:67
&gt;&gt;      set value(value) { this._element.textContent = value; }
&gt; 
&gt; Should this have any consideration for `_pendingValue`?  Maybe a `console.assert(!this._pendingValue)`?  Or a `this._pendingValue = null;`?

Good idea resetting `this._pendingValue = null;`

I&apos;m hesitant to assert whether it&apos;s null beforehand. 

I have a patch in mind for CSS property name + value completion at the same time (rdar://82976526) where the CSS property value `SpreadsheetTextField` can be changed from the outside (`SpreadsheetStyleProperty`) when the completion includes the value.

For example &quot;display: block&quot; -&gt; apply &quot;display&quot; to name, &quot;block&quot; to value

In that case, there won&apos;t be a pending value for the CSS value `SpreadsheetTextField` and the assert will trip.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:-99
&gt;&gt; -        this._combineEditorElementChildren();
&gt; 
&gt; Why remove this? Is it no longer possible for multiple dismissed completions to result in an increasingly fragmented list of children elements?

I believe so. If you have a set of steps to reproduce, please share. I tried dismissing multiple completions and did not get fragmentation.

When completions are dismissed, the pending value is reset to the current value without the suggestion hint:
`if (hadCompletionText) {
            this._pendingValue = this.valueWithoutSuggestion();
`

On blur, Tab, click or ArrowRight, the pending value replaces the `textContent` of the element. That&apos;s supposed to collapse all text nodes into one.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:133
&gt;&gt; +        this._completionText = &quot;&quot;;
&gt; 
&gt; This variable should be defined in the constructor as well.

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:425
&gt;&gt; +        const fuzzyMatching = WI.settings.experimentalFuzzyMatchingStyles.value;
&gt; 
&gt; Style: We only use `const` for things that do not change between Web Inspector sessions (i.e. actual constants).  Please use `let`.

Ok. Subtle, but fair.
I got used to the pattern where `const` is used for a self-explanatory argument name, usually booleans, passed to methods.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:546
&gt;&gt; +        let newCaretPosition = moveCaretToEndOfCompletion ? caretPosition - this._completionPrefix.length + this._completionText.length : null;
&gt; 
&gt; I don&apos;t think this is right - having a null caret position shouldn&apos;t work when we use it on :553 with `setBaseAndExtent()`. I think you need to replace `null` with `caretPosition` here.

Good catch!

I missed that the now removed `_combineEditorElementChildren()` handled the `null` caret position by requesting it again.
As I moved logic around, I forgot about that aspect.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:548
&gt;&gt; +        // Setting the value collapses the text selection. Get the caret position before doing this.
&gt; 
&gt; Nit: Odd that this comment applies to both this line as well as the preceding lines as well. I&apos;d just drop the bit about caret position.

I got tripped by this subtle behavior and considered the comment warranted. 
If you don&apos;t feel strongly about it, I&apos;d like to keep it to warn future me/ future others.
I can see an enthusiastic soul trying to reorder these lines and be smitten with strange errors.

&gt;&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:17
&gt;&gt; +                    padvalue: &quot;Abcd&quot;,
&gt; 
&gt; Nit: Can we just call this value and add three more spaces between `value:` and `&quot;Abcd&quot;` instead? Same for all cases below.

I tossed-and-turned about this for a while. It looks _strange_ both ways. 
TBH, it&apos;s cleaner like this than having to deal with keys with whitespace in the iterator below.

If you don&apos;t feel strongly about it, I&apos;d keep it as-is.

&gt;&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:38
&gt;&gt; +                    expected: &quot;^^^ ^  ^&quot;,
&gt; 
&gt; I thought `_` and `.` are NOT considered special characters?

Indeed, they are not.

TIL: It&apos;s mistakenly considered uppercase in `WI.CSSQueryController._findSpecialCharacterIndices()`:

`Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:105`
```
else if (character.isUpperCase() &amp;&amp; previousCharacter.isLowerCase())
    isSpecial = true;
```

It&apos;s the `String.isUppercase()` utility in:

`Source/WebInspectorUI/UserInterface/Base/Utilities.js:780`
```
Object.defineProperty(String.prototype, &quot;isUpperCase&quot;,
{
    value()
    {
        return String(this) === this.toUpperCase();
    }
});
```

This means the check is mistaken for all non-alpha characters both in `WI.CSSQueryController` and `WI.ResourceQueryController`.

I could fix it with a regex test either in `_findSpecialCharacterIndices()` or directl in the utilities:

```
Object.defineProperty(String.prototype, &quot;isLowerCase&quot;,
{
    value()
    {
        return new RegExp(`[a-z]{${this.length}}`).test(this);
    }
});

Object.defineProperty(String.prototype, &quot;isUpperCase&quot;,
{
    value()
    {
        return new RegExp(`[A-Z]{${this.length}}`).test(this);
    }
});
```

WDYT?

&gt;&gt;&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:70
&gt;&gt;&gt; +        name: &quot;ExecuteQueryAgainstNoResources&quot;,
&gt;&gt; 
&gt;&gt; oops?  It seems like this may have been a mostly-copypasta from test for `WI.ResourceQueryController` :/
&gt; 
&gt; `ExecuteQueryAgainstNoValues`?

Yup, copypasta.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1816487</commentid>
    <comment_count>8</comment_count>
      <attachid>444692</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-18 09:28:56 -0800</bug_when>
    <thetext>Created attachment 444692
Patch 1.1

Address code review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817035</commentid>
    <comment_count>9</comment_count>
      <attachid>444692</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-19 16:01:07 -0800</bug_when>
    <thetext>Comment on attachment 444692
Patch 1.1

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

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:776
&gt; +        return new RegExp(`[a-z]{${this.length}}`).test(this);

NIT: Why not just `/[a-z]*/.test(this)`?

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:784
&gt; +        return new RegExp(`[A-Z]{${this.length}}`).test(this);

NIT: Why not just `/[A-Z]*/.test(this)`?

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:100
&gt; +    // It&apos;s not valid CSS to append completions immediately after a closing parenthesis.

Can we add some tests for this?

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:199
&gt; +        console.assert(typeof completion === &quot;string&quot; || completion instanceof WI.QueryResult);

NIT: I&apos;d add `completion` as another argument so that if this fails we can see what the value is in the inspector^2 console.

&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:228
&gt; +            console.assert(textRange.startColumn &gt;= 0 &amp;&amp; textRange.startColumn &lt; completionText.length, &quot;Match start out of bounds.&quot;);
&gt; +            console.assert(textRange.endColumn &gt; 0 &amp;&amp; textRange.endColumn &lt;= completionText.length, &quot;Match end out of bounds.&quot;);

ditto (:199)

NIT: Also, these messages are redundant if one just looks at the conditions.  I&apos;d remove them.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:73
&gt; +        this._pendingValue = null;

Style: I&apos;d add a newline before this

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:154
&gt; +        let hadCompletionText = !!this._completionText;

Since `_completionText` is always reset to `&quot;&quot;`, I think it&apos;d be better to check `.length` instead of `!!`.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:155
&gt; +        // Resetting the suggestion hint removes any suggestion hint element that is attached.

Style: I&apos;d add a newline before this

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:383
&gt; +        if (event.key === &quot;ArrowLeft&quot; &amp;&amp; (this._completionText || this._suggestionsView.visible)) {

ditto (:154)

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:37
&gt; +                    padvalue: &quot;a-bc_de.f&quot;,

These really look more like filenames than CSS values.  Can we replace these with things one is more like to see in CSS, ideally even actual values (e.g. `margin-right`, `--test-kebab`, `--test_snake`, `--testCamel`, `var(--foo)`, `rgb(255, 255, 255)`, etc.).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817452</commentid>
    <comment_count>10</comment_count>
      <attachid>444692</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-23 06:18:02 -0800</bug_when>
    <thetext>Comment on attachment 444692
Patch 1.1

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:776
&gt;&gt; +        return new RegExp(`[a-z]{${this.length}}`).test(this);
&gt; 
&gt; NIT: Why not just `/[a-z]*/.test(this)`?

[a-z]* means zero or more matches. That will return false positives when checking if ALL characters are lowercase for:
/[a-z]*/.test(&quot;&quot;)
/[a-z]*/.test(&quot;A&quot;)
/[a-z]*/.test(&quot;Aa&quot;)
/[a-z]*/.test(&quot;-a&quot;)

The `String.prototype.isLowerCase` is used now just on single character strings. But it&apos;s an extension of String and it&apos;s reasonable to expect it will be used for longer strings. Checking that ALL characters in the string pass the regex test makes this method versatile.

Ditto for `String.prototype.isUpperCase()`

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:100
&gt;&gt; +    // It&apos;s not valid CSS to append completions immediately after a closing parenthesis.
&gt; 
&gt; Can we add some tests for this?

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:199
&gt;&gt; +        console.assert(typeof completion === &quot;string&quot; || completion instanceof WI.QueryResult);
&gt; 
&gt; NIT: I&apos;d add `completion` as another argument so that if this fails we can see what the value is in the inspector^2 console.

Good idea. Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CompletionSuggestionsView.js:228
&gt;&gt; +            console.assert(textRange.endColumn &gt; 0 &amp;&amp; textRange.endColumn &lt;= completionText.length, &quot;Match end out of bounds.&quot;);
&gt; 
&gt; ditto (:199)
&gt; 
&gt; NIT: Also, these messages are redundant if one just looks at the conditions.  I&apos;d remove them.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:73
&gt;&gt; +        this._pendingValue = null;
&gt; 
&gt; Style: I&apos;d add a newline before this

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:154
&gt;&gt; +        let hadCompletionText = !!this._completionText;
&gt; 
&gt; Since `_completionText` is always reset to `&quot;&quot;`, I think it&apos;d be better to check `.length` instead of `!!`.

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:155
&gt;&gt; +        // Resetting the suggestion hint removes any suggestion hint element that is attached.
&gt; 
&gt; Style: I&apos;d add a newline before this

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:383
&gt;&gt; +        if (event.key === &quot;ArrowLeft&quot; &amp;&amp; (this._completionText || this._suggestionsView.visible)) {
&gt; 
&gt; ditto (:154)

Fixed.

&gt;&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:37
&gt;&gt; +                    padvalue: &quot;a-bc_de.f&quot;,
&gt; 
&gt; These really look more like filenames than CSS values.  Can we replace these with things one is more like to see in CSS, ideally even actual values (e.g. `margin-right`, `--test-kebab`, `--test_snake`, `--testCamel`, `var(--foo)`, `rgb(255, 255, 255)`, etc.).

Updated the list of tests to check strings usually found in CSS property names and values.

Added underscore &quot;_&quot; as a special character because it&apos;s possible to find it in variable names. Thanks for the tip!

I didn&apos;t mess with the matching logic just yet. CSS variable names are exceptionally permissive. 
We can decide in a later patch if we want to add special meaning for case in variables and/or additional special characters.

For now, special characters serve just as a booster when ranking results if the query includes them or finds matches adjacent to them. 
Results are not dropped if their special characters are not yet handled (for example parentheses, dots or commas). They&apos;re just ranked on equal terms as for regular characters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817454</commentid>
    <comment_count>11</comment_count>
      <attachid>445027</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-23 06:20:35 -0800</bug_when>
    <thetext>Created attachment 445027
Patch 1.2

Address review feedback: improve tests, fix nits</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818316</commentid>
    <comment_count>12</comment_count>
      <attachid>444692</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-29 10:55:24 -0800</bug_when>
    <thetext>Comment on attachment 444692
Patch 1.1

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:776
&gt;&gt;&gt; +        return new RegExp(`[a-z]{${this.length}}`).test(this);
&gt;&gt; 
&gt;&gt; NIT: Why not just `/[a-z]*/.test(this)`?
&gt; 
&gt; [a-z]* means zero or more matches. That will return false positives when checking if ALL characters are lowercase for:
&gt; /[a-z]*/.test(&quot;&quot;)
&gt; /[a-z]*/.test(&quot;A&quot;)
&gt; /[a-z]*/.test(&quot;Aa&quot;)
&gt; /[a-z]*/.test(&quot;-a&quot;)
&gt; 
&gt; The `String.prototype.isLowerCase` is used now just on single character strings. But it&apos;s an extension of String and it&apos;s reasonable to expect it will be used for longer strings. Checking that ALL characters in the string pass the regex test makes this method versatile.
&gt; 
&gt; Ditto for `String.prototype.isUpperCase()`

Oh oops I totally forgot the `$` and `^` in the regex.  The overarching point I was trying to make is &quot;can we do this with a declared regex instead of a dynamic one?&quot;.  It just seems odd to me that we care about `this.length` at all when we really just want to know &quot;are all the characters lowercase?&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818411</commentid>
    <comment_count>13</comment_count>
      <attachid>445027</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-29 12:40:16 -0800</bug_when>
    <thetext>Comment on attachment 445027
Patch 1.2

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

&gt; Source/WebInspectorUI/ChangeLog:211
&gt; -
&gt; +        

oops?

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:776
&gt; +        return new RegExp(`[a-z]{${this.length}}`).test(this);

please see comment #12

also, please add tests for this

&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:784
&gt; +        return new RegExp(`[A-Z]{${this.length}}`).test(this);

ditto (:776)

&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:102
&gt; +    if (currentTokenValue === &quot;)&quot; || tokenBeforeCaret?.value.trim() === &quot;)&quot;)

Does `CodeMirror` include whitespace in tokens?If not, the `trim()` is unnecessary.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:71
&gt; +    set value(value) {

Style: `{` should be on a separate line

&gt; LayoutTests/inspector/unit-tests/css-query-controller.html:141
&gt; +                    value: &quot;abcde&quot;,
&gt; +                    expected: &quot;abcd&quot;

NIT: It&apos;d be nice to align these horizontally (e.g. do `padvalue` like above) so one can more easily map the query to the expected matches :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821022</commentid>
    <comment_count>14</comment_count>
      <attachid>445027</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-07 06:50:10 -0800</bug_when>
    <thetext>Comment on attachment 445027
Patch 1.2

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:211
&gt;&gt; +        
&gt; 
&gt; oops?

Fixed.

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:776
&gt;&gt; +        return new RegExp(`[a-z]{${this.length}}`).test(this);
&gt; 
&gt; please see comment #12
&gt; 
&gt; also, please add tests for this

Done. Added tests in `LayoutTests/inspector/unit-tests/string-utilities.html`

&gt;&gt; Source/WebInspectorUI/UserInterface/Base/Utilities.js:784
&gt;&gt; +        return new RegExp(`[A-Z]{${this.length}}`).test(this);
&gt; 
&gt; ditto (:776)

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/CSSKeywordCompletions.js:102
&gt;&gt; +    if (currentTokenValue === &quot;)&quot; || tokenBeforeCaret?.value.trim() === &quot;)&quot;)
&gt; 
&gt; Does `CodeMirror` include whitespace in tokens?If not, the `trim()` is unnecessary.

The `trim()` is indeed unnecessary.
`CodeMirror` doesn&apos;t use `CSSKeywordCompletions.forPartialPropertyValue()`. It has its own matching logic.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetTextField.js:71
&gt;&gt; +    set value(value) {
&gt; 
&gt; Style: `{` should be on a separate line

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821023</commentid>
    <comment_count>15</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-07 06:53:00 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #12)

&gt; Oh oops I totally forgot the `$` and `^` in the regex.

Great idea! It&apos;s nicer without the added complexity of string length.

I added the constraint for one or more characters, though: `/^[a-z]+$/.test(this)`
That&apos;s so empty strings don&apos;t match unnecessarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821024</commentid>
    <comment_count>16</comment_count>
      <attachid>446169</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-07 06:54:04 -0800</bug_when>
    <thetext>Created attachment 446169
Patch 1.3

Address code review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821165</commentid>
    <comment_count>17</comment_count>
      <attachid>446169</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-12-07 12:18:33 -0800</bug_when>
    <thetext>Comment on attachment 446169
Patch 1.3

r=me, nice work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821179</commentid>
    <comment_count>18</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-12-07 12:44:57 -0800</bug_when>
    <thetext>Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821184</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-07 12:52:05 -0800</bug_when>
    <thetext>Committed r286611 (244935@trunk): &lt;https://commits.webkit.org/244935@trunk&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446169.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831663</commentid>
    <comment_count>20</comment_count>
      <attachid>449384</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2022-01-18 06:36:01 -0800</bug_when>
    <thetext>Created attachment 449384
Screenshot with patch applied</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438354</attachid>
            <date>2021-09-16 09:01:55 -0700</date>
            <delta_ts>2021-10-12 12:16:03 -0700</delta_ts>
            <desc>Prototype</desc>
            <filename>bug-230351-20210916180154.patch</filename>
            <type>text/plain</type>
            <size>26433</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDM1MmJkNmM4Mjk4MDhlN2E2YzdjNmQ2ZTAxMDZh
N2Q0ZDM5NjBlOTcuLmFmMDNhZWIzMDFiZDFkYzkyYjEyOTBkMWJjOTczODk2NWIwNmFiNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIxLTA5LTE2ICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0IGZ1enp5IG1hdGNoaW5nIGluIENTUyBjb21wbGV0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzUxCisgICAgICAgIDxyZGFy
Oi8vODI5NzYyOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUHJvdG90eXBlIGZvciBmdXp6eSBtYXRjaGluZyBjb21wbGV0aW9ucyBmb3IgQ1NTIHBy
b3BlcnRpZXMgYW5kIHZhbHVlcworCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
Q29tcGxldGlvbnMuanM6CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucyk6CisgICAgICAgIChX
SS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgKFdJLkNT
U0NvbXBsZXRpb25zLnByb3RvdHlwZS5fZmluZFF1ZXJ5TWF0Y2hlcy5wdXNoTWF0Y2gpOgorICAg
ICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLl9maW5kUXVlcnlNYXRjaGVzLm1hdGNo
TmV4dFNwZWNpYWxDaGFyYWN0ZXIpOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90
eXBlLl9maW5kUXVlcnlNYXRjaGVzLmJhY2t0cmFjayk6CisgICAgICAgIChXSS5DU1NDb21wbGV0
aW9ucy5wcm90b3R5cGUuX2ZpbmRRdWVyeU1hdGNoZXMpOgorICAgICAgICAoV0kuQ1NTQ29tcGxl
dGlvbnMucHJvdG90eXBlLl9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qczoKKyAgICAgICAg
KFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzOgorICAgICAg
ICAoV0kuUmVzb3VyY2VRdWVyeVJlc3VsdC5wcm90b3R5cGUudG9TdHJpbmcpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3M6CisgICAg
ICAgICguY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIgPiAuaXRlbSA+IC5oaWdobGln
aHRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LmpzOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5
cGUuc2VsZWN0TmV4dCk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnBy
b3RvdHlwZS5zZWxlY3RQcmV2aW91cyk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldy5wcm90b3R5cGUuX2NyZWF0ZUhpZ2hsaWdodGVkQ29tcGxldGlvbkZyYWdtZW50KToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5q
czoKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX25hbWVD
b21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9w
ZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJ
LlNwcmVhZHNoZWV0VGV4dEZpZWxkKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
cHJvdG90eXBlLnNldCB2YWx1ZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5w
cm90b3R5cGUudmFsdWVXaXRob3V0U3VnZ2VzdGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVl
dFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0
aW9uKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fZGlzY2Fy
ZENoYW5nZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hh
bmRsZUJsdXIpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9o
YW5kbGVLZXlEb3duKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlw
ZS5fdXBkYXRlQ29tcGxldGlvbnMpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
cHJvdG90eXBlLl9jb21taXRWYWx1ZSk6CisKIDIwMjEtMDktMTMgIFJhenZhbiBDYWxpbWFuICA8
cmNhbGltYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFVwZGF0ZSBuYW1p
bmcgb2YgV0kuQ1NTQ29tcGxldGlvbnMgY2FsbGJhY2sgdXNlZCBmb3IgY29sbGVjdGluZyBzdXBw
b3J0ZWQgQ1NTIHByb3BlcnRpZXMgZnJvbSB0aGUgdGFyZ2V0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMu
anMKaW5kZXggMmExZjhlNGU0MzRhYTE5NzM2NTM5N2MyZDU0OTI0NDJiM2EwYjExOS4uMmMzNmQx
ZGUxNDYyYjdjZWZkOTBhMmQ2NTU1NWE4MDAyNTgyNmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9u
cy5qcwpAQCAtMzgsMTEgKzM4LDIyIEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29t
cGxldGlvbnMKICAgICAgICAgdGhpcy5fdmFsdWVzID0gW107CiAgICAgICAgIHRoaXMuX3Nob3J0
aGFuZHMgPSB7fTsKIAorICAgICAgICAvLyBIQUNLOiBzdHViYmluZy1pbiBwYXJ0cyB0byByZXVz
ZSBsb2dpYyBmcm9tIFdJLlJlc291cmNlUXVlcnlDb250cm9sbGVyIHZlcmJhdGltIGZvciBwcm90
b3R5cGUuCisgICAgICAgIHRoaXMuX3Jlc291cmNlRGF0YU1hcCA9IG5ldyBNYXA7CisKICAgICAg
ICAgLy8gVGhlIGBwcm9wZXJ0aWVzYCBwYXJhbWV0ZXIgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Yg
b2JqZWN0cyB3aXRoICduYW1lJyAvICdsb25naGFuZCcKICAgICAgICAgLy8gcHJvcGVydGllcyB3
aGVuIGluaXRpYWxpemVkIGZyb20gdGhlIHByb3RvY29sIGZvciBDU1NDb21wbGV0aW9ucy5jc3NO
YW1lQ29tcGxldGlvbnMuCiAgICAgICAgIC8vIE9yIGl0IG1heSBqdXN0IGEgbGlzdCBvZiBzdHJp
bmdzIHdoZW4gcXVpY2tseSBpbml0aWFsaXplZCBmb3Igb3RoZXIgY29tcGxldGlvbiBwdXJwb3Nl
cy4KLSAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoICYmIHR5cGVvZiBwcm9wZXJ0aWVzWzBd
ID09PSAic3RyaW5nIikKKyAgICAgICAgaWYgKHByb3BlcnRpZXMubGVuZ3RoICYmIHR5cGVvZiBw
cm9wZXJ0aWVzWzBdID09PSAic3RyaW5nIikgewogICAgICAgICAgICAgdGhpcy5fdmFsdWVzLnB1
c2hBbGwocHJvcGVydGllcyk7CisKKyAgICAgICAgICAgIC8vIE1vY2sgcmVzb3VyY2Ugd2l0aCB3
aGF0ZXZlciB2YWx1ZSB3YXMgcHJvdmlkZWQuCisgICAgICAgICAgICBmb3IgKGxldCB2YWx1ZSBv
ZiB0aGlzLl92YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSB7ZGlzcGxh
eU5hbWU6IHZhbHVlfTsKKyAgICAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZURhdGFNYXAuc2V0
KHJlc291cmNlLCB7fSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gRklY
TUU6IEV4dHJhY3QgbG9naWMgc3BlY2lmaWMgZm9yIENTUyBwcm9wZXJ0eSBuYW1lIGNvbXBsZXRp
b25zIGludG8gaXRzIG93biBjbGFzcyAoV0kuQ1NTTmFtZUNvbXBsZXRpb25zPyk7IGtlZXAgV0ku
Q1NTQ29tcGxldGlvbnMgZ2VuZXJpYy4KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3Ig
KHZhciBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICAgICAgdmFyIHByb3Bl
cnR5TmFtZSA9IHByb3BlcnR5Lm5hbWU7CkBAIC01MCw2ICs2MSwxMCBAQCBXSS5DU1NDb21wbGV0
aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAKICAgICAgICAgICAgICAgICB0aGlzLl92YWx1
ZXMucHVzaChwcm9wZXJ0eU5hbWUpOwogCisgICAgICAgICAgICAgICAgLy8gTW9jayByZXNvdXJj
ZSB3aXRoIHByb3BlcnR5IG5hbWUKKyAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSB7ZGlz
cGxheU5hbWU6IHByb3BlcnR5TmFtZX07CisgICAgICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VE
YXRhTWFwLnNldChyZXNvdXJjZSwge30pOworCiAgICAgICAgICAgICAgICAgbGV0IGFsaWFzZXMg
PSBwcm9wZXJ0eS5hbGlhc2VzOwogICAgICAgICAgICAgICAgIGlmIChhbGlhc2VzKQogICAgICAg
ICAgICAgICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbChhbGlhc2VzKTsKQEAgLTI4Niw2ICsz
MDEsMTY1IEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKICAgICAg
ICAgcmV0dXJuIHJlc3VsdHM7CiAgICAgfQogCisgICAgLy8gSEFDSzogc3R1YmJpbmctaW4gcGFy
dHMgdG8gcmV1c2UgbG9naWMgZnJvbSBXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlciB2ZXJiYXRp
bSBmb3IgcHJvdG90eXBlLgorICAgIGV4ZWN1dGVRdWVyeShxdWVyeSkKKyAgICB7CisgICAgICAg
IGlmICghcXVlcnkgfHwgIXRoaXMuX3Jlc291cmNlRGF0YU1hcC5zaXplKQorICAgICAgICAgICAg
cmV0dXJuIFtdOworCisgICAgICAgIHF1ZXJ5ID0gcXVlcnkucmVtb3ZlV2hpdGVzcGFjZSgpLnRv
TG93ZXJDYXNlKCk7CisKKyAgICAgICAgbGV0IGNvb2tpZSA9IG51bGw7CisgICAgICAgIC8vIGlm
IChxdWVyeS5pbmNsdWRlcygiOiIpKSB7CisgICAgICAgIC8vICAgICBsZXQgW25ld1F1ZXJ5LCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdID0gcXVlcnkuc3BsaXQoIjoiKTsKKyAgICAgICAgLy8g
ICAgIHF1ZXJ5ID0gbmV3UXVlcnk7CisgICAgICAgIC8vICAgICBsaW5lTnVtYmVyID0gbGluZU51
bWJlciA/IHBhcnNlSW50KGxpbmVOdW1iZXIsIDEwKSAtIDEgOiAwOworICAgICAgICAvLyAgICAg
Y29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8gcGFyc2VJbnQoY29sdW1uTnVtYmVyLCAxMCkg
LSAxIDogMDsKKyAgICAgICAgLy8gICAgIGNvb2tpZSA9IHtsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXJ9OworICAgICAgICAvLyB9CisKKyAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKKyAgICAgICAg
Zm9yIChsZXQgW3Jlc291cmNlLCBjYWNoZWREYXRhXSBvZiB0aGlzLl9yZXNvdXJjZURhdGFNYXAp
IHsKKyAgICAgICAgICAgIGlmICghY2FjaGVkRGF0YS5zZWFyY2hTdHJpbmcpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSByZXNvdXJjZS5kaXNwbGF5TmFtZTsKKyAgICAgICAg
ICAgICAgICBjYWNoZWREYXRhLnNlYXJjaFN0cmluZyA9IGRpc3BsYXlOYW1lLnRvTG93ZXJDYXNl
KCk7CisgICAgICAgICAgICAgICAgY2FjaGVkRGF0YS5zcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyA9
IHRoaXMuX2ZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyhkaXNwbGF5TmFtZSk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGxldCBtYXRjaGVzID0gdGhpcy5fZmluZFF1ZXJ5TWF0Y2hl
cyhxdWVyeSwgY2FjaGVkRGF0YS5zZWFyY2hTdHJpbmcsIGNhY2hlZERhdGEuc3BlY2lhbENoYXJh
Y3RlckluZGljZXMpOworICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKQorICAgICAgICAg
ICAgICAgIHJlc3VsdHMucHVzaChuZXcgV0kuUmVzb3VyY2VRdWVyeVJlc3VsdChyZXNvdXJjZSwg
bWF0Y2hlcywgY29va2llKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXNvdXJjZXMgYXJl
IHNvcnRlZCBpbiBkZXNjZW5kaW5nIG9yZGVyIGJ5IHJhbmsuIFJlc291cmNlcyBvZiBlcXVhbAor
ICAgICAgICAvLyByYW5rIGFyZSBzb3J0ZWQgYnkgZGlzcGxheSBuYW1lLgorICAgICAgICByZXR1
cm4gcmVzdWx0cy5zb3J0KChhLCBiKSA9PiB7CisgICAgICAgICAgICBpZiAoYS5yYW5rID09PSBi
LnJhbmspCisgICAgICAgICAgICAgICAgcmV0dXJuIGEucmVzb3VyY2UuZGlzcGxheU5hbWUuZXh0
ZW5kZWRMb2NhbGVDb21wYXJlKGIucmVzb3VyY2UuZGlzcGxheU5hbWUpOworICAgICAgICAgICAg
cmV0dXJuIGIucmFuayAtIGEucmFuazsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2ZpbmRRdWVyeU1hdGNoZXMocXVlcnksIHNlYXJjaFN0cmluZywgc3BlY2lh
bENoYXJhY3RlckluZGljZXMpCisgICAgeworICAgICAgICBpZiAocXVlcnkubGVuZ3RoID4gc2Vh
cmNoU3RyaW5nLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBsZXQg
bWF0Y2hlcyA9IFtdOworICAgICAgICBsZXQgcXVlcnlJbmRleCA9IDA7CisgICAgICAgIGxldCBz
ZWFyY2hJbmRleCA9IDA7CisgICAgICAgIGxldCBzcGVjaWFsSW5kZXggPSAwOworICAgICAgICBs
ZXQgZGVhZEJyYW5jaGVzID0gbmV3IEFycmF5KHF1ZXJ5Lmxlbmd0aCkuZmlsbChJbmZpbml0eSk7
CisgICAgICAgIGxldCB0eXBlID0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuU3BlY2lhbDsK
KworICAgICAgICBmdW5jdGlvbiBwdXNoTWF0Y2goaW5kZXgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1hdGNoZXMucHVzaChuZXcgV0kuUmVzb3VyY2VRdWVyeU1hdGNoKHR5cGUsIGluZGV4LCBx
dWVyeUluZGV4KSk7CisgICAgICAgICAgICBzZWFyY2hJbmRleCA9IGluZGV4ICsgMTsKKyAgICAg
ICAgICAgIHF1ZXJ5SW5kZXgrKzsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1hdGNo
TmV4dFNwZWNpYWxDaGFyYWN0ZXIoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3BlY2lh
bEluZGV4ID49IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzLmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGxldCBvcmlnaW5hbFNwZWNpYWxJbmRleCA9
IHNwZWNpYWxJbmRleDsKKyAgICAgICAgICAgIHdoaWxlIChzcGVjaWFsSW5kZXggPCBzcGVjaWFs
Q2hhcmFjdGVySW5kaWNlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAvLyBOb3JtYWwgY2hh
cmFjdGVyIG1hdGNoaW5nIGNhbiBtb3ZlIHBhc3Qgc3BlY2lhbCBjaGFyYWN0ZXJzLAorICAgICAg
ICAgICAgICAgIC8vIHNvIGFkdmFuY2UgdGhlIHNwZWNpYWwgY2hhcmFjdGVyIGluZGV4IGlmIGl0
J3MgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgc2VhcmNoIHN0cmluZyBw
b3NpdGlvbi4KKyAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBzcGVjaWFsQ2hhcmFjdGVySW5k
aWNlc1tzcGVjaWFsSW5kZXgrK107CisgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgc2VhcmNo
SW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAg
aWYgKHF1ZXJ5W3F1ZXJ5SW5kZXhdID09PSBzZWFyY2hTdHJpbmdbaW5kZXhdKSB7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hNYXRjaChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
c3BlY2lhbEluZGV4ID0gb3JpZ2luYWxTcGVjaWFsSW5kZXg7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBiYWNrdHJhY2soKQorICAgICAg
ICB7CisgICAgICAgICAgICB3aGlsZSAobWF0Y2hlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAg
ICBxdWVyeUluZGV4LS07CisKKyAgICAgICAgICAgICAgICBsZXQgbGFzdE1hdGNoID0gbWF0Y2hl
cy5wb3AoKTsKKyAgICAgICAgICAgICAgICBpZiAobGFzdE1hdGNoLnR5cGUgIT09IFdJLlJlc291
cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICAgICAgZGVhZEJyYW5jaGVzW2xhc3RNYXRjaC5xdWVyeUluZGV4XSA9
IGxhc3RNYXRjaC5pbmRleDsKKyAgICAgICAgICAgICAgICBzZWFyY2hJbmRleCA9IG1hdGNoZXMu
bGFzdFZhbHVlID8gbWF0Y2hlcy5sYXN0VmFsdWUuaW5kZXggKyAxIDogMDsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5n
dGggJiYgc2VhcmNoSW5kZXggPD0gc2VhcmNoU3RyaW5nLmxlbmd0aCkgeworICAgICAgICAgICAg
aWYgKHR5cGUgPT09IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwgJiYgIW1hdGNo
TmV4dFNwZWNpYWxDaGFyYWN0ZXIoKSkKKyAgICAgICAgICAgICAgICB0eXBlID0gV0kuUmVzb3Vy
Y2VRdWVyeU1hdGNoLlR5cGUuTm9ybWFsOworCisgICAgICAgICAgICBpZiAodHlwZSA9PT0gV0ku
UmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuTm9ybWFsKSB7CisgICAgICAgICAgICAgICAgbGV0IGlu
ZGV4ID0gc2VhcmNoU3RyaW5nLmluZGV4T2YocXVlcnlbcXVlcnlJbmRleF0sIHNlYXJjaEluZGV4
KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGRlYWRCcmFuY2hl
c1txdWVyeUluZGV4XSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2goaW5kZXgpOwor
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuU3Bl
Y2lhbDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYWNrdHJhY2soKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgaWYgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107
CisKKyAgICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAgfQorCisgICAgX2ZpbmRTcGVjaWFsQ2hh
cmFjdGVySW5kaWNlcyhzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgLy8gRklYTUU6IHVzZSBvbmx5IHNl
cGFyYXRvcnMgdmFsaWQgaW4gQ1NTIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMKKyAgICAgICAg
Y29uc3QgZmlsZW5hbWVTZXBhcmF0b3JzID0gIl8uLSI7CisKKyAgICAgICAgLy8gRklYTUU6IHRo
ZSBoZXVyaXN0aWNzIGZvciBDU1MgbWlnaHQgYmUgc2xpZ2h0bHkgZGlmZmVyZW50ICh1cHBlcmNh
c2UgaXMgaW1wb3J0YW50IGZvciBDU1MgdmFyaWFibGVzKQorCisgICAgICAgIC8vIFNwZWNpYWwg
Y2hhcmFjdGVycyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIC8vIDEuIFRoZSBmaXJz
dCBjaGFyYWN0ZXIuCisgICAgICAgIC8vIDIuIFVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRoYXQgZm9s
bG93IGEgbG93ZXJjYXNlIGxldHRlci4KKyAgICAgICAgLy8gMy4gRmlsZW5hbWUgc2VwYXJhdG9y
cyBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHNlcGFyYXRvci4KKyAgICAg
ICAgbGV0IGluZGljZXMgPSBbMF07CisKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdHJp
bmcubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07
CisgICAgICAgICAgICBsZXQgaXNTcGVjaWFsID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChm
aWxlbmFtZVNlcGFyYXRvcnMuaW5jbHVkZXMoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBp
c1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGV0
IHByZXZpb3VzQ2hhcmFjdGVyID0gc3RyaW5nW2kgLSAxXTsKKyAgICAgICAgICAgICAgICBsZXQg
cHJldmlvdXNDaGFyYWN0ZXJJc1NlcGFyYXRvciA9IGZpbGVuYW1lU2VwYXJhdG9ycy5pbmNsdWRl
cyhwcmV2aW91c0NoYXJhY3Rlcik7CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ2hhcmFj
dGVySXNTZXBhcmF0b3IpCisgICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkgJiYgcHJldmlv
dXNDaGFyYWN0ZXIuaXNMb3dlckNhc2UoKSkKKyAgICAgICAgICAgICAgICAgICAgaXNTcGVjaWFs
ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGlzU3BlY2lhbCkKKyAg
ICAgICAgICAgICAgICBpbmRpY2VzLnB1c2goaSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gaW5kaWNlczsKKyAgICB9CisKICAgICBfZmlyc3RJbmRleE9mUHJlZml4KHByZWZpeCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fdmFsdWVzLmxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlv
bnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5
d29yZENvbXBsZXRpb25zLmpzCmluZGV4IDAzNTdiZDFkYjhlMDczY2MxOTY0YTcyY2FiZjA5ZGNl
ZGQ1ZDg4ZjIuLmJkOWYzY2M1ZjIxOWU1NjllODJjNDg3MzcxNmQwMzNkY2E4N2ZjYzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3
b3JkQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwpAQCAtMzEsNyArMzEsNyBAQAogCiBX
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMgPSB7fTsKIAotV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
LmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUgPSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwg
YWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKK1dJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0
aWFsUHJvcGVydHlOYW1lID0gZnVuY3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1w
dHlQcmVmaXgsIGZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlvbiA/Pz0g
dGV4dC5sZW5ndGg7CiAgICAgYWxsb3dFbXB0eVByZWZpeCA/Pz0gZmFsc2U7CkBAIC00MiwxMCAr
NDIsMTMgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUg
PSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwKIAogICAgIGlmICghdGV4dC5sZW5ndGgg
JiYgYWxsb3dFbXB0eVByZWZpeCkKICAgICAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBs
ZXRpb25zOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMudmFsdWVzfTsKLSAg
ICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6V0kuQ1NTQ29tcGxldGlvbnMuY3Nz
TmFtZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgodGV4dCl9OworCisgICAgbGV0IGNvbXBsZXRpb25z
ID0gZnV6enlNYXRjaGluZyA/IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5l
eGVjdXRlUXVlcnkodGV4dCkgOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMu
c3RhcnRzV2l0aCh0ZXh0KTsKKworICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9u
c307CiB9OwogCi1XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFs
dWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlv
bmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXJ9ID0ge30pCitXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9w
ZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRp
b25zUHJvdmlkZXIsIGZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlvbiA/
Pz0gdGV4dC5sZW5ndGg7CiAKQEAgLTExNSw3ICsxMTgsOCBAQCBXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5h
bWUsCiAgICAgICAgIHJldHVybiB7cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlv
bnM6IGNvbXBsZXRpb25zLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpfTsKICAgICB9CiAK
LSAgICByZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25zOiBXSS5D
U1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkocHJvcGVydHlOYW1lKS5zdGFydHNXaXRo
KGN1cnJlbnRUb2tlblZhbHVlKX07CisgICAgbGV0IGNvbXBsZXRpb25zID0gZnV6enlNYXRjaGlu
ZyA/IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpLmV4
ZWN1dGVRdWVyeSh0ZXh0KSA6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShw
cm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpOworICAgIHJldHVybiB7
cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnN9OwogfTsKIAogV0kuQ1NTS2V5
d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291
cmNlUXVlcnlSZXN1bHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qcwppbmRleCAwMjI5Yjc4MDAwZDRmY2Q4ZTVlNGVi
MWNkMzYyMzYyMjU0NGQxZGE2Li4xNjNkZGYzZmMwZjdkNjk3MDM2ZjQwODFhNGExYzMwYWM2NzIw
OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qcwpAQCAtNTUsNiArNTUsMTEg
QEAgV0kuUmVzb3VyY2VRdWVyeVJlc3VsdCA9IGNsYXNzIFJlc291cmNlUXVlcnlSZXN1bHQKICAg
ICAgICAgcmV0dXJuIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlczsKICAgICB9CiAKKyAgICB0b1N0
cmluZygpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UuZGlzcGxheU5hbWU7
CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX2NhbGN1bGF0ZVJhbmsoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlv
blN1Z2dlc3Rpb25zVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcwppbmRleCA2NjdhMDIzZTc5YTNh
ZWU3MTk4MjY1NmUxYzM2YTA1NDAyMzM3MjUzLi5mMmE4NWViMWZjZTRiY2Q1YTNlOWIyYzVkNzQx
NTI3MmE0NmNhNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3
LmNzcwpAQCAtNzAsNiArNzAsMTAgQEAKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiB9
CiAKKy5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdo
dGVkIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKwogLmNvbXBsZXRpb24tc3VnZ2VzdGlv
bnMtY29udGFpbmVyOm5vdCg6YWN0aXZlKSA+IC5pdGVtLnNlbGVjdGVkLAogLmNvbXBsZXRpb24t
c3VnZ2VzdGlvbnMtY29udGFpbmVyID4gLml0ZW06YWN0aXZlIHsKICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiB2YXIoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IDgzNjgzMjlkMzBmN2JlYzBjMTRlNDNlZjM3
ZTY5YTIyMGY0ZTIzZjIuLjlmZWQ4OGVmZDQ4NDAzMTNhYzMyMjJjNmRiYWFmODZjODk4NWI2NTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMzIsNiAr
MzIsNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IGRlbGVnYXRlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3ByZXZlbnRCbHVyID0gcHJldmVudEJs
dXIgfHwgZmFsc2U7CiAKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBbXTsKICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRJbmRleCA9IE5hTjsKICAgICAgICAgdGhpcy5fbW92ZUludGVydmFsSWRl
bnRpZmllciA9IG51bGw7CiAKQEAgLTg5LDkgKzkwLDkgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKyt0aGlzLnNlbGVjdGVkSW5kZXg7CiAKLSAg
ICAgICAgdmFyIHNlbGVjdGVkSXRlbUVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1FbGVtZW50
OwotICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtRWxlbWVudCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0
eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0
aW9uID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlv
blN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKHRoaXMsIHNlbGVjdGVkSXRlbUVsZW1lbnQu
dGV4dENvbnRlbnQpOworCisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVj
dGVkSW5kZXhdKQorICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGU/LmNvbXBsZXRpb25TdWdnZXN0
aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8uKHRoaXMsIHRoaXMuX2NvbXBsZXRpb25zW3RoaXMuc2Vs
ZWN0ZWRJbmRleF0pOwogICAgIH0KIAogICAgIHNlbGVjdFByZXZpb3VzKCkKQEAgLTEwMSw5ICsx
MDIsOCBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAtLXRoaXMuc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtRWxlbWVu
dCA9IHRoaXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1F
bGVtZW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0
aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCi0gICAgICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRp
b24odGhpcywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAgIGlmICh0
aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKQorICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGU/LmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8uKHRoaXMs
IHRoaXMuX2NvbXBsZXRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pOwogICAgIH0KIAogICAgIGlz
SGFuZGxpbmdDbGlja0V2ZW50KCkKQEAgLTE3NSwxOSArMTc1LDI4IEBAIFdJLkNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgdXBkYXRlKGNvbXBsZXRpb25zLCBzZWxlY3RlZEluZGV4KQogICAgIHsK
ICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOworICAgICAg
ICB0aGlzLl9jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOwogCiAgICAgICAgIGlmICh0eXBlb2Yg
c2VsZWN0ZWRJbmRleCA9PT0gIm51bWJlciIpCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZElu
ZGV4ID0gc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbXBs
ZXRpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IFtpbmRleCwgY29tcGxldGlv
bl0gb2YgY29tcGxldGlvbnMuZW50cmllcygpKSB7CiAgICAgICAgICAgICB2YXIgaXRlbUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGl0ZW1FbGVt
ZW50LmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKLSAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNz
TGlzdC50b2dnbGUoInNlbGVjdGVkIiwgaSA9PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCk7Ci0gICAg
ICAgICAgICBpdGVtRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbXBsZXRpb25zW2ldOworICAgICAg
ICAgICAgaXRlbUVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBpbmRleCA9PT0g
dGhpcy5fc2VsZWN0ZWRJbmRleCk7CisKKyAgICAgICAgICAgIGlmICh0eXBlb2YgY29tcGxldGlv
biA9PT0gInN0cmluZyIpCisgICAgICAgICAgICAgICAgaXRlbUVsZW1lbnQudGV4dENvbnRlbnQg
PSBjb21wbGV0aW9uOworICAgICAgICAgICAgZWxzZSBpZiAoY29tcGxldGlvbiBpbnN0YW5jZW9m
IFdJLlJlc291cmNlUXVlcnlSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogbWFr
ZSBhYnN0cmFjdCBjb21wbGV0aW9uIHBheWxvYWQ7IG5vIG1vcmUgcmVzb3VyY2UuZGlzcGxheU5h
bWUKKyAgICAgICAgICAgICAgICBsZXQgaGlnaGxpZ2h0ZWRSZXN1bHRGcmFnbWVudCA9IHRoaXMu
X2NyZWF0ZUhpZ2hsaWdodGVkQ29tcGxldGlvbkZyYWdtZW50KGNvbXBsZXRpb24ucmVzb3VyY2Uu
ZGlzcGxheU5hbWUsIGNvbXBsZXRpb24ubWF0Y2hpbmdUZXh0UmFuZ2VzKTsKKyAgICAgICAgICAg
ICAgICBpdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoaWdobGlnaHRlZFJlc3VsdEZyYWdtZW50KTsK
KyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBl
bmRDaGlsZChpdGVtRWxlbWVudCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3RvbWl6
ZUNvbXBsZXRpb25FbGVtZW50ID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgIHRoaXMu
X2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21wbGV0aW9uRWxl
bWVudCh0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbnNbaV0pOworICAgICAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21wbGV0
aW9uRWxlbWVudCh0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTIwMyw2ICsyMTIsMjcgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9
IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgfQogCisgICAgX2NyZWF0ZUhpZ2hsaWdodGVkQ29tcGxl
dGlvbkZyYWdtZW50KGNvbXBsZXRpb25UZXh0LCBoaWdobGlnaHRUZXh0UmFuZ2VzKQorICAgIHsK
KyAgICAgICAgbGV0IGNvbXBsZXRpb25GcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50
RnJhZ21lbnQoKTsKKyAgICAgICAgbGV0IGxhc3RJbmRleCA9IDA7CisgICAgICAgIGZvciAobGV0
IHRleHRSYW5nZSBvZiBoaWdobGlnaHRUZXh0UmFuZ2VzKSB7CisgICAgICAgICAgICBpZiAodGV4
dFJhbmdlLnN0YXJ0Q29sdW1uID4gbGFzdEluZGV4KQorICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25GcmFnbWVudC5hcHBlbmQoY29tcGxldGlvblRleHQuc3Vic3RyaW5nKGxhc3RJbmRleCwgdGV4
dFJhbmdlLnN0YXJ0Q29sdW1uKSk7CisKKyAgICAgICAgICAgIGxldCBoaWdobGlnaHRTcGFuID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgaGlnaGxpZ2h0U3Bh
bi5jbGFzc0xpc3QuYWRkKCJoaWdobGlnaHRlZCIpOworICAgICAgICAgICAgaGlnaGxpZ2h0U3Bh
bi5hcHBlbmQoY29tcGxldGlvblRleHQuc3Vic3RyaW5nKHRleHRSYW5nZS5zdGFydENvbHVtbiwg
dGV4dFJhbmdlLmVuZENvbHVtbikpOworICAgICAgICAgICAgY29tcGxldGlvbkZyYWdtZW50LmFw
cGVuZChoaWdobGlnaHRTcGFuKTsKKyAgICAgICAgICAgIGxhc3RJbmRleCA9IHRleHRSYW5nZS5l
bmRDb2x1bW47CisgICAgICAgIH0KKworICAgICAgICBpZiAobGFzdEluZGV4IDwgY29tcGxldGlv
blRleHQubGVuZ3RoKQorICAgICAgICAgICAgY29tcGxldGlvbkZyYWdtZW50LmFwcGVuZChjb21w
bGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4LCBjb21wbGV0aW9uVGV4dC5sZW5ndGgpKTsK
KworICAgICAgICByZXR1cm4gY29tcGxldGlvbkZyYWdtZW50OworICAgIH0KKwogICAgIF9tb3Vz
ZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFk
c2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4IDA3OThiNDBhZTU1MDU5
MmY0N2Q4NmZiMGFkNTk4ZWQ0NmY1NmUzOWYuLjNjNWEyZDkxNDlmNGFkMGY1MWZlMTEzZGJjZDE0
YWJkNThlN2VlZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMK
QEAgLTk2Myw5ICs5NjMsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBT
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogICAg
IH0KIAotICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7YWxsb3dFbXB0eVBy
ZWZpeH0gPSB7fSkKKyAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2FsbG93
RW1wdHlQcmVmaXgsIGZ1enp5TWF0Y2hpbmd9ID0ge30pCiAgICAgewotICAgICAgICByZXR1cm4g
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwge2Fs
bG93RW1wdHlQcmVmaXh9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHthbGxvd0VtcHR5UHJlZml4LCBmdXp6eU1h
dGNoaW5nfSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3JlSW5wdXQoZXZlbnQpCkBA
IC05ODcsMTAgKzk4NywxMCBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBT
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENvbW1pdCh0aGlzLl92YWx1ZVRleHRGaWVsZCwge2RpcmVj
dGlvbjogImZvcndhcmQifSk7CiAgICAgfQogCi0gICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92
aWRlcih0ZXh0LCB7YWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9u
RGF0YVByb3ZpZGVyKHRleHQsIHthbGxvd0VtcHR5UHJlZml4LCBmdXp6eU1hdGNoaW5nfSA9IHt9
KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjI3NDExPiBTdHlsZXMg
c2lkZWJhciBwYW5lbCBzaG91bGQgc3VwcG9ydCBtaWRsaW5lIGFuZCBtdWx0aWxpbmUgY29tcGxl
dGlvbnMuCi0gICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlh
bFByb3BlcnR5VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgp
LCB7YWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0
aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CisgICAg
ICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFs
dWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7YWRkaXRpb25h
bEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlv
blZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpLCBmdXp6eU1hdGNoaW5nfSk7CiAg
ICAgfQogCiAgICAgX3NldHVwSnVtcFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVs
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0VGV4dEZpZWxkLmpzCmluZGV4IDEzNGQ2NGU5ZmE3N2Y5OTE5YTFmNTUzYTIwOWYwYzVjOTAy
MTg3ODUuLmY5YTUzMDYzYWFkZmMyNDE4MTMyZjg0MjE1ZTA1ZGE0ZDI4NzkzYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
VGV4dEZpZWxkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCkBAIC0yOSw2ICsyOSw3IEBAIFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICB7CiAgICAgICAg
IHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50OworICAgICAgICB0aGlzLl92YWx1ZSA9IGVsZW1lbnQudGV4dENvbnRlbnQ7CiAKICAgICAg
ICAgdGhpcy5fY29tcGxldGlvblByb3ZpZGVyID0gY29tcGxldGlvblByb3ZpZGVyIHx8IG51bGw7
CiAgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIpIHsKQEAgLTU4LDEzICs1OSwx
NCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxk
CiAKICAgICBnZXQgZWRpdGluZygpIHsgcmV0dXJuIHRoaXMuX2VkaXRpbmc7IH0KIAotICAgIGdl
dCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7IH0KLSAgICBzZXQg
dmFsdWUodmFsdWUpIHsgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOyB9CisgICAg
Z2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICBzZXQgdmFsdWUodmFsdWUp
IHsgdGhpcy5fdmFsdWUgPSB2YWx1ZTsgfQogCiAgICAgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbigp
CiAgICAgewotICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50Owot
ICAgICAgICByZXR1cm4gdmFsdWUuc2xpY2UoMCwgdmFsdWUubGVuZ3RoIC0gdGhpcy5zdWdnZXN0
aW9uSGludC5sZW5ndGgpOworICAgICAgICAvLyBUaGUgZmlyc3QgY2hpbGQgaXMgYSBUZXh0IG5v
ZGUgd2l0aCB0aGUgaW5pdGlhbCB2YWx1ZSBpbmxjdWRpbmcgYW55IHByZXZpb3VzbHkgYXBwbGll
ZCBzdWdnZXN0aW9ucyBhbmQgdXNlciBpbnB1dC4KKyAgICAgICAgLy8gVGhlIHNlY29uZCBpcyBh
IFNwYW4gZWxlbWVudCB3aXRoIHRoZSBsYXRlc3Qgc3VnZ2VzdGlvbiBoaW50LgorICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudC5maXJzdENoaWxkPy50ZXh0Q29udGVudCB8fCAiIgogICAgIH0K
IAogICAgIGdldCBzdWdnZXN0aW9uSGludCgpCkBAIC0xMzgsMTYgKzE0MCwyMyBAQCBXSS5TcHJl
YWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAvLyBD
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGRlbGVnYXRlCiAKLSAgICBjb21wbGV0aW9uU3VnZ2Vz
dGlvbnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQgPSAi
IikKKyAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2VzdGlv
bnNWaWV3LCBzZWxlY3RlZENvbXBsZXRpb24pCiAgICAgewotICAgICAgICB0aGlzLnN1Z2dlc3Rp
b25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3Ro
KTsKKyAgICAgICAgbGV0IHNlbGVjdGVkQ29tcGxldGlvblRleHQgPSBzZWxlY3RlZENvbXBsZXRp
b24udG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkQ29tcGxldGlvblRl
eHQ7CiAKLSAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBp
ZiAoc2VsZWN0ZWRDb21wbGV0aW9uVGV4dC5zdGFydHNXaXRoKHRoaXMuX2NvbXBsZXRpb25QcmVm
aXgpKSB7CisgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRDb21wbGV0
aW9uVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gIiI7Cisg
ICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2Rl
bGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhp
cyk7CiAgICAgfQogCisgICAgLy8gVE9ETzogdXBkYXRlIHRvIHdvcmsgd2l0aCB0aGlzLnZhbHVl
IG5vdCBlbGVtZW50LnRleHRDb250ZW50CiAgICAgY29tcGxldGlvblN1Z2dlc3Rpb25zQ2xpY2tl
ZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQpCiAgICAgewogICAgICAg
ICAvLyBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6CkBAIC0xODcsNiArMTk2LDcgQEAg
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyAhPT0gdGhpcy52YWx1ZSkg
ewogICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZzsKKyAg
ICAgICAgICAgIHRoaXMuX2NvbW1pdFZhbHVlKCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9k
ZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3By
ZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CkBAIC0yMTMsNyArMjIzLDcgQEAgV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAg
ICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7CisgICAg
ICAgIHRoaXMuX2NvbW1pdFZhbHVlKCk7CiAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24o
KTsKIAogICAgICAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyAhPT0g
dGhpcy52YWx1ZTsKQEAgLTI0Miw3ICsyNTIsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9
IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGxldCBpc1RhYktleSA9IGV2ZW50
LmtleSA9PT0gIlRhYiI7CiAgICAgICAgIGlmIChpc0VudGVyS2V5IHx8IGlzVGFiS2V5KSB7CiAg
ICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRp
b25IaW50KCk7CisgICAgICAgICAgICB0aGlzLl9jb21taXRWYWx1ZSgpOwogCiAgICAgICAgICAg
ICBsZXQgZGlyZWN0aW9uID0gKGlzVGFiS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSA/ICJiYWNrd2Fy
ZCIgOiAiZm9yd2FyZCI7CiAKQEAgLTM4NCw3ICszOTQsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgbGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZhbHVlV2l0aG91dFN1
Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRoaXMuX2Nv
bXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0eVByZWZp
eDogZm9yY2VDb21wbGV0aW9uc30pOworICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBwcmVmaXh9
ID0gdGhpcy5fY29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24sIHthbGxv
d0VtcHR5UHJlZml4OiBmb3JjZUNvbXBsZXRpb25zLCBmdXp6eU1hdGNoaW5nOiB0cnVlfSk7CiAg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSBwcmVmaXg7CiAKICAgICAgICAgaWYgKCFj
b21wbGV0aW9ucy5sZW5ndGgpIHsKQEAgLTM5Myw3ICs0MDMsNyBAQCBXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBObyBuZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9wb3ZlciB3aXRoIG9ubHkgb25l
IGl0ZW0gdGhhdCBtYXRjaGVzIHRoZSBlbnRlcmVkIHZhbHVlLgotICAgICAgICBpZiAoY29tcGxl
dGlvbnMubGVuZ3RoID09PSAxICYmIGNvbXBsZXRpb25zWzBdID09PSB2YWx1ZVdpdGhvdXRTdWdn
ZXN0aW9uKSB7CisgICAgICAgIGlmIChjb21wbGV0aW9ucy5sZW5ndGggPT09IDEgJiYgY29tcGxl
dGlvbnNbMF0udG9TdHJpbmcoKSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgewogICAgICAg
ICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC00NjMsMTIgKzQ3Myw5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgcmV0dXJuIG5ldyBXSS5SZWN0KGNsaWVu
dFJlY3QubGVmdCArIGxlZnRQYWRkaW5nLCBjbGllbnRSZWN0LnRvcCwgY2xpZW50UmVjdC53aWR0
aCwgY2xpZW50UmVjdC5oZWlnaHQpOwogICAgIH0KIAotICAgIF9hcHBseUNvbXBsZXRpb25IaW50
KCkKKyAgICBfY29tbWl0VmFsdWUoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0
aW9uUHJvdmlkZXIgfHwgIXRoaXMuc3VnZ2VzdGlvbkhpbnQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2VsZW1lbnQudGV4
dENvbnRlbnQ7CisgICAgICAgIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnZhbHVl
OwogICAgIH0KIAogICAgIF9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440968</attachid>
            <date>2021-10-12 12:16:07 -0700</date>
            <delta_ts>2021-11-15 10:14:19 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-230351-20211012211606.patch</filename>
            <type>text/plain</type>
            <size>16295</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM3OTZlY2FjZjI0ZGQ2YzgxZmNkODc5NGFhYTAz
MjQwZGJlZDAwNjIuLmI3N2UzYTM2YzVjZmJjODZkZmQ1YWM3MDkzMTUxNWNhNGM5Njg4MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTEwLTEyICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0IGZ1enp5IG1hdGNoaW5nIGluIENTUyBjb21wbGV0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzUxCisgICAgICAgIDxyZGFy
Oi8vODI5NzYyOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKFdJUCkgRnV6enkgbWF0Y2hpbmcgaW4gQ1NTQ29tcGxldGlvbnMgYW5kIENvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0Nv
bXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgorICAgICAgICAoV0ku
Q1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmFkZFZhbHVlcyk6CisgICAgICAgIChXSS5DU1NDb21w
bGV0aW9ucy5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanM6CisgICAgICAgIChXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzczoKKyAgICAgICAgKC5jb21w
bGV0aW9uLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdodGVkKToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanM6
CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZS5zZWxlY3RO
ZXh0KToKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLnNl
bGVjdFByZXZpb3VzKToKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJv
dG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnBy
b3RvdHlwZS5fY3JlYXRlSGlnaGxpZ2h0ZWRDb21wbGV0aW9uRnJhZ21lbnQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgorICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5faGFuZGxlTmFtZUNoYW5n
ZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9uYW1l
Q29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanM6CisgICAgICAgIChX
SS5TcHJlYWRzaGVldFRleHRGaWVsZCk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5zZXQgdmFsdWUpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
cHJvdG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbik6CisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3VwZGF0ZUNvbXBsZXRpb25z
KToKKwogMjAyMS0xMC0xMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogU3R5bGVzOiBBdXRvY29tcGxldGUgc2hvdWxkIHN1cHBvcnQg
bWlkLWxpbmUgY29tcGxldGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwppbmRleCAyM2NlODU1
MDRiMmQwNmIwNmI2MGRhNWZjNGMzYjMyYWY0MTk5ODIzLi4wZDIzMTJhMTM5ZDU2MmQ3NmU4OGEx
ZjZiZjk1ZDUxOTc1Yzk4NmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCkBAIC01OCw2ICs1
OCw3IEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKICAgICAgICAg
dGhpcy5fdmFsdWVzLnNvcnQoKTsKIAogICAgICAgICB0aGlzLl9hY2NlcHRFbXB0eVByZWZpeCA9
IGFjY2VwdEVtcHR5UHJlZml4OworICAgICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIgPSBudWxs
OwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMjUzLDYgKzI1NCwxNyBAQCBXSS5DU1NDb21w
bGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAKICAgICAgICAgdGhpcy5fdmFsdWVzLnB1
c2hBbGwodmFsdWVzKTsKICAgICAgICAgdGhpcy5fdmFsdWVzLnNvcnQoKTsKKworICAgICAgICBp
ZiAodGhpcy5fcXVlcnlDb250cm9sbGVyKQorICAgICAgICAgICAgdGhpcy5fcXVlcnlDb250cm9s
bGVyLmFkZFZhbHVlcyh2YWx1ZXMpOworICAgIH0KKworICAgIGV4ZWN1dGVRdWVyeShxdWVyeSkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5fcXVlcnlDb250cm9sbGVyKQorICAgICAgICAgICAg
dGhpcy5fcXVlcnlDb250cm9sbGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcih0aGlzLl92
YWx1ZXMpOworCisgICAgICAgIHJldHVybiB0aGlzLl9xdWVyeUNvbnRyb2xsZXIuZXhlY3V0ZVF1
ZXJ5KHF1ZXJ5KTsKICAgICB9CiAKICAgICBzdGFydHNXaXRoKHByZWZpeCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29t
cGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTS2V5d29yZENvbXBsZXRpb25zLmpzCmluZGV4IGEzNjY5ZWM0M2ZhMGEwNWJmOWI0MThkZWQy
Njk4NTA5MThkMzcwNjUuLmQzNjk2MmFiNDA2ZDY4YzdiN2UwZjM3OGVmYzVlNGFiNzY3ZDU5NWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NLZXl3b3JkQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcwpAQCAtMzEsNyArMzEsNyBA
QAogCiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMgPSB7fTsKIAotV0kuQ1NTS2V5d29yZENvbXBs
ZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUgPSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3Np
dGlvbiwgYWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKK1dJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQYXJ0aWFsUHJvcGVydHlOYW1lID0gZnVuY3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sIGFs
bG93RW1wdHlQcmVmaXgsIGZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlv
biA/Pz0gdGV4dC5sZW5ndGg7CiAgICAgYWxsb3dFbXB0eVByZWZpeCA/Pz0gZmFsc2U7CkBAIC00
MiwxMCArNDIsMTMgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0
eU5hbWUgPSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwKIAogICAgIGlmICghdGV4dC5s
ZW5ndGggJiYgYWxsb3dFbXB0eVByZWZpeCkKICAgICAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQs
IGNvbXBsZXRpb25zOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMudmFsdWVz
fTsKLSAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6V0kuQ1NTQ29tcGxldGlv
bnMuY3NzTmFtZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgodGV4dCl9OworCisgICAgbGV0IGNvbXBs
ZXRpb25zID0gZnV6enlNYXRjaGluZyA/IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucy5leGVjdXRlUXVlcnkodGV4dCkgOiBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxl
dGlvbnMuc3RhcnRzV2l0aCh0ZXh0KTsKKworICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21w
bGV0aW9uc307CiB9OwogCi1XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3Bl
cnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBh
ZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXJ9ID0ge30pCitXSS5DU1NL
ZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0
LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNv
bXBsZXRpb25zUHJvdmlkZXIsIGZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3Np
dGlvbiA/Pz0gdGV4dC5sZW5ndGg7CiAKQEAgLTExNSw3ICsxMTgsOCBAQCBXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9w
ZXJ0eU5hbWUsCiAgICAgICAgIHJldHVybiB7cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29t
cGxldGlvbnM6IGNvbXBsZXRpb25zLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpfTsKICAg
ICB9CiAKLSAgICByZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25z
OiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUHJvcGVydHkocHJvcGVydHlOYW1lKS5zdGFy
dHNXaXRoKGN1cnJlbnRUb2tlblZhbHVlKX07CisgICAgbGV0IGNvbXBsZXRpb25zID0gZnV6enlN
YXRjaGluZyA/IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5h
bWUpLmV4ZWN1dGVRdWVyeSh0ZXh0KSA6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpOworICAgIHJl
dHVybiB7cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnN9OwogfTsKIAogV0ku
Q1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcwppbmRleCA2Njdh
MDIzZTc5YTNhZWU3MTk4MjY1NmUxYzM2YTA1NDAyMzM3MjUzLi5mMmE4NWViMWZjZTRiY2Q1YTNl
OWIyYzVkNzQxNTI3MmE0NmNhNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LmNzcwpAQCAtNzAsNiArNzAsMTAgQEAKICAgICBjb2xvcjogdmFyKC0tdGV4dC1j
b2xvcik7CiB9CiAKKy5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciA+IC5pdGVtID4g
LmhpZ2hsaWdodGVkIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsKK30KKwogLmNvbXBsZXRpb24t
c3VnZ2VzdGlvbnMtY29udGFpbmVyOm5vdCg6YWN0aXZlKSA+IC5pdGVtLnNlbGVjdGVkLAogLmNv
bXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyID4gLml0ZW06YWN0aXZlIHsKICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IDgzNjgzMjlkMzBmN2JlYzBj
MTRlNDNlZjM3ZTY5YTIyMGY0ZTIzZjIuLjYyZGY4Njg4OGU2ZWQxOWViZWM0MDMwNTgxMTFlMzVh
MjlmNjk2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpA
QCAtMzIsNiArMzIsNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3ByZXZlbnRCbHVyID0g
cHJldmVudEJsdXIgfHwgZmFsc2U7CiAKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBbXTsK
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IE5hTjsKICAgICAgICAgdGhpcy5fbW92ZUlu
dGVydmFsSWRlbnRpZmllciA9IG51bGw7CiAKQEAgLTg5LDkgKzkwLDEwIEBAIFdJLkNvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsrdGhpcy5zZWxlY3RlZElu
ZGV4OwogCi0gICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRJ
dGVtRWxlbWVudDsKLSAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYgdGhpcy5fZGVs
ZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVj
dGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRl
LmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBzZWxlY3RlZEl0
ZW1FbGVtZW50LnRleHRDb250ZW50KTsKKworICAgICAgICAvLyBGSVhNRTogY29tcGxldGlvbiBt
YXkgYmUgYSBqdXN0IHN0cmluZywgbm90IGEgUXVlcnlSZXN1bHQsIHdoZW4gZnV6enlNYXRjaGlu
ZyBpcyBmYWxzZQorICAgICAgICBpZiAodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZElu
ZGV4XSkKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlPy5jb21wbGV0aW9uU3VnZ2VzdGlvbnNT
ZWxlY3RlZENvbXBsZXRpb24/Lih0aGlzLCB0aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVk
SW5kZXhdLnZhbHVlKTsKICAgICB9CiAKICAgICBzZWxlY3RQcmV2aW91cygpCkBAIC0xMDEsOSAr
MTAzLDkgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgLS10aGlzLnNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkSXRlbUVsZW1l
bnQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1FbGVtZW50OwotICAgICAgICBpZiAoc2VsZWN0ZWRJdGVt
RWxlbWVudCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxl
dGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uID09PSAiZnVuY3Rpb24iKQotICAgICAg
ICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0
aW9uKHRoaXMsIHNlbGVjdGVkSXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOworICAgICAgICAvLyBG
SVhNRTogY29tcGxldGlvbiBtYXkgYmUgYSBqdXN0IHN0cmluZywgbm90IGEgUXVlcnlSZXN1bHQs
IHdoZW4gZnV6enlNYXRjaGluZyBpcyBmYWxzZQorICAgICAgICBpZiAodGhpcy5fY29tcGxldGlv
bnNbdGhpcy5zZWxlY3RlZEluZGV4XSkKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlPy5jb21w
bGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24/Lih0aGlzLCB0aGlzLl9jb21wbGV0
aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdLnZhbHVlKTsKICAgICB9CiAKICAgICBpc0hhbmRsaW5n
Q2xpY2tFdmVudCgpCkBAIC0xNzUsMTkgKzE3NywyNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVj
dAogICAgIHVwZGF0ZShjb21wbGV0aW9ucywgc2VsZWN0ZWRJbmRleCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5f
Y29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKIAogICAgICAgICBpZiAodHlwZW9mIHNlbGVjdGVk
SW5kZXggPT09ICJudW1iZXIiKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHNl
bGVjdGVkSW5kZXg7CiAKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wbGV0aW9ucy5s
ZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKGxldCBbaW5kZXgsIGNvbXBsZXRpb25dIG9mIGNv
bXBsZXRpb25zLmVudHJpZXMoKSkgewogICAgICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJpdGVtIik7Ci0gICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QudG9n
Z2xlKCJzZWxlY3RlZCIsIGkgPT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpOwotICAgICAgICAgICAg
aXRlbUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb21wbGV0aW9uc1tpXTsKKyAgICAgICAgICAgIGl0
ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdGVkIiwgaW5kZXggPT09IHRoaXMuX3Nl
bGVjdGVkSW5kZXgpOworCisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBsZXRpb24gPT09ICJz
dHJpbmciKQorICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gY29tcGxl
dGlvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBsZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVy
eVJlc3VsdCkgeworICAgICAgICAgICAgICAgIGxldCBoaWdobGlnaHRlZFJlc3VsdEZyYWdtZW50
ID0gdGhpcy5fY3JlYXRlSGlnaGxpZ2h0ZWRDb21wbGV0aW9uRnJhZ21lbnQoY29tcGxldGlvbi52
YWx1ZSwgY29tcGxldGlvbi5tYXRjaGluZ1RleHRSYW5nZXMpOworICAgICAgICAgICAgICAgIGl0
ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhpZ2hsaWdodGVkUmVzdWx0RnJhZ21lbnQpOworICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxk
KGl0ZW1FbGVtZW50KTsKIAogICAgICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVv
ZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3Q3VzdG9taXplQ29tcGxl
dGlvbkVsZW1lbnQgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdh
dGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KHRo
aXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uc1tpXSk7CisgICAgICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVt
ZW50KHRoaXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMjAzLDYgKzIxMywyNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3Mg
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICB9CiAKKyAgICBfY3JlYXRlSGlnaGxpZ2h0ZWRDb21wbGV0aW9uRnJh
Z21lbnQoY29tcGxldGlvblRleHQsIGhpZ2hsaWdodFRleHRSYW5nZXMpCisgICAgeworICAgICAg
ICBsZXQgY29tcGxldGlvbkZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOworICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChsZXQgdGV4dFJh
bmdlIG9mIGhpZ2hsaWdodFRleHRSYW5nZXMpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4gPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkZyYWdt
ZW50LmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4LCB0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4pKTsKKworICAgICAgICAgICAgbGV0IGhpZ2hsaWdodFNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoaWdobGlnaHRTcGFuLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodGVkIik7CisgICAgICAgICAgICBoaWdobGlnaHRTcGFuLmFwcGVu
ZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcodGV4dFJhbmdlLnN0YXJ0Q29sdW1uLCB0ZXh0UmFu
Z2UuZW5kQ29sdW1uKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGhp
Z2hsaWdodFNwYW4pOworICAgICAgICAgICAgbGFzdEluZGV4ID0gdGV4dFJhbmdlLmVuZENvbHVt
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXN0SW5kZXggPCBjb21wbGV0aW9uVGV4dC5s
ZW5ndGgpCisgICAgICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGNvbXBsZXRpb25U
ZXh0LnN1YnN0cmluZyhsYXN0SW5kZXgsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCkpOworCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uRnJhZ21lbnQ7CisgICAgfQorCiAgICAgX21vdXNlRG93bihl
dmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKaW5kZXggMWNmMjdlOWE1MDAyNmVmYTVjYjQz
ZjM3ZWM1NjZiOTE2MDk5NWY3ZS4uZTQxZDg5MTJjZTNmYjJmYTVhMDM2ZThkZmQxM2ViNGFmNmNi
OTdlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtOTI0
LDcgKzkyNCw3IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2hhbmRsZU5hbWVDaGFu
Z2UoKQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvcGVydHkubmFtZSA9IHRoaXMuX25hbWVFbGVt
ZW50LnRleHRDb250ZW50LnRyaW0oKTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHkubmFtZSA9IHRo
aXMuX25hbWVUZXh0RmllbGQudmFsdWU7IC8vdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQu
dHJpbSgpOwogICAgIH0KIAogICAgIF9oYW5kbGVWYWx1ZUNoYW5nZSgpCkBAIC05NjMsOSArOTYz
LDkgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfbmFt
ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQ
cmVmaXh9ID0ge30pCisgICAgX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJl
dFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4LCBmdXp6eU1hdGNoaW5nfSA9IHt9KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVy
dHlOYW1lKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSk7CisgICAgICAg
IHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSh0
ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeCwgZnV6enlNYXRjaGluZ30pOwog
ICAgIH0KIAogICAgIF9oYW5kbGVWYWx1ZUJlZm9yZUlucHV0KGV2ZW50KQpAQCAtOTg3LDkgKzk4
Nyw5IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5
bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLnNwcmVhZHNoZWV0VGV4
dEZpZWxkRGlkQ29tbWl0KHRoaXMuX3ZhbHVlVGV4dEZpZWxkLCB7ZGlyZWN0aW9uOiAiZm9yd2Fy
ZCJ9KTsKICAgICB9CiAKLSAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtj
YXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF92YWx1ZUNvbXBsZXRp
b25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXgsIGZ1
enp5TWF0Y2hpbmd9ID0ge30pCiAgICAgewotICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENv
bXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHRleHQsIHRoaXMuX25hbWVFbGVtZW50
LnRleHRDb250ZW50LnRyaW0oKSwge2NhcmV0UG9zaXRpb24sIGFkZGl0aW9uYWxGdW5jdGlvblZh
bHVlQ29tcGxldGlvbnNQcm92aWRlcjogdGhpcy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBs
ZXRpb25zUHJvdmlkZXIuYmluZCh0aGlzKX0pOworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHRleHQsIHRoaXMuX25hbWVFbGVt
ZW50LnRleHRDb250ZW50LnRyaW0oKSwge2NhcmV0UG9zaXRpb24sIGFkZGl0aW9uYWxGdW5jdGlv
blZhbHVlQ29tcGxldGlvbnNQcm92aWRlcjogdGhpcy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNv
bXBsZXRpb25zUHJvdmlkZXIuYmluZCh0aGlzKSwgZnV6enlNYXRjaGluZ30pOwogICAgIH0KIAog
ICAgIF9zZXR1cEp1bXBUb1N5bWJvbChlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRG
aWVsZC5qcwppbmRleCAzMDllMDU3YTc3YTJhNmIwOWQxNTEwYjU0NjIzNDUyYzY5ZDQ1ZjJmLi4x
Nzg0N2Q4MjBmNWMzMzIzMWJmZjI1YzEzN2UwOWQzY2FiZWViYmExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVs
ZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJl
YWRzaGVldFRleHRGaWVsZC5qcwpAQCAtMjksNiArMjksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgewogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKKyAg
ICAgICAgdGhpcy5fdmFsdWUgPSBlbGVtZW50LnRleHRDb250ZW50OwogCiAgICAgICAgIHRoaXMu
X2NvbXBsZXRpb25Qcm92aWRlciA9IGNvbXBsZXRpb25Qcm92aWRlciB8fCBudWxsOwogICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGlvblByb3ZpZGVyKSB7CkBAIC02MSw4ICs2MiwxMCBAQCBXSS5T
cHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBn
ZXQgZWRpdGluZygpIHsgcmV0dXJuIHRoaXMuX2VkaXRpbmc7IH0KIAotICAgIGdldCB2YWx1ZSgp
IHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7IH0KLSAgICBzZXQgdmFsdWUodmFs
dWUpIHsgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHZhbHVlOyB9CisgICAgLy8gZ2V0IHZh
bHVlKCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsgfQorICAgIC8vIHNldCB2
YWx1ZSh2YWx1ZSkgeyB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWU7IH0KKyAgICBn
ZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorICAgIHNldCB2YWx1ZSh2YWx1ZSkg
eyB0aGlzLl92YWx1ZSA9IHZhbHVlOyB9CiAKICAgICB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCkK
ICAgICB7CkBAIC0xNTksMTEgKzE2MiwyMCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNs
YXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxl
Y3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQgPSAiIikKICAgICB7
Ci0gICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5f
Y29tcGxldGlvblByZWZpeC5sZW5ndGgpOworICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0LnN0YXJ0
c1dpdGgodGhpcy5fY29tcGxldGlvblByZWZpeCkpCisgICAgICAgICAgICB0aGlzLnN1Z2dlc3Rp
b25IaW50ID0gc2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3Ro
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9ICIiOwog
CiAgICAgICAgIGlmICh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCkKICAgICAgICAgICAgIHRo
aXMuX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKTsKIAorICAgICAgICBsZXQgY2FyZXRQb3NpdGlv
biA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKKyAgICAgICAgbGV0IHN0YXJ0UG9zaXRpb24g
PSBjYXJldFBvc2l0aW9uIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGg7CisgICAgICAg
IGxldCBwcmV2VmFsdWUgPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKKworICAgICAg
ICB0aGlzLnZhbHVlID0gcHJldlZhbHVlLnNsaWNlKDAsIHN0YXJ0UG9zaXRpb24pICsgc2VsZWN0
ZWRUZXh0ICsgcHJldlZhbHVlLnNsaWNlKGNhcmV0UG9zaXRpb24gKyAxLCBwcmV2VmFsdWUubGVu
Z3RoKTsKKwogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVn
YXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQogICAgICAg
ICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7
CiAgICAgfQpAQCAtNDEzLDggKzQyNSw5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJv
dmlkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgY29uc3QgZnV6enlNYXRjaGlu
ZyA9IHRydWU7CiAgICAgICAgIGxldCB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0g
PSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93
RW1wdHlQcmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMuX2dldENh
cmV0UG9zaXRpb24oKX0pOworICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBwcmVmaXh9ID0gdGhp
cy5fY29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24sIHthbGxvd0VtcHR5
UHJlZml4OiBmb3JjZUNvbXBsZXRpb25zLCBjYXJldFBvc2l0aW9uOiB0aGlzLl9nZXRDYXJldFBv
c2l0aW9uKCksIGZ1enp5TWF0Y2hpbmd9KTsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblByZWZp
eCA9IHByZWZpeDsKIAogICAgICAgICBpZiAoIWNvbXBsZXRpb25zLmxlbmd0aCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444271</attachid>
            <date>2021-11-15 10:14:23 -0800</date>
            <delta_ts>2021-11-17 14:46:49 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-230351-20211115191422.patch</filename>
            <type>text/plain</type>
            <size>30861</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDhiYmM1MDAzNjZhMjE2Y2M0OWZmN2NiMzFhODE1
NWY3NTBjZTg4Y2UuLjdjZjc4NWIzYWE5NTJlMjEzNDU3M2ZmNGU2OTQ0NTllMDdmZDY0OTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSw0ICsxLDM4IEBACi0yMDIxLTExLTEyICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKzIwMjEtMTAtMTIgIFJhenZhbiBDYWxpbWFu
ICA8cmNhbGltYW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFN1cHBvcnQg
ZnV6enkgbWF0Y2hpbmcgaW4gQ1NTIGNvbXBsZXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAzNTEKKyAgICAgICAgPHJkYXI6Ly84Mjk3NjI5
Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAoV0lQ
KSBGdXp6eSBtYXRjaGluZyBpbiBDU1NDb21wbGV0aW9ucyBhbmQgQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldworCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMu
anM6CisgICAgICAgIChXSS5DU1NDb21wbGV0aW9ucyk6CisgICAgICAgIChXSS5DU1NDb21wbGV0
aW9ucy5wcm90b3R5cGUuYWRkVmFsdWVzKToKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zLnBy
b3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U0tleXdvcmRDb21wbGV0aW9ucy5qczoKKyAgICAgICAgKFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuY3NzOgorICAgICAgICAoLmNvbXBsZXRpb24tc3Vn
Z2VzdGlvbnMtY29udGFpbmVyID4gLml0ZW0gPiAuaGlnaGxpZ2h0ZWQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qczoKKyAgICAgICAg
KFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLnNlbGVjdE5leHQpOgorICAg
ICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuc2VsZWN0UHJldmlv
dXMpOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUudXBk
YXRlKToKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLl9j
cmVhdGVIaWdobGlnaHRlZENvbXBsZXRpb25GcmFnbWVudCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6CisgICAgICAgIChXSS5TcHJl
YWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9oYW5kbGVOYW1lQ2hhbmdlKToKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX25hbWVDb21wbGV0aW9u
RGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90
b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qczoKKyAgICAgICAgKFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlw
ZS5nZXQgdmFsdWUpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBl
LnNldCB2YWx1ZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUu
Y29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29tcGxldGlvbnMpOgorCisyMDIx
LTEwLTEyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTdHlsZXM6IEF1dG9jb21wbGV0ZSBzaG91bGQgc3VwcG9ydCBtaWQtbGluZSBj
b21wbGV0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3NDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBlYWM2MWRmMmE5
NGYzMDZkZTAxNGEyMWNjYjQ3Y2UzYmZjMWNmOThjLi4wZDBjMjEyMDY0NjNiNGM1NjYyM2JjZDJl
N2I0MTUyMzU1Yjc5YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxp
emF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTE2
MDYsNiArMTYwNiw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlVzYWdlOiAlcyJdID0gIlVzYWdlOiAl
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIl0gPSAiVXNlIERl
ZmF1bHQgQXBwZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgTW9jayBDYXB0dXJlIERl
dmljZXMiXSA9ICJVc2UgTW9jayBDYXB0dXJlIERldmljZXMiOwogbG9jYWxpemVkU3RyaW5nc1si
VXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIl0gPSAiVXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdn
ZXN0aW9ucyJdID0gIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9u
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGlu
ZyByZXNvdXJjZXMiXSA9ICJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNv
dXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQiOwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIgQWdlbnQg
U3R5bGUgU2hlZXQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGQyZWIyNWI3ZWNlMWE4NDE4MTkyZDE2YjJhMmJlNDZi
ZTJlNjNhMzMuLjJmOGU4ZGRhMzkyMjU3OGIxODBmMjk0MTllMDQ4MzE0YzRkZmExODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcu
anMKQEAgLTIzMSw2ICsyMzEsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBleHBlcmltZW50YWxF
bmFibGVTdHlsZXNKdW1wVG9WYXJpYWJsZURlY2xhcmF0aW9uOiBuZXcgV0kuU2V0dGluZygiZXhw
ZXJpbWVudGFsLXN0eWxlcy1qdW1wLXRvLXZhcmlhYmxlLWRlY2xhcmF0aW9uIiwgZmFsc2UpLAog
ICAgIGV4cGVyaW1lbnRhbENvbGxhcHNlQmxhY2tib3hlZENhbGxGcmFtZXM6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtY29sbGFwc2UtYmxhY2tib3hlZC1jYWxsLWZyYW1lcyIsIGZhbHNl
KSwKICAgICBleHBlcmltZW50YWxBbGxvd0luc3BlY3RpbmdJbnNwZWN0b3I6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtYWxsb3ctaW5zcGVjdGluZy1pbnNwZWN0b3IiLCBmYWxzZSksCisg
ICAgZXhwZXJpbWVudGFsRnV6enlNYXRjaGluZ1N0eWxlczogbmV3IFdJLlNldHRpbmcoImV4cGVy
aW1lbnRhbC1mdXp6eS1tYXRjaGluZy1zdHlsZXMiLCBmYWxzZSksCiAKICAgICAvLyBQcm90b2Nv
bAogICAgIHByb3RvY29sTG9nQXNUZXh0OiBuZXcgV0kuU2V0dGluZygicHJvdG9jb2wtbG9nLWFz
LXRleHQiLCBmYWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2RlOWQzOGExNWRiZTRmMmU3MTIwMDNmMWJhMDFhNmEzOGFiOGQzMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcwpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKK1dJLkNTU1F1ZXJ5Q29udHJvbGxlciA9IGNsYXNzIENTU1F1ZXJ5Q29udHJvbGxlciBleHRl
bmRzIFdJLlF1ZXJ5Q29udHJvbGxlcgoreworICAgIGNvbnN0cnVjdG9yKHZhbHVlcykKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkodmFsdWVzKSwgdmFsdWVzKTsK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXMgPz8gW107
CisgICAgICAgIHRoaXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAg
PSBuZXcgTWFwOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgYWRkVmFsdWVzKHZhbHVl
cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkodmFsdWVzKSwg
dmFsdWVzKTsKKyAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoQWxsKHZhbHVlcyk7CisgICAgfQorCisgICAg
ZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeSB8fCAhdGhpcy5f
dmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBxdWVyeSA9
IHF1ZXJ5LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKKworICAg
ICAgICBmb3IgKGxldCB2YWx1ZSBvZiB0aGlzLl92YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICgh
dGhpcy5fY2FjaGVkU3BlY2lhbENoYXJhY3RlckluZGljZXNGb3JWYWx1ZU1hcC5oYXModmFsdWUp
KQorICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9y
VmFsdWVNYXAuc2V0KHZhbHVlLCB0aGlzLl9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXModmFs
dWUpKTsKKworICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLmZpbmRRdWVyeU1hdGNoZXMo
cXVlcnksIHZhbHVlLCB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVl
TWFwLmdldCh2YWx1ZSkpOworICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKQorICAgICAg
ICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgV0kuUXVlcnlSZXN1bHQodmFsdWUsIG1hdGNoZXMp
KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlc3VsdHMgYXJlIHNvcnRlZCBpbiBkZXNjZW5k
aW5nIG9yZGVyIGJ5IHJhbmsuCisgICAgICAgIC8vIFJlc3VsdHMgb2YgZXF1YWwgcmFuayBhcmUg
c29ydGVkIGFscGhhYmV0aWNhbGx5IGJ5IHZhbHVlLgorICAgICAgICByZXR1cm4gcmVzdWx0cy5z
b3J0KChhLCBiKSA9PiB7CisgICAgICAgICAgICBpZiAoYS5yYW5rID09PSBiLnJhbmspCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGEudmFsdWUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGIudmFsdWUp
OworICAgICAgICAgICAgcmV0dXJuIGIucmFuayAtIGEucmFuazsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2ZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyhz
dHJpbmcpCisgICAgeworICAgICAgICBpZiAoIXN0cmluZy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gW107CisKKyAgICAgICAgY29uc3Qgc2VwYXJhdG9ycyA9ICItIjsKKworICAgICAgICAv
LyBTcGVjaWFsIGNoYXJhY3RlcnMgaW5jbHVkZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAvLyAx
LiBUaGUgZmlyc3QgY2hhcmFjdGVyLgorICAgICAgICAvLyAyLiBVcHBlcmNhc2UgY2hhcmFjdGVy
cyB0aGF0IGZvbGxvdyBhIGxvd2VyY2FzZSBsZXR0ZXIuCisgICAgICAgIC8vIDMuIFNlcGFyYXRv
cnMgYW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBzZXBhcmF0b3IuCisgICAg
ICAgIGxldCBpbmRpY2VzID0gWzBdOworCisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgc3Ry
aW5nLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQgY2hhcmFjdGVyID0gc3RyaW5nW2ld
OworICAgICAgICAgICAgbGV0IGlzU3BlY2lhbCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAo
c2VwYXJhdG9ycy5pbmNsdWRlcyhjaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgIGlzU3BlY2lh
bCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsZXQgcHJldmlv
dXNDaGFyYWN0ZXIgPSBzdHJpbmdbaSAtIDFdOworICAgICAgICAgICAgICAgIGlmIChzZXBhcmF0
b3JzLmluY2x1ZGVzKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICAgICAgaXNT
cGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXIuaXNVcHBl
ckNhc2UoKSAmJiBwcmV2aW91c0NoYXJhY3Rlci5pc0xvd2VyQ2FzZSgpKQorICAgICAgICAgICAg
ICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp
ZiAoaXNTcGVjaWFsKQorICAgICAgICAgICAgICAgIGluZGljZXMucHVzaChpKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBpbmRpY2VzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNjY0ZWE4MWE2ZDkyMzE0NTc1
NTQ3M2I2NmM4NGM0YzU1MmEzODFjZC4uNTkxOGI2NmVmYzU2MWUzZTg5MTRlMDc0NjhhOTFmYjgy
YjQ5OTgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbApAQCAtOTI1LDYgKzkyNSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL01l
bW9yeU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9O
ZXR3b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L092ZXJsYXlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29u
dHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBs
ZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NT
U0NvbXBsZXRpb25zLmpzCmluZGV4IGM0NjgxNTBmNzMxZGM5ZWEwOTFjYWMzOGIwMDVjNmVlMThm
NmYxM2UuLjI2MWEzNzFkM2JkY2NjYTc2YjVjOThkNTE5NTczYTQzZjFlMmY4M2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0
aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTQ29tcGxldGlvbnMuanMKQEAgLTU4LDYgKzU4LDcgQEAgV0kuQ1NTQ29tcGxldGlvbnMgPSBj
bGFzcyBDU1NDb21wbGV0aW9ucwogICAgICAgICB0aGlzLl92YWx1ZXMuc29ydCgpOwogCiAgICAg
ICAgIHRoaXMuX2FjY2VwdEVtcHR5UHJlZml4ID0gYWNjZXB0RW1wdHlQcmVmaXg7CisgICAgICAg
IHRoaXMuX3F1ZXJ5Q29udHJvbGxlciA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCkBA
IC0yNTMsNiArMjU0LDE3IEBAIFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlv
bnMKIAogICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbCh2YWx1ZXMpOwogICAgICAgICB0aGlz
Ll92YWx1ZXMuc29ydCgpOworCisgICAgICAgIGlmICh0aGlzLl9xdWVyeUNvbnRyb2xsZXIpCisg
ICAgICAgICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIuYWRkVmFsdWVzKHZhbHVlcyk7CisgICAg
fQorCisgICAgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9x
dWVyeUNvbnRyb2xsZXIpCisgICAgICAgICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIgPSBuZXcg
V0kuQ1NTUXVlcnlDb250cm9sbGVyKHRoaXMuX3ZhbHVlcyk7CisKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3F1ZXJ5Q29udHJvbGxlci5leGVjdXRlUXVlcnkocXVlcnkpOwogICAgIH0KIAogICAgIHN0
YXJ0c1dpdGgocHJlZml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKaW5k
ZXggMjE0OTU1MGY4MzZhNGNkMGRmZDUzYThiMGMyYjA2OGY4NmJiNzcwNC4uNWRkMjIxMWYwOWVk
MGVkZjEzYjk3ZDkxNGVlMGRlYTBhYWU1ZTUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENv
bXBsZXRpb25zLmpzCkBAIC0zMSw3ICszMSw3IEBACiAKIFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cyA9IHt9OwogCi1XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFt
ZSA9IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9
KQorV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUgPSBmdW5j
dGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeCwgZnV6enlNYXRjaGlu
Z30gPSB7fSkKIHsKICAgICBjYXJldFBvc2l0aW9uID8/PSB0ZXh0Lmxlbmd0aDsKICAgICBhbGxv
d0VtcHR5UHJlZml4ID8/PSBmYWxzZTsKQEAgLTQyLDEwICs0MiwxNyBAQCBXSS5DU1NLZXl3b3Jk
Q29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uKHRleHQsIHtjYXJl
dFBvc2l0aW9uLAogCiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCAmJiBhbGxvd0VtcHR5UHJlZml4KQog
ICAgICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6IFdJLkNTU0NvbXBsZXRp
b25zLmNzc05hbWVDb21wbGV0aW9ucy52YWx1ZXN9OwotICAgIHJldHVybiB7cHJlZml4OiB0ZXh0
LCBjb21wbGV0aW9uczpXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRz
V2l0aCh0ZXh0KX07CisKKyAgICBsZXQgY29tcGxldGlvbnM7CisgICAgaWYgKGZ1enp5TWF0Y2hp
bmcpCisgICAgICAgIGNvbXBsZXRpb25zID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBs
ZXRpb25zLmV4ZWN1dGVRdWVyeSh0ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25z
ID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgodGV4dCk7
CisKKyAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnN9OwogfTsKIAotV0kuQ1NT
S2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24odGV4
dCwgcHJvcGVydHlOYW1lLCB7Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVD
b21wbGV0aW9uc1Byb3ZpZGVyfSA9IHt9KQorV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBh
cnRpYWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24odGV4dCwgcHJvcGVydHlOYW1lLCB7Y2FyZXRQ
b3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLCBmdXp6
eU1hdGNoaW5nfSA9IHt9KQogewogICAgIGNhcmV0UG9zaXRpb24gPz89IHRleHQubGVuZ3RoOwog
CkBAIC0xMDgsMTQgKzExNSwyMSBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlh
bFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBsZXQgdmFsdWVDb21wbGV0aW9uczsKICAgICBpZiAoZnVuY3Rpb25OYW1l
KSB7Ci0gICAgICAgIGxldCBjb21wbGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JGdW5jdGlvbihmdW5jdGlvbk5hbWUpOwotICAgICAgICBsZXQgY29udGV4dHVhbFZhbHVlQ29t
cGxldGlvbnMgPSBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI/Lihm
dW5jdGlvbk5hbWUpIHx8IFtdOwotICAgICAgICBjb21wbGV0aW9ucy5hZGRWYWx1ZXMoY29udGV4
dHVhbFZhbHVlQ29tcGxldGlvbnMpOwotICAgICAgICByZXR1cm4ge3ByZWZpeDogY3VycmVudFRv
a2VuVmFsdWUsIGNvbXBsZXRpb25zOiBjb21wbGV0aW9ucy5zdGFydHNXaXRoKGN1cnJlbnRUb2tl
blZhbHVlKX07CisgICAgICAgIHZhbHVlQ29tcGxldGlvbnMgPSBXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuZm9yRnVuY3Rpb24oZnVuY3Rpb25OYW1lKTsKKyAgICAgICAgdmFsdWVDb21wbGV0aW9u
cy5hZGRWYWx1ZXMoYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyPy4o
ZnVuY3Rpb25OYW1lKSA/PyBbXSk7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgdmFsdWVDb21w
bGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5h
bWUpOworCisgICAgbGV0IGNvbXBsZXRpb25zOworICAgIGlmIChmdXp6eU1hdGNoaW5nKQorICAg
ICAgICBjb21wbGV0aW9ucyA9IHZhbHVlQ29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KGN1cnJlbnRU
b2tlblZhbHVlKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25zID0gdmFsdWVDb21wbGV0
aW9ucy5zdGFydHNXaXRoKGN1cnJlbnRUb2tlblZhbHVlKTsKIAotICAgIHJldHVybiB7cHJlZml4
OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnM6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUp
fTsKKyAgICByZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25zfTsK
IH07CiAKIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSA9IGZ1bmN0aW9uKHBy
b3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MK
aW5kZXggNjY3YTAyM2U3OWEzYWVlNzE5ODI2NTZlMWMzNmEwNTQwMjMzNzI1My4uZjJhODVlYjFm
Y2U0YmNkNWEzZTliMmM1ZDc0MTUyNzJhNDZjYTU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5j
c3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5jc3MKQEAgLTcwLDYgKzcwLDEwIEBACiAgICAgY29sb3I6IHZh
cigtLXRleHQtY29sb3IpOwogfQogCisuY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIg
PiAuaXRlbSA+IC5oaWdobGlnaHRlZCB7CisgICAgZm9udC13ZWlnaHQ6IGJvbGQ7Cit9CisKIC5j
b21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNvbnRhaW5lcjpub3QoOmFjdGl2ZSkgPiAuaXRlbS5zZWxl
Y3RlZCwKIC5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciA+IC5pdGVtOmFjdGl2ZSB7
CiAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwppbmRleCA4MzY4MzI5
ZDMwZjdiZWMwYzE0ZTQzZWYzN2U2OWEyMjBmNGUyM2YyLi5kYTUzZDFhMTk3ZjcyNTVjOTk0ZGRl
MDNiN2E0NGI1NTQwZWZhYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcuanMKQEAgLTMyLDYgKzMyLDcgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9
IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogICAgICAgICB0aGlzLl9wcmV2
ZW50Qmx1ciA9IHByZXZlbnRCbHVyIHx8IGZhbHNlOwogCisgICAgICAgIHRoaXMuX2NvbXBsZXRp
b25zID0gW107CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSBOYU47CiAgICAgICAgIHRo
aXMuX21vdmVJbnRlcnZhbElkZW50aWZpZXIgPSBudWxsOwogCkBAIC04OSw5ICs5MCw4IEBAIFdJ
LkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICsrdGhpcy5z
ZWxlY3RlZEluZGV4OwogCi0gICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5f
c2VsZWN0ZWRJdGVtRWxlbWVudDsKLSAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYg
dGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0
aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRoaXMu
X2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBz
ZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRDb250ZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBs
ZXRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pCisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZT8u
Y29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uPy4odGhpcywgdGhpcy5nZXRD
b21wbGV0aW9uVGV4dCh0aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKSk7CiAg
ICAgfQogCiAgICAgc2VsZWN0UHJldmlvdXMoKQpAQCAtMTAxLDkgKzEwMSw4IEBAIFdJLkNvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIC0tdGhpcy5zZWxlY3Rl
ZEluZGV4OwogCi0gICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5fc2VsZWN0
ZWRJdGVtRWxlbWVudDsKLSAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYgdGhpcy5f
ZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1Nl
bGVjdGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIHRoaXMuX2RlbGVn
YXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBzZWxlY3Rl
ZEl0ZW1FbGVtZW50LnRleHRDb250ZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25z
W3RoaXMuc2VsZWN0ZWRJbmRleF0pCisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZT8uY29tcGxl
dGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uPy4odGhpcywgdGhpcy5nZXRDb21wbGV0
aW9uVGV4dCh0aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKSk7CiAgICAgfQog
CiAgICAgaXNIYW5kbGluZ0NsaWNrRXZlbnQoKQpAQCAtMTc1LDIyICsxNzQsMzkgQEAgV0kuQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICB1cGRhdGUoY29tcGxldGlvbnMsIHNlbGVjdGVkSW5kZXgp
CiAgICAgewogICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25zID0gY29tcGxldGlvbnM7CiAKICAgICAgICAgaWYg
KHR5cGVvZiBzZWxlY3RlZEluZGV4ID09PSAibnVtYmVyIikKICAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4OwogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29tcGxldGlvbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgW2luZGV4LCBj
b21wbGV0aW9uXSBvZiBjb21wbGV0aW9ucy5lbnRyaWVzKCkpIHsKICAgICAgICAgICAgIHZhciBp
dGVtRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAg
aXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaXRlbSIpOwotICAgICAgICAgICAgaXRlbUVsZW1l
bnQuY2xhc3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBpID09PSB0aGlzLl9zZWxlY3RlZEluZGV4
KTsKLSAgICAgICAgICAgIGl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gY29tcGxldGlvbnNbaV07
CisgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIsIGlu
ZGV4ID09PSB0aGlzLl9zZWxlY3RlZEluZGV4KTsKKworICAgICAgICAgICAgaWYgKHR5cGVvZiBj
b21wbGV0aW9uID09PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBpdGVtRWxlbWVudC50ZXh0
Q29udGVudCA9IGNvbXBsZXRpb247CisgICAgICAgICAgICBlbHNlIGlmIChjb21wbGV0aW9uIGlu
c3RhbmNlb2YgV0kuUXVlcnlSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBsZXQgaGlnaGxpZ2h0
ZWRSZXN1bHRGcmFnbWVudCA9IHRoaXMuX2NyZWF0ZUhpZ2hsaWdodGVkQ29tcGxldGlvbkZyYWdt
ZW50KGNvbXBsZXRpb24udmFsdWUsIGNvbXBsZXRpb24ubWF0Y2hpbmdUZXh0UmFuZ2VzKTsKKyAg
ICAgICAgICAgICAgICBpdGVtRWxlbWVudC5hcHBlbmRDaGlsZChoaWdobGlnaHRlZFJlc3VsdEZy
YWdtZW50KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxl
bWVudC5hcHBlbmRDaGlsZChpdGVtRWxlbWVudCk7CiAKICAgICAgICAgICAgIGlmICh0aGlzLl9k
ZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmll
d0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50ID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21w
bGV0aW9uRWxlbWVudCh0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbnNbaV0pOworICAgICAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0b21p
emVDb21wbGV0aW9uRWxlbWVudCh0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbik7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICBnZXRDb21wbGV0aW9uVGV4dChjb21wbGV0aW9uKQorICAgIHsK
KyAgICAgICAgaWYgKHR5cGVvZiBjb21wbGV0aW9uID09PSAic3RyaW5nIikKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uOworCisgICAgICAgIGlmIChjb21wbGV0aW9uIGluc3RhbmNlb2Yg
V0kuUXVlcnlSZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbi52YWx1ZTsKKyAg
ICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBnZXQgX3NlbGVjdGVkSXRlbUVsZW1lbnQoKQpA
QCAtMjAzLDYgKzIxOSwyNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3Mg
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1
cm4gZWxlbWVudDsKICAgICB9CiAKKyAgICBfY3JlYXRlSGlnaGxpZ2h0ZWRDb21wbGV0aW9uRnJh
Z21lbnQoY29tcGxldGlvblRleHQsIGhpZ2hsaWdodFRleHRSYW5nZXMpCisgICAgeworICAgICAg
ICBsZXQgY29tcGxldGlvbkZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpOworICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDsKKyAgICAgICAgZm9yIChsZXQgdGV4dFJh
bmdlIG9mIGhpZ2hsaWdodFRleHRSYW5nZXMpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4gPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkZyYWdt
ZW50LmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4LCB0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4pKTsKKworICAgICAgICAgICAgbGV0IGhpZ2hsaWdodFNwYW4gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBoaWdobGlnaHRTcGFuLmNsYXNz
TGlzdC5hZGQoImhpZ2hsaWdodGVkIik7CisgICAgICAgICAgICBoaWdobGlnaHRTcGFuLmFwcGVu
ZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcodGV4dFJhbmdlLnN0YXJ0Q29sdW1uLCB0ZXh0UmFu
Z2UuZW5kQ29sdW1uKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGhp
Z2hsaWdodFNwYW4pOworICAgICAgICAgICAgbGFzdEluZGV4ID0gdGV4dFJhbmdlLmVuZENvbHVt
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXN0SW5kZXggPCBjb21wbGV0aW9uVGV4dC5s
ZW5ndGgpCisgICAgICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGNvbXBsZXRpb25U
ZXh0LnN1YnN0cmluZyhsYXN0SW5kZXgsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCkpOworCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uRnJhZ21lbnQ7CisgICAgfQorCiAgICAgX21vdXNlRG93bihl
dmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwppbmRleCA1ZTQ5ZmY5NjNkZmMzYzUwNzYxM2Y1OTM4
ZTFjNTNmYzY3NTc2ZmQ0Li4yMTYwYzU2ODY5NTdiNjYzYTIxNzYzNmNjZDlmMDQ3NTg1YzcwNmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTM5Nyw2ICszOTcs
NyBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgbGV0IHN0eWxlc0dyb3Vw
ID0gZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZEdyb3VwKFdJLlVJU3RyaW5nKCJTdHlsZXM6
IikpOwogICAgICAgICAgICAgc3R5bGVzR3JvdXAuYWRkU2V0dGluZyhXSS5zZXR0aW5ncy5leHBl
cmltZW50YWxFbmFibGVTdHlsZXNKdW1wVG9FZmZlY3RpdmUsIFdJLlVJU3RyaW5nKCJTaG93IGp1
bXAgdG8gZWZmZWN0aXZlIHByb3BlcnR5IGJ1dHRvbiIpKTsKICAgICAgICAgICAgIHN0eWxlc0dy
b3VwLmFkZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRv
VmFyaWFibGVEZWNsYXJhdGlvbiwgV0kuVUlTdHJpbmcoIlNob3cganVtcCB0byB2YXJpYWJsZSBk
ZWNsYXJhdGlvbiBidXR0b24iKSk7CisgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5n
KFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbEZ1enp5TWF0Y2hpbmdTdHlsZXMsIFdJLlVJU3RyaW5n
KCJVc2UgZnV6enkgbWF0Y2hpbmcgZm9yIGNvbXBsZXRpb24gc3VnZ2VzdGlvbnMiKSk7CiAKICAg
ICAgICAgICAgIGV4cGVyaW1lbnRhbFNldHRpbmdzVmlldy5hZGRTZXBhcmF0b3IoKTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCmluZGV4IDFjZjI3
ZTlhNTAwMjZlZmE1Y2I0M2YzN2VjNTY2YjkxNjA5OTVmN2UuLmJlOTFjNGEzZDcyNTZkMTg1NGY1
ZWNmNDA0OTgxYTEyZjI5MDI2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJv
cGVydHkuanMKQEAgLTkyNCwxMiArOTI0LDEyIEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogCiAg
ICAgX2hhbmRsZU5hbWVDaGFuZ2UoKQogICAgIHsKLSAgICAgICAgdGhpcy5fcHJvcGVydHkubmFt
ZSA9IHRoaXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKTsKKyAgICAgICAgdGhpcy5f
cHJvcGVydHkubmFtZSA9IHRoaXMuX25hbWVUZXh0RmllbGQudmFsdWU7CiAgICAgfQogCiAgICAg
X2hhbmRsZVZhbHVlQ2hhbmdlKCkKICAgICB7Ci0gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX3Zh
bHVlRWxlbWVudC50ZXh0Q29udGVudDsKKyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fdmFsdWVU
ZXh0RmllbGQudmFsdWU7CiAKICAgICAgICAgdGhpcy5fcHJvcGVydHkucmF3VmFsdWUgPSB2YWx1
ZS50cmltKCk7CiAKQEAgLTk2Myw5ICs5NjMsOSBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgfQogICAgIH0KIAotICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7
Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfbmFtZUNvbXBsZXRp
b25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXgsIGZ1
enp5TWF0Y2hpbmd9ID0ge30pCiAgICAgewotICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENv
bXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwge2NhcmV0UG9zaXRpb24sIGFs
bG93RW1wdHlQcmVmaXh9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5
UHJlZml4LCBmdXp6eU1hdGNoaW5nfSk7CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3Jl
SW5wdXQoZXZlbnQpCkBAIC05ODcsOSArOTg3LDkgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3Bl
cnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHRoaXMuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDb21taXQodGhpcy5fdmFsdWVUZXh0
RmllbGQsIHtkaXJlY3Rpb246ICJmb3J3YXJkIn0pOwogICAgIH0KIAotICAgIF92YWx1ZUNvbXBs
ZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9
ID0ge30pCisgICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2FyZXRQb3Np
dGlvbiwgYWxsb3dFbXB0eVByZWZpeCwgZnV6enlNYXRjaGluZ30gPSB7fSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFs
dWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQb3Np
dGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFk
ZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7Cisg
ICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5
VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQ
b3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlz
LmFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpLCBm
dXp6eU1hdGNoaW5nfSk7CiAgICAgfQogCiAgICAgX3NldHVwSnVtcFRvU3ltYm9sKGVsZW1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
cHJlYWRzaGVldFRleHRGaWVsZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCmluZGV4IDkzMWZlMWM3ZDBjZDM2NjM1
OTJjZDM1Yjc3NDE3YzExMWVjOTQ0NjUuLmVhOGJhYjZhMzU1MzIwNzlkN2FjNjJhZTQ4NTlkNWRl
N2NmZDcxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCkBAIC0yOSw2ICsy
OSw4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICB7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50OworICAgICAgICB0aGlzLl92YWx1ZSA9IGVsZW1lbnQudGV4
dENvbnRlbnQ7CisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IG51bGw7CiAKICAgICAgICAg
dGhpcy5fY29tcGxldGlvblByb3ZpZGVyID0gY29tcGxldGlvblByb3ZpZGVyIHx8IG51bGw7CiAg
ICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIpIHsKQEAgLTYxLDcgKzYzLDcgQEAg
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAg
ICAgZ2V0IGVkaXRpbmcoKSB7IHJldHVybiB0aGlzLl9lZGl0aW5nOyB9CiAKLSAgICBnZXQgdmFs
dWUoKSB7IHJldHVybiB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50OyB9CisgICAgZ2V0IHZhbHVl
KCkgeyByZXR1cm4gdGhpcy5fcGVuZGluZ1ZhbHVlID8/IHRoaXMuX2VsZW1lbnQudGV4dENvbnRl
bnQ7IH0KICAgICBzZXQgdmFsdWUodmFsdWUpIHsgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9
IHZhbHVlOyB9CiAKICAgICB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCkKQEAgLTk0LDkgKzk2LDYg
QEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnJlbW92ZSgp
OwotCi0gICAgICAgIC8vIFJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCBtYXkg
bGVhdmUgdGhlIGNvbnRlbnRzIG9mIGBfZWxlbWVudGAgZnJhZ21lbnRlZCBpbnRvIG11bHRpcGxl
IHRleHQgbm9kZXMuCi0gICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4o
KTsKICAgICB9CiAKICAgICBzdGFydEVkaXRpbmcoKQpAQCAtMTMwLDYgKzEyOSw3IEBAIFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAg
ICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGlu
ZyA9ICIiOworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSBudWxsOwogICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImVkaXRpbmciKTsKICAgICAgICAgdGhpcy5fZWxl
bWVudC5jb250ZW50RWRpdGFibGUgPSBmYWxzZTsKIApAQCAtMTU5LDEwICsxNTksMTIgQEAgV0ku
U3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAg
Y29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKHN1Z2dlc3Rpb25zVmlldywg
c2VsZWN0ZWRUZXh0ID0gIiIpCiAgICAgewotICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0g
c2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKKyAgICAg
ICAgaWYgKHNlbGVjdGVkVGV4dC5zdGFydHNXaXRoKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgpKQor
ICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGljZSh0aGlz
Ll9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRo
aXMuc3VnZ2VzdGlvbkhpbnQgPSAiIjsKIAotICAgICAgICBpZiAodGhpcy5zdWdnZXN0aW9uSGlu
dC5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCk7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dChzZWxlY3Rl
ZFRleHQpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVs
ZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAg
ICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlz
KTsKQEAgLTE3MCw5ICsxNzIsOCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNw
cmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29t
cGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCkKICAgICB7Ci0gICAgICAgIHRo
aXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhpcy5fY29tcGxldGlvblBy
ZWZpeC5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQoe21vdmVD
YXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRp
bmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dChzZWxlY3RlZFRleHQpOworICAgICAgICB0aGlzLl9h
cHBseVBlbmRpbmdWYWx1ZSh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKICAg
ICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFu
Z2UgPT09ICJmdW5jdGlvbiIpCkBAIC0yMTksNyArMjIwLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7CisgICAgICAgIHRoaXMuX2FwcGx5
UGVuZGluZ1ZhbHVlKCk7CiAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKIAogICAg
ICAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyAhPT0gdGhpcy52YWx1
ZTsKQEAgLTI1Miw3ICsyNTMsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNw
cmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGxldCBpc1RhYktleSA9IGV2ZW50LmtleSA9PT0g
IlRhYiI7CiAgICAgICAgIGlmIChpc0VudGVyS2V5IHx8IGlzVGFiS2V5KSB7CiAgICAgICAgICAg
ICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7
CisgICAgICAgICAgICB0aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSgpOwogCiAgICAgICAgICAgICBs
ZXQgZGlyZWN0aW9uID0gKGlzVGFiS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSA/ICJiYWNrd2FyZCIg
OiAiZm9yd2FyZCI7CiAKQEAgLTM0Myw3ICszNDQsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgICAgIGlmIChzZWxlY3Rp
b24uaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBs
ZXRpb246IHRydWV9KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSh7
bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKIAogICAgICAgICAgICAgICAgIC8v
IFdoZW4gY29tcGxldGluZyAiYmFja2dyb3VuZCIsIGRvbid0IGhpZGUgdGhlIGNvbXBsZXRpb24g
cG9wb3Zlci4KICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBzaG93aW5nIHRoZSBwb3BvdmVy
IHdpdGggcHJvcGVydGllcyBzdWNoIGFzICJiYWNrZ3JvdW5kLWNvbG9yIiBhbmQgImJhY2tncm91
bmQtaW1hZ2UiLgpAQCAtNDAxLDYgKzQwMiw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IHRoaXMu
dmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpLnRyaW0oKTsKICAgICAgICAgdGhpcy5fcHJldmVudERp
c2NhcmRpbmdDb21wbGV0aW9uc09uS2V5VXAgPSB0cnVlOwogICAgICAgICB0aGlzLl91cGRhdGVD
b21wbGV0aW9ucygpOwogCkBAIC00MTMsOCArNDE1LDkgQEAgV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMuX2NvbXBs
ZXRpb25Qcm92aWRlcikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBjb25zdCBmdXp6
eU1hdGNoaW5nID0gV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRnV6enlNYXRjaGluZ1N0eWxlcy52
YWx1ZTsKICAgICAgICAgbGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZhbHVlV2l0
aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRo
aXMuX2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0
eVByZWZpeDogZm9yY2VDb21wbGV0aW9ucywgY2FyZXRQb3NpdGlvbjogdGhpcy5fZ2V0Q2FyZXRQ
b3NpdGlvbigpfSk7CisgICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9j
b21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVm
aXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMuX2dldENhcmV0UG9zaXRp
b24oKSwgZnV6enlNYXRjaGluZ30pOwogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0g
cHJlZml4OwogCiAgICAgICAgIGlmICghY29tcGxldGlvbnMubGVuZ3RoKSB7CkBAIC00MjMsNyAr
NDI2LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRG
aWVsZAogICAgICAgICB9CiAKICAgICAgICAgLy8gTm8gbmVlZCB0byBzaG93IHRoZSBjb21wbGV0
aW9uIHBvcG92ZXIgd2l0aCBvbmx5IG9uZSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgZW50ZXJlZCB2
YWx1ZS4KLSAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiBjb21wbGV0aW9u
c1swXSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgeworICAgICAgICBpZiAoY29tcGxldGlv
bnMubGVuZ3RoID09PSAxICYmIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5nZXRDb21wbGV0aW9uVGV4
dChjb21wbGV0aW9uc1swXSkgPT09IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pIHsKICAgICAgICAg
ICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNDM2LDggKzQzOSw5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3Mg
U3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudXBk
YXRlKGNvbXBsZXRpb25zKTsKIAotICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAx
KSB7Ci0gICAgICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9wb3Zl
ciB0aGF0IG1hdGNoZXMgdGhlIHN1Z2dlc3Rpb24gaGludC4KKyAgICAgICAgaWYgKGNvbXBsZXRp
b25zLmxlbmd0aCA9PT0gMSAmJiB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuZ2V0Q29tcGxldGlvblRl
eHQoY29tcGxldGlvbnNbMF0pLnN0YXJ0c1dpdGgodGhpcy5fY29tcGxldGlvblByZWZpeCkpIHsK
KyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2hvdyB0aGUgY29tcGxldGlvbiBwb3BvdmVyIHdp
dGggb25seSBvbmUgaXRlbSB0aGF0IGJlZ2lucyB3aXRoIHRoZSBjb21wbGV0aW9uIHByZWZpeC4K
KyAgICAgICAgICAgIC8vIFdoZW4gdXNpbmcgZnV6enkgbWF0Y2hpbmcsIHRoZSBjb21wbGV0aW9u
IHByZWZpeCBtYXkgbm90IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN1Z2dlc3Rpb24u
CiAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHRoaXMuX3Nob3dTdWdnZXN0aW9uc1ZpZXcoKTsKQEAgLTUyNiwyMiAr
NTMwLDE0IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0
RmllbGQKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0KIAotICAgIF9hcHBseUNvbXBsZXRp
b25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7fSkKKyAgICBfYXBwbHlQZW5k
aW5nVmFsdWUoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9ufSA9IHt9KQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgfHwgIXRoaXMuc3VnZ2VzdGlvbkhpbnQp
CisgICAgICAgIGlmICghdGhpcy5fY29tcGxldGlvblByb3ZpZGVyIHx8ICF0aGlzLl9wZW5kaW5n
VmFsdWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fY29tYmluZUVkaXRv
ckVsZW1lbnRDaGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbjogbW92ZUNhcmV0VG9FbmRPZkNvbXBs
ZXRpb24gPyB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCkgKyB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxl
bmd0aCA6IG51bGx9KTsKLSAgICB9CisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9wZW5kaW5n
VmFsdWU7CiAKLSAgICBfY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbih7bmV3Q2FyZXRQb3Np
dGlvbn0gPSB7fSkKLSAgICB7Ci0gICAgICAgIG5ld0NhcmV0UG9zaXRpb24gPz89IHRoaXMuX2dl
dENhcmV0UG9zaXRpb24oKTsKLQotICAgICAgICAvLyBTZXR0aW5nIHRoZSB0ZXh0Q29udGVudCBv
ZiB0aGUgZWxlbWVudCB0byBpdHMgY3VycmVudCB0ZXh0Q29udGVudCB3aWxsIHRha2UgdGhlIHRl
eHQgZnJvbSB0aGUgbXVsdGlwbGUKLSAgICAgICAgLy8gcG90ZW50aWFsIGNoaWxkIG5vZGVzIChw
b3RlbnRpYWxseSBhIHN1Z2dlc3Rpb24gaGludCBub2RlIGFuZCBzb21lIG51bWJlciBvZiBleGlz
dGluZyB0ZXh0IG5vZGVzKSBhbmQgdHVybgotICAgICAgICAvLyB0aGVtIGludG8gYSBzaW5nbGUg
dGV4dCBub2RlIHdpdGhpbiB0aGUgZWxlbWVudC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC50ZXh0
Q29udGVudCA9IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIGxldCBuZXdDYXJl
dFBvc2l0aW9uID0gbW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb24gPyB0aGlzLl9nZXRDYXJldFBv
c2l0aW9uKCkgKyB0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCA6IG51bGw7CiAKICAgICAgICAg
aWYgKHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQg
dGV4dENoaWxkTm9kZSA9IHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDsKQEAgLTU1MCw2ICs1NDYs
MTQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVs
ZAogICAgICAgICB9CiAgICAgfQogCisgICAgX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0
aW9uVGV4dChjb21wbGV0aW9uVGV4dCkKKyAgICB7CisgICAgICAgIGxldCBjYXJldFBvc2l0aW9u
ID0gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpOworICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKKworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSB2
YWx1ZS5zbGljZSgwLCBjYXJldFBvc2l0aW9uIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5n
dGgpICsgY29tcGxldGlvblRleHQgKyB2YWx1ZS5zbGljZShjYXJldFBvc2l0aW9uICsgMSwgdmFs
dWUubGVuZ3RoKTsKKyAgICB9CisKICAgICBfcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnN1Z2dlc3Rpb25IaW50Lmxlbmd0aCwgIlN1
Z2dlc3Rpb24gaGludCBzaG91bGQgbm90IGJlIGVtcHR5IHdoZW4gYXR0YWNoaW5nIHRoZSBzdWdn
ZXN0aW9uIGhpbnQgZWxlbWVudC4iKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444582</attachid>
            <date>2021-11-17 14:46:53 -0800</date>
            <delta_ts>2021-11-18 09:28:52 -0800</delta_ts>
            <desc>Patch 1.0</desc>
            <filename>bug-230351-20211117234651.patch</filename>
            <type>text/plain</type>
            <size>53469</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlNzFlZTFmNDRkYjIzYTc2ZDYwY2FhYmY2N2Ji
NDA2MDFiYjQwZTYuLjA1ODU0MDBlY2NiMmI4NDAyNmU3Nzg1MDliZmYwOTU0MjVhMzViMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAyMS0xMS0xNyAgUmF6
dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU3VwcG9ydCBmdXp6eSBtYXRjaGluZyBpbiBDU1MgY29tcGxldGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDM1MQorICAgICAgICA8cmRh
cjovLzgyOTc2MjkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBmdXp6eSBtYXRjaGluZyBmb3IgaWRlbnRpZnlpbmcgQ1NTIGNvbXBsZXRpb25z
IGluIHRoZSBTdHlsZXMgZGV0YWxpbHMgc2lkZWJhci4KKworICAgICAgICBUaGVyZSBhcmUgdGhy
ZWUgbWFpbiBwYXJ0cyB0byB0aGlzIHBhdGNoOgorICAgICAgICAxLiBJbnRyb2R1Y2UgYFdJLkNT
U1F1ZXJ5Q29udHJvbGxlcmAgd2l0aCBsb2dpYyB0byBkbyBmdXp6eSBtYXRjaGluZyBvbiBwcm92
aWRlZCB2YWx1ZXMuCisgICAgICAgIDIuIENoYW5nZSBgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlld2AgdG8gc3VwcG9ydCBib3RoIHBsYWluIHN0cmluZ3MgYW5kIGBXSS5RdWVyeVJlc3VsdGBz
LgorICAgICAgICAzLiBDaGFuZ2UgYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkYCBzbyBpdHMgYHZh
bHVlYCBkb2Vzbid0IGFsd2F5cyByZXR1cm4gaXRzIGBlbGVtZW50LnRleHRDb250ZW50YC4KKwor
ICAgICAgICBXaXRoIGZ1enp5IG1hdGNoaW5nLCBjb21wbGV0aW9ucyBhcmUgbm90IGd1YXJhbnRl
ZWQgYW55bW9yZSB0byBiZSBwcmVmaXhlZCB3aXRoIHRoZSBxdWVyeS4KKyAgICAgICAgVGhlcmVm
b3JlLCBpdCdzIG5vIGxvbmdlciB2aWFibGUgdG8gcmVseSBvbiBgV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQudmFsdWVgIGJlaW5nIGEgY29uY2F0ZW5hdGlvbiBvZiBgdGV4dENvbnRlbnRgIG9mIG5v
ZGVzIHdpdGhpbi4gCisKKyAgICAgICAgVG8gYWRyZXNzIHRoaXMsIHRoZXJlJ3Mgbm93IGBXSS5T
cHJlYWRzaGVldFRleHRGaWVsZC5fcGVuZGluZ1ZhbHVlYCB3aGljaCBpbmNsdWRlcyB0aGUgcHJv
c3BlY3RpdmUKKyAgICAgICAgY29tcGxldGlvbiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHF1
ZXJ5IGlzIGEgY29tcGxldGlvbiBwcmVmaXggb3IgYXQgbWF0Y2ggYXQgYW55IG90aGVyIHBvc2l0
aW9uLgorCisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOgorICAgICAgICBB
ZGQgYSBmbGFnIHRvIGVuYWJsZSB0aGUgZnV6enkgbWF0Y2hpbmcgZmVhdHVyZS4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29udHJvbGxlcik6CisgICAgICAgIChXSS5DU1NRdWVy
eUNvbnRyb2xsZXIucHJvdG90eXBlLmFkZFZhbHVlcyk6CisgICAgICAgIChXSS5DU1NRdWVyeUNv
bnRyb2xsZXIucHJvdG90eXBlLnJlc2V0KToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29udHJvbGxl
ci5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29udHJvbGxl
ci5wcm90b3R5cGUuX2ZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyk6CisgICAgICAgIEFkZCBh
IHNwZWNsaWFsaXplZCBjbGFzcyB0byBob2xkIHRoZSBsb2dpYyBmb3IgZnV6enkgbWF0Y2hpbmcg
b2YgQ1NTIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4KKyAgICAgICAgSXQgY2xvbmVzIGxvZ2ljIGZy
b20gYFdJLlJlc291Y2VRdWVyeUNvbnRyb2xsZXJgIHdpdGggYWRqdXN0bWVudHMgc3BlY2lmaWMg
dG8gQ1NTOyBtb3JlIHRvIGZvbGxvdyBhcyB0aGUgZmVhdHVyZSBnZXRzIHJlZmluZWQuCisKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9DU1NDb21wbGV0aW9ucy5qczoKKyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zKToK
KyAgICAgICAgKFdJLkNTU0NvbXBsZXRpb25zLnByb3RvdHlwZS5hZGRWYWx1ZXMpOgorICAgICAg
ICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmV4ZWN1dGVRdWVyeSk6CisgICAgICAgIFN1
cHBvcnQgYm90aCB0aGUgY3VycmVudCBwcmVmaXggbWF0Y2hpbmcgYXBwcm9hY2ggYXMgd2VsbCBh
cyBmdXp6eSBtYXRjaGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tl
eXdvcmRDb21wbGV0aW9ucy5qczoKKyAgICAgICAgKFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQYXJ0aWFsUHJvcGVydHlOYW1lKToKKyAgICAgICAgT3B0IGludG8gZnV6enkgbWF0Y2hpbmcg
d2hlbiBnZXR0aW5nIGNvbXBsZXRpb25zIGZvciBwcm9wZXJ0eSBuYW1lcyBhbmQgdmFsdWVzLiAK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0LmpzOgorICAgICAg
ICAoV0kuUXVlcnlSZXN1bHQucHJvdG90eXBlLmdldCBtYXRjaGVzKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbDoKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3M6CisgICAgICAgICguY29tcGxldGlvbi1zdWdnZXN0
aW9ucy1jb250YWluZXIgPiAuaXRlbSA+IC5oaWdobGlnaHRlZCk6CisgICAgICAgIEhpZ2hsaWdo
dCBzcGVjaWZpYyBjaGFyYWN0ZXJzIHRoYXQgbWF0Y2hlZCBpbiByZXN1bHQgaWRlbnRpZmllZCBi
eSBmdXp6eSBtYXRjaGluZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5qczoKKyAgICAgICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcucHJvdG90eXBlLnNlbGVjdE5leHQpOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dl
c3Rpb25zVmlldy5wcm90b3R5cGUuc2VsZWN0UHJldmlvdXMpOgorICAgICAgICAoV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdJLkNvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLmdldENvbXBsZXRpb25UZXh0KToKKyAgICAg
ICAgKFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLl9jcmVhdGVIaWdobGln
aHRlZENvbXBsZXRpb25GcmFnbWVudCk6CisgICAgICAgIENoYW5nZSBgV0kuQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlld2AgdG8gaG9sZCBhIGxpc3Qgb2YgY29tcGxldGlvbnMsIAorICAgICAgICBl
aXRoZXIgc3RyaW5ncyBvciBgV0kuUXVlcnlSZXN1bHRgLCBhbmQgcmV0dXJuIHRoZSBhcHByb3By
aWF0ZSBjb21wbGV0aW9uIHRleHQKKyAgICAgICAgaW5zdGVhZCBvZiByZXR1cm5pbmcgdGhlIGB0
ZXh0Q29udGVudGAgb2YgdGhlIHNlbGVjdGVkIGVsZW1lbnQuCisKKyAgICAgICAgYFdJLkNvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXdgIGlzIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBDb25zb2xlIGFu
ZCBTb3VyY2VzIHBhbmVsCisgICAgICAgIHNvIGF2b2lkIGltcGFjdGluZyB0aG9zZSBjb25zdW1l
cnMgdW50aWwgdGhleSBvcHQgaW4gdG8gZnV6enkgbWF0Y2hpbmcgYXMgd2VsbC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qczoKKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzOgor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LnByb3RvdHlwZS5faGFuZGxlTmFt
ZUNoYW5nZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBl
Ll9oYW5kbGVWYWx1ZUNoYW5nZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVy
dHkucHJvdG90eXBlLl9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcik6CisgICAgICAgIChXSS5T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl92YWx1ZUNvbXBsZXRpb25EYXRhUHJv
dmlkZXIpOgorICAgICAgICBPbiBjaGFuZ2UsIGdldCB0aGUgdmFsdWUgb2YgdGhlIGBXSS5TcHJl
YWRzaGVldFRleHRGaWVsZGAgaW5zdGVhZCBvZiAKKyAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcg
ZWxlbWVudCdzIGB0ZXh0Q29udGVudGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLmdldCB2YWx1
ZSk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuc2V0IHN1Z2dl
c3Rpb25IaW50KToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5z
dG9wRWRpdGluZyk6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUu
ZGlzY2FyZENvbXBsZXRpb24pOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJv
dG90eXBlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbik6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25z
Q2xpY2tlZENvbXBsZXRpb24pOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJv
dG90eXBlLl9kaXNjYXJkQ2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5faGFuZGxlQmx1cik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd24pOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQucHJvdG90eXBlLl9oYW5kbGVLZXlEb3duRm9yU3VnZ2VzdGlvblZpZXcpOgorICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9oYW5kbGVJbnB1dCk6CisgICAg
ICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX3VwZGF0ZUNvbXBsZXRpb25z
KToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fYXBwbHlQZW5k
aW5nVmFsdWUpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl91
cGRhdGVQZW5kaW5nVmFsdWVXaXRoQ29tcGxldGlvblRleHQpOgorICAgICAgICAoV0kuU3ByZWFk
c2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNvbXBsZXRpb25IaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fY29tYmluZUVkaXRv
ckVsZW1lbnRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgIENoYW5nZSBgV0kuU3ByZWFkc2hl
ZXRUZXh0RmllbGRgIHNvIGl0cyB2YWx1ZSBpcyBkaXZvcmNlZCBmcm9tIGl0cyBlbGVtZW50J3Mg
YHRleHRDb250ZW50YC4KKyAgICAgICAgCisgICAgICAgIFdoZW4gcHJlc2VudGVkIHdpdGggYSBj
b21wbGV0aW9uLCB0aGUgcXVlcnkgZ2V0cyBzdWJzdGl0dXRlZCB3aXRoIHRoZSBmdWxsIGNvbXBs
ZXRpb24gdGV4dCBpbiAKKyAgICAgICAgYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5n
VmFsdWVgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcXVlcnkgaXMgYSBwcmVmaXggb3Igbm90
LgorCisgICAgICAgIElmIHRoZSBxdWVyeSBpcyBhIHByZWZpeCwga2VlcCB0aGUgZXhpc3Rpbmcg
YmVoYXZpb3Igb2YgYXBwZW5kaW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQgc3Vic3RyaW5nLgorICAg
ICAgICBPdGhlcndpc2UsIGhpZGUgdGhlIHN1Z2dlc3Rpb24gaGludCBlbGVtZW50IGJlY2F1c2Ug
dGhlIGNvbmNhdGVuYXRpb24gZG9lc24ndCBtYWtlIHNlbnNlLgorICAgICAgICAKKyAgICAgICAg
V2hpbGUgZWRpdGluZywgYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnZhbHVlYCByZXR1cm5zIHRo
ZSBwZW5kaW5nIHZhbHVlIAorICAgICAgICBzbyB0aGF0IGEgdmFsaWQgQ1NTIHN0cmluZyBnZXRz
IHdyaXR0ZW4gdG8gdGhlIHN0eWxlc2hlZXQuCisKKyAgICAgICAgV2hlbiBhcHBseWluZyBhIGNv
bXBsZXRpb24sIHRoZSB2YWx1ZSBpcyByZXBsYWNlZCB3aXRoIHRoZSBwZW5kaW5nIHZhbHVlLiAK
KyAgICAgICAgQXQgdGhpcyBwb2ludCwgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQudmFsdWVgIGFu
ZCB0aGUgYHRleHRDb250ZW50YCBvZiB0aGUgZWxlbWVudCBjb252ZXJnZS4KKwogMjAyMS0xMS0x
NiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSZW1vdmUgdW51c2VkIGBkb250Q3JlYXRlSWZNaXNzaW5nYCBhcmd1bWVudCBm
cm9tIENTU1N0eWxlRGVjbGFyYXRpb24ucHJvdG90eXBlLnByb3BlcnR5Rm9yTmFtZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZWFjNjFkZjJhOTRmMzA2ZGUwMTRhMjFjY2I0
N2NlM2JmYzFjZjk4Yy4uMGQwYzIxMjA2NDYzYjRjNTY2MjNiY2QyZTdiNDE1MjM1NWI3OWJkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xNjA2LDYgKzE2MDYsNyBAQCBs
b2NhbGl6ZWRTdHJpbmdzWyJVc2FnZTogJXMiXSA9ICJVc2FnZTogJXMiOwogbG9jYWxpemVkU3Ry
aW5nc1siVXNlIERlZmF1bHQgQXBwZWFyYW5jZSJdID0gIlVzZSBEZWZhdWx0IEFwcGVhcmFuY2Ui
OwogbG9jYWxpemVkU3RyaW5nc1siVXNlIE1vY2sgQ2FwdHVyZSBEZXZpY2VzIl0gPSAiVXNlIE1v
Y2sgQ2FwdHVyZSBEZXZpY2VzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlVzZSBkZWZhdWx0IG1lZGlh
IHN0eWxlcyJdID0gIlVzZSBkZWZhdWx0IG1lZGlhIHN0eWxlcyI7Citsb2NhbGl6ZWRTdHJpbmdz
WyJVc2UgZnV6enkgbWF0Y2hpbmcgZm9yIGNvbXBsZXRpb24gc3VnZ2VzdGlvbnMiXSA9ICJVc2Ug
ZnV6enkgbWF0Y2hpbmcgZm9yIGNvbXBsZXRpb24gc3VnZ2VzdGlvbnMiOwogbG9jYWxpemVkU3Ry
aW5nc1siVXNlIHRoZSByZXNvdXJjZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIl0gPSAi
VXNlIHRoZSByZXNvdXJjZSBjYWNoZSB3aGVuIGxvYWRpbmcgcmVzb3VyY2VzIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlVzZXIgQWdlbnQiXSA9ICJVc2VyIEFnZW50IjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlVzZXIgQWdlbnQgU3R5bGUgU2hlZXQiXSA9ICJVc2VyIEFnZW50IFN0eWxlIFNoZWV0IjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGlu
Zy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cwppbmRleCBkMmViMjViN2VjZTFhODQxODE5MmQxNmIyYTJiZTQ2YmUyZTYzYTMzLi4yZjhlOGRk
YTM5MjI1NzhiMTgwZjI5NDE5ZTA0ODMxNGM0ZGZhMTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0yMzEsNiArMjMx
LDcgQEAgV0kuc2V0dGluZ3MgPSB7CiAgICAgZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRv
VmFyaWFibGVEZWNsYXJhdGlvbjogbmV3IFdJLlNldHRpbmcoImV4cGVyaW1lbnRhbC1zdHlsZXMt
anVtcC10by12YXJpYWJsZS1kZWNsYXJhdGlvbiIsIGZhbHNlKSwKICAgICBleHBlcmltZW50YWxD
b2xsYXBzZUJsYWNrYm94ZWRDYWxsRnJhbWVzOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFs
LWNvbGxhcHNlLWJsYWNrYm94ZWQtY2FsbC1mcmFtZXMiLCBmYWxzZSksCiAgICAgZXhwZXJpbWVu
dGFsQWxsb3dJbnNwZWN0aW5nSW5zcGVjdG9yOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFs
LWFsbG93LWluc3BlY3RpbmctaW5zcGVjdG9yIiwgZmFsc2UpLAorICAgIGV4cGVyaW1lbnRhbEZ1
enp5TWF0Y2hpbmdTdHlsZXM6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmltZW50YWwtZnV6enktbWF0
Y2hpbmctc3R5bGVzIiwgZmFsc2UpLAogCiAgICAgLy8gUHJvdG9jb2wKICAgICBwcm90b2NvbExv
Z0FzVGV4dDogbmV3IFdJLlNldHRpbmcoInByb3RvY29sLWxvZy1hcy10ZXh0IiwgZmFsc2UpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkNWY4
YjdmMmE4ZjE5M2JmODY1YWYyODgyMTVlYjA1NDg5ODFmMDcKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNv
bnRyb2xsZXIuanMKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5DU1NRdWVyeUNv
bnRyb2xsZXIgPSBjbGFzcyBDU1NRdWVyeUNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5RdWVyeUNvbnRy
b2xsZXIKK3sKKyAgICBjb25zdHJ1Y3Rvcih2YWx1ZXMpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydChBcnJheS5pc0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisgICAgICAgIHN1cGVyKCk7
CisKKyAgICAgICAgdGhpcy5fdmFsdWVzID0gdmFsdWVzID8/IFtdOworICAgICAgICB0aGlzLl9j
YWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVlTWFwID0gbmV3IE1hcDsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGFkZFZhbHVlcyh2YWx1ZXMpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChBcnJheS5pc0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisgICAgICAg
IGlmICghdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlz
Ll92YWx1ZXMucHVzaEFsbCh2YWx1ZXMpOworICAgIH0KKworICAgIHJlc2V0KCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuX3ZhbHVlcyA9IFtdOworICAgICAgICB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hh
cmFjdGVySW5kaWNlc0ZvclZhbHVlTWFwLmNsZWFyKCk7CisgICAgfQorCisgICAgZXhlY3V0ZVF1
ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeSB8fCAhdGhpcy5fdmFsdWVzLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRv
TG93ZXJDYXNlKCk7CisKKyAgICAgICAgbGV0IHJlc3VsdHMgPSBbXTsKKworICAgICAgICBmb3Ig
KGxldCB2YWx1ZSBvZiB0aGlzLl92YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fY2Fj
aGVkU3BlY2lhbENoYXJhY3RlckluZGljZXNGb3JWYWx1ZU1hcC5oYXModmFsdWUpKQorICAgICAg
ICAgICAgICAgIHRoaXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAu
c2V0KHZhbHVlLCB0aGlzLl9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXModmFsdWUpKTsKKwor
ICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLmZpbmRRdWVyeU1hdGNoZXMocXVlcnksIHZh
bHVlLnRvTG93ZXJDYXNlKCksIHRoaXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9y
VmFsdWVNYXAuZ2V0KHZhbHVlKSk7CisgICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpCisg
ICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNoKG5ldyBXSS5RdWVyeVJlc3VsdCh2YWx1ZSwgbWF0
Y2hlcykpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVzdWx0cyBhcmUgc29ydGVkIGluIGRl
c2NlbmRpbmcgb3JkZXIgYnkgcmFuay4KKyAgICAgICAgLy8gUmVzdWx0cyBvZiBlcXVhbCByYW5r
IGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgYnkgdmFsdWUuCisgICAgICAgIHJldHVybiByZXN1
bHRzLnNvcnQoKGEsIGIpID0+IHsKKyAgICAgICAgICAgIGlmIChhLnJhbmsgPT09IGIucmFuaykK
KyAgICAgICAgICAgICAgICByZXR1cm4gYS52YWx1ZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi52
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gYi5yYW5rIC0gYS5yYW5rOworICAgICAgICB9KTsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzKHN0cmluZykKKyAgICB7CisgICAgICAgIGlmICghc3RyaW5nLmxlbmd0aCkKKyAgICAgICAg
ICAgIHJldHVybiBbXTsKKworICAgICAgICBjb25zdCBzZXBhcmF0b3JzID0gIi0iOworCisgICAg
ICAgIC8vIFNwZWNpYWwgY2hhcmFjdGVycyBpbmNsdWRlIHRoZSBmb2xsb3dpbmc6CisgICAgICAg
IC8vIDEuIFRoZSBmaXJzdCBjaGFyYWN0ZXIuCisgICAgICAgIC8vIDIuIFVwcGVyY2FzZSBjaGFy
YWN0ZXJzIHRoYXQgZm9sbG93IGEgbG93ZXJjYXNlIGxldHRlci4KKyAgICAgICAgLy8gMy4gU2Vw
YXJhdG9ycyBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHNlcGFyYXRvci4K
KyAgICAgICAgbGV0IGluZGljZXMgPSBbMF07CisKKyAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PCBzdHJpbmcubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBjaGFyYWN0ZXIgPSBzdHJp
bmdbaV07CisgICAgICAgICAgICBsZXQgaXNTcGVjaWFsID0gZmFsc2U7CisKKyAgICAgICAgICAg
IGlmIChzZXBhcmF0b3JzLmluY2x1ZGVzKGNoYXJhY3RlcikpCisgICAgICAgICAgICAgICAgaXNT
cGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxldCBw
cmV2aW91c0NoYXJhY3RlciA9IHN0cmluZ1tpIC0gMV07CisgICAgICAgICAgICAgICAgaWYgKHNl
cGFyYXRvcnMuaW5jbHVkZXMocHJldmlvdXNDaGFyYWN0ZXIpKQorICAgICAgICAgICAgICAgICAg
ICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXJhY3Rlci5p
c1VwcGVyQ2FzZSgpICYmIHByZXZpb3VzQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKCkpCisgICAgICAg
ICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChpc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKGkpOworICAg
ICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluZGljZXM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA2NjRlYTgxYTZkOTIz
MTQ1NzU1NDczYjY2Yzg0YzRjNTUyYTM4MWNkLi41OTE4YjY2ZWZjNTYxZTNlODkxNGUwNzQ2OGE5
MWZiODJiNDk5ODE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCkBAIC05MjUsNiArOTI1LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvT3ZlcmxheU1hbmFnZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1J1bnRpbWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
Q29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggYzQ2ODE1MGY3MzFkYzllYTA5MWNhYzM4YjAwNWM2
ZWUxOGY2ZjEzZS4uMjYxYTM3MWQzYmRjY2NhNzZiNWM5OGQ1MTk1NzNhNDNmMWUyZjgzZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0Nv
bXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtNTgsNiArNTgsNyBAQCBXSS5DU1NDb21wbGV0aW9u
cyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAgICAgICAgIHRoaXMuX3ZhbHVlcy5zb3J0KCk7CiAK
ICAgICAgICAgdGhpcy5fYWNjZXB0RW1wdHlQcmVmaXggPSBhY2NlcHRFbXB0eVByZWZpeDsKKyAg
ICAgICAgdGhpcy5fcXVlcnlDb250cm9sbGVyID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBTdGF0
aWMKQEAgLTI1Myw2ICsyNTQsMTcgQEAgV0kuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21w
bGV0aW9ucwogCiAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNoQWxsKHZhbHVlcyk7CiAgICAgICAg
IHRoaXMuX3ZhbHVlcy5zb3J0KCk7CisKKyAgICAgICAgaWYgKHRoaXMuX3F1ZXJ5Q29udHJvbGxl
cikKKyAgICAgICAgICAgIHRoaXMuX3F1ZXJ5Q29udHJvbGxlci5hZGRWYWx1ZXModmFsdWVzKTsK
KyAgICB9CisKKyAgICBleGVjdXRlUXVlcnkocXVlcnkpCisgICAgeworICAgICAgICBpZiAoIXRo
aXMuX3F1ZXJ5Q29udHJvbGxlcikKKyAgICAgICAgICAgIHRoaXMuX3F1ZXJ5Q29udHJvbGxlciA9
IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIodGhpcy5fdmFsdWVzKTsKKworICAgICAgICByZXR1
cm4gdGhpcy5fcXVlcnlDb250cm9sbGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CiAgICAgfQogCiAg
ICAgc3RhcnRzV2l0aChwcmVmaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5q
cwppbmRleCAyMTQ5NTUwZjgzNmE0Y2QwZGZkNTNhOGIwYzJiMDY4Zjg2YmI3NzA0Li5lMmI0ZDU0
YmUzZDcxYzdiNWE4Y2IwZWRkYzBhOGYwZDQ1YjNjNDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3
b3JkQ29tcGxldGlvbnMuanMKQEAgLTMxLDcgKzMxLDcgQEAKIAogV0kuQ1NTS2V5d29yZENvbXBs
ZXRpb25zID0ge307CiAKLVdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVy
dHlOYW1lID0gZnVuY3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9
ID0ge30pCitXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSA9
IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4LCBmdXp6eU1h
dGNoaW5nfSA9IHt9KQogewogICAgIGNhcmV0UG9zaXRpb24gPz89IHRleHQubGVuZ3RoOwogICAg
IGFsbG93RW1wdHlQcmVmaXggPz89IGZhbHNlOwpAQCAtNDIsMTAgKzQyLDE3IEBAIFdJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lID0gZnVuY3Rpb24odGV4dCwg
e2NhcmV0UG9zaXRpb24sCiAKICAgICBpZiAoIXRleHQubGVuZ3RoICYmIGFsbG93RW1wdHlQcmVm
aXgpCiAgICAgICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uczogV0kuQ1NTQ29t
cGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlc307Ci0gICAgcmV0dXJuIHtwcmVmaXg6
IHRleHQsIGNvbXBsZXRpb25zOldJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5z
dGFydHNXaXRoKHRleHQpfTsKKworICAgIGxldCBjb21wbGV0aW9uczsKKyAgICBpZiAoZnV6enlN
YXRjaGluZykKKyAgICAgICAgY29tcGxldGlvbnMgPSBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1l
Q29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KHRleHQpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxl
dGlvbnMgPSBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRzV2l0aCh0
ZXh0KTsKKworICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uc307CiB9OwogCi1X
SS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlv
bih0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25W
YWx1ZUNvbXBsZXRpb25zUHJvdmlkZXJ9ID0ge30pCitXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMu
Zm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtj
YXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXIs
IGZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlvbiA/Pz0gdGV4dC5sZW5n
dGg7CiAKQEAgLTg2LDggKzkzLDggQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRp
YWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24odGV4dCwgcHJvcGVydHlOYW1lLAogICAgIGlmICgo
Y2FyZXRJc0luTWlkZGxlT2ZUb2tlbiAmJiBjdXJyZW50VG9rZW5WYWx1ZS5sZW5ndGgpIHx8ICgh
Y2FyZXRJc0luTWlkZGxlT2ZUb2tlbiAmJiB0b2tlbkFmdGVyQ2FyZXQgJiYgL1thLXpBLVowLTkt
XS8udGVzdCh0b2tlbkFmdGVyQ2FyZXQudmFsdWVbMF0pKSkKICAgICAgICAgcmV0dXJuIHtwcmVm
aXg6ICIiLCBjb21wbGV0aW9uczogW119OwogCi0gICAgLy8gSWYgdGhlIGN1cnJlbnQgdG9rZW4g
dmFsdWUgaXMgYSBjb21tYSBvciBvcGVuaW5nIHBhcmVudGhlc2lzLCB0cmVhdCBpdCBhcyBpZiB3
ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgbmV3IHRva2VuLgotICAgIGlmIChjdXJyZW50VG9rZW5W
YWx1ZSA9PT0gIigiIHx8IGN1cnJlbnRUb2tlblZhbHVlID09PSAiLCIpCisgICAgLy8gSWYgdGhl
IGN1cnJlbnQgdG9rZW4gdmFsdWUgaXMgYSBjb21tYSBvciBwYXJlbnRoZXNpcywgdHJlYXQgaXQg
YXMgaWYgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIG5ldyB0b2tlbi4KKyAgICBpZiAoY3VycmVu
dFRva2VuVmFsdWUgPT09ICIoIiB8fCBjdXJyZW50VG9rZW5WYWx1ZSA9PT0gIikiIHx8IGN1cnJl
bnRUb2tlblZhbHVlID09PSAiLCIpCiAgICAgICAgIGN1cnJlbnRUb2tlblZhbHVlID0gIiI7CiAK
ICAgICBsZXQgZnVuY3Rpb25OYW1lID0gbnVsbDsKQEAgLTEwOCwxNCArMTE1LDIxIEBAIFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKHRl
eHQsIHByb3BlcnR5TmFtZSwKICAgICAgICAgfQogICAgIH0KIAorICAgIGxldCB2YWx1ZUNvbXBs
ZXRpb25zOwogICAgIGlmIChmdW5jdGlvbk5hbWUpIHsKLSAgICAgICAgbGV0IGNvbXBsZXRpb25z
ID0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSk7Ci0g
ICAgICAgIGxldCBjb250ZXh0dWFsVmFsdWVDb21wbGV0aW9ucyA9IGFkZGl0aW9uYWxGdW5jdGlv
blZhbHVlQ29tcGxldGlvbnNQcm92aWRlcj8uKGZ1bmN0aW9uTmFtZSkgfHwgW107Ci0gICAgICAg
IGNvbXBsZXRpb25zLmFkZFZhbHVlcyhjb250ZXh0dWFsVmFsdWVDb21wbGV0aW9ucyk7Ci0gICAg
ICAgIHJldHVybiB7cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnM6IGNvbXBs
ZXRpb25zLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpfTsKKyAgICAgICAgdmFsdWVDb21w
bGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JGdW5jdGlvbihmdW5jdGlvbk5h
bWUpOworICAgICAgICB2YWx1ZUNvbXBsZXRpb25zLmFkZFZhbHVlcyhhZGRpdGlvbmFsRnVuY3Rp
b25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI/LihmdW5jdGlvbk5hbWUpID8/IFtdKTsKICAgICB9
CisgICAgZWxzZQorICAgICAgICB2YWx1ZUNvbXBsZXRpb25zID0gV0kuQ1NTS2V5d29yZENvbXBs
ZXRpb25zLmZvclByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisKKyAgICBsZXQgY29tcGxldGlvbnM7
CisgICAgaWYgKGZ1enp5TWF0Y2hpbmcpCisgICAgICAgIGNvbXBsZXRpb25zID0gdmFsdWVDb21w
bGV0aW9ucy5leGVjdXRlUXVlcnkoY3VycmVudFRva2VuVmFsdWUpOworICAgIGVsc2UKKyAgICAg
ICAgY29tcGxldGlvbnMgPSB2YWx1ZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgoY3VycmVudFRva2Vu
VmFsdWUpOwogCi0gICAgcmV0dXJuIHtwcmVmaXg6IGN1cnJlbnRUb2tlblZhbHVlLCBjb21wbGV0
aW9uczogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHByb3BlcnR5TmFtZSku
c3RhcnRzV2l0aChjdXJyZW50VG9rZW5WYWx1ZSl9OworICAgIHJldHVybiB7cHJlZml4OiBjdXJy
ZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnN9OwogfTsKIAogV0kuQ1NTS2V5d29yZENvbXBsZXRp
b25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0Lmpz
CmluZGV4IDhmMjZkYzIwOGY2MTk4OWE2ZmE0MThjZjk4ZDE1MmEyOTU4ZTc1MDMuLjVmZWVkYTM0
YmExOGYwNGViNGJhNWU5MGRjNWMxNzcwOGRkNjg0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQuanMKQEAg
LTM2LDYgKzM2LDcgQEAgV0kuUXVlcnlSZXN1bHQgPSBjbGFzcyBRdWVyeVJlc3VsdAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICBn
ZXQgbWF0Y2hlcygpIHsgcmV0dXJuIHRoaXMuX21hdGNoZXM7IH0KIAogICAgIGdldCByYW5rKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
aW5kZXggYzMwMGJjMGM5NzhlMjYwNzE1YTg4ODVmZjhiMjAzNTgyM2NjYzg4OS4uNzc3MTkwNjVk
ZDMwNmUyOTJhYjU0ZGJiZDhiNzEzNWFlMjdhNWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjUzLDYgKzI1Myw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Ccm93c2VyTWFuYWdlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3LmNzcwppbmRleCA2NjdhMDIzZTc5YTNhZWU3MTk4MjY1NmUxYzM2YTA1NDAyMzM3MjUzLi5m
MmE4NWViMWZjZTRiY2Q1YTNlOWIyYzVkNzQxNTI3MmE0NmNhNTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcwpAQCAtNzAsNiArNzAsMTAgQEAKICAgICBj
b2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiB9CiAKKy5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNv
bnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdodGVkIHsKKyAgICBmb250LXdlaWdodDogYm9sZDsK
K30KKwogLmNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyOm5vdCg6YWN0aXZlKSA+IC5p
dGVtLnNlbGVjdGVkLAogLmNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyID4gLml0ZW06
YWN0aXZlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3RlZC1iYWNrZ3JvdW5k
LWNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4
IDgzNjgzMjlkMzBmN2JlYzBjMTRlNDNlZjM3ZTY5YTIyMGY0ZTIzZjIuLmRhNTNkMWExOTdmNzI1
NWM5OTRkZGUwM2I3YTQ0YjU1NDBlZmFhMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldy5qcwpAQCAtMzIsNiArMzIsNyBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CiAgICAgICAgIHRo
aXMuX3ByZXZlbnRCbHVyID0gcHJldmVudEJsdXIgfHwgZmFsc2U7CiAKKyAgICAgICAgdGhpcy5f
Y29tcGxldGlvbnMgPSBbXTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IE5hTjsKICAg
ICAgICAgdGhpcy5fbW92ZUludGVydmFsSWRlbnRpZmllciA9IG51bGw7CiAKQEAgLTg5LDkgKzkw
LDggQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25TdWdn
ZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Kyt0aGlzLnNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkSXRlbUVsZW1lbnQg
PSB0aGlzLl9zZWxlY3RlZEl0ZW1FbGVtZW50OwotICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtRWxl
bWVudCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlv
blN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uID09PSAiZnVuY3Rpb24iKQotICAgICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9u
KHRoaXMsIHNlbGVjdGVkSXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOworICAgICAgICBpZiAodGhp
cy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkKKyAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlPy5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24/Lih0aGlzLCB0
aGlzLmdldENvbXBsZXRpb25UZXh0KHRoaXMuX2NvbXBsZXRpb25zW3RoaXMuc2VsZWN0ZWRJbmRl
eF0pKTsKICAgICB9CiAKICAgICBzZWxlY3RQcmV2aW91cygpCkBAIC0xMDEsOSArMTAxLDggQEAg
V0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLS10aGlz
LnNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkSXRlbUVsZW1lbnQgPSB0aGlz
Ll9zZWxlY3RlZEl0ZW1FbGVtZW50OwotICAgICAgICBpZiAoc2VsZWN0ZWRJdGVtRWxlbWVudCAm
JiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dl
c3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uID09PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgdGhp
cy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKHRoaXMs
IHNlbGVjdGVkSXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOworICAgICAgICBpZiAodGhpcy5fY29t
cGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkKKyAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRl
Py5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24/Lih0aGlzLCB0aGlzLmdl
dENvbXBsZXRpb25UZXh0KHRoaXMuX2NvbXBsZXRpb25zW3RoaXMuc2VsZWN0ZWRJbmRleF0pKTsK
ICAgICB9CiAKICAgICBpc0hhbmRsaW5nQ2xpY2tFdmVudCgpCkBAIC0xNzUsMjIgKzE3NCwzOSBA
QCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgIHVwZGF0ZShjb21wbGV0aW9ucywgc2VsZWN0
ZWRJbmRleCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBjb21wbGV0aW9uczsKIAogICAg
ICAgICBpZiAodHlwZW9mIHNlbGVjdGVkSW5kZXggPT09ICJudW1iZXIiKQogICAgICAgICAgICAg
dGhpcy5fc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb21wbGV0aW9ucy5sZW5ndGg7ICsraSkgeworICAgICAgICBmb3IgKGxldCBb
aW5kZXgsIGNvbXBsZXRpb25dIG9mIGNvbXBsZXRpb25zLmVudHJpZXMoKSkgewogICAgICAgICAg
ICAgdmFyIGl0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpdGVtIik7Ci0gICAgICAgICAgICBp
dGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIsIGkgPT09IHRoaXMuX3NlbGVj
dGVkSW5kZXgpOwotICAgICAgICAgICAgaXRlbUVsZW1lbnQudGV4dENvbnRlbnQgPSBjb21wbGV0
aW9uc1tpXTsKKyAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNlbGVj
dGVkIiwgaW5kZXggPT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpOworCisgICAgICAgICAgICBpZiAo
dHlwZW9mIGNvbXBsZXRpb24gPT09ICJzdHJpbmciKQorICAgICAgICAgICAgICAgIGl0ZW1FbGVt
ZW50LnRleHRDb250ZW50ID0gY29tcGxldGlvbjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBs
ZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVyeVJlc3VsdCkgeworICAgICAgICAgICAgICAgIGxldCBo
aWdobGlnaHRlZFJlc3VsdEZyYWdtZW50ID0gdGhpcy5fY3JlYXRlSGlnaGxpZ2h0ZWRDb21wbGV0
aW9uRnJhZ21lbnQoY29tcGxldGlvbi52YWx1ZSwgY29tcGxldGlvbi5tYXRjaGluZ1RleHRSYW5n
ZXMpOworICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKGhpZ2hsaWdodGVk
UmVzdWx0RnJhZ21lbnQpOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLl9jb250
YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVtZW50KTsKIAogICAgICAgICAgICAgaWYg
KHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3Q3VzdG9taXplQ29tcGxldGlvbkVsZW1lbnQgPT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3Rv
bWl6ZUNvbXBsZXRpb25FbGVtZW50KHRoaXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uc1tpXSk7
CisgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmll
d0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KHRoaXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9u
KTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGdldENvbXBsZXRpb25UZXh0KGNvbXBsZXRpb24p
CisgICAgeworICAgICAgICBpZiAodHlwZW9mIGNvbXBsZXRpb24gPT09ICJzdHJpbmciKQorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb247CisKKyAgICAgICAgaWYgKGNvbXBsZXRpb24gaW5z
dGFuY2VvZiBXSS5RdWVyeVJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uLnZh
bHVlOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIGdldCBfc2VsZWN0ZWRJdGVtRWxl
bWVudCgpCkBAIC0yMDMsNiArMjE5LDI3IEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcg
PSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIHJldHVybiBlbGVtZW50OwogICAgIH0KIAorICAgIF9jcmVhdGVIaWdobGlnaHRlZENvbXBs
ZXRpb25GcmFnbWVudChjb21wbGV0aW9uVGV4dCwgaGlnaGxpZ2h0VGV4dFJhbmdlcykKKyAgICB7
CisgICAgICAgIGxldCBjb21wbGV0aW9uRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7CisgICAgICAgIGxldCBsYXN0SW5kZXggPSAwOworICAgICAgICBmb3IgKGxl
dCB0ZXh0UmFuZ2Ugb2YgaGlnaGxpZ2h0VGV4dFJhbmdlcykgeworICAgICAgICAgICAgaWYgKHRl
eHRSYW5nZS5zdGFydENvbHVtbiA+IGxhc3RJbmRleCkKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uRnJhZ21lbnQuYXBwZW5kKGNvbXBsZXRpb25UZXh0LnN1YnN0cmluZyhsYXN0SW5kZXgsIHRl
eHRSYW5nZS5zdGFydENvbHVtbikpOworCisgICAgICAgICAgICBsZXQgaGlnaGxpZ2h0U3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgIGhpZ2hsaWdodFNw
YW4uY2xhc3NMaXN0LmFkZCgiaGlnaGxpZ2h0ZWQiKTsKKyAgICAgICAgICAgIGhpZ2hsaWdodFNw
YW4uYXBwZW5kKGNvbXBsZXRpb25UZXh0LnN1YnN0cmluZyh0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4s
IHRleHRSYW5nZS5lbmRDb2x1bW4pKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25GcmFnbWVudC5h
cHBlbmQoaGlnaGxpZ2h0U3Bhbik7CisgICAgICAgICAgICBsYXN0SW5kZXggPSB0ZXh0UmFuZ2Uu
ZW5kQ29sdW1uOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxhc3RJbmRleCA8IGNvbXBsZXRp
b25UZXh0Lmxlbmd0aCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25GcmFnbWVudC5hcHBlbmQoY29t
cGxldGlvblRleHQuc3Vic3RyaW5nKGxhc3RJbmRleCwgY29tcGxldGlvblRleHQubGVuZ3RoKSk7
CisKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25GcmFnbWVudDsKKyAgICB9CisKICAgICBfbW91
c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRp
bmdzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IDVlNDlmZjk2M2RmYzNjNTA3
NjEzZjU5MzhlMWM1M2ZjNjc1NzZmZDQuLjIxNjBjNTY4Njk1N2I2NjNhMjE3NjM2Y2NkOWYwNDc1
ODVjNzA2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwpAQCAtMzk3
LDYgKzM5Nyw3IEBAIFdJLlNldHRpbmdzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBTZXR0aW5nc1Rh
YkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVGFiQ29udGVudFZpCiAgICAgICAgICAgICBsZXQgc3R5
bGVzR3JvdXAgPSBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkR3JvdXAoV0kuVUlTdHJpbmco
IlN0eWxlczoiKSk7CiAgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5nKFdJLnNldHRp
bmdzLmV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb0VmZmVjdGl2ZSwgV0kuVUlTdHJpbmco
IlNob3cganVtcCB0byBlZmZlY3RpdmUgcHJvcGVydHkgYnV0dG9uIikpOwogICAgICAgICAgICAg
c3R5bGVzR3JvdXAuYWRkU2V0dGluZyhXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFibGVTdHls
ZXNKdW1wVG9WYXJpYWJsZURlY2xhcmF0aW9uLCBXSS5VSVN0cmluZygiU2hvdyBqdW1wIHRvIHZh
cmlhYmxlIGRlY2xhcmF0aW9uIGJ1dHRvbiIpKTsKKyAgICAgICAgICAgIHN0eWxlc0dyb3VwLmFk
ZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRnV6enlNYXRjaGluZ1N0eWxlcywgV0ku
VUlTdHJpbmcoIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9ucyIp
KTsKIAogICAgICAgICAgICAgZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZFNlcGFyYXRvcigp
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKaW5k
ZXggMjNkMWYxMDc5ZDI5NmZjYWFjOTIyODBkZmNmYmRjOTlhZGNiNDhlMC4uOGU0YTkzMWM0MWU4
NTExYjFkNWJhMzI1YmNhMzg2Y2RlOGM4Nzk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
U3R5bGVQcm9wZXJ0eS5qcwpAQCAtOTIzLDEyICs5MjMsMTIgQEAgV0kuU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICBfaGFuZGxlTmFtZUNoYW5nZSgpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9w
ZXJ0eS5uYW1lID0gdGhpcy5fbmFtZUVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpOworICAgICAg
ICB0aGlzLl9wcm9wZXJ0eS5uYW1lID0gdGhpcy5fbmFtZVRleHRGaWVsZC52YWx1ZTsKICAgICB9
CiAKICAgICBfaGFuZGxlVmFsdWVDaGFuZ2UoKQogICAgIHsKLSAgICAgICAgbGV0IHZhbHVlID0g
dGhpcy5fdmFsdWVFbGVtZW50LnRleHRDb250ZW50OworICAgICAgICBsZXQgdmFsdWUgPSB0aGlz
Ll92YWx1ZVRleHRGaWVsZC52YWx1ZTsKIAogICAgICAgICB0aGlzLl9wcm9wZXJ0eS5yYXdWYWx1
ZSA9IHZhbHVlLnRyaW0oKTsKIApAQCAtOTYyLDkgKzk2Miw5IEBAIFdJLlNwcmVhZHNoZWV0U3R5
bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB9CiAgICAgfQogCi0gICAgX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVy
KHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF9uYW1l
Q29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVBy
ZWZpeCwgZnV6enlNYXRjaGluZ30gPSB7fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5DU1NL
ZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSh0ZXh0LCB7Y2FyZXRQb3Np
dGlvbiwgYWxsb3dFbXB0eVByZWZpeH0pOworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENv
bXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwge2NhcmV0UG9zaXRpb24sIGFs
bG93RW1wdHlQcmVmaXgsIGZ1enp5TWF0Y2hpbmd9KTsKICAgICB9CiAKICAgICBfaGFuZGxlVmFs
dWVCZWZvcmVJbnB1dChldmVudCkKQEAgLTk4Niw5ICs5ODYsOSBAQCBXSS5TcHJlYWRzaGVldFN0
eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgdGhpcy5zcHJlYWRzaGVldFRleHRGaWVsZERpZENvbW1pdCh0aGlzLl92
YWx1ZVRleHRGaWVsZCwge2RpcmVjdGlvbjogImZvcndhcmQifSk7CiAgICAgfQogCi0gICAgX3Zh
bHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0
eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtj
YXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4LCBmdXp6eU1hdGNoaW5nfSA9IHt9KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJv
cGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCksIHtj
YXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI6
IHRoaXMuYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQodGhp
cyl9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFs
UHJvcGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCks
IHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlk
ZXI6IHRoaXMuYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQo
dGhpcyksIGZ1enp5TWF0Y2hpbmd9KTsKICAgICB9CiAKICAgICBfc2V0dXBKdW1wVG9TeW1ib2wo
ZWxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKaW5kZXggMWQyYWI0YTJl
OTg0NDRiNzVlYWI1MDA2MzdiZjQ0YjJmM2IwY2IyNC4uMzMyMTY3NGQ0YzdkNDUxMzMzZGUzMWQx
NzBmMWVjYmUxMDc5N2JiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMKQEAg
LTI5LDYgKzI5LDggQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVl
dFRleHRGaWVsZAogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgIHRoaXMuX3ZhbHVlID0gZWxl
bWVudC50ZXh0Q29udGVudDsKKyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gbnVsbDsKIAog
ICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgPSBjb21wbGV0aW9uUHJvdmlkZXIgfHwg
bnVsbDsKICAgICAgICAgaWYgKHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcikgewpAQCAtNjEsNyAr
NjMsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAKICAgICBnZXQgZWRpdGluZygpIHsgcmV0dXJuIHRoaXMuX2VkaXRpbmc7IH0KIAotICAg
IGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7IH0KKyAgICBn
ZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl9wZW5kaW5nVmFsdWUgPz8gdGhpcy5fZWxlbWVudC50
ZXh0Q29udGVudDsgfQogICAgIHNldCB2YWx1ZSh2YWx1ZSkgeyB0aGlzLl9lbGVtZW50LnRleHRD
b250ZW50ID0gdmFsdWU7IH0KIAogICAgIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKQpAQCAtOTQs
OSArOTYsNiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4
dEZpZWxkCiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zdWdnZXN0aW9uSGludEVsZW1lbnQu
cmVtb3ZlKCk7Ci0KLSAgICAgICAgLy8gUmVtb3ZpbmcgdGhlIHN1Z2dlc3Rpb24gaGludCBlbGVt
ZW50IG1heSBsZWF2ZSB0aGUgY29udGVudHMgb2YgYF9lbGVtZW50YCBmcmFnbWVudGVkIGludG8g
bXVsdGlwbGUgdGV4dCBub2Rlcy4KLSAgICAgICAgdGhpcy5fY29tYmluZUVkaXRvckVsZW1lbnRD
aGlsZHJlbigpOwogICAgIH0KIAogICAgIHN0YXJ0RWRpdGluZygpCkBAIC0xMzAsNiArMTI5LDgg
QEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAog
CiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdmFsdWVCZWZv
cmVFZGl0aW5nID0gIiI7CisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IG51bGw7CisgICAg
ICAgIHRoaXMuX2NvbXBsZXRpb25UZXh0ID0gIiI7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgiZWRpdGluZyIpOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNvbnRlbnRF
ZGl0YWJsZSA9IGZhbHNlOwogCkBAIC0xNDMsMTAgKzE0NCwxNSBAQCBXSS5TcHJlYWRzaGVldFRl
eHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgdGhpcy5fc3Vn
Z2VzdGlvbnNWaWV3LmhpZGUoKTsKIAotICAgICAgICBsZXQgaGFkU3VnZ2VzdGlvbkhpbnQgPSAh
IXRoaXMuc3VnZ2VzdGlvbkhpbnQ7CisgICAgICAgIGxldCBoYWRDb21wbGV0aW9uVGV4dCA9ICEh
dGhpcy5fY29tcGxldGlvblRleHQ7CisgICAgICAgIC8vIFJlc2V0dGluZyB0aGUgc3VnZ2VzdGlv
biBoaW50IHJlbW92ZXMgYW55IHN1Z2dlc3Rpb24gaGludCBlbGVtZW50IHRoYXQgaXMgYXR0YWNo
ZWQuCiAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSAiIjsKLSAgICAgICAgaWYgKGhhZFN1
Z2dlc3Rpb25IaW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRoaXMpOworICAg
ICAgICB0aGlzLl9jb21wbGV0aW9uVGV4dCA9ICIiOworCisgICAgICAgIGlmIChoYWRDb21wbGV0
aW9uVGV4dCkgeworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdGhpcy52YWx1ZVdp
dGhvdXRTdWdnZXN0aW9uKCk7CisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZT8uc3ByZWFkc2hl
ZXRUZXh0RmllbGREaWRDaGFuZ2U/Lih0aGlzKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGRl
dGFjaGVkKCkKQEAgLTE1NywyMiArMTYzLDI2IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIC8vIENvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcgZGVsZWdhdGUKIAotICAgIGNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxl
dGlvbihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCA9ICIiKQorICAgIGNvbXBsZXRpb25T
dWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIGNvbXBsZXRpb25U
ZXh0ID0gIiIpCiAgICAgewotICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gc2VsZWN0ZWRU
ZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5f
Y29tcGxldGlvblRleHQgPSBjb21wbGV0aW9uVGV4dDsKIAotICAgICAgICBpZiAodGhpcy5zdWdn
ZXN0aW9uSGludC5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1Z2dlc3Rpb25I
aW50KCk7CisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uVGV4dC5zdGFydHNXaXRoKHRoaXMu
X2NvbXBsZXRpb25QcmVmaXgpKQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHRo
aXMuX2NvbXBsZXRpb25UZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9ICIiOworCisg
ICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dCgpOwogCiAg
ICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFk
c2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlz
Ll9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsKICAgICB9CiAK
LSAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlvbihzdWdnZXN0aW9uc1Zp
ZXcsIHNlbGVjdGVkVGV4dCkKKyAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxl
dGlvbihzdWdnZXN0aW9uc1ZpZXcsIGNvbXBsZXRpb25UZXh0KQogICAgIHsKLSAgICAgICAgdGhp
cy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJl
Zml4Lmxlbmd0aCk7Ci0KLSAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNh
cmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvblRl
eHQgPSBjb21wbGV0aW9uVGV4dDsKKyAgICAgICAgdGhpcy5fdXBkYXRlUGVuZGluZ1ZhbHVlV2l0
aENvbXBsZXRpb25UZXh0KCk7CisgICAgICAgIHRoaXMuX2FwcGx5UGVuZGluZ1ZhbHVlKHttb3Zl
Q2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogICAgICAgICB0aGlzLmRpc2NhcmRDb21w
bGV0aW9uKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9k
ZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKQEAg
LTE5MCw2ICsyMDAsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdmFsdWVCZWZvcmVFZGl0aW5n
ICE9PSB0aGlzLnZhbHVlKSB7CiAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fdmFsdWVC
ZWZvcmVFZGl0aW5nOworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gbnVsbDsKIAog
ICAgICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsK
QEAgLTIxOSw3ICsyMzAsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVh
ZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSB0
aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2FwcGx5
Q29tcGxldGlvbkhpbnQoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlQZW5kaW5nVmFsdWUoKTsKICAg
ICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGxldCBjaGFuZ2VkID0g
dGhpcy5fdmFsdWVCZWZvcmVFZGl0aW5nICE9PSB0aGlzLnZhbHVlOwpAQCAtMjUyLDcgKzI2Myw3
IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQK
ICAgICAgICAgbGV0IGlzVGFiS2V5ID0gZXZlbnQua2V5ID09PSAiVGFiIjsKICAgICAgICAgaWYg
KGlzRW50ZXJLZXkgfHwgaXNUYWJLZXkpIHsKICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsKLSAg
ICAgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQoKTsKKyAgICAgICAgICAgIHRoaXMu
X2FwcGx5UGVuZGluZ1ZhbHVlKCk7CiAKICAgICAgICAgICAgIGxldCBkaXJlY3Rpb24gPSAoaXNU
YWJLZXkgJiYgZXZlbnQuc2hpZnRLZXkpID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIjsKIApAQCAt
MzM4LDEyICszNDksMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRz
aGVldFRleHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIgJiYgdGhpcy5zdWdnZXN0aW9uSGlu
dC5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93UmlnaHQiICYmIHRo
aXMuX2NvbXBsZXRpb25UZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IHNlbGVjdGlvbiA9
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIAogICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5pc0Nv
bGxhcHNlZCkgewogICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsKLSAgICAgICAgICAgICAg
ICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjog
dHJ1ZX0pOworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5UGVuZGluZ1ZhbHVlKHttb3ZlQ2Fy
ZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogCiAgICAgICAgICAgICAgICAgLy8gV2hlbiBj
b21wbGV0aW5nICJiYWNrZ3JvdW5kIiwgZG9uJ3QgaGlkZSB0aGUgY29tcGxldGlvbiBwb3BvdmVy
LgogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHNob3dpbmcgdGhlIHBvcG92ZXIgd2l0aCBw
cm9wZXJ0aWVzIHN1Y2ggYXMgImJhY2tncm91bmQtY29sb3IiIGFuZCAiYmFja2dyb3VuZC1pbWFn
ZSIuCkBAIC0zNTgsMjEgKzM2OSwxNCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNz
IFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkVzY2Fw
ZSIgJiYgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGUpIHsKICAgICAgICAgICAgIGV2ZW50
LnN0b3AoKTsKLQotICAgICAgICAgICAgbGV0IHdpbGxDaGFuZ2UgPSAhIXRoaXMuc3VnZ2VzdGlv
bkhpbnQ7CiAgICAgICAgICAgICB0aGlzLmRpc2NhcmRDb21wbGV0aW9uKCk7CiAKLSAgICAgICAg
ICAgIGlmICh3aWxsQ2hhbmdlICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxl
Z2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKLSAgICAg
ICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0
aGlzKTsKLQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoZXZlbnQua2V5ID09PSAiQXJyb3dMZWZ0IiAmJiAodGhpcy5zdWdnZXN0aW9uSGludCB8fCB0
aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkpIHsKKyAgICAgICAgaWYgKGV2ZW50LmtleSA9
PT0gIkFycm93TGVmdCIgJiYgKHRoaXMuX2NvbXBsZXRpb25UZXh0IHx8IHRoaXMuX3N1Z2dlc3Rp
b25zVmlldy52aXNpYmxlKSkgewogICAgICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigp
OwogCi0gICAgICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVn
YXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQotICAgICAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRo
aXMpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtNDA1LDYgKzQw
OSw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICAgICAgaWYgKCF0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCisg
ICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigp
LnRyaW0oKTsKICAgICAgICAgdGhpcy5fcHJldmVudERpc2NhcmRpbmdDb21wbGV0aW9uc09uS2V5
VXAgPSB0cnVlOwogICAgICAgICB0aGlzLl91cGRhdGVDb21wbGV0aW9ucygpOwogCkBAIC00MTcs
OCArNDIyLDkgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRl
eHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcikKICAgICAgICAg
ICAgIHJldHVybjsKIAorICAgICAgICBjb25zdCBmdXp6eU1hdGNoaW5nID0gV0kuc2V0dGluZ3Mu
ZXhwZXJpbWVudGFsRnV6enlNYXRjaGluZ1N0eWxlcy52YWx1ZTsKICAgICAgICAgbGV0IHZhbHVl
V2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAg
ICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcih2
YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0eVByZWZpeDogZm9yY2VDb21wbGV0aW9u
cywgY2FyZXRQb3NpdGlvbjogdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpfSk7CisgICAgICAgIGxl
dCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVX
aXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNh
cmV0UG9zaXRpb246IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKSwgZnV6enlNYXRjaGluZ30pOwog
ICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0gcHJlZml4OwogCiAgICAgICAgIGlmICgh
Y29tcGxldGlvbnMubGVuZ3RoKSB7CkBAIC00MjcsNyArNDMzLDcgQEAgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICB9CiAKICAgICAg
ICAgLy8gTm8gbmVlZCB0byBzaG93IHRoZSBjb21wbGV0aW9uIHBvcG92ZXIgd2l0aCBvbmx5IG9u
ZSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgZW50ZXJlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGNvbXBs
ZXRpb25zLmxlbmd0aCA9PT0gMSAmJiBjb21wbGV0aW9uc1swXSA9PT0gdmFsdWVXaXRob3V0U3Vn
Z2VzdGlvbikgeworICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAxICYmIHRoaXMu
X3N1Z2dlc3Rpb25zVmlldy5nZXRDb21wbGV0aW9uVGV4dChjb21wbGV0aW9uc1swXSkgPT09IHZh
bHVlV2l0aG91dFN1Z2dlc3Rpb24pIHsKICAgICAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRp
b24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQwLDggKzQ0Niw5IEBA
IFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAog
ICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudXBkYXRlKGNvbXBsZXRpb25zKTsKIAotICAg
ICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgICAvLyBObyBu
ZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9wb3ZlciB0aGF0IG1hdGNoZXMgdGhlIHN1Z2dl
c3Rpb24gaGludC4KKyAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiB0aGlz
Ll9zdWdnZXN0aW9uc1ZpZXcuZ2V0Q29tcGxldGlvblRleHQoY29tcGxldGlvbnNbMF0pLnN0YXJ0
c1dpdGgodGhpcy5fY29tcGxldGlvblByZWZpeCkpIHsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQg
dG8gc2hvdyB0aGUgY29tcGxldGlvbiBwb3BvdmVyIHdpdGggb25seSBvbmUgaXRlbSB0aGF0IGJl
Z2lucyB3aXRoIHRoZSBjb21wbGV0aW9uIHByZWZpeC4KKyAgICAgICAgICAgIC8vIFdoZW4gdXNp
bmcgZnV6enkgbWF0Y2hpbmcsIHRoZSBjb21wbGV0aW9uIHByZWZpeCBtYXkgbm90IG9jY3VyIGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN1Z2dlc3Rpb24uCiAgICAgICAgICAgICB0aGlzLl9zdWdn
ZXN0aW9uc1ZpZXcuaGlkZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuX3No
b3dTdWdnZXN0aW9uc1ZpZXcoKTsKQEAgLTUzMCwyMiArNTM3LDE2IEBAIFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgcmV0dXJuIHJh
bmdlOwogICAgIH0KIAotICAgIF9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9m
Q29tcGxldGlvbn0gPSB7fSkKKyAgICBfYXBwbHlQZW5kaW5nVmFsdWUoe21vdmVDYXJldFRvRW5k
T2ZDb21wbGV0aW9ufSA9IHt9KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9u
UHJvdmlkZXIgfHwgIXRoaXMuc3VnZ2VzdGlvbkhpbnQpCisgICAgICAgIGlmICghdGhpcy5fcGVu
ZGluZ1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2NvbWJpbmVF
ZGl0b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9zaXRpb246IG1vdmVDYXJldFRvRW5kT2ZD
b21wbGV0aW9uID8gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpICsgdGhpcy5zdWdnZXN0aW9uSGlu
dC5sZW5ndGggOiBudWxsfSk7Ci0gICAgfQotCi0gICAgX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hp
bGRyZW4oe25ld0NhcmV0UG9zaXRpb259ID0ge30pCi0gICAgewotICAgICAgICBuZXdDYXJldFBv
c2l0aW9uID8/PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCk7CisgICAgICAgIGxldCBjYXJldFBv
c2l0aW9uID0gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpOworICAgICAgICBsZXQgbmV3Q2FyZXRQ
b3NpdGlvbiA9IG1vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uID8gY2FyZXRQb3NpdGlvbiAtIHRo
aXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoICsgdGhpcy5fY29tcGxldGlvblRleHQubGVuZ3Ro
IDogbnVsbDsKIAotICAgICAgICAvLyBTZXR0aW5nIHRoZSB0ZXh0Q29udGVudCBvZiB0aGUgZWxl
bWVudCB0byBpdHMgY3VycmVudCB0ZXh0Q29udGVudCB3aWxsIHRha2UgdGhlIHRleHQgZnJvbSB0
aGUgbXVsdGlwbGUKLSAgICAgICAgLy8gcG90ZW50aWFsIGNoaWxkIG5vZGVzIChwb3RlbnRpYWxs
eSBhIHN1Z2dlc3Rpb24gaGludCBub2RlIGFuZCBzb21lIG51bWJlciBvZiBleGlzdGluZyB0ZXh0
IG5vZGVzKSBhbmQgdHVybgotICAgICAgICAvLyB0aGVtIGludG8gYSBzaW5nbGUgdGV4dCBub2Rl
IHdpdGhpbiB0aGUgZWxlbWVudC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9
IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIC8vIFNldHRpbmcgdGhlIHZhbHVl
IGNvbGxhcHNlcyB0aGUgdGV4dCBzZWxlY3Rpb24uIEdldCB0aGUgY2FyZXQgcG9zaXRpb24gYmVm
b3JlIGRvaW5nIHRoaXMuCisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9wZW5kaW5nVmFsdWU7
CiAKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7CiAgICAg
ICAgICAgICBsZXQgdGV4dENoaWxkTm9kZSA9IHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDsKQEAg
LTU1Myw2ICs1NTQsMTQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRz
aGVldFRleHRGaWVsZAogICAgICAgICB9CiAgICAgfQogCisgICAgX3VwZGF0ZVBlbmRpbmdWYWx1
ZVdpdGhDb21wbGV0aW9uVGV4dCgpCisgICAgeworICAgICAgICBsZXQgY2FyZXRQb3NpdGlvbiA9
IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKKyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uKCk7CisKKyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdmFs
dWUuc2xpY2UoMCwgY2FyZXRQb3NpdGlvbiAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3Ro
KSArIHRoaXMuX2NvbXBsZXRpb25UZXh0ICsgdmFsdWUuc2xpY2UoY2FyZXRQb3NpdGlvbiArIDEs
IHZhbHVlLmxlbmd0aCk7CisgICAgfQorCiAgICAgX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgs
ICJTdWdnZXN0aW9uIGhpbnQgc2hvdWxkIG5vdCBiZSBlbXB0eSB3aGVuIGF0dGFjaGluZyB0aGUg
c3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjUxZmZkNGEzZWZiMjU5Y2E3Y2I4
OTQxNDRmZGFkNWU0Zjg2NTA5My4uNDY2YWJkYjVmNzI4OWFiMTQ0YWRlNDQxYjExMzI5NTMwYjgx
N2NjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTE3ICBSYXp2YW4gQ2FsaW1hbiAg
PHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGZ1
enp5IG1hdGNoaW5nIGluIENTUyBjb21wbGV0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzUxCisgICAgICAgIDxyZGFyOi8vODI5NzYyOTI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3QgZm9yIGBXSS5DU1NRdWVyeUNvbnRyb2xsZXJgIHRvIGNoZWNrIGZ1enp5IG1hdGNoaW5nIGxv
Z2ljIGZvciBDU1MgY29tcGxldGlvbnMuCisgICAgICAgIEZvbGxvd3MgcHJpb3IgZXhhbXBsZSBm
cm9tIGBMYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9yZXNvdXJjZS1xdWVyeS1jb250
cm9sbGVyLmh0bWxgCisgICAgICAgIHNpbmNlIGBXSS5SZXNvdWNlUXVlcnlDb250cm9sbGVyYCBz
ZXJ2ZWQgYXMgdGhlIG1vZGVsIGNsYXNzIHRoYXQgd2FzIGFkYXB0ZWQgZm9yIENTUy4KKworICAg
ICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLXF1ZXJ5LWNv
bnRyb2xsZXIuaHRtbDogQWRkZWQuCisKIDIwMjEtMTEtMTcgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1pZnJhbWUtZWxlbWVu
dC9pZnJhbWVfc2FuZGJveF93aW5kb3dfb3Blbl9kb3dubG9hZF9ibG9ja19kb3dubG9hZHMudGVu
dGF0aXZlLmh0bWwgaXMgZnJlcXVlbnRseSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJlMzFhMjU5ZjhjY2FhYzc5YWM2MGQxYzg0ZDg3YmY1
Mjk3Y2ZiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRl
c3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitU
ZXN0aW5nIFdJLkNTU1F1ZXJ5Q29udHJvbGxlcgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTog
Q1NTUXVlcnlDb250cm9sbGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRmluZFNwZWNpYWxDaGFy
YWN0ZXJJbmRpY2VzCitQQVNTOiBSZXN1bHQgZm9yIEFiY2Qgc2hvdWxkIG1hdGNoIGV4cGVjdGVk
IHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgQUJDREUgc2hvdWxkIG1hdGNoIGV4
cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgYWJjZGVmIHNob3VsZCBt
YXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIGFiYy1kZWYg
c2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3Ig
YWJjLS0tZGVmIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBS
ZXN1bHQgZm9yIGEtYmNfZGUuZiBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2Vz
LgorUEFTUzogUmVzdWx0IGZvciBBeEJ4Q3hEeEV4Rnggc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNw
ZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgYWItY19kLmVmIHNob3VsZCBtYXRjaCBl
eHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIEF4QnhDeGR4ZXhEeHl4
RUYgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeUFnYWluc3ROb1Jlc291cmNlcworUEFTUzogU2hvdWxkIHJl
dHVybiBubyByZXN1bHRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVdoaXRlc3Bh
Y2VRdWVyeU9yRW1wdHlRdWVyeQorUEFTUzogV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJu
IG5vIHJlc3VsdHMuCitQQVNTOiBXaGl0ZXNwYWNlIHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVz
dWx0cy4KK1BBU1M6IFdoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLgor
UEFTUzogV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCitQQVNTOiBF
bXB0eSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBFeGVjdXRlUXVlcnlNYXRjaE5vbmUKK1BBU1M6IFF1ZXJ5ICJhYmNkZSIgc2hvdWxkbid0
IG1hdGNoICJhYmNkIi4KK1BBU1M6IFF1ZXJ5ICJhYmNkLSIgc2hvdWxkbid0IG1hdGNoICJhYmNk
ZSIuCitQQVNTOiBRdWVyeSAiYWJjZGUiIHNob3VsZG4ndCBtYXRjaCAiYWJjZWQiLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVF1ZXJ5TWF0Y2hlc0V4cGVjdGVkQ2hhcmFjdGVycwor
UEFTUzogUXVlcnkgImFiY2QiIHNob3VsZCBtYXRjaCAiYWJjZCIgaW4gImFiY2RlIi4KK1BBU1M6
IFF1ZXJ5ICJhLWJjZGUiIHNob3VsZCBtYXRjaCAiYSAgICAtIGJjZGUiIGluICJhYmNkZS1hYmNk
ZSIuCitQQVNTOiBRdWVyeSAiYWJjZGUiIHNob3VsZCBtYXRjaCAiQSBCIEMgRCBFIiBpbiAiQWFC
YkNjRGRFZSIuCitQQVNTOiBRdWVyeSAiYWJjZGUiIHNob3VsZCBtYXRjaCAiQSAgIEIgIEMgRGUi
IGluICJBYmNkQmNkQ2REZSIuCitQQVNTOiBRdWVyeSAiYWJjZGV4IiBzaG91bGQgbWF0Y2ggIkEg
QiBDIGQgZXgiIGluICJBeEJ4Q3hkeGV4RHh5eEVGIi4KK1BBU1M6IFF1ZXJ5ICJiYyIgc2hvdWxk
IG1hdGNoICIgYkMiIGluICJhYkNkIi4KK1BBU1M6IFF1ZXJ5ICJiYiIgc2hvdWxkIG1hdGNoICIg
YkIiIGluICJhYkJjIi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeUdlbmVy
YWxSYW5raW5ncworUEFTUzogUmVzdWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcg
cmVsZXZhbmN5LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVF1ZXJ5UG9zaXRpb25S
YW5raW5ncworUEFTUzogUmVzdWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVs
ZXZhbmN5LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogR2V0TWF0Y2hpbmdUZXh0UmFuZ2VzCitQ
QVNTOiBSZXN1bHQgVGV4dFJhbmdlcyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHJhbmdlcy4K
K1BBU1M6IFJlc3VsdCBUZXh0UmFuZ2VzIHNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcmFuZ2Vz
LgorUEFTUzogUmVzdWx0IFRleHRSYW5nZXMgc2hvdWxkIG1hdGNoIHRoZSBleHBlY3RlZCByYW5n
ZXMuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1x
dWVyeS1jb250cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9j
c3MtcXVlcnktY29udHJvbGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyZGMzNWU1MWZkZDcxYjFmN2Fi
OTg4Yzk3ZDljMmNhNzEyYmFhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsMjQ3
IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZVN5bmNTdWl0ZSgiQ1NTUXVlcnlDb250cm9sbGVyIik7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJGaW5kU3BlY2lhbENoYXJhY3RlckluZGlj
ZXMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBjb3JyZWN0bHkgZmluZCBzcGVjaWFs
IGNoYXJhY3RlcnMuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaGVy
ID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9IFsK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAiQWJjZCIs
CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJBQkNERSIs
CisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJhYmNkZWYi
LAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogImFiYy1k
ZWYiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gIF5eIiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6
ICJhYmMtLS1kZWYiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gIF5eXl4iLAor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBwYWR2YWx1ZTogImEtYmNfZGUuZiIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAi
Xl5eIF4gIF4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBwYWR2YWx1ZTogIkF4QnhDeER4RXhGeCIsCisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOiAiXiBeIF4gXiBeIF4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogImFiLWNfZC5lZiIsCisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiBeXl4gXiIsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAiQXhC
eEN4ZHhleER4eXhFRiIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiBeIF4gICAg
IF4gICBeIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAg
ICAgZnVuY3Rpb24gY3JlYXRlU3BlY2lhbE1hc2socGFkdmFsdWUsIHNwZWNpYWxJbmRpY2VzKSB7
CisgICAgICAgICAgICAgICAgbGV0IG1hc2sgPSAiICIucmVwZWF0KHBhZHZhbHVlLmxlbmd0aCk7
CisgICAgICAgICAgICAgICAgc3BlY2lhbEluZGljZXMuZm9yRWFjaCgoaW5kZXgpID0+IHsKKyAg
ICAgICAgICAgICAgICAgICAgbWFzayA9IG1hc2suc3Vic3RyKDAsIGluZGV4KSArICJeIiArIG1h
c2suc3Vic3RyKGluZGV4ICsgMSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1hc2sudHJpbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3Ig
KGxldCB7cGFkdmFsdWUsIGV4cGVjdGVkfSBvZiB0ZXN0cykgeworICAgICAgICAgICAgICAgIGxl
dCBhY3R1YWwgPSBjcmVhdGVTcGVjaWFsTWFzayhwYWR2YWx1ZSwgbWF0Y2hlci5fZmluZFNwZWNp
YWxDaGFyYWN0ZXJJbmRpY2VzKHBhZHZhbHVlKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBgUmVzdWx0IGZvciAke3BhZHZhbHVl
fSBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLmApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJFeGVjdXRlUXVlcnlBZ2FpbnN0Tm9SZXNvdXJjZXMiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlNob3VsZCByZXR1cm4gbm8gcmVzdWx0cyBpZiBubyB2YWx1ZXMgd2VyZSBhZGRlZCB0
byB0aGUgY29udHJvbGxlci4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG1h
dGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyOworICAgICAgICAgICAgbGV0IHJlc3Vs
dHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeSgiYWJjZGUiKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdCghcmVzdWx0cy5sZW5ndGgsICJTaG91bGQgcmV0dXJuIG5vIHJlc3Vs
dHMuIikKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiRXhlY3V0ZVdoaXRlc3BhY2VRdWVyeU9yRW1wdHlRdWVyeSIsCisgICAgICAg
IGRlc2NyaXB0aW9uOiAiRW1wdHkgcXVlcmllcyBhbmQgcXVlcmllcyBjb250YWluaW5nIG9ubHkg
d2hpdGVzcGFjZSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGNvbnN0IHdoaXRlc3BhY2VDaGFyYWN0ZXJzID0gIiBcdFxyXG4iOworICAg
ICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyKFsiYWJjZGUi
XSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHF1ZXJ5IG9mIHdoaXRlc3BhY2VDaGFyYWN0ZXJz
KSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeShx
dWVyeSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFyZXN1bHRz
Lmxlbmd0aCwgIldoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLiIpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0
ZVF1ZXJ5KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghcmVzdWx0
cy5sZW5ndGgsICJFbXB0eSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuIik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
IkV4ZWN1dGVRdWVyeU1hdGNoTm9uZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIG5v
dCBmaW5kIGEgbWF0Y2guIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRj
aGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9
IFsKKyAgICAgICAgICAgICAgICB7cXVlcnk6ICJhYmNkZSIsIHZhbHVlOiAiYWJjZCJ9LAorICAg
ICAgICAgICAgICAgIHtxdWVyeTogImFiY2QtIiwgdmFsdWU6ICJhYmNkZSJ9LAorICAgICAgICAg
ICAgICAgIHtxdWVyeTogImFiY2RlIiwgdmFsdWU6ICJhYmNlZCJ9LAorICAgICAgICAgICAgXTsK
KworICAgICAgICAgICAgZm9yIChsZXQge3F1ZXJ5LCB2YWx1ZX0gb2YgdGVzdHMpIHsKKyAgICAg
ICAgICAgICAgICBtYXRjaGVyLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgbWF0Y2hlci5hZGRW
YWx1ZXMoW3ZhbHVlXSk7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4
ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RU
aGF0KCFyZXN1bHRzLmxlbmd0aCwgYFF1ZXJ5ICIke3F1ZXJ5fSIgc2hvdWxkbid0IG1hdGNoICIk
e3ZhbHVlfSIuYCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkV4ZWN1dGVRdWVyeU1hdGNoZXNFeHBl
Y3RlZENoYXJhY3RlcnMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBtYXRjaCB0aGUg
ZXhwZWN0ZWQgcXVlcnkgY2hhcmFjdGVycy4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAg
ICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyOworICAgICAgICAgICAg
bGV0IHRlc3RzID0gWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVl
cnk6ICJhYmNkIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICJhYmNkZSIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiYWJjZCIKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICJhLWJjZGUiLAorICAgICAg
ICAgICAgICAgICAgICB2YWx1ZTogImFiY2RlLWFiY2RlIiwKKyAgICAgICAgICAgICAgICAgICAg
ZXhwZWN0ZWQ6ICJhICAgIC0gYmNkZSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICJhYmNkZSIsCisgICAgICAgICAgICAg
ICAgICAgIHZhbHVlOiAiQWFCYkNjRGRFZSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
OiAiQSBCIEMgRCBFIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBxdWVyeTogImFiY2RlIiwKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWU6ICJBYmNkQmNkQ2REZSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiQSAgIEIg
IEMgRGUiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHF1ZXJ5OiAiYWJjZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICJB
eEJ4Q3hkeGV4RHh5eEVGIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJBIEIgQyBk
IGV4IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBxdWVyeTogImJjIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICJhYkNkIiwK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICIgYkMiCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiAiYmIiLAorICAg
ICAgICAgICAgICAgICAgICB2YWx1ZTogImFiQmMiLAorICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZDogIiBiQiIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdOworCisgICAgICAg
ICAgICBmdW5jdGlvbiBjcmVhdGVNYXRjaGVzTWFzayhxdWVyeVJlc3VsdCkgeworICAgICAgICAg
ICAgICAgIGxldCB2YWx1ZSA9IHF1ZXJ5UmVzdWx0LnZhbHVlOworICAgICAgICAgICAgICAgIGxl
dCBsYXN0SW5kZXggPSAtMTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CisKKyAg
ICAgICAgICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBxdWVyeVJlc3VsdC5tYXRjaGVzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCBnYXAgPSAiICIucmVwZWF0KG1hdGNoLmluZGV4IC0gbGFz
dEluZGV4IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBnYXA7CisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCArPSB2YWx1ZVttYXRjaC5pbmRleF07CisgICAgICAgICAgICAg
ICAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4OworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGZvciAobGV0IHtxdWVyeSwgdmFsdWUsIGV4cGVjdGVkfSBvZiB0ZXN0cykgeworICAgICAgICAg
ICAgICAgIG1hdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLmFkZFZhbHVl
cyhbdmFsdWVdKTsKKworICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVj
dXRlUXVlcnkocXVlcnkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHJl
c3VsdHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIHJldHVybiBleGFjdGx5IG9uZSBtYXRjaC4iKTsK
KyAgICAgICAgICAgICAgICBsZXQgYWN0dWFsID0gcmVzdWx0cy5sZW5ndGggPyBjcmVhdGVNYXRj
aGVzTWFzayhyZXN1bHRzWzBdKSA6IG51bGw7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBgUXVlcnkgIiR7cXVlcnl9IiBzaG91bGQg
bWF0Y2ggIiR7ZXhwZWN0ZWR9IiBpbiAiJHt2YWx1ZX0iLmApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJFeGVjdXRlUXVlcnlHZW5lcmFsUmFua2luZ3MiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgcXVlcnkgcmVzdWx0cyBhcmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmNl
LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICAvLyBWYWx1ZXMgaW4gb3JkZXIgb2Yg
ZGVzY2VuZGluZyByYW5rLgorICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFsiQWJDZEUiLCAiQWJj
RGUiLCAiYWJjZGUiLCAiQXhiY0RlIiwgIkF4QnhDeER4RXgiLCAiQXhieGNEZSIsICJ4YWJjZGUi
XTsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcih2
YWx1ZXMpOworICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gImFiY2RlIjsKKyAgICAgICAgICAgIGxl
dCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVlcnkpOworICAgICAgICAgICAgbGV0
IHJlc3VsdFZhbHVlcyA9IHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHJlc3VsdC52YWx1ZSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChyZXN1bHRWYWx1ZXMs
IHZhbHVlcywgIlJlc3VsdHMgc2hvdWxkIGJlIHJhbmtlZCBieSBkZXNjZW5kaW5nIHJlbGV2YW5j
eS4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiRXhlY3V0ZVF1ZXJ5UG9zaXRpb25SYW5raW5ncyIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCBtYXRjaGVzIGNsb3NlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGZpbGVuYW1lIHJhbmsgaGlnaGVyLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICAv
LyBWYWx1ZXMgaW4gb3JkZXIgb2YgZGVzY2VuZGluZyByYW5rLgorICAgICAgICAgICAgbGV0IHZh
bHVlcyA9IFsiYmNkIiwgIkJ4Q3hEeCIsICJBeEJ4Q3hEeCIsICJhYmNkIiwgInh4eEF4eHhCeHh4
Q3h4eEQiXTsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJv
bGxlcih2YWx1ZXMpOworICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gImJjZCI7CisgICAgICAgICAg
ICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgICAg
IGxldCByZXN1bHRWYWx1ZXMgPSByZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQudmFsdWUp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RTaGFsbG93RXF1YWwocmVzdWx0VmFs
dWVzLCB2YWx1ZXMsICJSZXN1bHRzIHNob3VsZCBiZSByYW5rZWQgYnkgZGVzY2VuZGluZyByZWxl
dmFuY3kuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkdldE1hdGNoaW5nVGV4dFJhbmdlcyIsCisgICAgICAgIGRlc2NyaXB0
aW9uOiAiQ2hlY2sgdGhhdCBxdWVyeSByZXN1bHQgVGV4dFJhbmdlcyBhcmUgY29ycmVjdC4iLAor
ICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgZnVuY3Rpb24gdGV4dFJhbmdlKHN0YXJ0LCBl
bmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlRleHRSYW5nZSgwLCBzdGFydCwg
MCwgZW5kKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcg
V0kuQ1NTUXVlcnlDb250cm9sbGVyOworICAgICAgICAgICAgbGV0IHRlc3RzID0gWworICAgICAg
ICAgICAgICAgIHt2YWx1ZTogImEiLCByYW5nZXM6IFtdfSwKKyAgICAgICAgICAgICAgICB7dmFs
dWU6ICJhYmNkZSIsIHJhbmdlczogW3RleHRSYW5nZSgwLCA1KV19LAorICAgICAgICAgICAgICAg
IHt2YWx1ZTogIkF4QnhDeERlIiwgcmFuZ2VzOiBbdGV4dFJhbmdlKDAsIDEpLCB0ZXh0UmFuZ2Uo
MiwgMyksIHRleHRSYW5nZSg0LCA1KSwgdGV4dFJhbmdlKDYsIDgpXX0sCisgICAgICAgICAgICBd
OworCisgICAgICAgICAgICBmb3IgKGxldCB7dmFsdWUsIHJhbmdlc30gb2YgdGVzdHMpIHsKKyAg
ICAgICAgICAgICAgICBtYXRjaGVyLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgbWF0Y2hlci5h
ZGRWYWx1ZXMoW3ZhbHVlXSk7CisKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNo
ZXIuZXhlY3V0ZVF1ZXJ5KCJhYmNkZSIpOworICAgICAgICAgICAgICAgIGxldCByZXN1bHRUZXh0
UmFuZ2VzID0gcmVzdWx0cy5sZW5ndGggPyByZXN1bHRzWzBdLm1hdGNoaW5nVGV4dFJhbmdlcyA6
IFtdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoSlNPTi5zdHJp
bmdpZnkocmVzdWx0VGV4dFJhbmdlcyksIEpTT04uc3RyaW5naWZ5KHJhbmdlcyksICJSZXN1bHQg
VGV4dFJhbmdlcyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHJhbmdlcy4iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4K
KyAgICA8cD5UZXN0aW5nIFdJLkNTU1F1ZXJ5Q29udHJvbGxlcjwvcD4KKzwvYm9keT4KKzwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>444692</attachid>
            <date>2021-11-18 09:28:56 -0800</date>
            <delta_ts>2021-11-23 06:20:30 -0800</delta_ts>
            <desc>Patch 1.1</desc>
            <filename>bug-230351-20211118182855.patch</filename>
            <type>text/plain</type>
            <size>55330</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlNzFlZTFmNDRkYjIzYTc2ZDYwY2FhYmY2N2Ji
NDA2MDFiYjQwZTYuLmM2YjhmNjViYjY0MDFmNjNmNTJjNmYxMjc1MTQyMjM1ZjdhMzkwNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAyMS0xMS0xNyAgUmF6
dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU3VwcG9ydCBmdXp6eSBtYXRjaGluZyBpbiBDU1MgY29tcGxldGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDM1MQorICAgICAgICA8cmRh
cjovLzgyOTc2MjkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBmdXp6eSBtYXRjaGluZyBmb3IgaWRlbnRpZnlpbmcgQ1NTIGNvbXBsZXRpb25z
IGluIHRoZSBTdHlsZXMgZGV0YWlscyBzaWRlYmFyLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJl
ZSBtYWluIHBhcnRzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEludHJvZHVjZSBgV0kuQ1NT
UXVlcnlDb250cm9sbGVyYCB3aXRoIGxvZ2ljIHRvIGRvIGZ1enp5IG1hdGNoaW5nIG9uIHByb3Zp
ZGVkIHZhbHVlcy4KKyAgICAgICAgMi4gQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3YCB0byBzdXBwb3J0IGJvdGggcGxhaW4gc3RyaW5ncyBhbmQgYFdJLlF1ZXJ5UmVzdWx0YHMu
CisgICAgICAgIDMuIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGRgIHNvIGl0cyBgdmFs
dWVgIGRvZXNuJ3QgYWx3YXlzIHJldHVybiBpdHMgYGVsZW1lbnQudGV4dENvbnRlbnRgLgorCisg
ICAgICAgIFdpdGggZnV6enkgbWF0Y2hpbmcsIGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFudGVl
ZCBhbnltb3JlIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorICAgICAgICBUaGVyZWZv
cmUsIGl0J3Mgbm8gbG9uZ2VyIHZpYWJsZSB0byByZWx5IG9uIGBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC52YWx1ZWAgYmVpbmcgYSBjb25jYXRlbmF0aW9uIG9mIGB0ZXh0Q29udGVudGAgb2Ygbm9k
ZXMgd2l0aGluLiAKKworICAgICAgICBUbyBhZHJlc3MgdGhpcywgdGhlcmUncyBub3cgYFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHdoaWNoIGluY2x1ZGVzIHRoZSBwcm9z
cGVjdGl2ZQorICAgICAgICBjb21wbGV0aW9uIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcXVl
cnkgaXMgYSBjb21wbGV0aW9uIHByZWZpeCBvciBhdCBtYXRjaCBhdCBhbnkgb3RoZXIgcG9zaXRp
b24uCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIEFk
ZCBhIGZsYWcgdG8gZW5hYmxlIHRoZSBmdXp6eSBtYXRjaGluZyBmZWF0dXJlLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanM6IEFkZGVk
LgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5
Q29udHJvbGxlci5wcm90b3R5cGUuYWRkVmFsdWVzKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29u
dHJvbGxlci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKToKKyAgICAgICAgQWRkIGEg
c3BlY2xpYWxpemVkIGNsYXNzIHRvIGhvbGQgdGhlIGxvZ2ljIGZvciBmdXp6eSBtYXRjaGluZyBv
ZiBDU1MgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorICAgICAgICBJdCBjbG9uZXMgbG9naWMgZnJv
bSBgV0kuUmVzb3VjZVF1ZXJ5Q29udHJvbGxlcmAgd2l0aCBhZGp1c3RtZW50cyBzcGVjaWZpYyB0
byBDU1M7IG1vcmUgdG8gZm9sbG93IGFzIHRoZSBmZWF0dXJlIGdldHMgcmVmaW5lZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgor
ICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmFkZFZhbHVlcyk6CisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgU3Vw
cG9ydCBib3RoIHRoZSBjdXJyZW50IHByZWZpeCBtYXRjaGluZyBhcHByb2FjaCBhcyB3ZWxsIGFz
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5
d29yZENvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZv
clBhcnRpYWxQcm9wZXJ0eU5hbWUpOgorICAgICAgICBPcHQgaW50byBmdXp6eSBtYXRjaGluZyB3
aGVuIGdldHRpbmcgY29tcGxldGlvbnMgZm9yIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMuIAor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQuanM6CisgICAgICAg
IChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNoZXMpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzczoKKyAgICAgICAgKC5jb21wbGV0aW9uLXN1Z2dlc3Rp
b25zLWNvbnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdodGVkKToKKyAgICAgICAgSGlnaGxpZ2h0
IHNwZWNpZmljIGNoYXJhY3RlcnMgdGhhdCBtYXRjaGVkIGluIHJlc3VsdCBpZGVudGlmaWVkIGJ5
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LmpzOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5wcm90b3R5cGUuc2VsZWN0TmV4dCk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LnByb3RvdHlwZS5zZWxlY3RQcmV2aW91cyk6CisgICAgICAgIChXSS5Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuZ2V0Q29tcGxldGlvblRleHQpOgorICAgICAg
ICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuX2NyZWF0ZUhpZ2hsaWdo
dGVkQ29tcGxldGlvbkZyYWdtZW50KToKKyAgICAgICAgQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3YCB0byBob2xkIGEgbGlzdCBvZiBjb21wbGV0aW9ucywgCisgICAgICAgIGVp
dGhlciBzdHJpbmdzIG9yIGBXSS5RdWVyeVJlc3VsdGAsIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJp
YXRlIGNvbXBsZXRpb24gdGV4dAorICAgICAgICBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgYHRl
eHRDb250ZW50YCBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudC4KKworICAgICAgICBgV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlld2AgaXMgdXNlZCBlbHNld2hlcmUgaW4gdGhlIENvbnNvbGUgYW5k
IFNvdXJjZXMgcGFuZWwKKyAgICAgICAgc28gYXZvaWQgaW1wYWN0aW5nIHRob3NlIGNvbnN1bWVy
cyB1bnRpbCB0aGV5IG9wdCBpbiB0byBmdXp6eSBtYXRjaGluZyBhcyB3ZWxsLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9oYW5kbGVOYW1l
Q2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUu
X2hhbmRsZVZhbHVlQ2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eS5wcm90b3R5cGUuX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92
aWRlcik6CisgICAgICAgIE9uIGNoYW5nZSwgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgYFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkYCBpbnN0ZWFkIG9mIAorICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50J3MgYHRleHRDb250ZW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRUZXh0RmllbGQuanM6CisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0
VGV4dEZpZWxkLl9jb21wbGV0aW9uUHJlZml4YCB0byBob2xkIHRoZSBxdWVyeSBhIHVzZXIgaXMg
dHlwaW5nLgorCisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9jb21w
bGV0aW9uVGV4dGAgdG8gaG9sZCB0aGUgY29tcGxldGlvbiB0ZXh0IG9mIHRoZSBzZWxlY3RlZCBi
dXQKKyAgICAgICAgbm90IHlldCBhcHBsaWVkIGNvbXBsZXRpb24uIFRoaXMgcmVwbGFjZXMgdGhl
IHByZXZpb3VzIGJlaGF2aW9yIG9mIGNvbmNhdGVuYXRpbmcgdGhlIHF1ZXJ5IGFuZCBgc3VnZ2Vz
dGlvbkhpbnRgCisgICAgICAgIGJlY2F1c2Ugd2l0aCBmdXp6eSBtYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBpc24ndCBndWFyYW50ZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorCisg
ICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHRv
IGhvbGQgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgc2VsZWN0ZWQKKyAgICAgICAgY29tcGxl
dGlvbi4gVGhpcyByZXBsYWNlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3Igb2YgYFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuYC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGRgIHNvIGl0cyB2YWx1ZSBpcyBkaXZvcmNlZCBmcm9tIGl0cyBlbGVtZW50J3MgYHRl
eHRDb250ZW50YC4KKyAgICAgICAgV2hpbGUgZWRpdGluZywgYFdJLlNwcmVhZHNoZWV0VGV4dEZp
ZWxkLnZhbHVlYCByZXR1cm5zIHRoZSBwZW5kaW5nIHZhbHVlIHNvIHRoYXQKKyAgICAgICAgYSB2
YWxpZCBDU1Mgc3RyaW5nIGdldHMgd3JpdHRlbiB0byB0aGUgc3R5bGVzaGVldC4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBzdWdnZXN0aW9uSGludCk6
CisgICAgICAgIElmIHRoZSBxdWVyeSBpcyBhIHByZWZpeCBmb3IgdGhlIHNlbGVjdGVkIGNvbXBs
ZXRpb24sIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIGFwcGVuZGluZworICAgICAgICB0
aGUgc3VnZ2VzdGlvbiBoaW50IHN1YnN0cmluZy4gT3RoZXJ3aXNlLCBoaWRlIHRoZSBzdWdnZXN0
aW9uIGhpbnQgZWxlbWVudCBiZWNhdXNlIHRoZQorICAgICAgICBjb25jYXRlbmF0aW9uIGRvZXNu
J3QgbWFrZSBzZW5zZS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90
eXBlLnN0b3BFZGl0aW5nKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3Rv
dHlwZS5kaXNjYXJkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNDbGlja2VkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuX2Rpc2NhcmRDaGFuZ2UpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQucHJvdG90eXBlLl9oYW5kbGVCbHVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXSS5TcHJlYWRzaGVl
dFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25Gb3JTdWdnZXN0aW9uVmlldyk6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUlucHV0KToK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29tcGxl
dGlvbnMpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBs
eVBlbmRpbmdWYWx1ZSk6CisgICAgICAgIEFmdGVyIGFwcGx5aW5nIGEgY29tcGxldGlvbiwgdGhl
IHZhbHVlIGlzIHJlcGxhY2VkIHdpdGggYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5n
VmFsdWVgLgorICAgICAgICBBdCB0aGlzIHBvaW50LCBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
dmFsdWVgIGFuZCB0aGUgYHRleHRDb250ZW50YCBvZiB0aGUgZWxlbWVudCBjb252ZXJnZS4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl91cGRhdGVQZW5kaW5n
VmFsdWVXaXRoQ29tcGxldGlvblRleHQpOgorICAgICAgICBXaGVuIHByZXNlbnRlZCB3aXRoIGEg
Y29tcGxldGlvbiwgdGhlIHF1ZXJ5IGdldHMgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgZnVsbCBjb21w
bGV0aW9uIHRleHQgaW4gCisgICAgICAgIGBXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5fcGVuZGlu
Z1ZhbHVlYCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHF1ZXJ5IGlzIGEgcHJlZml4IG9yIG5v
dC4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNv
bXBsZXRpb25IaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5fY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAg
ICAgIAorCiAyMDIxLTExLTE2ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgYGRvbnRDcmVhdGVJZk1p
c3NpbmdgIGFyZ3VtZW50IGZyb20gQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUucHJvcGVy
dHlGb3JOYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xv
Y2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBlYWM2MWRmMmE5
NGYzMDZkZTAxNGEyMWNjYjQ3Y2UzYmZjMWNmOThjLi4wZDBjMjEyMDY0NjNiNGM1NjYyM2JjZDJl
N2I0MTUyMzU1Yjc5YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxp
emF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTE2
MDYsNiArMTYwNiw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlVzYWdlOiAlcyJdID0gIlVzYWdlOiAl
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIl0gPSAiVXNlIERl
ZmF1bHQgQXBwZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgTW9jayBDYXB0dXJlIERl
dmljZXMiXSA9ICJVc2UgTW9jayBDYXB0dXJlIERldmljZXMiOwogbG9jYWxpemVkU3RyaW5nc1si
VXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIl0gPSAiVXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIjsK
K2xvY2FsaXplZFN0cmluZ3NbIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdn
ZXN0aW9ucyJdID0gIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9u
cyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGlu
ZyByZXNvdXJjZXMiXSA9ICJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNv
dXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQiOwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIgQWdlbnQg
U3R5bGUgU2hlZXQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGQyZWIyNWI3ZWNlMWE4NDE4MTkyZDE2YjJhMmJlNDZi
ZTJlNjNhMzMuLmQwMzczOWUwYzAzNjU2MWUyNzYyNjE5ZWJmNTEzNTI5NjBkM2Q4YjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcu
anMKQEAgLTIzMSw2ICsyMzEsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBleHBlcmltZW50YWxF
bmFibGVTdHlsZXNKdW1wVG9WYXJpYWJsZURlY2xhcmF0aW9uOiBuZXcgV0kuU2V0dGluZygiZXhw
ZXJpbWVudGFsLXN0eWxlcy1qdW1wLXRvLXZhcmlhYmxlLWRlY2xhcmF0aW9uIiwgZmFsc2UpLAog
ICAgIGV4cGVyaW1lbnRhbENvbGxhcHNlQmxhY2tib3hlZENhbGxGcmFtZXM6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtY29sbGFwc2UtYmxhY2tib3hlZC1jYWxsLWZyYW1lcyIsIGZhbHNl
KSwKICAgICBleHBlcmltZW50YWxBbGxvd0luc3BlY3RpbmdJbnNwZWN0b3I6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtYWxsb3ctaW5zcGVjdGluZy1pbnNwZWN0b3IiLCBmYWxzZSksCisg
ICAgZXhwZXJpbWVudGFsQ1NTQ29tcGxldGlvbkZ1enp5TWF0Y2hpbmc6IG5ldyBXSS5TZXR0aW5n
KCJleHBlcmltZW50YWwtY3NzLWNvbXBsZXRpb24tZnV6enktbWF0Y2hpbmciLCBmYWxzZSksCiAK
ICAgICAvLyBQcm90b2NvbAogICAgIHByb3RvY29sTG9nQXNUZXh0OiBuZXcgV0kuU2V0dGluZygi
cHJvdG9jb2wtbG9nLWFzLXRleHQiLCBmYWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDJkOTE5NjA1ZmYy
M2IzMjBkOWRiNDk3MjdiZTIxMTQ4NzFmNmZjN2UuLmEzMzAwNGI1N2UyMTc2YTg0ZjhjNjAxZDM3
YzE1ZDJhZmE5OGQ5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03NzMsNyArNzczLDcgQEAgT2JqZWN0LmRl
ZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJpc0xvd2VyQ2FzZSIsCiB7CiAgICAgdmFs
dWUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzKSA9PT0gdGhpcy50b0xvd2Vy
Q2FzZSgpOworICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgW2Etel17JHt0aGlzLmxlbmd0aH19
YCkudGVzdCh0aGlzKTsKICAgICB9CiB9KTsKIApAQCAtNzgxLDcgKzc4MSw3IEBAIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiaXNVcHBlckNhc2UiLAogewogICAgIHZh
bHVlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmcodGhpcykgPT09IHRoaXMudG9VcHBl
ckNhc2UoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFtBLVpdeyR7dGhpcy5sZW5ndGh9
fWApLnRlc3QodGhpcyk7CiAgICAgfQogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1F1ZXJ5
Q29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjI3MmZjNzU3OTQzNjIyNzBiMWY5MzkwOWE0M2Ez
MTc0NzgxY2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEsMTE1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworV0kuQ1NTUXVlcnlDb250cm9sbGVyID0gY2xhc3MgQ1NTUXVlcnlD
b250cm9sbGVyIGV4dGVuZHMgV0kuUXVlcnlDb250cm9sbGVyCit7CisgICAgY29uc3RydWN0b3Io
dmFsdWVzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNBcnJheSh2YWx1
ZXMpLCB2YWx1ZXMpOworCisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdmFsdWVz
ID0gdmFsdWVzIHx8IFtdOworICAgICAgICB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5k
aWNlc0ZvclZhbHVlTWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAg
IGFkZFZhbHVlcyh2YWx1ZXMpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChBcnJheS5p
c0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisgICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbCh2YWx1ZXMp
OworICAgIH0KKworICAgIHJlc2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVlcyA9IFtd
OworICAgICAgICB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVlTWFw
LmNsZWFyKCk7CisgICAgfQorCisgICAgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAg
ICAgaWYgKCFxdWVyeSB8fCAhdGhpcy5fdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
biBbXTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKCk7CisKKyAgICAgICAg
bGV0IHJlc3VsdHMgPSBbXTsKKworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB0aGlzLl92YWx1
ZXMpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkU3BlY2lhbENoYXJhY3RlckluZGlj
ZXNGb3JWYWx1ZU1hcC5oYXModmFsdWUpKQorICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlZFNw
ZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAuc2V0KHZhbHVlLCB0aGlzLl9maW5kU3Bl
Y2lhbENoYXJhY3RlckluZGljZXModmFsdWUpKTsKKworICAgICAgICAgICAgbGV0IG1hdGNoZXMg
PSB0aGlzLmZpbmRRdWVyeU1hdGNoZXMocXVlcnksIHZhbHVlLnRvTG93ZXJDYXNlKCksIHRoaXMu
X2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAuZ2V0KHZhbHVlKSk7Cisg
ICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5w
dXNoKG5ldyBXSS5RdWVyeVJlc3VsdCh2YWx1ZSwgbWF0Y2hlcykpOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdHMuc29ydCgoYSwgYikgPT4geworICAgICAgICAgICAgaWYgKGEu
cmFuayA9PT0gYi5yYW5rKQorICAgICAgICAgICAgICAgIHJldHVybiBhLnZhbHVlLmV4dGVuZGVk
TG9jYWxlQ29tcGFyZShiLnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBiLnJhbmsgLSBhLnJh
bms7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9maW5kU3Bl
Y2lhbENoYXJhY3RlckluZGljZXMoc3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFzdHJpbmcu
bGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIGNvbnN0IHNlcGFyYXRv
cnMgPSAiLSI7CisKKyAgICAgICAgLy8gU3BlY2lhbCBjaGFyYWN0ZXJzIGluY2x1ZGUgdGhlIGZv
bGxvd2luZzoKKyAgICAgICAgLy8gMS4gVGhlIGZpcnN0IGNoYXJhY3Rlci4KKyAgICAgICAgLy8g
Mi4gVXBwZXJjYXNlIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3cgYSBsb3dlcmNhc2UgbGV0dGVyLgor
ICAgICAgICAvLyAzLiBTZXBhcmF0b3JzIGFuZCB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2lu
ZyB0aGUgc2VwYXJhdG9yLgorICAgICAgICBsZXQgaW5kaWNlcyA9IFswXTsKKworICAgICAgICBm
b3IgKGxldCBpID0gMTsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0
IGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKyAgICAgICAgICAgIGxldCBpc1NwZWNpYWwgPSBmYWxz
ZTsKKworICAgICAgICAgICAgaWYgKHNlcGFyYXRvcnMuaW5jbHVkZXMoY2hhcmFjdGVyKSkKKyAg
ICAgICAgICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbGV0IHByZXZpb3VzQ2hhcmFjdGVyID0gc3RyaW5nW2kgLSAxXTsKKyAgICAg
ICAgICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmNsdWRlcyhwcmV2aW91c0NoYXJhY3RlcikpCisg
ICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoY2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkgJiYgcHJldmlvdXNDaGFyYWN0ZXIuaXNMb3dl
ckNhc2UoKSkKKyAgICAgICAgICAgICAgICAgICAgaXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKGlzU3BlY2lhbCkKKyAgICAgICAgICAgICAgICBpbmRp
Y2VzLnB1c2goaSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaW5kaWNlczsKKyAgICB9
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFp
bi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmlu
ZGV4IDY2NGVhODFhNmQ5MjMxNDU3NTU0NzNiNjZjODRjNGM1NTJhMzgxY2QuLjU5MThiNjZlZmM1
NjFlM2U4OTE0ZTA3NDY4YTkxZmI4MmI0OTk4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTkyNSw2ICs5MjUsNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9NZW1vcnlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9PdmVybGF5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwppbmRleCBjNDY4MTUwZjczMWRj
OWVhMDkxY2FjMzhiMDA1YzZlZTE4ZjZmMTNlLi4wZDljOTRlM2U0ZTE5ZTYwNTM4OWEzNzM3ODU1
NWM0ZWYzYjFiZGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCkBAIC01OCw2ICs1OCw3IEBA
IFdJLkNTU0NvbXBsZXRpb25zID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKICAgICAgICAgdGhpcy5f
dmFsdWVzLnNvcnQoKTsKIAogICAgICAgICB0aGlzLl9hY2NlcHRFbXB0eVByZWZpeCA9IGFjY2Vw
dEVtcHR5UHJlZml4OworICAgICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIgPSBudWxsOwogICAg
IH0KIAogICAgIC8vIFN0YXRpYwpAQCAtMjUzLDYgKzI1NCwxNSBAQCBXSS5DU1NDb21wbGV0aW9u
cyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAKICAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2hBbGwo
dmFsdWVzKTsKICAgICAgICAgdGhpcy5fdmFsdWVzLnNvcnQoKTsKKworICAgICAgICB0aGlzLl9x
dWVyeUNvbnRyb2xsZXI/LmFkZFZhbHVlcyh2YWx1ZXMpOworICAgIH0KKworICAgIGV4ZWN1dGVR
dWVyeShxdWVyeSkKKyAgICB7CisgICAgICAgIHRoaXMuX3F1ZXJ5Q29udHJvbGxlciB8fD0gbmV3
IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcih0aGlzLl92YWx1ZXMpOworCisgICAgICAgIHJldHVybiB0
aGlzLl9xdWVyeUNvbnRyb2xsZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTsKICAgICB9CiAKICAgICBz
dGFydHNXaXRoKHByZWZpeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzCmlu
ZGV4IDIxNDk1NTBmODM2YTRjZDBkZmQ1M2E4YjBjMmIwNjhmODZiYjc3MDQuLmYwYmMyNzVkOWZk
ZTgxMTk3ZjBmNzg1ZDMyMGUyYmQzYmFjOTg5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRD
b21wbGV0aW9ucy5qcwpAQCAtMzEsNyArMzEsNyBAQAogCiBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMgPSB7fTsKIAotV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5h
bWUgPSBmdW5jdGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0gPSB7
fSkKK1dJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lID0gZnVu
Y3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXgsIHVzZUZ1enp5TWF0
Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlvbiA/Pz0gdGV4dC5sZW5ndGg7CiAgICAg
YWxsb3dFbXB0eVByZWZpeCA/Pz0gZmFsc2U7CkBAIC00MiwxMCArNDIsMTcgQEAgV0kuQ1NTS2V5
d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUgPSBmdW5jdGlvbih0ZXh0LCB7
Y2FyZXRQb3NpdGlvbiwKIAogICAgIGlmICghdGV4dC5sZW5ndGggJiYgYWxsb3dFbXB0eVByZWZp
eCkKICAgICAgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zOiBXSS5DU1NDb21w
bGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMudmFsdWVzfTsKLSAgICByZXR1cm4ge3ByZWZpeDog
dGV4dCwgY29tcGxldGlvbnM6V0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnN0
YXJ0c1dpdGgodGV4dCl9OworCisgICAgbGV0IGNvbXBsZXRpb25zOworICAgIGlmICh1c2VGdXp6
eU1hdGNoaW5nKQorICAgICAgICBjb21wbGV0aW9ucyA9IFdJLkNTU0NvbXBsZXRpb25zLmNzc05h
bWVDb21wbGV0aW9ucy5leGVjdXRlUXVlcnkodGV4dCk7CisgICAgZWxzZQorICAgICAgICBjb21w
bGV0aW9ucyA9IFdJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy5zdGFydHNXaXRo
KHRleHQpOworCisgICAgcmV0dXJuIHtwcmVmaXg6IHRleHQsIGNvbXBsZXRpb25zfTsKIH07CiAK
LVdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSA9IGZ1bmN0
aW9uKHRleHQsIHByb3BlcnR5TmFtZSwge2NhcmV0UG9zaXRpb24sIGFkZGl0aW9uYWxGdW5jdGlv
blZhbHVlQ29tcGxldGlvbnNQcm92aWRlcn0gPSB7fSkKK1dJLkNTU0tleXdvcmRDb21wbGV0aW9u
cy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKHRleHQsIHByb3BlcnR5TmFtZSwg
e2NhcmV0UG9zaXRpb24sIGFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRl
ciwgdXNlRnV6enlNYXRjaGluZ30gPSB7fSkKIHsKICAgICBjYXJldFBvc2l0aW9uID8/PSB0ZXh0
Lmxlbmd0aDsKIApAQCAtODYsMTAgKzkzLDE0IEBAIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSA9IGZ1bmN0aW9uKHRleHQsIHByb3BlcnR5TmFtZSwKICAg
ICBpZiAoKGNhcmV0SXNJbk1pZGRsZU9mVG9rZW4gJiYgY3VycmVudFRva2VuVmFsdWUubGVuZ3Ro
KSB8fCAoIWNhcmV0SXNJbk1pZGRsZU9mVG9rZW4gJiYgdG9rZW5BZnRlckNhcmV0ICYmIC9bYS16
QS1aMC05LV0vLnRlc3QodG9rZW5BZnRlckNhcmV0LnZhbHVlWzBdKSkpCiAgICAgICAgIHJldHVy
biB7cHJlZml4OiAiIiwgY29tcGxldGlvbnM6IFtdfTsKIAotICAgIC8vIElmIHRoZSBjdXJyZW50
IHRva2VuIHZhbHVlIGlzIGEgY29tbWEgb3Igb3BlbmluZyBwYXJlbnRoZXNpcywgdHJlYXQgaXQg
YXMgaWYgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIG5ldyB0b2tlbi4KKyAgICAvLyBJZiB0aGUg
Y3VycmVudCB0b2tlbiB2YWx1ZSBpcyBhIGNvbW1hIG9yIG9wZW4gcGFyZW50aGVzaXMsIHRyZWF0
IGl0IGFzIGlmIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgYSBuZXcgdG9rZW4uCiAgICAgaWYgKGN1
cnJlbnRUb2tlblZhbHVlID09PSAiKCIgfHwgY3VycmVudFRva2VuVmFsdWUgPT09ICIsIikKICAg
ICAgICAgY3VycmVudFRva2VuVmFsdWUgPSAiIjsKIAorICAgIC8vIEl0J3Mgbm90IHZhbGlkIENT
UyB0byBhcHBlbmQgY29tcGxldGlvbnMgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjbG9zaW5nIHBhcmVu
dGhlc2lzLgorICAgIGlmIChjdXJyZW50VG9rZW5WYWx1ZSA9PT0gIikiKQorICAgICAgICByZXR1
cm4ge3ByZWZpeDogIiIsIGNvbXBsZXRpb25zOiBbXX07CisKICAgICBsZXQgZnVuY3Rpb25OYW1l
ID0gbnVsbDsKICAgICBsZXQgcHJlY2VlZGluZ0Z1bmN0aW9uRGVwdGggPSAwOwogICAgIGZvciAo
bGV0IGkgPSBpbmRleE9mVG9rZW5BdENhcmV0OyBpID49IDA7IC0taSkgewpAQCAtMTA4LDE0ICsx
MTksMjAgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVl
ID0gZnVuY3Rpb24odGV4dCwgcHJvcGVydHlOYW1lLAogICAgICAgICB9CiAgICAgfQogCisgICAg
bGV0IHZhbHVlQ29tcGxldGlvbnM7CiAgICAgaWYgKGZ1bmN0aW9uTmFtZSkgewotICAgICAgICBs
ZXQgY29tcGxldGlvbnMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yRnVuY3Rpb24oZnVu
Y3Rpb25OYW1lKTsKLSAgICAgICAgbGV0IGNvbnRleHR1YWxWYWx1ZUNvbXBsZXRpb25zID0gYWRk
aXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyPy4oZnVuY3Rpb25OYW1lKSB8
fCBbXTsKLSAgICAgICAgY29tcGxldGlvbnMuYWRkVmFsdWVzKGNvbnRleHR1YWxWYWx1ZUNvbXBs
ZXRpb25zKTsKLSAgICAgICAgcmV0dXJuIHtwcmVmaXg6IGN1cnJlbnRUb2tlblZhbHVlLCBjb21w
bGV0aW9uczogY29tcGxldGlvbnMuc3RhcnRzV2l0aChjdXJyZW50VG9rZW5WYWx1ZSl9OwotICAg
IH0KKyAgICAgICAgdmFsdWVDb21wbGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JGdW5jdGlvbihmdW5jdGlvbk5hbWUpOworICAgICAgICB2YWx1ZUNvbXBsZXRpb25zLmFkZFZh
bHVlcyhhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI/LihmdW5jdGlv
bk5hbWUpID8/IFtdKTsKKyAgICB9IGVsc2UKKyAgICAgICAgdmFsdWVDb21wbGV0aW9ucyA9IFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworCisgICAg
bGV0IGNvbXBsZXRpb25zOworICAgIGlmICh1c2VGdXp6eU1hdGNoaW5nKQorICAgICAgICBjb21w
bGV0aW9ucyA9IHZhbHVlQ29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KGN1cnJlbnRUb2tlblZhbHVl
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25zID0gdmFsdWVDb21wbGV0aW9ucy5zdGFy
dHNXaXRoKGN1cnJlbnRUb2tlblZhbHVlKTsKIAotICAgIHJldHVybiB7cHJlZml4OiBjdXJyZW50
VG9rZW5WYWx1ZSwgY29tcGxldGlvbnM6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUpLnN0YXJ0c1dpdGgoY3VycmVudFRva2VuVmFsdWUpfTsKKyAgICBy
ZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25zfTsKIH07CiAKIFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQcm9wZXJ0eSA9IGZ1bmN0aW9uKHByb3BlcnR5TmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9RdWVyeVJlc3VsdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9RdWVyeVJlc3VsdC5qcwppbmRleCA4ZjI2ZGMyMDhmNjE5ODlhNmZhNDE4Y2Y5OGQxNTJh
Mjk1OGU3NTAzLi41ZmVlZGEzNGJhMThmMDRlYjRiYTVlOTBkYzVjMTc3MDhkZDY4NDI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlS
ZXN1bHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1F1ZXJ5UmVzdWx0LmpzCkBAIC0zNiw2ICszNiw3IEBAIFdJLlF1ZXJ5UmVzdWx0ID0gY2xhc3Mg
UXVlcnlSZXN1bHQKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB2YWx1ZSgpIHsgcmV0dXJuIHRo
aXMuX3ZhbHVlOyB9CisgICAgZ2V0IG1hdGNoZXMoKSB7IHJldHVybiB0aGlzLl9tYXRjaGVzOyB9
CiAKICAgICBnZXQgcmFuaygpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IGMzMDBiYzBjOTc4ZTI2MDcxNWE4ODg1ZmY4YjIwMzU4
MjNjY2M4ODkuLjc3NzE5MDY1ZGQzMDZlMjkyYWI1NGRiYmQ4YjcxMzVhZTI3YTViMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTI1Myw2
ICsyNTMsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CcmVha3BvaW50TG9nTWVz
c2FnZUxleGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJv
d3Nlck1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9D
U1NNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NT
UXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQ2FudmFzTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0NvbnNvbGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MKaW5kZXggNjY3YTAyM2U3OWEzYWVlNzE5ODI2NTZl
MWMzNmEwNTQwMjMzNzI1My4uOGE0ZWRjZjA2ZTA2ZjFiOGJhY2FmMmIxZDFjZGE3OTFiNTM3MWY2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MKQEAgLTcw
LDYgKzcwLDEwIEBACiAgICAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpOwogfQogCisuY29tcGxl
dGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIgPiAuaXRlbSA+IC5tYXRjaGVkIHsKKyAgICBmb250
LXdlaWdodDogYm9sZDsKK30KKwogLmNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyOm5v
dCg6YWN0aXZlKSA+IC5pdGVtLnNlbGVjdGVkLAogLmNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29u
dGFpbmVyID4gLml0ZW06YWN0aXZlIHsKICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxl
Y3RlZC1iYWNrZ3JvdW5kLWNvbG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LmpzCmluZGV4IDgzNjgzMjlkMzBmN2JlYzBjMTRlNDNlZjM3ZTY5YTIyMGY0ZTIzZjIu
LmMzZDg4ZTUxZTY3OTA3YTU5ZDg2ZGE4Mzc1MjIwMWU5NmQxMDM5ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0
aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMzIsNiArMzIsNyBAQCBXSS5Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51
bGw7CiAgICAgICAgIHRoaXMuX3ByZXZlbnRCbHVyID0gcHJldmVudEJsdXIgfHwgZmFsc2U7CiAK
KyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBbXTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJ
bmRleCA9IE5hTjsKICAgICAgICAgdGhpcy5fbW92ZUludGVydmFsSWRlbnRpZmllciA9IG51bGw7
CiAKQEAgLTg5LDkgKzkwLDggQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNz
IENvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgKyt0aGlzLnNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgdmFyIHNlbGVj
dGVkSXRlbUVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1FbGVtZW50OwotICAgICAgICBpZiAo
c2VsZWN0ZWRJdGVtRWxlbWVudCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVs
ZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uID09PSAiZnVuY3Rp
b24iKQotICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2Vs
ZWN0ZWRDb21wbGV0aW9uKHRoaXMsIHNlbGVjdGVkSXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOwor
ICAgICAgICBpZiAodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkKKyAgICAg
ICAgICAgIHRoaXMuX2RlbGVnYXRlPy5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBs
ZXRpb24/Lih0aGlzLCB0aGlzLmdldENvbXBsZXRpb25UZXh0KHRoaXMuX2NvbXBsZXRpb25zW3Ro
aXMuc2VsZWN0ZWRJbmRleF0pKTsKICAgICB9CiAKICAgICBzZWxlY3RQcmV2aW91cygpCkBAIC0x
MDEsOSArMTAxLDggQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBs
ZXRpb25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgLS10aGlzLnNlbGVjdGVkSW5kZXg7CiAKLSAgICAgICAgdmFyIHNlbGVjdGVkSXRl
bUVsZW1lbnQgPSB0aGlzLl9zZWxlY3RlZEl0ZW1FbGVtZW50OwotICAgICAgICBpZiAoc2VsZWN0
ZWRJdGVtRWxlbWVudCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUu
Y29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uID09PSAiZnVuY3Rpb24iKQot
ICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRD
b21wbGV0aW9uKHRoaXMsIHNlbGVjdGVkSXRlbUVsZW1lbnQudGV4dENvbnRlbnQpOworICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkKKyAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlPy5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24/
Lih0aGlzLCB0aGlzLmdldENvbXBsZXRpb25UZXh0KHRoaXMuX2NvbXBsZXRpb25zW3RoaXMuc2Vs
ZWN0ZWRJbmRleF0pKTsKICAgICB9CiAKICAgICBpc0hhbmRsaW5nQ2xpY2tFdmVudCgpCkBAIC0x
NzUsMjIgKzE3NCwzOSBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgIHVwZGF0ZShjb21w
bGV0aW9ucywgc2VsZWN0ZWRJbmRleCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbnMgPSBjb21w
bGV0aW9uczsKIAogICAgICAgICBpZiAodHlwZW9mIHNlbGVjdGVkSW5kZXggPT09ICJudW1iZXIi
KQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7CiAKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb21wbGV0aW9ucy5sZW5ndGg7ICsraSkgeworICAg
ICAgICBmb3IgKGxldCBbaW5kZXgsIGNvbXBsZXRpb25dIG9mIGNvbXBsZXRpb25zLmVudHJpZXMo
KSkgewogICAgICAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CiAgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpdGVtIik7
Ci0gICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzZWxlY3RlZCIsIGkg
PT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpOwotICAgICAgICAgICAgaXRlbUVsZW1lbnQudGV4dENv
bnRlbnQgPSBjb21wbGV0aW9uc1tpXTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQuYXBwZW5kQ2hpbGQoaXRlbUVsZW1lbnQpOworICAgICAgICAgICAgaXRlbUVsZW1lbnQuY2xh
c3NMaXN0LnRvZ2dsZSgic2VsZWN0ZWQiLCBpbmRleCA9PT0gdGhpcy5fc2VsZWN0ZWRJbmRleCk7
CiAKLSAgICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdh
dGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50ID09
PSAiZnVuY3Rpb24iKQotICAgICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21wbGV0aW9uRWxlbWVudCh0aGlzLCBpdGVtRWxlbWVu
dCwgY29tcGxldGlvbnNbaV0pOworICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wbGV0aW9uID09
PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICBpdGVtRWxlbWVudC50ZXh0Q29udGVudCA9IGNv
bXBsZXRpb247CisgICAgICAgICAgICBlbHNlIGlmIChjb21wbGV0aW9uIGluc3RhbmNlb2YgV0ku
UXVlcnlSZXN1bHQpCisgICAgICAgICAgICAgICAgaXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY3JlYXRlTWF0Y2hlZENvbXBsZXRpb25GcmFnbWVudChjb21wbGV0aW9uLnZhbHVlLCBjb21w
bGV0aW9uLm1hdGNoaW5nVGV4dFJhbmdlcykpOworCisgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlPy5jb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3Q3VzdG9taXplQ29tcGxldGlvbkVsZW1l
bnQ/Lih0aGlzLCBpdGVtRWxlbWVudCwgY29tcGxldGlvbik7CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBnZXRDb21wbGV0aW9uVGV4dChjb21wbGV0aW9uKQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZW9mIGNvbXBsZXRpb24gPT09ICJzdHJpbmciIHx8IGNvbXBsZXRpb24gaW5z
dGFuY2VvZiBXSS5RdWVyeVJlc3VsdCk7CisKKyAgICAgICAgaWYgKHR5cGVvZiBjb21wbGV0aW9u
ID09PSAic3RyaW5nIikKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uOworCisgICAgICAg
IGlmIChjb21wbGV0aW9uIGluc3RhbmNlb2YgV0kuUXVlcnlSZXN1bHQpCisgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbi52YWx1ZTsKKworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCiAg
ICAgLy8gUHJpdmF0ZQogCiAgICAgZ2V0IF9zZWxlY3RlZEl0ZW1FbGVtZW50KCkKQEAgLTIwMyw2
ICsyMTksMzEgQEAgV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldyA9IGNsYXNzIENvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIGVsZW1l
bnQ7CiAgICAgfQogCisgICAgX2NyZWF0ZU1hdGNoZWRDb21wbGV0aW9uRnJhZ21lbnQoY29tcGxl
dGlvblRleHQsIG1hdGNoaW5nVGV4dFJhbmdlcykKKyAgICB7CisgICAgICAgIGxldCBjb21wbGV0
aW9uRnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgICAg
IGxldCBsYXN0SW5kZXggPSAwOworICAgICAgICBmb3IgKGxldCB0ZXh0UmFuZ2Ugb2YgbWF0Y2hp
bmdUZXh0UmFuZ2VzKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXh0UmFuZ2Uuc3Rh
cnRDb2x1bW4gPj0gMCAmJiB0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4gPCBjb21wbGV0aW9uVGV4dC5s
ZW5ndGgsICJNYXRjaCBzdGFydCBvdXQgb2YgYm91bmRzLiIpOworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGV4dFJhbmdlLmVuZENvbHVtbiA+IDAgJiYgdGV4dFJhbmdlLmVuZENvbHVtbiA8
PSBjb21wbGV0aW9uVGV4dC5sZW5ndGgsICJNYXRjaCBlbmQgb3V0IG9mIGJvdW5kcy4iKTsKKyAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZS5zdGFydENvbHVtbiA8IHRleHRSYW5n
ZS5lbmRDb2x1bW4pOworCisgICAgICAgICAgICBpZiAodGV4dFJhbmdlLnN0YXJ0Q29sdW1uID4g
bGFzdEluZGV4KQorICAgICAgICAgICAgICAgIGNvbXBsZXRpb25GcmFnbWVudC5hcHBlbmQoY29t
cGxldGlvblRleHQuc3Vic3RyaW5nKGxhc3RJbmRleCwgdGV4dFJhbmdlLnN0YXJ0Q29sdW1uKSk7
CisKKyAgICAgICAgICAgIGxldCBtYXRjaGVkU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InNwYW4iKTsKKyAgICAgICAgICAgIG1hdGNoZWRTcGFuLmNsYXNzTGlzdC5hZGQoIm1hdGNoZWQi
KTsKKyAgICAgICAgICAgIG1hdGNoZWRTcGFuLmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJp
bmcodGV4dFJhbmdlLnN0YXJ0Q29sdW1uLCB0ZXh0UmFuZ2UuZW5kQ29sdW1uKSk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKG1hdGNoZWRTcGFuKTsKKyAgICAgICAgICAg
IGxhc3RJbmRleCA9IHRleHRSYW5nZS5lbmRDb2x1bW47CisgICAgICAgIH0KKworICAgICAgICBp
ZiAobGFzdEluZGV4IDwgY29tcGxldGlvblRleHQubGVuZ3RoKQorICAgICAgICAgICAgY29tcGxl
dGlvbkZyYWdtZW50LmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4LCBj
b21wbGV0aW9uVGV4dC5sZW5ndGgpKTsKKworICAgICAgICByZXR1cm4gY29tcGxldGlvbkZyYWdt
ZW50OworICAgIH0KKwogICAgIF9tb3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
ZXZlbnQuYnV0dG9uICE9PSAwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMK
aW5kZXggNWU0OWZmOTYzZGZjM2M1MDc2MTNmNTkzOGUxYzUzZmM2NzU3NmZkNC4uZGFhOTk0OTBm
N2Y2ZjRkYWRjMDY0NjdiM2MzNTg0Y2MzMzQwMTk1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1Rh
YkNvbnRlbnRWaWV3LmpzCkBAIC0zOTcsNiArMzk3LDcgQEAgV0kuU2V0dGluZ3NUYWJDb250ZW50
VmlldyA9IGNsYXNzIFNldHRpbmdzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5UYWJDb250ZW50
VmkKICAgICAgICAgICAgIGxldCBzdHlsZXNHcm91cCA9IGV4cGVyaW1lbnRhbFNldHRpbmdzVmll
dy5hZGRHcm91cChXSS5VSVN0cmluZygiU3R5bGVzOiIpKTsKICAgICAgICAgICAgIHN0eWxlc0dy
b3VwLmFkZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRv
RWZmZWN0aXZlLCBXSS5VSVN0cmluZygiU2hvdyBqdW1wIHRvIGVmZmVjdGl2ZSBwcm9wZXJ0eSBi
dXR0b24iKSk7CiAgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5nKFdJLnNldHRpbmdz
LmV4cGVyaW1lbnRhbEVuYWJsZVN0eWxlc0p1bXBUb1ZhcmlhYmxlRGVjbGFyYXRpb24sIFdJLlVJ
U3RyaW5nKCJTaG93IGp1bXAgdG8gdmFyaWFibGUgZGVjbGFyYXRpb24gYnV0dG9uIikpOworICAg
ICAgICAgICAgc3R5bGVzR3JvdXAuYWRkU2V0dGluZyhXSS5zZXR0aW5ncy5leHBlcmltZW50YWxD
U1NDb21wbGV0aW9uRnV6enlNYXRjaGluZywgV0kuVUlTdHJpbmcoIlVzZSBmdXp6eSBtYXRjaGlu
ZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9ucyIpKTsKIAogICAgICAgICAgICAgZXhwZXJpbWVu
dGFsU2V0dGluZ3NWaWV3LmFkZFNlcGFyYXRvcigpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
cHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKaW5kZXggMjNkMWYxMDc5ZDI5NmZjYWFjOTIyODBk
ZmNmYmRjOTlhZGNiNDhlMC4uMWY2YjczNjE0YTU4MWZhNTI2MzU2ODgxNzk2Mjc0ZWQ1MWY0NjVm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwpAQCAtOTIzLDEy
ICs5MjMsMTIgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hl
ZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfaGFuZGxlTmFtZUNoYW5n
ZSgpCiAgICAgewotICAgICAgICB0aGlzLl9wcm9wZXJ0eS5uYW1lID0gdGhpcy5fbmFtZUVsZW1l
bnQudGV4dENvbnRlbnQudHJpbSgpOworICAgICAgICB0aGlzLl9wcm9wZXJ0eS5uYW1lID0gdGhp
cy5fbmFtZVRleHRGaWVsZC52YWx1ZTsKICAgICB9CiAKICAgICBfaGFuZGxlVmFsdWVDaGFuZ2Uo
KQogICAgIHsKLSAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5fdmFsdWVFbGVtZW50LnRleHRDb250
ZW50OworICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZVRleHRGaWVsZC52YWx1ZTsKIAog
ICAgICAgICB0aGlzLl9wcm9wZXJ0eS5yYXdWYWx1ZSA9IHZhbHVlLnRyaW0oKTsKIApAQCAtOTYy
LDkgKzk2Miw5IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNo
ZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxv
d0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF9uYW1lQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0
LCBvcHRpb25zID0ge30pCiAgICAgewotICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBs
ZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93
RW1wdHlQcmVmaXh9KTsKKyAgICAgICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5m
b3JQYXJ0aWFsUHJvcGVydHlOYW1lKHRleHQsIG9wdGlvbnMpOwogICAgIH0KIAogICAgIF9oYW5k
bGVWYWx1ZUJlZm9yZUlucHV0KGV2ZW50KQpAQCAtOTg2LDkgKzk4NiwxMCBAQCBXSS5TcHJlYWRz
aGVldFN0eWxlUHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5zcHJlYWRzaGVldFRleHRGaWVsZERpZENvbW1pdCh0
aGlzLl92YWx1ZVRleHRGaWVsZCwge2RpcmVjdGlvbjogImZvcndhcmQifSk7CiAgICAgfQogCi0g
ICAgX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92aWRlcih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxs
b3dFbXB0eVByZWZpeH0gPSB7fSkKKyAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRl
eHQsIG9wdGlvbnMgPSB7fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5DU1NLZXl3b3JkQ29t
cGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwgdGhpcy5fbmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQudHJpbSgpLCB7Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFs
dWVDb21wbGV0aW9uc1Byb3ZpZGVyOiB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxl
dGlvbnNQcm92aWRlci5iaW5kKHRoaXMpfSk7CisgICAgICAgIG9wdGlvbnMuYWRkaXRpb25hbEZ1
bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyID0gdGhpcy5hZGRpdGlvbmFsRnVuY3Rpb25W
YWx1ZUNvbXBsZXRpb25zUHJvdmlkZXIuYmluZCh0aGlzKTsKKyAgICAgICAgcmV0dXJuIFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSh0ZXh0LCB0aGlzLl9u
YW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCksIG9wdGlvbnMpOwogICAgIH0KIAogICAgIF9z
ZXR1cEp1bXBUb1N5bWJvbChlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRUZXh0RmllbGQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5q
cwppbmRleCAxZDJhYjRhMmU5ODQ0NGI3NWVhYjUwMDYzN2JmNDRiMmYzYjBjYjI0Li43ODVlNTYx
MzU0NmNiODViYThkMTUzYWZiZTYwNzc3NzAyMjNlYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVsZC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVl
dFRleHRGaWVsZC5qcwpAQCAtMjksNiArMjksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9
IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgewogICAgICAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAg
dGhpcy5fcGVuZGluZ1ZhbHVlID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJv
dmlkZXIgPSBjb21wbGV0aW9uUHJvdmlkZXIgfHwgbnVsbDsKICAgICAgICAgaWYgKHRoaXMuX2Nv
bXBsZXRpb25Qcm92aWRlcikgewpAQCAtNTIsNiArNTMsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIHRoaXMuX2tleURvd25D
YXJldFBvc2l0aW9uID0gLTE7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9ICIi
OwogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0gIiI7CisgICAgICAgIHRoaXMuX2Nv
bXBsZXRpb25UZXh0ID0gIiI7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xTcGFjZUtleWJvYXJkU2hv
cnRjdXQgPSBuZXcgV0kuS2V5Ym9hcmRTaG9ydGN1dChXSS5LZXlib2FyZFNob3J0Y3V0Lk1vZGlm
aWVyLkNvbnRyb2wsIFdJLktleWJvYXJkU2hvcnRjdXQuS2V5LlNwYWNlKTsKICAgICB9CiAKQEAg
LTYxLDggKzYzLDE1IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hl
ZXRUZXh0RmllbGQKIAogICAgIGdldCBlZGl0aW5nKCkgeyByZXR1cm4gdGhpcy5fZWRpdGluZzsg
fQogCi0gICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsg
fQotICAgIHNldCB2YWx1ZSh2YWx1ZSkgeyB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gdmFs
dWU7IH0KKyAgICBnZXQgdmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BlbmRp
bmdWYWx1ZSA/PyB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50OworICAgIH0KKworICAgIHNldCB2
YWx1ZSh2YWx1ZSkgeworICAgICAgICB0aGlzLl9lbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWU7
CisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IG51bGw7CisgICAgfQogCiAgICAgdmFsdWVX
aXRob3V0U3VnZ2VzdGlvbigpCiAgICAgewpAQCAtOTQsOSArMTAzLDYgQEAgV0kuU3ByZWFkc2hl
ZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnJlbW92ZSgpOwotCi0gICAgICAgIC8v
IFJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVudCBtYXkgbGVhdmUgdGhlIGNvbnRl
bnRzIG9mIGBfZWxlbWVudGAgZnJhZ21lbnRlZCBpbnRvIG11bHRpcGxlIHRleHQgbm9kZXMuCi0g
ICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4oKTsKICAgICB9CiAKICAg
ICBzdGFydEVkaXRpbmcoKQpAQCAtMTMwLDYgKzEzNiw4IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZp
ZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlzLl9lZGl0aW5n
ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyA9ICIiOworICAgICAg
ICB0aGlzLl9wZW5kaW5nVmFsdWUgPSBudWxsOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uVGV4
dCA9ICIiOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImVkaXRpbmci
KTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jb250ZW50RWRpdGFibGUgPSBmYWxzZTsKIApAQCAt
MTQzLDEwICsxNTEsMTUgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRz
aGVldFRleHRGaWVsZAogCiAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5oaWRlKCk7CiAK
LSAgICAgICAgbGV0IGhhZFN1Z2dlc3Rpb25IaW50ID0gISF0aGlzLnN1Z2dlc3Rpb25IaW50Owor
ICAgICAgICBsZXQgaGFkQ29tcGxldGlvblRleHQgPSAhIXRoaXMuX2NvbXBsZXRpb25UZXh0Owor
ICAgICAgICAvLyBSZXNldHRpbmcgdGhlIHN1Z2dlc3Rpb24gaGludCByZW1vdmVzIGFueSBzdWdn
ZXN0aW9uIGhpbnQgZWxlbWVudCB0aGF0IGlzIGF0dGFjaGVkLgogICAgICAgICB0aGlzLnN1Z2dl
c3Rpb25IaW50ID0gIiI7Ci0gICAgICAgIGlmIChoYWRTdWdnZXN0aW9uSGludCAmJiB0aGlzLl9k
ZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRD
aGFuZ2UgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRz
aGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvblRl
eHQgPSAiIjsKKworICAgICAgICBpZiAoaGFkQ29tcGxldGlvblRleHQpIHsKKyAgICAgICAgICAg
IHRoaXMuX3BlbmRpbmdWYWx1ZSA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOworICAg
ICAgICAgICAgdGhpcy5fZGVsZWdhdGU/LnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlPy4o
dGhpcyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBkZXRhY2hlZCgpCkBAIC0xNTcsMjIgKzE3
MCwyNiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAKICAgICAvLyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGRlbGVnYXRlCiAKLSAgICBj
b21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBz
ZWxlY3RlZFRleHQgPSAiIikKKyAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBs
ZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBjb21wbGV0aW9uVGV4dCA9ICIiKQogICAgIHsKLSAgICAg
ICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0
aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25UZXh0ID0gY29tcGxl
dGlvblRleHQ7CiAKLSAgICAgICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoKQotICAg
ICAgICAgICAgdGhpcy5fcmVBdHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBpZiAodGhp
cy5fY29tcGxldGlvblRleHQuc3RhcnRzV2l0aCh0aGlzLl9jb21wbGV0aW9uUHJlZml4KSkKKyAg
ICAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSB0aGlzLl9jb21wbGV0aW9uVGV4dC5zbGlj
ZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSAiIjsKKworICAgICAgICB0aGlzLl91cGRhdGVQZW5k
aW5nVmFsdWVXaXRoQ29tcGxldGlvblRleHQoKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdh
dGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdl
ID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRU
ZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CiAgICAgfQogCi0gICAgY29tcGxldGlvblN1Z2dlc3Rp
b25zQ2xpY2tlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQpCisgICAg
Y29tcGxldGlvblN1Z2dlc3Rpb25zQ2xpY2tlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBj
b21wbGV0aW9uVGV4dCkKICAgICB7Ci0gICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxl
Y3RlZFRleHQuc2xpY2UodGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGgpOwotCi0gICAgICAg
IHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0
cnVlfSk7CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25UZXh0ID0gY29tcGxldGlvblRleHQ7Cisg
ICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dCgpOworICAg
ICAgICB0aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246
IHRydWV9KTsKICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGlm
ICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0
RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCkBAIC0yMTksNyArMjM2LDcgQEAgV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBp
ZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7CisgICAgICAg
IHRoaXMuX2FwcGx5UGVuZGluZ1ZhbHVlKCk7CiAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRp
b24oKTsKIAogICAgICAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyAh
PT0gdGhpcy52YWx1ZTsKQEAgLTI1Miw3ICsyNjksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGxldCBpc1RhYktleSA9IGV2
ZW50LmtleSA9PT0gIlRhYiI7CiAgICAgICAgIGlmIChpc0VudGVyS2V5IHx8IGlzVGFiS2V5KSB7
CiAgICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBs
ZXRpb25IaW50KCk7CisgICAgICAgICAgICB0aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSgpOwogCiAg
ICAgICAgICAgICBsZXQgZGlyZWN0aW9uID0gKGlzVGFiS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSA/
ICJiYWNrd2FyZCIgOiAiZm9yd2FyZCI7CiAKQEAgLTMzOCwxMiArMzU1LDEyIEBAIFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFy
cm93UmlnaHQiICYmIHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoKSB7CisgICAgICAgIGlmIChl
dmVudC5rZXkgPT09ICJBcnJvd1JpZ2h0IiAmJiB0aGlzLl9jb21wbGV0aW9uVGV4dC5sZW5ndGgp
IHsKICAgICAgICAgICAgIGxldCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAK
ICAgICAgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAg
ICBldmVudC5zdG9wKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGlu
dCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9
KTsKIAogICAgICAgICAgICAgICAgIC8vIFdoZW4gY29tcGxldGluZyAiYmFja2dyb3VuZCIsIGRv
bid0IGhpZGUgdGhlIGNvbXBsZXRpb24gcG9wb3Zlci4KICAgICAgICAgICAgICAgICAvLyBDb250
aW51ZSBzaG93aW5nIHRoZSBwb3BvdmVyIHdpdGggcHJvcGVydGllcyBzdWNoIGFzICJiYWNrZ3Jv
dW5kLWNvbG9yIiBhbmQgImJhY2tncm91bmQtaW1hZ2UiLgpAQCAtMzU4LDIxICszNzUsMTQgQEAg
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAg
ICAgICAgIGlmIChldmVudC5rZXkgPT09ICJFc2NhcGUiICYmIHRoaXMuX3N1Z2dlc3Rpb25zVmll
dy52aXNpYmxlKSB7CiAgICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0KLSAgICAgICAgICAgIGxl
dCB3aWxsQ2hhbmdlID0gISF0aGlzLnN1Z2dlc3Rpb25IaW50OwogICAgICAgICAgICAgdGhpcy5k
aXNjYXJkQ29tcGxldGlvbigpOwogCi0gICAgICAgICAgICBpZiAod2lsbENoYW5nZSAmJiB0aGlz
Ll9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGRE
aWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUu
c3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7Ci0KICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93TGVm
dCIgJiYgKHRoaXMuc3VnZ2VzdGlvbkhpbnQgfHwgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2li
bGUpKSB7CisgICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJvd0xlZnQiICYmICh0aGlzLl9j
b21wbGV0aW9uVGV4dCB8fCB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkpIHsKICAgICAg
ICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKIAotICAgICAgICAgICAgaWYgKHRoaXMu
X2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERp
ZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5z
cHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKQEAgLTQwNSw2ICs0MTUsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGlmICghdGhpcy5fZWRp
dGluZykKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUg
PSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKS50cmltKCk7CiAgICAgICAgIHRoaXMuX3By
ZXZlbnREaXNjYXJkaW5nQ29tcGxldGlvbnNPbktleVVwID0gdHJ1ZTsKICAgICAgICAgdGhpcy5f
dXBkYXRlQ29tcGxldGlvbnMoKTsKIApAQCAtNDE3LDggKzQyOCw5IEBAIFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgaWYgKCF0aGlz
Ll9jb21wbGV0aW9uUHJvdmlkZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0
IHVzZUZ1enp5TWF0Y2hpbmcgPSBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxDU1NDb21wbGV0aW9u
RnV6enlNYXRjaGluZy52YWx1ZTsKICAgICAgICAgbGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24g
PSB0aGlzLnZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9u
cywgcHJlZml4fSA9IHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0
aW9uLCB7YWxsb3dFbXB0eVByZWZpeDogZm9yY2VDb21wbGV0aW9ucywgY2FyZXRQb3NpdGlvbjog
dGhpcy5fZ2V0Q2FyZXRQb3NpdGlvbigpfSk7CisgICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHBy
ZWZpeH0gPSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwg
e2FsbG93RW1wdHlQcmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMu
X2dldENhcmV0UG9zaXRpb24oKSwgdXNlRnV6enlNYXRjaGluZ30pOwogICAgICAgICB0aGlzLl9j
b21wbGV0aW9uUHJlZml4ID0gcHJlZml4OwogCiAgICAgICAgIGlmICghY29tcGxldGlvbnMubGVu
Z3RoKSB7CkBAIC00MjcsNyArNDM5LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICB9CiAKICAgICAgICAgLy8gTm8gbmVlZCB0
byBzaG93IHRoZSBjb21wbGV0aW9uIHBvcG92ZXIgd2l0aCBvbmx5IG9uZSBpdGVtIHRoYXQgbWF0
Y2hlcyB0aGUgZW50ZXJlZCB2YWx1ZS4KLSAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9
PT0gMSAmJiBjb21wbGV0aW9uc1swXSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgeworICAg
ICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAxICYmIHRoaXMuX3N1Z2dlc3Rpb25zVmll
dy5nZXRDb21wbGV0aW9uVGV4dChjb21wbGV0aW9uc1swXSkgPT09IHZhbHVlV2l0aG91dFN1Z2dl
c3Rpb24pIHsKICAgICAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDQwLDggKzQ1Miw5IEBAIFdJLlNwcmVhZHNoZWV0
VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlzLl9z
dWdnZXN0aW9uc1ZpZXcudXBkYXRlKGNvbXBsZXRpb25zKTsKIAotICAgICAgICBpZiAoY29tcGxl
dGlvbnMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhl
IGNvbXBsZXRpb24gcG9wb3ZlciB0aGF0IG1hdGNoZXMgdGhlIHN1Z2dlc3Rpb24gaGludC4KKyAg
ICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiB0aGlzLl9zdWdnZXN0aW9uc1Zp
ZXcuZ2V0Q29tcGxldGlvblRleHQoY29tcGxldGlvbnNbMF0pLnN0YXJ0c1dpdGgodGhpcy5fY29t
cGxldGlvblByZWZpeCkpIHsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2hvdyB0aGUgY29t
cGxldGlvbiBwb3BvdmVyIHdpdGggb25seSBvbmUgaXRlbSB0aGF0IGJlZ2lucyB3aXRoIHRoZSBj
b21wbGV0aW9uIHByZWZpeC4KKyAgICAgICAgICAgIC8vIFdoZW4gdXNpbmcgZnV6enkgbWF0Y2hp
bmcsIHRoZSBjb21wbGV0aW9uIHByZWZpeCBtYXkgbm90IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcg
b2YgdGhlIHN1Z2dlc3Rpb24uCiAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlk
ZSgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuX3Nob3dTdWdnZXN0aW9uc1Zp
ZXcoKTsKQEAgLTUzMCwyMiArNTQzLDE2IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xh
c3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0KIAot
ICAgIF9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7
fSkKKyAgICBfYXBwbHlQZW5kaW5nVmFsdWUoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9ufSA9
IHt9KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgfHwgIXRo
aXMuc3VnZ2VzdGlvbkhpbnQpCisgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1ZhbHVlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hp
bGRyZW4oe25ld0NhcmV0UG9zaXRpb246IG1vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uID8gdGhp
cy5fZ2V0Q2FyZXRQb3NpdGlvbigpICsgdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGggOiBudWxs
fSk7Ci0gICAgfQotCi0gICAgX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0
UG9zaXRpb259ID0ge30pCi0gICAgewotICAgICAgICBuZXdDYXJldFBvc2l0aW9uID8/PSB0aGlz
Ll9nZXRDYXJldFBvc2l0aW9uKCk7CisgICAgICAgIGxldCBjYXJldFBvc2l0aW9uID0gdGhpcy5f
Z2V0Q2FyZXRQb3NpdGlvbigpOworICAgICAgICBsZXQgbmV3Q2FyZXRQb3NpdGlvbiA9IG1vdmVD
YXJldFRvRW5kT2ZDb21wbGV0aW9uID8gY2FyZXRQb3NpdGlvbiAtIHRoaXMuX2NvbXBsZXRpb25Q
cmVmaXgubGVuZ3RoICsgdGhpcy5fY29tcGxldGlvblRleHQubGVuZ3RoIDogY2FyZXRQb3NpdGlv
bjsKIAotICAgICAgICAvLyBTZXR0aW5nIHRoZSB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCB0
byBpdHMgY3VycmVudCB0ZXh0Q29udGVudCB3aWxsIHRha2UgdGhlIHRleHQgZnJvbSB0aGUgbXVs
dGlwbGUKLSAgICAgICAgLy8gcG90ZW50aWFsIGNoaWxkIG5vZGVzIChwb3RlbnRpYWxseSBhIHN1
Z2dlc3Rpb24gaGludCBub2RlIGFuZCBzb21lIG51bWJlciBvZiBleGlzdGluZyB0ZXh0IG5vZGVz
KSBhbmQgdHVybgotICAgICAgICAvLyB0aGVtIGludG8gYSBzaW5nbGUgdGV4dCBub2RlIHdpdGhp
biB0aGUgZWxlbWVudC4KLSAgICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
X2VsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIGNvbGxh
cHNlcyB0aGUgdGV4dCBzZWxlY3Rpb24uIEdldCB0aGUgY2FyZXQgcG9zaXRpb24gYmVmb3JlIGRv
aW5nIHRoaXMuCisgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLl9wZW5kaW5nVmFsdWU7CiAKICAg
ICAgICAgaWYgKHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7CiAgICAgICAgICAg
ICBsZXQgdGV4dENoaWxkTm9kZSA9IHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDsKQEAgLTU1Myw2
ICs1NjAsMTQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRl
eHRGaWVsZAogICAgICAgICB9CiAgICAgfQogCisgICAgX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhD
b21wbGV0aW9uVGV4dCgpCisgICAgeworICAgICAgICBsZXQgY2FyZXRQb3NpdGlvbiA9IHRoaXMu
X2dldENhcmV0UG9zaXRpb24oKTsKKyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZVdpdGhv
dXRTdWdnZXN0aW9uKCk7CisKKyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdmFsdWUuc2xp
Y2UoMCwgY2FyZXRQb3NpdGlvbiAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKSArIHRo
aXMuX2NvbXBsZXRpb25UZXh0ICsgdmFsdWUuc2xpY2UoY2FyZXRQb3NpdGlvbiArIDEsIHZhbHVl
Lmxlbmd0aCk7CisgICAgfQorCiAgICAgX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgsICJTdWdn
ZXN0aW9uIGhpbnQgc2hvdWxkIG5vdCBiZSBlbXB0eSB3aGVuIGF0dGFjaGluZyB0aGUgc3VnZ2Vz
dGlvbiBoaW50IGVsZW1lbnQuIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjUxZmZkNGEzZWZiMjU5Y2E3Y2I4OTQxNDRm
ZGFkNWU0Zjg2NTA5My4uNDY2YWJkYjVmNzI4OWFiMTQ0YWRlNDQxYjExMzI5NTMwYjgxN2NjNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTExLTE3ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxp
bWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGZ1enp5IG1h
dGNoaW5nIGluIENTUyBjb21wbGV0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMwMzUxCisgICAgICAgIDxyZGFyOi8vODI5NzYyOTI+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9y
IGBXSS5DU1NRdWVyeUNvbnRyb2xsZXJgIHRvIGNoZWNrIGZ1enp5IG1hdGNoaW5nIGxvZ2ljIGZv
ciBDU1MgY29tcGxldGlvbnMuCisgICAgICAgIEZvbGxvd3MgcHJpb3IgZXhhbXBsZSBmcm9tIGBM
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9yZXNvdXJjZS1xdWVyeS1jb250cm9sbGVy
Lmh0bWxgCisgICAgICAgIHNpbmNlIGBXSS5SZXNvdWNlUXVlcnlDb250cm9sbGVyYCBzZXJ2ZWQg
YXMgdGhlIG1vZGVsIGNsYXNzIHRoYXQgd2FzIGFkYXB0ZWQgZm9yIENTUy4KKworICAgICAgICAq
IGluc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLXF1ZXJ5LWNvbnRyb2xs
ZXIuaHRtbDogQWRkZWQuCisKIDIwMjEtMTEtMTcgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1pZnJhbWUtZWxlbWVudC9pZnJh
bWVfc2FuZGJveF93aW5kb3dfb3Blbl9kb3dubG9hZF9ibG9ja19kb3dubG9hZHMudGVudGF0aXZl
Lmh0bWwgaXMgZnJlcXVlbnRseSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDBiNjc1YmNhMTNlOWI1MDA4MTU1M2FhNGY0ZGU1NWViNGM1ZDc3
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nz
cy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUwIEBACitUZXN0aW5n
IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogQ1NTUXVl
cnlDb250cm9sbGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRmluZFNwZWNpYWxDaGFyYWN0ZXJJ
bmRpY2VzCitQQVNTOiBSZXN1bHQgZm9yIEFiY2Qgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNp
YWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgQUJDREUgc2hvdWxkIG1hdGNoIGV4cGVjdGVk
IHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgYWJjZGVmIHNob3VsZCBtYXRjaCBl
eHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIGFiYy1kZWYgc2hvdWxk
IG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgYWJjLS0t
ZGVmIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQg
Zm9yIGEtYmNfZGUuZiBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFT
UzogUmVzdWx0IGZvciBBeEJ4Q3hEeEV4Rnggc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwg
aW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgYWItY19kLmVmIHNob3VsZCBtYXRjaCBleHBlY3Rl
ZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIEF4QnhDeGR4ZXhEeHl4RUYgc2hv
dWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IEV4ZWN1dGVRdWVyeUFnYWluc3ROb1ZhbHVlcworUEFTUzogU2hvdWxkIHJldHVybiBubyBy
ZXN1bHRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVdoaXRlc3BhY2VRdWVyeU9y
RW1wdHlRdWVyeQorUEFTUzogV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3Vs
dHMuCitQQVNTOiBXaGl0ZXNwYWNlIHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4KK1BB
U1M6IFdoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLgorUEFTUzogV2hp
dGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCitQQVNTOiBFbXB0eSBxdWVy
eSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBFeGVj
dXRlUXVlcnlNYXRjaE5vbmUKK1BBU1M6IFF1ZXJ5ICJhYmNkZSIgc2hvdWxkbid0IG1hdGNoICJh
YmNkIi4KK1BBU1M6IFF1ZXJ5ICJhYmNkLSIgc2hvdWxkbid0IG1hdGNoICJhYmNkZSIuCitQQVNT
OiBRdWVyeSAiYWJjZGUiIHNob3VsZG4ndCBtYXRjaCAiYWJjZWQiLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRXhlY3V0ZVF1ZXJ5TWF0Y2hlc0V4cGVjdGVkQ2hhcmFjdGVycworUEFTUzogUXVl
cnkgImFiY2QiIHNob3VsZCBtYXRjaCAiYWJjZCIgaW4gImFiY2RlIi4KK1BBU1M6IFF1ZXJ5ICJh
LWJjZGUiIHNob3VsZCBtYXRjaCAiYSAgICAtIGJjZGUiIGluICJhYmNkZS1hYmNkZSIuCitQQVNT
OiBRdWVyeSAiYWJjZGUiIHNob3VsZCBtYXRjaCAiQSBCIEMgRCBFIiBpbiAiQWFCYkNjRGRFZSIu
CitQQVNTOiBRdWVyeSAiYWJjZGUiIHNob3VsZCBtYXRjaCAiQSAgIEIgIEMgRGUiIGluICJBYmNk
QmNkQ2REZSIuCitQQVNTOiBRdWVyeSAiYWJjZGV4IiBzaG91bGQgbWF0Y2ggIkEgQiBDIGQgZXgi
IGluICJBeEJ4Q3hkeGV4RHh5eEVGIi4KK1BBU1M6IFF1ZXJ5ICJiYyIgc2hvdWxkIG1hdGNoICIg
YkMiIGluICJhYkNkIi4KK1BBU1M6IFF1ZXJ5ICJiYiIgc2hvdWxkIG1hdGNoICIgYkIiIGluICJh
YkJjIi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeUdlbmVyYWxSYW5raW5n
cworUEFTUzogUmVzdWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmN5
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVF1ZXJ5UG9zaXRpb25SYW5raW5ncwor
UEFTUzogUmVzdWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmN5Lgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogR2V0TWF0Y2hpbmdUZXh0UmFuZ2VzCitQQVNTOiBSZXN1
bHQgVGV4dFJhbmdlcyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHJhbmdlcy4KK1BBU1M6IFJl
c3VsdCBUZXh0UmFuZ2VzIHNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcmFuZ2VzLgorUEFTUzog
UmVzdWx0IFRleHRSYW5nZXMgc2hvdWxkIG1hdGNoIHRoZSBleHBlY3RlZCByYW5nZXMuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1xdWVyeS1jb250
cm9sbGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnkt
Y29udHJvbGxlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0YTcxM2VhYTU3MjlhZjkyYTZlYThjYzE4MjFj
MjkxNzA1NzcwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsMjQ3IEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNy
ZWF0ZVN5bmNTdWl0ZSgiQ1NTUXVlcnlDb250cm9sbGVyIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJGaW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBjb3JyZWN0bHkgZmluZCBzcGVjaWFsIGNoYXJhY3Rl
cnMuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJ
LkNTU1F1ZXJ5Q29udHJvbGxlcjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9IFsKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAiQWJjZCIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJBQkNERSIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJhYmNkZWYiLAorICAgICAg
ICAgICAgICAgICAgICBleHBlY3RlZDogIl4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogImFiYy1kZWYiLAorICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gIF5eIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJhYmMtLS1k
ZWYiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gIF5eXl4iLAorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1
ZTogImEtYmNfZGUuZiIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXl5eIiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cGFkdmFsdWU6ICJBeEJ4Q3hEeEV4RngiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDog
Il4gXiBeIF4gXiBeIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJhYi1jX2QuZWYiLAorICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDogIl4gXl4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogIkF4QnhDeGR4ZXhEeHl4RUYiLAor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gXiBeICAgICBeICAgXiIsCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0
ZVNwZWNpYWxNYXNrKHBhZHZhbHVlLCBzcGVjaWFsSW5kaWNlcykgeworICAgICAgICAgICAgICAg
IGxldCBtYXNrID0gIiAiLnJlcGVhdChwYWR2YWx1ZS5sZW5ndGgpOworICAgICAgICAgICAgICAg
IHNwZWNpYWxJbmRpY2VzLmZvckVhY2goKGluZGV4KSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IG1hc2sgPSBtYXNrLnN1YnN0cigwLCBpbmRleCkgKyAiXiIgKyBtYXNrLnN1YnN0cihpbmRleCAr
IDEpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybiBtYXNrLnRy
aW0oKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChsZXQge3BhZHZhbHVlLCBl
eHBlY3RlZH0gb2YgdGVzdHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgYWN0dWFsID0gY3JlYXRl
U3BlY2lhbE1hc2socGFkdmFsdWUsIG1hdGNoZXIuX2ZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNl
cyhwYWR2YWx1ZSkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
YWN0dWFsLCBleHBlY3RlZCwgYFJlc3VsdCBmb3IgJHtwYWR2YWx1ZX0gc2hvdWxkIG1hdGNoIGV4
cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy5gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRXhlY3V0ZVF1
ZXJ5QWdhaW5zdE5vVmFsdWVzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgcmV0dXJu
IG5vIHJlc3VsdHMgaWYgbm8gdmFsdWVzIHdlcmUgYWRkZWQgdG8gdGhlIGNvbnRyb2xsZXIuIiwK
KyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1
ZXJ5Q29udHJvbGxlcjsKKyAgICAgICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRl
UXVlcnkoImFiY2RlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIXJl
c3VsdHMubGVuZ3RoLCAiU2hvdWxkIHJldHVybiBubyByZXN1bHRzLiIpCisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkV4ZWN1dGVX
aGl0ZXNwYWNlUXVlcnlPckVtcHR5UXVlcnkiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkVtcHR5
IHF1ZXJpZXMgYW5kIHF1ZXJpZXMgY29udGFpbmluZyBvbmx5IHdoaXRlc3BhY2Ugc2hvdWxkIHJl
dHVybiBubyByZXN1bHRzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBjb25zdCB3
aGl0ZXNwYWNlQ2hhcmFjdGVycyA9ICIgXHRcclxuIjsKKyAgICAgICAgICAgIGxldCBtYXRjaGVy
ID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcihbImFiY2RlIl0pOworCisgICAgICAgICAgICBm
b3IgKGxldCBxdWVyeSBvZiB3aGl0ZXNwYWNlQ2hhcmFjdGVycykgeworICAgICAgICAgICAgICAg
IGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVlcnkpOworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghcmVzdWx0cy5sZW5ndGgsICJXaGl0ZXNwYWNl
IHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4iKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeSgiIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIXJlc3VsdHMubGVuZ3RoLCAiRW1wdHkgcXVl
cnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJFeGVjdXRlUXVlcnlNYXRjaE5v
bmUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCBub3QgZmluZCBhIG1hdGNoLiIsCisg
ICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVy
eUNvbnRyb2xsZXI7CisgICAgICAgICAgICBsZXQgdGVzdHMgPSBbCisgICAgICAgICAgICAgICAg
e3F1ZXJ5OiAiYWJjZGUiLCB2YWx1ZTogImFiY2QifSwKKyAgICAgICAgICAgICAgICB7cXVlcnk6
ICJhYmNkLSIsIHZhbHVlOiAiYWJjZGUifSwKKyAgICAgICAgICAgICAgICB7cXVlcnk6ICJhYmNk
ZSIsIHZhbHVlOiAiYWJjZWQifSwKKyAgICAgICAgICAgIF07CisKKyAgICAgICAgICAgIGZvciAo
bGV0IHtxdWVyeSwgdmFsdWV9IG9mIHRlc3RzKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hlci5y
ZXNldCgpOworICAgICAgICAgICAgICAgIG1hdGNoZXIuYWRkVmFsdWVzKFt2YWx1ZV0pOworICAg
ICAgICAgICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVlcnkpOwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghcmVzdWx0cy5sZW5ndGgs
IGBRdWVyeSAiJHtxdWVyeX0iIHNob3VsZG4ndCBtYXRjaCAiJHt2YWx1ZX0iLmApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJFeGVjdXRlUXVlcnlNYXRjaGVzRXhwZWN0ZWRDaGFyYWN0ZXJzIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHF1ZXJ5IGNoYXJh
Y3RlcnMuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3
IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9IFsKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiAiYWJjZCIsCisgICAgICAg
ICAgICAgICAgICAgIHZhbHVlOiAiYWJjZGUiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZDogImFiY2QiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHF1ZXJ5OiAiYS1iY2RlIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWU6
ICJhYmNkZS1hYmNkZSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiYSAgICAtIGJj
ZGUiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIHF1ZXJ5OiAiYWJjZGUiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogIkFhQmJD
Y0RkRWUiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIkEgQiBDIEQgRSIKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVl
cnk6ICJhYmNkZSIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiQWJjZEJjZENkRGUiLAor
ICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIkEgICBCICBDIERlIgorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeTogImFi
Y2RleCIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiQXhCeEN4ZHhleER4eXhFRiIsCisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiQSBCIEMgZCBleCIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICJiYyIs
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiYWJDZCIsCisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkOiAiIGJDIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBxdWVyeTogImJiIiwKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWU6ICJhYkJjIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICIgYkIiCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRl
TWF0Y2hlc01hc2socXVlcnlSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBx
dWVyeVJlc3VsdC52YWx1ZTsKKyAgICAgICAgICAgICAgICBsZXQgbGFzdEluZGV4ID0gLTE7Cisg
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICIiOworCisgICAgICAgICAgICAgICAgZm9yIChs
ZXQgbWF0Y2ggb2YgcXVlcnlSZXN1bHQubWF0Y2hlcykgeworICAgICAgICAgICAgICAgICAgICBs
ZXQgZ2FwID0gIiAiLnJlcGVhdChtYXRjaC5pbmRleCAtIGxhc3RJbmRleCAtIDEpOworICAgICAg
ICAgICAgICAgICAgICByZXN1bHQgKz0gZ2FwOworICAgICAgICAgICAgICAgICAgICByZXN1bHQg
Kz0gdmFsdWVbbWF0Y2guaW5kZXhdOworICAgICAgICAgICAgICAgICAgICBsYXN0SW5kZXggPSBt
YXRjaC5pbmRleDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCB7cXVlcnksIHZh
bHVlLCBleHBlY3RlZH0gb2YgdGVzdHMpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLnJlc2V0
KCk7CisgICAgICAgICAgICAgICAgbWF0Y2hlci5hZGRWYWx1ZXMoW3ZhbHVlXSk7CisKKyAgICAg
ICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChyZXN1bHRzLmxlbmd0aCA9PT0gMSwg
IlNob3VsZCByZXR1cm4gZXhhY3RseSBvbmUgbWF0Y2guIik7CisgICAgICAgICAgICAgICAgbGV0
IGFjdHVhbCA9IHJlc3VsdHMubGVuZ3RoID8gY3JlYXRlTWF0Y2hlc01hc2socmVzdWx0c1swXSkg
OiBudWxsOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYWN0dWFs
LCBleHBlY3RlZCwgYFF1ZXJ5ICIke3F1ZXJ5fSIgc2hvdWxkIG1hdGNoICIke2V4cGVjdGVkfSIg
aW4gIiR7dmFsdWV9Ii5gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRXhlY3V0ZVF1ZXJ5R2VuZXJh
bFJhbmtpbmdzIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHF1ZXJ5IHJlc3Vs
dHMgYXJlIHJhbmtlZCBieSBkZXNjZW5kaW5nIHJlbGV2YW5jZS4iLAorICAgICAgICB0ZXN0KCkg
eworICAgICAgICAgICAgLy8gVmFsdWVzIGluIG9yZGVyIG9mIGRlc2NlbmRpbmcgcmFuay4KKyAg
ICAgICAgICAgIGxldCB2YWx1ZXMgPSBbIkFiQ2RFIiwgIkFiY0RlIiwgImFiY2RlIiwgIkF4YmNE
ZSIsICJBeEJ4Q3hEeEV4IiwgIkF4YnhjRGUiLCAieGFiY2RlIl07CisgICAgICAgICAgICBsZXQg
bWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIodmFsdWVzKTsKKyAgICAgICAgICAg
IGxldCBxdWVyeSA9ICJhYmNkZSI7CisgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIu
ZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgICAgIGxldCByZXN1bHRWYWx1ZXMgPSByZXN1
bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQudmFsdWUpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RTaGFsbG93RXF1YWwocmVzdWx0VmFsdWVzLCB2YWx1ZXMsICJSZXN1bHRzIHNo
b3VsZCBiZSByYW5rZWQgYnkgZGVzY2VuZGluZyByZWxldmFuY3kuIik7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkV4ZWN1dGVR
dWVyeVBvc2l0aW9uUmFua2luZ3MiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQg
bWF0Y2hlcyBjbG9zZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlbmFtZSByYW5rIGhpZ2hl
ci4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgLy8gVmFsdWVzIGluIG9yZGVyIG9m
IGRlc2NlbmRpbmcgcmFuay4KKyAgICAgICAgICAgIGxldCB2YWx1ZXMgPSBbImJjZCIsICJCeEN4
RHgiLCAiQXhCeEN4RHgiLCAiYWJjZCIsICJ4eHhBeHh4Qnh4eEN4eHhEIl07CisgICAgICAgICAg
ICBsZXQgbWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIodmFsdWVzKTsKKyAgICAg
ICAgICAgIGxldCBxdWVyeSA9ICJiY2QiOworICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRj
aGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAgICBsZXQgcmVzdWx0VmFsdWVzID0g
cmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnZhbHVlKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHJlc3VsdFZhbHVlcywgdmFsdWVzLCAiUmVzdWx0
cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmN5LiIpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJHZXRN
YXRjaGluZ1RleHRSYW5nZXMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgcXVl
cnkgcmVzdWx0IFRleHRSYW5nZXMgYXJlIGNvcnJlY3QuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHRleHRSYW5nZShzdGFydCwgZW5kKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXSS5UZXh0UmFuZ2UoMCwgc3RhcnQsIDAsIGVuZCk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxl
cjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICB7dmFsdWU6ICJh
IiwgcmFuZ2VzOiBbXX0sCisgICAgICAgICAgICAgICAge3ZhbHVlOiAiYWJjZGUiLCByYW5nZXM6
IFt0ZXh0UmFuZ2UoMCwgNSldfSwKKyAgICAgICAgICAgICAgICB7dmFsdWU6ICJBeEJ4Q3hEZSIs
IHJhbmdlczogW3RleHRSYW5nZSgwLCAxKSwgdGV4dFJhbmdlKDIsIDMpLCB0ZXh0UmFuZ2UoNCwg
NSksIHRleHRSYW5nZSg2LCA4KV19LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgZm9y
IChsZXQge3ZhbHVlLCByYW5nZXN9IG9mIHRlc3RzKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hl
ci5yZXNldCgpOworICAgICAgICAgICAgICAgIG1hdGNoZXIuYWRkVmFsdWVzKFt2YWx1ZV0pOwor
CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeSgiYWJj
ZGUiKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0VGV4dFJhbmdlcyA9IHJlc3VsdHMubGVu
Z3RoID8gcmVzdWx0c1swXS5tYXRjaGluZ1RleHRSYW5nZXMgOiBbXTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKEpTT04uc3RyaW5naWZ5KHJlc3VsdFRleHRSYW5n
ZXMpLCBKU09OLnN0cmluZ2lmeShyYW5nZXMpLCAiUmVzdWx0IFRleHRSYW5nZXMgc2hvdWxkIG1h
dGNoIHRoZSBleHBlY3RlZCByYW5nZXMuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdGluZyBXSS5D
U1NRdWVyeUNvbnRyb2xsZXI8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445027</attachid>
            <date>2021-11-23 06:20:35 -0800</date>
            <delta_ts>2021-12-07 06:54:00 -0800</delta_ts>
            <desc>Patch 1.2</desc>
            <filename>bug-230351-20211123152034.patch</filename>
            <type>text/plain</type>
            <size>60656</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDdjMTYwOWFlOTMwOWY4Yzc3NmU3MzYzMDY2NWQw
ZmVhODMyNGI0N2IuLmRmMWU1MjQyN2IyNGY3NjczZTc3MDk4M2UzYjZiM2Y5MWQxYmI4YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAyMS0xMS0yMyAgUmF6
dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU3VwcG9ydCBmdXp6eSBtYXRjaGluZyBpbiBDU1MgY29tcGxldGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDM1MQorICAgICAgICA8cmRh
cjovLzgyOTc2MjkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBmdXp6eSBtYXRjaGluZyBmb3IgaWRlbnRpZnlpbmcgQ1NTIGNvbXBsZXRpb25z
IGluIHRoZSBTdHlsZXMgZGV0YWlscyBzaWRlYmFyLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJl
ZSBtYWluIHBhcnRzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEludHJvZHVjZSBgV0kuQ1NT
UXVlcnlDb250cm9sbGVyYCB3aXRoIGxvZ2ljIHRvIGRvIGZ1enp5IG1hdGNoaW5nIG9uIHByb3Zp
ZGVkIHZhbHVlcy4KKyAgICAgICAgMi4gQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3YCB0byBzdXBwb3J0IGJvdGggcGxhaW4gc3RyaW5ncyBhbmQgYFdJLlF1ZXJ5UmVzdWx0YHMu
CisgICAgICAgIDMuIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGRgIHNvIGl0cyBgdmFs
dWVgIGRvZXNuJ3QgYWx3YXlzIHJldHVybiBpdHMgYGVsZW1lbnQudGV4dENvbnRlbnRgLgorCisg
ICAgICAgIFdpdGggZnV6enkgbWF0Y2hpbmcsIGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFudGVl
ZCBhbnltb3JlIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorICAgICAgICBUaGVyZWZv
cmUsIGl0J3Mgbm8gbG9uZ2VyIHZpYWJsZSB0byByZWx5IG9uIGBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC52YWx1ZWAgYmVpbmcgYSBjb25jYXRlbmF0aW9uIG9mIGB0ZXh0Q29udGVudGAgb2Ygbm9k
ZXMgd2l0aGluLiAKKworICAgICAgICBUbyBhZHJlc3MgdGhpcywgdGhlcmUncyBub3cgYFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHdoaWNoIGluY2x1ZGVzIHRoZSBwcm9z
cGVjdGl2ZQorICAgICAgICBjb21wbGV0aW9uIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcXVl
cnkgaXMgYSBjb21wbGV0aW9uIHByZWZpeCBvciBhdCBtYXRjaCBhdCBhbnkgb3RoZXIgcG9zaXRp
b24uCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIEFk
ZCBhIGZsYWcgdG8gZW5hYmxlIHRoZSBmdXp6eSBtYXRjaGluZyBmZWF0dXJlLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanM6IEFkZGVk
LgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5
Q29udHJvbGxlci5wcm90b3R5cGUuYWRkVmFsdWVzKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29u
dHJvbGxlci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKToKKyAgICAgICAgQWRkIGEg
c3BlY2xpYWxpemVkIGNsYXNzIHRvIGhvbGQgdGhlIGxvZ2ljIGZvciBmdXp6eSBtYXRjaGluZyBv
ZiBDU1MgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorICAgICAgICBJdCBjbG9uZXMgbG9naWMgZnJv
bSBgV0kuUmVzb3VjZVF1ZXJ5Q29udHJvbGxlcmAgd2l0aCBhZGp1c3RtZW50cyBzcGVjaWZpYyB0
byBDU1M7IG1vcmUgdG8gZm9sbG93IGFzIHRoZSBmZWF0dXJlIGdldHMgcmVmaW5lZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgor
ICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmFkZFZhbHVlcyk6CisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgU3Vw
cG9ydCBib3RoIHRoZSBjdXJyZW50IHByZWZpeCBtYXRjaGluZyBhcHByb2FjaCBhcyB3ZWxsIGFz
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5
d29yZENvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZv
clBhcnRpYWxQcm9wZXJ0eU5hbWUpOgorICAgICAgICBPcHQgaW50byBmdXp6eSBtYXRjaGluZyB3
aGVuIGdldHRpbmcgY29tcGxldGlvbnMgZm9yIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMuIAor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQuanM6CisgICAgICAg
IChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNoZXMpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzczoKKyAgICAgICAgKC5jb21wbGV0aW9uLXN1Z2dlc3Rp
b25zLWNvbnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdodGVkKToKKyAgICAgICAgSGlnaGxpZ2h0
IHNwZWNpZmljIGNoYXJhY3RlcnMgdGhhdCBtYXRjaGVkIGluIHJlc3VsdCBpZGVudGlmaWVkIGJ5
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LmpzOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5wcm90b3R5cGUuc2VsZWN0TmV4dCk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LnByb3RvdHlwZS5zZWxlY3RQcmV2aW91cyk6CisgICAgICAgIChXSS5Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuZ2V0Q29tcGxldGlvblRleHQpOgorICAgICAg
ICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuX2NyZWF0ZUhpZ2hsaWdo
dGVkQ29tcGxldGlvbkZyYWdtZW50KToKKyAgICAgICAgQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3YCB0byBob2xkIGEgbGlzdCBvZiBjb21wbGV0aW9ucywgCisgICAgICAgIGVp
dGhlciBzdHJpbmdzIG9yIGBXSS5RdWVyeVJlc3VsdGAsIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJp
YXRlIGNvbXBsZXRpb24gdGV4dAorICAgICAgICBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgYHRl
eHRDb250ZW50YCBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudC4KKworICAgICAgICBgV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlld2AgaXMgdXNlZCBlbHNld2hlcmUgaW4gdGhlIENvbnNvbGUgYW5k
IFNvdXJjZXMgcGFuZWwKKyAgICAgICAgc28gYXZvaWQgaW1wYWN0aW5nIHRob3NlIGNvbnN1bWVy
cyB1bnRpbCB0aGV5IG9wdCBpbiB0byBmdXp6eSBtYXRjaGluZyBhcyB3ZWxsLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9oYW5kbGVOYW1l
Q2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUu
X2hhbmRsZVZhbHVlQ2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eS5wcm90b3R5cGUuX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92
aWRlcik6CisgICAgICAgIE9uIGNoYW5nZSwgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgYFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkYCBpbnN0ZWFkIG9mIAorICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50J3MgYHRleHRDb250ZW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRUZXh0RmllbGQuanM6CisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0
VGV4dEZpZWxkLl9jb21wbGV0aW9uUHJlZml4YCB0byBob2xkIHRoZSBxdWVyeSBhIHVzZXIgaXMg
dHlwaW5nLgorCisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9jb21w
bGV0aW9uVGV4dGAgdG8gaG9sZCB0aGUgY29tcGxldGlvbiB0ZXh0IG9mIHRoZSBzZWxlY3RlZCBi
dXQKKyAgICAgICAgbm90IHlldCBhcHBsaWVkIGNvbXBsZXRpb24uIFRoaXMgcmVwbGFjZXMgdGhl
IHByZXZpb3VzIGJlaGF2aW9yIG9mIGNvbmNhdGVuYXRpbmcgdGhlIHF1ZXJ5IGFuZCBgc3VnZ2Vz
dGlvbkhpbnRgCisgICAgICAgIGJlY2F1c2Ugd2l0aCBmdXp6eSBtYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBpc24ndCBndWFyYW50ZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorCisg
ICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHRv
IGhvbGQgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgc2VsZWN0ZWQKKyAgICAgICAgY29tcGxl
dGlvbi4gVGhpcyByZXBsYWNlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3Igb2YgYFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuYC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGRgIHNvIGl0cyB2YWx1ZSBpcyBkaXZvcmNlZCBmcm9tIGl0cyBlbGVtZW50J3MgYHRl
eHRDb250ZW50YC4KKyAgICAgICAgV2hpbGUgZWRpdGluZywgYFdJLlNwcmVhZHNoZWV0VGV4dEZp
ZWxkLnZhbHVlYCByZXR1cm5zIHRoZSBwZW5kaW5nIHZhbHVlIHNvIHRoYXQKKyAgICAgICAgYSB2
YWxpZCBDU1Mgc3RyaW5nIGdldHMgd3JpdHRlbiB0byB0aGUgc3R5bGVzaGVldC4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBzdWdnZXN0aW9uSGludCk6
CisgICAgICAgIElmIHRoZSBxdWVyeSBpcyBhIHByZWZpeCBmb3IgdGhlIHNlbGVjdGVkIGNvbXBs
ZXRpb24sIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIGFwcGVuZGluZworICAgICAgICB0
aGUgc3VnZ2VzdGlvbiBoaW50IHN1YnN0cmluZy4gT3RoZXJ3aXNlLCBoaWRlIHRoZSBzdWdnZXN0
aW9uIGhpbnQgZWxlbWVudCBiZWNhdXNlIHRoZQorICAgICAgICBjb25jYXRlbmF0aW9uIGRvZXNu
J3QgbWFrZSBzZW5zZS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90
eXBlLnN0b3BFZGl0aW5nKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3Rv
dHlwZS5kaXNjYXJkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNDbGlja2VkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuX2Rpc2NhcmRDaGFuZ2UpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQucHJvdG90eXBlLl9oYW5kbGVCbHVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXSS5TcHJlYWRzaGVl
dFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25Gb3JTdWdnZXN0aW9uVmlldyk6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUlucHV0KToK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29tcGxl
dGlvbnMpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBs
eVBlbmRpbmdWYWx1ZSk6CisgICAgICAgIEFmdGVyIGFwcGx5aW5nIGEgY29tcGxldGlvbiwgdGhl
IHZhbHVlIGlzIHJlcGxhY2VkIHdpdGggYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5n
VmFsdWVgLgorICAgICAgICBBdCB0aGlzIHBvaW50LCBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
dmFsdWVgIGFuZCB0aGUgYHRleHRDb250ZW50YCBvZiB0aGUgZWxlbWVudCBjb252ZXJnZS4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl91cGRhdGVQZW5kaW5n
VmFsdWVXaXRoQ29tcGxldGlvblRleHQpOgorICAgICAgICBXaGVuIHByZXNlbnRlZCB3aXRoIGEg
Y29tcGxldGlvbiwgdGhlIHF1ZXJ5IGdldHMgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgZnVsbCBjb21w
bGV0aW9uIHRleHQgaW4gCisgICAgICAgIGBXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5fcGVuZGlu
Z1ZhbHVlYCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHF1ZXJ5IGlzIGEgcHJlZml4IG9yIG5v
dC4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNv
bXBsZXRpb25IaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5fY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbik6IERlbGV0ZWQuCisKIDIw
MjEtMTEtMTcgIE5pa2l0YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQWRkIGEgc3dhdGNoIGZvciBhbGlnbi1jb250ZW50CkBAIC05MCw3
ICsyMDgsNyBAQAogICAgICAgICBGaWxsIGluIHRoZSBhcmVhIHJlcHJlc2VudGluZyBXZWIgSW5z
cGVjdG9yIGFuZCBtYWtlIGl0IGEgYml0IHNtYWxsZXIgc28gaXQncyBub3QgYXMgaGVhdnkuCiAK
ICAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6Ci0K
KyAgICAgICAgCiAyMDIxLTExLTE2ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSB1bnVzZWQgYGRvbnRDcmVhdGVJ
Zk1pc3NpbmdgIGFyZ3VtZW50IGZyb20gQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUucHJv
cGVydHlGb3JOYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0
aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBlNWJlOTVi
MTk3OWJkM2YxYWMyMDVkMTYwZjQ5NmM4YWRmM2QyZTkzLi5hMjU3NDNkMzNkMGQ4YjJmMzZjNGNi
ZjZmMGExNzgxYjNkMzE2NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9j
YWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAg
LTE2MDcsNiArMTYwNyw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlVzYWdlOiAlcyJdID0gIlVzYWdl
OiAlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIl0gPSAiVXNl
IERlZmF1bHQgQXBwZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgTW9jayBDYXB0dXJl
IERldmljZXMiXSA9ICJVc2UgTW9jayBDYXB0dXJlIERldmljZXMiOwogbG9jYWxpemVkU3RyaW5n
c1siVXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIl0gPSAiVXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVz
IjsKK2xvY2FsaXplZFN0cmluZ3NbIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBz
dWdnZXN0aW9ucyJdID0gIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0
aW9ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9h
ZGluZyByZXNvdXJjZXMiXSA9ICJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyBy
ZXNvdXJjZXMiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQi
OwogbG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIgQWdl
bnQgU3R5bGUgU2hlZXQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IGQyZWIyNWI3ZWNlMWE4NDE4MTkyZDE2YjJhMmJl
NDZiZTJlNjNhMzMuLmQwMzczOWUwYzAzNjU2MWUyNzYyNjE5ZWJmNTEzNTI5NjBkM2Q4YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGlu
Zy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanMKQEAgLTIzMSw2ICsyMzEsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBleHBlcmltZW50
YWxFbmFibGVTdHlsZXNKdW1wVG9WYXJpYWJsZURlY2xhcmF0aW9uOiBuZXcgV0kuU2V0dGluZygi
ZXhwZXJpbWVudGFsLXN0eWxlcy1qdW1wLXRvLXZhcmlhYmxlLWRlY2xhcmF0aW9uIiwgZmFsc2Up
LAogICAgIGV4cGVyaW1lbnRhbENvbGxhcHNlQmxhY2tib3hlZENhbGxGcmFtZXM6IG5ldyBXSS5T
ZXR0aW5nKCJleHBlcmltZW50YWwtY29sbGFwc2UtYmxhY2tib3hlZC1jYWxsLWZyYW1lcyIsIGZh
bHNlKSwKICAgICBleHBlcmltZW50YWxBbGxvd0luc3BlY3RpbmdJbnNwZWN0b3I6IG5ldyBXSS5T
ZXR0aW5nKCJleHBlcmltZW50YWwtYWxsb3ctaW5zcGVjdGluZy1pbnNwZWN0b3IiLCBmYWxzZSks
CisgICAgZXhwZXJpbWVudGFsQ1NTQ29tcGxldGlvbkZ1enp5TWF0Y2hpbmc6IG5ldyBXSS5TZXR0
aW5nKCJleHBlcmltZW50YWwtY3NzLWNvbXBsZXRpb24tZnV6enktbWF0Y2hpbmciLCBmYWxzZSks
CiAKICAgICAvLyBQcm90b2NvbAogICAgIHByb3RvY29sTG9nQXNUZXh0OiBuZXcgV0kuU2V0dGlu
ZygicHJvdG9jb2wtbG9nLWFzLXRleHQiLCBmYWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDJkOTE5NjA1
ZmYyM2IzMjBkOWRiNDk3MjdiZTIxMTQ4NzFmNmZjN2UuLmEzMzAwNGI1N2UyMTc2YTg0ZjhjNjAx
ZDM3YzE1ZDJhZmE5OGQ5ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03NzMsNyArNzczLDcgQEAgT2JqZWN0
LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJpc0xvd2VyQ2FzZSIsCiB7CiAgICAg
dmFsdWUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzKSA9PT0gdGhpcy50b0xv
d2VyQ2FzZSgpOworICAgICAgICByZXR1cm4gbmV3IFJlZ0V4cChgW2Etel17JHt0aGlzLmxlbmd0
aH19YCkudGVzdCh0aGlzKTsKICAgICB9CiB9KTsKIApAQCAtNzgxLDcgKzc4MSw3IEBAIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShTdHJpbmcucHJvdG90eXBlLCAiaXNVcHBlckNhc2UiLAogewogICAg
IHZhbHVlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJpbmcodGhpcykgPT09IHRoaXMudG9V
cHBlckNhc2UoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoYFtBLVpdeyR7dGhpcy5sZW5n
dGh9fWApLnRlc3QodGhpcyk7CiAgICAgfQogfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1F1
ZXJ5Q29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTEyNDQ5MzE3OTViMTFhYTVjYzE2YWRlYWZj
Yjk5NzFjMjM5ZmMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzCkBAIC0wLDAgKzEs
MTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuQ1NTUXVlcnlDb250cm9sbGVyID0gY2xhc3MgQ1NTUXVl
cnlDb250cm9sbGVyIGV4dGVuZHMgV0kuUXVlcnlDb250cm9sbGVyCit7CisgICAgY29uc3RydWN0
b3IodmFsdWVzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNBcnJheSh2
YWx1ZXMpLCB2YWx1ZXMpOworCisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fdmFs
dWVzID0gdmFsdWVzIHx8IFtdOworICAgICAgICB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hhcmFjdGVy
SW5kaWNlc0ZvclZhbHVlTWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKwor
ICAgIGFkZFZhbHVlcyh2YWx1ZXMpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChBcnJh
eS5pc0FycmF5KHZhbHVlcyksIHZhbHVlcyk7CisgICAgICAgIGlmICghdmFsdWVzLmxlbmd0aCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbCh2YWx1
ZXMpOworICAgIH0KKworICAgIHJlc2V0KCkKKyAgICB7CisgICAgICAgIHRoaXMuX3ZhbHVlcyA9
IFtdOworICAgICAgICB0aGlzLl9jYWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVl
TWFwLmNsZWFyKCk7CisgICAgfQorCisgICAgZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KQorICAgIHsKKyAg
ICAgICAgaWYgKCFxdWVyeSB8fCAhdGhpcy5fdmFsdWVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJl
dHVybiBbXTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnRvTG93ZXJDYXNlKCk7CisKKyAgICAg
ICAgbGV0IHJlc3VsdHMgPSBbXTsKKworICAgICAgICBmb3IgKGxldCB2YWx1ZSBvZiB0aGlzLl92
YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkU3BlY2lhbENoYXJhY3Rlcklu
ZGljZXNGb3JWYWx1ZU1hcC5oYXModmFsdWUpKQorICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hl
ZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAuc2V0KHZhbHVlLCB0aGlzLl9maW5k
U3BlY2lhbENoYXJhY3RlckluZGljZXModmFsdWUpKTsKKworICAgICAgICAgICAgbGV0IG1hdGNo
ZXMgPSB0aGlzLmZpbmRRdWVyeU1hdGNoZXMocXVlcnksIHZhbHVlLnRvTG93ZXJDYXNlKCksIHRo
aXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAuZ2V0KHZhbHVlKSk7
CisgICAgICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzdWx0
cy5wdXNoKG5ldyBXSS5RdWVyeVJlc3VsdCh2YWx1ZSwgbWF0Y2hlcykpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdHMuc29ydCgoYSwgYikgPT4geworICAgICAgICAgICAgaWYg
KGEucmFuayA9PT0gYi5yYW5rKQorICAgICAgICAgICAgICAgIHJldHVybiBhLnZhbHVlLmV4dGVu
ZGVkTG9jYWxlQ29tcGFyZShiLnZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBiLnJhbmsgLSBh
LnJhbms7CisgICAgICAgIH0pOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9maW5k
U3BlY2lhbENoYXJhY3RlckluZGljZXMoc3RyaW5nKQorICAgIHsKKyAgICAgICAgaWYgKCFzdHJp
bmcubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIGNvbnN0IHNlcGFy
YXRvcnMgPSAiLV8iOworCisgICAgICAgIC8vIFNwZWNpYWwgY2hhcmFjdGVycyBpbmNsdWRlIHRo
ZSBmb2xsb3dpbmc6CisgICAgICAgIC8vIDEuIFRoZSBmaXJzdCBjaGFyYWN0ZXIuCisgICAgICAg
IC8vIDIuIFVwcGVyY2FzZSBjaGFyYWN0ZXJzIHRoYXQgZm9sbG93IGEgbG93ZXJjYXNlIGxldHRl
ci4KKyAgICAgICAgLy8gMy4gU2VwYXJhdG9ycyBhbmQgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xs
b3dpbmcgdGhlIHNlcGFyYXRvci4KKyAgICAgICAgbGV0IGluZGljZXMgPSBbMF07CisKKyAgICAg
ICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzdHJpbmcubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IGxldCBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07CisgICAgICAgICAgICBsZXQgaXNTcGVjaWFsID0g
ZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChzZXBhcmF0b3JzLmluY2x1ZGVzKGNoYXJhY3Rlcikp
CisgICAgICAgICAgICAgICAgaXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c0NoYXJhY3RlciA9IHN0cmluZ1tpIC0gMV07Cisg
ICAgICAgICAgICAgICAgaWYgKHNlcGFyYXRvcnMuaW5jbHVkZXMocHJldmlvdXNDaGFyYWN0ZXIp
KQorICAgICAgICAgICAgICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGNoYXJhY3Rlci5pc1VwcGVyQ2FzZSgpICYmIHByZXZpb3VzQ2hhcmFjdGVyLmlz
TG93ZXJDYXNlKCkpCisgICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc1NwZWNpYWwpCisgICAgICAgICAgICAgICAg
aW5kaWNlcy5wdXNoKGkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluZGljZXM7Cisg
ICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRt
bAppbmRleCA2YjVmNGQ5ODJhNWZiNzJiOGVmMTRjNmEyMDYwYzEwMmZhOWEwZjNmLi43MjkzZWY0
YmI1NDc0ZDlhYTVmNjI4NzhkNTI5NzM1NzYzMDNlMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC05MjcsNiArOTI3LDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFnZXIuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1J1bnRpbWVNYW5h
Z2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGFyZ2V0TWFu
YWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKaW5kZXggYzQ2ODE1MGY3
MzFkYzllYTA5MWNhYzM4YjAwNWM2ZWUxOGY2ZjEzZS4uMGQ5Yzk0ZTNlNGUxOWU2MDUzODlhMzcz
Nzg1NTVjNGVmM2IxYmRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcwpAQCAtNTgsNiArNTgs
NyBAQCBXSS5DU1NDb21wbGV0aW9ucyA9IGNsYXNzIENTU0NvbXBsZXRpb25zCiAgICAgICAgIHRo
aXMuX3ZhbHVlcy5zb3J0KCk7CiAKICAgICAgICAgdGhpcy5fYWNjZXB0RW1wdHlQcmVmaXggPSBh
Y2NlcHRFbXB0eVByZWZpeDsKKyAgICAgICAgdGhpcy5fcXVlcnlDb250cm9sbGVyID0gbnVsbDsK
ICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTI1Myw2ICsyNTQsMTUgQEAgV0kuQ1NTQ29tcGxl
dGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogCiAgICAgICAgIHRoaXMuX3ZhbHVlcy5wdXNo
QWxsKHZhbHVlcyk7CiAgICAgICAgIHRoaXMuX3ZhbHVlcy5zb3J0KCk7CisKKyAgICAgICAgdGhp
cy5fcXVlcnlDb250cm9sbGVyPy5hZGRWYWx1ZXModmFsdWVzKTsKKyAgICB9CisKKyAgICBleGVj
dXRlUXVlcnkocXVlcnkpCisgICAgeworICAgICAgICB0aGlzLl9xdWVyeUNvbnRyb2xsZXIgfHw9
IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIodGhpcy5fdmFsdWVzKTsKKworICAgICAgICByZXR1
cm4gdGhpcy5fcXVlcnlDb250cm9sbGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CiAgICAgfQogCiAg
ICAgc3RhcnRzV2l0aChwcmVmaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5q
cwppbmRleCAyMTQ5NTUwZjgzNmE0Y2QwZGZkNTNhOGIwYzJiMDY4Zjg2YmI3NzA0Li4wNGNiOGM2
ZGY1YzgxYjJkMjIzNzRjZTZlYmMwNGViNmM4NDczN2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENvbXBsZXRpb25zLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3
b3JkQ29tcGxldGlvbnMuanMKQEAgLTMxLDcgKzMxLDcgQEAKIAogV0kuQ1NTS2V5d29yZENvbXBs
ZXRpb25zID0ge307CiAKLVdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVy
dHlOYW1lID0gZnVuY3Rpb24odGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9
ID0ge30pCitXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSA9
IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4LCB1c2VGdXp6
eU1hdGNoaW5nfSA9IHt9KQogewogICAgIGNhcmV0UG9zaXRpb24gPz89IHRleHQubGVuZ3RoOwog
ICAgIGFsbG93RW1wdHlQcmVmaXggPz89IGZhbHNlOwpAQCAtNDIsMTAgKzQyLDE3IEBAIFdJLkNT
U0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlOYW1lID0gZnVuY3Rpb24odGV4
dCwge2NhcmV0UG9zaXRpb24sCiAKICAgICBpZiAoIXRleHQubGVuZ3RoICYmIGFsbG93RW1wdHlQ
cmVmaXgpCiAgICAgICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uczogV0kuQ1NT
Q29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnZhbHVlc307Ci0gICAgcmV0dXJuIHtwcmVm
aXg6IHRleHQsIGNvbXBsZXRpb25zOldJLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0aW9u
cy5zdGFydHNXaXRoKHRleHQpfTsKKworICAgIGxldCBjb21wbGV0aW9uczsKKyAgICBpZiAodXNl
RnV6enlNYXRjaGluZykKKyAgICAgICAgY29tcGxldGlvbnMgPSBXSS5DU1NDb21wbGV0aW9ucy5j
c3NOYW1lQ29tcGxldGlvbnMuZXhlY3V0ZVF1ZXJ5KHRleHQpOworICAgIGVsc2UKKyAgICAgICAg
Y29tcGxldGlvbnMgPSBXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3RhcnRz
V2l0aCh0ZXh0KTsKKworICAgIHJldHVybiB7cHJlZml4OiB0ZXh0LCBjb21wbGV0aW9uc307CiB9
OwogCi1XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBm
dW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVu
Y3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXJ9ID0ge30pCitXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5h
bWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJv
dmlkZXIsIHVzZUZ1enp5TWF0Y2hpbmd9ID0ge30pCiB7CiAgICAgY2FyZXRQb3NpdGlvbiA/Pz0g
dGV4dC5sZW5ndGg7CiAKQEAgLTg2LDEwICs5MywxNSBAQCBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUs
CiAgICAgaWYgKChjYXJldElzSW5NaWRkbGVPZlRva2VuICYmIGN1cnJlbnRUb2tlblZhbHVlLmxl
bmd0aCkgfHwgKCFjYXJldElzSW5NaWRkbGVPZlRva2VuICYmIHRva2VuQWZ0ZXJDYXJldCAmJiAv
W2EtekEtWjAtOS1dLy50ZXN0KHRva2VuQWZ0ZXJDYXJldC52YWx1ZVswXSkpKQogICAgICAgICBy
ZXR1cm4ge3ByZWZpeDogIiIsIGNvbXBsZXRpb25zOiBbXX07CiAKLSAgICAvLyBJZiB0aGUgY3Vy
cmVudCB0b2tlbiB2YWx1ZSBpcyBhIGNvbW1hIG9yIG9wZW5pbmcgcGFyZW50aGVzaXMsIHRyZWF0
IGl0IGFzIGlmIHdlIGFyZSBhdCB0aGUgc3RhcnQgb2YgYSBuZXcgdG9rZW4uCisgICAgLy8gSWYg
dGhlIGN1cnJlbnQgdG9rZW4gdmFsdWUgaXMgYSBjb21tYSBvciBvcGVuIHBhcmVudGhlc2lzLCB0
cmVhdCBpdCBhcyBpZiB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgbmV3IHRva2VuLgogICAgIGlm
IChjdXJyZW50VG9rZW5WYWx1ZSA9PT0gIigiIHx8IGN1cnJlbnRUb2tlblZhbHVlID09PSAiLCIp
CiAgICAgICAgIGN1cnJlbnRUb2tlblZhbHVlID0gIiI7CiAKKyAgICAvLyBJdCdzIG5vdCB2YWxp
ZCBDU1MgdG8gYXBwZW5kIGNvbXBsZXRpb25zIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2xvc2luZyBw
YXJlbnRoZXNpcy4KKyAgICBsZXQgdG9rZW5CZWZvcmVDYXJldCA9IHRva2Vuc1tpbmRleE9mVG9r
ZW5BdENhcmV0IC0gMV07CisgICAgaWYgKGN1cnJlbnRUb2tlblZhbHVlID09PSAiKSIgfHwgdG9r
ZW5CZWZvcmVDYXJldD8udmFsdWUudHJpbSgpID09PSAiKSIpCisgICAgICAgIHJldHVybiB7cHJl
Zml4OiAiIiwgY29tcGxldGlvbnM6IFtdfTsKKwogICAgIGxldCBmdW5jdGlvbk5hbWUgPSBudWxs
OwogICAgIGxldCBwcmVjZWVkaW5nRnVuY3Rpb25EZXB0aCA9IDA7CiAgICAgZm9yIChsZXQgaSA9
IGluZGV4T2ZUb2tlbkF0Q2FyZXQ7IGkgPj0gMDsgLS1pKSB7CkBAIC0xMDgsMTQgKzEyMCwyMCBA
QCBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5j
dGlvbih0ZXh0LCBwcm9wZXJ0eU5hbWUsCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBsZXQgdmFs
dWVDb21wbGV0aW9uczsKICAgICBpZiAoZnVuY3Rpb25OYW1lKSB7Ci0gICAgICAgIGxldCBjb21w
bGV0aW9ucyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JGdW5jdGlvbihmdW5jdGlvbk5h
bWUpOwotICAgICAgICBsZXQgY29udGV4dHVhbFZhbHVlQ29tcGxldGlvbnMgPSBhZGRpdGlvbmFs
RnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI/LihmdW5jdGlvbk5hbWUpIHx8IFtdOwot
ICAgICAgICBjb21wbGV0aW9ucy5hZGRWYWx1ZXMoY29udGV4dHVhbFZhbHVlQ29tcGxldGlvbnMp
OwotICAgICAgICByZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25z
OiBjb21wbGV0aW9ucy5zdGFydHNXaXRoKGN1cnJlbnRUb2tlblZhbHVlKX07Ci0gICAgfQorICAg
ICAgICB2YWx1ZUNvbXBsZXRpb25zID0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0
aW9uKGZ1bmN0aW9uTmFtZSk7CisgICAgICAgIHZhbHVlQ29tcGxldGlvbnMuYWRkVmFsdWVzKGFk
ZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlcj8uKGZ1bmN0aW9uTmFtZSkg
Pz8gW10pOworICAgIH0gZWxzZQorICAgICAgICB2YWx1ZUNvbXBsZXRpb25zID0gV0kuQ1NTS2V5
d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisKKyAgICBsZXQgY29t
cGxldGlvbnM7CisgICAgaWYgKHVzZUZ1enp5TWF0Y2hpbmcpCisgICAgICAgIGNvbXBsZXRpb25z
ID0gdmFsdWVDb21wbGV0aW9ucy5leGVjdXRlUXVlcnkoY3VycmVudFRva2VuVmFsdWUpOworICAg
IGVsc2UKKyAgICAgICAgY29tcGxldGlvbnMgPSB2YWx1ZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgo
Y3VycmVudFRva2VuVmFsdWUpOwogCi0gICAgcmV0dXJuIHtwcmVmaXg6IGN1cnJlbnRUb2tlblZh
bHVlLCBjb21wbGV0aW9uczogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHBy
b3BlcnR5TmFtZSkuc3RhcnRzV2l0aChjdXJyZW50VG9rZW5WYWx1ZSl9OworICAgIHJldHVybiB7
cHJlZml4OiBjdXJyZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnN9OwogfTsKIAogV0kuQ1NTS2V5
d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5
UmVzdWx0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1
ZXJ5UmVzdWx0LmpzCmluZGV4IDhmMjZkYzIwOGY2MTk4OWE2ZmE0MThjZjk4ZDE1MmEyOTU4ZTc1
MDMuLjVmZWVkYTM0YmExOGYwNGViNGJhNWU5MGRjNWMxNzcwOGRkNjg0MjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlS
ZXN1bHQuanMKQEAgLTM2LDYgKzM2LDcgQEAgV0kuUXVlcnlSZXN1bHQgPSBjbGFzcyBRdWVyeVJl
c3VsdAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFs
dWU7IH0KKyAgICBnZXQgbWF0Y2hlcygpIHsgcmV0dXJuIHRoaXMuX21hdGNoZXM7IH0KIAogICAg
IGdldCByYW5rKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKaW5kZXggYzMwMGJjMGM5NzhlMjYwNzE1YTg4ODVmZjhiMjAzNTgyM2NjYzg4
OS4uNzc3MTkwNjVkZDMwNmUyOTJhYjU0ZGJiZDhiNzEzNWFlMjdhNWIwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjUzLDYgKzI1Myw3
IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Ccm93c2VyTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NRdWVyeUNv
bnRyb2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DYW52
YXNNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29u
c29sZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9E
T01EZWJ1Z2dlck1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9u
U3VnZ2VzdGlvbnNWaWV3LmNzcwppbmRleCA2NjdhMDIzZTc5YTNhZWU3MTk4MjY1NmUxYzM2YTA1
NDAyMzM3MjUzLi44YTRlZGNmMDZlMDZmMWI4YmFjYWYyYjFkMWNkYTc5MWI1MzcxZjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcwpAQCAtNzAsNiArNzAs
MTAgQEAKICAgICBjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiB9CiAKKy5jb21wbGV0aW9uLXN1
Z2dlc3Rpb25zLWNvbnRhaW5lciA+IC5pdGVtID4gLm1hdGNoZWQgeworICAgIGZvbnQtd2VpZ2h0
OiBib2xkOworfQorCiAuY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXI6bm90KDphY3Rp
dmUpID4gLml0ZW0uc2VsZWN0ZWQsCiAuY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIg
PiAuaXRlbTphY3RpdmUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdGVkLWJh
Y2tncm91bmQtY29sb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcu
anMKaW5kZXggODM2ODMyOWQzMGY3YmVjMGMxNGU0M2VmMzdlNjlhMjIwZjRlMjNmMi4uMTE1MjY0
Njg3MzdhNWE2MWM4NTdmNzA5YjhmYmVjN2QwNjJjMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCkBAIC0zMiw2ICszMiw3IEBAIFdJLkNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKICAg
ICAgICAgdGhpcy5fcHJldmVudEJsdXIgPSBwcmV2ZW50Qmx1ciB8fCBmYWxzZTsKIAorICAgICAg
ICB0aGlzLl9jb21wbGV0aW9ucyA9IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0g
TmFOOwogICAgICAgICB0aGlzLl9tb3ZlSW50ZXJ2YWxJZGVudGlmaWVyID0gbnVsbDsKIApAQCAt
ODksOSArOTAsOCBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICArK3RoaXMuc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVt
RWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3Rl
ZEl0ZW1FbGVtZW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5j
b21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCi0g
ICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENv
bXBsZXRpb24odGhpcywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAg
IGlmICh0aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKQorICAgICAgICAgICAg
dGhpcy5fZGVsZWdhdGU/LmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8u
KHRoaXMsIHRoaXMuZ2V0Q29tcGxldGlvblRleHQodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxl
Y3RlZEluZGV4XSkpOwogICAgIH0KIAogICAgIHNlbGVjdFByZXZpb3VzKCkKQEAgLTEwMSw5ICsx
MDEsOCBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAtLXRoaXMuc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtRWxlbWVu
dCA9IHRoaXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1F
bGVtZW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0
aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCi0gICAgICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRp
b24odGhpcywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAgIGlmICh0
aGlzLl9jb21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKQorICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGU/LmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8uKHRoaXMs
IHRoaXMuZ2V0Q29tcGxldGlvblRleHQodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZElu
ZGV4XSkpOwogICAgIH0KIAogICAgIGlzSGFuZGxpbmdDbGlja0V2ZW50KCkKQEAgLTE3NSwyMiAr
MTc0LDM5IEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9u
U3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgdXBkYXRlKGNvbXBsZXRpb25z
LCBzZWxlY3RlZEluZGV4KQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5y
ZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25z
OwogCiAgICAgICAgIGlmICh0eXBlb2Ygc2VsZWN0ZWRJbmRleCA9PT0gIm51bWJlciIpCiAgICAg
ICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGNvbXBsZXRpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZv
ciAobGV0IFtpbmRleCwgY29tcGxldGlvbl0gb2YgY29tcGxldGlvbnMuZW50cmllcygpKSB7CiAg
ICAgICAgICAgICB2YXIgaXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKLSAgICAg
ICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdGVkIiwgaSA9PT0gdGhp
cy5fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgICAgICBpdGVtRWxlbWVudC50ZXh0Q29udGVudCA9
IGNvbXBsZXRpb25zW2ldOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBl
bmRDaGlsZChpdGVtRWxlbWVudCk7CisgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3Qu
dG9nZ2xlKCJzZWxlY3RlZCIsIGluZGV4ID09PSB0aGlzLl9zZWxlY3RlZEluZGV4KTsKIAotICAg
ICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3Q3VzdG9taXplQ29tcGxldGlvbkVsZW1lbnQgPT09ICJmdW5j
dGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rp
b25zVmlld0N1c3RvbWl6ZUNvbXBsZXRpb25FbGVtZW50KHRoaXMsIGl0ZW1FbGVtZW50LCBjb21w
bGV0aW9uc1tpXSk7CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBsZXRpb24gPT09ICJzdHJp
bmciKQorICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gY29tcGxldGlv
bjsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBsZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVyeVJl
c3VsdCkKKyAgICAgICAgICAgICAgICBpdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVh
dGVNYXRjaGVkQ29tcGxldGlvbkZyYWdtZW50KGNvbXBsZXRpb24udmFsdWUsIGNvbXBsZXRpb24u
bWF0Y2hpbmdUZXh0UmFuZ2VzKSk7CisKKyAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQuYXBwZW5kQ2hpbGQoaXRlbUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGU/
LmNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21wbGV0aW9uRWxlbWVudD8uKHRo
aXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGdl
dENvbXBsZXRpb25UZXh0KGNvbXBsZXRpb24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0eXBlb2YgY29tcGxldGlvbiA9PT0gInN0cmluZyIgfHwgY29tcGxldGlvbiBpbnN0YW5jZW9m
IFdJLlF1ZXJ5UmVzdWx0LCBjb21wbGV0aW9uKTsKKworICAgICAgICBpZiAodHlwZW9mIGNvbXBs
ZXRpb24gPT09ICJzdHJpbmciKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb247CisKKyAg
ICAgICAgaWYgKGNvbXBsZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVyeVJlc3VsdCkKKyAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uLnZhbHVlOworCisgICAgICAgIHJldHVybiAiIjsKKyAgICB9
CisKICAgICAvLyBQcml2YXRlCiAKICAgICBnZXQgX3NlbGVjdGVkSXRlbUVsZW1lbnQoKQpAQCAt
MjAzLDYgKzIxOSwzMSBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29t
cGxldGlvblN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICB9CiAKKyAgICBfY3JlYXRlTWF0Y2hlZENvbXBsZXRpb25GcmFnbWVudChj
b21wbGV0aW9uVGV4dCwgbWF0Y2hpbmdUZXh0UmFuZ2VzKQorICAgIHsKKyAgICAgICAgbGV0IGNv
bXBsZXRpb25GcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAg
ICAgICAgbGV0IGxhc3RJbmRleCA9IDA7CisgICAgICAgIGZvciAobGV0IHRleHRSYW5nZSBvZiBt
YXRjaGluZ1RleHRSYW5nZXMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5n
ZS5zdGFydENvbHVtbiA+PSAwICYmIHRleHRSYW5nZS5zdGFydENvbHVtbiA8IGNvbXBsZXRpb25U
ZXh0Lmxlbmd0aCwgdGV4dFJhbmdlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRS
YW5nZS5lbmRDb2x1bW4gPiAwICYmIHRleHRSYW5nZS5lbmRDb2x1bW4gPD0gY29tcGxldGlvblRl
eHQubGVuZ3RoLCB0ZXh0UmFuZ2UpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGV4dFJh
bmdlLnN0YXJ0Q29sdW1uIDwgdGV4dFJhbmdlLmVuZENvbHVtbik7CisKKyAgICAgICAgICAgIGlm
ICh0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4gPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkZyYWdtZW50LmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4
LCB0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4pKTsKKworICAgICAgICAgICAgbGV0IG1hdGNoZWRTcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgbWF0Y2hlZFNw
YW4uY2xhc3NMaXN0LmFkZCgibWF0Y2hlZCIpOworICAgICAgICAgICAgbWF0Y2hlZFNwYW4uYXBw
ZW5kKGNvbXBsZXRpb25UZXh0LnN1YnN0cmluZyh0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4sIHRleHRS
YW5nZS5lbmRDb2x1bW4pKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25GcmFnbWVudC5hcHBlbmQo
bWF0Y2hlZFNwYW4pOworICAgICAgICAgICAgbGFzdEluZGV4ID0gdGV4dFJhbmdlLmVuZENvbHVt
bjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXN0SW5kZXggPCBjb21wbGV0aW9uVGV4dC5s
ZW5ndGgpCisgICAgICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGNvbXBsZXRpb25U
ZXh0LnN1YnN0cmluZyhsYXN0SW5kZXgsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCkpOworCisgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uRnJhZ21lbnQ7CisgICAgfQorCiAgICAgX21vdXNlRG93bihl
dmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2V0dGluZ3NUYWJDb250ZW50Vmlldy5qcwppbmRleCA1ZTQ5ZmY5NjNkZmMzYzUwNzYxM2Y1OTM4
ZTFjNTNmYzY3NTc2ZmQ0Li5kYWE5OTQ5MGY3ZjZmNGRhZGMwNjQ2N2IzYzM1ODRjYzMzNDAxOTVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
ZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTM5Nyw2ICszOTcs
NyBAQCBXSS5TZXR0aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgbGV0IHN0eWxlc0dyb3Vw
ID0gZXhwZXJpbWVudGFsU2V0dGluZ3NWaWV3LmFkZEdyb3VwKFdJLlVJU3RyaW5nKCJTdHlsZXM6
IikpOwogICAgICAgICAgICAgc3R5bGVzR3JvdXAuYWRkU2V0dGluZyhXSS5zZXR0aW5ncy5leHBl
cmltZW50YWxFbmFibGVTdHlsZXNKdW1wVG9FZmZlY3RpdmUsIFdJLlVJU3RyaW5nKCJTaG93IGp1
bXAgdG8gZWZmZWN0aXZlIHByb3BlcnR5IGJ1dHRvbiIpKTsKICAgICAgICAgICAgIHN0eWxlc0dy
b3VwLmFkZFNldHRpbmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRv
VmFyaWFibGVEZWNsYXJhdGlvbiwgV0kuVUlTdHJpbmcoIlNob3cganVtcCB0byB2YXJpYWJsZSBk
ZWNsYXJhdGlvbiBidXR0b24iKSk7CisgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5n
KFdJLnNldHRpbmdzLmV4cGVyaW1lbnRhbENTU0NvbXBsZXRpb25GdXp6eU1hdGNoaW5nLCBXSS5V
SVN0cmluZygiVXNlIGZ1enp5IG1hdGNoaW5nIGZvciBjb21wbGV0aW9uIHN1Z2dlc3Rpb25zIikp
OwogCiAgICAgICAgICAgICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwppbmRl
eCA1MmM4NzMzMTVjZGQ4MzM0NGY1MjRkM2RlNTBjZmMyMDRiZTQ4YTRiLi5kOTRkNzE1ZjU0YjZm
YWU1YzI1MzgzMmIzYWM0MDIyZTU1YmQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRT
dHlsZVByb3BlcnR5LmpzCkBAIC05MzYsMTIgKzkzNiwxMiBAQCBXSS5TcHJlYWRzaGVldFN0eWxl
UHJvcGVydHkgPSBjbGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIF9oYW5kbGVOYW1lQ2hhbmdlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Byb3Bl
cnR5Lm5hbWUgPSB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7CisgICAgICAg
IHRoaXMuX3Byb3BlcnR5Lm5hbWUgPSB0aGlzLl9uYW1lVGV4dEZpZWxkLnZhbHVlOwogICAgIH0K
IAogICAgIF9oYW5kbGVWYWx1ZUNoYW5nZSgpCiAgICAgewotICAgICAgICBsZXQgdmFsdWUgPSB0
aGlzLl92YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMu
X3ZhbHVlVGV4dEZpZWxkLnZhbHVlOwogCiAgICAgICAgIHRoaXMuX3Byb3BlcnR5LnJhd1ZhbHVl
ID0gdmFsdWUudHJpbSgpOwogCkBAIC05NzUsOSArOTc1LDkgQEAgV0kuU3ByZWFkc2hlZXRTdHls
ZVByb3BlcnR5ID0gY2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIo
dGV4dCwge2NhcmV0UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9ID0ge30pCisgICAgX25hbWVD
b21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIG9wdGlvbnMgPSB7fSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSh0
ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0pOworICAgICAgICByZXR1cm4g
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwgb3B0
aW9ucyk7CiAgICAgfQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3JlSW5wdXQoZXZlbnQpCkBAIC05
OTksOSArOTk5LDEwIEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVh
ZHNoZWV0U3R5bGVQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLnNwcmVh
ZHNoZWV0VGV4dEZpZWxkRGlkQ29tbWl0KHRoaXMuX3ZhbHVlVGV4dEZpZWxkLCB7ZGlyZWN0aW9u
OiAiZm9yd2FyZCJ9KTsKICAgICB9CiAKLSAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVy
KHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF92YWx1
ZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwgb3B0aW9ucyA9IHt9KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1
ZSh0ZXh0LCB0aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCksIHtjYXJldFBvc2l0
aW9uLCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI6IHRoaXMuYWRk
aXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQodGhpcyl9KTsKKyAg
ICAgICAgb3B0aW9ucy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXIg
PSB0aGlzLmFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRo
aXMpOworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQ
cm9wZXJ0eVZhbHVlKHRleHQsIHRoaXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSwg
b3B0aW9ucyk7CiAgICAgfQogCiAgICAgX3NldHVwSnVtcFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRz
aGVldFRleHRGaWVsZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCmluZGV4IDFkMmFiNGEyZTk4NDQ0Yjc1ZWFiNTAw
NjM3YmY0NGIyZjNiMGNiMjQuLjgxZmYwNWJlMDRiZWUxYTJiYjY3Mzg1NDJkMWRiODM1ZTNhMjdm
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCkBAIC0yOSw2ICsyOSw3IEBA
IFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAg
ICB7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50OworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSBudWxsOwogCiAg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25Qcm92aWRlciA9IGNvbXBsZXRpb25Qcm92aWRlciB8fCBu
dWxsOwogICAgICAgICBpZiAodGhpcy5fY29tcGxldGlvblByb3ZpZGVyKSB7CkBAIC01Miw2ICs1
Myw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0Rmll
bGQKICAgICAgICAgdGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPSAtMTsKICAgICAgICAgdGhp
cy5fdmFsdWVCZWZvcmVFZGl0aW5nID0gIiI7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVm
aXggPSAiIjsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvblRleHQgPSAiIjsKICAgICAgICAgdGhp
cy5fY29udHJvbFNwYWNlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0
KFdJLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV0kuS2V5Ym9hcmRTaG9ydGN1
dC5LZXkuU3BhY2UpOwogICAgIH0KIApAQCAtNjEsOCArNjMsMTYgQEAgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgZ2V0IGVkaXRpbmco
KSB7IHJldHVybiB0aGlzLl9lZGl0aW5nOyB9CiAKLSAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0
aGlzLl9lbGVtZW50LnRleHRDb250ZW50OyB9Ci0gICAgc2V0IHZhbHVlKHZhbHVlKSB7IHRoaXMu
X2VsZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZTsgfQorICAgIGdldCB2YWx1ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5fcGVuZGluZ1ZhbHVlID8/IHRoaXMuX2VsZW1lbnQudGV4dENv
bnRlbnQ7CisgICAgfQorCisgICAgc2V0IHZhbHVlKHZhbHVlKSB7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZTsKKworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUg
PSBudWxsOworICAgIH0KIAogICAgIHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24oKQogICAgIHsKQEAg
LTk0LDkgKzEwNCw2IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hl
ZXRUZXh0RmllbGQKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3N1Z2dlc3Rpb25IaW50RWxl
bWVudC5yZW1vdmUoKTsKLQotICAgICAgICAvLyBSZW1vdmluZyB0aGUgc3VnZ2VzdGlvbiBoaW50
IGVsZW1lbnQgbWF5IGxlYXZlIHRoZSBjb250ZW50cyBvZiBgX2VsZW1lbnRgIGZyYWdtZW50ZWQg
aW50byBtdWx0aXBsZSB0ZXh0IG5vZGVzLgotICAgICAgICB0aGlzLl9jb21iaW5lRWRpdG9yRWxl
bWVudENoaWxkcmVuKCk7CiAgICAgfQogCiAgICAgc3RhcnRFZGl0aW5nKCkKQEAgLTEzMCw2ICsx
MzcsOCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZp
ZWxkCiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOwogICAgICAgICB0aGlzLl92YWx1
ZUJlZm9yZUVkaXRpbmcgPSAiIjsKKyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fY29tcGxldGlvblRleHQgPSAiIjsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKCJlZGl0aW5nIik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY29u
dGVudEVkaXRhYmxlID0gZmFsc2U7CiAKQEAgLTE0MywxMCArMTUyLDE2IEBAIFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlz
Ll9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOwogCi0gICAgICAgIGxldCBoYWRTdWdnZXN0aW9uSGlu
dCA9ICEhdGhpcy5zdWdnZXN0aW9uSGludDsKKyAgICAgICAgbGV0IGhhZENvbXBsZXRpb25UZXh0
ID0gdGhpcy5fY29tcGxldGlvblRleHQubGVuZ3RoID4gMDsKKworICAgICAgICAvLyBSZXNldHRp
bmcgdGhlIHN1Z2dlc3Rpb24gaGludCByZW1vdmVzIGFueSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVu
dCB0aGF0IGlzIGF0dGFjaGVkLgogICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0gIiI7Ci0g
ICAgICAgIGlmIChoYWRTdWdnZXN0aW9uSGludCAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2Yg
dGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlv
biIpCi0gICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENo
YW5nZSh0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvblRleHQgPSAiIjsKKworICAgICAg
ICBpZiAoaGFkQ29tcGxldGlvblRleHQpIHsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1
ZSA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpOworICAgICAgICAgICAgdGhpcy5fZGVs
ZWdhdGU/LnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlPy4odGhpcyk7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBkZXRhY2hlZCgpCkBAIC0xNTcsMjIgKzE3MiwyNiBAQCBXSS5TcHJlYWRz
aGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAvLyBDb21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGRlbGVnYXRlCiAKLSAgICBjb21wbGV0aW9uU3VnZ2VzdGlv
bnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQgPSAiIikK
KyAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNW
aWV3LCBjb21wbGV0aW9uVGV4dCA9ICIiKQogICAgIHsKLSAgICAgICAgdGhpcy5zdWdnZXN0aW9u
SGludCA9IHNlbGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCk7
CisgICAgICAgIHRoaXMuX2NvbXBsZXRpb25UZXh0ID0gY29tcGxldGlvblRleHQ7CiAKLSAgICAg
ICAgaWYgKHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoKQotICAgICAgICAgICAgdGhpcy5fcmVB
dHRhY2hTdWdnZXN0aW9uSGludCgpOworICAgICAgICBpZiAodGhpcy5fY29tcGxldGlvblRleHQu
c3RhcnRzV2l0aCh0aGlzLl9jb21wbGV0aW9uUHJlZml4KSkKKyAgICAgICAgICAgIHRoaXMuc3Vn
Z2VzdGlvbkhpbnQgPSB0aGlzLl9jb21wbGV0aW9uVGV4dC5zbGljZSh0aGlzLl9jb21wbGV0aW9u
UHJlZml4Lmxlbmd0aCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMuc3VnZ2VzdGlv
bkhpbnQgPSAiIjsKKworICAgICAgICB0aGlzLl91cGRhdGVQZW5kaW5nVmFsdWVXaXRoQ29tcGxl
dGlvblRleHQoKTsKIAogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMu
X2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQog
ICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2Uo
dGhpcyk7CiAgICAgfQogCi0gICAgY29tcGxldGlvblN1Z2dlc3Rpb25zQ2xpY2tlZENvbXBsZXRp
b24oc3VnZ2VzdGlvbnNWaWV3LCBzZWxlY3RlZFRleHQpCisgICAgY29tcGxldGlvblN1Z2dlc3Rp
b25zQ2xpY2tlZENvbXBsZXRpb24oc3VnZ2VzdGlvbnNWaWV3LCBjb21wbGV0aW9uVGV4dCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSBzZWxlY3RlZFRleHQuc2xpY2UodGhp
cy5fY29tcGxldGlvblByZWZpeC5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMuX2FwcGx5Q29tcGxl
dGlvbkhpbnQoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uOiB0cnVlfSk7CisgICAgICAgIHRo
aXMuX2NvbXBsZXRpb25UZXh0ID0gY29tcGxldGlvblRleHQ7CisgICAgICAgIHRoaXMuX3VwZGF0
ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dCgpOworICAgICAgICB0aGlzLl9hcHBseVBl
bmRpbmdWYWx1ZSh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKICAgICAgICAg
dGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09
ICJmdW5jdGlvbiIpCkBAIC0yMTksNyArMjM4LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQg
PSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZl
RWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7CisgICAgICAgIHRoaXMuX2FwcGx5UGVuZGlu
Z1ZhbHVlKCk7CiAgICAgICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKIAogICAgICAgICBs
ZXQgY2hhbmdlZCA9IHRoaXMuX3ZhbHVlQmVmb3JlRWRpdGluZyAhPT0gdGhpcy52YWx1ZTsKQEAg
LTI1Miw3ICsyNzEsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgICAgIGxldCBpc1RhYktleSA9IGV2ZW50LmtleSA9PT0gIlRhYiI7
CiAgICAgICAgIGlmIChpc0VudGVyS2V5IHx8IGlzVGFiS2V5KSB7CiAgICAgICAgICAgICBldmVu
dC5zdG9wKCk7Ci0gICAgICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KCk7CisgICAg
ICAgICAgICB0aGlzLl9hcHBseVBlbmRpbmdWYWx1ZSgpOwogCiAgICAgICAgICAgICBsZXQgZGly
ZWN0aW9uID0gKGlzVGFiS2V5ICYmIGV2ZW50LnNoaWZ0S2V5KSA/ICJiYWNrd2FyZCIgOiAiZm9y
d2FyZCI7CiAKQEAgLTMzOCwxMiArMzU3LDEyIEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0g
Y2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93UmlnaHQiICYmIHRoaXMu
c3VnZ2VzdGlvbkhpbnQubGVuZ3RoKSB7CisgICAgICAgIGlmIChldmVudC5rZXkgPT09ICJBcnJv
d1JpZ2h0IiAmJiB0aGlzLl9jb21wbGV0aW9uVGV4dC5sZW5ndGgpIHsKICAgICAgICAgICAgIGxl
dCBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAKICAgICAgICAgICAgIGlmIChz
ZWxlY3Rpb24uaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgICAgICBldmVudC5zdG9wKCk7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRP
ZkNvbXBsZXRpb246IHRydWV9KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hcHBseVBlbmRpbmdW
YWx1ZSh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKIAogICAgICAgICAgICAg
ICAgIC8vIFdoZW4gY29tcGxldGluZyAiYmFja2dyb3VuZCIsIGRvbid0IGhpZGUgdGhlIGNvbXBs
ZXRpb24gcG9wb3Zlci4KICAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBzaG93aW5nIHRoZSBw
b3BvdmVyIHdpdGggcHJvcGVydGllcyBzdWNoIGFzICJiYWNrZ3JvdW5kLWNvbG9yIiBhbmQgImJh
Y2tncm91bmQtaW1hZ2UiLgpAQCAtMzU4LDIxICszNzcsMTQgQEAgV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgICAgIGlmIChldmVudC5r
ZXkgPT09ICJFc2NhcGUiICYmIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy52aXNpYmxlKSB7CiAgICAg
ICAgICAgICBldmVudC5zdG9wKCk7Ci0KLSAgICAgICAgICAgIGxldCB3aWxsQ2hhbmdlID0gISF0
aGlzLnN1Z2dlc3Rpb25IaW50OwogICAgICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigp
OwogCi0gICAgICAgICAgICBpZiAod2lsbENoYW5nZSAmJiB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBl
b2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5j
dGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0Rmll
bGREaWRDaGFuZ2UodGhpcyk7Ci0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93TGVmdCIgJiYgKHRoaXMuc3VnZ2Vz
dGlvbkhpbnQgfHwgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGUpKSB7CisgICAgICAgIGlm
IChldmVudC5rZXkgPT09ICJBcnJvd0xlZnQiICYmICh0aGlzLl9jb21wbGV0aW9uVGV4dC5sZW5n
dGggfHwgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGUpKSB7CiAgICAgICAgICAgICB0aGlz
LmRpc2NhcmRDb21wbGV0aW9uKCk7CiAKLSAgICAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09
ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuc3ByZWFkc2hlZXRU
ZXh0RmllbGREaWRDaGFuZ2UodGhpcyk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogCkBAIC00MDUsNiArNDE3LDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFz
cyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICBpZiAoIXRoaXMuX2VkaXRpbmcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdGhpcy52YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uKCkudHJpbSgpOwogICAgICAgICB0aGlzLl9wcmV2ZW50RGlzY2Fy
ZGluZ0NvbXBsZXRpb25zT25LZXlVcCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbXBs
ZXRpb25zKCk7CiAKQEAgLTQxNyw4ICs0MzAsOSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9
IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGlmICghdGhpcy5fY29tcGxldGlv
blByb3ZpZGVyKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIGxldCB1c2VGdXp6eU1h
dGNoaW5nID0gV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsQ1NTQ29tcGxldGlvbkZ1enp5TWF0Y2hp
bmcudmFsdWU7CiAgICAgICAgIGxldCB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uID0gdGhpcy52YWx1
ZVdpdGhvdXRTdWdnZXN0aW9uKCk7Ci0gICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0g
PSB0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93
RW1wdHlQcmVmaXg6IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMuX2dldENh
cmV0UG9zaXRpb24oKX0pOworICAgICAgICBsZXQge2NvbXBsZXRpb25zLCBwcmVmaXh9ID0gdGhp
cy5fY29tcGxldGlvblByb3ZpZGVyKHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24sIHthbGxvd0VtcHR5
UHJlZml4OiBmb3JjZUNvbXBsZXRpb25zLCBjYXJldFBvc2l0aW9uOiB0aGlzLl9nZXRDYXJldFBv
c2l0aW9uKCksIHVzZUZ1enp5TWF0Y2hpbmd9KTsKICAgICAgICAgdGhpcy5fY29tcGxldGlvblBy
ZWZpeCA9IHByZWZpeDsKIAogICAgICAgICBpZiAoIWNvbXBsZXRpb25zLmxlbmd0aCkgewpAQCAt
NDI3LDcgKzQ0MSw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hl
ZXRUZXh0RmllbGQKICAgICAgICAgfQogCiAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2hvdyB0aGUg
Y29tcGxldGlvbiBwb3BvdmVyIHdpdGggb25seSBvbmUgaXRlbSB0aGF0IG1hdGNoZXMgdGhlIGVu
dGVyZWQgdmFsdWUuCi0gICAgICAgIGlmIChjb21wbGV0aW9ucy5sZW5ndGggPT09IDEgJiYgY29t
cGxldGlvbnNbMF0gPT09IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pIHsKKyAgICAgICAgaWYgKGNv
bXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuZ2V0Q29tcGxl
dGlvblRleHQoY29tcGxldGlvbnNbMF0pID09PSB2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKSB7CiAg
ICAgICAgICAgICB0aGlzLmRpc2NhcmRDb21wbGV0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTQ0MCw4ICs0NTQsOSBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9
IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNW
aWV3LnVwZGF0ZShjb21wbGV0aW9ucyk7CiAKLSAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0
aCA9PT0gMSkgewotICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBzaG93IHRoZSBjb21wbGV0aW9u
IHBvcG92ZXIgdGhhdCBtYXRjaGVzIHRoZSBzdWdnZXN0aW9uIGhpbnQuCisgICAgICAgIGlmIChj
b21wbGV0aW9ucy5sZW5ndGggPT09IDEgJiYgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LmdldENvbXBs
ZXRpb25UZXh0KGNvbXBsZXRpb25zWzBdKS5zdGFydHNXaXRoKHRoaXMuX2NvbXBsZXRpb25QcmVm
aXgpKSB7CisgICAgICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9w
b3ZlciB3aXRoIG9ubHkgb25lIGl0ZW0gdGhhdCBiZWdpbnMgd2l0aCB0aGUgY29tcGxldGlvbiBw
cmVmaXguCisgICAgICAgICAgICAvLyBXaGVuIHVzaW5nIGZ1enp5IG1hdGNoaW5nLCB0aGUgY29t
cGxldGlvbiBwcmVmaXggbWF5IG5vdCBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdWdn
ZXN0aW9uLgogICAgICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LmhpZGUoKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlzLl9zaG93U3VnZ2VzdGlvbnNWaWV3KCk7CkBAIC01
MzAsMjIgKzU0NSwxNiBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVhZHNo
ZWV0VGV4dEZpZWxkCiAgICAgICAgIHJldHVybiByYW5nZTsKICAgICB9CiAKLSAgICBfYXBwbHlD
b21wbGV0aW9uSGludCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb259ID0ge30pCisgICAgX2Fw
cGx5UGVuZGluZ1ZhbHVlKHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7fSkKICAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fY29tcGxldGlvblByb3ZpZGVyIHx8ICF0aGlzLnN1Z2dlc3Rp
b25IaW50KQorICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdWYWx1ZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICB0aGlzLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuKHtuZXdD
YXJldFBvc2l0aW9uOiBtb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbiA/IHRoaXMuX2dldENhcmV0
UG9zaXRpb24oKSArIHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoIDogbnVsbH0pOwotICAgIH0K
KyAgICAgICAgbGV0IGNhcmV0UG9zaXRpb24gPSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCk7Cisg
ICAgICAgIGxldCBuZXdDYXJldFBvc2l0aW9uID0gbW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb24g
PyBjYXJldFBvc2l0aW9uIC0gdGhpcy5fY29tcGxldGlvblByZWZpeC5sZW5ndGggKyB0aGlzLl9j
b21wbGV0aW9uVGV4dC5sZW5ndGggOiBjYXJldFBvc2l0aW9uOwogCi0gICAgX2NvbWJpbmVFZGl0
b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9zaXRpb259ID0ge30pCi0gICAgewotICAgICAg
ICBuZXdDYXJldFBvc2l0aW9uID8/PSB0aGlzLl9nZXRDYXJldFBvc2l0aW9uKCk7Ci0KLSAgICAg
ICAgLy8gU2V0dGluZyB0aGUgdGV4dENvbnRlbnQgb2YgdGhlIGVsZW1lbnQgdG8gaXRzIGN1cnJl
bnQgdGV4dENvbnRlbnQgd2lsbCB0YWtlIHRoZSB0ZXh0IGZyb20gdGhlIG11bHRpcGxlCi0gICAg
ICAgIC8vIHBvdGVudGlhbCBjaGlsZCBub2RlcyAocG90ZW50aWFsbHkgYSBzdWdnZXN0aW9uIGhp
bnQgbm9kZSBhbmQgc29tZSBudW1iZXIgb2YgZXhpc3RpbmcgdGV4dCBub2RlcykgYW5kIHR1cm4K
LSAgICAgICAgLy8gdGhlbSBpbnRvIGEgc2luZ2xlIHRleHQgbm9kZSB3aXRoaW4gdGhlIGVsZW1l
bnQuCi0gICAgICAgIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9lbGVtZW50LnRl
eHRDb250ZW50OworICAgICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSBjb2xsYXBzZXMgdGhlIHRl
eHQgc2VsZWN0aW9uLiBHZXQgdGhlIGNhcmV0IHBvc2l0aW9uIGJlZm9yZSBkb2luZyB0aGlzLgor
ICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5fcGVuZGluZ1ZhbHVlOwogCiAgICAgICAgIGlmICh0
aGlzLl9lbGVtZW50LnRleHRDb250ZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IHRleHRD
aGlsZE5vZGUgPSB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQ7CkBAIC01NTMsNiArNTYyLDE0IEBA
IFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAg
ICAgICAgfQogICAgIH0KIAorICAgIF91cGRhdGVQZW5kaW5nVmFsdWVXaXRoQ29tcGxldGlvblRl
eHQoKQorICAgIHsKKyAgICAgICAgbGV0IGNhcmV0UG9zaXRpb24gPSB0aGlzLl9nZXRDYXJldFBv
c2l0aW9uKCk7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMudmFsdWVXaXRob3V0U3VnZ2VzdGlv
bigpOworCisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IHZhbHVlLnNsaWNlKDAsIGNhcmV0
UG9zaXRpb24gLSB0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCkgKyB0aGlzLl9jb21wbGV0
aW9uVGV4dCArIHZhbHVlLnNsaWNlKGNhcmV0UG9zaXRpb24gKyAxLCB2YWx1ZS5sZW5ndGgpOwor
ICAgIH0KKwogICAgIF9yZUF0dGFjaFN1Z2dlc3Rpb25IaW50KCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuc3VnZ2VzdGlvbkhpbnQubGVuZ3RoLCAiU3VnZ2VzdGlvbiBoaW50
IHNob3VsZCBub3QgYmUgZW1wdHkgd2hlbiBhdHRhY2hpbmcgdGhlIHN1Z2dlc3Rpb24gaGludCBl
bGVtZW50LiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDJhYTA0NDk3ODEwNDA3YTk1NjhkYTA3NjkxMjY0ZmJjYjA3OTg4
YjEuLjRmYmIwODNiMjZlMDNiMjQ0NGVjMDg3ZWFjNjUzOGMxZTFhZjA5M2QgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAyMS0xMS0yMyAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU3VwcG9ydCBmdXp6eSBtYXRjaGluZyBpbiBD
U1MgY29tcGxldGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIzMDM1MQorICAgICAgICA8cmRhcjovLzgyOTc2MjkyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBgV0kuQ1NTUXVl
cnlDb250cm9sbGVyYCB0byBjaGVjayBmdXp6eSBtYXRjaGluZyBsb2dpYyBmb3IgQ1NTIGNvbXBs
ZXRpb25zLgorICAgICAgICBGb2xsb3dzIHByaW9yIGV4YW1wbGUgZnJvbSBgTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvcmVzb3VyY2UtcXVlcnktY29udHJvbGxlci5odG1sYAorICAg
ICAgICBzaW5jZSBgV0kuUmVzb3VjZVF1ZXJ5Q29udHJvbGxlcmAgc2VydmVkIGFzIHRoZSBtb2Rl
bCBjbGFzcyB0aGF0IHdhcyBhZGFwdGVkIGZvciBDU1MuCisKKyAgICAgICAgKiBpbnNwZWN0b3Iv
dW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLmh0bWw6IEFk
ZGVkLgorCiAyMDIxLTExLTIxICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gRW5hYmxlIGJpZGkgY29udGVudCBmb3Igbm9uLWlubGlu
ZS1ib3ggY2FzZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L2Nzcy1rZXl3b3JkLWNvbXBsZXRpb25zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci91bml0LXRlc3RzL2Nzcy1rZXl3b3JkLWNvbXBsZXRpb25zLWV4cGVjdGVkLnR4dAppbmRl
eCAxNGNkNmVjMzgzYTRlZGIyNzFjNzBjZGNhODZjNjhmM2Y1ZDFmNWYyLi4yMGU2ZGU3NWQ0NjI1
NGRjMzgyYjRjYjk2MTg5N2YwMDI5NjBmODNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLWtleXdvcmQtY29tcGxldGlv
bnMtZXhwZWN0ZWQudHh0CkBAIC03MSwzICs3MSwxMiBAQCBQQVNTOiBBbGwgZXhwZWN0ZWQgY29t
cGxldGlvbnMgd2VyZSBwcmVzZW50LgogUEFTUzogRXhwZWN0ZWQgcmVzdWx0IHByZWZpeCB0byBi
ZSAiIgogUEFTUzogQWxsIGV4cGVjdGVkIGNvbXBsZXRpb25zIHdlcmUgcHJlc2VudC4KIAorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJv
cGVydHlWYWx1ZS5Ob1doaXRlc3BhY2VBZnRlckZ1bmN0aW9uCitQQVNTOiBFeHBlY3RlZCByZXN1
bHQgcHJlZml4IHRvIGJlICIiCitQQVNTOiBFeHBlY3RlZCBleGFjdGx5IDAgY29tcGxldGlvbiBy
ZXN1bHRzLgorUEFTUzogQWxsIGV4cGVjdGVkIGNvbXBsZXRpb25zIHdlcmUgcHJlc2VudC4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFs
UHJvcGVydHlWYWx1ZS5XaGl0ZXNwYWNlQWZ0ZXJGdW5jdGlvbgorUEFTUzogRXhwZWN0ZWQgcmVz
dWx0IHByZWZpeCB0byBiZSAiYSIKK1BBU1M6IEFsbCBleHBlY3RlZCBjb21wbGV0aW9ucyB3ZXJl
IHByZXNlbnQuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L2Nzcy1rZXl3b3JkLWNvbXBsZXRpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5p
dC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy5odG1sCmluZGV4IGMxYjJlY2NlMTgxY2Qz
NGU1MWNkZjRkNTIwODkwMTllNGJlOTg1YjMuLjNhODhjYWI5MDMyYjE5Zjc5ZjZlNDI4MmY0NDE3
ZjNiNzk5OTI2OGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3Rz
L2Nzcy1rZXl3b3JkLWNvbXBsZXRpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvY3NzLWtleXdvcmQtY29tcGxldGlvbnMuaHRtbApAQCAtNjYsNyArNjYsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZXhwZWN0ZWRDb21wbGV0aW9uczogWyJyYW5nZSJd
LAogICAgIH0pOwogCi0gICAgZnVuY3Rpb24gYWRkVGVzdEZvclBhcnRpYWxQcm9wZXJ0eVZhbHVl
KHtuYW1lLCBkZXNjcmlwdGlvbiwgcHJvcGVydHlOYW1lLCB0ZXh0LCBjYXJldFBvc2l0aW9uLCBl
eHBlY3RlZFByZWZpeCwgZXhwZWN0ZWRDb21wbGV0aW9ucywgYWRkaXRpb25hbEZ1bmN0aW9uVmFs
dWVDb21wbGV0aW9uc1Byb3ZpZGVyfSkgeworICAgIGZ1bmN0aW9uIGFkZFRlc3RGb3JQYXJ0aWFs
UHJvcGVydHlWYWx1ZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3BlcnR5TmFtZSwgdGV4dCwgY2Fy
ZXRQb3NpdGlvbiwgZXhwZWN0ZWRQcmVmaXgsIGV4cGVjdGVkQ29tcGxldGlvbnMsIGV4cGVjdGVk
Q29tcGxldGlvbkNvdW50LCBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlk
ZXJ9KSB7CiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgICAgIG5hbWUsCiAg
ICAgICAgICAgICBkZXNjcmlwdGlvbiwKQEAgLTc0LDExICs3NCwxNSBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgICAgICBjYXJldFBvc2l0aW9uID8/PSB0ZXh0Lmxlbmd0aDsKICAgICAg
ICAgICAgICAgICBleHBlY3RlZFByZWZpeCA/Pz0gdGV4dDsKICAgICAgICAgICAgICAgICBleHBl
Y3RlZENvbXBsZXRpb25zID8/PSBbXTsKKyAgICAgICAgICAgICAgICBleHBlY3RlZENvbXBsZXRp
b25Db3VudCA/Pz0gLTE7CiAgICAgICAgICAgICAgICAgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVD
b21wbGV0aW9uc1Byb3ZpZGVyID8/PSAoKSA9PiB7fTsKIAogICAgICAgICAgICAgICAgIGxldCBj
b21wbGV0aW9uUmVzdWx0cyA9IFdJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJv
cGVydHlWYWx1ZSh0ZXh0LCBwcm9wZXJ0eU5hbWUsIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlvbmFs
RnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXJ9KTsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbXBsZXRpb25SZXN1bHRzLnByZWZpeCwgZXhwZWN0ZWRQ
cmVmaXgsIGBFeHBlY3RlZCByZXN1bHQgcHJlZml4IHRvIGJlICIke2V4cGVjdGVkUHJlZml4fSJg
KTsKIAorICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZENvbXBsZXRpb25Db3VudCA+PSAwKQor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbXBsZXRpb25S
ZXN1bHRzLmNvbXBsZXRpb25zLmxlbmd0aCwgZXhwZWN0ZWRDb21wbGV0aW9uQ291bnQsIGBFeHBl
Y3RlZCBleGFjdGx5ICR7ZXhwZWN0ZWRDb21wbGV0aW9uQ291bnR9IGNvbXBsZXRpb24gcmVzdWx0
cy5gKTsKKwogICAgICAgICAgICAgICAgIC8vIEJlY2F1c2UgZXhwZWN0ZWQgY29tcGxldGlvbnMg
Y291bGQgYmUgYWRkZWQgYXQgYW55IHRpbWUsIGp1c3QgbWFrZSBzdXJlIHRoZSBsaXN0IGNvbnRh
aW5zIG91ciBleHBlY3RlZCBjb21wbGV0aW9ucywgaW5zdGVhZCBvZiBlbmZvcmNpbmcgYW4gZXhh
Y3QgbWF0Y2ggYmV0d2VlbiBleHBlY3RhdGlvbnMgYW5kIHJlYWxpdHkuCiAgICAgICAgICAgICAg
ICAgbGV0IGV4cGVjdGVkQ29tcGxldGlvbnNQcmVzZW50ID0gZXhwZWN0ZWRDb21wbGV0aW9ucy5l
dmVyeSgoZXhwZWN0ZWRDb21wbGV0aW9uKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
Y29tcGxldGlvblJlc3VsdHMuY29tcGxldGlvbnMuaW5jbHVkZXMoZXhwZWN0ZWRDb21wbGV0aW9u
KSkgewpAQCAtMjI5LDYgKzIzMywyOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgYWRkaXRp
b25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyOiAoKSA9PiBbIi0tb25lIiwgIi0t
dHdvIl0sCiAgICAgfSk7CiAKKyAgICAvLyBgaHNsKClhfGAKKyAgICBhZGRUZXN0Rm9yUGFydGlh
bFByb3BlcnR5VmFsdWUoeworICAgICAgICBuYW1lOiAiV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
LmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlLk5vV2hpdGVzcGFjZUFmdGVyRnVuY3Rpb24iLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCBjb2xvciBjb21wbGV0aW9ucyBhcmUgbm90IG9m
ZmVyZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgYSBjbG9zaW5nIHBhcmVudGhlc2lzIiwKKyAgICAgICAg
cHJvcGVydHlOYW1lOiAiYmFja2dyb3VuZCIsCisgICAgICAgIHRleHQ6ICJoc2woKWEiLAorICAg
ICAgICBjYXJldFBvc2l0aW9uOiA2LAorICAgICAgICBleHBlY3RlZFByZWZpeDogIiIsCisgICAg
ICAgIGV4cGVjdGVkQ29tcGxldGlvbkNvdW50OiAwCisgICAgfSk7CisKKyAgICAvLyBgaHNsKCkg
YXxgCisgICAgYWRkVGVzdEZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHsKKyAgICAgICAgbmFtZTog
IldJLkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZS5XaGl0ZXNw
YWNlQWZ0ZXJGdW5jdGlvbiIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCB0aGF0IGNvbG9y
IGNvbXBsZXRpb25zIGFyZSBvZmZlcmVkIHdoZW4gYSBjbG9zaW5nIHBhcmVudGhlc2lzIGlzIGZv
bGxvd2VkIGJ5IHdoaXRlc3BhY2UiLAorICAgICAgICBwcm9wZXJ0eU5hbWU6ICJiYWNrZ3JvdW5k
IiwKKyAgICAgICAgdGV4dDogImhzbCgpIGEiLAorICAgICAgICBjYXJldFBvc2l0aW9uOiA3LAor
ICAgICAgICBleHBlY3RlZFByZWZpeDogImEiLAorICAgICAgICBleHBlY3RlZENvbXBsZXRpb25z
OiBbImFsaWNlYmx1ZSIsICJhbnRpcXVld2hpdGUiXSwKKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxl
ci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmUwNWVjZjY0ZTFlY2FlNmZkYzYwOWE3ZDU0NTVm
YjQ2YjZiN2EzNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0
LXRlc3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBA
CitUZXN0aW5nIFdJLkNTU1F1ZXJ5Q29udHJvbGxlcgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogQ1NTUXVlcnlDb250cm9sbGVyCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRmluZFNwZWNpYWxD
aGFyYWN0ZXJJbmRpY2VzCitQQVNTOiBSZXN1bHQgZm9yIG1hcmdpbiBzaG91bGQgbWF0Y2ggZXhw
ZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFTUzogUmVzdWx0IGZvciBNQVJHSU4gc2hvdWxkIG1h
dGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgbWFyZ2luLXJp
Z2h0IHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQg
Zm9yIC13ZWJraXQtbWFzayBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgor
UEFTUzogUmVzdWx0IGZvciAtLXZhci1rZWJhYi1jYXNlIHNob3VsZCBtYXRjaCBleHBlY3RlZCBz
cGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIC0tdmFyQ2FtZWxDYXNlIHNob3VsZCBt
YXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIC0tdmFybG93
ZXJjYXNlIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1
bHQgZm9yIC0tVkFSVVBQRVJDQVNFIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGlj
ZXMuCitQQVNTOiBSZXN1bHQgZm9yIC0tdmFyX3NuYWtlX2Nhc2Ugc2hvdWxkIG1hdGNoIGV4cGVj
dGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgdmFyKC0tbmFtZSkgc2hvdWxk
IG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgcmdiKDAs
IDAsIDApIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1
bHQgZm9yIHJnYigwIDAgMCAvIDEwMCUpIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGlu
ZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIHJnYigwIDAgMCAvIDAuMSkgc2hvdWxkIG1hdGNoIGV4
cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVR
dWVyeUFnYWluc3ROb1ZhbHVlcworUEFTUzogU2hvdWxkIHJldHVybiBubyByZXN1bHRzLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRXhlY3V0ZVdoaXRlc3BhY2VRdWVyeU9yRW1wdHlRdWVyeQor
UEFTUzogV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCitQQVNTOiBX
aGl0ZXNwYWNlIHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4KK1BBU1M6IFdoaXRlc3Bh
Y2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLgorUEFTUzogV2hpdGVzcGFjZSBxdWVy
eSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuCitQQVNTOiBFbXB0eSBxdWVyeSBzaG91bGQgcmV0
dXJuIG5vIHJlc3VsdHMuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBFeGVjdXRlUXVlcnlNYXRj
aE5vbmUKK1BBU1M6IFF1ZXJ5ICJhYmNkZSIgc2hvdWxkbid0IG1hdGNoICJhYmNkIi4KK1BBU1M6
IFF1ZXJ5ICJhYmNkLSIgc2hvdWxkbid0IG1hdGNoICJhYmNkZSIuCitQQVNTOiBRdWVyeSAiYWJj
ZGUiIHNob3VsZG4ndCBtYXRjaCAiYWJjZWQiLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRXhl
Y3V0ZVF1ZXJ5TWF0Y2hlc0V4cGVjdGVkQ2hhcmFjdGVycworUEFTUzogUXVlcnkgImFiY2QiIHNo
b3VsZCBtYXRjaCAiYWJjZCIgaW4gImFiY2RlIi4KK1BBU1M6IFF1ZXJ5ICJhLWJjZGUiIHNob3Vs
ZCBtYXRjaCAiYSAgICAtIGJjZGUiIGluICJhYmNkZS1hYmNkZSIuCitQQVNTOiBRdWVyeSAiYWJj
ZGUiIHNob3VsZCBtYXRjaCAiQSBCIEMgRCBFIiBpbiAiQWFCYkNjRGRFZSIuCitQQVNTOiBRdWVy
eSAiYWJjZGUiIHNob3VsZCBtYXRjaCAiQSAgIEIgIEMgRGUiIGluICJBYmNkQmNkQ2REZSIuCitQ
QVNTOiBRdWVyeSAiYWJjZGV4IiBzaG91bGQgbWF0Y2ggIkEgQiBDIGQgZXgiIGluICJBeEJ4Q3hk
eGV4RHh5eEVGIi4KK1BBU1M6IFF1ZXJ5ICJiYyIgc2hvdWxkIG1hdGNoICIgYkMiIGluICJhYkNk
Ii4KK1BBU1M6IFF1ZXJ5ICJiYiIgc2hvdWxkIG1hdGNoICIgYkIiIGluICJhYkJjIi4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeUdlbmVyYWxSYW5raW5ncworUEFTUzogUmVz
dWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmN5LgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRXhlY3V0ZVF1ZXJ5UG9zaXRpb25SYW5raW5ncworUEFTUzogUmVzdWx0
cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVsZXZhbmN5LgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogR2V0TWF0Y2hpbmdUZXh0UmFuZ2VzCitQQVNTOiBSZXN1bHQgVGV4dFJhbmdl
cyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHJhbmdlcy4KK1BBU1M6IFJlc3VsdCBUZXh0UmFu
Z2VzIHNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcmFuZ2VzLgorUEFTUzogUmVzdWx0IFRleHRS
YW5nZXMgc2hvdWxkIG1hdGNoIHRoZSBleHBlY3RlZCByYW5nZXMuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA0MzVlNWEyNmZjMzU0ZTEwMmU5ZjUwYmI2ZjYxNmE4ODE4YWM0MDIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3Mt
cXVlcnktY29udHJvbGxlci5odG1sCkBAIC0wLDAgKzEsMjYzIEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVN5bmNTdWl0
ZSgiQ1NTUXVlcnlDb250cm9sbGVyIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJGaW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMiLAorICAgICAgICBkZXNjcmlw
dGlvbjogIlNob3VsZCBjb3JyZWN0bHkgZmluZCBzcGVjaWFsIGNoYXJhY3RlcnMuIiwKKyAgICAg
ICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29u
dHJvbGxlcjsKKyAgICAgICAgICAgIGxldCB0ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAibWFyZ2luIiwKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQ6ICJeIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJNQVJHSU4iLAorICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDogIl4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogIm1hcmdpbi1yaWdodCIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiAgICAgXl4iLAorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogIi13ZWJraXQt
bWFzayIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXl4gICAgIF5eIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFk
dmFsdWU6ICItLXZhci1rZWJhYi1jYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6
ICJeXl4gIF5eICAgIF5eIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICItLXZhckNhbWVsQ2FzZSIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiXl5eICBeICAgIF4iLAorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogIi0tdmFy
bG93ZXJjYXNlIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJeXl4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2
YWx1ZTogIi0tVkFSVVBQRVJDQVNFIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJe
Xl4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBwYWR2YWx1ZTogIi0tdmFyX3NuYWtlX2Nhc2UiLAorICAgICAgICAgICAgICAgICAg
ICBleHBlY3RlZDogIl5eXiAgXl4gICAgXl4iLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogInZhcigtLW5hbWUpIiwK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJeICAgXl5eIiwKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJy
Z2IoMCwgMCwgMCkiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4iLAorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2
YWx1ZTogInJnYigwIDAgMCAvIDEwMCUpIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6
ICJeIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgcGFkdmFsdWU6ICJyZ2IoMCAwIDAgLyAwLjEpIiwKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQ6ICJeIiwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdOworCisg
ICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVTcGVjaWFsTWFzayhwYWR2YWx1ZSwgc3BlY2lhbElu
ZGljZXMpIHsKKyAgICAgICAgICAgICAgICBsZXQgbWFzayA9ICIgIi5yZXBlYXQocGFkdmFsdWUu
bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBzcGVjaWFsSW5kaWNlcy5mb3JFYWNoKChpbmRleCkg
PT4geworICAgICAgICAgICAgICAgICAgICBtYXNrID0gbWFzay5zdWJzdHIoMCwgaW5kZXgpICsg
Il4iICsgbWFzay5zdWJzdHIoaW5kZXggKyAxKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWFzay50cmltKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZvciAobGV0IHtwYWR2YWx1ZSwgZXhwZWN0ZWR9IG9mIHRlc3RzKSB7CisgICAgICAgICAg
ICAgICAgbGV0IGFjdHVhbCA9IGNyZWF0ZVNwZWNpYWxNYXNrKHBhZHZhbHVlLCBtYXRjaGVyLl9m
aW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMocGFkdmFsdWUpKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGBSZXN1bHQgZm9yICR7
cGFkdmFsdWV9IHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuYCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkV4ZWN1dGVRdWVyeUFnYWluc3ROb1ZhbHVlcyIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiU2hvdWxkIHJldHVybiBubyByZXN1bHRzIGlmIG5vIHZhbHVlcyB3ZXJlIGFk
ZGVkIHRvIHRoZSBjb250cm9sbGVyLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBs
ZXQgbWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXI7CisgICAgICAgICAgICBsZXQg
cmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5KCJhYmNkZSIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RUaGF0KCFyZXN1bHRzLmxlbmd0aCwgIlNob3VsZCByZXR1cm4gbm8g
cmVzdWx0cy4iKQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJFeGVjdXRlV2hpdGVzcGFjZVF1ZXJ5T3JFbXB0eVF1ZXJ5IiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJFbXB0eSBxdWVyaWVzIGFuZCBxdWVyaWVzIGNvbnRhaW5pbmcg
b25seSB3aGl0ZXNwYWNlIHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4iLAorICAgICAgICB0ZXN0
KCkgeworICAgICAgICAgICAgY29uc3Qgd2hpdGVzcGFjZUNoYXJhY3RlcnMgPSAiIFx0XHJcbiI7
CisgICAgICAgICAgICBsZXQgbWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIoWyJh
YmNkZSJdKTsKKworICAgICAgICAgICAgZm9yIChsZXQgcXVlcnkgb2Ygd2hpdGVzcGFjZUNoYXJh
Y3RlcnMpIHsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1
ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoIXJl
c3VsdHMubGVuZ3RoLCAiV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMu
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5l
eGVjdXRlUXVlcnkoIiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFy
ZXN1bHRzLmxlbmd0aCwgIkVtcHR5IHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4iKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiRXhlY3V0ZVF1ZXJ5TWF0Y2hOb25lIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91
bGQgbm90IGZpbmQgYSBtYXRjaC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0
IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyOworICAgICAgICAgICAgbGV0IHRl
c3RzID0gWworICAgICAgICAgICAgICAgIHtxdWVyeTogImFiY2RlIiwgdmFsdWU6ICJhYmNkIn0s
CisgICAgICAgICAgICAgICAge3F1ZXJ5OiAiYWJjZC0iLCB2YWx1ZTogImFiY2RlIn0sCisgICAg
ICAgICAgICAgICAge3F1ZXJ5OiAiYWJjZGUiLCB2YWx1ZTogImFiY2VkIn0sCisgICAgICAgICAg
ICBdOworCisgICAgICAgICAgICBmb3IgKGxldCB7cXVlcnksIHZhbHVlfSBvZiB0ZXN0cykgewor
ICAgICAgICAgICAgICAgIG1hdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBtYXRjaGVy
LmFkZFZhbHVlcyhbdmFsdWVdKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNo
ZXIuZXhlY3V0ZVF1ZXJ5KHF1ZXJ5KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoIXJlc3VsdHMubGVuZ3RoLCBgUXVlcnkgIiR7cXVlcnl9IiBzaG91bGRuJ3QgbWF0
Y2ggIiR7dmFsdWV9Ii5gKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRXhlY3V0ZVF1ZXJ5TWF0Y2hl
c0V4cGVjdGVkQ2hhcmFjdGVycyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiU2hvdWxkIG1hdGNo
IHRoZSBleHBlY3RlZCBxdWVyeSBjaGFyYWN0ZXJzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAg
ICAgICAgICBsZXQgbWF0Y2hlciA9IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXI7CisgICAgICAg
ICAgICBsZXQgdGVzdHMgPSBbCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBxdWVyeTogImFiY2QiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogImFiY2RlIiwKKyAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJhYmNkIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeTogImEtYmNkZSIsCisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiYWJjZGUtYWJjZGUiLAorICAgICAgICAgICAgICAg
ICAgICBleHBlY3RlZDogImEgICAgLSBiY2RlIgorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeTogImFiY2RlIiwKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWU6ICJBYUJiQ2NEZEVlIiwKKyAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQ6ICJBIEIgQyBEIEUiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiAiYWJjZGUiLAorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZTogIkFiY2RCY2RDZERlIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJB
ICAgQiAgQyBEZSIKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgcXVlcnk6ICJhYmNkZXgiLAorICAgICAgICAgICAgICAgICAgICB2YWx1
ZTogIkF4QnhDeGR4ZXhEeHl4RUYiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIkEg
QiBDIGQgZXgiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHF1ZXJ5OiAiYmMiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogImFi
Q2QiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIiBiQyIKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICJiYiIs
CisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiYWJCYyIsCisgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkOiAiIGJCIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF07CisKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZU1hdGNoZXNNYXNrKHF1ZXJ5UmVzdWx0KSB7CisgICAg
ICAgICAgICAgICAgbGV0IHZhbHVlID0gcXVlcnlSZXN1bHQudmFsdWU7CisgICAgICAgICAgICAg
ICAgbGV0IGxhc3RJbmRleCA9IC0xOworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAiIjsK
KworICAgICAgICAgICAgICAgIGZvciAobGV0IG1hdGNoIG9mIHF1ZXJ5UmVzdWx0Lm1hdGNoZXMp
IHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGdhcCA9ICIgIi5yZXBlYXQobWF0Y2guaW5kZXgg
LSBsYXN0SW5kZXggLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IGdhcDsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHZhbHVlW21hdGNoLmluZGV4XTsKKyAgICAgICAg
ICAgICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXg7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZm9yIChsZXQge3F1ZXJ5LCB2YWx1ZSwgZXhwZWN0ZWR9IG9mIHRlc3RzKSB7CisgICAg
ICAgICAgICAgICAgbWF0Y2hlci5yZXNldCgpOworICAgICAgICAgICAgICAgIG1hdGNoZXIuYWRk
VmFsdWVzKFt2YWx1ZV0pOworCisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVy
LmV4ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQocmVzdWx0cy5sZW5ndGggPT09IDEsICJTaG91bGQgcmV0dXJuIGV4YWN0bHkgb25lIG1hdGNo
LiIpOworICAgICAgICAgICAgICAgIGxldCBhY3R1YWwgPSByZXN1bHRzLmxlbmd0aCA/IGNyZWF0
ZU1hdGNoZXNNYXNrKHJlc3VsdHNbMF0pIDogbnVsbDsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGBRdWVyeSAiJHtxdWVyeX0iIHNo
b3VsZCBtYXRjaCAiJHtleHBlY3RlZH0iIGluICIke3ZhbHVlfSIuYCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIkV4ZWN1dGVRdWVyeUdlbmVyYWxSYW5raW5ncyIsCisgICAgICAgIGRlc2NyaXB0aW9u
OiAiQ2hlY2sgdGhhdCBxdWVyeSByZXN1bHRzIGFyZSByYW5rZWQgYnkgZGVzY2VuZGluZyByZWxl
dmFuY2UuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIC8vIFZhbHVlcyBpbiBvcmRl
ciBvZiBkZXNjZW5kaW5nIHJhbmsuCisgICAgICAgICAgICBsZXQgdmFsdWVzID0gWyJBYkNkRSIs
ICJBYmNEZSIsICJhYmNkZSIsICJBeGJjRGUiLCAiQXhCeEN4RHhFeCIsICJBeGJ4Y0RlIiwgInhh
YmNkZSJdOworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9s
bGVyKHZhbHVlcyk7CisgICAgICAgICAgICBsZXQgcXVlcnkgPSAiYWJjZGUiOworICAgICAgICAg
ICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAg
ICBsZXQgcmVzdWx0VmFsdWVzID0gcmVzdWx0cy5tYXAoKHJlc3VsdCkgPT4gcmVzdWx0LnZhbHVl
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0U2hhbGxvd0VxdWFsKHJlc3VsdFZh
bHVlcywgdmFsdWVzLCAiUmVzdWx0cyBzaG91bGQgYmUgcmFua2VkIGJ5IGRlc2NlbmRpbmcgcmVs
ZXZhbmN5LiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJFeGVjdXRlUXVlcnlQb3NpdGlvblJhbmtpbmdzIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IG1hdGNoZXMgY2xvc2UgdG8gdGhlIGJlZ2lubmluZyBv
ZiB0aGUgZmlsZW5hbWUgcmFuayBoaWdoZXIuIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAg
ICAgIC8vIFZhbHVlcyBpbiBvcmRlciBvZiBkZXNjZW5kaW5nIHJhbmsuCisgICAgICAgICAgICBs
ZXQgdmFsdWVzID0gWyJiY2QiLCAiQnhDeER4IiwgIkF4QnhDeER4IiwgImFiY2QiLCAieHh4QXh4
eEJ4eHhDeHh4RCJdOworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlD
b250cm9sbGVyKHZhbHVlcyk7CisgICAgICAgICAgICBsZXQgcXVlcnkgPSAiYmNkIjsKKyAgICAg
ICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVlcnkpOworICAgICAg
ICAgICAgbGV0IHJlc3VsdFZhbHVlcyA9IHJlc3VsdHMubWFwKChyZXN1bHQpID0+IHJlc3VsdC52
YWx1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxsb3dFcXVhbChyZXN1
bHRWYWx1ZXMsIHZhbHVlcywgIlJlc3VsdHMgc2hvdWxkIGJlIHJhbmtlZCBieSBkZXNjZW5kaW5n
IHJlbGV2YW5jeS4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICBuYW1lOiAiR2V0TWF0Y2hpbmdUZXh0UmFuZ2VzIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJDaGVjayB0aGF0IHF1ZXJ5IHJlc3VsdCBUZXh0UmFuZ2VzIGFyZSBjb3JyZWN0
LiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXh0UmFuZ2Uoc3Rh
cnQsIGVuZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuVGV4dFJhbmdlKDAsIHN0
YXJ0LCAwLCBlbmQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgbWF0Y2hlciA9
IG5ldyBXSS5DU1NRdWVyeUNvbnRyb2xsZXI7CisgICAgICAgICAgICBsZXQgdGVzdHMgPSBbCisg
ICAgICAgICAgICAgICAge3ZhbHVlOiAiYSIsIHJhbmdlczogW119LAorICAgICAgICAgICAgICAg
IHt2YWx1ZTogImFiY2RlIiwgcmFuZ2VzOiBbdGV4dFJhbmdlKDAsIDUpXX0sCisgICAgICAgICAg
ICAgICAge3ZhbHVlOiAiQXhCeEN4RGUiLCByYW5nZXM6IFt0ZXh0UmFuZ2UoMCwgMSksIHRleHRS
YW5nZSgyLCAzKSwgdGV4dFJhbmdlKDQsIDUpLCB0ZXh0UmFuZ2UoNiwgOCldfSwKKyAgICAgICAg
ICAgIF07CisKKyAgICAgICAgICAgIGZvciAobGV0IHt2YWx1ZSwgcmFuZ2VzfSBvZiB0ZXN0cykg
eworICAgICAgICAgICAgICAgIG1hdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBtYXRj
aGVyLmFkZFZhbHVlcyhbdmFsdWVdKTsKKworICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0g
bWF0Y2hlci5leGVjdXRlUXVlcnkoImFiY2RlIik7CisgICAgICAgICAgICAgICAgbGV0IHJlc3Vs
dFRleHRSYW5nZXMgPSByZXN1bHRzLmxlbmd0aCA/IHJlc3VsdHNbMF0ubWF0Y2hpbmdUZXh0UmFu
Z2VzIDogW107CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChKU09O
LnN0cmluZ2lmeShyZXN1bHRUZXh0UmFuZ2VzKSwgSlNPTi5zdHJpbmdpZnkocmFuZ2VzKSwgIlJl
c3VsdCBUZXh0UmFuZ2VzIHNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcmFuZ2VzLiIpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNB
bmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICAgIDxwPlRlc3RpbmcgV0kuQ1NTUXVlcnlDb250cm9sbGVyPC9wPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446169</attachid>
            <date>2021-12-07 06:54:04 -0800</date>
            <delta_ts>2021-12-07 12:52:06 -0800</delta_ts>
            <desc>Patch 1.3</desc>
            <filename>bug-230351-20211207155403.patch</filename>
            <type>text/plain</type>
            <size>64195</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGM5OWRmMjE5NGY1N2U4NjBhNDE5NDQzNDVhMTc5
NWQ4ZjI0NWM4YzIuLjRkODg1NjQwYzg4MzZkYjQ2NDM3NTkzZTQ5MDJkMTA4NGZhNmM5NjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMSBAQAorMjAyMS0xMS0yMyAgUmF6
dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogU3VwcG9ydCBmdXp6eSBtYXRjaGluZyBpbiBDU1MgY29tcGxldGlvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDM1MQorICAgICAgICA8cmRh
cjovLzgyOTc2MjkyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBmdXp6eSBtYXRjaGluZyBmb3IgaWRlbnRpZnlpbmcgQ1NTIGNvbXBsZXRpb25z
IGluIHRoZSBTdHlsZXMgZGV0YWlscyBzaWRlYmFyLgorCisgICAgICAgIFRoZXJlIGFyZSB0aHJl
ZSBtYWluIHBhcnRzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIEludHJvZHVjZSBgV0kuQ1NT
UXVlcnlDb250cm9sbGVyYCB3aXRoIGxvZ2ljIHRvIGRvIGZ1enp5IG1hdGNoaW5nIG9uIHByb3Zp
ZGVkIHZhbHVlcy4KKyAgICAgICAgMi4gQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3YCB0byBzdXBwb3J0IGJvdGggcGxhaW4gc3RyaW5ncyBhbmQgYFdJLlF1ZXJ5UmVzdWx0YHMu
CisgICAgICAgIDMuIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGRgIHNvIGl0cyBgdmFs
dWVgIGRvZXNuJ3QgYWx3YXlzIHJldHVybiBpdHMgYGVsZW1lbnQudGV4dENvbnRlbnRgLgorCisg
ICAgICAgIFdpdGggZnV6enkgbWF0Y2hpbmcsIGNvbXBsZXRpb25zIGFyZSBub3QgZ3VhcmFudGVl
ZCBhbnltb3JlIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorICAgICAgICBUaGVyZWZv
cmUsIGl0J3Mgbm8gbG9uZ2VyIHZpYWJsZSB0byByZWx5IG9uIGBXSS5TcHJlYWRzaGVldFRleHRG
aWVsZC52YWx1ZWAgYmVpbmcgYSBjb25jYXRlbmF0aW9uIG9mIGB0ZXh0Q29udGVudGAgb2Ygbm9k
ZXMgd2l0aGluLiAKKworICAgICAgICBUbyBhZHJlc3MgdGhpcywgdGhlcmUncyBub3cgYFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHdoaWNoIGluY2x1ZGVzIHRoZSBwcm9z
cGVjdGl2ZQorICAgICAgICBjb21wbGV0aW9uIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcXVl
cnkgaXMgYSBjb21wbGV0aW9uIHByZWZpeCBvciBhdCBtYXRjaCBhdCBhbnkgb3RoZXIgcG9zaXRp
b24uCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgIEFk
ZCBhIGZsYWcgdG8gZW5hYmxlIHRoZSBmdXp6eSBtYXRjaGluZyBmZWF0dXJlLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanM6IEFkZGVk
LgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5
Q29udHJvbGxlci5wcm90b3R5cGUuYWRkVmFsdWVzKToKKyAgICAgICAgKFdJLkNTU1F1ZXJ5Q29u
dHJvbGxlci5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVy
LnByb3RvdHlwZS5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKToKKyAgICAgICAgQWRkIGEg
c3BlY2xpYWxpemVkIGNsYXNzIHRvIGhvbGQgdGhlIGxvZ2ljIGZvciBmdXp6eSBtYXRjaGluZyBv
ZiBDU1MgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorICAgICAgICBJdCBjbG9uZXMgbG9naWMgZnJv
bSBgV0kuUmVzb3VjZVF1ZXJ5Q29udHJvbGxlcmAgd2l0aCBhZGp1c3RtZW50cyBzcGVjaWZpYyB0
byBDU1M7IG1vcmUgdG8gZm9sbG93IGFzIHRoZSBmZWF0dXJlIGdldHMgcmVmaW5lZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMpOgor
ICAgICAgICAoV0kuQ1NTQ29tcGxldGlvbnMucHJvdG90eXBlLmFkZFZhbHVlcyk6CisgICAgICAg
IChXSS5DU1NDb21wbGV0aW9ucy5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAgICAgICAgU3Vw
cG9ydCBib3RoIHRoZSBjdXJyZW50IHByZWZpeCBtYXRjaGluZyBhcHByb2FjaCBhcyB3ZWxsIGFz
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5
d29yZENvbXBsZXRpb25zLmpzOgorICAgICAgICAoV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZv
clBhcnRpYWxQcm9wZXJ0eU5hbWUpOgorICAgICAgICBPcHQgaW50byBmdXp6eSBtYXRjaGluZyB3
aGVuIGdldHRpbmcgY29tcGxldGlvbnMgZm9yIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMuIAor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQuanM6CisgICAgICAg
IChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNoZXMpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sOgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzczoKKyAgICAgICAgKC5jb21wbGV0aW9uLXN1Z2dlc3Rp
b25zLWNvbnRhaW5lciA+IC5pdGVtID4gLmhpZ2hsaWdodGVkKToKKyAgICAgICAgSGlnaGxpZ2h0
IHNwZWNpZmljIGNoYXJhY3RlcnMgdGhhdCBtYXRjaGVkIGluIHJlc3VsdCBpZGVudGlmaWVkIGJ5
IGZ1enp5IG1hdGNoaW5nLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LmpzOgorICAgICAgICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25z
Vmlldy5wcm90b3R5cGUuc2VsZWN0TmV4dCk6CisgICAgICAgIChXSS5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LnByb3RvdHlwZS5zZWxlY3RQcmV2aW91cyk6CisgICAgICAgIChXSS5Db21wbGV0
aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZS51cGRhdGUpOgorICAgICAgICAoV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuZ2V0Q29tcGxldGlvblRleHQpOgorICAgICAg
ICAoV0kuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUuX2NyZWF0ZUhpZ2hsaWdo
dGVkQ29tcGxldGlvbkZyYWdtZW50KToKKyAgICAgICAgQ2hhbmdlIGBXSS5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3YCB0byBob2xkIGEgbGlzdCBvZiBjb21wbGV0aW9ucywgCisgICAgICAgIGVp
dGhlciBzdHJpbmdzIG9yIGBXSS5RdWVyeVJlc3VsdGAsIGFuZCByZXR1cm4gdGhlIGFwcHJvcHJp
YXRlIGNvbXBsZXRpb24gdGV4dAorICAgICAgICBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgYHRl
eHRDb250ZW50YCBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudC4KKworICAgICAgICBgV0kuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlld2AgaXMgdXNlZCBlbHNld2hlcmUgaW4gdGhlIENvbnNvbGUgYW5k
IFNvdXJjZXMgcGFuZWwKKyAgICAgICAgc28gYXZvaWQgaW1wYWN0aW5nIHRob3NlIGNvbnN1bWVy
cyB1bnRpbCB0aGV5IG9wdCBpbiB0byBmdXp6eSBtYXRjaGluZyBhcyB3ZWxsLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3LmpzOgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanM6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkucHJvdG90eXBlLl9oYW5kbGVOYW1l
Q2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUu
X2hhbmRsZVZhbHVlQ2hhbmdlKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0
eS5wcm90b3R5cGUuX25hbWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKToKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5wcm90b3R5cGUuX3ZhbHVlQ29tcGxldGlvbkRhdGFQcm92
aWRlcik6CisgICAgICAgIE9uIGNoYW5nZSwgZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgYFdJLlNwcmVh
ZHNoZWV0VGV4dEZpZWxkYCBpbnN0ZWFkIG9mIAorICAgICAgICB0aGUgY29ycmVzcG9uZGluZyBl
bGVtZW50J3MgYHRleHRDb250ZW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
U3ByZWFkc2hlZXRUZXh0RmllbGQuanM6CisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0
VGV4dEZpZWxkLl9jb21wbGV0aW9uUHJlZml4YCB0byBob2xkIHRoZSBxdWVyeSBhIHVzZXIgaXMg
dHlwaW5nLgorCisgICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9jb21w
bGV0aW9uVGV4dGAgdG8gaG9sZCB0aGUgY29tcGxldGlvbiB0ZXh0IG9mIHRoZSBzZWxlY3RlZCBi
dXQKKyAgICAgICAgbm90IHlldCBhcHBsaWVkIGNvbXBsZXRpb24uIFRoaXMgcmVwbGFjZXMgdGhl
IHByZXZpb3VzIGJlaGF2aW9yIG9mIGNvbmNhdGVuYXRpbmcgdGhlIHF1ZXJ5IGFuZCBgc3VnZ2Vz
dGlvbkhpbnRgCisgICAgICAgIGJlY2F1c2Ugd2l0aCBmdXp6eSBtYXRjaGluZyB0aGUgY29tcGxl
dGlvbiBpc24ndCBndWFyYW50ZWVkIHRvIGJlIHByZWZpeGVkIHdpdGggdGhlIHF1ZXJ5LgorCisg
ICAgICAgIEludHJvZHVjZWQgYFNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5nVmFsdWVgIHRv
IGhvbGQgdGhlIHJlc3VsdCBvZiBhcHBseWluZyB0aGUgc2VsZWN0ZWQKKyAgICAgICAgY29tcGxl
dGlvbi4gVGhpcyByZXBsYWNlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3Igb2YgYFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkLl9jb21iaW5lRWRpdG9yRWxlbWVudENoaWxkcmVuYC4KKworICAgICAgICAo
V0kuU3ByZWFkc2hlZXRUZXh0RmllbGQpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0Rmll
bGQucHJvdG90eXBlLmdldCB2YWx1ZSk6CisgICAgICAgIENoYW5nZSBgV0kuU3ByZWFkc2hlZXRU
ZXh0RmllbGRgIHNvIGl0cyB2YWx1ZSBpcyBkaXZvcmNlZCBmcm9tIGl0cyBlbGVtZW50J3MgYHRl
eHRDb250ZW50YC4KKyAgICAgICAgV2hpbGUgZWRpdGluZywgYFdJLlNwcmVhZHNoZWV0VGV4dEZp
ZWxkLnZhbHVlYCByZXR1cm5zIHRoZSBwZW5kaW5nIHZhbHVlIHNvIHRoYXQKKyAgICAgICAgYSB2
YWxpZCBDU1Mgc3RyaW5nIGdldHMgd3JpdHRlbiB0byB0aGUgc3R5bGVzaGVldC4KKworICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLnNldCBzdWdnZXN0aW9uSGludCk6
CisgICAgICAgIElmIHRoZSBxdWVyeSBpcyBhIHByZWZpeCBmb3IgdGhlIHNlbGVjdGVkIGNvbXBs
ZXRpb24sIGtlZXAgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIGFwcGVuZGluZworICAgICAgICB0
aGUgc3VnZ2VzdGlvbiBoaW50IHN1YnN0cmluZy4gT3RoZXJ3aXNlLCBoaWRlIHRoZSBzdWdnZXN0
aW9uIGhpbnQgZWxlbWVudCBiZWNhdXNlIHRoZQorICAgICAgICBjb25jYXRlbmF0aW9uIGRvZXNu
J3QgbWFrZSBzZW5zZS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90
eXBlLnN0b3BFZGl0aW5nKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3Rv
dHlwZS5kaXNjYXJkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuY29tcGxldGlvblN1Z2dlc3Rpb25zU2VsZWN0ZWRDb21wbGV0aW9uKToKKyAg
ICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNDbGlja2VkQ29tcGxldGlvbik6CisgICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVs
ZC5wcm90b3R5cGUuX2Rpc2NhcmRDaGFuZ2UpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQucHJvdG90eXBlLl9oYW5kbGVCbHVyKToKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkLnByb3RvdHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXSS5TcHJlYWRzaGVl
dFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUtleURvd25Gb3JTdWdnZXN0aW9uVmlldyk6Cisg
ICAgICAgIChXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5wcm90b3R5cGUuX2hhbmRsZUlucHV0KToK
KyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLnByb3RvdHlwZS5fdXBkYXRlQ29tcGxl
dGlvbnMpOgorICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBs
eVBlbmRpbmdWYWx1ZSk6CisgICAgICAgIEFmdGVyIGFwcGx5aW5nIGEgY29tcGxldGlvbiwgdGhl
IHZhbHVlIGlzIHJlcGxhY2VkIHdpdGggYFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkLl9wZW5kaW5n
VmFsdWVgLgorICAgICAgICBBdCB0aGlzIHBvaW50LCBgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQu
dmFsdWVgIGFuZCB0aGUgYHRleHRDb250ZW50YCBvZiB0aGUgZWxlbWVudCBjb252ZXJnZS4KKwor
ICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl91cGRhdGVQZW5kaW5n
VmFsdWVXaXRoQ29tcGxldGlvblRleHQpOgorICAgICAgICBXaGVuIHByZXNlbnRlZCB3aXRoIGEg
Y29tcGxldGlvbiwgdGhlIHF1ZXJ5IGdldHMgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgZnVsbCBjb21w
bGV0aW9uIHRleHQgaW4gCisgICAgICAgIGBXSS5TcHJlYWRzaGVldFRleHRGaWVsZC5fcGVuZGlu
Z1ZhbHVlYCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHF1ZXJ5IGlzIGEgcHJlZml4IG9yIG5v
dC4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQucHJvdG90eXBlLl9hcHBseUNv
bXBsZXRpb25IaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxk
LnByb3RvdHlwZS5fY29tYmluZUVkaXRvckVsZW1lbnRDaGlsZHJlbik6IERlbGV0ZWQuCisKIDIw
MjEtMTItMDYgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFN1cHBvcnQgQ2FzY2FkZSBMYXllcnMgaW4gdGhlIFN0eWxlcyBzaWRlYmFy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCBlNWJlOTViMTk3OWJkM2YxYWMy
MDVkMTYwZjQ5NmM4YWRmM2QyZTkzLi5hMjU3NDNkMzNkMGQ4YjJmMzZjNGNiZjZmMGExNzgxYjNk
MzE2NjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTE2MDcsNiArMTYw
Nyw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlVzYWdlOiAlcyJdID0gIlVzYWdlOiAlcyI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJVc2UgRGVmYXVsdCBBcHBlYXJhbmNlIl0gPSAiVXNlIERlZmF1bHQgQXBw
ZWFyYW5jZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJVc2UgTW9jayBDYXB0dXJlIERldmljZXMiXSA9
ICJVc2UgTW9jayBDYXB0dXJlIERldmljZXMiOwogbG9jYWxpemVkU3RyaW5nc1siVXNlIGRlZmF1
bHQgbWVkaWEgc3R5bGVzIl0gPSAiVXNlIGRlZmF1bHQgbWVkaWEgc3R5bGVzIjsKK2xvY2FsaXpl
ZFN0cmluZ3NbIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9ucyJd
ID0gIlVzZSBmdXp6eSBtYXRjaGluZyBmb3IgY29tcGxldGlvbiBzdWdnZXN0aW9ucyI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJj
ZXMiXSA9ICJVc2UgdGhlIHJlc291cmNlIGNhY2hlIHdoZW4gbG9hZGluZyByZXNvdXJjZXMiOwog
bG9jYWxpemVkU3RyaW5nc1siVXNlciBBZ2VudCJdID0gIlVzZXIgQWdlbnQiOwogbG9jYWxpemVk
U3RyaW5nc1siVXNlciBBZ2VudCBTdHlsZSBTaGVldCJdID0gIlVzZXIgQWdlbnQgU3R5bGUgU2hl
ZXQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9T
ZXR0aW5nLmpzCmluZGV4IGQyZWIyNWI3ZWNlMWE4NDE4MTkyZDE2YjJhMmJlNDZiZTJlNjNhMzMu
LmQwMzczOWUwYzAzNjU2MWUyNzYyNjE5ZWJmNTEzNTI5NjBkM2Q4YjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKQEAgLTIz
MSw2ICsyMzEsNyBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBleHBlcmltZW50YWxFbmFibGVTdHls
ZXNKdW1wVG9WYXJpYWJsZURlY2xhcmF0aW9uOiBuZXcgV0kuU2V0dGluZygiZXhwZXJpbWVudGFs
LXN0eWxlcy1qdW1wLXRvLXZhcmlhYmxlLWRlY2xhcmF0aW9uIiwgZmFsc2UpLAogICAgIGV4cGVy
aW1lbnRhbENvbGxhcHNlQmxhY2tib3hlZENhbGxGcmFtZXM6IG5ldyBXSS5TZXR0aW5nKCJleHBl
cmltZW50YWwtY29sbGFwc2UtYmxhY2tib3hlZC1jYWxsLWZyYW1lcyIsIGZhbHNlKSwKICAgICBl
eHBlcmltZW50YWxBbGxvd0luc3BlY3RpbmdJbnNwZWN0b3I6IG5ldyBXSS5TZXR0aW5nKCJleHBl
cmltZW50YWwtYWxsb3ctaW5zcGVjdGluZy1pbnNwZWN0b3IiLCBmYWxzZSksCisgICAgZXhwZXJp
bWVudGFsQ1NTQ29tcGxldGlvbkZ1enp5TWF0Y2hpbmc6IG5ldyBXSS5TZXR0aW5nKCJleHBlcmlt
ZW50YWwtY3NzLWNvbXBsZXRpb24tZnV6enktbWF0Y2hpbmciLCBmYWxzZSksCiAKICAgICAvLyBQ
cm90b2NvbAogICAgIHByb3RvY29sTG9nQXNUZXh0OiBuZXcgV0kuU2V0dGluZygicHJvdG9jb2wt
bG9nLWFzLXRleHQiLCBmYWxzZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzCmluZGV4IDJkOTE5NjA1ZmYyM2IzMjBkOWRi
NDk3MjdiZTIxMTQ4NzFmNmZjN2UuLmY0NTBjMzliNjNjN2E0ZTk2YTYzNmE0MGUyZTJkN2RhZDYz
ODA2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvVXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvVXRpbGl0aWVzLmpzCkBAIC03NzMsNyArNzczLDcgQEAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KFN0cmluZy5wcm90b3R5cGUsICJpc0xvd2VyQ2FzZSIsCiB7CiAgICAgdmFsdWUoKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzKSA9PT0gdGhpcy50b0xvd2VyQ2FzZSgpOwor
ICAgICAgICByZXR1cm4gL15bYS16XSskLy50ZXN0KHRoaXMpOwogICAgIH0KIH0pOwogCkBAIC03
ODEsNyArNzgxLDcgQEAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFN0cmluZy5wcm90b3R5cGUsICJp
c1VwcGVyQ2FzZSIsCiB7CiAgICAgdmFsdWUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmlu
Zyh0aGlzKSA9PT0gdGhpcy50b1VwcGVyQ2FzZSgpOworICAgICAgICByZXR1cm4gL15bQS1aXSsk
Ly50ZXN0KHRoaXMpOwogICAgIH0KIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNv
bnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUxMjQ0OTMxNzk1YjExYWE1Y2MxNmFkZWFmY2I5OTcx
YzIzOWZjMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcwpAQCAtMCwwICsxLDExNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1dJLkNTU1F1ZXJ5Q29udHJvbGxlciA9IGNsYXNzIENTU1F1ZXJ5Q29u
dHJvbGxlciBleHRlbmRzIFdJLlF1ZXJ5Q29udHJvbGxlcgoreworICAgIGNvbnN0cnVjdG9yKHZh
bHVlcykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkodmFsdWVz
KSwgdmFsdWVzKTsKKworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3ZhbHVlcyA9
IHZhbHVlcyB8fCBbXTsKKyAgICAgICAgdGhpcy5fY2FjaGVkU3BlY2lhbENoYXJhY3RlckluZGlj
ZXNGb3JWYWx1ZU1hcCA9IG5ldyBNYXA7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBh
ZGRWYWx1ZXModmFsdWVzKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuaXNB
cnJheSh2YWx1ZXMpLCB2YWx1ZXMpOworICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdmFsdWVzLnB1c2hBbGwodmFsdWVzKTsK
KyAgICB9CisKKyAgICByZXNldCgpCisgICAgeworICAgICAgICB0aGlzLl92YWx1ZXMgPSBbXTsK
KyAgICAgICAgdGhpcy5fY2FjaGVkU3BlY2lhbENoYXJhY3RlckluZGljZXNGb3JWYWx1ZU1hcC5j
bGVhcigpOworICAgIH0KKworICAgIGV4ZWN1dGVRdWVyeShxdWVyeSkKKyAgICB7CisgICAgICAg
IGlmICghcXVlcnkgfHwgIXRoaXMuX3ZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
W107CisKKyAgICAgICAgcXVlcnkgPSBxdWVyeS50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIGxl
dCByZXN1bHRzID0gW107CisKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcy5fdmFsdWVz
KSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2NhY2hlZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2Vz
Rm9yVmFsdWVNYXAuaGFzKHZhbHVlKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRTcGVj
aWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVlTWFwLnNldCh2YWx1ZSwgdGhpcy5fZmluZFNwZWNp
YWxDaGFyYWN0ZXJJbmRpY2VzKHZhbHVlKSk7CisKKyAgICAgICAgICAgIGxldCBtYXRjaGVzID0g
dGhpcy5maW5kUXVlcnlNYXRjaGVzKHF1ZXJ5LCB2YWx1ZS50b0xvd2VyQ2FzZSgpLCB0aGlzLl9j
YWNoZWRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZhbHVlTWFwLmdldCh2YWx1ZSkpOworICAg
ICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJlc3VsdHMucHVz
aChuZXcgV0kuUXVlcnlSZXN1bHQodmFsdWUsIG1hdGNoZXMpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiByZXN1bHRzLnNvcnQoKGEsIGIpID0+IHsKKyAgICAgICAgICAgIGlmIChhLnJh
bmsgPT09IGIucmFuaykKKyAgICAgICAgICAgICAgICByZXR1cm4gYS52YWx1ZS5leHRlbmRlZExv
Y2FsZUNvbXBhcmUoYi52YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gYi5yYW5rIC0gYS5yYW5r
OworICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZmluZFNwZWNp
YWxDaGFyYWN0ZXJJbmRpY2VzKHN0cmluZykKKyAgICB7CisgICAgICAgIGlmICghc3RyaW5nLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBjb25zdCBzZXBhcmF0b3Jz
ID0gIi1fIjsKKworICAgICAgICAvLyBTcGVjaWFsIGNoYXJhY3RlcnMgaW5jbHVkZSB0aGUgZm9s
bG93aW5nOgorICAgICAgICAvLyAxLiBUaGUgZmlyc3QgY2hhcmFjdGVyLgorICAgICAgICAvLyAy
LiBVcHBlcmNhc2UgY2hhcmFjdGVycyB0aGF0IGZvbGxvdyBhIGxvd2VyY2FzZSBsZXR0ZXIuCisg
ICAgICAgIC8vIDMuIFNlcGFyYXRvcnMgYW5kIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5n
IHRoZSBzZXBhcmF0b3IuCisgICAgICAgIGxldCBpbmRpY2VzID0gWzBdOworCisgICAgICAgIGZv
ciAobGV0IGkgPSAxOyBpIDwgc3RyaW5nLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBsZXQg
Y2hhcmFjdGVyID0gc3RyaW5nW2ldOworICAgICAgICAgICAgbGV0IGlzU3BlY2lhbCA9IGZhbHNl
OworCisgICAgICAgICAgICBpZiAoc2VwYXJhdG9ycy5pbmNsdWRlcyhjaGFyYWN0ZXIpKQorICAg
ICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBsZXQgcHJldmlvdXNDaGFyYWN0ZXIgPSBzdHJpbmdbaSAtIDFdOworICAgICAg
ICAgICAgICAgIGlmIChzZXBhcmF0b3JzLmluY2x1ZGVzKHByZXZpb3VzQ2hhcmFjdGVyKSkKKyAg
ICAgICAgICAgICAgICAgICAgaXNTcGVjaWFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChjaGFyYWN0ZXIuaXNVcHBlckNhc2UoKSAmJiBwcmV2aW91c0NoYXJhY3Rlci5pc0xvd2Vy
Q2FzZSgpKQorICAgICAgICAgICAgICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoaXNTcGVjaWFsKQorICAgICAgICAgICAgICAgIGluZGlj
ZXMucHVzaChpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbmRpY2VzOworICAgIH0K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggNjA4OTViMjg0OWI4ZDZmMDNkNjRkZDZiZDE0NGE2MGFlNWJiNjRmNS4uMzc0OWFiMDRlOTQ2
OWE2ZWNiYjBlNThlYmY2ZWY3ODZhNDUyNjY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtOTI3LDYgKzkyNyw3IEBACiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL01lbW9yeU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJDb250cm9sbGVycy9OZXR3b3JrTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL092ZXJsYXlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NTUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzCmluZGV4IDFiMzZlNThjZjU4ODRl
MzU1MTMxNDlkZGUyNmU2OTFjN2VjMWZhMjIuLjA4YjMyZTQxYjlmMTcyNGMyOTgyZTY4ODI1M2Zh
NDhlYmE0NTE4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKQEAgLTU4LDYgKzU4LDcgQEAg
V0kuQ1NTQ29tcGxldGlvbnMgPSBjbGFzcyBDU1NDb21wbGV0aW9ucwogICAgICAgICB0aGlzLl92
YWx1ZXMuc29ydCgpOwogCiAgICAgICAgIHRoaXMuX2FjY2VwdEVtcHR5UHJlZml4ID0gYWNjZXB0
RW1wdHlQcmVmaXg7CisgICAgICAgIHRoaXMuX3F1ZXJ5Q29udHJvbGxlciA9IG51bGw7CiAgICAg
fQogCiAgICAgLy8gU3RhdGljCkBAIC0yNTMsNiArMjU0LDE1IEBAIFdJLkNTU0NvbXBsZXRpb25z
ID0gY2xhc3MgQ1NTQ29tcGxldGlvbnMKIAogICAgICAgICB0aGlzLl92YWx1ZXMucHVzaEFsbCh2
YWx1ZXMpOwogICAgICAgICB0aGlzLl92YWx1ZXMuc29ydCgpOworCisgICAgICAgIHRoaXMuX3F1
ZXJ5Q29udHJvbGxlcj8uYWRkVmFsdWVzKHZhbHVlcyk7CisgICAgfQorCisgICAgZXhlY3V0ZVF1
ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgdGhpcy5fcXVlcnlDb250cm9sbGVyIHx8PSBuZXcg
V0kuQ1NTUXVlcnlDb250cm9sbGVyKHRoaXMuX3ZhbHVlcyk7CisKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3F1ZXJ5Q29udHJvbGxlci5leGVjdXRlUXVlcnkocXVlcnkpOwogICAgIH0KIAogICAgIHN0
YXJ0c1dpdGgocHJlZml4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NLZXl3b3JkQ29tcGxldGlvbnMuanMKaW5k
ZXggMjE0OTU1MGY4MzZhNGNkMGRmZDUzYThiMGMyYjA2OGY4NmJiNzcwNC4uZWZhMTAzNjNkYWY5
OTI3NzY5MzkwYzM3ODdhOGQ2MjM3NTU2MmNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0tleXdvcmRDb21wbGV0aW9ucy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTS2V5d29yZENv
bXBsZXRpb25zLmpzCkBAIC0zMSw3ICszMSw3IEBACiAKIFdJLkNTU0tleXdvcmRDb21wbGV0aW9u
cyA9IHt9OwogCi1XSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFt
ZSA9IGZ1bmN0aW9uKHRleHQsIHtjYXJldFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9
KQorV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUgPSBmdW5j
dGlvbih0ZXh0LCB7Y2FyZXRQb3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeCwgdXNlRnV6enlNYXRj
aGluZ30gPSB7fSkKIHsKICAgICBjYXJldFBvc2l0aW9uID8/PSB0ZXh0Lmxlbmd0aDsKICAgICBh
bGxvd0VtcHR5UHJlZml4ID8/PSBmYWxzZTsKQEAgLTQyLDEwICs0MiwxNyBAQCBXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSA9IGZ1bmN0aW9uKHRleHQsIHtj
YXJldFBvc2l0aW9uLAogCiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCAmJiBhbGxvd0VtcHR5UHJlZml4
KQogICAgICAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnM6IFdJLkNTU0NvbXBs
ZXRpb25zLmNzc05hbWVDb21wbGV0aW9ucy52YWx1ZXN9OwotICAgIHJldHVybiB7cHJlZml4OiB0
ZXh0LCBjb21wbGV0aW9uczpXSS5DU1NDb21wbGV0aW9ucy5jc3NOYW1lQ29tcGxldGlvbnMuc3Rh
cnRzV2l0aCh0ZXh0KX07CisKKyAgICBsZXQgY29tcGxldGlvbnM7CisgICAgaWYgKHVzZUZ1enp5
TWF0Y2hpbmcpCisgICAgICAgIGNvbXBsZXRpb25zID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFt
ZUNvbXBsZXRpb25zLmV4ZWN1dGVRdWVyeSh0ZXh0KTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBs
ZXRpb25zID0gV0kuQ1NTQ29tcGxldGlvbnMuY3NzTmFtZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgo
dGV4dCk7CisKKyAgICByZXR1cm4ge3ByZWZpeDogdGV4dCwgY29tcGxldGlvbnN9OwogfTsKIAot
V0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rp
b24odGV4dCwgcHJvcGVydHlOYW1lLCB7Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9u
VmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyfSA9IHt9KQorV0kuQ1NTS2V5d29yZENvbXBsZXRpb25z
LmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24odGV4dCwgcHJvcGVydHlOYW1lLCB7
Y2FyZXRQb3NpdGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVy
LCB1c2VGdXp6eU1hdGNoaW5nfSA9IHt9KQogewogICAgIGNhcmV0UG9zaXRpb24gPz89IHRleHQu
bGVuZ3RoOwogCkBAIC04NiwxMCArOTMsMTUgQEAgV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZv
clBhcnRpYWxQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24odGV4dCwgcHJvcGVydHlOYW1lLAogICAg
IGlmICgoY2FyZXRJc0luTWlkZGxlT2ZUb2tlbiAmJiBjdXJyZW50VG9rZW5WYWx1ZS5sZW5ndGgp
IHx8ICghY2FyZXRJc0luTWlkZGxlT2ZUb2tlbiAmJiB0b2tlbkFmdGVyQ2FyZXQgJiYgL1thLXpB
LVowLTktXS8udGVzdCh0b2tlbkFmdGVyQ2FyZXQudmFsdWVbMF0pKSkKICAgICAgICAgcmV0dXJu
IHtwcmVmaXg6ICIiLCBjb21wbGV0aW9uczogW119OwogCi0gICAgLy8gSWYgdGhlIGN1cnJlbnQg
dG9rZW4gdmFsdWUgaXMgYSBjb21tYSBvciBvcGVuaW5nIHBhcmVudGhlc2lzLCB0cmVhdCBpdCBh
cyBpZiB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgbmV3IHRva2VuLgorICAgIC8vIElmIHRoZSBj
dXJyZW50IHRva2VuIHZhbHVlIGlzIGEgY29tbWEgb3Igb3BlbiBwYXJlbnRoZXNpcywgdHJlYXQg
aXQgYXMgaWYgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIG5ldyB0b2tlbi4KICAgICBpZiAoY3Vy
cmVudFRva2VuVmFsdWUgPT09ICIoIiB8fCBjdXJyZW50VG9rZW5WYWx1ZSA9PT0gIiwiKQogICAg
ICAgICBjdXJyZW50VG9rZW5WYWx1ZSA9ICIiOwogCisgICAgLy8gSXQncyBub3QgdmFsaWQgQ1NT
IHRvIGFwcGVuZCBjb21wbGV0aW9ucyBpbW1lZGlhdGVseSBhZnRlciBhIGNsb3NpbmcgcGFyZW50
aGVzaXMuCisgICAgbGV0IHRva2VuQmVmb3JlQ2FyZXQgPSB0b2tlbnNbaW5kZXhPZlRva2VuQXRD
YXJldCAtIDFdOworICAgIGlmIChjdXJyZW50VG9rZW5WYWx1ZSA9PT0gIikiIHx8IHRva2VuQmVm
b3JlQ2FyZXQ/LnZhbHVlID09PSAiKSIpCisgICAgICAgIHJldHVybiB7cHJlZml4OiAiIiwgY29t
cGxldGlvbnM6IFtdfTsKKwogICAgIGxldCBmdW5jdGlvbk5hbWUgPSBudWxsOwogICAgIGxldCBw
cmVjZWVkaW5nRnVuY3Rpb25EZXB0aCA9IDA7CiAgICAgZm9yIChsZXQgaSA9IGluZGV4T2ZUb2tl
bkF0Q2FyZXQ7IGkgPj0gMDsgLS1pKSB7CkBAIC0xMDgsMTQgKzEyMCwyMCBAQCBXSS5DU1NLZXl3
b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUgPSBmdW5jdGlvbih0ZXh0LCBw
cm9wZXJ0eU5hbWUsCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBsZXQgdmFsdWVDb21wbGV0aW9u
czsKICAgICBpZiAoZnVuY3Rpb25OYW1lKSB7Ci0gICAgICAgIGxldCBjb21wbGV0aW9ucyA9IFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JGdW5jdGlvbihmdW5jdGlvbk5hbWUpOwotICAgICAg
ICBsZXQgY29udGV4dHVhbFZhbHVlQ29tcGxldGlvbnMgPSBhZGRpdGlvbmFsRnVuY3Rpb25WYWx1
ZUNvbXBsZXRpb25zUHJvdmlkZXI/LihmdW5jdGlvbk5hbWUpIHx8IFtdOwotICAgICAgICBjb21w
bGV0aW9ucy5hZGRWYWx1ZXMoY29udGV4dHVhbFZhbHVlQ29tcGxldGlvbnMpOwotICAgICAgICBy
ZXR1cm4ge3ByZWZpeDogY3VycmVudFRva2VuVmFsdWUsIGNvbXBsZXRpb25zOiBjb21wbGV0aW9u
cy5zdGFydHNXaXRoKGN1cnJlbnRUb2tlblZhbHVlKX07Ci0gICAgfQorICAgICAgICB2YWx1ZUNv
bXBsZXRpb25zID0gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvckZ1bmN0aW9uKGZ1bmN0aW9u
TmFtZSk7CisgICAgICAgIHZhbHVlQ29tcGxldGlvbnMuYWRkVmFsdWVzKGFkZGl0aW9uYWxGdW5j
dGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlcj8uKGZ1bmN0aW9uTmFtZSkgPz8gW10pOworICAg
IH0gZWxzZQorICAgICAgICB2YWx1ZUNvbXBsZXRpb25zID0gV0kuQ1NTS2V5d29yZENvbXBsZXRp
b25zLmZvclByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisKKyAgICBsZXQgY29tcGxldGlvbnM7Cisg
ICAgaWYgKHVzZUZ1enp5TWF0Y2hpbmcpCisgICAgICAgIGNvbXBsZXRpb25zID0gdmFsdWVDb21w
bGV0aW9ucy5leGVjdXRlUXVlcnkoY3VycmVudFRva2VuVmFsdWUpOworICAgIGVsc2UKKyAgICAg
ICAgY29tcGxldGlvbnMgPSB2YWx1ZUNvbXBsZXRpb25zLnN0YXJ0c1dpdGgoY3VycmVudFRva2Vu
VmFsdWUpOwogCi0gICAgcmV0dXJuIHtwcmVmaXg6IGN1cnJlbnRUb2tlblZhbHVlLCBjb21wbGV0
aW9uczogV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclByb3BlcnR5KHByb3BlcnR5TmFtZSku
c3RhcnRzV2l0aChjdXJyZW50VG9rZW5WYWx1ZSl9OworICAgIHJldHVybiB7cHJlZml4OiBjdXJy
ZW50VG9rZW5WYWx1ZSwgY29tcGxldGlvbnN9OwogfTsKIAogV0kuQ1NTS2V5d29yZENvbXBsZXRp
b25zLmZvclByb3BlcnR5ID0gZnVuY3Rpb24ocHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0Lmpz
CmluZGV4IDhmMjZkYzIwOGY2MTk4OWE2ZmE0MThjZjk4ZDE1MmEyOTU4ZTc1MDMuLjVmZWVkYTM0
YmExOGYwNGViNGJhNWU5MGRjNWMxNzcwOGRkNjg0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQuanMKQEAg
LTM2LDYgKzM2LDcgQEAgV0kuUXVlcnlSZXN1bHQgPSBjbGFzcyBRdWVyeVJlc3VsdAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7IH0KKyAgICBn
ZXQgbWF0Y2hlcygpIHsgcmV0dXJuIHRoaXMuX21hdGNoZXM7IH0KIAogICAgIGdldCByYW5rKCkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9U
ZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
aW5kZXggYzMwMGJjMGM5NzhlMjYwNzE1YTg4ODVmZjhiMjAzNTgyM2NjYzg4OS4uNzc3MTkwNjVk
ZDMwNmUyOTJhYjU0ZGJiZDhiNzEzNWFlMjdhNWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMjUzLDYgKzI1Myw3IEBACiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Ccm93c2VyTWFuYWdlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DYW52YXNNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ29uc29sZU1hbmFnZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9ET01EZWJ1Z2dlck1h
bmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5jc3MgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3LmNzcwppbmRleCA2NjdhMDIzZTc5YTNhZWU3MTk4MjY1NmUxYzM2YTA1NDAyMzM3MjUzLi44
YTRlZGNmMDZlMDZmMWI4YmFjYWYyYjFkMWNkYTc5MWI1MzcxZjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmNzcwpAQCAtNzAsNiArNzAsMTAgQEAKICAgICBj
b2xvcjogdmFyKC0tdGV4dC1jb2xvcik7CiB9CiAKKy5jb21wbGV0aW9uLXN1Z2dlc3Rpb25zLWNv
bnRhaW5lciA+IC5pdGVtID4gLm1hdGNoZWQgeworICAgIGZvbnQtd2VpZ2h0OiBib2xkOworfQor
CiAuY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXI6bm90KDphY3RpdmUpID4gLml0ZW0u
c2VsZWN0ZWQsCiAuY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWluZXIgPiAuaXRlbTphY3Rp
dmUgewogICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdGVkLWJhY2tncm91bmQtY29s
b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKaW5kZXggODM2
ODMyOWQzMGY3YmVjMGMxNGU0M2VmMzdlNjlhMjIwZjRlMjNmMi4uMTE1MjY0Njg3MzdhNWE2MWM4
NTdmNzA5YjhmYmVjN2QwNjJjMGZjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LmpzCkBAIC0zMiw2ICszMiw3IEBAIFdJLkNvbXBsZXRpb25TdWdnZXN0aW9uc1Zp
ZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKICAgICAgICAgdGhpcy5f
cHJldmVudEJsdXIgPSBwcmV2ZW50Qmx1ciB8fCBmYWxzZTsKIAorICAgICAgICB0aGlzLl9jb21w
bGV0aW9ucyA9IFtdOwogICAgICAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0gTmFOOwogICAgICAg
ICB0aGlzLl9tb3ZlSW50ZXJ2YWxJZGVudGlmaWVyID0gbnVsbDsKIApAQCAtODksOSArOTAsOCBA
QCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICArK3Ro
aXMuc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtRWxlbWVudCA9IHRo
aXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1FbGVtZW50
ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3Vn
Z2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0
aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24odGhp
cywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAgIGlmICh0aGlzLl9j
b21wbGV0aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKQorICAgICAgICAgICAgdGhpcy5fZGVsZWdh
dGU/LmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8uKHRoaXMsIHRoaXMu
Z2V0Q29tcGxldGlvblRleHQodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkp
OwogICAgIH0KIAogICAgIHNlbGVjdFByZXZpb3VzKCkKQEAgLTEwMSw5ICsxMDEsOCBAQCBXSS5D
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25zVmll
dyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBlbHNlCiAgICAgICAgICAgICAtLXRoaXMuc2Vs
ZWN0ZWRJbmRleDsKIAotICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtRWxlbWVudCA9IHRoaXMuX3Nl
bGVjdGVkSXRlbUVsZW1lbnQ7Ci0gICAgICAgIGlmIChzZWxlY3RlZEl0ZW1FbGVtZW50ICYmIHRo
aXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlv
bnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24odGhpcywgc2Vs
ZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7CisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0
aW9uc1t0aGlzLnNlbGVjdGVkSW5kZXhdKQorICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGU/LmNv
bXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbj8uKHRoaXMsIHRoaXMuZ2V0Q29t
cGxldGlvblRleHQodGhpcy5fY29tcGxldGlvbnNbdGhpcy5zZWxlY3RlZEluZGV4XSkpOwogICAg
IH0KIAogICAgIGlzSGFuZGxpbmdDbGlja0V2ZW50KCkKQEAgLTE3NSwyMiArMTc0LDM5IEBAIFdJ
LkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBjbGFzcyBDb21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgdXBkYXRlKGNvbXBsZXRpb25zLCBzZWxlY3RlZElu
ZGV4KQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9ucyA9IGNvbXBsZXRpb25zOwogCiAgICAgICAg
IGlmICh0eXBlb2Ygc2VsZWN0ZWRJbmRleCA9PT0gIm51bWJlciIpCiAgICAgICAgICAgICB0aGlz
Ll9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleDsKIAotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvbXBsZXRpb25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGZvciAobGV0IFtpbmRl
eCwgY29tcGxldGlvbl0gb2YgY29tcGxldGlvbnMuZW50cmllcygpKSB7CiAgICAgICAgICAgICB2
YXIgaXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAg
ICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKLSAgICAgICAgICAgIGl0ZW1F
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoInNlbGVjdGVkIiwgaSA9PT0gdGhpcy5fc2VsZWN0ZWRJ
bmRleCk7Ci0gICAgICAgICAgICBpdGVtRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbXBsZXRpb25z
W2ldOwotICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChpdGVt
RWxlbWVudCk7CisgICAgICAgICAgICBpdGVtRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJzZWxl
Y3RlZCIsIGluZGV4ID09PSB0aGlzLl9zZWxlY3RlZEluZGV4KTsKIAotICAgICAgICAgICAgaWYg
KHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3Q3VzdG9taXplQ29tcGxldGlvbkVsZW1lbnQgPT09ICJmdW5jdGlvbiIpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuY29tcGxldGlvblN1Z2dlc3Rpb25zVmlld0N1c3Rv
bWl6ZUNvbXBsZXRpb25FbGVtZW50KHRoaXMsIGl0ZW1FbGVtZW50LCBjb21wbGV0aW9uc1tpXSk7
CisgICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBsZXRpb24gPT09ICJzdHJpbmciKQorICAgICAg
ICAgICAgICAgIGl0ZW1FbGVtZW50LnRleHRDb250ZW50ID0gY29tcGxldGlvbjsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGNvbXBsZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVyeVJlc3VsdCkKKyAgICAg
ICAgICAgICAgICBpdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVNYXRjaGVkQ29t
cGxldGlvbkZyYWdtZW50KGNvbXBsZXRpb24udmFsdWUsIGNvbXBsZXRpb24ubWF0Y2hpbmdUZXh0
UmFuZ2VzKSk7CisKKyAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hp
bGQoaXRlbUVsZW1lbnQpOworICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGU/LmNvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXdDdXN0b21pemVDb21wbGV0aW9uRWxlbWVudD8uKHRoaXMsIGl0ZW1FbGVt
ZW50LCBjb21wbGV0aW9uKTsKICAgICAgICAgfQogICAgIH0KIAorICAgIGdldENvbXBsZXRpb25U
ZXh0KGNvbXBsZXRpb24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgY29t
cGxldGlvbiA9PT0gInN0cmluZyIgfHwgY29tcGxldGlvbiBpbnN0YW5jZW9mIFdJLlF1ZXJ5UmVz
dWx0LCBjb21wbGV0aW9uKTsKKworICAgICAgICBpZiAodHlwZW9mIGNvbXBsZXRpb24gPT09ICJz
dHJpbmciKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb247CisKKyAgICAgICAgaWYgKGNv
bXBsZXRpb24gaW5zdGFuY2VvZiBXSS5RdWVyeVJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uLnZhbHVlOworCisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKICAgICAvLyBQ
cml2YXRlCiAKICAgICBnZXQgX3NlbGVjdGVkSXRlbUVsZW1lbnQoKQpAQCAtMjAzLDYgKzIxOSwz
MSBAQCBXSS5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dl
c3Rpb25zVmlldyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gZWxlbWVudDsKICAg
ICB9CiAKKyAgICBfY3JlYXRlTWF0Y2hlZENvbXBsZXRpb25GcmFnbWVudChjb21wbGV0aW9uVGV4
dCwgbWF0Y2hpbmdUZXh0UmFuZ2VzKQorICAgIHsKKyAgICAgICAgbGV0IGNvbXBsZXRpb25GcmFn
bWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAgbGV0IGxh
c3RJbmRleCA9IDA7CisgICAgICAgIGZvciAobGV0IHRleHRSYW5nZSBvZiBtYXRjaGluZ1RleHRS
YW5nZXMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZS5zdGFydENvbHVt
biA+PSAwICYmIHRleHRSYW5nZS5zdGFydENvbHVtbiA8IGNvbXBsZXRpb25UZXh0Lmxlbmd0aCwg
dGV4dFJhbmdlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZS5lbmRDb2x1
bW4gPiAwICYmIHRleHRSYW5nZS5lbmRDb2x1bW4gPD0gY29tcGxldGlvblRleHQubGVuZ3RoLCB0
ZXh0UmFuZ2UpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGV4dFJhbmdlLnN0YXJ0Q29s
dW1uIDwgdGV4dFJhbmdlLmVuZENvbHVtbik7CisKKyAgICAgICAgICAgIGlmICh0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4gPiBsYXN0SW5kZXgpCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkZyYWdt
ZW50LmFwcGVuZChjb21wbGV0aW9uVGV4dC5zdWJzdHJpbmcobGFzdEluZGV4LCB0ZXh0UmFuZ2Uu
c3RhcnRDb2x1bW4pKTsKKworICAgICAgICAgICAgbGV0IG1hdGNoZWRTcGFuID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgbWF0Y2hlZFNwYW4uY2xhc3NMaXN0
LmFkZCgibWF0Y2hlZCIpOworICAgICAgICAgICAgbWF0Y2hlZFNwYW4uYXBwZW5kKGNvbXBsZXRp
b25UZXh0LnN1YnN0cmluZyh0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW4sIHRleHRSYW5nZS5lbmRDb2x1
bW4pKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25GcmFnbWVudC5hcHBlbmQobWF0Y2hlZFNwYW4p
OworICAgICAgICAgICAgbGFzdEluZGV4ID0gdGV4dFJhbmdlLmVuZENvbHVtbjsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChsYXN0SW5kZXggPCBjb21wbGV0aW9uVGV4dC5sZW5ndGgpCisgICAg
ICAgICAgICBjb21wbGV0aW9uRnJhZ21lbnQuYXBwZW5kKGNvbXBsZXRpb25UZXh0LnN1YnN0cmlu
ZyhsYXN0SW5kZXgsIGNvbXBsZXRpb25UZXh0Lmxlbmd0aCkpOworCisgICAgICAgIHJldHVybiBj
b21wbGV0aW9uRnJhZ21lbnQ7CisgICAgfQorCiAgICAgX21vdXNlRG93bihldmVudCkKICAgICB7
CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2V0dGluZ3NUYWJD
b250ZW50Vmlldy5qcwppbmRleCA1ZTQ5ZmY5NjNkZmMzYzUwNzYxM2Y1OTM4ZTFjNTNmYzY3NTc2
ZmQ0Li5kYWE5OTQ5MGY3ZjZmNGRhZGMwNjQ2N2IzYzM1ODRjYzMzNDAxOTVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZXR0aW5nc1RhYkNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NldHRpbmdzVGFiQ29udGVudFZpZXcuanMKQEAgLTM5Nyw2ICszOTcsNyBAQCBXSS5TZXR0
aW5nc1RhYkNvbnRlbnRWaWV3ID0gY2xhc3MgU2V0dGluZ3NUYWJDb250ZW50VmlldyBleHRlbmRz
IFdJLlRhYkNvbnRlbnRWaQogICAgICAgICAgICAgbGV0IHN0eWxlc0dyb3VwID0gZXhwZXJpbWVu
dGFsU2V0dGluZ3NWaWV3LmFkZEdyb3VwKFdJLlVJU3RyaW5nKCJTdHlsZXM6IikpOwogICAgICAg
ICAgICAgc3R5bGVzR3JvdXAuYWRkU2V0dGluZyhXSS5zZXR0aW5ncy5leHBlcmltZW50YWxFbmFi
bGVTdHlsZXNKdW1wVG9FZmZlY3RpdmUsIFdJLlVJU3RyaW5nKCJTaG93IGp1bXAgdG8gZWZmZWN0
aXZlIHByb3BlcnR5IGJ1dHRvbiIpKTsKICAgICAgICAgICAgIHN0eWxlc0dyb3VwLmFkZFNldHRp
bmcoV0kuc2V0dGluZ3MuZXhwZXJpbWVudGFsRW5hYmxlU3R5bGVzSnVtcFRvVmFyaWFibGVEZWNs
YXJhdGlvbiwgV0kuVUlTdHJpbmcoIlNob3cganVtcCB0byB2YXJpYWJsZSBkZWNsYXJhdGlvbiBi
dXR0b24iKSk7CisgICAgICAgICAgICBzdHlsZXNHcm91cC5hZGRTZXR0aW5nKFdJLnNldHRpbmdz
LmV4cGVyaW1lbnRhbENTU0NvbXBsZXRpb25GdXp6eU1hdGNoaW5nLCBXSS5VSVN0cmluZygiVXNl
IGZ1enp5IG1hdGNoaW5nIGZvciBjb21wbGV0aW9uIHN1Z2dlc3Rpb25zIikpOwogCiAgICAgICAg
ICAgICBleHBlcmltZW50YWxTZXR0aW5nc1ZpZXcuYWRkU2VwYXJhdG9yKCk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nw
cmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eS5qcwppbmRleCA1MmM4NzMzMTVj
ZGQ4MzM0NGY1MjRkM2RlNTBjZmMyMDRiZTQ4YTRiLi5kOTRkNzE1ZjU0YjZmYWU1YzI1MzgzMmIz
YWM0MDIyZTU1YmQxNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5
LmpzCkBAIC05MzYsMTIgKzkzNiwxMiBAQCBXSS5TcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgPSBj
bGFzcyBTcHJlYWRzaGVldFN0eWxlUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9o
YW5kbGVOYW1lQ2hhbmdlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX3Byb3BlcnR5Lm5hbWUgPSB0
aGlzLl9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCk7CisgICAgICAgIHRoaXMuX3Byb3Bl
cnR5Lm5hbWUgPSB0aGlzLl9uYW1lVGV4dEZpZWxkLnZhbHVlOwogICAgIH0KIAogICAgIF9oYW5k
bGVWYWx1ZUNoYW5nZSgpCiAgICAgewotICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLl92YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuX3ZhbHVlVGV4dEZp
ZWxkLnZhbHVlOwogCiAgICAgICAgIHRoaXMuX3Byb3BlcnR5LnJhd1ZhbHVlID0gdmFsdWUudHJp
bSgpOwogCkBAIC05NzUsOSArOTc1LDkgQEAgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5ID0g
Y2xhc3MgU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBfbmFtZUNvbXBsZXRpb25EYXRhUHJvdmlkZXIodGV4dCwge2NhcmV0
UG9zaXRpb24sIGFsbG93RW1wdHlQcmVmaXh9ID0ge30pCisgICAgX25hbWVDb21wbGV0aW9uRGF0
YVByb3ZpZGVyKHRleHQsIG9wdGlvbnMgPSB7fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBXSS5D
U1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3BlcnR5TmFtZSh0ZXh0LCB7Y2FyZXRQ
b3NpdGlvbiwgYWxsb3dFbXB0eVByZWZpeH0pOworICAgICAgICByZXR1cm4gV0kuQ1NTS2V5d29y
ZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eU5hbWUodGV4dCwgb3B0aW9ucyk7CiAgICAg
fQogCiAgICAgX2hhbmRsZVZhbHVlQmVmb3JlSW5wdXQoZXZlbnQpCkBAIC05OTksOSArOTk5LDEw
IEBAIFdJLlNwcmVhZHNoZWV0U3R5bGVQcm9wZXJ0eSA9IGNsYXNzIFNwcmVhZHNoZWV0U3R5bGVQ
cm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLnNwcmVhZHNoZWV0VGV4dEZp
ZWxkRGlkQ29tbWl0KHRoaXMuX3ZhbHVlVGV4dEZpZWxkLCB7ZGlyZWN0aW9uOiAiZm9yd2FyZCJ9
KTsKICAgICB9CiAKLSAgICBfdmFsdWVDb21wbGV0aW9uRGF0YVByb3ZpZGVyKHRleHQsIHtjYXJl
dFBvc2l0aW9uLCBhbGxvd0VtcHR5UHJlZml4fSA9IHt9KQorICAgIF92YWx1ZUNvbXBsZXRpb25E
YXRhUHJvdmlkZXIodGV4dCwgb3B0aW9ucyA9IHt9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIFdJ
LkNTU0tleXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSh0ZXh0LCB0aGlz
Ll9uYW1lRWxlbWVudC50ZXh0Q29udGVudC50cmltKCksIHtjYXJldFBvc2l0aW9uLCBhZGRpdGlv
bmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXI6IHRoaXMuYWRkaXRpb25hbEZ1bmN0
aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyLmJpbmQodGhpcyl9KTsKKyAgICAgICAgb3B0aW9u
cy5hZGRpdGlvbmFsRnVuY3Rpb25WYWx1ZUNvbXBsZXRpb25zUHJvdmlkZXIgPSB0aGlzLmFkZGl0
aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlci5iaW5kKHRoaXMpOworICAgICAg
ICByZXR1cm4gV0kuQ1NTS2V5d29yZENvbXBsZXRpb25zLmZvclBhcnRpYWxQcm9wZXJ0eVZhbHVl
KHRleHQsIHRoaXMuX25hbWVFbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSwgb3B0aW9ucyk7CiAg
ICAgfQogCiAgICAgX3NldHVwSnVtcFRvU3ltYm9sKGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFRleHRGaWVs
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0VGV4dEZpZWxkLmpzCmluZGV4IDFkMmFiNGEyZTk4NDQ0Yjc1ZWFiNTAwNjM3YmY0NGIyZjNi
MGNiMjQuLjliNDMxNDc4OWRhMmJlYjUyZWE2OTkwOGIxZmI0MGQ3YjQyMDBhNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0
VGV4dEZpZWxkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0VGV4dEZpZWxkLmpzCkBAIC0yOSw2ICsyOSw3IEBAIFdJLlNwcmVhZHNo
ZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICB7CiAgICAgICAg
IHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50OworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSBudWxsOwogCiAgICAgICAgIHRoaXMu
X2NvbXBsZXRpb25Qcm92aWRlciA9IGNvbXBsZXRpb25Qcm92aWRlciB8fCBudWxsOwogICAgICAg
ICBpZiAodGhpcy5fY29tcGxldGlvblByb3ZpZGVyKSB7CkBAIC01Miw2ICs1Myw3IEBAIFdJLlNw
cmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAg
dGhpcy5fa2V5RG93bkNhcmV0UG9zaXRpb24gPSAtMTsKICAgICAgICAgdGhpcy5fdmFsdWVCZWZv
cmVFZGl0aW5nID0gIiI7CiAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25QcmVmaXggPSAiIjsKKyAg
ICAgICAgdGhpcy5fY29tcGxldGlvblRleHQgPSAiIjsKICAgICAgICAgdGhpcy5fY29udHJvbFNw
YWNlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXSS5LZXlib2FyZFNob3J0Y3V0KFdJLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgV0kuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU3BhY2Up
OwogICAgIH0KIApAQCAtNjEsOCArNjMsMTcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBj
bGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgZ2V0IGVkaXRpbmcoKSB7IHJldHVybiB0
aGlzLl9lZGl0aW5nOyB9CiAKLSAgICBnZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl9lbGVtZW50
LnRleHRDb250ZW50OyB9Ci0gICAgc2V0IHZhbHVlKHZhbHVlKSB7IHRoaXMuX2VsZW1lbnQudGV4
dENvbnRlbnQgPSB2YWx1ZTsgfQorICAgIGdldCB2YWx1ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fcGVuZGluZ1ZhbHVlID8/IHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7CisgICAg
fQorCisgICAgc2V0IHZhbHVlKHZhbHVlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWxlbWVudC50
ZXh0Q29udGVudCA9IHZhbHVlOworCisgICAgICAgIHRoaXMuX3BlbmRpbmdWYWx1ZSA9IG51bGw7
CisgICAgfQogCiAgICAgdmFsdWVXaXRob3V0U3VnZ2VzdGlvbigpCiAgICAgewpAQCAtOTQsOSAr
MTA1LDYgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRG
aWVsZAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc3VnZ2VzdGlvbkhpbnRFbGVtZW50LnJl
bW92ZSgpOwotCi0gICAgICAgIC8vIFJlbW92aW5nIHRoZSBzdWdnZXN0aW9uIGhpbnQgZWxlbWVu
dCBtYXkgbGVhdmUgdGhlIGNvbnRlbnRzIG9mIGBfZWxlbWVudGAgZnJhZ21lbnRlZCBpbnRvIG11
bHRpcGxlIHRleHQgbm9kZXMuCi0gICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hp
bGRyZW4oKTsKICAgICB9CiAKICAgICBzdGFydEVkaXRpbmcoKQpAQCAtMTMwLDYgKzEzOCw4IEBA
IFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAog
ICAgICAgICB0aGlzLl9lZGl0aW5nID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3ZhbHVlQmVmb3Jl
RWRpdGluZyA9ICIiOworICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSBudWxsOworICAgICAg
ICB0aGlzLl9jb21wbGV0aW9uVGV4dCA9ICIiOwogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoImVkaXRpbmciKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jb250ZW50RWRp
dGFibGUgPSBmYWxzZTsKIApAQCAtMTQzLDEwICsxNTMsMTYgQEAgV0kuU3ByZWFkc2hlZXRUZXh0
RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogCiAgICAgICAgIHRoaXMuX3N1Z2dl
c3Rpb25zVmlldy5oaWRlKCk7CiAKLSAgICAgICAgbGV0IGhhZFN1Z2dlc3Rpb25IaW50ID0gISF0
aGlzLnN1Z2dlc3Rpb25IaW50OworICAgICAgICBsZXQgaGFkQ29tcGxldGlvblRleHQgPSB0aGlz
Ll9jb21wbGV0aW9uVGV4dC5sZW5ndGggPiAwOworCisgICAgICAgIC8vIFJlc2V0dGluZyB0aGUg
c3VnZ2VzdGlvbiBoaW50IHJlbW92ZXMgYW55IHN1Z2dlc3Rpb24gaGludCBlbGVtZW50IHRoYXQg
aXMgYXR0YWNoZWQuCiAgICAgICAgIHRoaXMuc3VnZ2VzdGlvbkhpbnQgPSAiIjsKLSAgICAgICAg
aWYgKGhhZFN1Z2dlc3Rpb25IaW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9k
ZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKLSAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnNwcmVhZHNoZWV0VGV4dEZpZWxkRGlkQ2hhbmdlKHRo
aXMpOworICAgICAgICB0aGlzLl9jb21wbGV0aW9uVGV4dCA9ICIiOworCisgICAgICAgIGlmICho
YWRDb21wbGV0aW9uVGV4dCkgeworICAgICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdGhp
cy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7CisgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZT8u
c3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2U/Lih0aGlzKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGRldGFjaGVkKCkKQEAgLTE1NywyMiArMTczLDI2IEBAIFdJLlNwcmVhZHNoZWV0VGV4
dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgIC8vIENvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcgZGVsZWdhdGUKIAotICAgIGNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVj
dGVkQ29tcGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCA9ICIiKQorICAgIGNv
bXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIGNv
bXBsZXRpb25UZXh0ID0gIiIpCiAgICAgewotICAgICAgICB0aGlzLnN1Z2dlc3Rpb25IaW50ID0g
c2VsZWN0ZWRUZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKTsKKyAgICAg
ICAgdGhpcy5fY29tcGxldGlvblRleHQgPSBjb21wbGV0aW9uVGV4dDsKIAotICAgICAgICBpZiAo
dGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLl9yZUF0dGFjaFN1
Z2dlc3Rpb25IaW50KCk7CisgICAgICAgIGlmICh0aGlzLl9jb21wbGV0aW9uVGV4dC5zdGFydHNX
aXRoKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgpKQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9u
SGludCA9IHRoaXMuX2NvbXBsZXRpb25UZXh0LnNsaWNlKHRoaXMuX2NvbXBsZXRpb25QcmVmaXgu
bGVuZ3RoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9
ICIiOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4
dCgpOwogCiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdh
dGUuc3ByZWFkc2hlZXRUZXh0RmllbGREaWRDaGFuZ2UgPT09ICJmdW5jdGlvbiIpCiAgICAgICAg
ICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSh0aGlzKTsK
ICAgICB9CiAKLSAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlja2VkQ29tcGxldGlvbihzdWdn
ZXN0aW9uc1ZpZXcsIHNlbGVjdGVkVGV4dCkKKyAgICBjb21wbGV0aW9uU3VnZ2VzdGlvbnNDbGlj
a2VkQ29tcGxldGlvbihzdWdnZXN0aW9uc1ZpZXcsIGNvbXBsZXRpb25UZXh0KQogICAgIHsKLSAg
ICAgICAgdGhpcy5zdWdnZXN0aW9uSGludCA9IHNlbGVjdGVkVGV4dC5zbGljZSh0aGlzLl9jb21w
bGV0aW9uUHJlZml4Lmxlbmd0aCk7Ci0KLSAgICAgICAgdGhpcy5fYXBwbHlDb21wbGV0aW9uSGlu
dCh7bW92ZUNhcmV0VG9FbmRPZkNvbXBsZXRpb246IHRydWV9KTsKKyAgICAgICAgdGhpcy5fY29t
cGxldGlvblRleHQgPSBjb21wbGV0aW9uVGV4dDsKKyAgICAgICAgdGhpcy5fdXBkYXRlUGVuZGlu
Z1ZhbHVlV2l0aENvbXBsZXRpb25UZXh0KCk7CisgICAgICAgIHRoaXMuX2FwcGx5UGVuZGluZ1Zh
bHVlKHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogICAgICAgICB0aGlzLmRp
c2NhcmRDb21wbGV0aW9uKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVv
ZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0
aW9uIikKQEAgLTIxOSw3ICsyMzksNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNz
IFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50
ID09PSB0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMu
X2FwcGx5Q29tcGxldGlvbkhpbnQoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlQZW5kaW5nVmFsdWUo
KTsKICAgICAgICAgdGhpcy5kaXNjYXJkQ29tcGxldGlvbigpOwogCiAgICAgICAgIGxldCBjaGFu
Z2VkID0gdGhpcy5fdmFsdWVCZWZvcmVFZGl0aW5nICE9PSB0aGlzLnZhbHVlOwpAQCAtMjUyLDcg
KzI3Miw3IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0
RmllbGQKICAgICAgICAgbGV0IGlzVGFiS2V5ID0gZXZlbnQua2V5ID09PSAiVGFiIjsKICAgICAg
ICAgaWYgKGlzRW50ZXJLZXkgfHwgaXNUYWJLZXkpIHsKICAgICAgICAgICAgIGV2ZW50LnN0b3Ao
KTsKLSAgICAgICAgICAgIHRoaXMuX2FwcGx5Q29tcGxldGlvbkhpbnQoKTsKKyAgICAgICAgICAg
IHRoaXMuX2FwcGx5UGVuZGluZ1ZhbHVlKCk7CiAKICAgICAgICAgICAgIGxldCBkaXJlY3Rpb24g
PSAoaXNUYWJLZXkgJiYgZXZlbnQuc2hpZnRLZXkpID8gImJhY2t3YXJkIiA6ICJmb3J3YXJkIjsK
IApAQCAtMzM4LDEyICszNTgsMTIgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBT
cHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IAotICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dSaWdodCIgJiYgdGhpcy5zdWdnZXN0
aW9uSGludC5sZW5ndGgpIHsKKyAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gIkFycm93UmlnaHQi
ICYmIHRoaXMuX2NvbXBsZXRpb25UZXh0Lmxlbmd0aCkgewogICAgICAgICAgICAgbGV0IHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIAogICAgICAgICAgICAgaWYgKHNlbGVjdGlv
bi5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAgICAgIGV2ZW50LnN0b3AoKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9hcHBseUNvbXBsZXRpb25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxl
dGlvbjogdHJ1ZX0pOworICAgICAgICAgICAgICAgIHRoaXMuX2FwcGx5UGVuZGluZ1ZhbHVlKHtt
b3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbjogdHJ1ZX0pOwogCiAgICAgICAgICAgICAgICAgLy8g
V2hlbiBjb21wbGV0aW5nICJiYWNrZ3JvdW5kIiwgZG9uJ3QgaGlkZSB0aGUgY29tcGxldGlvbiBw
b3BvdmVyLgogICAgICAgICAgICAgICAgIC8vIENvbnRpbnVlIHNob3dpbmcgdGhlIHBvcG92ZXIg
d2l0aCBwcm9wZXJ0aWVzIHN1Y2ggYXMgImJhY2tncm91bmQtY29sb3IiIGFuZCAiYmFja2dyb3Vu
ZC1pbWFnZSIuCkBAIC0zNTgsMjEgKzM3OCwxNCBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9
IGNsYXNzIFNwcmVhZHNoZWV0VGV4dEZpZWxkCiAKICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0g
IkVzY2FwZSIgJiYgdGhpcy5fc3VnZ2VzdGlvbnNWaWV3LnZpc2libGUpIHsKICAgICAgICAgICAg
IGV2ZW50LnN0b3AoKTsKLQotICAgICAgICAgICAgbGV0IHdpbGxDaGFuZ2UgPSAhIXRoaXMuc3Vn
Z2VzdGlvbkhpbnQ7CiAgICAgICAgICAgICB0aGlzLmRpc2NhcmRDb21wbGV0aW9uKCk7CiAKLSAg
ICAgICAgICAgIGlmICh3aWxsQ2hhbmdlICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlz
Ll9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikK
LSAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENo
YW5nZSh0aGlzKTsKLQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoZXZlbnQua2V5ID09PSAiQXJyb3dMZWZ0IiAmJiAodGhpcy5zdWdnZXN0aW9uSGlu
dCB8fCB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkpIHsKKyAgICAgICAgaWYgKGV2ZW50
LmtleSA9PT0gIkFycm93TGVmdCIgJiYgKHRoaXMuX2NvbXBsZXRpb25UZXh0Lmxlbmd0aCB8fCB0
aGlzLl9zdWdnZXN0aW9uc1ZpZXcudmlzaWJsZSkpIHsKICAgICAgICAgICAgIHRoaXMuZGlzY2Fy
ZENvbXBsZXRpb24oKTsKIAotICAgICAgICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVv
ZiB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVsZERpZENoYW5nZSA9PT0gImZ1bmN0
aW9uIikKLSAgICAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5zcHJlYWRzaGVldFRleHRGaWVs
ZERpZENoYW5nZSh0aGlzKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAK
QEAgLTQwNSw2ICs0MTgsNyBAQCBXSS5TcHJlYWRzaGVldFRleHRGaWVsZCA9IGNsYXNzIFNwcmVh
ZHNoZWV0VGV4dEZpZWxkCiAgICAgICAgIGlmICghdGhpcy5fZWRpdGluZykKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWUgPSB0aGlzLnZhbHVlV2l0aG91
dFN1Z2dlc3Rpb24oKS50cmltKCk7CiAgICAgICAgIHRoaXMuX3ByZXZlbnREaXNjYXJkaW5nQ29t
cGxldGlvbnNPbktleVVwID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29tcGxldGlvbnMo
KTsKIApAQCAtNDE3LDggKzQzMSw5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3Mg
U3ByZWFkc2hlZXRUZXh0RmllbGQKICAgICAgICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlk
ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgbGV0IHVzZUZ1enp5TWF0Y2hpbmcg
PSBXSS5zZXR0aW5ncy5leHBlcmltZW50YWxDU1NDb21wbGV0aW9uRnV6enlNYXRjaGluZy52YWx1
ZTsKICAgICAgICAgbGV0IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24gPSB0aGlzLnZhbHVlV2l0aG91
dFN1Z2dlc3Rpb24oKTsKLSAgICAgICAgbGV0IHtjb21wbGV0aW9ucywgcHJlZml4fSA9IHRoaXMu
X2NvbXBsZXRpb25Qcm92aWRlcih2YWx1ZVdpdGhvdXRTdWdnZXN0aW9uLCB7YWxsb3dFbXB0eVBy
ZWZpeDogZm9yY2VDb21wbGV0aW9ucywgY2FyZXRQb3NpdGlvbjogdGhpcy5fZ2V0Q2FyZXRQb3Np
dGlvbigpfSk7CisgICAgICAgIGxldCB7Y29tcGxldGlvbnMsIHByZWZpeH0gPSB0aGlzLl9jb21w
bGV0aW9uUHJvdmlkZXIodmFsdWVXaXRob3V0U3VnZ2VzdGlvbiwge2FsbG93RW1wdHlQcmVmaXg6
IGZvcmNlQ29tcGxldGlvbnMsIGNhcmV0UG9zaXRpb246IHRoaXMuX2dldENhcmV0UG9zaXRpb24o
KSwgdXNlRnV6enlNYXRjaGluZ30pOwogICAgICAgICB0aGlzLl9jb21wbGV0aW9uUHJlZml4ID0g
cHJlZml4OwogCiAgICAgICAgIGlmICghY29tcGxldGlvbnMubGVuZ3RoKSB7CkBAIC00MjcsNyAr
NDQyLDcgQEAgV0kuU3ByZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRG
aWVsZAogICAgICAgICB9CiAKICAgICAgICAgLy8gTm8gbmVlZCB0byBzaG93IHRoZSBjb21wbGV0
aW9uIHBvcG92ZXIgd2l0aCBvbmx5IG9uZSBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgZW50ZXJlZCB2
YWx1ZS4KLSAgICAgICAgaWYgKGNvbXBsZXRpb25zLmxlbmd0aCA9PT0gMSAmJiBjb21wbGV0aW9u
c1swXSA9PT0gdmFsdWVXaXRob3V0U3VnZ2VzdGlvbikgeworICAgICAgICBpZiAoY29tcGxldGlv
bnMubGVuZ3RoID09PSAxICYmIHRoaXMuX3N1Z2dlc3Rpb25zVmlldy5nZXRDb21wbGV0aW9uVGV4
dChjb21wbGV0aW9uc1swXSkgPT09IHZhbHVlV2l0aG91dFN1Z2dlc3Rpb24pIHsKICAgICAgICAg
ICAgIHRoaXMuZGlzY2FyZENvbXBsZXRpb24oKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQpAQCAtNDQwLDggKzQ1NSw5IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3Mg
U3ByZWFkc2hlZXRUZXh0RmllbGQKIAogICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcudXBk
YXRlKGNvbXBsZXRpb25zKTsKIAotICAgICAgICBpZiAoY29tcGxldGlvbnMubGVuZ3RoID09PSAx
KSB7Ci0gICAgICAgICAgICAvLyBObyBuZWVkIHRvIHNob3cgdGhlIGNvbXBsZXRpb24gcG9wb3Zl
ciB0aGF0IG1hdGNoZXMgdGhlIHN1Z2dlc3Rpb24gaGludC4KKyAgICAgICAgaWYgKGNvbXBsZXRp
b25zLmxlbmd0aCA9PT0gMSAmJiB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuZ2V0Q29tcGxldGlvblRl
eHQoY29tcGxldGlvbnNbMF0pLnN0YXJ0c1dpdGgodGhpcy5fY29tcGxldGlvblByZWZpeCkpIHsK
KyAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2hvdyB0aGUgY29tcGxldGlvbiBwb3BvdmVyIHdp
dGggb25seSBvbmUgaXRlbSB0aGF0IGJlZ2lucyB3aXRoIHRoZSBjb21wbGV0aW9uIHByZWZpeC4K
KyAgICAgICAgICAgIC8vIFdoZW4gdXNpbmcgZnV6enkgbWF0Y2hpbmcsIHRoZSBjb21wbGV0aW9u
IHByZWZpeCBtYXkgbm90IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN1Z2dlc3Rpb24u
CiAgICAgICAgICAgICB0aGlzLl9zdWdnZXN0aW9uc1ZpZXcuaGlkZSgpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHRoaXMuX3Nob3dTdWdnZXN0aW9uc1ZpZXcoKTsKQEAgLTUzMCwyMiAr
NTQ2LDE2IEBAIFdJLlNwcmVhZHNoZWV0VGV4dEZpZWxkID0gY2xhc3MgU3ByZWFkc2hlZXRUZXh0
RmllbGQKICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0KIAotICAgIF9hcHBseUNvbXBsZXRp
b25IaW50KHttb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbn0gPSB7fSkKKyAgICBfYXBwbHlQZW5k
aW5nVmFsdWUoe21vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9ufSA9IHt9KQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9jb21wbGV0aW9uUHJvdmlkZXIgfHwgIXRoaXMuc3VnZ2VzdGlvbkhpbnQp
CisgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1ZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIHRoaXMuX2NvbWJpbmVFZGl0b3JFbGVtZW50Q2hpbGRyZW4oe25ld0NhcmV0UG9z
aXRpb246IG1vdmVDYXJldFRvRW5kT2ZDb21wbGV0aW9uID8gdGhpcy5fZ2V0Q2FyZXRQb3NpdGlv
bigpICsgdGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGggOiBudWxsfSk7Ci0gICAgfQorICAgICAg
ICBsZXQgY2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKKyAgICAgICAg
bGV0IG5ld0NhcmV0UG9zaXRpb24gPSBtb3ZlQ2FyZXRUb0VuZE9mQ29tcGxldGlvbiA/IGNhcmV0
UG9zaXRpb24gLSB0aGlzLl9jb21wbGV0aW9uUHJlZml4Lmxlbmd0aCArIHRoaXMuX2NvbXBsZXRp
b25UZXh0Lmxlbmd0aCA6IGNhcmV0UG9zaXRpb247CiAKLSAgICBfY29tYmluZUVkaXRvckVsZW1l
bnRDaGlsZHJlbih7bmV3Q2FyZXRQb3NpdGlvbn0gPSB7fSkKLSAgICB7Ci0gICAgICAgIG5ld0Nh
cmV0UG9zaXRpb24gPz89IHRoaXMuX2dldENhcmV0UG9zaXRpb24oKTsKLQotICAgICAgICAvLyBT
ZXR0aW5nIHRoZSB0ZXh0Q29udGVudCBvZiB0aGUgZWxlbWVudCB0byBpdHMgY3VycmVudCB0ZXh0
Q29udGVudCB3aWxsIHRha2UgdGhlIHRleHQgZnJvbSB0aGUgbXVsdGlwbGUKLSAgICAgICAgLy8g
cG90ZW50aWFsIGNoaWxkIG5vZGVzIChwb3RlbnRpYWxseSBhIHN1Z2dlc3Rpb24gaGludCBub2Rl
IGFuZCBzb21lIG51bWJlciBvZiBleGlzdGluZyB0ZXh0IG5vZGVzKSBhbmQgdHVybgotICAgICAg
ICAvLyB0aGVtIGludG8gYSBzaW5nbGUgdGV4dCBub2RlIHdpdGhpbiB0aGUgZWxlbWVudC4KLSAg
ICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX2VsZW1lbnQudGV4dENvbnRl
bnQ7CisgICAgICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIGNvbGxhcHNlcyB0aGUgdGV4dCBzZWxl
Y3Rpb24uIEdldCB0aGUgY2FyZXQgcG9zaXRpb24gYmVmb3JlIGRvaW5nIHRoaXMuCisgICAgICAg
IHRoaXMudmFsdWUgPSB0aGlzLl9wZW5kaW5nVmFsdWU7CiAKICAgICAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnQudGV4dENvbnRlbnQubGVuZ3RoKSB7CiAgICAgICAgICAgICBsZXQgdGV4dENoaWxkTm9k
ZSA9IHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZDsKQEAgLTU1Myw2ICs1NjMsMTQgQEAgV0kuU3By
ZWFkc2hlZXRUZXh0RmllbGQgPSBjbGFzcyBTcHJlYWRzaGVldFRleHRGaWVsZAogICAgICAgICB9
CiAgICAgfQogCisgICAgX3VwZGF0ZVBlbmRpbmdWYWx1ZVdpdGhDb21wbGV0aW9uVGV4dCgpCisg
ICAgeworICAgICAgICBsZXQgY2FyZXRQb3NpdGlvbiA9IHRoaXMuX2dldENhcmV0UG9zaXRpb24o
KTsKKyAgICAgICAgbGV0IHZhbHVlID0gdGhpcy52YWx1ZVdpdGhvdXRTdWdnZXN0aW9uKCk7CisK
KyAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlID0gdmFsdWUuc2xpY2UoMCwgY2FyZXRQb3NpdGlv
biAtIHRoaXMuX2NvbXBsZXRpb25QcmVmaXgubGVuZ3RoKSArIHRoaXMuX2NvbXBsZXRpb25UZXh0
ICsgdmFsdWUuc2xpY2UoY2FyZXRQb3NpdGlvbiArIDEsIHZhbHVlLmxlbmd0aCk7CisgICAgfQor
CiAgICAgX3JlQXR0YWNoU3VnZ2VzdGlvbkhpbnQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5zdWdnZXN0aW9uSGludC5sZW5ndGgsICJTdWdnZXN0aW9uIGhpbnQgc2hvdWxk
IG5vdCBiZSBlbXB0eSB3aGVuIGF0dGFjaGluZyB0aGUgc3VnZ2VzdGlvbiBoaW50IGVsZW1lbnQu
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggNjIxMGY1YTMzMTY3MzQ0NGNlMTM1MjNhYmMyMDMyMDNjMmNiNTQ5Zi4uNzI1
OGNlZGNhNzFlODE3MTIwNzhiMTY5N2MyMDg3YTMzOWZiMWYwMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4
IEBACisyMDIxLTEyLTA3ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGZ1enp5IG1hdGNoaW5nIGluIENTUyBjb21w
bGV0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMwMzUxCisgICAgICAgIDxyZGFyOi8vODI5NzYyOTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGBXSS5DU1NRdWVyeUNvbnRy
b2xsZXJgIHRvIGNoZWNrIGZ1enp5IG1hdGNoaW5nIGxvZ2ljIGZvciBDU1MgY29tcGxldGlvbnMu
CisgICAgICAgIEZvbGxvd3MgcHJpb3IgZXhhbXBsZSBmcm9tIGBMYXlvdXRUZXN0cy9pbnNwZWN0
b3IvdW5pdC10ZXN0cy9yZXNvdXJjZS1xdWVyeS1jb250cm9sbGVyLmh0bWxgCisgICAgICAgIHNp
bmNlIGBXSS5SZXNvdWNlUXVlcnlDb250cm9sbGVyYCBzZXJ2ZWQgYXMgdGhlIG1vZGVsIGNsYXNz
IHRoYXQgd2FzIGFkYXB0ZWQgZm9yIENTUy4KKworICAgICAgICAqIGluc3BlY3Rvci91bml0LXRl
c3RzL2Nzcy1xdWVyeS1jb250cm9sbGVyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLXF1ZXJ5LWNvbnRyb2xsZXIuaHRtbDogQWRkZWQuCisK
IDIwMjEtMTItMDMgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1mbGV4Ym94XSBBY2NvdW50IGZvciBjYXB0aW9ucyB3aGVuIGZsZXhpbmcg
dGFibGVzIHdpdGggc3BlY2lmaWVkIHNpemVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy1l
eHBlY3RlZC50eHQKaW5kZXggMTRjZDZlYzM4M2E0ZWRiMjcxYzcwY2RjYTg2YzY4ZjNmNWQxZjVm
Mi4uMjBlNmRlNzVkNDYyNTRkYzM4MmI0Y2I5NjE4OTdmMDAyOTYwZjgzYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLWtleXdvcmQtY29tcGxldGlvbnMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1r
ZXl3b3JkLWNvbXBsZXRpb25zLWV4cGVjdGVkLnR4dApAQCAtNzEsMyArNzEsMTIgQEAgUEFTUzog
QWxsIGV4cGVjdGVkIGNvbXBsZXRpb25zIHdlcmUgcHJlc2VudC4KIFBBU1M6IEV4cGVjdGVkIHJl
c3VsdCBwcmVmaXggdG8gYmUgIiIKIFBBU1M6IEFsbCBleHBlY3RlZCBjb21wbGV0aW9ucyB3ZXJl
IHByZXNlbnQuCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUuTm9XaGl0ZXNwYWNlQWZ0ZXJGdW5jdGlvbgorUEFT
UzogRXhwZWN0ZWQgcmVzdWx0IHByZWZpeCB0byBiZSAiIgorUEFTUzogRXhwZWN0ZWQgZXhhY3Rs
eSAwIGNvbXBsZXRpb24gcmVzdWx0cy4KK1BBU1M6IEFsbCBleHBlY3RlZCBjb21wbGV0aW9ucyB3
ZXJlIHByZXNlbnQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBXSS5DU1NLZXl3b3JkQ29tcGxl
dGlvbnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUuV2hpdGVzcGFjZUFmdGVyRnVuY3Rpb24KK1BB
U1M6IEV4cGVjdGVkIHJlc3VsdCBwcmVmaXggdG8gYmUgImEiCitQQVNTOiBBbGwgZXhwZWN0ZWQg
Y29tcGxldGlvbnMgd2VyZSBwcmVzZW50LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLWtleXdvcmQtY29tcGxldGlvbnMuaHRtbAppbmRl
eCBjMWIyZWNjZTE4MWNkMzRlNTFjZGY0ZDUyMDg5MDE5ZTRiZTk4NWIzLi4zYTg4Y2FiOTAzMmIx
OWY3OWY2ZTQyODJmNDQxN2YzYjc5OTkyNjhmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdW5pdC10ZXN0cy9jc3Mta2V5d29yZC1jb21wbGV0aW9ucy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL2Nzcy1rZXl3b3JkLWNvbXBsZXRpb25zLmh0bWwK
QEAgLTY2LDcgKzY2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGV4cGVjdGVkQ29tcGxl
dGlvbnM6IFsicmFuZ2UiXSwKICAgICB9KTsKIAotICAgIGZ1bmN0aW9uIGFkZFRlc3RGb3JQYXJ0
aWFsUHJvcGVydHlWYWx1ZSh7bmFtZSwgZGVzY3JpcHRpb24sIHByb3BlcnR5TmFtZSwgdGV4dCwg
Y2FyZXRQb3NpdGlvbiwgZXhwZWN0ZWRQcmVmaXgsIGV4cGVjdGVkQ29tcGxldGlvbnMsIGFkZGl0
aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlcn0pIHsKKyAgICBmdW5jdGlvbiBh
ZGRUZXN0Rm9yUGFydGlhbFByb3BlcnR5VmFsdWUoe25hbWUsIGRlc2NyaXB0aW9uLCBwcm9wZXJ0
eU5hbWUsIHRleHQsIGNhcmV0UG9zaXRpb24sIGV4cGVjdGVkUHJlZml4LCBleHBlY3RlZENvbXBs
ZXRpb25zLCBleHBlY3RlZENvbXBsZXRpb25Db3VudCwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVD
b21wbGV0aW9uc1Byb3ZpZGVyfSkgewogICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAg
ICAgICAgICBuYW1lLAogICAgICAgICAgICAgZGVzY3JpcHRpb24sCkBAIC03NCwxMSArNzQsMTUg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgY2FyZXRQb3NpdGlvbiA/Pz0gdGV4
dC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRQcmVmaXggPz89IHRleHQ7CiAgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRDb21wbGV0aW9ucyA/Pz0gW107CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRDb21wbGV0aW9uQ291bnQgPz89IC0xOwogICAgICAgICAgICAgICAgIGFkZGl0aW9u
YWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlciA/Pz0gKCkgPT4ge307CiAKICAgICAg
ICAgICAgICAgICBsZXQgY29tcGxldGlvblJlc3VsdHMgPSBXSS5DU1NLZXl3b3JkQ29tcGxldGlv
bnMuZm9yUGFydGlhbFByb3BlcnR5VmFsdWUodGV4dCwgcHJvcGVydHlOYW1lLCB7Y2FyZXRQb3Np
dGlvbiwgYWRkaXRpb25hbEZ1bmN0aW9uVmFsdWVDb21wbGV0aW9uc1Byb3ZpZGVyfSk7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb21wbGV0aW9uUmVzdWx0cy5w
cmVmaXgsIGV4cGVjdGVkUHJlZml4LCBgRXhwZWN0ZWQgcmVzdWx0IHByZWZpeCB0byBiZSAiJHtl
eHBlY3RlZFByZWZpeH0iYCk7CiAKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRDb21wbGV0
aW9uQ291bnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChjb21wbGV0aW9uUmVzdWx0cy5jb21wbGV0aW9ucy5sZW5ndGgsIGV4cGVjdGVkQ29tcGxl
dGlvbkNvdW50LCBgRXhwZWN0ZWQgZXhhY3RseSAke2V4cGVjdGVkQ29tcGxldGlvbkNvdW50fSBj
b21wbGV0aW9uIHJlc3VsdHMuYCk7CisKICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIGV4cGVj
dGVkIGNvbXBsZXRpb25zIGNvdWxkIGJlIGFkZGVkIGF0IGFueSB0aW1lLCBqdXN0IG1ha2Ugc3Vy
ZSB0aGUgbGlzdCBjb250YWlucyBvdXIgZXhwZWN0ZWQgY29tcGxldGlvbnMsIGluc3RlYWQgb2Yg
ZW5mb3JjaW5nIGFuIGV4YWN0IG1hdGNoIGJldHdlZW4gZXhwZWN0YXRpb25zIGFuZCByZWFsaXR5
LgogICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZENvbXBsZXRpb25zUHJlc2VudCA9IGV4cGVj
dGVkQ29tcGxldGlvbnMuZXZlcnkoKGV4cGVjdGVkQ29tcGxldGlvbikgPT4gewogICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNvbXBsZXRpb25SZXN1bHRzLmNvbXBsZXRpb25zLmluY2x1ZGVzKGV4
cGVjdGVkQ29tcGxldGlvbikpIHsKQEAgLTIyOSw2ICsyMzMsMjggQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIGFkZGl0aW9uYWxGdW5jdGlvblZhbHVlQ29tcGxldGlvbnNQcm92aWRlcjogKCkg
PT4gWyItLW9uZSIsICItLXR3byJdLAogICAgIH0pOwogCisgICAgLy8gYGhzbCgpYXxgCisgICAg
YWRkVGVzdEZvclBhcnRpYWxQcm9wZXJ0eVZhbHVlKHsKKyAgICAgICAgbmFtZTogIldJLkNTU0tl
eXdvcmRDb21wbGV0aW9ucy5mb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZS5Ob1doaXRlc3BhY2VBZnRl
ckZ1bmN0aW9uIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgY29sb3IgY29tcGxl
dGlvbnMgYXJlIG5vdCBvZmZlcmVkIGltbWVkaWF0ZWx5IGFmdGVyIGEgY2xvc2luZyBwYXJlbnRo
ZXNpcyIsCisgICAgICAgIHByb3BlcnR5TmFtZTogImJhY2tncm91bmQiLAorICAgICAgICB0ZXh0
OiAiaHNsKClhIiwKKyAgICAgICAgY2FyZXRQb3NpdGlvbjogNiwKKyAgICAgICAgZXhwZWN0ZWRQ
cmVmaXg6ICIiLAorICAgICAgICBleHBlY3RlZENvbXBsZXRpb25Db3VudDogMAorICAgIH0pOwor
CisgICAgLy8gYGhzbCgpIGF8YAorICAgIGFkZFRlc3RGb3JQYXJ0aWFsUHJvcGVydHlWYWx1ZSh7
CisgICAgICAgIG5hbWU6ICJXSS5DU1NLZXl3b3JkQ29tcGxldGlvbnMuZm9yUGFydGlhbFByb3Bl
cnR5VmFsdWUuV2hpdGVzcGFjZUFmdGVyRnVuY3Rpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjog
IlRlc3QgdGhhdCBjb2xvciBjb21wbGV0aW9ucyBhcmUgb2ZmZXJlZCB3aGVuIGEgY2xvc2luZyBw
YXJlbnRoZXNpcyBpcyBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlIiwKKyAgICAgICAgcHJvcGVydHlO
YW1lOiAiYmFja2dyb3VuZCIsCisgICAgICAgIHRleHQ6ICJoc2woKSBhIiwKKyAgICAgICAgY2Fy
ZXRQb3NpdGlvbjogNywKKyAgICAgICAgZXhwZWN0ZWRQcmVmaXg6ICJhIiwKKyAgICAgICAgZXhw
ZWN0ZWRDb21wbGV0aW9uczogWyJhbGljZWJsdWUiLCAiYW50aXF1ZXdoaXRlIl0sCisgICAgfSk7
CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLXF1ZXJ5LWNvbnRy
b2xsZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3Nz
LXF1ZXJ5LWNvbnRyb2xsZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZlMDVlY2Y2NGUxZWNh
ZTZmZGM2MDlhN2Q1NDU1ZmI0NmI2YjdhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnktY29udHJvbGxlci1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw1NCBAQAorVGVzdGluZyBXSS5DU1NRdWVyeUNvbnRyb2xsZXIKKworCis9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IENTU1F1ZXJ5Q29udHJvbGxlcgorLS0gUnVubmluZyB0ZXN0IGNh
c2U6IEZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlcworUEFTUzogUmVzdWx0IGZvciBtYXJnaW4g
c2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNwZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3Ig
TUFSR0lOIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1
bHQgZm9yIG1hcmdpbi1yaWdodCBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2Vz
LgorUEFTUzogUmVzdWx0IGZvciAtd2Via2l0LW1hc2sgc2hvdWxkIG1hdGNoIGV4cGVjdGVkIHNw
ZWNpYWwgaW5kaWNlcy4KK1BBU1M6IFJlc3VsdCBmb3IgLS12YXIta2ViYWItY2FzZSBzaG91bGQg
bWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFTUzogUmVzdWx0IGZvciAtLXZhckNh
bWVsQ2FzZSBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFTUzogUmVz
dWx0IGZvciAtLXZhcmxvd2VyY2FzZSBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRp
Y2VzLgorUEFTUzogUmVzdWx0IGZvciAtLVZBUlVQUEVSQ0FTRSBzaG91bGQgbWF0Y2ggZXhwZWN0
ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFTUzogUmVzdWx0IGZvciAtLXZhcl9zbmFrZV9jYXNlIHNo
b3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBSZXN1bHQgZm9yIHZh
cigtLW5hbWUpIHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCitQQVNTOiBS
ZXN1bHQgZm9yIHJnYigwLCAwLCAwKSBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBpbmRp
Y2VzLgorUEFTUzogUmVzdWx0IGZvciByZ2IoMCAwIDAgLyAxMDAlKSBzaG91bGQgbWF0Y2ggZXhw
ZWN0ZWQgc3BlY2lhbCBpbmRpY2VzLgorUEFTUzogUmVzdWx0IGZvciByZ2IoMCAwIDAgLyAwLjEp
IHNob3VsZCBtYXRjaCBleHBlY3RlZCBzcGVjaWFsIGluZGljZXMuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBFeGVjdXRlUXVlcnlBZ2FpbnN0Tm9WYWx1ZXMKK1BBU1M6IFNob3VsZCByZXR1cm4g
bm8gcmVzdWx0cy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVXaGl0ZXNwYWNlUXVl
cnlPckVtcHR5UXVlcnkKK1BBU1M6IFdoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyBy
ZXN1bHRzLgorUEFTUzogV2hpdGVzcGFjZSBxdWVyeSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMu
CitQQVNTOiBXaGl0ZXNwYWNlIHF1ZXJ5IHNob3VsZCByZXR1cm4gbm8gcmVzdWx0cy4KK1BBU1M6
IFdoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLgorUEFTUzogRW1wdHkg
cXVlcnkgc2hvdWxkIHJldHVybiBubyByZXN1bHRzLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RXhlY3V0ZVF1ZXJ5TWF0Y2hOb25lCitQQVNTOiBRdWVyeSAiYWJjZGUiIHNob3VsZG4ndCBtYXRj
aCAiYWJjZCIuCitQQVNTOiBRdWVyeSAiYWJjZC0iIHNob3VsZG4ndCBtYXRjaCAiYWJjZGUiLgor
UEFTUzogUXVlcnkgImFiY2RlIiBzaG91bGRuJ3QgbWF0Y2ggImFiY2VkIi4KKworLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeU1hdGNoZXNFeHBlY3RlZENoYXJhY3RlcnMKK1BBU1M6
IFF1ZXJ5ICJhYmNkIiBzaG91bGQgbWF0Y2ggImFiY2QiIGluICJhYmNkZSIuCitQQVNTOiBRdWVy
eSAiYS1iY2RlIiBzaG91bGQgbWF0Y2ggImEgICAgLSBiY2RlIiBpbiAiYWJjZGUtYWJjZGUiLgor
UEFTUzogUXVlcnkgImFiY2RlIiBzaG91bGQgbWF0Y2ggIkEgQiBDIEQgRSIgaW4gIkFhQmJDY0Rk
RWUiLgorUEFTUzogUXVlcnkgImFiY2RlIiBzaG91bGQgbWF0Y2ggIkEgICBCICBDIERlIiBpbiAi
QWJjZEJjZENkRGUiLgorUEFTUzogUXVlcnkgImFiY2RleCIgc2hvdWxkIG1hdGNoICJBIEIgQyBk
IGV4IiBpbiAiQXhCeEN4ZHhleER4eXhFRiIuCitQQVNTOiBRdWVyeSAiYmMiIHNob3VsZCBtYXRj
aCAiIGJDIiBpbiAiYWJDZCIuCitQQVNTOiBRdWVyeSAiYmIiIHNob3VsZCBtYXRjaCAiIGJCIiBp
biAiYWJCYyIuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBFeGVjdXRlUXVlcnlHZW5lcmFsUmFu
a2luZ3MKK1BBU1M6IFJlc3VsdHMgc2hvdWxkIGJlIHJhbmtlZCBieSBkZXNjZW5kaW5nIHJlbGV2
YW5jeS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEV4ZWN1dGVRdWVyeVBvc2l0aW9uUmFua2lu
Z3MKK1BBU1M6IFJlc3VsdHMgc2hvdWxkIGJlIHJhbmtlZCBieSBkZXNjZW5kaW5nIHJlbGV2YW5j
eS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEdldE1hdGNoaW5nVGV4dFJhbmdlcworUEFTUzog
UmVzdWx0IFRleHRSYW5nZXMgc2hvdWxkIG1hdGNoIHRoZSBleHBlY3RlZCByYW5nZXMuCitQQVNT
OiBSZXN1bHQgVGV4dFJhbmdlcyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVkIHJhbmdlcy4KK1BB
U1M6IFJlc3VsdCBUZXh0UmFuZ2VzIHNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcmFuZ2VzLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0cy9jc3MtcXVlcnkt
Y29udHJvbGxlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvY3NzLXF1
ZXJ5LWNvbnRyb2xsZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDM1ZTVhMjZmYzM1NGUxMDJlOWY1MGJi
NmY2MTZhODgxOGFjNDAyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3VuaXQtdGVzdHMvY3NzLXF1ZXJ5LWNvbnRyb2xsZXIuaHRtbApAQCAtMCwwICsxLDI2MyBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVTeW5jU3VpdGUoIkNTU1F1ZXJ5Q29udHJvbGxlciIpOworCisgICAgc3VpdGUuYWRk
VGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJTaG91bGQgY29ycmVjdGx5IGZpbmQgc3BlY2lhbCBjaGFy
YWN0ZXJzLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgbWF0Y2hlciA9IG5l
dyBXSS5DU1NRdWVyeUNvbnRyb2xsZXI7CisgICAgICAgICAgICBsZXQgdGVzdHMgPSBbCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBwYWR2YWx1ZTogIm1hcmdpbiIsCisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAiTUFSR0lOIiwK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJeIiwKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICJtYXJnaW4t
cmlnaHQiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl4gICAgIF5eIiwKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFk
dmFsdWU6ICItd2Via2l0LW1hc2siLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl5e
ICAgICBeXiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHBhZHZhbHVlOiAiLS12YXIta2ViYWItY2FzZSIsCisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkOiAiXl5eICBeXiAgICBeXiIsCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAiLS12YXJDYW1l
bENhc2UiLAorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogIl5eXiAgXiAgICBeIiwKKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cGFkdmFsdWU6ICItLXZhcmxvd2VyY2FzZSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVk
OiAiXl5eIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcGFkdmFsdWU6ICItLVZBUlVQUEVSQ0FTRSIsCisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOiAiXl5eIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6ICItLXZhcl9zbmFrZV9jYXNlIiwKKyAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJeXl4gIF5eICAgIF5eIiwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcGFkdmFsdWU6
ICJ2YXIoLS1uYW1lKSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiAgIF5eXiIs
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHBhZHZhbHVlOiAicmdiKDAsIDAsIDApIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWQ6ICJeIiwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcGFkdmFsdWU6ICJyZ2IoMCAwIDAgLyAxMDAlKSIsCisgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkOiAiXiIsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIHBhZHZhbHVlOiAicmdiKDAgMCAwIC8gMC4xKSIsCisg
ICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiXiIsCisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgXTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlU3BlY2lhbE1hc2socGFk
dmFsdWUsIHNwZWNpYWxJbmRpY2VzKSB7CisgICAgICAgICAgICAgICAgbGV0IG1hc2sgPSAiICIu
cmVwZWF0KHBhZHZhbHVlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgc3BlY2lhbEluZGljZXMu
Zm9yRWFjaCgoaW5kZXgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1hc2suc3Vi
c3RyKDAsIGluZGV4KSArICJeIiArIG1hc2suc3Vic3RyKGluZGV4ICsgMSk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hc2sudHJpbSgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBmb3IgKGxldCB7cGFkdmFsdWUsIGV4cGVjdGVkfSBvZiB0ZXN0
cykgeworICAgICAgICAgICAgICAgIGxldCBhY3R1YWwgPSBjcmVhdGVTcGVjaWFsTWFzayhwYWR2
YWx1ZSwgbWF0Y2hlci5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKHBhZHZhbHVlKSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVk
LCBgUmVzdWx0IGZvciAke3BhZHZhbHVlfSBzaG91bGQgbWF0Y2ggZXhwZWN0ZWQgc3BlY2lhbCBp
bmRpY2VzLmApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0
ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJFeGVjdXRlUXVlcnlBZ2FpbnN0Tm9WYWx1
ZXMiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlNob3VsZCByZXR1cm4gbm8gcmVzdWx0cyBpZiBu
byB2YWx1ZXMgd2VyZSBhZGRlZCB0byB0aGUgY29udHJvbGxlci4iLAorICAgICAgICB0ZXN0KCkg
eworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyOwor
ICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeSgiYWJjZGUiKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghcmVzdWx0cy5sZW5ndGgsICJT
aG91bGQgcmV0dXJuIG5vIHJlc3VsdHMuIikKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRXhlY3V0ZVdoaXRlc3BhY2VRdWVyeU9y
RW1wdHlRdWVyeSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiRW1wdHkgcXVlcmllcyBhbmQgcXVl
cmllcyBjb250YWluaW5nIG9ubHkgd2hpdGVzcGFjZSBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMu
IiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAgICAgICAgIGNvbnN0IHdoaXRlc3BhY2VDaGFyYWN0
ZXJzID0gIiBcdFxyXG4iOworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVl
cnlDb250cm9sbGVyKFsiYWJjZGUiXSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IHF1ZXJ5IG9m
IHdoaXRlc3BhY2VDaGFyYWN0ZXJzKSB7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBt
YXRjaGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RUaGF0KCFyZXN1bHRzLmxlbmd0aCwgIldoaXRlc3BhY2UgcXVlcnkgc2hvdWxkIHJl
dHVybiBubyByZXN1bHRzLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcmVz
dWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5KCIiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0VGhhdCghcmVzdWx0cy5sZW5ndGgsICJFbXB0eSBxdWVyeSBzaG91bGQgcmV0dXJu
IG5vIHJlc3VsdHMuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIkV4ZWN1dGVRdWVyeU1hdGNoTm9uZSIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiU2hvdWxkIG5vdCBmaW5kIGEgbWF0Y2guIiwKKyAgICAgICAgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcjsKKyAg
ICAgICAgICAgIGxldCB0ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICB7cXVlcnk6ICJhYmNkZSIs
IHZhbHVlOiAiYWJjZCJ9LAorICAgICAgICAgICAgICAgIHtxdWVyeTogImFiY2QtIiwgdmFsdWU6
ICJhYmNkZSJ9LAorICAgICAgICAgICAgICAgIHtxdWVyeTogImFiY2RlIiwgdmFsdWU6ICJhYmNl
ZCJ9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgZm9yIChsZXQge3F1ZXJ5LCB2YWx1
ZX0gb2YgdGVzdHMpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLnJlc2V0KCk7CisgICAgICAg
ICAgICAgICAgbWF0Y2hlci5hZGRWYWx1ZXMoW3ZhbHVlXSk7CisgICAgICAgICAgICAgICAgbGV0
IHJlc3VsdHMgPSBtYXRjaGVyLmV4ZWN1dGVRdWVyeShxdWVyeSk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFyZXN1bHRzLmxlbmd0aCwgYFF1ZXJ5ICIke3F1ZXJ5
fSIgc2hvdWxkbid0IG1hdGNoICIke3ZhbHVlfSIuYCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkV4
ZWN1dGVRdWVyeU1hdGNoZXNFeHBlY3RlZENoYXJhY3RlcnMiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIlNob3VsZCBtYXRjaCB0aGUgZXhwZWN0ZWQgcXVlcnkgY2hhcmFjdGVycy4iLAorICAgICAg
ICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250
cm9sbGVyOworICAgICAgICAgICAgbGV0IHRlc3RzID0gWworICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgcXVlcnk6ICJhYmNkIiwKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWU6ICJhYmNkZSIsCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkOiAiYWJjZCIKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVl
cnk6ICJhLWJjZGUiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogImFiY2RlLWFiY2RlIiwK
KyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICJhICAgIC0gYmNkZSIKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcXVlcnk6ICJh
YmNkZSIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlOiAiQWFCYkNjRGRFZSIsCisgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkOiAiQSBCIEMgRCBFIgorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeTogImFiY2RlIiwKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWU6ICJBYmNkQmNkQ2REZSIsCisgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkOiAiQSAgIEIgIEMgRGUiCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiAiYWJjZGV4IiwKKyAgICAgICAg
ICAgICAgICAgICAgdmFsdWU6ICJBeEJ4Q3hkeGV4RHh5eEVGIiwKKyAgICAgICAgICAgICAgICAg
ICAgZXhwZWN0ZWQ6ICJBIEIgQyBkIGV4IgorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBxdWVyeTogImJjIiwKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWU6ICJhYkNkIiwKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6ICIgYkMi
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIHF1ZXJ5OiAiYmIiLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZTogImFiQmMiLAorICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZDogIiBiQiIKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICBdOworCisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVNYXRjaGVzTWFzayhxdWVy
eVJlc3VsdCkgeworICAgICAgICAgICAgICAgIGxldCB2YWx1ZSA9IHF1ZXJ5UmVzdWx0LnZhbHVl
OworICAgICAgICAgICAgICAgIGxldCBsYXN0SW5kZXggPSAtMTsKKyAgICAgICAgICAgICAgICBs
ZXQgcmVzdWx0ID0gIiI7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiBxdWVy
eVJlc3VsdC5tYXRjaGVzKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCBnYXAgPSAiICIucmVw
ZWF0KG1hdGNoLmluZGV4IC0gbGFzdEluZGV4IC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCArPSBnYXA7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSB2YWx1ZVttYXRjaC5p
bmRleF07CisgICAgICAgICAgICAgICAgICAgIGxhc3RJbmRleCA9IG1hdGNoLmluZGV4OworICAg
ICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZvciAobGV0IHtxdWVyeSwgdmFsdWUsIGV4cGVjdGVkfSBv
ZiB0ZXN0cykgeworICAgICAgICAgICAgICAgIG1hdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAg
ICAgICBtYXRjaGVyLmFkZFZhbHVlcyhbdmFsdWVdKTsKKworICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVlcnkpOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KHJlc3VsdHMubGVuZ3RoID09PSAxLCAiU2hvdWxkIHJldHVybiBl
eGFjdGx5IG9uZSBtYXRjaC4iKTsKKyAgICAgICAgICAgICAgICBsZXQgYWN0dWFsID0gcmVzdWx0
cy5sZW5ndGggPyBjcmVhdGVNYXRjaGVzTWFzayhyZXN1bHRzWzBdKSA6IG51bGw7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBgUXVl
cnkgIiR7cXVlcnl9IiBzaG91bGQgbWF0Y2ggIiR7ZXhwZWN0ZWR9IiBpbiAiJHt2YWx1ZX0iLmAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJFeGVjdXRlUXVlcnlHZW5lcmFsUmFua2luZ3MiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgcXVlcnkgcmVzdWx0cyBhcmUgcmFua2VkIGJ5
IGRlc2NlbmRpbmcgcmVsZXZhbmNlLiIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAgICAgICAv
LyBWYWx1ZXMgaW4gb3JkZXIgb2YgZGVzY2VuZGluZyByYW5rLgorICAgICAgICAgICAgbGV0IHZh
bHVlcyA9IFsiQWJDZEUiLCAiQWJjRGUiLCAiYWJjZGUiLCAiQXhiY0RlIiwgIkF4QnhDeER4RXgi
LCAiQXhieGNEZSIsICJ4YWJjZGUiXTsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0gbmV3IFdJ
LkNTU1F1ZXJ5Q29udHJvbGxlcih2YWx1ZXMpOworICAgICAgICAgICAgbGV0IHF1ZXJ5ID0gImFi
Y2RlIjsKKyAgICAgICAgICAgIGxldCByZXN1bHRzID0gbWF0Y2hlci5leGVjdXRlUXVlcnkocXVl
cnkpOworICAgICAgICAgICAgbGV0IHJlc3VsdFZhbHVlcyA9IHJlc3VsdHMubWFwKChyZXN1bHQp
ID0+IHJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFNoYWxs
b3dFcXVhbChyZXN1bHRWYWx1ZXMsIHZhbHVlcywgIlJlc3VsdHMgc2hvdWxkIGJlIHJhbmtlZCBi
eSBkZXNjZW5kaW5nIHJlbGV2YW5jeS4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRXhlY3V0ZVF1ZXJ5UG9zaXRpb25SYW5r
aW5ncyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBtYXRjaGVzIGNsb3NlIHRv
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGVuYW1lIHJhbmsgaGlnaGVyLiIsCisgICAgICAgIHRl
c3QoKSB7CisgICAgICAgICAgICAvLyBWYWx1ZXMgaW4gb3JkZXIgb2YgZGVzY2VuZGluZyByYW5r
LgorICAgICAgICAgICAgbGV0IHZhbHVlcyA9IFsiYmNkIiwgIkJ4Q3hEeCIsICJBeEJ4Q3hEeCIs
ICJhYmNkIiwgInh4eEF4eHhCeHh4Q3h4eEQiXTsKKyAgICAgICAgICAgIGxldCBtYXRjaGVyID0g
bmV3IFdJLkNTU1F1ZXJ5Q29udHJvbGxlcih2YWx1ZXMpOworICAgICAgICAgICAgbGV0IHF1ZXJ5
ID0gImJjZCI7CisgICAgICAgICAgICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5
KHF1ZXJ5KTsKKyAgICAgICAgICAgIGxldCByZXN1bHRWYWx1ZXMgPSByZXN1bHRzLm1hcCgocmVz
dWx0KSA9PiByZXN1bHQudmFsdWUpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RT
aGFsbG93RXF1YWwocmVzdWx0VmFsdWVzLCB2YWx1ZXMsICJSZXN1bHRzIHNob3VsZCBiZSByYW5r
ZWQgYnkgZGVzY2VuZGluZyByZWxldmFuY3kuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkdldE1hdGNoaW5nVGV4dFJhbmdl
cyIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBxdWVyeSByZXN1bHQgVGV4dFJh
bmdlcyBhcmUgY29ycmVjdC4iLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgZnVuY3Rp
b24gdGV4dFJhbmdlKHN0YXJ0LCBlbmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdJ
LlRleHRSYW5nZSgwLCBzdGFydCwgMCwgZW5kKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbGV0IG1hdGNoZXIgPSBuZXcgV0kuQ1NTUXVlcnlDb250cm9sbGVyOworICAgICAgICAgICAg
bGV0IHRlc3RzID0gWworICAgICAgICAgICAgICAgIHt2YWx1ZTogImEiLCByYW5nZXM6IFtdfSwK
KyAgICAgICAgICAgICAgICB7dmFsdWU6ICJhYmNkZSIsIHJhbmdlczogW3RleHRSYW5nZSgwLCA1
KV19LAorICAgICAgICAgICAgICAgIHt2YWx1ZTogIkF4QnhDeERlIiwgcmFuZ2VzOiBbdGV4dFJh
bmdlKDAsIDEpLCB0ZXh0UmFuZ2UoMiwgMyksIHRleHRSYW5nZSg0LCA1KSwgdGV4dFJhbmdlKDYs
IDgpXX0sCisgICAgICAgICAgICBdOworCisgICAgICAgICAgICBmb3IgKGxldCB7dmFsdWUsIHJh
bmdlc30gb2YgdGVzdHMpIHsKKyAgICAgICAgICAgICAgICBtYXRjaGVyLnJlc2V0KCk7CisgICAg
ICAgICAgICAgICAgbWF0Y2hlci5hZGRWYWx1ZXMoW3ZhbHVlXSk7CisKKyAgICAgICAgICAgICAg
ICBsZXQgcmVzdWx0cyA9IG1hdGNoZXIuZXhlY3V0ZVF1ZXJ5KCJhYmNkZSIpOworICAgICAgICAg
ICAgICAgIGxldCByZXN1bHRUZXh0UmFuZ2VzID0gcmVzdWx0cy5sZW5ndGggPyByZXN1bHRzWzBd
Lm1hdGNoaW5nVGV4dFJhbmdlcyA6IFtdOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoSlNPTi5zdHJpbmdpZnkocmVzdWx0VGV4dFJhbmdlcyksIEpTT04uc3RyaW5n
aWZ5KHJhbmdlcyksICJSZXN1bHQgVGV4dFJhbmdlcyBzaG91bGQgbWF0Y2ggdGhlIGV4cGVjdGVk
IHJhbmdlcy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0aW5nIFdJLkNTU1F1ZXJ5Q29udHJvbGxl
cjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91bml0LXRlc3RzL3N0cmluZy11dGlsaXRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3VuaXQtdGVzdHMvc3RyaW5nLXV0aWxpdGllcy1leHBlY3RlZC50eHQKaW5kZXgg
MjRkYTk0OGNhNzA5ZjJlOGFmOGI0Y2JkNDdjYTZmMTkwZTQzZWVjYy4uNTQ2MjYwNzRlYjRkNjYw
NTdkYWQyZjdmMzMxMzZmNGYyMjg2MWUwYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3VuaXQtdGVzdHMvc3RyaW5nLXV0aWxpdGllcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc3RyaW5nLXV0aWxpdGllcy1leHBlY3RlZC50eHQK
QEAgLTcwLDMgKzcwLDIxIEBAIFBBU1M6IFRoZSBsZXR0ZXIgJ2MnIGFuZCAnZScgYXJlIGVzY2Fw
ZWQuCiBQQVNTOiBUaGUgbGV0dGVyICdjJyBhbmQgJ2UnIGFyZSBlc2NhcGVkLgogUEFTUzogVGhl
IGxldHRlciAnYycsICdkJywgYW5kICdlJyBhcmUgZXNjYXBlZC4KIAorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IFN0cmluZy5wcm90b3R5cGUuaXNMb3dlckNhc2UKK1BBU1M6IFN0cmluZyB3aXRoIHNp
bmdsZSBsb3dlcmNhc2UgY2hhcmFjdGVyIHNob3VsZCBiZSBsb3dlcmNhc2UuCitQQVNTOiBTdHJp
bmcgd2l0aCBtdWx0aXBsZSBsb3dlcmNhc2UgY2hhcmFjdGVycyBzaG91bGQgYmUgbG93ZXJjYXNl
LgorUEFTUzogU3RyaW5nIHdpdGggc2luZ2xlIHVwcGVyY2FzZSBjaGFyYWN0ZXIgc2hvdWxkIG5v
dCBiZSBsb3dlcmNhc2UuCitQQVNTOiBTdHJpbmcgd2l0aCBtaXhlZCBjYXNlIGNoYXJhY3RlcnMg
c2hvdWxkIG5vdCBiZSBsb3dlcmNhc2UuCitQQVNTOiBFbXB0eSBzdHJpbmcgc2hvdWxkIG5vdCBi
ZSBsb3dlcmNhc2UuCitQQVNTOiBTdHJpbmcgd2l0aCBub24tYWxwaGEgY2hhcmFjdGVyIHNob3Vs
ZCBub3QgYmUgbG93ZXJjYXNlLgorUEFTUzogU3RyaW5nIHdpdGggbnVtZXJpYyBjaGFyYWN0ZXIg
c2hvdWxkIG5vdCBiZSBsb3dlcmNhc2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBTdHJpbmcu
cHJvdG90eXBlLmlzVXBwZXJDYXNlCitQQVNTOiBTdHJpbmcgd2l0aCBzaW5nbGUgdXBwZXJjYXNl
IGNoYXJhY3RlciBzaG91bGQgYmUgdXBwZXJjYXNlLgorUEFTUzogU3RyaW5nIHdpdGggbXVsdGlw
bGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHVwcGVyY2FzZS4KK1BBU1M6IFN0cmlu
ZyB3aXRoIHNpbmdsZSBsb3dlcmNhc2UgY2hhcmFjdGVyIHNob3VsZCBub3QgYmUgdXBwZXJjYXNl
LgorUEFTUzogU3RyaW5nIHdpdGggbWl4ZWQgY2FzZSBjaGFyYWN0ZXJzIHNob3VsZCBub3QgYmUg
dXBwZXJjYXNlLgorUEFTUzogRW1wdHkgc3RyaW5nIHNob3VsZCBub3QgYmUgdXBwZXJjYXNlLgor
UEFTUzogU3RyaW5nIHdpdGggbm9uLWFscGhhIGNoYXJhY3RlciBzaG91bGQgbm90IGJlIHVwcGVy
Y2FzZS4KK1BBU1M6IFN0cmluZyB3aXRoIG51bWVyaWMgY2hhcmFjdGVyIHNob3VsZCBub3QgYmUg
dXBwZXJjYXNlLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy9zdHJpbmctdXRpbGl0aWVzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdW5pdC10ZXN0
cy9zdHJpbmctdXRpbGl0aWVzLmh0bWwKaW5kZXggZDQwOThlNDc5ZTFmOTZhMzViNmM0NTI2Mzlj
Zjc4ZTZmYWJiOGQ0NS4uNmJjOTBjZTMwY2MwYWQzY2ZmNDdkZGZhYWUwMTQ2ZGM3M2MxMmFiNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3VuaXQtdGVzdHMvc3RyaW5nLXV0aWxp
dGllcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci91bml0LXRlc3RzL3N0cmluZy11
dGlsaXRpZXMuaHRtbApAQCAtMTI1LDYgKzEyNSwzNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
U3RyaW5nLnByb3RvdHlwZS5pc0xvd2VyQ2FzZSIsCisgICAgICAgIHRlc3QoKSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoImEiLmlzTG93ZXJDYXNlKCksICJTdHJpbmcg
d2l0aCBzaW5nbGUgbG93ZXJjYXNlIGNoYXJhY3RlciBzaG91bGQgYmUgbG93ZXJjYXNlLiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKCJhYmMiLmlzTG93ZXJDYXNlKCks
ICJTdHJpbmcgd2l0aCBtdWx0aXBsZSBsb3dlcmNhc2UgY2hhcmFjdGVycyBzaG91bGQgYmUgbG93
ZXJjYXNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSgiQSIuaXNM
b3dlckNhc2UoKSwgIlN0cmluZyB3aXRoIHNpbmdsZSB1cHBlcmNhc2UgY2hhcmFjdGVyIHNob3Vs
ZCBub3QgYmUgbG93ZXJjYXNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RG
YWxzZSgiYUJjIi5pc0xvd2VyQ2FzZSgpLCAiU3RyaW5nIHdpdGggbWl4ZWQgY2FzZSBjaGFyYWN0
ZXJzIHNob3VsZCBub3QgYmUgbG93ZXJjYXNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZSgiIi5pc0xvd2VyQ2FzZSgpLCAiRW1wdHkgc3RyaW5nIHNob3VsZCBub3Qg
YmUgbG93ZXJjYXNlLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSgi
LiIuaXNMb3dlckNhc2UoKSwgIlN0cmluZyB3aXRoIG5vbi1hbHBoYSBjaGFyYWN0ZXIgc2hvdWxk
IG5vdCBiZSBsb3dlcmNhc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKCIxIi5pc0xvd2VyQ2FzZSgpLCAiU3RyaW5nIHdpdGggbnVtZXJpYyBjaGFyYWN0ZXIgc2hv
dWxkIG5vdCBiZSBsb3dlcmNhc2UuIik7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJTdHJpbmcucHJvdG90eXBlLmlzVXBwZXJDYXNlIiwKKyAgICAgICAgdGVzdCgpIHsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZSgiQSIuaXNVcHBlckNhc2UoKSwgIlN0cmlu
ZyB3aXRoIHNpbmdsZSB1cHBlcmNhc2UgY2hhcmFjdGVyIHNob3VsZCBiZSB1cHBlcmNhc2UuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoIkFCQyIuaXNVcHBlckNhc2Uo
KSwgIlN0cmluZyB3aXRoIG11bHRpcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHNob3VsZCBiZSB1
cHBlcmNhc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKCJhIi5p
c1VwcGVyQ2FzZSgpLCAiU3RyaW5nIHdpdGggc2luZ2xlIGxvd2VyY2FzZSBjaGFyYWN0ZXIgc2hv
dWxkIG5vdCBiZSB1cHBlcmNhc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEZhbHNlKCJBYkMiLmlzVXBwZXJDYXNlKCksICJTdHJpbmcgd2l0aCBtaXhlZCBjYXNlIGNoYXJh
Y3RlcnMgc2hvdWxkIG5vdCBiZSB1cHBlcmNhc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEZhbHNlKCIiLmlzVXBwZXJDYXNlKCksICJFbXB0eSBzdHJpbmcgc2hvdWxkIG5v
dCBiZSB1cHBlcmNhc2UuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNl
KCIuIi5pc1VwcGVyQ2FzZSgpLCAiU3RyaW5nIHdpdGggbm9uLWFscGhhIGNoYXJhY3RlciBzaG91
bGQgbm90IGJlIHVwcGVyY2FzZS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RmFsc2UoIjEiLmlzVXBwZXJDYXNlKCksICJTdHJpbmcgd2l0aCBudW1lcmljIGNoYXJhY3RlciBz
aG91bGQgbm90IGJlIHVwcGVyY2FzZS4iKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwog
fQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>449384</attachid>
            <date>2022-01-18 06:36:01 -0800</date>
            <delta_ts>2022-01-18 06:36:01 -0800</delta_ts>
            <desc>Screenshot with patch applied</desc>
            <filename>Screen Shot 2022-01-18 at 3.33.19 PM.png</filename>
            <type>image/png</type>
            <size>79490</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">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
aaxjbGlsdxw1bkHcgbj38f7x6+IfJFgmSBO6EtUS0xIbE8eSApOqk2TJs5KXJF9J0U0RpLSn4lIT
U/emjs4Nmrt57mCaa1pF2u15FvOK5l2arzs/d/7JBWoL2AuOpmPSk9IPpH9mR7Eb2KMZrIxtGSOc
AM4WzguuH3cTd5jnzavmPcv0zqzOHMryztqYNcz35dfwXwoCBHWC19mh2Tuzx3KicvblyHOTclvy
8HnpeceFFGGO8NxCg4VFC3tFNqIKkSzfM39z/og4XLxXAknmSdoLNJEh6arUUvqNtL/Qp7C+8MOi
xEVHizSKhEVXi62LVxc/Kwku+WExejFncVepUemK0v4lzCW7lkJLM5Z2LTNZVr5scHnI8v0riCty
VvxS5lBWXfZuZdLKjnL98uXlA9+EfNNUoVohrrizymvVzm/R3wq+7VntvHrr6q+V3MrLVQ5VNVWf
13DWXP7O8bva7+RrM9f2rHNbt2M9dr1w/e0Nvhv2V2tUl1QPbIzc2LqJvqly07vNCzZfqnGp2bmF
uEW6RVYbUdu+1XTr+q2f6/h1ffX+9S3b9Lat3ja2nbv9xg6/Hc079XdW7fz0veD7u7tCdrU2mDfU
7MbuLtz9dE/inu4fGD807tXdW7X3yz7hPtn+2P3nGt0bGw/oHVjXBDdJm4YPph28fijwUHuzXfOu
FlpL1WFwWHr4+Y/pP94+En6k6yjjaPNPZj9tO0Y9VtkKtRa3jrTx22TtKe29x8OOd3V4dRz72f7n
fSeMTtSf1Dq57hTxVPkp+emS06Odos6XZ7LODHQt6HpwNvnsrXMx53rOh5+/eCH4wtluZvfpi94X
T1zyvHT8MuNy2xW3K61XXa8e+8X1l2M9bj2t19yvtV/3uN7RO7v31A3fG2duBt68cIt160rfnL7e
2wm3795JuyO7y707dC/33uv7hffHHyx/iHlY+Uj9Uc1jvccNv1r92iJzk53sD+y/+iTuyYMBzsCL
3yS/fR4sf0p+WvPM8FnjkNPQieHg4evP5z4ffCF6Mf6y4neN37e9snz10x9+f1wdSR4ZfC1+LX+z
5q3O233vXN51jUaPPn6f9358rPKDzof9Hxkfuz8lfXo2vugz7nPtF6svHV/Dvz6U58nlIraYPTEK
oBCFMzMBeLMPmY1TAKAiczlx7uRsPSHQ5P+BCQL/iSfn7wlxA6DZD4AYRJnLATiCqDmiash3xUgU
7wdgZ2el/kskmc5Ok7FIyGSJ+SCXv9UHANcBwBexXD6+XS7/sgcp9h4AnfmTM71CsMgs32yoL3Up
vlXUVw7+IZPz/l96/OcKFBW4gH+ufwJ2uBtRJNVCmQAAAIplWElmTU0AKgAAAAgABAEaAAUAAAAB
AAAAPgEbAAUAAAABAAAARgEoAAMAAAABAAIAAIdpAAQAAAABAAAATgAAAAAAAACQAAAAAQAAAJAA
AAABAAOShgAHAAAAEgAAAHigAgAEAAAAAQAAApagAwAEAAAAAQAAAUQAAAAAQVNDSUkAAABTY3Jl
ZW5zaG90OSG8/gAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAAdZpVFh0WE1MOmNvbS5hZG9iZS54bXAA
AAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3Jl
IDYuMC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAy
LzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
ICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgog
ICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MzI0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4K
ICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjY2MjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+
CiAgICAgICAgIDxleGlmOlVzZXJDb21tZW50PlNjcmVlbnNob3Q8L2V4aWY6VXNlckNvbW1lbnQ+
CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgoerM/s
AAAAHGlET1QAAAACAAAAAAAAAKIAAAAoAAAAogAAAKIAAIEjO1RgJAAAQABJREFUeAHsnQdgFcX2
xg8EQq8KIlgo4rN3bKBi7/2pf5/Prtjfs+uz94a9Ycf2fPYOWFCxK/aKCihdBaRDGiH/+c3NuZm7
2Zvcm9wkBM5RsruzszOz397kfvudOWea/Pzzz2ViZggYAoaAIWAIGAKGgCFgCNQSgSZlzmrZhl1u
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
</data>

          </attachment>
      

    </bug>

</bugzilla>