<?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>231604</bug_id>
          
          <creation_ts>2021-10-12 12:08:39 -0700</creation_ts>
          <short_desc>Web Inspector: Extract reusable logic from ResourceQueryController, ResourceQueryResult and ResourceQueryMatch</short_desc>
          <delta_ts>2021-11-12 02:54:15 -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>
          
          <blocked>230351</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>1803290</commentid>
    <comment_count>0</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-10-12 12:08:39 -0700</bug_when>
    <thetext>Web Inspector already supports fuzzy matching for file paths in ResourceQueryController.
The matching logic is very similar to what&apos;s needed for CSS fuzzy matching.

Relevant parts from ResourceQueryController can be extracted into a class that can be shared between the two use cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803292</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-12 12:09:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/84160281&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803319</commentid>
    <comment_count>2</comment_count>
      <attachid>440971</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-10-12 12:45:22 -0700</bug_when>
    <thetext>Created attachment 440971
Patch v1.0

Introduce generic QueryController with reusable logic extracted from ResouceQueryController;
Add CSSQueryController with logic tuned for CSS properties and values;
This lays the supporting structure for work in Bug 230351 which makes CSS completions in the Styles details sidebar use fuzzy matching for property names and values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803336</commentid>
    <comment_count>3</comment_count>
      <attachid>440971</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-10-12 13:32:08 -0700</bug_when>
    <thetext>Comment on attachment 440971
Patch v1.0

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

&gt; Source/WebInspectorUI/ChangeLog:69
&gt; +        * UserInterface/Test.html:

Can we add some basic tests for CSSQueryController?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:33
&gt; +        this._specialCharacterIndicesForValueMap = new Map;

IMO it would be easier to understand what this map is for if it had `cached` somewhere in the name. e.g. `cachedSpecialCharacterIndicesForValueMap`

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

Should probably also assert this in the constructor then.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:52
&gt; +        query = query.removeWhitespace().toLowerCase();

Is removing whitespace necessary or desirable? I would have thought it do be a bad state if we got here with whitespace in the string?

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

I think this could just a static function on QueryController that takes a string and an array of separators, instead of having near duplicate logic here and in ResourceQueryController.

&gt; Source/WebInspectorUI/UserInterface/Controllers/ResourceQueryController.js:92
&gt;      _findSpecialCharacterIndices(string)

See CSSQueryController.js:74

&gt; Source/WebInspectorUI/UserInterface/Main.html:929
&gt; +    &lt;script src=&quot;Controllers/QueryController.js&quot;&gt;&lt;/script&gt;
&gt; +    &lt;script src=&quot;Controllers/CSSQueryController.js&quot;&gt;&lt;/script&gt;
&gt;      &lt;script src=&quot;Controllers/ResourceQueryController.js&quot;&gt;&lt;/script&gt;

Can we move these to below where we include the rest of the controllers, or at least define them in their own section of Main.html if they have to be included sooner?

&gt; Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js:30
&gt;          console.assert(matches.length, &quot;Query matches list can&apos;t be empty.&quot;);

This will be asserted by the call to super() below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1803399</commentid>
    <comment_count>4</comment_count>
      <attachid>440971</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-12 14:34:58 -0700</bug_when>
    <thetext>Comment on attachment 440971
Patch v1.0

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

&gt; Source/WebInspectorUI/ChangeLog:3
&gt; +        Web Inspector: Add CSSQueryController to support fuzzy matching

It&apos;s a bit odd for this patch to introduce a class that&apos;s not actually used anywhere.  I think I&apos;d rather have the class be introduced at the same time that it&apos;s used.  Perhaps we can have the first patch split out the logic into the base class and then the second patch add the new subclass with its usage?

&gt;&gt; Source/WebInspectorUI/ChangeLog:69
&gt;&gt; +        * UserInterface/Test.html:
&gt; 
&gt; Can we add some basic tests for CSSQueryController?

definitely want some tests

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:28
&gt; +    constructor(values = [])

Style: we usually prefer to have the fallback be where the variable is used as JS parameter defaults only apply when the argument is not `undefined`

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:41
&gt; +        if (!values.length)

NIT: this check is unnecessary

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:44
&gt; +        this._values.pushAll(values);

NIT: Do we want to `console.assert` that there are no duplicates?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:73
&gt; +

Style: missing a `// Private`

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:79
&gt; +        const separators = &quot;-&quot;;

How does this handle repeated CSS variables that have repeated -?

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSQueryController.js:95
&gt; +                let previousCharacterIsSeparator = separators.includes(previousCharacter);

NIT: I&apos;d inline this

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:26
&gt; +WI.QueryController = class QueryController extends WI.Object

While we&apos;re here, does this actually need to be `WI.Object`?  AFAICT it doesn&apos;t use any events.

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:32
&gt; +

Style: missing a `// Public`

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:33
&gt; +    executeQuery(query) {

Style: `{` on separate line

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:34
&gt; +        // Implemented by subclasses.

NIT: if the base class isn&apos;t gonna do anything and the subclass isn&apos;t gonna call `super.executeQuery(...)` then I&apos;d replace this with
```
    throw WI.NotImplementedError.subclassMustOverride();
```

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:46
&gt; +        let deadBranches = new Array(query.length).fill(Infinity);

Style: I like to wrap any `new` with `(` `)` so it&apos;s clear what the next `.` is operating on
```
    (new Array(query.length)).fill(Infinity)
```

&gt; Source/WebInspectorUI/UserInterface/Models/QueryMatch.js:44
&gt; +    Special: Symbol(&quot;special&quot;)

Style: missing trailing `,`

&gt; Source/WebInspectorUI/UserInterface/Models/QueryResult.js:30
&gt; +        console.assert(matches.length, &quot;Query matches list can&apos;t be empty.&quot;);

NIT: the text is redundant

&gt; Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js:38
&gt; +    get resource() { return this._value; }

This is a private member of a baseclass.  Rather than use it here, can we find all places where `.resource` is used and switch to `.value` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813571</commentid>
    <comment_count>5</comment_count>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-10 06:21:36 -0800</bug_when>
    <thetext>Retitled:
Web Inspector: Extract reusable logic from ResourceQueryController, ResourceQueryResult and ResourceQueryMatch

Was:
Add CSSQueryController to support fuzzy matching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813591</commentid>
    <comment_count>6</comment_count>
      <attachid>440971</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-10 06:59:03 -0800</bug_when>
    <thetext>Comment on attachment 440971
Patch v1.0

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:3
&gt;&gt; +        Web Inspector: Add CSSQueryController to support fuzzy matching
&gt; 
&gt; It&apos;s a bit odd for this patch to introduce a class that&apos;s not actually used anywhere.  I think I&apos;d rather have the class be introduced at the same time that it&apos;s used.  Perhaps we can have the first patch split out the logic into the base class and then the second patch add the new subclass with its usage?

Ok. I split this patch to introduce just the generalized QueryController logic and update ResourceQueryController accordingly.
The CSSQueryController logic will come in Bug 230351

&gt;&gt;&gt; Source/WebInspectorUI/ChangeLog:69
&gt;&gt;&gt; +        * UserInterface/Test.html:
&gt;&gt; 
&gt;&gt; Can we add some basic tests for CSSQueryController?
&gt; 
&gt; definitely want some tests

Coming in Bug 230351

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:26
&gt;&gt; +WI.QueryController = class QueryController extends WI.Object
&gt; 
&gt; While we&apos;re here, does this actually need to be `WI.Object`?  AFAICT it doesn&apos;t use any events.

Indeed, no need to extend `WI.Object`. This was just copy-pasta from the original.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:32
&gt;&gt; +
&gt; 
&gt; Style: missing a `// Public`

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:33
&gt;&gt; +    executeQuery(query) {
&gt; 
&gt; Style: `{` on separate line

Done

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:34
&gt;&gt; +        // Implemented by subclasses.
&gt; 
&gt; NIT: if the base class isn&apos;t gonna do anything and the subclass isn&apos;t gonna call `super.executeQuery(...)` then I&apos;d replace this with
&gt; ```
&gt;     throw WI.NotImplementedError.subclassMustOverride();
&gt; ```

Good idea! Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:46
&gt;&gt; +        let deadBranches = new Array(query.length).fill(Infinity);
&gt; 
&gt; Style: I like to wrap any `new` with `(` `)` so it&apos;s clear what the next `.` is operating on
&gt; ```
&gt;     (new Array(query.length)).fill(Infinity)
&gt; ```

Done. Eslint complains but it&apos;s not that big of a deal:

```
eslint: error
no-extra-parens - Unnecessary parentheses around expression.
```

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/ResourceQueryController.js:92
&gt;&gt;      _findSpecialCharacterIndices(string)
&gt; 
&gt; See CSSQueryController.js:74

I&apos;ll chose to keep `findSpecialCharacterIndices()` independent between `CSSQueryController` and `ResourceController`. 
This is one of the bits we&apos;ll likely tweak to suit CSS property matching. For example, uppercase doesn&apos;t matter _unless_ it&apos;s a CSS variable name.

&gt;&gt; Source/WebInspectorUI/UserInterface/Main.html:929
&gt;&gt;      &lt;script src=&quot;Controllers/ResourceQueryController.js&quot;&gt;&lt;/script&gt;
&gt; 
&gt; Can we move these to below where we include the rest of the controllers, or at least define them in their own section of Main.html if they have to be included sooner?

I&apos;m not sure I understand. This block is where controllers are loaded.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/QueryMatch.js:44
&gt;&gt; +    Special: Symbol(&quot;special&quot;)
&gt; 
&gt; Style: missing trailing `,`

Done.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js:30
&gt;&gt;          console.assert(matches.length, &quot;Query matches list can&apos;t be empty.&quot;);
&gt; 
&gt; This will be asserted by the call to super() below.

Indeed. Removed.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js:38
&gt;&gt; +    get resource() { return this._value; }
&gt; 
&gt; This is a private member of a baseclass.  Rather than use it here, can we find all places where `.resource` is used and switch to `.value` instead?

I updated it to use the public member `this.value`.

I&apos;d prefer to keep this mapping and avoid changing the tests and `WI.OpenResourceDialog`.
It makes code more understandable to have something call e.g. `result.resource.displayName` since `displayName` is a member of `WI.Resource`.

If you feel strongly, I can update the consumers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813594</commentid>
    <comment_count>7</comment_count>
      <attachid>443815</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-10 07:06:43 -0800</bug_when>
    <thetext>Created attachment 443815
Patch 1.1

Split patch to introduce just the generalization of fuzzy matching logic. Address code review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813819</commentid>
    <comment_count>8</comment_count>
      <attachid>443815</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-10 15:35:24 -0800</bug_when>
    <thetext>Comment on attachment 443815
Patch 1.1

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Main.html:927
&gt; +    &lt;script src=&quot;Controllers/QueryController.js&quot;&gt;&lt;/script&gt;

I think we should move this below `CodeMirrorEditingController.js` so that it&apos;s for sure declared before any possible subclasses that use it.  Right now, it&apos;s only pure luck that we happen to create `WI.QueryController` before using it in `WI.ResourceQueryController` simply because Q &lt; R 😅

&gt; Source/WebInspectorUI/UserInterface/Models/QueryMatch.js:28
&gt; +    constructor(type, index, queryIndex)

Can/Should we add some basic assertions?
```
    console.assert(Object.values(WI.QueryMatch.Type).includes(type), type);
    console.assert(index &gt;= 0, index);
    console.assert(queryIndex &gt;= 0, queryIndex);
```

&gt; Source/WebInspectorUI/UserInterface/Models/QueryResult.js:43
&gt; +        if (this._rank === undefined)
&gt; +            this._calculateRank();

```
    this._rank ??= this._calculateRank();
```

&gt; Source/WebInspectorUI/UserInterface/Models/QueryResult.js:51
&gt; +        if (!this._matchingTextRanges)
&gt; +            this._matchingTextRanges = this._createMatchingTextRanges();

```
    this._matchingTextRanges ??= this._createMatchingTextRanges();
```

&gt; Source/WebInspectorUI/UserInterface/Models/ResourceQueryResult.js:30
&gt; +        super(resource, matches);

ditto (Source/WebInspectorUI/UserInterface/Models/QueryMatch.js:28)
```
    console.assert(resource instanceof WI.Resource, resource);
```

&gt; Source/WebInspectorUI/UserInterface/Test.html:268
&gt; +    &lt;script src=&quot;Controllers/QueryController.js&quot;&gt;&lt;/script&gt;

ditto (Source/WebInspectorUI/UserInterface/Main.html:927)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813820</commentid>
    <comment_count>9</comment_count>
      <attachid>443815</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-11-10 15:36:55 -0800</bug_when>
    <thetext>Comment on attachment 443815
Patch 1.1

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:48
&gt; +        {

NIT: we only require that `{` be on a separate line for top-level functions, not locals/lambdas :)

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:55
&gt; +        {

ditto (:48)

&gt; Source/WebInspectorUI/UserInterface/Controllers/QueryController.js:79
&gt; +        {

ditto (:48)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814039</commentid>
    <comment_count>10</comment_count>
      <attachid>443947</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-11 08:16:27 -0800</bug_when>
    <thetext>Created attachment 443947
Patch 1.2

Carry over R+; Address code review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814075</commentid>
    <comment_count>11</comment_count>
      <attachid>443961</attachid>
    <who name="Razvan Caliman">rcaliman</who>
    <bug_when>2021-11-11 09:57:25 -0800</bug_when>
    <thetext>Created attachment 443961
Patch 1.3

Carry over R+; Fix condition for failing test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814380</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-12 02:54:13 -0800</bug_when>
    <thetext>Committed r285711 (244170@main): &lt;https://commits.webkit.org/244170@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443961.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440971</attachid>
            <date>2021-10-12 12:45:22 -0700</date>
            <delta_ts>2021-11-10 07:06:39 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-231604-20211012214521.patch</filename>
            <type>text/plain</type>
            <size>34451</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGUxYWViN2RmNTIxNDEwYjcyMWM5ZTJkZjE4NTk0
NTc5OWJkMTA0MDMuLmZlMTkxYzYxNmIyNmM0ZjQzNDg3N2M4MTY3MzUxZjkxODg3YWQwNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDIxLTEwLTEyICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBBZGQgQ1NTUXVlcnlDb250cm9sbGVyIHRvIHN1cHBvcnQgZnV6enkgbWF0Y2hpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTYwNAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vODQxNjAyODE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgRXh0cmFjdCByZXVzYWJsZSBsb2dpYyBmcm9tIGBSZXNvdXJj
ZVF1ZXJ5Q29udHJvbGxlcmAgaW50byBhIGdlbmVyaWMgYFF1ZXJ5Q29udHJvbGxlcmAuCisgICAg
ICAgIEludHJvZHVjZSBgQ1NTUXVlcnlDb250cm9sbGVyYCB3aGljaCBleHRlbmRzIGBRdWVyeUNv
bnRyb2xsZXJgIGFuZCBjdXN0b21pemUgaXQKKyAgICAgICAgZm9yIHVzZSB3aXRoIENTUyBwcm9w
ZXJ0aWVzIGFuZCB2YWx1ZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU1F1ZXJ5Q29udHJvbGxlci5qczogQWRkZWQuCisgICAgICAgIChXSS5DU1NRdWVyeUNvbnRy
b2xsZXIpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5hZGRWYWx1
ZXMpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5leGVjdXRlUXVl
cnkpOgorICAgICAgICAoV0kuQ1NTUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5fZmluZFNwZWNp
YWxDaGFyYWN0ZXJJbmRpY2VzKToKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvUXVlcnlDb250cm9sbGVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxl
cik6CisgICAgICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmV4ZWN1dGVRdWVyeSk6
CisgICAgICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmZpbmRRdWVyeU1hdGNoZXMu
cHVzaE1hdGNoKToKKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuZmluZFF1
ZXJ5TWF0Y2hlcy5tYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKToKKyAgICAgICAgKFdJLlF1ZXJ5
Q29udHJvbGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0Y2hlcy5iYWNrdHJhY2spOgorICAgICAg
ICAoV0kuUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5maW5kUXVlcnlNYXRjaGVzKToKKworICAg
ICAgICBLZWVwIGp1c3QgdGhlIHJldXNhYmxlIG1hdGNoaW5nIGxvZ2ljIGluIGBRdWVyeUNvbnRy
b2xsZXJgLgorICAgICAgICBTdWJjbGFzc2VzIGxpa2UgYFJlc291cmNlUXVlcnlDb250cm9sbGVy
YCBhbmQgYENTU1F1ZXJ5Q29udHJvbGxlcmAgYXJlIHJlc3BvbnNpYmxlCisgICAgICAgIGZvciBh
Z3JlZ2F0aW5nIHRoZSBkYXRhIHRvIGJlIHF1ZXJpZWQgYW5kIGN1c3RvbWl6YXRpb24gZm9yIHNw
ZWNpYWwgY2hhcmFjdGVycywgc29ydGluZywgZXRjLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLlJl
c291cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAgICAo
V0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLl9maW5kUXVlcnlNYXRjaGVzLnB1
c2hNYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5w
cm90b3R5cGUuX2ZpbmRRdWVyeU1hdGNoZXMubWF0Y2hOZXh0U3BlY2lhbENoYXJhY3Rlcik6IERl
bGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuX2Zp
bmRRdWVyeU1hdGNoZXMuYmFja3RyYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNl
UXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5fZmluZFF1ZXJ5TWF0Y2hlcyk6IERlbGV0ZWQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9RdWVyeU1hdGNoLmpzOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcy4KKworICAgICAg
ICBgUmVzb3VyY2VRdWVyeU1hdGNoYCBkaWRuJ3QgY29udGFpbiBhbnkgcmVzb3VyY2Utc3BlY2lm
aWMgbG9naWMuIEl0IGNhbiBiZSBnZW5lcmFsaXplZCB0byBgUXVlcnlNYXRjaGAuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qczogQ29waWVkIGZyb20gU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1
bHQuanMuCisgICAgICAgIChXSS5RdWVyeVJlc3VsdCk6CisgICAgICAgIChXSS5RdWVyeVJlc3Vs
dC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0LnByb3RvdHlw
ZS5nZXQgcmFuayk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNo
aW5nVGV4dFJhbmdlcyk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuX2NhbGN1
bGF0ZVJhbmsuZ2V0TXVsdGlwbGllcik6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5
cGUuX2NhbGN1bGF0ZVJhbmspOgorICAgICAgICAoV0kuUXVlcnlSZXN1bHQucHJvdG90eXBlLl9j
cmVhdGVNYXRjaGluZ1RleHRSYW5nZXMpOgorCisgICAgICAgIEEgZ2VuZXJpYyBgUXVlcnlSZXN1
bHRgIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBgUmVzb3VyY2VRdWVyeVJlc3VsdGAgY29udGFpbmlu
ZworICAgICAgICB0aGUgcmV1c2FibGUgbG9naWMgZm9yIHJlc3VsdCByYW5raW5nIGFuZCBpZGVu
dGlmaW5nIG1hdGNoaW5nIHRleHQgcmFuZ2VzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9N
b2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qczoKKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlS
ZXN1bHQpOgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IHJl
c291cmNlKToKKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90eXBlLl9fdGVz
dF9jcmVhdGVNYXRjaGVzTWFzayk6CisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0LnBy
b3RvdHlwZS5nZXQgcmFuayk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVz
dWx0LnByb3RvdHlwZS5nZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90eXBlLl9jYWxjdWxhdGVSYW5rLmdldE11bHRp
cGxpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJlc3VsdC5wcm90b3R5
cGUuX2NhbGN1bGF0ZVJhbmspOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJl
c3VsdC5wcm90b3R5cGUuX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcyk6IERlbGV0ZWQuCisKKyAg
ICAgICAgYFJlc291cmNlUXVlcnlSZXN1bHRgIGV4dGVuZHMgYFF1ZXJ5UmVzdWx0YCB3aXRoIHJl
c291cmNlLXNwZWNpZmMgbWVtYmVyczoKKyAgICAgICAgLSB0aGUgYGNvb2tpZWAgcHJvcGVydHkg
d2hpY2ggaG9sZHMgdGhlIG9wdGlvbmFsIGxpbmUgYW5kIGNvbHVtbiBpbmZvIHVzZWQgd2hlbiBq
dW1waW5nIHRvIG1hdGNoZWQgZmlsZXMKKyAgICAgICAgLSB0aGUgYHJlc291cmNlYCBwcm9wZXJ0
eSB3aGljaCBtYXBzIHRvIHRoZSBnZW5lcmljIGBRdWVyeVJlc3VsdC52YWx1ZWA7IHRoaXMgaXMg
dXNlZCBpbiB0ZXN0cyBhbmQgd2hlbiBzb3J0aW5nIGluIGBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxl
cmAKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCiAyMDIxLTEwLTExICBC
SiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBU
YWJCYXIgY29udGV4dCBtZW51IHN1cHBvcnQgZm9yIFdJLldlYkluc3BlY3RvckV4dGVuc2lvblRh
YkNvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NRdWVyeUNvbnRyb2xsZXIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2Y2YTBiYWM2Y2U3ZTc4MTE0OTdiNTllZWY3ZTdkOWViMDNkY2JhZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcwpAQCAtMCwwICsxLDEwOCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dJLkNTU1F1ZXJ5Q29udHJvbGxlciA9IGNsYXNzIENTU1F1ZXJ5Q29udHJvbGxlciBleHRlbmRz
IFdJLlF1ZXJ5Q29udHJvbGxlcgoreworICAgIGNvbnN0cnVjdG9yKHZhbHVlcyA9IFtdKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl92YWx1ZXMgPSB2YWx1ZXM7Cisg
ICAgICAgIHRoaXMuX3NwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAgPSBuZXcgTWFw
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgYWRkVmFsdWVzKHZhbHVlcykKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LmlzQXJyYXkodmFsdWVzKSwgdmFsdWVzKTsK
KyAgICAgICAgaWYgKCF2YWx1ZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIHRoaXMuX3ZhbHVlcy5wdXNoQWxsKHZhbHVlcyk7CisgICAgfQorCisgICAgZXhlY3V0ZVF1
ZXJ5KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgaWYgKCFxdWVyeSB8fCAhdGhpcy5fdmFsdWVzLmxl
bmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBxdWVyeSA9IHF1ZXJ5LnJl
bW92ZVdoaXRlc3BhY2UoKS50b0xvd2VyQ2FzZSgpOworCisgICAgICAgIGxldCByZXN1bHRzID0g
W107CisKKyAgICAgICAgZm9yIChsZXQgdmFsdWUgb2YgdGhpcy5fdmFsdWVzKSB7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuX3NwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzRm9yVmFsdWVNYXAuaGFzKHZh
bHVlKSkKKyAgICAgICAgICAgICAgICB0aGlzLl9zcGVjaWFsQ2hhcmFjdGVySW5kaWNlc0ZvclZh
bHVlTWFwLnNldCh2YWx1ZSwgdGhpcy5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKHZhbHVl
KSk7CisKKyAgICAgICAgICAgIGxldCBtYXRjaGVzID0gdGhpcy5maW5kUXVlcnlNYXRjaGVzKHF1
ZXJ5LCB2YWx1ZSwgdGhpcy5fc3BlY2lhbENoYXJhY3RlckluZGljZXNGb3JWYWx1ZU1hcC5nZXQo
dmFsdWUpKTsKKyAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCkKKyAgICAgICAgICAgICAg
ICByZXN1bHRzLnB1c2gobmV3IFdJLlF1ZXJ5UmVzdWx0KHZhbHVlLCBtYXRjaGVzKSk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBSZXN1bHRzIGFyZSBzb3J0ZWQgaW4gZGVzY2VuZGluZyBvcmRl
ciBieSByYW5rLiBSZXN1bHRzIG9mIGVxdWFsCisgICAgICAgIC8vIHJhbmsgYXJlIHNvcnRlZCBh
bHBoYWJldGljYWxseSBieSB0aGUgcXVlcmllZCB2YWx1ZS4KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dHMuc29ydCgoYSwgYikgPT4geworICAgICAgICAgICAgaWYgKGEucmFuayA9PT0gYi5yYW5rKQor
ICAgICAgICAgICAgICAgIHJldHVybiBhLnZhbHVlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLnZh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybiBiLnJhbmsgLSBhLnJhbms7CisgICAgICAgIH0pOwor
ICAgIH0KKworICAgIF9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMoc3RyaW5nKQorICAgIHsK
KyAgICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisg
ICAgICAgIGNvbnN0IHNlcGFyYXRvcnMgPSAiLSI7CisKKyAgICAgICAgLy8gU3BlY2lhbCBjaGFy
YWN0ZXJzIGluY2x1ZGUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgLy8gMS4gVGhlIGZpcnN0IGNo
YXJhY3Rlci4KKyAgICAgICAgLy8gMi4gVXBwZXJjYXNlIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3cg
YSBsb3dlcmNhc2UgbGV0dGVyLgorICAgICAgICAvLyAzLiBTZXBhcmF0b3JzIGFuZCB0aGUgZmly
c3QgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgc2VwYXJhdG9yLgorICAgICAgICBsZXQgaW5kaWNl
cyA9IFswXTsKKworICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHN0cmluZy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgbGV0IGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKyAgICAgICAgICAg
IGxldCBpc1NwZWNpYWwgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKHNlcGFyYXRvcnMuaW5j
bHVkZXMoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAg
ICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzQ2hhcmFjdGVyID0g
c3RyaW5nW2kgLSAxXTsKKyAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNDaGFyYWN0ZXJJc1Nl
cGFyYXRvciA9IHNlcGFyYXRvcnMuaW5jbHVkZXMocHJldmlvdXNDaGFyYWN0ZXIpOworICAgICAg
ICAgICAgICAgIGlmIChwcmV2aW91c0NoYXJhY3RlcklzU2VwYXJhdG9yKQorICAgICAgICAgICAg
ICAgICAgICBpc1NwZWNpYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoYXJh
Y3Rlci5pc1VwcGVyQ2FzZSgpICYmIHByZXZpb3VzQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKCkpCisg
ICAgICAgICAgICAgICAgICAgIGlzU3BlY2lhbCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmIChpc1NwZWNpYWwpCisgICAgICAgICAgICAgICAgaW5kaWNlcy5wdXNoKGkp
OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGluZGljZXM7CisgICAgfQorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1F1
ZXJ5Q29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1F1ZXJ5Q29udHJvbGxlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDBiYWExYmMzZjI3ZGFh
NzI3OTg0YWEyZjcwMDAyYTk2N2RiM2E0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzCkBA
IC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuUXVlcnlDb250cm9sbGVyID0gY2xhc3Mg
UXVlcnlDb250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKyAgICB9CisKKyAgICBleGVjdXRlUXVlcnkocXVlcnkp
IHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBm
aW5kUXVlcnlNYXRjaGVzKHF1ZXJ5LCBzZWFyY2hTdHJpbmcsIHNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzKQorICAgIHsKKyAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IHNlYXJjaFN0cmluZy5sZW5n
dGgpCisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgbGV0IG1hdGNoZXMgPSBbXTsK
KyAgICAgICAgbGV0IHF1ZXJ5SW5kZXggPSAwOworICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSAw
OworICAgICAgICBsZXQgc3BlY2lhbEluZGV4ID0gMDsKKyAgICAgICAgbGV0IGRlYWRCcmFuY2hl
cyA9IG5ldyBBcnJheShxdWVyeS5sZW5ndGgpLmZpbGwoSW5maW5pdHkpOworICAgICAgICBsZXQg
dHlwZSA9IFdJLlF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsOworCisgICAgICAgIGZ1bmN0aW9uIHB1
c2hNYXRjaChpbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKG5ldyBX
SS5RdWVyeU1hdGNoKHR5cGUsIGluZGV4LCBxdWVyeUluZGV4KSk7CisgICAgICAgICAgICBzZWFy
Y2hJbmRleCA9IGluZGV4ICsgMTsKKyAgICAgICAgICAgIHF1ZXJ5SW5kZXgrKzsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG1hdGNoTmV4dFNwZWNpYWxDaGFyYWN0ZXIoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoc3BlY2lhbEluZGV4ID49IHNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
IGxldCBvcmlnaW5hbFNwZWNpYWxJbmRleCA9IHNwZWNpYWxJbmRleDsKKyAgICAgICAgICAgIHdo
aWxlIChzcGVjaWFsSW5kZXggPCBzcGVjaWFsQ2hhcmFjdGVySW5kaWNlcy5sZW5ndGgpIHsKKyAg
ICAgICAgICAgICAgICAvLyBOb3JtYWwgY2hhcmFjdGVyIG1hdGNoaW5nIGNhbiBtb3ZlIHBhc3Qg
c3BlY2lhbCBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgIC8vIHNvIGFkdmFuY2UgdGhlIHNw
ZWNpYWwgY2hhcmFjdGVyIGluZGV4IGlmIGl0J3MgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAg
IC8vIGN1cnJlbnQgc2VhcmNoIHN0cmluZyBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBsZXQg
aW5kZXggPSBzcGVjaWFsQ2hhcmFjdGVySW5kaWNlc1tzcGVjaWFsSW5kZXgrK107CisgICAgICAg
ICAgICAgICAgaWYgKGluZGV4IDwgc2VhcmNoSW5kZXgpCisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5W3F1ZXJ5SW5kZXhdID09PSBzZWFy
Y2hTdHJpbmdbaW5kZXhdKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2hNYXRjaChpbmRleCk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgc3BlY2lhbEluZGV4ID0gb3JpZ2luYWxTcGVjaWFs
SW5kZXg7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBiYWNrdHJhY2soKQorICAgICAgICB7CisgICAgICAgICAgICB3aGlsZSAobWF0Y2hl
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBxdWVyeUluZGV4LS07CisKKyAgICAgICAgICAg
ICAgICBsZXQgbGFzdE1hdGNoID0gbWF0Y2hlcy5wb3AoKTsKKyAgICAgICAgICAgICAgICBpZiAo
bGFzdE1hdGNoLnR5cGUgIT09IFdJLlF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsKQorICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGRlYWRCcmFuY2hlc1tsYXN0
TWF0Y2gucXVlcnlJbmRleF0gPSBsYXN0TWF0Y2guaW5kZXg7CisgICAgICAgICAgICAgICAgc2Vh
cmNoSW5kZXggPSBtYXRjaGVzLmxhc3RWYWx1ZSA/IG1hdGNoZXMubGFzdFZhbHVlLmluZGV4ICsg
MSA6IDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChxdWVy
eUluZGV4IDwgcXVlcnkubGVuZ3RoICYmIHNlYXJjaEluZGV4IDw9IHNlYXJjaFN0cmluZy5sZW5n
dGgpIHsKKyAgICAgICAgICAgIGlmICh0eXBlID09PSBXSS5RdWVyeU1hdGNoLlR5cGUuU3BlY2lh
bCAmJiAhbWF0Y2hOZXh0U3BlY2lhbENoYXJhY3RlcigpKQorICAgICAgICAgICAgICAgIHR5cGUg
PSBXSS5RdWVyeU1hdGNoLlR5cGUuTm9ybWFsOworCisgICAgICAgICAgICBpZiAodHlwZSA9PT0g
V0kuUXVlcnlNYXRjaC5UeXBlLk5vcm1hbCkgeworICAgICAgICAgICAgICAgIGxldCBpbmRleCA9
IHNlYXJjaFN0cmluZy5pbmRleE9mKHF1ZXJ5W3F1ZXJ5SW5kZXhdLCBzZWFyY2hJbmRleCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBkZWFkQnJhbmNoZXNbcXVl
cnlJbmRleF0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaE1hdGNoKGluZGV4KTsKKyAgICAg
ICAgICAgICAgICAgICAgdHlwZSA9IFdJLlF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsOworICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoIWJhY2t0cmFjaygpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gW107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocXVlcnlJ
bmRleCA8IHF1ZXJ5Lmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBbXTsKKworICAgICAgICBy
ZXR1cm4gbWF0Y2hlczsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXNvdXJj
ZVF1ZXJ5Q29udHJvbGxlci5qcwppbmRleCAzMzljMjQxNjRiOTRjZWYxODQ4YWU1YzEyMDg1ODMz
NmMzNzNmMjRhLi4yMzkzM2ZjZjZjNTljYzgyMjU3ZjE3ODMwOTc0MDg4Y2ZhYTIwNGE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9S
ZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qcwpAQCAtMjMs
NyArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJ
LlJlc291cmNlUXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKK1dJLlJlc291cmNlUXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVz
b3VyY2VRdWVyeUNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5RdWVyeUNvbnRyb2xsZXIKIHsKICAgICBj
b25zdHJ1Y3RvcigpCiAgICAgewpAQCAtNzMsNyArNzMsNyBAQCBXSS5SZXNvdXJjZVF1ZXJ5Q29u
dHJvbGxlciA9IGNsYXNzIFJlc291cmNlUXVlcnlDb250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgICAgICAgICAgY2FjaGVkRGF0YS5zcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyA9IHRo
aXMuX2ZpbmRTcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyhkaXNwbGF5TmFtZSk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIGxldCBtYXRjaGVzID0gdGhpcy5fZmluZFF1ZXJ5TWF0Y2hlcyhx
dWVyeSwgY2FjaGVkRGF0YS5zZWFyY2hTdHJpbmcsIGNhY2hlZERhdGEuc3BlY2lhbENoYXJhY3Rl
ckluZGljZXMpOworICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLmZpbmRRdWVyeU1hdGNo
ZXMocXVlcnksIGNhY2hlZERhdGEuc2VhcmNoU3RyaW5nLCBjYWNoZWREYXRhLnNwZWNpYWxDaGFy
YWN0ZXJJbmRpY2VzKTsKICAgICAgICAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCkKICAgICAgICAg
ICAgICAgICByZXN1bHRzLnB1c2gobmV3IFdJLlJlc291cmNlUXVlcnlSZXN1bHQocmVzb3VyY2Us
IG1hdGNoZXMsIGNvb2tpZSkpOwogICAgICAgICB9CkBAIC04OSw4NiArODksNiBAQCBXSS5SZXNv
dXJjZVF1ZXJ5Q29udHJvbGxlciA9IGNsYXNzIFJlc291cmNlUXVlcnlDb250cm9sbGVyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfZmluZFF1ZXJ5TWF0Y2hlcyhx
dWVyeSwgc2VhcmNoU3RyaW5nLCBzcGVjaWFsQ2hhcmFjdGVySW5kaWNlcykKLSAgICB7Ci0gICAg
ICAgIGlmIChxdWVyeS5sZW5ndGggPiBzZWFyY2hTdHJpbmcubGVuZ3RoKQotICAgICAgICAgICAg
cmV0dXJuIFtdOwotCi0gICAgICAgIGxldCBtYXRjaGVzID0gW107Ci0gICAgICAgIGxldCBxdWVy
eUluZGV4ID0gMDsKLSAgICAgICAgbGV0IHNlYXJjaEluZGV4ID0gMDsKLSAgICAgICAgbGV0IHNw
ZWNpYWxJbmRleCA9IDA7Ci0gICAgICAgIGxldCBkZWFkQnJhbmNoZXMgPSBuZXcgQXJyYXkocXVl
cnkubGVuZ3RoKS5maWxsKEluZmluaXR5KTsKLSAgICAgICAgbGV0IHR5cGUgPSBXSS5SZXNvdXJj
ZVF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsOwotCi0gICAgICAgIGZ1bmN0aW9uIHB1c2hNYXRjaChp
bmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKG5ldyBXSS5SZXNvdXJj
ZVF1ZXJ5TWF0Y2godHlwZSwgaW5kZXgsIHF1ZXJ5SW5kZXgpKTsKLSAgICAgICAgICAgIHNlYXJj
aEluZGV4ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgcXVlcnlJbmRleCsrOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gbWF0Y2hOZXh0U3BlY2lhbENoYXJhY3RlcigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChzcGVjaWFsSW5kZXggPj0gc3BlY2lhbENoYXJhY3RlckluZGlj
ZXMubGVuZ3RoKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
bGV0IG9yaWdpbmFsU3BlY2lhbEluZGV4ID0gc3BlY2lhbEluZGV4OwotICAgICAgICAgICAgd2hp
bGUgKHNwZWNpYWxJbmRleCA8IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzLmxlbmd0aCkgewotICAg
ICAgICAgICAgICAgIC8vIE5vcm1hbCBjaGFyYWN0ZXIgbWF0Y2hpbmcgY2FuIG1vdmUgcGFzdCBz
cGVjaWFsIGNoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgLy8gc28gYWR2YW5jZSB0aGUgc3Bl
Y2lhbCBjaGFyYWN0ZXIgaW5kZXggaWYgaXQncyBiZWZvcmUgdGhlCi0gICAgICAgICAgICAgICAg
Ly8gY3VycmVudCBzZWFyY2ggc3RyaW5nIHBvc2l0aW9uLgotICAgICAgICAgICAgICAgIGxldCBp
bmRleCA9IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzW3NwZWNpYWxJbmRleCsrXTsKLSAgICAgICAg
ICAgICAgICBpZiAoaW5kZXggPCBzZWFyY2hJbmRleCkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgICAgICBpZiAocXVlcnlbcXVlcnlJbmRleF0gPT09IHNlYXJj
aFN0cmluZ1tpbmRleF0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaE1hdGNoKGluZGV4KTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBzcGVjaWFsSW5kZXggPSBvcmlnaW5hbFNwZWNpYWxJ
bmRleDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1
bmN0aW9uIGJhY2t0cmFjaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlIChtYXRjaGVz
Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgIHF1ZXJ5SW5kZXgtLTsKLQotICAgICAgICAgICAg
ICAgIGxldCBsYXN0TWF0Y2ggPSBtYXRjaGVzLnBvcCgpOwotICAgICAgICAgICAgICAgIGlmIChs
YXN0TWF0Y2gudHlwZSAhPT0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuU3BlY2lhbCkKLSAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBkZWFkQnJhbmNo
ZXNbbGFzdE1hdGNoLnF1ZXJ5SW5kZXhdID0gbGFzdE1hdGNoLmluZGV4OwotICAgICAgICAgICAg
ICAgIHNlYXJjaEluZGV4ID0gbWF0Y2hlcy5sYXN0VmFsdWUgPyBtYXRjaGVzLmxhc3RWYWx1ZS5p
bmRleCArIDEgOiAwOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICB3aGls
ZSAocXVlcnlJbmRleCA8IHF1ZXJ5Lmxlbmd0aCAmJiBzZWFyY2hJbmRleCA8PSBzZWFyY2hTdHJp
bmcubGVuZ3RoKSB7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PT0gV0kuUmVzb3VyY2VRdWVyeU1h
dGNoLlR5cGUuU3BlY2lhbCAmJiAhbWF0Y2hOZXh0U3BlY2lhbENoYXJhY3RlcigpKQotICAgICAg
ICAgICAgICAgIHR5cGUgPSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5Ob3JtYWw7Ci0KLSAg
ICAgICAgICAgIGlmICh0eXBlID09PSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5Ob3JtYWwp
IHsKLSAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBzZWFyY2hTdHJpbmcuaW5kZXhPZihxdWVy
eVtxdWVyeUluZGV4XSwgc2VhcmNoSW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChpbmRleCA+
PSAwICYmIGluZGV4IDwgZGVhZEJyYW5jaGVzW3F1ZXJ5SW5kZXhdKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2hNYXRjaChpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBXSS5S
ZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIWJhY2t0cmFjaygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocXVlcnlJbmRleCA8IHF1ZXJ5Lmxlbmd0
aCkKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAgICByZXR1cm4gbWF0Y2hlczsKLSAg
ICB9Ci0KICAgICBfZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKHN0cmluZykKICAgICB7CiAg
ICAgICAgIGlmICghc3RyaW5nLmxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAppbmRleCBjZmNlMThkODNhOTU4MDA1MjgyMzcwYTU1NGRmYTZj
NmM4MmEyOTM1Li5mNDM1N2E0YmNjYmFmMDc5MjM5MzIwOTEzZDE0NzA2ZmQ0MTZmYmI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC00Njgs
NiArNDY4LDggQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eVBhdGguanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlQcmV2aWV3LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1F1ZXJ5TWF0Y2guanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUXVlcnlSZXN1bHQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9SZWNvcmRpbmdGcmFtZS5qcyI+PC9zY3JpcHQ+CkBAIC00NzYsNyArNDc4LDYgQEAK
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlZGlyZWN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNvcmQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VUaW1pbmdEYXRhLmpz
Ij48L3NjcmlwdD4KQEAgLTkyMyw2ICs5MjQsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9s
bGVycy9NZW1vcnlNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvTmV0d29ya01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9PdmVybGF5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IkNv
bnRyb2xsZXJzL1F1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0NTU1F1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9RdWVyeU1hdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1F1ZXJ5TWF0Y2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUxNWNjMzMxZDhlYzRkMjkyOWFiNDQ0MWJm
Zjc4OWQwZmRiY2NiMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9RdWVyeU1hdGNoLmpzCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitXSS5RdWVyeU1hdGNoID0gY2xhc3MgUXVlcnlNYXRjaAoreworICAgIGNvbnN0cnVj
dG9yKHR5cGUsIGluZGV4LCBxdWVyeUluZGV4KQorICAgIHsKKyAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7CisgICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7CisgICAgICAgIHRoaXMuX3F1ZXJ5
SW5kZXggPSBxdWVyeUluZGV4OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHR5
cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CisgICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhp
cy5faW5kZXg7IH0KKyAgICBnZXQgcXVlcnlJbmRleCgpIHsgcmV0dXJuIHRoaXMuX3F1ZXJ5SW5k
ZXg7IH0KK307CisKK1dJLlF1ZXJ5TWF0Y2guVHlwZSA9IHsKKyAgICBOb3JtYWw6IFN5bWJvbCgi
bm9ybWFsIiksCisgICAgU3BlY2lhbDogU3ltYm9sKCJzcGVjaWFsIikKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1bHQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlSZXN1
bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzE3MjFjZmM1NjRhM2E1NTczMzE5ZWJlYmM4NjQyNjE2OGU2ODBh
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9RdWVyeVJlc3VsdC5qcwpAQCAtMCwwICsxLDEyNyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJ
LlF1ZXJ5UmVzdWx0ID0gY2xhc3MgUXVlcnlSZXN1bHQKK3sKKyAgICBjb25zdHJ1Y3Rvcih2YWx1
ZSwgbWF0Y2hlcykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hdGNoZXMubGVuZ3Ro
LCAiUXVlcnkgbWF0Y2hlcyBsaXN0IGNhbid0IGJlIGVtcHR5LiIpOworCisgICAgICAgIHRoaXMu
X3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMuX21hdGNoZXMgPSBtYXRjaGVzOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4gdGhpcy5fdmFsdWU7
IH0KKworICAgIGdldCByYW5rKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yYW5rID09PSB1
bmRlZmluZWQpCisgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVSYW5rKCk7CisKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3Jhbms7CisgICAgfQorCisgICAgZ2V0IG1hdGNoaW5nVGV4dFJhbmdlcygp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuX21hdGNoaW5nVGV4dFJhbmdlcykKKyAgICAgICAg
ICAgIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlcyA9IHRoaXMuX2NyZWF0ZU1hdGNoaW5nVGV4dFJh
bmdlcygpOworCisgICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGluZ1RleHRSYW5nZXM7CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2NhbGN1bGF0ZVJhbmsoKQorICAgIHsKKyAgICAg
ICAgY29uc3Qgbm9ybWFsV2VpZ2h0ID0gMTA7CisgICAgICAgIGNvbnN0IGNvbnNlY3V0aXZlV2Vp
Z2h0ID0gNTsKKyAgICAgICAgY29uc3Qgc3BlY2lhbE11bHRpcGxpZXIgPSA1OworCisgICAgICAg
IGZ1bmN0aW9uIGdldE11bHRpcGxpZXIobWF0Y2gpIHsKKyAgICAgICAgICAgIGlmIChtYXRjaC50
eXBlID09PSBXSS5RdWVyeU1hdGNoLlR5cGUuU3BlY2lhbCkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3BlY2lhbE11bHRpcGxpZXI7CisKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fcmFuayA9IDA7CisKKyAgICAgICAgbGV0IHByZXZpb3VzTWF0Y2gg
PSBudWxsOworICAgICAgICBsZXQgY29uc2VjdXRpdmVNYXRjaFN0YXJ0ID0gbnVsbDsKKyAgICAg
ICAgZm9yIChsZXQgbWF0Y2ggb2YgdGhpcy5fbWF0Y2hlcykgeworICAgICAgICAgICAgdGhpcy5f
cmFuayArPSBub3JtYWxXZWlnaHQgKiBnZXRNdWx0aXBsaWVyKG1hdGNoKTsKKworICAgICAgICAg
ICAgbGV0IGNvbnNlY3V0aXZlID0gcHJldmlvdXNNYXRjaCAmJiBwcmV2aW91c01hdGNoLmluZGV4
ID09PSBtYXRjaC5pbmRleCAtIDE7CisgICAgICAgICAgICBpZiAoY29uc2VjdXRpdmUpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIWNvbnNlY3V0aXZlTWF0Y2hTdGFydCkKKyAgICAgICAgICAgICAg
ICAgICAgY29uc2VjdXRpdmVNYXRjaFN0YXJ0ID0gcHJldmlvdXNNYXRjaDsKKworICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBmaXJzdCBtYXRjaCBpbiB0aGlzIGNvbnNlY3V0aXZlIHNlcmllcyB3
YXMgYSBzcGVjaWFsIGNoYXJhY3RlciwgZ2l2ZSBhCisgICAgICAgICAgICAgICAgLy8gYm9udXMg
KG1vcmUgbGlrZWx5IHRvIG1hdGNoIGEgc3BlY2lmaWMgd29yZCBpbiB0aGUgdGV4dCkuICBPdGhl
cndpc2UsIG11bHRpcGx5CisgICAgICAgICAgICAgICAgLy8gYnkgdGhlIGN1cnJlbnQgbGVuZ3Ro
IG9mIHRoZSBjb25zZWN1dGl2ZSBzZXF1ZW5jZSAoZ2l2ZXMgcHJpb3JpdHkgdG8gZmV3ZXIKKyAg
ICAgICAgICAgICAgICAvLyBsb25nZXIgc2VxdWVuY2VzIGluc3RlYWQgb2YgbW9yZSBzaG9ydCBz
ZXF1ZW5jZXMpLgorICAgICAgICAgICAgICAgIHRoaXMuX3JhbmsgKz0gY29uc2VjdXRpdmVXZWln
aHQgKiBnZXRNdWx0aXBsaWVyKGNvbnNlY3V0aXZlTWF0Y2hTdGFydCkgKiAobWF0Y2guaW5kZXgg
LSBjb25zZWN1dGl2ZU1hdGNoU3RhcnQuaW5kZXgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChj
b25zZWN1dGl2ZU1hdGNoU3RhcnQpCisgICAgICAgICAgICAgICAgY29uc2VjdXRpdmVNYXRjaFN0
YXJ0ID0gbnVsbDsKKworICAgICAgICAgICAgcHJldmlvdXNNYXRjaCA9IG1hdGNoOworCisgICAg
ICAgICAgICAvLyBUaGUgbWF0Y2ggaW5kZXggaXMgZGVkdWN0ZWQgZnJvbSB0aGUgdG90YWwgcmFu
aywgc28gbWF0Y2hlcyB0aGF0IG9jY3VyIGNsb3NlciB0bworICAgICAgICAgICAgLy8gdGhlIGJl
Z2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSByYW5rZWQgaGlnaGVyLiAgSW5jcmVhc2UgdGhlIGFt
b3VudCBzdWJ0cmFjdGVkIGlmCisgICAgICAgICAgICAvLyB0aGUgbWF0Y2ggaXMgc3BlY2lhbCwg
c28gYXMgdG8gZmF2b3IgbWF0Y2hlcyB0b3dhcmRzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmlu
Zy4KKyAgICAgICAgICAgIGlmICghY29uc2VjdXRpdmUpCisgICAgICAgICAgICAgICAgdGhpcy5f
cmFuayAtPSBtYXRjaC5pbmRleCAqIGdldE11bHRpcGxpZXIobWF0Y2gpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcygpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuX21hdGNoZXMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisgICAg
ICAgIGxldCByYW5nZXMgPSBbXTsKKyAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSB0aGlzLl9tYXRj
aGVzWzBdLmluZGV4OworICAgICAgICBsZXQgZW5kSW5kZXggPSBzdGFydEluZGV4OworICAgICAg
ICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuX21hdGNoZXMubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgIGxldCBtYXRjaCA9IHRoaXMuX21hdGNoZXNbaV07CisKKyAgICAgICAgICAgIC8vIElu
Y3JlbWVudCBlbmRJbmRleCBmb3IgY29uc2VjdXRpdmUgbWF0Y2guCisgICAgICAgICAgICBpZiAo
bWF0Y2guaW5kZXggPT09IGVuZEluZGV4ICsgMSkgeworICAgICAgICAgICAgICAgIGVuZEluZGV4
Kys7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIEJlZ2luIGEgbmV3IHJhbmdlIHdoZW4gYSBnYXAgYmV0d2VlbiB0aGlzIG1hdGNoIGFu
ZCB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgZm91bmQuCisgICAgICAgICAgICByYW5nZXMucHVzaChu
ZXcgV0kuVGV4dFJhbmdlKDAsIHN0YXJ0SW5kZXgsIDAsIGVuZEluZGV4ICsgMSkpOworICAgICAg
ICAgICAgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4OworICAgICAgICAgICAgZW5kSW5kZXggPSBz
dGFydEluZGV4OworICAgICAgICB9CisKKyAgICAgICAgcmFuZ2VzLnB1c2gobmV3IFdJLlRleHRS
YW5nZSgwLCBzdGFydEluZGV4LCAwLCBlbmRJbmRleCArIDEpKTsKKyAgICAgICAgcmV0dXJuIHJh
bmdlczsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5TWF0Y2guanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMTQwZGE3MmFhMGE2M2Q0NGVmNDZkYjAwMGEwZGFkZGYz
Y2NkMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRj
aC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1XSS5SZXNv
dXJjZVF1ZXJ5TWF0Y2ggPSBjbGFzcyBSZXNvdXJjZVF1ZXJ5TWF0Y2gKLXsKLSAgICBjb25zdHJ1
Y3Rvcih0eXBlLCBpbmRleCwgcXVlcnlJbmRleCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3R5cGUg
PSB0eXBlOwotICAgICAgICB0aGlzLl9pbmRleCA9IGluZGV4OwotICAgICAgICB0aGlzLl9xdWVy
eUluZGV4ID0gcXVlcnlJbmRleDsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGdldCB0
eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQotICAgIGdldCBpbmRleCgpIHsgcmV0dXJuIHRo
aXMuX2luZGV4OyB9Ci0gICAgZ2V0IHF1ZXJ5SW5kZXgoKSB7IHJldHVybiB0aGlzLl9xdWVyeUlu
ZGV4OyB9Ci19OwotCi1XSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZSA9IHsKLSAgICBOb3JtYWw6
IFN5bWJvbCgibm9ybWFsIiksCi0gICAgU3BlY2lhbDogU3ltYm9sKCJzcGVjaWFsIikKLX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVz
b3VyY2VRdWVyeVJlc3VsdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzCmluZGV4IDAyMjliNzgwMDBkNGZjZDhlNWU0
ZWIxY2QzNjIzNjIyNTQ0ZDFkYTYuLjFmNTgzYzA1ZWQ5OTI2ZjJjMjUzODdiMjlkYmFmNGYyZWFh
YTBiYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzCkBAIC0yMywxMTUgKzIz
LDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuUmVz
b3VyY2VRdWVyeVJlc3VsdCA9IGNsYXNzIFJlc291cmNlUXVlcnlSZXN1bHQKK1dJLlJlc291cmNl
UXVlcnlSZXN1bHQgPSBjbGFzcyBSZXNvdXJjZVF1ZXJ5UmVzdWx0IGV4dGVuZHMgV0kuUXVlcnlS
ZXN1bHQKIHsKICAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSwgbWF0Y2hlcywgY29va2llKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobWF0Y2hlcy5sZW5ndGgsICJRdWVyeSBtYXRjaGVz
IGxpc3QgY2FuJ3QgYmUgZW1wdHkuIik7CisgICAgICAgIHN1cGVyKHJlc291cmNlLCBtYXRjaGVz
KTsKIAotICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOwotICAgICAgICB0aGlzLl9t
YXRjaGVzID0gbWF0Y2hlczsKICAgICAgICAgdGhpcy5fY29va2llID0gY29va2llIHx8IG51bGw7
CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgcmVzb3VyY2UoKSB7IHJldHVybiB0
aGlzLl9yZXNvdXJjZTsgfQorICAgIGdldCByZXNvdXJjZSgpIHsgcmV0dXJuIHRoaXMuX3ZhbHVl
OyB9CiAgICAgZ2V0IGNvb2tpZSgpIHsgcmV0dXJuIHRoaXMuX2Nvb2tpZTsgfQogCi0gICAgZ2V0
IHJhbmsoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JhbmsgPT09IHVuZGVmaW5lZCkKLSAg
ICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJhbmsoKTsKLQotICAgICAgICByZXR1cm4gdGhpcy5f
cmFuazsKLSAgICB9Ci0KLSAgICBnZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5fbWF0Y2hpbmdUZXh0UmFuZ2VzKQotICAgICAgICAgICAgdGhpcy5fbWF0
Y2hpbmdUZXh0UmFuZ2VzID0gdGhpcy5fY3JlYXRlTWF0Y2hpbmdUZXh0UmFuZ2VzKCk7Ci0KLSAg
ICAgICAgcmV0dXJuIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlczsKLSAgICB9Ci0KLSAgICAvLyBQ
cml2YXRlCi0KLSAgICBfY2FsY3VsYXRlUmFuaygpCi0gICAgewotICAgICAgICBjb25zdCBub3Jt
YWxXZWlnaHQgPSAxMDsKLSAgICAgICAgY29uc3QgY29uc2VjdXRpdmVXZWlnaHQgPSA1OwotICAg
ICAgICBjb25zdCBzcGVjaWFsTXVsdGlwbGllciA9IDU7Ci0KLSAgICAgICAgZnVuY3Rpb24gZ2V0
TXVsdGlwbGllcihtYXRjaCkgewotICAgICAgICAgICAgaWYgKG1hdGNoLnR5cGUgPT09IFdJLlJl
c291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNw
ZWNpYWxNdWx0aXBsaWVyOwotCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHRoaXMuX3JhbmsgPSAwOwotCi0gICAgICAgIGxldCBwcmV2aW91c01hdGNoID0gbnVs
bDsKLSAgICAgICAgbGV0IGNvbnNlY3V0aXZlTWF0Y2hTdGFydCA9IG51bGw7Ci0gICAgICAgIGZv
ciAobGV0IG1hdGNoIG9mIHRoaXMuX21hdGNoZXMpIHsKLSAgICAgICAgICAgIHRoaXMuX3Jhbmsg
Kz0gbm9ybWFsV2VpZ2h0ICogZ2V0TXVsdGlwbGllcihtYXRjaCk7Ci0KLSAgICAgICAgICAgIGxl
dCBjb25zZWN1dGl2ZSA9IHByZXZpb3VzTWF0Y2ggJiYgcHJldmlvdXNNYXRjaC5pbmRleCA9PT0g
bWF0Y2guaW5kZXggLSAxOwotICAgICAgICAgICAgaWYgKGNvbnNlY3V0aXZlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCFjb25zZWN1dGl2ZU1hdGNoU3RhcnQpCi0gICAgICAgICAgICAgICAgICAg
IGNvbnNlY3V0aXZlTWF0Y2hTdGFydCA9IHByZXZpb3VzTWF0Y2g7Ci0KLSAgICAgICAgICAgICAg
ICAvLyBJZiB0aGUgZmlyc3QgbWF0Y2ggaW4gdGhpcyBjb25zZWN1dGl2ZSBzZXJpZXMgd2FzIGEg
c3BlY2lhbCBjaGFyYWN0ZXIsIGdpdmUgYQotICAgICAgICAgICAgICAgIC8vIGJvbnVzIChtb3Jl
IGxpa2VseSB0byBtYXRjaCBhIHNwZWNpZmljIHdvcmQgaW4gdGhlIHRleHQpLiAgT3RoZXJ3aXNl
LCBtdWx0aXBseQotICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSBjdXJyZW50IGxlbmd0aCBvZiB0
aGUgY29uc2VjdXRpdmUgc2VxdWVuY2UgKGdpdmVzIHByaW9yaXR5IHRvIGZld2VyCi0gICAgICAg
ICAgICAgICAgLy8gbG9uZ2VyIHNlcXVlbmNlcyBpbnN0ZWFkIG9mIG1vcmUgc2hvcnQgc2VxdWVu
Y2VzKS4KLSAgICAgICAgICAgICAgICB0aGlzLl9yYW5rICs9IGNvbnNlY3V0aXZlV2VpZ2h0ICog
Z2V0TXVsdGlwbGllcihjb25zZWN1dGl2ZU1hdGNoU3RhcnQpICogKG1hdGNoLmluZGV4IC0gY29u
c2VjdXRpdmVNYXRjaFN0YXJ0LmluZGV4KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY29uc2Vj
dXRpdmVNYXRjaFN0YXJ0KQotICAgICAgICAgICAgICAgIGNvbnNlY3V0aXZlTWF0Y2hTdGFydCA9
IG51bGw7Ci0KLSAgICAgICAgICAgIHByZXZpb3VzTWF0Y2ggPSBtYXRjaDsKLQotICAgICAgICAg
ICAgLy8gVGhlIG1hdGNoIGluZGV4IGlzIGRlZHVjdGVkIGZyb20gdGhlIHRvdGFsIHJhbmssIHNv
IG1hdGNoZXMgdGhhdCBvY2N1ciBjbG9zZXIgdG8KLSAgICAgICAgICAgIC8vIHRoZSBiZWdpbm5p
bmcgb2YgdGhlIHN0cmluZyBhcmUgcmFua2VkIGhpZ2hlci4gIEluY3JlYXNlIHRoZSBhbW91bnQg
c3VidHJhY3RlZCBpZgotICAgICAgICAgICAgLy8gdGhlIG1hdGNoIGlzIHNwZWNpYWwsIHNvIGFz
IHRvIGZhdm9yIG1hdGNoZXMgdG93YXJkcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCi0g
ICAgICAgICAgICBpZiAoIWNvbnNlY3V0aXZlKQotICAgICAgICAgICAgICAgIHRoaXMuX3Jhbmsg
LT0gbWF0Y2guaW5kZXggKiBnZXRNdWx0aXBsaWVyKG1hdGNoKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIF9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl9tYXRjaGVzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAgICBs
ZXQgcmFuZ2VzID0gW107Ci0gICAgICAgIGxldCBzdGFydEluZGV4ID0gdGhpcy5fbWF0Y2hlc1sw
XS5pbmRleDsKLSAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDsKLSAgICAgICAgZm9y
IChsZXQgaSA9IDE7IGkgPCB0aGlzLl9tYXRjaGVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBsZXQgbWF0Y2ggPSB0aGlzLl9tYXRjaGVzW2ldOwotCi0gICAgICAgICAgICAvLyBJbmNyZW1l
bnQgZW5kSW5kZXggZm9yIGNvbnNlY3V0aXZlIG1hdGNoLgotICAgICAgICAgICAgaWYgKG1hdGNo
LmluZGV4ID09PSBlbmRJbmRleCArIDEpIHsKLSAgICAgICAgICAgICAgICBlbmRJbmRleCsrOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAv
LyBCZWdpbiBhIG5ldyByYW5nZSB3aGVuIGEgZ2FwIGJldHdlZW4gdGhpcyBtYXRjaCBhbmQgdGhl
IHByZXZpb3VzIG1hdGNoIGlzIGZvdW5kLgotICAgICAgICAgICAgcmFuZ2VzLnB1c2gobmV3IFdJ
LlRleHRSYW5nZSgwLCBzdGFydEluZGV4LCAwLCBlbmRJbmRleCArIDEpKTsKLSAgICAgICAgICAg
IHN0YXJ0SW5kZXggPSBtYXRjaC5pbmRleDsKLSAgICAgICAgICAgIGVuZEluZGV4ID0gc3RhcnRJ
bmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIHJhbmdlcy5wdXNoKG5ldyBXSS5UZXh0UmFuZ2Uo
MCwgc3RhcnRJbmRleCwgMCwgZW5kSW5kZXggKyAxKSk7Ci0gICAgICAgIHJldHVybiByYW5nZXM7
Ci0gICAgfQotCiAgICAgLy8gVGVzdGluZwogCiAgICAgX190ZXN0X2NyZWF0ZU1hdGNoZXNNYXNr
KCkKICAgICB7Ci0gICAgICAgIGxldCBmaWxlbmFtZSA9IHRoaXMuX3Jlc291cmNlLmRpc3BsYXlO
YW1lOworICAgICAgICBsZXQgZmlsZW5hbWUgPSB0aGlzLnJlc291cmNlLmRpc3BsYXlOYW1lOwog
ICAgICAgICBsZXQgbGFzdEluZGV4ID0gLTE7CiAgICAgICAgIGxldCByZXN1bHQgPSAiIjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDMx
NjIxZmY1NzVhMWY0M2M3ZWU2Y2RmOWJiM2EzNTJkMDFkMThkNWEuLjlhOWNhY2Y5NjY0NWY1YjRl
YjNlMzljNzZhNDk2YzM5YmRiOTk4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTE5Niw2ICsxOTYsOCBAQAogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9Qcm9wZXJ0eVByZXZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvUXVlcnlNYXRjaC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9R
dWVyeVJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZWNvcmRp
bmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nQWN0aW9u
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlY29yZGluZ0ZyYW1lLmpz
Ij48L3NjcmlwdD4KQEAgLTIwNCw3ICsyMDYsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
UmVkaXJlY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVuZGVyaW5n
RnJhbWVUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9SZXNvdXJjZUNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvUmVzb3VyY2VUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9SZXNvdXJjZVRpbWluZ0RhdGEuanMiPjwvc2NyaXB0PgpAQCAtMjY0LDYgKzI2
NSw3IEBACiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0xheWVyVHJlZU1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9NZW1vcnlNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTmV0d29ya01hbmFnZXIu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9RdWVyeUNvbnRyb2xs
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SdW50aW1lTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL1RhcmdldE1h
bmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9UaW1lbGlu
ZU1hbmFnZXIuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443815</attachid>
            <date>2021-11-10 07:06:43 -0800</date>
            <delta_ts>2021-11-11 08:16:23 -0800</delta_ts>
            <desc>Patch 1.1</desc>
            <filename>bug-231604-20211110160642.patch</filename>
            <type>text/plain</type>
            <size>29694</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDkyMTMyOTk3YTViNzUxMTk4NTQ4NzAzYjVmMTQ5
NTFiZDc1YTQwNzEuLmYwYTFiMzJkMmVjMzBiZGIxMjZmNjJiMGU1OGFjNTEwNjI3NTU3YTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTExLTEwICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IHJldXNhYmxlIGxvZ2ljIGZyb20gUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIsIFJl
c291cmNlUXVlcnlSZXN1bHQgYW5kIFJlc291cmNlUXVlcnlNYXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjA0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NDE2MDI4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBFeHRyYWN0IHJldXNhYmxlIGxvZ2ljIGZyb20gYFJlc291cmNlUXVlcnlDb250
cm9sbGVyYCBpbnRvIGEgZ2VuZXJpYyBgUXVlcnlDb250cm9sbGVyYAorICAgICAgICB0byBlbmFi
bGUgc3ViY2xhc3NpbmcgZm9yIG90aGVyIHNwZWNpYWxpemVkIHVzZSBjYXNlcy4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzOiBBZGRlZC4K
KyAgICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuZXhlY3V0ZVF1ZXJ5KToKKyAg
ICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0Y2hlcy5wdXNo
TWF0Y2gpOgorICAgICAgICAoV0kuUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5maW5kUXVlcnlN
YXRjaGVzLm1hdGNoTmV4dFNwZWNpYWxDaGFyYWN0ZXIpOgorICAgICAgICAoV0kuUXVlcnlDb250
cm9sbGVyLnByb3RvdHlwZS5maW5kUXVlcnlNYXRjaGVzLmJhY2t0cmFjayk6CisgICAgICAgIChX
SS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmZpbmRRdWVyeU1hdGNoZXMpOgorICAgICAgICAo
V0kuUXVlcnlDb250cm9sbGVyKToKKworICAgICAgICBLZWVwIG9ubHkgdGhlIHJldXNhYmxlIG1h
dGNoaW5nIGxvZ2ljIGluIGBRdWVyeUNvbnRyb2xsZXJgLgorICAgICAgICBTdWJjbGFzc2VzIGxp
a2UgYFJlc291cmNlUXVlcnlDb250cm9sbGVyYCBhcmUgcmVzcG9uc2libGUgZm9yIGFncmVnYXRp
bmcKKyAgICAgICAgdGhlIGRhdGEgdG8gYmUgcXVlcmllZCwgY3VzdG9taXphdGlvbiBmb3Igc3Bl
Y2lhbCBjaGFyYWN0ZXJzIGFuZCBzb3J0aW5nIHJlc3VsdHMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzOgorICAgICAgICAo
V0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmV4ZWN1dGVRdWVyeSk6CisgICAg
ICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuX2ZpbmRRdWVyeU1hdGNo
ZXMucHVzaE1hdGNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlDb250cm9s
bGVyLnByb3RvdHlwZS5fZmluZFF1ZXJ5TWF0Y2hlcy5tYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlw
ZS5fZmluZFF1ZXJ5TWF0Y2hlcy5iYWNrdHJhY2spOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVz
b3VyY2VRdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLl9maW5kUXVlcnlNYXRjaGVzKTogRGVsZXRl
ZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvUXVlcnlNYXRjaC5qczogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5TWF0Y2guanMuCisK
KyAgICAgICAgYFJlc291cmNlUXVlcnlNYXRjaGAgZG9lc24ndCBjb250YWluIGFueSByZXNvdXJj
ZS1zcGVjaWZpYyBsb2dpYy4gSXQgY2FuIGJlIGdlbmVyYWxpemVkIHRvIGBRdWVyeU1hdGNoYC4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0LmpzOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VR
dWVyeVJlc3VsdC5qcy4KKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0KToKKyAgICAgICAgKFdJLlF1
ZXJ5UmVzdWx0LnByb3RvdHlwZS5nZXQgdmFsdWUpOgorICAgICAgICAoV0kuUXVlcnlSZXN1bHQu
cHJvdG90eXBlLmdldCByYW5rKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0LnByb3RvdHlwZS5n
ZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0LnByb3RvdHlw
ZS5fY2FsY3VsYXRlUmFuay5nZXRNdWx0aXBsaWVyKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0
LnByb3RvdHlwZS5fY2FsY3VsYXRlUmFuayk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90
b3R5cGUuX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcyk6CisKKyAgICAgICAgQSBnZW5lcmljIGBR
dWVyeVJlc3VsdGAgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGBSZXNvdXJjZVF1ZXJ5UmVzdWx0YCBj
b250YWluaW5nCisgICAgICAgIHRoZSByZXVzYWJsZSBsb2dpYyBmb3IgcmFua2luZyByZXN1bHRz
IGFuZCBpZGVudGlmaW5nIG1hdGNoaW5nIHRleHQgcmFuZ2VzLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qczoKKyAgICAgICAgKFdJLlJlc291
cmNlUXVlcnlSZXN1bHQpOgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJlc3VsdC5wcm90b3R5
cGUuZ2V0IHJlc291cmNlKToKKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90
eXBlLl9fdGVzdF9jcmVhdGVNYXRjaGVzTWFzayk6CisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5
UmVzdWx0LnByb3RvdHlwZS5nZXQgcmFuayk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJj
ZVF1ZXJ5UmVzdWx0LnByb3RvdHlwZS5nZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90eXBlLl9jYWxjdWxhdGVSYW5r
LmdldE11bHRpcGxpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJlc3Vs
dC5wcm90b3R5cGUuX2NhbGN1bGF0ZVJhbmspOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3Vy
Y2VRdWVyeVJlc3VsdC5wcm90b3R5cGUuX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcyk6IERlbGV0
ZWQuCisKKyAgICAgICAgYFJlc291cmNlUXVlcnlSZXN1bHRgIGV4dGVuZHMgYFF1ZXJ5UmVzdWx0
YCB3aXRoIHJlc291cmNlLXNwZWNpZmMgbWVtYmVyczoKKyAgICAgICAgLSB0aGUgYGNvb2tpZWAg
cHJvcGVydHkgd2hpY2ggaG9sZHMgdGhlIG9wdGlvbmFsIGxpbmUgYW5kIGNvbHVtbiBpbmZvIHVz
ZWQgd2hlbiBqdW1waW5nIHRvIG1hdGNoZWQgZmlsZXMKKyAgICAgICAgLSB0aGUgYHJlc291cmNl
YCBwcm9wZXJ0eSB3aGljaCBtYXBzIHRvIHRoZSBnZW5lcmljIGBRdWVyeVJlc3VsdC52YWx1ZWA7
IHRoaXMgaXMgdXNlZCBpbiB0ZXN0cyBhbmQgd2hlbiBzb3J0aW5nIGluIGBSZXNvdXJjZVF1ZXJ5
Q29udHJvbGxlcmAKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC5odG1sOgorCiAyMDIx
LTExLTA5ICBSYXp2YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBZGQgc2NyaXB0IHRvIHVwZGF0ZSBDU1NEb2N1bWVudGF0aW9uLmpzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9RdWVyeUNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9RdWVyeUNvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ4OGMwOGMxYjIx
MTcyM2MxNmZiODE3N2MxMGRjNTc5MWMxMDgyMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1F1ZXJ5Q29udHJvbGxlci5q
cwpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlF1ZXJ5Q29udHJvbGxlciA9IGNs
YXNzIFF1ZXJ5Q29udHJvbGxlcgoreworICAgIC8vIFB1YmxpYworCisgICAgZXhlY3V0ZVF1ZXJ5
KHF1ZXJ5KQorICAgIHsKKyAgICAgICAgdGhyb3cgV0kuTm90SW1wbGVtZW50ZWRFcnJvci5zdWJj
bGFzc011c3RPdmVycmlkZSgpOworICAgIH0KKworICAgIGZpbmRRdWVyeU1hdGNoZXMocXVlcnks
IHNlYXJjaFN0cmluZywgc3BlY2lhbENoYXJhY3RlckluZGljZXMpCisgICAgeworICAgICAgICBp
ZiAocXVlcnkubGVuZ3RoID4gc2VhcmNoU3RyaW5nLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
biBbXTsKKworICAgICAgICBsZXQgbWF0Y2hlcyA9IFtdOworICAgICAgICBsZXQgcXVlcnlJbmRl
eCA9IDA7CisgICAgICAgIGxldCBzZWFyY2hJbmRleCA9IDA7CisgICAgICAgIGxldCBzcGVjaWFs
SW5kZXggPSAwOworICAgICAgICBsZXQgZGVhZEJyYW5jaGVzID0gKG5ldyBBcnJheShxdWVyeS5s
ZW5ndGgpKS5maWxsKEluZmluaXR5KTsKKyAgICAgICAgbGV0IHR5cGUgPSBXSS5RdWVyeU1hdGNo
LlR5cGUuU3BlY2lhbDsKKworICAgICAgICBmdW5jdGlvbiBwdXNoTWF0Y2goaW5kZXgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1hdGNoZXMucHVzaChuZXcgV0kuUXVlcnlNYXRjaCh0eXBlLCBp
bmRleCwgcXVlcnlJbmRleCkpOworICAgICAgICAgICAgc2VhcmNoSW5kZXggPSBpbmRleCArIDE7
CisgICAgICAgICAgICBxdWVyeUluZGV4Kys7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHNwZWNpYWxJbmRleCA+PSBzcGVjaWFsQ2hhcmFjdGVySW5kaWNlcy5sZW5ndGgpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBsZXQgb3JpZ2luYWxTcGVjaWFs
SW5kZXggPSBzcGVjaWFsSW5kZXg7CisgICAgICAgICAgICB3aGlsZSAoc3BlY2lhbEluZGV4IDwg
c3BlY2lhbENoYXJhY3RlckluZGljZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgLy8gTm9y
bWFsIGNoYXJhY3RlciBtYXRjaGluZyBjYW4gbW92ZSBwYXN0IHNwZWNpYWwgY2hhcmFjdGVycywK
KyAgICAgICAgICAgICAgICAvLyBzbyBhZHZhbmNlIHRoZSBzcGVjaWFsIGNoYXJhY3RlciBpbmRl
eCBpZiBpdCdzIGJlZm9yZSB0aGUKKyAgICAgICAgICAgICAgICAvLyBjdXJyZW50IHNlYXJjaCBz
dHJpbmcgcG9zaXRpb24uCisgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gc3BlY2lhbENoYXJh
Y3RlckluZGljZXNbc3BlY2lhbEluZGV4KytdOworICAgICAgICAgICAgICAgIGlmIChpbmRleCA8
IHNlYXJjaEluZGV4KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgICAgIGlmIChxdWVyeVtxdWVyeUluZGV4XSA9PT0gc2VhcmNoU3RyaW5nW2luZGV4XSkgewor
ICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2goaW5kZXgpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNwZWNpYWxJbmRleCA9IG9yaWdpbmFsU3BlY2lhbEluZGV4OworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYmFja3RyYWNrKCkK
KyAgICAgICAgeworICAgICAgICAgICAgd2hpbGUgKG1hdGNoZXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgcXVlcnlJbmRleC0tOworCisgICAgICAgICAgICAgICAgbGV0IGxhc3RNYXRjaCA9
IG1hdGNoZXMucG9wKCk7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RNYXRjaC50eXBlICE9PSBX
SS5RdWVyeU1hdGNoLlR5cGUuU3BlY2lhbCkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgICAgICBkZWFkQnJhbmNoZXNbbGFzdE1hdGNoLnF1ZXJ5SW5kZXhdID0g
bGFzdE1hdGNoLmluZGV4OworICAgICAgICAgICAgICAgIHNlYXJjaEluZGV4ID0gbWF0Y2hlcy5s
YXN0VmFsdWUgPyBtYXRjaGVzLmxhc3RWYWx1ZS5pbmRleCArIDEgOiAwOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAocXVlcnlJbmRleCA8IHF1ZXJ5Lmxlbmd0
aCAmJiBzZWFyY2hJbmRleCA8PSBzZWFyY2hTdHJpbmcubGVuZ3RoKSB7CisgICAgICAgICAgICBp
ZiAodHlwZSA9PT0gV0kuUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwgJiYgIW1hdGNoTmV4dFNwZWNp
YWxDaGFyYWN0ZXIoKSkKKyAgICAgICAgICAgICAgICB0eXBlID0gV0kuUXVlcnlNYXRjaC5UeXBl
Lk5vcm1hbDsKKworICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdJLlF1ZXJ5TWF0Y2guVHlwZS5O
b3JtYWwpIHsKKyAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBzZWFyY2hTdHJpbmcuaW5kZXhP
ZihxdWVyeVtxdWVyeUluZGV4XSwgc2VhcmNoSW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChp
bmRleCA+PSAwICYmIGluZGV4IDwgZGVhZEJyYW5jaGVzW3F1ZXJ5SW5kZXhdKSB7CisgICAgICAg
ICAgICAgICAgICAgIHB1c2hNYXRjaChpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHR5cGUg
PSBXSS5RdWVyeU1hdGNoLlR5cGUuU3BlY2lhbDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KCFiYWNrdHJhY2soKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgcmV0dXJuIG1hdGNoZXM7CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMK
aW5kZXggMzM5YzI0MTY0Yjk0Y2VmMTg0OGFlNWMxMjA4NTgzMzZjMzczZjI0YS4uMjM5MzNmY2Y2
YzU5Y2M4MjI1N2YxNzgzMDk3NDA4OGNmYWEyMDRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xs
ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIuanMKQEAgLTIzLDcgKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5SZXNvdXJjZVF1ZXJ5Q29udHJv
bGxlciA9IGNsYXNzIFJlc291cmNlUXVlcnlDb250cm9sbGVyIGV4dGVuZHMgV0kuT2JqZWN0CitX
SS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlciA9IGNsYXNzIFJlc291cmNlUXVlcnlDb250cm9sbGVy
IGV4dGVuZHMgV0kuUXVlcnlDb250cm9sbGVyCiB7CiAgICAgY29uc3RydWN0b3IoKQogICAgIHsK
QEAgLTczLDcgKzczLDcgQEAgV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgPSBjbGFzcyBSZXNv
dXJjZVF1ZXJ5Q29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIGNh
Y2hlZERhdGEuc3BlY2lhbENoYXJhY3RlckluZGljZXMgPSB0aGlzLl9maW5kU3BlY2lhbENoYXJh
Y3RlckluZGljZXMoZGlzcGxheU5hbWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBs
ZXQgbWF0Y2hlcyA9IHRoaXMuX2ZpbmRRdWVyeU1hdGNoZXMocXVlcnksIGNhY2hlZERhdGEuc2Vh
cmNoU3RyaW5nLCBjYWNoZWREYXRhLnNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKTsKKyAgICAgICAg
ICAgIGxldCBtYXRjaGVzID0gdGhpcy5maW5kUXVlcnlNYXRjaGVzKHF1ZXJ5LCBjYWNoZWREYXRh
LnNlYXJjaFN0cmluZywgY2FjaGVkRGF0YS5zcGVjaWFsQ2hhcmFjdGVySW5kaWNlcyk7CiAgICAg
ICAgICAgICBpZiAobWF0Y2hlcy5sZW5ndGgpCiAgICAgICAgICAgICAgICAgcmVzdWx0cy5wdXNo
KG5ldyBXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0KHJlc291cmNlLCBtYXRjaGVzLCBjb29raWUpKTsK
ICAgICAgICAgfQpAQCAtODksODYgKzg5LDYgQEAgV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIg
PSBjbGFzcyBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX2ZpbmRRdWVyeU1hdGNoZXMocXVlcnksIHNlYXJjaFN0cmluZywg
c3BlY2lhbENoYXJhY3RlckluZGljZXMpCi0gICAgewotICAgICAgICBpZiAocXVlcnkubGVuZ3Ro
ID4gc2VhcmNoU3RyaW5nLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQotICAgICAg
ICBsZXQgbWF0Y2hlcyA9IFtdOwotICAgICAgICBsZXQgcXVlcnlJbmRleCA9IDA7Ci0gICAgICAg
IGxldCBzZWFyY2hJbmRleCA9IDA7Ci0gICAgICAgIGxldCBzcGVjaWFsSW5kZXggPSAwOwotICAg
ICAgICBsZXQgZGVhZEJyYW5jaGVzID0gbmV3IEFycmF5KHF1ZXJ5Lmxlbmd0aCkuZmlsbChJbmZp
bml0eSk7Ci0gICAgICAgIGxldCB0eXBlID0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuU3Bl
Y2lhbDsKLQotICAgICAgICBmdW5jdGlvbiBwdXNoTWF0Y2goaW5kZXgpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIG1hdGNoZXMucHVzaChuZXcgV0kuUmVzb3VyY2VRdWVyeU1hdGNoKHR5cGUsIGlu
ZGV4LCBxdWVyeUluZGV4KSk7Ci0gICAgICAgICAgICBzZWFyY2hJbmRleCA9IGluZGV4ICsgMTsK
LSAgICAgICAgICAgIHF1ZXJ5SW5kZXgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IG1hdGNoTmV4dFNwZWNpYWxDaGFyYWN0ZXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
c3BlY2lhbEluZGV4ID49IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzLmxlbmd0aCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGxldCBvcmlnaW5hbFNwZWNpYWxJ
bmRleCA9IHNwZWNpYWxJbmRleDsKLSAgICAgICAgICAgIHdoaWxlIChzcGVjaWFsSW5kZXggPCBz
cGVjaWFsQ2hhcmFjdGVySW5kaWNlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAvLyBOb3Jt
YWwgY2hhcmFjdGVyIG1hdGNoaW5nIGNhbiBtb3ZlIHBhc3Qgc3BlY2lhbCBjaGFyYWN0ZXJzLAot
ICAgICAgICAgICAgICAgIC8vIHNvIGFkdmFuY2UgdGhlIHNwZWNpYWwgY2hhcmFjdGVyIGluZGV4
IGlmIGl0J3MgYmVmb3JlIHRoZQotICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgc2VhcmNoIHN0
cmluZyBwb3NpdGlvbi4KLSAgICAgICAgICAgICAgICBsZXQgaW5kZXggPSBzcGVjaWFsQ2hhcmFj
dGVySW5kaWNlc1tzcGVjaWFsSW5kZXgrK107Ci0gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwg
c2VhcmNoSW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICAgICAgaWYgKHF1ZXJ5W3F1ZXJ5SW5kZXhdID09PSBzZWFyY2hTdHJpbmdbaW5kZXhdKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHB1c2hNYXRjaChpbmRleCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgc3BlY2lhbEluZGV4ID0gb3JpZ2luYWxTcGVjaWFsSW5kZXg7Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBiYWNrdHJhY2soKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB3aGlsZSAobWF0Y2hlcy5sZW5ndGgpIHsKLSAgICAgICAg
ICAgICAgICBxdWVyeUluZGV4LS07Ci0KLSAgICAgICAgICAgICAgICBsZXQgbGFzdE1hdGNoID0g
bWF0Y2hlcy5wb3AoKTsKLSAgICAgICAgICAgICAgICBpZiAobGFzdE1hdGNoLnR5cGUgIT09IFdJ
LlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgZGVhZEJyYW5jaGVzW2xhc3RNYXRjaC5xdWVyeUlu
ZGV4XSA9IGxhc3RNYXRjaC5pbmRleDsKLSAgICAgICAgICAgICAgICBzZWFyY2hJbmRleCA9IG1h
dGNoZXMubGFzdFZhbHVlID8gbWF0Y2hlcy5sYXN0VmFsdWUuaW5kZXggKyAxIDogMDsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKHF1ZXJ5SW5kZXggPCBxdWVy
eS5sZW5ndGggJiYgc2VhcmNoSW5kZXggPD0gc2VhcmNoU3RyaW5nLmxlbmd0aCkgewotICAgICAg
ICAgICAgaWYgKHR5cGUgPT09IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwgJiYg
IW1hdGNoTmV4dFNwZWNpYWxDaGFyYWN0ZXIoKSkKLSAgICAgICAgICAgICAgICB0eXBlID0gV0ku
UmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuTm9ybWFsOwotCi0gICAgICAgICAgICBpZiAodHlwZSA9
PT0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5cGUuTm9ybWFsKSB7Ci0gICAgICAgICAgICAgICAg
bGV0IGluZGV4ID0gc2VhcmNoU3RyaW5nLmluZGV4T2YocXVlcnlbcXVlcnlJbmRleF0sIHNlYXJj
aEluZGV4KTsKLSAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGRlYWRC
cmFuY2hlc1txdWVyeUluZGV4XSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2goaW5k
ZXgpOwotICAgICAgICAgICAgICAgICAgICB0eXBlID0gV0kuUmVzb3VyY2VRdWVyeU1hdGNoLlR5
cGUuU3BlY2lhbDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFiYWNrdHJhY2soKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm4gW107Ci0KLSAgICAgICAgcmV0dXJuIG1hdGNoZXM7Ci0gICAgfQotCiAgICAgX2ZpbmRTcGVj
aWFsQ2hhcmFjdGVySW5kaWNlcyhzdHJpbmcpCiAgICAgewogICAgICAgICBpZiAoIXN0cmluZy5s
ZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
YWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
aW5kZXggY2ZjZTE4ZDgzYTk1ODAwNTI4MjM3MGE1NTRkZmE2YzZjODJhMjkzNS4uYjVlNzdjODE3
MDlhODYzZTg1Njk3OGYzODg3ZTcwY2IzMmIyODA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNDY4LDYgKzQ2OCw4IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eURlc2NyaXB0b3IuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlQYXRoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL1Byb3BlcnR5UHJldmlldy5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9RdWVyeU1hdGNoLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL1F1ZXJ5UmVzdWx0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jl
Y29yZGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZWNvcmRpbmdB
Y3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nRnJh
bWUuanMiPjwvc2NyaXB0PgpAQCAtNDc2LDcgKzQ3OCw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9SZWRpcmVjdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZW5k
ZXJpbmdGcmFtZVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9SZXNvdXJjZVF1ZXJ5TWF0Y2guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9SZXNvdXJjZVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltaW5nRGF0YS5qcyI+PC9zY3JpcHQ+CkBAIC05MjMs
NiArOTI0LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2Vy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvT3ZlcmxheU1hbmFn
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9RdWVyeUNvbnRy
b2xsZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9SZXNvdXJj
ZVF1ZXJ5Q29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL1J1bnRpbWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJv
bGxlcnMvVGFyZ2V0TWFuYWdlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlNYXRjaC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeU1hdGNoLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjFjOGM4MGI4MDFjZDQ2NjY1M2RmY2U3MTM4NjVmZjZhZmY2NGM2NTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUXVlcnlN
YXRjaC5qcwpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuUXVlcnlNYXRjaCA9IGNs
YXNzIFF1ZXJ5TWF0Y2gKK3sKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCBpbmRleCwgcXVlcnlJbmRl
eCkKKyAgICB7CisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9pbmRl
eCA9IGluZGV4OworICAgICAgICB0aGlzLl9xdWVyeUluZGV4ID0gcXVlcnlJbmRleDsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsg
fQorICAgIGdldCBpbmRleCgpIHsgcmV0dXJuIHRoaXMuX2luZGV4OyB9CisgICAgZ2V0IHF1ZXJ5
SW5kZXgoKSB7IHJldHVybiB0aGlzLl9xdWVyeUluZGV4OyB9Cit9OworCitXSS5RdWVyeU1hdGNo
LlR5cGUgPSB7CisgICAgTm9ybWFsOiBTeW1ib2woIm5vcm1hbCIpLAorICAgIFNwZWNpYWw6IFN5
bWJvbCgic3BlY2lhbCIpLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTcyMWNm
YzU2NGEzYTU1NzMzMTllYmViYzg2NDI2MTY4ZTY4MGFmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1F1ZXJ5UmVzdWx0LmpzCkBA
IC0wLDAgKzEsMTI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuUXVlcnlSZXN1bHQgPSBjbGFzcyBRdWVy
eVJlc3VsdAoreworICAgIGNvbnN0cnVjdG9yKHZhbHVlLCBtYXRjaGVzKQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQobWF0Y2hlcy5sZW5ndGgsICJRdWVyeSBtYXRjaGVzIGxpc3QgY2Fu
J3QgYmUgZW1wdHkuIik7CisKKyAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAg
dGhpcy5fbWF0Y2hlcyA9IG1hdGNoZXM7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBn
ZXQgdmFsdWUoKSB7IHJldHVybiB0aGlzLl92YWx1ZTsgfQorCisgICAgZ2V0IHJhbmsoKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX3JhbmsgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIHRo
aXMuX2NhbGN1bGF0ZVJhbmsoKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fcmFuazsKKyAgICB9
CisKKyAgICBnZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fbWF0Y2hpbmdUZXh0UmFuZ2VzKQorICAgICAgICAgICAgdGhpcy5fbWF0Y2hpbmdUZXh0UmFu
Z2VzID0gdGhpcy5fY3JlYXRlTWF0Y2hpbmdUZXh0UmFuZ2VzKCk7CisKKyAgICAgICAgcmV0dXJu
IHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlczsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfY2FsY3VsYXRlUmFuaygpCisgICAgeworICAgICAgICBjb25zdCBub3JtYWxXZWlnaHQgPSAx
MDsKKyAgICAgICAgY29uc3QgY29uc2VjdXRpdmVXZWlnaHQgPSA1OworICAgICAgICBjb25zdCBz
cGVjaWFsTXVsdGlwbGllciA9IDU7CisKKyAgICAgICAgZnVuY3Rpb24gZ2V0TXVsdGlwbGllciht
YXRjaCkgeworICAgICAgICAgICAgaWYgKG1hdGNoLnR5cGUgPT09IFdJLlF1ZXJ5TWF0Y2guVHlw
ZS5TcGVjaWFsKQorICAgICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsTXVsdGlwbGllcjsKKwor
ICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9yYW5rID0g
MDsKKworICAgICAgICBsZXQgcHJldmlvdXNNYXRjaCA9IG51bGw7CisgICAgICAgIGxldCBjb25z
ZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOworICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiB0aGlz
Ll9tYXRjaGVzKSB7CisgICAgICAgICAgICB0aGlzLl9yYW5rICs9IG5vcm1hbFdlaWdodCAqIGdl
dE11bHRpcGxpZXIobWF0Y2gpOworCisgICAgICAgICAgICBsZXQgY29uc2VjdXRpdmUgPSBwcmV2
aW91c01hdGNoICYmIHByZXZpb3VzTWF0Y2guaW5kZXggPT09IG1hdGNoLmluZGV4IC0gMTsKKyAg
ICAgICAgICAgIGlmIChjb25zZWN1dGl2ZSkgeworICAgICAgICAgICAgICAgIGlmICghY29uc2Vj
dXRpdmVNYXRjaFN0YXJ0KQorICAgICAgICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3Rh
cnQgPSBwcmV2aW91c01hdGNoOworCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IG1h
dGNoIGluIHRoaXMgY29uc2VjdXRpdmUgc2VyaWVzIHdhcyBhIHNwZWNpYWwgY2hhcmFjdGVyLCBn
aXZlIGEKKyAgICAgICAgICAgICAgICAvLyBib251cyAobW9yZSBsaWtlbHkgdG8gbWF0Y2ggYSBz
cGVjaWZpYyB3b3JkIGluIHRoZSB0ZXh0KS4gIE90aGVyd2lzZSwgbXVsdGlwbHkKKyAgICAgICAg
ICAgICAgICAvLyBieSB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIGNvbnNlY3V0aXZlIHNlcXVl
bmNlIChnaXZlcyBwcmlvcml0eSB0byBmZXdlcgorICAgICAgICAgICAgICAgIC8vIGxvbmdlciBz
ZXF1ZW5jZXMgaW5zdGVhZCBvZiBtb3JlIHNob3J0IHNlcXVlbmNlcykuCisgICAgICAgICAgICAg
ICAgdGhpcy5fcmFuayArPSBjb25zZWN1dGl2ZVdlaWdodCAqIGdldE11bHRpcGxpZXIoY29uc2Vj
dXRpdmVNYXRjaFN0YXJ0KSAqIChtYXRjaC5pbmRleCAtIGNvbnNlY3V0aXZlTWF0Y2hTdGFydC5p
bmRleCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnNlY3V0aXZlTWF0Y2hTdGFydCkKKyAg
ICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOworCisgICAgICAgICAg
ICBwcmV2aW91c01hdGNoID0gbWF0Y2g7CisKKyAgICAgICAgICAgIC8vIFRoZSBtYXRjaCBpbmRl
eCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB0b3RhbCByYW5rLCBzbyBtYXRjaGVzIHRoYXQgb2NjdXIg
Y2xvc2VyIHRvCisgICAgICAgICAgICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJl
IHJhbmtlZCBoaWdoZXIuICBJbmNyZWFzZSB0aGUgYW1vdW50IHN1YnRyYWN0ZWQgaWYKKyAgICAg
ICAgICAgIC8vIHRoZSBtYXRjaCBpcyBzcGVjaWFsLCBzbyBhcyB0byBmYXZvciBtYXRjaGVzIHRv
d2FyZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgICAgICAgICAgaWYgKCFjb25z
ZWN1dGl2ZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9yYW5rIC09IG1hdGNoLmluZGV4ICogZ2V0
TXVsdGlwbGllcihtYXRjaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfY3JlYXRlTWF0Y2hp
bmdUZXh0UmFuZ2VzKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fbWF0Y2hlcy5sZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgbGV0IHJhbmdlcyA9IFtdOworICAg
ICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuX21hdGNoZXNbMF0uaW5kZXg7CisgICAgICAgIGxl
dCBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhp
cy5fbWF0Y2hlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5f
bWF0Y2hlc1tpXTsKKworICAgICAgICAgICAgLy8gSW5jcmVtZW50IGVuZEluZGV4IGZvciBjb25z
ZWN1dGl2ZSBtYXRjaC4KKyAgICAgICAgICAgIGlmIChtYXRjaC5pbmRleCA9PT0gZW5kSW5kZXgg
KyAxKSB7CisgICAgICAgICAgICAgICAgZW5kSW5kZXgrKzsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgcmFuZ2Ug
d2hlbiBhIGdhcCBiZXR3ZWVuIHRoaXMgbWF0Y2ggYW5kIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBm
b3VuZC4KKyAgICAgICAgICAgIHJhbmdlcy5wdXNoKG5ldyBXSS5UZXh0UmFuZ2UoMCwgc3RhcnRJ
bmRleCwgMCwgZW5kSW5kZXggKyAxKSk7CisgICAgICAgICAgICBzdGFydEluZGV4ID0gbWF0Y2gu
aW5kZXg7CisgICAgICAgICAgICBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAgIH0KKwor
ICAgICAgICByYW5nZXMucHVzaChuZXcgV0kuVGV4dFJhbmdlKDAsIHN0YXJ0SW5kZXgsIDAsIGVu
ZEluZGV4ICsgMSkpOworICAgICAgICByZXR1cm4gcmFuZ2VzOworICAgIH0KK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VR
dWVyeU1hdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlUXVlcnlNYXRjaC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQx
NDBkYTcyYWEwYTYzZDQ0ZWY0NmRiMDAwYTBkYWRkZjNjY2QwMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzCisrKyAvZGV2L251bGwKQEAgLTEs
NDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLlJlc291cmNlUXVlcnlNYXRjaCA9IGNsYXNzIFJl
c291cmNlUXVlcnlNYXRjaAotewotICAgIGNvbnN0cnVjdG9yKHR5cGUsIGluZGV4LCBxdWVyeUlu
ZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgICAgIHRoaXMuX2lu
ZGV4ID0gaW5kZXg7Ci0gICAgICAgIHRoaXMuX3F1ZXJ5SW5kZXggPSBxdWVyeUluZGV4OwotICAg
IH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBl
OyB9Ci0gICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhpcy5faW5kZXg7IH0KLSAgICBnZXQgcXVl
cnlJbmRleCgpIHsgcmV0dXJuIHRoaXMuX3F1ZXJ5SW5kZXg7IH0KLX07Ci0KLVdJLlJlc291cmNl
UXVlcnlNYXRjaC5UeXBlID0gewotICAgIE5vcm1hbDogU3ltYm9sKCJub3JtYWwiKSwKLSAgICBT
cGVjaWFsOiBTeW1ib2woInNwZWNpYWwiKQotfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1
bHQuanMKaW5kZXggMDIyOWI3ODAwMGQ0ZmNkOGU1ZTRlYjFjZDM2MjM2MjI1NDRkMWRhNi4uNDY1
ZWNlYWQ4MjJkMTg1Njk3MDc3MzI5YWQzYzM3MDNkM2ZiYjg2MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291
cmNlUXVlcnlSZXN1bHQuanMKQEAgLTIzLDExNSArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0ID0gY2xhc3Mg
UmVzb3VyY2VRdWVyeVJlc3VsdAorV0kuUmVzb3VyY2VRdWVyeVJlc3VsdCA9IGNsYXNzIFJlc291
cmNlUXVlcnlSZXN1bHQgZXh0ZW5kcyBXSS5RdWVyeVJlc3VsdAogewogICAgIGNvbnN0cnVjdG9y
KHJlc291cmNlLCBtYXRjaGVzLCBjb29raWUpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2Vy
dChtYXRjaGVzLmxlbmd0aCwgIlF1ZXJ5IG1hdGNoZXMgbGlzdCBjYW4ndCBiZSBlbXB0eS4iKTsK
KyAgICAgICAgc3VwZXIocmVzb3VyY2UsIG1hdGNoZXMpOwogCi0gICAgICAgIHRoaXMuX3Jlc291
cmNlID0gcmVzb3VyY2U7Ci0gICAgICAgIHRoaXMuX21hdGNoZXMgPSBtYXRjaGVzOwogICAgICAg
ICB0aGlzLl9jb29raWUgPSBjb29raWUgfHwgbnVsbDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCByZXNvdXJjZSgpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlOyB9CisgICAgZ2V0
IHJlc291cmNlKCkgeyByZXR1cm4gdGhpcy52YWx1ZTsgfQogICAgIGdldCBjb29raWUoKSB7IHJl
dHVybiB0aGlzLl9jb29raWU7IH0KIAotICAgIGdldCByYW5rKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9yYW5rID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVS
YW5rKCk7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jhbms7Ci0gICAgfQotCi0gICAgZ2V0IG1h
dGNoaW5nVGV4dFJhbmdlcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX21hdGNoaW5nVGV4
dFJhbmdlcykKLSAgICAgICAgICAgIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlcyA9IHRoaXMuX2Ny
ZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcygpOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9tYXRjaGlu
Z1RleHRSYW5nZXM7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2NhbGN1bGF0ZVJh
bmsoKQotICAgIHsKLSAgICAgICAgY29uc3Qgbm9ybWFsV2VpZ2h0ID0gMTA7Ci0gICAgICAgIGNv
bnN0IGNvbnNlY3V0aXZlV2VpZ2h0ID0gNTsKLSAgICAgICAgY29uc3Qgc3BlY2lhbE11bHRpcGxp
ZXIgPSA1OwotCi0gICAgICAgIGZ1bmN0aW9uIGdldE11bHRpcGxpZXIobWF0Y2gpIHsKLSAgICAg
ICAgICAgIGlmIChtYXRjaC50eXBlID09PSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5TcGVj
aWFsKQotICAgICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsTXVsdGlwbGllcjsKLQotICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9yYW5rID0gMDsKLQot
ICAgICAgICBsZXQgcHJldmlvdXNNYXRjaCA9IG51bGw7Ci0gICAgICAgIGxldCBjb25zZWN1dGl2
ZU1hdGNoU3RhcnQgPSBudWxsOwotICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiB0aGlzLl9tYXRj
aGVzKSB7Ci0gICAgICAgICAgICB0aGlzLl9yYW5rICs9IG5vcm1hbFdlaWdodCAqIGdldE11bHRp
cGxpZXIobWF0Y2gpOwotCi0gICAgICAgICAgICBsZXQgY29uc2VjdXRpdmUgPSBwcmV2aW91c01h
dGNoICYmIHByZXZpb3VzTWF0Y2guaW5kZXggPT09IG1hdGNoLmluZGV4IC0gMTsKLSAgICAgICAg
ICAgIGlmIChjb25zZWN1dGl2ZSkgewotICAgICAgICAgICAgICAgIGlmICghY29uc2VjdXRpdmVN
YXRjaFN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBw
cmV2aW91c01hdGNoOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IG1hdGNoIGlu
IHRoaXMgY29uc2VjdXRpdmUgc2VyaWVzIHdhcyBhIHNwZWNpYWwgY2hhcmFjdGVyLCBnaXZlIGEK
LSAgICAgICAgICAgICAgICAvLyBib251cyAobW9yZSBsaWtlbHkgdG8gbWF0Y2ggYSBzcGVjaWZp
YyB3b3JkIGluIHRoZSB0ZXh0KS4gIE90aGVyd2lzZSwgbXVsdGlwbHkKLSAgICAgICAgICAgICAg
ICAvLyBieSB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIGNvbnNlY3V0aXZlIHNlcXVlbmNlIChn
aXZlcyBwcmlvcml0eSB0byBmZXdlcgotICAgICAgICAgICAgICAgIC8vIGxvbmdlciBzZXF1ZW5j
ZXMgaW5zdGVhZCBvZiBtb3JlIHNob3J0IHNlcXVlbmNlcykuCi0gICAgICAgICAgICAgICAgdGhp
cy5fcmFuayArPSBjb25zZWN1dGl2ZVdlaWdodCAqIGdldE11bHRpcGxpZXIoY29uc2VjdXRpdmVN
YXRjaFN0YXJ0KSAqIChtYXRjaC5pbmRleCAtIGNvbnNlY3V0aXZlTWF0Y2hTdGFydC5pbmRleCk7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnNlY3V0aXZlTWF0Y2hTdGFydCkKLSAgICAgICAg
ICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOwotCi0gICAgICAgICAgICBwcmV2
aW91c01hdGNoID0gbWF0Y2g7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBtYXRjaCBpbmRleCBpcyBk
ZWR1Y3RlZCBmcm9tIHRoZSB0b3RhbCByYW5rLCBzbyBtYXRjaGVzIHRoYXQgb2NjdXIgY2xvc2Vy
IHRvCi0gICAgICAgICAgICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHJhbmtl
ZCBoaWdoZXIuICBJbmNyZWFzZSB0aGUgYW1vdW50IHN1YnRyYWN0ZWQgaWYKLSAgICAgICAgICAg
IC8vIHRoZSBtYXRjaCBpcyBzcGVjaWFsLCBzbyBhcyB0byBmYXZvciBtYXRjaGVzIHRvd2FyZHMg
dGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKCFjb25zZWN1dGl2
ZSkKLSAgICAgICAgICAgICAgICB0aGlzLl9yYW5rIC09IG1hdGNoLmluZGV4ICogZ2V0TXVsdGlw
bGllcihtYXRjaCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfY3JlYXRlTWF0Y2hpbmdUZXh0
UmFuZ2VzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbWF0Y2hlcy5sZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4gW107Ci0KLSAgICAgICAgbGV0IHJhbmdlcyA9IFtdOwotICAgICAgICBs
ZXQgc3RhcnRJbmRleCA9IHRoaXMuX21hdGNoZXNbMF0uaW5kZXg7Ci0gICAgICAgIGxldCBlbmRJ
bmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5fbWF0
Y2hlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5fbWF0Y2hl
c1tpXTsKLQotICAgICAgICAgICAgLy8gSW5jcmVtZW50IGVuZEluZGV4IGZvciBjb25zZWN1dGl2
ZSBtYXRjaC4KLSAgICAgICAgICAgIGlmIChtYXRjaC5pbmRleCA9PT0gZW5kSW5kZXggKyAxKSB7
Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXgrKzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgcmFuZ2Ugd2hlbiBh
IGdhcCBiZXR3ZWVuIHRoaXMgbWF0Y2ggYW5kIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBmb3VuZC4K
LSAgICAgICAgICAgIHJhbmdlcy5wdXNoKG5ldyBXSS5UZXh0UmFuZ2UoMCwgc3RhcnRJbmRleCwg
MCwgZW5kSW5kZXggKyAxKSk7Ci0gICAgICAgICAgICBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXg7
Ci0gICAgICAgICAgICBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgICAgIH0KLQotICAgICAg
ICByYW5nZXMucHVzaChuZXcgV0kuVGV4dFJhbmdlKDAsIHN0YXJ0SW5kZXgsIDAsIGVuZEluZGV4
ICsgMSkpOwotICAgICAgICByZXR1cm4gcmFuZ2VzOwotICAgIH0KLQogICAgIC8vIFRlc3RpbmcK
IAogICAgIF9fdGVzdF9jcmVhdGVNYXRjaGVzTWFzaygpCiAgICAgewotICAgICAgICBsZXQgZmls
ZW5hbWUgPSB0aGlzLl9yZXNvdXJjZS5kaXNwbGF5TmFtZTsKKyAgICAgICAgbGV0IGZpbGVuYW1l
ID0gdGhpcy5yZXNvdXJjZS5kaXNwbGF5TmFtZTsKICAgICAgICAgbGV0IGxhc3RJbmRleCA9IC0x
OwogICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAzMTYyMWZmNTc1YTFmNDNjN2VlNmNkZjliYjNh
MzUyZDAxZDE4ZDVhLi45YTljYWNmOTY2NDVmNWI0ZWIzZTM5Yzc2YTQ5NmMzOWJkYjk5OGIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0x
OTYsNiArMTk2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Byb2ZpbGVOb2RlQ2FsbC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eURlc2NyaXB0b3Iu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlQcmV2aWV3Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1F1ZXJ5TWF0Y2guanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUXVlcnlSZXN1bHQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9SZWNvcmRpbmdGcmFtZS5qcyI+PC9zY3JpcHQ+CkBAIC0yMDQsNyArMjA2
LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlZGlyZWN0LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxpbmVSZWNv
cmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VUaW1pbmdE
YXRhLmpzIj48L3NjcmlwdD4KQEAgLTI2NCw2ICsyNjUsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJD
b250cm9sbGVycy9MYXllclRyZWVNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvTWVtb3J5TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL05ldHdvcmtNYW5hZ2VyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
IHNyYz0iQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iQ29udHJvbGxlcnMvUnVudGltZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJDb250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443947</attachid>
            <date>2021-11-11 08:16:27 -0800</date>
            <delta_ts>2021-11-11 09:57:22 -0800</delta_ts>
            <desc>Patch 1.2</desc>
            <filename>bug-231604-20211111171626.patch</filename>
            <type>text/plain</type>
            <size>29686</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDkyMTMyOTk3YTViNzUxMTk4NTQ4NzAzYjVmMTQ5
NTFiZDc1YTQwNzEuLjYwYzEzZmY0YjA1MzM3ZjgwYTNmMjFiMzg2YjY3MTMxMGVhMDY1MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTExLTEwICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IHJldXNhYmxlIGxvZ2ljIGZyb20gUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIsIFJl
c291cmNlUXVlcnlSZXN1bHQgYW5kIFJlc291cmNlUXVlcnlNYXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjA0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NDE2MDI4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgRXh0cmFjdCByZXVzYWJsZSBsb2dpYyBmcm9tIGBSZXNvdXJjZVF1ZXJ5Q29udHJv
bGxlcmAgaW50byBhIGdlbmVyaWMgYFF1ZXJ5Q29udHJvbGxlcmAKKyAgICAgICAgdG8gZW5hYmxl
IHN1YmNsYXNzaW5nIGZvciBvdGhlciBzcGVjaWFsaXplZCB1c2UgY2FzZXMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1F1ZXJ5Q29udHJvbGxlci5qczogQWRkZWQuCisg
ICAgICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmV4ZWN1dGVRdWVyeSk6CisgICAg
ICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmZpbmRRdWVyeU1hdGNoZXMucHVzaE1h
dGNoKToKKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0
Y2hlcy5tYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKToKKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJv
bGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0Y2hlcy5iYWNrdHJhY2spOgorICAgICAgICAoV0ku
UXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5maW5kUXVlcnlNYXRjaGVzKToKKyAgICAgICAgKFdJ
LlF1ZXJ5Q29udHJvbGxlcik6CisKKyAgICAgICAgS2VlcCBvbmx5IHRoZSByZXVzYWJsZSBtYXRj
aGluZyBsb2dpYyBpbiBgUXVlcnlDb250cm9sbGVyYC4KKyAgICAgICAgU3ViY2xhc3NlcyBsaWtl
IGBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxlcmAgYXJlIHJlc3BvbnNpYmxlIGZvciBhZ3JlZ2F0aW5n
CisgICAgICAgIHRoZSBkYXRhIHRvIGJlIHF1ZXJpZWQsIGN1c3RvbWl6YXRpb24gZm9yIHNwZWNp
YWwgY2hhcmFjdGVycyBhbmQgc29ydGluZyByZXN1bHRzLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJ
LlJlc291cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAg
ICAoV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLl9maW5kUXVlcnlNYXRjaGVz
LnB1c2hNYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxl
ci5wcm90b3R5cGUuX2ZpbmRRdWVyeU1hdGNoZXMubWF0Y2hOZXh0U3BlY2lhbENoYXJhY3Rlcik6
IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUu
X2ZpbmRRdWVyeU1hdGNoZXMuYmFja3RyYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291
cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5fZmluZFF1ZXJ5TWF0Y2hlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL1F1ZXJ5TWF0Y2guanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzLgorCisg
ICAgICAgIGBSZXNvdXJjZVF1ZXJ5TWF0Y2hgIGRvZXNuJ3QgY29udGFpbiBhbnkgcmVzb3VyY2Ut
c3BlY2lmaWMgbG9naWMuIEl0IGNhbiBiZSBnZW5lcmFsaXplZCB0byBgUXVlcnlNYXRjaGAuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qczogQ29waWVkIGZy
b20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVl
cnlSZXN1bHQuanMuCisgICAgICAgIChXSS5RdWVyeVJlc3VsdCk6CisgICAgICAgIChXSS5RdWVy
eVJlc3VsdC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0LnBy
b3RvdHlwZS5nZXQgcmFuayk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0
IG1hdGNoaW5nVGV4dFJhbmdlcyk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUu
X2NhbGN1bGF0ZVJhbmsuZ2V0TXVsdGlwbGllcik6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJhbmspOgorICAgICAgICAoV0kuUXVlcnlSZXN1bHQucHJvdG90
eXBlLl9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMpOgorCisgICAgICAgIEEgZ2VuZXJpYyBgUXVl
cnlSZXN1bHRgIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBgUmVzb3VyY2VRdWVyeVJlc3VsdGAgY29u
dGFpbmluZworICAgICAgICB0aGUgcmV1c2FibGUgbG9naWMgZm9yIHJhbmtpbmcgcmVzdWx0cyBh
bmQgaWRlbnRpZmluZyBtYXRjaGluZyB0ZXh0IHJhbmdlcy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanM6CisgICAgICAgIChXSS5SZXNvdXJj
ZVF1ZXJ5UmVzdWx0KToKKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90eXBl
LmdldCByZXNvdXJjZSk6CisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0LnByb3RvdHlw
ZS5fX3Rlc3RfY3JlYXRlTWF0Y2hlc01hc2spOgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJl
c3VsdC5wcm90b3R5cGUuZ2V0IHJhbmspOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VR
dWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNoaW5nVGV4dFJhbmdlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0LnByb3RvdHlwZS5fY2FsY3VsYXRlUmFuay5n
ZXRNdWx0aXBsaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQu
cHJvdG90eXBlLl9jYWxjdWxhdGVSYW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNl
UXVlcnlSZXN1bHQucHJvdG90eXBlLl9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMpOiBEZWxldGVk
LgorCisgICAgICAgIGBSZXNvdXJjZVF1ZXJ5UmVzdWx0YCBleHRlbmRzIGBRdWVyeVJlc3VsdGAg
d2l0aCByZXNvdXJjZS1zcGVjaWZjIG1lbWJlcnM6CisgICAgICAgIC0gdGhlIGBjb29raWVgIHBy
b3BlcnR5IHdoaWNoIGhvbGRzIHRoZSBvcHRpb25hbCBsaW5lIGFuZCBjb2x1bW4gaW5mbyB1c2Vk
IHdoZW4ganVtcGluZyB0byBtYXRjaGVkIGZpbGVzCisgICAgICAgIC0gdGhlIGByZXNvdXJjZWAg
cHJvcGVydHkgd2hpY2ggbWFwcyB0byB0aGUgZ2VuZXJpYyBgUXVlcnlSZXN1bHQudmFsdWVgOyB0
aGlzIGlzIHVzZWQgaW4gdGVzdHMgYW5kIHdoZW4gc29ydGluZyBpbiBgUmVzb3VyY2VRdWVyeUNv
bnRyb2xsZXJgCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKwogMjAyMS0x
MS0wOSAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQWRkIHNjcmlwdCB0byB1cGRhdGUgQ1NTRG9jdW1lbnRhdGlvbi5qcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
UXVlcnlDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZDFmYmJiMTUzMWI2
OWY0MGIxNGRhOTBjNTEyNDcyYjgzYzFiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9RdWVyeUNvbnRyb2xsZXIuanMK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5RdWVyeUNvbnRyb2xsZXIgPSBjbGFz
cyBRdWVyeUNvbnRyb2xsZXIKK3sKKyAgICAvLyBQdWJsaWMKKworICAgIGV4ZWN1dGVRdWVyeShx
dWVyeSkKKyAgICB7CisgICAgICAgIHRocm93IFdJLk5vdEltcGxlbWVudGVkRXJyb3Iuc3ViY2xh
c3NNdXN0T3ZlcnJpZGUoKTsKKyAgICB9CisKKyAgICBmaW5kUXVlcnlNYXRjaGVzKHF1ZXJ5LCBz
ZWFyY2hTdHJpbmcsIHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKQorICAgIHsKKyAgICAgICAgaWYg
KHF1ZXJ5Lmxlbmd0aCA+IHNlYXJjaFN0cmluZy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
W107CisKKyAgICAgICAgbGV0IG1hdGNoZXMgPSBbXTsKKyAgICAgICAgbGV0IHF1ZXJ5SW5kZXgg
PSAwOworICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSAwOworICAgICAgICBsZXQgc3BlY2lhbElu
ZGV4ID0gMDsKKyAgICAgICAgbGV0IGRlYWRCcmFuY2hlcyA9IChuZXcgQXJyYXkocXVlcnkubGVu
Z3RoKSkuZmlsbChJbmZpbml0eSk7CisgICAgICAgIGxldCB0eXBlID0gV0kuUXVlcnlNYXRjaC5U
eXBlLlNwZWNpYWw7CisKKyAgICAgICAgZnVuY3Rpb24gcHVzaE1hdGNoKGluZGV4KSB7CisgICAg
ICAgICAgICBtYXRjaGVzLnB1c2gobmV3IFdJLlF1ZXJ5TWF0Y2godHlwZSwgaW5kZXgsIHF1ZXJ5
SW5kZXgpKTsKKyAgICAgICAgICAgIHNlYXJjaEluZGV4ID0gaW5kZXggKyAxOworICAgICAgICAg
ICAgcXVlcnlJbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hOZXh0
U3BlY2lhbENoYXJhY3RlcigpIHsKKyAgICAgICAgICAgIGlmIChzcGVjaWFsSW5kZXggPj0gc3Bl
Y2lhbENoYXJhY3RlckluZGljZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgbGV0IG9yaWdpbmFsU3BlY2lhbEluZGV4ID0gc3BlY2lhbEluZGV4
OworICAgICAgICAgICAgd2hpbGUgKHNwZWNpYWxJbmRleCA8IHNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBjaGFyYWN0ZXIgbWF0Y2hp
bmcgY2FuIG1vdmUgcGFzdCBzcGVjaWFsIGNoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgLy8g
c28gYWR2YW5jZSB0aGUgc3BlY2lhbCBjaGFyYWN0ZXIgaW5kZXggaWYgaXQncyBiZWZvcmUgdGhl
CisgICAgICAgICAgICAgICAgLy8gY3VycmVudCBzZWFyY2ggc3RyaW5nIHBvc2l0aW9uLgorICAg
ICAgICAgICAgICAgIGxldCBpbmRleCA9IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzW3NwZWNpYWxJ
bmRleCsrXTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBzZWFyY2hJbmRleCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAocXVlcnlbcXVl
cnlJbmRleF0gPT09IHNlYXJjaFN0cmluZ1tpbmRleF0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaE1hdGNoKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzcGVjaWFsSW5kZXgg
PSBvcmlnaW5hbFNwZWNpYWxJbmRleDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGJhY2t0cmFjaygpIHsKKyAgICAgICAgICAgIHdoaWxl
IChtYXRjaGVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHF1ZXJ5SW5kZXgtLTsKKworICAg
ICAgICAgICAgICAgIGxldCBsYXN0TWF0Y2ggPSBtYXRjaGVzLnBvcCgpOworICAgICAgICAgICAg
ICAgIGlmIChsYXN0TWF0Y2gudHlwZSAhPT0gV0kuUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgZGVhZEJyYW5j
aGVzW2xhc3RNYXRjaC5xdWVyeUluZGV4XSA9IGxhc3RNYXRjaC5pbmRleDsKKyAgICAgICAgICAg
ICAgICBzZWFyY2hJbmRleCA9IG1hdGNoZXMubGFzdFZhbHVlID8gbWF0Y2hlcy5sYXN0VmFsdWUu
aW5kZXggKyAxIDogMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgd2hp
bGUgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5ndGggJiYgc2VhcmNoSW5kZXggPD0gc2VhcmNoU3Ry
aW5nLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdJLlF1ZXJ5TWF0Y2guVHlw
ZS5TcGVjaWFsICYmICFtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkpCisgICAgICAgICAgICAg
ICAgdHlwZSA9IFdJLlF1ZXJ5TWF0Y2guVHlwZS5Ob3JtYWw7CisKKyAgICAgICAgICAgIGlmICh0
eXBlID09PSBXSS5RdWVyeU1hdGNoLlR5cGUuTm9ybWFsKSB7CisgICAgICAgICAgICAgICAgbGV0
IGluZGV4ID0gc2VhcmNoU3RyaW5nLmluZGV4T2YocXVlcnlbcXVlcnlJbmRleF0sIHNlYXJjaElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGRlYWRCcmFu
Y2hlc1txdWVyeUluZGV4XSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2goaW5kZXgp
OworICAgICAgICAgICAgICAgICAgICB0eXBlID0gV0kuUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYmFja3RyYWNrKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChxdWVyeUluZGV4IDwgcXVlcnkubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisg
ICAgICAgIHJldHVybiBtYXRjaGVzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJv
bGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzCmluZGV4IDMzOWMyNDE2NGI5NGNlZjE4NDhhZTVj
MTIwODU4MzM2YzM3M2YyNGEuLjIzOTMzZmNmNmM1OWNjODIyNTdmMTc4MzA5NzQwODhjZmFhMjA0
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpz
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgPSBjbGFzcyBSZXNvdXJjZVF1ZXJ5Q29u
dHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAorV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgPSBj
bGFzcyBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxlciBleHRlbmRzIFdJLlF1ZXJ5Q29udHJvbGxlcgog
ewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CkBAIC03Myw3ICs3Myw3IEBAIFdJLlJlc291cmNl
UXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgICAgICAgICBjYWNoZWREYXRhLnNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzID0gdGhpcy5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKGRpc3BsYXlOYW1lKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLl9maW5kUXVlcnlN
YXRjaGVzKHF1ZXJ5LCBjYWNoZWREYXRhLnNlYXJjaFN0cmluZywgY2FjaGVkRGF0YS5zcGVjaWFs
Q2hhcmFjdGVySW5kaWNlcyk7CisgICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IHRoaXMuZmluZFF1
ZXJ5TWF0Y2hlcyhxdWVyeSwgY2FjaGVkRGF0YS5zZWFyY2hTdHJpbmcsIGNhY2hlZERhdGEuc3Bl
Y2lhbENoYXJhY3RlckluZGljZXMpOwogICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKQog
ICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgV0kuUmVzb3VyY2VRdWVyeVJlc3VsdChy
ZXNvdXJjZSwgbWF0Y2hlcywgY29va2llKSk7CiAgICAgICAgIH0KQEAgLTg5LDg2ICs4OSw2IEBA
IFdJLlJlc291cmNlUXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVzb3VyY2VRdWVyeUNvbnRyb2xs
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9maW5kUXVlcnlN
YXRjaGVzKHF1ZXJ5LCBzZWFyY2hTdHJpbmcsIHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKQotICAg
IHsKLSAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IHNlYXJjaFN0cmluZy5sZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4gW107Ci0KLSAgICAgICAgbGV0IG1hdGNoZXMgPSBbXTsKLSAgICAgICAg
bGV0IHF1ZXJ5SW5kZXggPSAwOwotICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSAwOwotICAgICAg
ICBsZXQgc3BlY2lhbEluZGV4ID0gMDsKLSAgICAgICAgbGV0IGRlYWRCcmFuY2hlcyA9IG5ldyBB
cnJheShxdWVyeS5sZW5ndGgpLmZpbGwoSW5maW5pdHkpOwotICAgICAgICBsZXQgdHlwZSA9IFdJ
LlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7Ci0KLSAgICAgICAgZnVuY3Rpb24gcHVz
aE1hdGNoKGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBtYXRjaGVzLnB1c2gobmV3IFdJ
LlJlc291cmNlUXVlcnlNYXRjaCh0eXBlLCBpbmRleCwgcXVlcnlJbmRleCkpOwotICAgICAgICAg
ICAgc2VhcmNoSW5kZXggPSBpbmRleCArIDE7Ci0gICAgICAgICAgICBxdWVyeUluZGV4Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKHNwZWNpYWxJbmRleCA+PSBzcGVjaWFsQ2hhcmFj
dGVySW5kaWNlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgICAgICBsZXQgb3JpZ2luYWxTcGVjaWFsSW5kZXggPSBzcGVjaWFsSW5kZXg7Ci0gICAgICAg
ICAgICB3aGlsZSAoc3BlY2lhbEluZGV4IDwgc3BlY2lhbENoYXJhY3RlckluZGljZXMubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTm9ybWFsIGNoYXJhY3RlciBtYXRjaGluZyBjYW4gbW92
ZSBwYXN0IHNwZWNpYWwgY2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAvLyBzbyBhZHZhbmNl
IHRoZSBzcGVjaWFsIGNoYXJhY3RlciBpbmRleCBpZiBpdCdzIGJlZm9yZSB0aGUKLSAgICAgICAg
ICAgICAgICAvLyBjdXJyZW50IHNlYXJjaCBzdHJpbmcgcG9zaXRpb24uCi0gICAgICAgICAgICAg
ICAgbGV0IGluZGV4ID0gc3BlY2lhbENoYXJhY3RlckluZGljZXNbc3BlY2lhbEluZGV4KytdOwot
ICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHNlYXJjaEluZGV4KQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGlmIChxdWVyeVtxdWVyeUluZGV4XSA9
PT0gc2VhcmNoU3RyaW5nW2luZGV4XSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2go
aW5kZXgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNwZWNpYWxJbmRleCA9IG9yaWdpbmFs
U3BlY2lhbEluZGV4OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gYmFja3RyYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUg
KG1hdGNoZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgcXVlcnlJbmRleC0tOwotCi0gICAg
ICAgICAgICAgICAgbGV0IGxhc3RNYXRjaCA9IG1hdGNoZXMucG9wKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxhc3RNYXRjaC50eXBlICE9PSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5TcGVj
aWFsKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGRl
YWRCcmFuY2hlc1tsYXN0TWF0Y2gucXVlcnlJbmRleF0gPSBsYXN0TWF0Y2guaW5kZXg7Ci0gICAg
ICAgICAgICAgICAgc2VhcmNoSW5kZXggPSBtYXRjaGVzLmxhc3RWYWx1ZSA/IG1hdGNoZXMubGFz
dFZhbHVlLmluZGV4ICsgMSA6IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHdoaWxlIChxdWVyeUluZGV4IDwgcXVlcnkubGVuZ3RoICYmIHNlYXJjaEluZGV4IDw9IHNl
YXJjaFN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0eXBlID09PSBXSS5SZXNvdXJj
ZVF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsICYmICFtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkp
Ci0gICAgICAgICAgICAgICAgdHlwZSA9IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLk5vcm1h
bDsKLQotICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBl
Lk5vcm1hbCkgewotICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHNlYXJjaFN0cmluZy5pbmRl
eE9mKHF1ZXJ5W3F1ZXJ5SW5kZXhdLCBzZWFyY2hJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGluZGV4ID49IDAgJiYgaW5kZXggPCBkZWFkQnJhbmNoZXNbcXVlcnlJbmRleF0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaE1hdGNoKGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgdHlw
ZSA9IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghYmFja3RyYWNrKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChxdWVyeUluZGV4IDwgcXVl
cnkubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFtdOwotCi0gICAgICAgIHJldHVybiBtYXRj
aGVzOwotICAgIH0KLQogICAgIF9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMoc3RyaW5nKQog
ICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGNmY2UxOGQ4M2E5NTgwMDUyODIzNzBh
NTU0ZGZhNmM2YzgyYTI5MzUuLjY2NGVhODFhNmQ5MjMxNDU3NTU0NzNiNjZjODRjNGM1NTJhMzgx
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
QEAgLTQ2OCw2ICs0NjgsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlEZXNj
cmlwdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Byb3BlcnR5UGF0
aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eVByZXZpZXcu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUXVlcnlNYXRjaC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9RdWVyeVJlc3VsdC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1JlY29yZGluZ0ZyYW1lLmpzIj48L3NjcmlwdD4KQEAgLTQ3Niw3ICs0
NzgsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVkaXJlY3QuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJl
Y29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVRpbWlu
Z0RhdGEuanMiPjwvc2NyaXB0PgpAQCAtODg3LDYgKzg4OCw3IEBACiAKICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
IAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BbmltYXRpb25NYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9RdWVyeU1hdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1F1ZXJ5TWF0Y2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UzMDZmZDdjNjlhZGRiYjlmNjE1ZmIx
YWNjODlhY2NiZTVmMDMwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeU1hdGNoLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5RdWVyeU1hdGNoID0gY2xhc3MgUXVlcnlNYXRjaAoreworICAgIGNvbnN0
cnVjdG9yKHR5cGUsIGluZGV4LCBxdWVyeUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5RdWVyeU1hdGNoLlR5cGUpLmluY2x1ZGVzKHR5cGUpLCB0
eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggPj0gMCwgaW5kZXgpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChxdWVyeUluZGV4ID49IDAsIHF1ZXJ5SW5kZXgpOworICAgICAgICB0
aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKKyAgICAgICAg
dGhpcy5fcXVlcnlJbmRleCA9IHF1ZXJ5SW5kZXg7CisgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgaW5kZXgoKSB7
IHJldHVybiB0aGlzLl9pbmRleDsgfQorICAgIGdldCBxdWVyeUluZGV4KCkgeyByZXR1cm4gdGhp
cy5fcXVlcnlJbmRleDsgfQorfTsKKworV0kuUXVlcnlNYXRjaC5UeXBlID0geworICAgIE5vcm1h
bDogU3ltYm9sKCJub3JtYWwiKSwKKyAgICBTcGVjaWFsOiBTeW1ib2woInNwZWNpYWwiKSwKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UXVlcnlSZXN1bHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUXVlcnlSZXN1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI3YzNjNDQzYjQ2ZWFiMzk1ZTE0M2VjYWU2
OTc3MzU1M2ExNWQxNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcwpAQCAtMCwwICsxLDEyNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLlF1ZXJ5UmVzdWx0ID0gY2xhc3MgUXVlcnlSZXN1bHQKK3sKKyAgICBjb25z
dHJ1Y3Rvcih2YWx1ZSwgbWF0Y2hlcykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1h
dGNoZXMubGVuZ3RoLCAiUXVlcnkgbWF0Y2hlcyBsaXN0IGNhbid0IGJlIGVtcHR5LiIpOworCisg
ICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMuX21hdGNoZXMgPSBtYXRj
aGVzOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4g
dGhpcy5fdmFsdWU7IH0KKworICAgIGdldCByYW5rKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Jh
bmsgPz89IHRoaXMuX2NhbGN1bGF0ZVJhbmsoKTsKKworICAgICAgICByZXR1cm4gdGhpcy5fcmFu
azsKKyAgICB9CisKKyAgICBnZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlcyA/Pz0gdGhpcy5fY3JlYXRlTWF0Y2hpbmdUZXh0UmFu
Z2VzKCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlczsKKyAgICB9
CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfY2FsY3VsYXRlUmFuaygpCisgICAgeworICAgICAg
ICBjb25zdCBub3JtYWxXZWlnaHQgPSAxMDsKKyAgICAgICAgY29uc3QgY29uc2VjdXRpdmVXZWln
aHQgPSA1OworICAgICAgICBjb25zdCBzcGVjaWFsTXVsdGlwbGllciA9IDU7CisKKyAgICAgICAg
ZnVuY3Rpb24gZ2V0TXVsdGlwbGllcihtYXRjaCkgeworICAgICAgICAgICAgaWYgKG1hdGNoLnR5
cGUgPT09IFdJLlF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsKQorICAgICAgICAgICAgICAgIHJldHVy
biBzcGVjaWFsTXVsdGlwbGllcjsKKworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0K
KworICAgICAgICB0aGlzLl9yYW5rID0gMDsKKworICAgICAgICBsZXQgcHJldmlvdXNNYXRjaCA9
IG51bGw7CisgICAgICAgIGxldCBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOworICAgICAg
ICBmb3IgKGxldCBtYXRjaCBvZiB0aGlzLl9tYXRjaGVzKSB7CisgICAgICAgICAgICB0aGlzLl9y
YW5rICs9IG5vcm1hbFdlaWdodCAqIGdldE11bHRpcGxpZXIobWF0Y2gpOworCisgICAgICAgICAg
ICBsZXQgY29uc2VjdXRpdmUgPSBwcmV2aW91c01hdGNoICYmIHByZXZpb3VzTWF0Y2guaW5kZXgg
PT09IG1hdGNoLmluZGV4IC0gMTsKKyAgICAgICAgICAgIGlmIChjb25zZWN1dGl2ZSkgeworICAg
ICAgICAgICAgICAgIGlmICghY29uc2VjdXRpdmVNYXRjaFN0YXJ0KQorICAgICAgICAgICAgICAg
ICAgICBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBwcmV2aW91c01hdGNoOworCisgICAgICAgICAg
ICAgICAgLy8gSWYgdGhlIGZpcnN0IG1hdGNoIGluIHRoaXMgY29uc2VjdXRpdmUgc2VyaWVzIHdh
cyBhIHNwZWNpYWwgY2hhcmFjdGVyLCBnaXZlIGEKKyAgICAgICAgICAgICAgICAvLyBib251cyAo
bW9yZSBsaWtlbHkgdG8gbWF0Y2ggYSBzcGVjaWZpYyB3b3JkIGluIHRoZSB0ZXh0KS4gIE90aGVy
d2lzZSwgbXVsdGlwbHkKKyAgICAgICAgICAgICAgICAvLyBieSB0aGUgY3VycmVudCBsZW5ndGgg
b2YgdGhlIGNvbnNlY3V0aXZlIHNlcXVlbmNlIChnaXZlcyBwcmlvcml0eSB0byBmZXdlcgorICAg
ICAgICAgICAgICAgIC8vIGxvbmdlciBzZXF1ZW5jZXMgaW5zdGVhZCBvZiBtb3JlIHNob3J0IHNl
cXVlbmNlcykuCisgICAgICAgICAgICAgICAgdGhpcy5fcmFuayArPSBjb25zZWN1dGl2ZVdlaWdo
dCAqIGdldE11bHRpcGxpZXIoY29uc2VjdXRpdmVNYXRjaFN0YXJ0KSAqIChtYXRjaC5pbmRleCAt
IGNvbnNlY3V0aXZlTWF0Y2hTdGFydC5pbmRleCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNv
bnNlY3V0aXZlTWF0Y2hTdGFydCkKKyAgICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3Rh
cnQgPSBudWxsOworCisgICAgICAgICAgICBwcmV2aW91c01hdGNoID0gbWF0Y2g7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBtYXRjaCBpbmRleCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB0b3RhbCByYW5r
LCBzbyBtYXRjaGVzIHRoYXQgb2NjdXIgY2xvc2VyIHRvCisgICAgICAgICAgICAvLyB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJlIHJhbmtlZCBoaWdoZXIuICBJbmNyZWFzZSB0aGUgYW1v
dW50IHN1YnRyYWN0ZWQgaWYKKyAgICAgICAgICAgIC8vIHRoZSBtYXRjaCBpcyBzcGVjaWFsLCBz
byBhcyB0byBmYXZvciBtYXRjaGVzIHRvd2FyZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5n
LgorICAgICAgICAgICAgaWYgKCFjb25zZWN1dGl2ZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9y
YW5rIC09IG1hdGNoLmluZGV4ICogZ2V0TXVsdGlwbGllcihtYXRjaCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBfY3JlYXRlTWF0Y2hpbmdUZXh0UmFuZ2VzKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fbWF0Y2hlcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gW107CisKKyAgICAg
ICAgbGV0IHJhbmdlcyA9IFtdOworICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuX21hdGNo
ZXNbMF0uaW5kZXg7CisgICAgICAgIGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7CisgICAgICAg
IGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5fbWF0Y2hlcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICAgICAgbGV0IG1hdGNoID0gdGhpcy5fbWF0Y2hlc1tpXTsKKworICAgICAgICAgICAgLy8gSW5j
cmVtZW50IGVuZEluZGV4IGZvciBjb25zZWN1dGl2ZSBtYXRjaC4KKyAgICAgICAgICAgIGlmICht
YXRjaC5pbmRleCA9PT0gZW5kSW5kZXggKyAxKSB7CisgICAgICAgICAgICAgICAgZW5kSW5kZXgr
KzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gQmVnaW4gYSBuZXcgcmFuZ2Ugd2hlbiBhIGdhcCBiZXR3ZWVuIHRoaXMgbWF0Y2ggYW5k
IHRoZSBwcmV2aW91cyBtYXRjaCBpcyBmb3VuZC4KKyAgICAgICAgICAgIHJhbmdlcy5wdXNoKG5l
dyBXSS5UZXh0UmFuZ2UoMCwgc3RhcnRJbmRleCwgMCwgZW5kSW5kZXggKyAxKSk7CisgICAgICAg
ICAgICBzdGFydEluZGV4ID0gbWF0Y2guaW5kZXg7CisgICAgICAgICAgICBlbmRJbmRleCA9IHN0
YXJ0SW5kZXg7CisgICAgICAgIH0KKworICAgICAgICByYW5nZXMucHVzaChuZXcgV0kuVGV4dFJh
bmdlKDAsIHN0YXJ0SW5kZXgsIDAsIGVuZEluZGV4ICsgMSkpOworICAgICAgICByZXR1cm4gcmFu
Z2VzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWQxNDBkYTcyYWEwYTYzZDQ0ZWY0NmRiMDAwYTBkYWRkZjNj
Y2QwMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNo
LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdJLlJlc291
cmNlUXVlcnlNYXRjaCA9IGNsYXNzIFJlc291cmNlUXVlcnlNYXRjaAotewotICAgIGNvbnN0cnVj
dG9yKHR5cGUsIGluZGV4LCBxdWVyeUluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7Ci0gICAgICAgIHRoaXMuX2luZGV4ID0gaW5kZXg7Ci0gICAgICAgIHRoaXMuX3F1ZXJ5
SW5kZXggPSBxdWVyeUluZGV4OwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgZ2V0IHR5
cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9Ci0gICAgZ2V0IGluZGV4KCkgeyByZXR1cm4gdGhp
cy5faW5kZXg7IH0KLSAgICBnZXQgcXVlcnlJbmRleCgpIHsgcmV0dXJuIHRoaXMuX3F1ZXJ5SW5k
ZXg7IH0KLX07Ci0KLVdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlID0gewotICAgIE5vcm1hbDog
U3ltYm9sKCJub3JtYWwiKSwKLSAgICBTcGVjaWFsOiBTeW1ib2woInNwZWNpYWwiKQotfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZVF1ZXJ5UmVzdWx0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanMKaW5kZXggMDIyOWI3ODAwMGQ0ZmNkOGU1ZTRl
YjFjZDM2MjM2MjI1NDRkMWRhNi4uYzc2NTk2MmM5ZTRhMzliNGM4M2Q1MjQzOGE4MWNkNzc3YzUx
YWNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanMKQEAgLTIzLDExNSArMjMs
MjYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5SZXNv
dXJjZVF1ZXJ5UmVzdWx0ID0gY2xhc3MgUmVzb3VyY2VRdWVyeVJlc3VsdAorV0kuUmVzb3VyY2VR
dWVyeVJlc3VsdCA9IGNsYXNzIFJlc291cmNlUXVlcnlSZXN1bHQgZXh0ZW5kcyBXSS5RdWVyeVJl
c3VsdAogewogICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCBtYXRjaGVzLCBjb29raWUpCiAgICAg
ewotICAgICAgICBjb25zb2xlLmFzc2VydChtYXRjaGVzLmxlbmd0aCwgIlF1ZXJ5IG1hdGNoZXMg
bGlzdCBjYW4ndCBiZSBlbXB0eS4iKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2Ug
aW5zdGFuY2VvZiBXSS5SZXNvdXJjZSwgcmVzb3VyY2UpOworICAgICAgICBzdXBlcihyZXNvdXJj
ZSwgbWF0Y2hlcyk7CiAKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKLSAgICAg
ICAgdGhpcy5fbWF0Y2hlcyA9IG1hdGNoZXM7CiAgICAgICAgIHRoaXMuX2Nvb2tpZSA9IGNvb2tp
ZSB8fCBudWxsOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IHJlc291cmNlKCkg
eyByZXR1cm4gdGhpcy5fcmVzb3VyY2U7IH0KKyAgICBnZXQgcmVzb3VyY2UoKSB7IHJldHVybiB0
aGlzLnZhbHVlOyB9CiAgICAgZ2V0IGNvb2tpZSgpIHsgcmV0dXJuIHRoaXMuX2Nvb2tpZTsgfQog
Ci0gICAgZ2V0IHJhbmsoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3JhbmsgPT09IHVuZGVm
aW5lZCkKLSAgICAgICAgICAgIHRoaXMuX2NhbGN1bGF0ZVJhbmsoKTsKLQotICAgICAgICByZXR1
cm4gdGhpcy5fcmFuazsKLSAgICB9Ci0KLSAgICBnZXQgbWF0Y2hpbmdUZXh0UmFuZ2VzKCkKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fbWF0Y2hpbmdUZXh0UmFuZ2VzKQotICAgICAgICAgICAg
dGhpcy5fbWF0Y2hpbmdUZXh0UmFuZ2VzID0gdGhpcy5fY3JlYXRlTWF0Y2hpbmdUZXh0UmFuZ2Vz
KCk7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlczsKLSAgICB9Ci0K
LSAgICAvLyBQcml2YXRlCi0KLSAgICBfY2FsY3VsYXRlUmFuaygpCi0gICAgewotICAgICAgICBj
b25zdCBub3JtYWxXZWlnaHQgPSAxMDsKLSAgICAgICAgY29uc3QgY29uc2VjdXRpdmVXZWlnaHQg
PSA1OwotICAgICAgICBjb25zdCBzcGVjaWFsTXVsdGlwbGllciA9IDU7Ci0KLSAgICAgICAgZnVu
Y3Rpb24gZ2V0TXVsdGlwbGllcihtYXRjaCkgewotICAgICAgICAgICAgaWYgKG1hdGNoLnR5cGUg
PT09IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHNwZWNpYWxNdWx0aXBsaWVyOwotCi0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX3JhbmsgPSAwOwotCi0gICAgICAgIGxldCBwcmV2aW91c01h
dGNoID0gbnVsbDsKLSAgICAgICAgbGV0IGNvbnNlY3V0aXZlTWF0Y2hTdGFydCA9IG51bGw7Ci0g
ICAgICAgIGZvciAobGV0IG1hdGNoIG9mIHRoaXMuX21hdGNoZXMpIHsKLSAgICAgICAgICAgIHRo
aXMuX3JhbmsgKz0gbm9ybWFsV2VpZ2h0ICogZ2V0TXVsdGlwbGllcihtYXRjaCk7Ci0KLSAgICAg
ICAgICAgIGxldCBjb25zZWN1dGl2ZSA9IHByZXZpb3VzTWF0Y2ggJiYgcHJldmlvdXNNYXRjaC5p
bmRleCA9PT0gbWF0Y2guaW5kZXggLSAxOwotICAgICAgICAgICAgaWYgKGNvbnNlY3V0aXZlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zZWN1dGl2ZU1hdGNoU3RhcnQpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbnNlY3V0aXZlTWF0Y2hTdGFydCA9IHByZXZpb3VzTWF0Y2g7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgbWF0Y2ggaW4gdGhpcyBjb25zZWN1dGl2ZSBzZXJp
ZXMgd2FzIGEgc3BlY2lhbCBjaGFyYWN0ZXIsIGdpdmUgYQotICAgICAgICAgICAgICAgIC8vIGJv
bnVzIChtb3JlIGxpa2VseSB0byBtYXRjaCBhIHNwZWNpZmljIHdvcmQgaW4gdGhlIHRleHQpLiAg
T3RoZXJ3aXNlLCBtdWx0aXBseQotICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSBjdXJyZW50IGxl
bmd0aCBvZiB0aGUgY29uc2VjdXRpdmUgc2VxdWVuY2UgKGdpdmVzIHByaW9yaXR5IHRvIGZld2Vy
Ci0gICAgICAgICAgICAgICAgLy8gbG9uZ2VyIHNlcXVlbmNlcyBpbnN0ZWFkIG9mIG1vcmUgc2hv
cnQgc2VxdWVuY2VzKS4KLSAgICAgICAgICAgICAgICB0aGlzLl9yYW5rICs9IGNvbnNlY3V0aXZl
V2VpZ2h0ICogZ2V0TXVsdGlwbGllcihjb25zZWN1dGl2ZU1hdGNoU3RhcnQpICogKG1hdGNoLmlu
ZGV4IC0gY29uc2VjdXRpdmVNYXRjaFN0YXJ0LmluZGV4KTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY29uc2VjdXRpdmVNYXRjaFN0YXJ0KQotICAgICAgICAgICAgICAgIGNvbnNlY3V0aXZlTWF0
Y2hTdGFydCA9IG51bGw7Ci0KLSAgICAgICAgICAgIHByZXZpb3VzTWF0Y2ggPSBtYXRjaDsKLQot
ICAgICAgICAgICAgLy8gVGhlIG1hdGNoIGluZGV4IGlzIGRlZHVjdGVkIGZyb20gdGhlIHRvdGFs
IHJhbmssIHNvIG1hdGNoZXMgdGhhdCBvY2N1ciBjbG9zZXIgdG8KLSAgICAgICAgICAgIC8vIHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBhcmUgcmFua2VkIGhpZ2hlci4gIEluY3JlYXNlIHRo
ZSBhbW91bnQgc3VidHJhY3RlZCBpZgotICAgICAgICAgICAgLy8gdGhlIG1hdGNoIGlzIHNwZWNp
YWwsIHNvIGFzIHRvIGZhdm9yIG1hdGNoZXMgdG93YXJkcyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBz
dHJpbmcuCi0gICAgICAgICAgICBpZiAoIWNvbnNlY3V0aXZlKQotICAgICAgICAgICAgICAgIHRo
aXMuX3JhbmsgLT0gbWF0Y2guaW5kZXggKiBnZXRNdWx0aXBsaWVyKG1hdGNoKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIF9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMoKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9tYXRjaGVzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybiBbXTsKLQot
ICAgICAgICBsZXQgcmFuZ2VzID0gW107Ci0gICAgICAgIGxldCBzdGFydEluZGV4ID0gdGhpcy5f
bWF0Y2hlc1swXS5pbmRleDsKLSAgICAgICAgbGV0IGVuZEluZGV4ID0gc3RhcnRJbmRleDsKLSAg
ICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLl9tYXRjaGVzLmxlbmd0aDsgKytpKSB7Ci0g
ICAgICAgICAgICBsZXQgbWF0Y2ggPSB0aGlzLl9tYXRjaGVzW2ldOwotCi0gICAgICAgICAgICAv
LyBJbmNyZW1lbnQgZW5kSW5kZXggZm9yIGNvbnNlY3V0aXZlIG1hdGNoLgotICAgICAgICAgICAg
aWYgKG1hdGNoLmluZGV4ID09PSBlbmRJbmRleCArIDEpIHsKLSAgICAgICAgICAgICAgICBlbmRJ
bmRleCsrOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAvLyBCZWdpbiBhIG5ldyByYW5nZSB3aGVuIGEgZ2FwIGJldHdlZW4gdGhpcyBtYXRj
aCBhbmQgdGhlIHByZXZpb3VzIG1hdGNoIGlzIGZvdW5kLgotICAgICAgICAgICAgcmFuZ2VzLnB1
c2gobmV3IFdJLlRleHRSYW5nZSgwLCBzdGFydEluZGV4LCAwLCBlbmRJbmRleCArIDEpKTsKLSAg
ICAgICAgICAgIHN0YXJ0SW5kZXggPSBtYXRjaC5pbmRleDsKLSAgICAgICAgICAgIGVuZEluZGV4
ID0gc3RhcnRJbmRleDsKLSAgICAgICAgfQotCi0gICAgICAgIHJhbmdlcy5wdXNoKG5ldyBXSS5U
ZXh0UmFuZ2UoMCwgc3RhcnRJbmRleCwgMCwgZW5kSW5kZXggKyAxKSk7Ci0gICAgICAgIHJldHVy
biByYW5nZXM7Ci0gICAgfQotCiAgICAgLy8gVGVzdGluZwogCiAgICAgX190ZXN0X2NyZWF0ZU1h
dGNoZXNNYXNrKCkKICAgICB7Ci0gICAgICAgIGxldCBmaWxlbmFtZSA9IHRoaXMuX3Jlc291cmNl
LmRpc3BsYXlOYW1lOworICAgICAgICBsZXQgZmlsZW5hbWUgPSB0aGlzLnJlc291cmNlLmRpc3Bs
YXlOYW1lOwogICAgICAgICBsZXQgbGFzdEluZGV4ID0gLTE7CiAgICAgICAgIGxldCByZXN1bHQg
PSAiIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CmluZGV4IDMxNjIxZmY1NzVhMWY0M2M3ZWU2Y2RmOWJiM2EzNTJkMDFkMThkNWEuLmMzMDBiYzBj
OTc4ZTI2MDcxNWE4ODg1ZmY4YjIwMzU4MjNjY2M4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTE5Niw2ICsxOTYsOCBAQAogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvUHJvZmlsZU5vZGVDYWxsLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1Byb3BlcnR5RGVzY3JpcHRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eVByZXZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvUXVlcnlNYXRjaC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9RdWVyeVJlc3VsdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9SZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVjb3Jk
aW5nQWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlY29yZGlu
Z0ZyYW1lLmpzIj48L3NjcmlwdD4KQEAgLTIwNCw3ICsyMDYsNiBAQAogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvUmVkaXJlY3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
UmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVRpbWluZ0RhdGEuanMiPjwvc2NyaXB0PgpAQCAt
MjQ0LDYgKzI0NSw4IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3hpZXMvSGVhcFNuYXBzaG90UHJv
eHkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm94aWVzL0hlYXBTbmFwc2hvdFdv
cmtlclByb3h5LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9R
dWVyeUNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0FuaW1hdGlvbk1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9BdWRpdE1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250
cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443961</attachid>
            <date>2021-11-11 09:57:25 -0800</date>
            <delta_ts>2021-11-12 02:54:14 -0800</delta_ts>
            <desc>Patch 1.3</desc>
            <filename>bug-231604-20211111185724.patch</filename>
            <type>text/plain</type>
            <size>29714</size>
            <attacher name="Razvan Caliman">rcaliman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDkyMTMyOTk3YTViNzUxMTk4NTQ4NzAzYjVmMTQ5
NTFiZDc1YTQwNzEuLjYwYzEzZmY0YjA1MzM3ZjgwYTNmMjFiMzg2YjY3MTMxMGVhMDY1MGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIxLTExLTEwICBSYXp2
YW4gQ2FsaW1hbiAgPHJjYWxpbWFuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBFeHRyYWN0IHJldXNhYmxlIGxvZ2ljIGZyb20gUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIsIFJl
c291cmNlUXVlcnlSZXN1bHQgYW5kIFJlc291cmNlUXVlcnlNYXRjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNjA0CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS84NDE2MDI4MT4KKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisK
KyAgICAgICAgRXh0cmFjdCByZXVzYWJsZSBsb2dpYyBmcm9tIGBSZXNvdXJjZVF1ZXJ5Q29udHJv
bGxlcmAgaW50byBhIGdlbmVyaWMgYFF1ZXJ5Q29udHJvbGxlcmAKKyAgICAgICAgdG8gZW5hYmxl
IHN1YmNsYXNzaW5nIGZvciBvdGhlciBzcGVjaWFsaXplZCB1c2UgY2FzZXMuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1F1ZXJ5Q29udHJvbGxlci5qczogQWRkZWQuCisg
ICAgICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmV4ZWN1dGVRdWVyeSk6CisgICAg
ICAgIChXSS5RdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLmZpbmRRdWVyeU1hdGNoZXMucHVzaE1h
dGNoKToKKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0
Y2hlcy5tYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKToKKyAgICAgICAgKFdJLlF1ZXJ5Q29udHJv
bGxlci5wcm90b3R5cGUuZmluZFF1ZXJ5TWF0Y2hlcy5iYWNrdHJhY2spOgorICAgICAgICAoV0ku
UXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5maW5kUXVlcnlNYXRjaGVzKToKKyAgICAgICAgKFdJ
LlF1ZXJ5Q29udHJvbGxlcik6CisKKyAgICAgICAgS2VlcCBvbmx5IHRoZSByZXVzYWJsZSBtYXRj
aGluZyBsb2dpYyBpbiBgUXVlcnlDb250cm9sbGVyYC4KKyAgICAgICAgU3ViY2xhc3NlcyBsaWtl
IGBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxlcmAgYXJlIHJlc3BvbnNpYmxlIGZvciBhZ3JlZ2F0aW5n
CisgICAgICAgIHRoZSBkYXRhIHRvIGJlIHF1ZXJpZWQsIGN1c3RvbWl6YXRpb24gZm9yIHNwZWNp
YWwgY2hhcmFjdGVycyBhbmQgc29ydGluZyByZXN1bHRzLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJ
LlJlc291cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5leGVjdXRlUXVlcnkpOgorICAgICAg
ICAoV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIucHJvdG90eXBlLl9maW5kUXVlcnlNYXRjaGVz
LnB1c2hNYXRjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxl
ci5wcm90b3R5cGUuX2ZpbmRRdWVyeU1hdGNoZXMubWF0Y2hOZXh0U3BlY2lhbENoYXJhY3Rlcik6
IERlbGV0ZWQuCisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5Q29udHJvbGxlci5wcm90b3R5cGUu
X2ZpbmRRdWVyeU1hdGNoZXMuYmFja3RyYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291
cmNlUXVlcnlDb250cm9sbGVyLnByb3RvdHlwZS5fZmluZFF1ZXJ5TWF0Y2hlcyk6IERlbGV0ZWQu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL1F1ZXJ5TWF0Y2guanM6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpzLgorCisg
ICAgICAgIGBSZXNvdXJjZVF1ZXJ5TWF0Y2hgIGRvZXNuJ3QgY29udGFpbiBhbnkgcmVzb3VyY2Ut
c3BlY2lmaWMgbG9naWMuIEl0IGNhbiBiZSBnZW5lcmFsaXplZCB0byBgUXVlcnlNYXRjaGAuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qczogQ29waWVkIGZy
b20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVl
cnlSZXN1bHQuanMuCisgICAgICAgIChXSS5RdWVyeVJlc3VsdCk6CisgICAgICAgIChXSS5RdWVy
eVJlc3VsdC5wcm90b3R5cGUuZ2V0IHZhbHVlKToKKyAgICAgICAgKFdJLlF1ZXJ5UmVzdWx0LnBy
b3RvdHlwZS5nZXQgcmFuayk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0
IG1hdGNoaW5nVGV4dFJhbmdlcyk6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5wcm90b3R5cGUu
X2NhbGN1bGF0ZVJhbmsuZ2V0TXVsdGlwbGllcik6CisgICAgICAgIChXSS5RdWVyeVJlc3VsdC5w
cm90b3R5cGUuX2NhbGN1bGF0ZVJhbmspOgorICAgICAgICAoV0kuUXVlcnlSZXN1bHQucHJvdG90
eXBlLl9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMpOgorCisgICAgICAgIEEgZ2VuZXJpYyBgUXVl
cnlSZXN1bHRgIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBgUmVzb3VyY2VRdWVyeVJlc3VsdGAgY29u
dGFpbmluZworICAgICAgICB0aGUgcmV1c2FibGUgbG9naWMgZm9yIHJhbmtpbmcgcmVzdWx0cyBh
bmQgaWRlbnRpZmluZyBtYXRjaGluZyB0ZXh0IHJhbmdlcy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQuanM6CisgICAgICAgIChXSS5SZXNvdXJj
ZVF1ZXJ5UmVzdWx0KToKKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQucHJvdG90eXBl
LmdldCByZXNvdXJjZSk6CisgICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0LnByb3RvdHlw
ZS5fX3Rlc3RfY3JlYXRlTWF0Y2hlc01hc2spOgorICAgICAgICAoV0kuUmVzb3VyY2VRdWVyeVJl
c3VsdC5wcm90b3R5cGUuZ2V0IHJhbmspOiBEZWxldGVkLgorICAgICAgICAoV0kuUmVzb3VyY2VR
dWVyeVJlc3VsdC5wcm90b3R5cGUuZ2V0IG1hdGNoaW5nVGV4dFJhbmdlcyk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5SZXNvdXJjZVF1ZXJ5UmVzdWx0LnByb3RvdHlwZS5fY2FsY3VsYXRlUmFuay5n
ZXRNdWx0aXBsaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNlUXVlcnlSZXN1bHQu
cHJvdG90eXBlLl9jYWxjdWxhdGVSYW5rKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlJlc291cmNl
UXVlcnlSZXN1bHQucHJvdG90eXBlLl9jcmVhdGVNYXRjaGluZ1RleHRSYW5nZXMpOiBEZWxldGVk
LgorCisgICAgICAgIGBSZXNvdXJjZVF1ZXJ5UmVzdWx0YCBleHRlbmRzIGBRdWVyeVJlc3VsdGAg
d2l0aCByZXNvdXJjZS1zcGVjaWZjIG1lbWJlcnM6CisgICAgICAgIC0gdGhlIGBjb29raWVgIHBy
b3BlcnR5IHdoaWNoIGhvbGRzIHRoZSBvcHRpb25hbCBsaW5lIGFuZCBjb2x1bW4gaW5mbyB1c2Vk
IHdoZW4ganVtcGluZyB0byBtYXRjaGVkIGZpbGVzCisgICAgICAgIC0gdGhlIGByZXNvdXJjZWAg
cHJvcGVydHkgd2hpY2ggbWFwcyB0byB0aGUgZ2VuZXJpYyBgUXVlcnlSZXN1bHQudmFsdWVgOyB0
aGlzIGlzIHVzZWQgaW4gdGVzdHMgYW5kIHdoZW4gc29ydGluZyBpbiBgUmVzb3VyY2VRdWVyeUNv
bnRyb2xsZXJgCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoKKwogMjAyMS0x
MS0wOSAgUmF6dmFuIENhbGltYW4gIDxyY2FsaW1hbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogQWRkIHNjcmlwdCB0byB1cGRhdGUgQ1NTRG9jdW1lbnRhdGlvbi5qcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
UXVlcnlDb250cm9sbGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkZDFmYmJiMTUzMWI2
OWY0MGIxNGRhOTBjNTEyNDcyYjgzYzFiZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9RdWVyeUNvbnRyb2xsZXIuanMK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5RdWVyeUNvbnRyb2xsZXIgPSBjbGFz
cyBRdWVyeUNvbnRyb2xsZXIKK3sKKyAgICAvLyBQdWJsaWMKKworICAgIGV4ZWN1dGVRdWVyeShx
dWVyeSkKKyAgICB7CisgICAgICAgIHRocm93IFdJLk5vdEltcGxlbWVudGVkRXJyb3Iuc3ViY2xh
c3NNdXN0T3ZlcnJpZGUoKTsKKyAgICB9CisKKyAgICBmaW5kUXVlcnlNYXRjaGVzKHF1ZXJ5LCBz
ZWFyY2hTdHJpbmcsIHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKQorICAgIHsKKyAgICAgICAgaWYg
KHF1ZXJ5Lmxlbmd0aCA+IHNlYXJjaFN0cmluZy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4g
W107CisKKyAgICAgICAgbGV0IG1hdGNoZXMgPSBbXTsKKyAgICAgICAgbGV0IHF1ZXJ5SW5kZXgg
PSAwOworICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSAwOworICAgICAgICBsZXQgc3BlY2lhbElu
ZGV4ID0gMDsKKyAgICAgICAgbGV0IGRlYWRCcmFuY2hlcyA9IChuZXcgQXJyYXkocXVlcnkubGVu
Z3RoKSkuZmlsbChJbmZpbml0eSk7CisgICAgICAgIGxldCB0eXBlID0gV0kuUXVlcnlNYXRjaC5U
eXBlLlNwZWNpYWw7CisKKyAgICAgICAgZnVuY3Rpb24gcHVzaE1hdGNoKGluZGV4KSB7CisgICAg
ICAgICAgICBtYXRjaGVzLnB1c2gobmV3IFdJLlF1ZXJ5TWF0Y2godHlwZSwgaW5kZXgsIHF1ZXJ5
SW5kZXgpKTsKKyAgICAgICAgICAgIHNlYXJjaEluZGV4ID0gaW5kZXggKyAxOworICAgICAgICAg
ICAgcXVlcnlJbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hOZXh0
U3BlY2lhbENoYXJhY3RlcigpIHsKKyAgICAgICAgICAgIGlmIChzcGVjaWFsSW5kZXggPj0gc3Bl
Y2lhbENoYXJhY3RlckluZGljZXMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAgICAgbGV0IG9yaWdpbmFsU3BlY2lhbEluZGV4ID0gc3BlY2lhbEluZGV4
OworICAgICAgICAgICAgd2hpbGUgKHNwZWNpYWxJbmRleCA8IHNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBjaGFyYWN0ZXIgbWF0Y2hp
bmcgY2FuIG1vdmUgcGFzdCBzcGVjaWFsIGNoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgLy8g
c28gYWR2YW5jZSB0aGUgc3BlY2lhbCBjaGFyYWN0ZXIgaW5kZXggaWYgaXQncyBiZWZvcmUgdGhl
CisgICAgICAgICAgICAgICAgLy8gY3VycmVudCBzZWFyY2ggc3RyaW5nIHBvc2l0aW9uLgorICAg
ICAgICAgICAgICAgIGxldCBpbmRleCA9IHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzW3NwZWNpYWxJ
bmRleCsrXTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBzZWFyY2hJbmRleCkKKyAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgICAgICBpZiAocXVlcnlbcXVl
cnlJbmRleF0gPT09IHNlYXJjaFN0cmluZ1tpbmRleF0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaE1hdGNoKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzcGVjaWFsSW5kZXgg
PSBvcmlnaW5hbFNwZWNpYWxJbmRleDsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGJhY2t0cmFjaygpIHsKKyAgICAgICAgICAgIHdoaWxl
IChtYXRjaGVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHF1ZXJ5SW5kZXgtLTsKKworICAg
ICAgICAgICAgICAgIGxldCBsYXN0TWF0Y2ggPSBtYXRjaGVzLnBvcCgpOworICAgICAgICAgICAg
ICAgIGlmIChsYXN0TWF0Y2gudHlwZSAhPT0gV0kuUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWwpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgZGVhZEJyYW5j
aGVzW2xhc3RNYXRjaC5xdWVyeUluZGV4XSA9IGxhc3RNYXRjaC5pbmRleDsKKyAgICAgICAgICAg
ICAgICBzZWFyY2hJbmRleCA9IG1hdGNoZXMubGFzdFZhbHVlID8gbWF0Y2hlcy5sYXN0VmFsdWUu
aW5kZXggKyAxIDogMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgd2hp
bGUgKHF1ZXJ5SW5kZXggPCBxdWVyeS5sZW5ndGggJiYgc2VhcmNoSW5kZXggPD0gc2VhcmNoU3Ry
aW5nLmxlbmd0aCkgeworICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdJLlF1ZXJ5TWF0Y2guVHlw
ZS5TcGVjaWFsICYmICFtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkpCisgICAgICAgICAgICAg
ICAgdHlwZSA9IFdJLlF1ZXJ5TWF0Y2guVHlwZS5Ob3JtYWw7CisKKyAgICAgICAgICAgIGlmICh0
eXBlID09PSBXSS5RdWVyeU1hdGNoLlR5cGUuTm9ybWFsKSB7CisgICAgICAgICAgICAgICAgbGV0
IGluZGV4ID0gc2VhcmNoU3RyaW5nLmluZGV4T2YocXVlcnlbcXVlcnlJbmRleF0sIHNlYXJjaElu
ZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8IGRlYWRCcmFu
Y2hlc1txdWVyeUluZGV4XSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2goaW5kZXgp
OworICAgICAgICAgICAgICAgICAgICB0eXBlID0gV0kuUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghYmFja3RyYWNrKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBbXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
IChxdWVyeUluZGV4IDwgcXVlcnkubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuIFtdOworCisg
ICAgICAgIHJldHVybiBtYXRjaGVzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9SZXNvdXJjZVF1ZXJ5Q29udHJv
bGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzCmluZGV4IDMzOWMyNDE2NGI5NGNlZjE4NDhhZTVj
MTIwODU4MzM2YzM3M2YyNGEuLjIzOTMzZmNmNmM1OWNjODIyNTdmMTc4MzA5NzQwODhjZmFhMjA0
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Jlc291cmNlUXVlcnlDb250cm9sbGVyLmpz
CkBAIC0yMyw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgPSBjbGFzcyBSZXNvdXJjZVF1ZXJ5Q29u
dHJvbGxlciBleHRlbmRzIFdJLk9iamVjdAorV0kuUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgPSBj
bGFzcyBSZXNvdXJjZVF1ZXJ5Q29udHJvbGxlciBleHRlbmRzIFdJLlF1ZXJ5Q29udHJvbGxlcgog
ewogICAgIGNvbnN0cnVjdG9yKCkKICAgICB7CkBAIC03Myw3ICs3Myw3IEBAIFdJLlJlc291cmNl
UXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVzb3VyY2VRdWVyeUNvbnRyb2xsZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgICAgICAgICBjYWNoZWREYXRhLnNwZWNpYWxDaGFyYWN0ZXJJbmRp
Y2VzID0gdGhpcy5fZmluZFNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKGRpc3BsYXlOYW1lKTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLl9maW5kUXVlcnlN
YXRjaGVzKHF1ZXJ5LCBjYWNoZWREYXRhLnNlYXJjaFN0cmluZywgY2FjaGVkRGF0YS5zcGVjaWFs
Q2hhcmFjdGVySW5kaWNlcyk7CisgICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IHRoaXMuZmluZFF1
ZXJ5TWF0Y2hlcyhxdWVyeSwgY2FjaGVkRGF0YS5zZWFyY2hTdHJpbmcsIGNhY2hlZERhdGEuc3Bl
Y2lhbENoYXJhY3RlckluZGljZXMpOwogICAgICAgICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoKQog
ICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaChuZXcgV0kuUmVzb3VyY2VRdWVyeVJlc3VsdChy
ZXNvdXJjZSwgbWF0Y2hlcywgY29va2llKSk7CiAgICAgICAgIH0KQEAgLTg5LDg2ICs4OSw2IEBA
IFdJLlJlc291cmNlUXVlcnlDb250cm9sbGVyID0gY2xhc3MgUmVzb3VyY2VRdWVyeUNvbnRyb2xs
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9maW5kUXVlcnlN
YXRjaGVzKHF1ZXJ5LCBzZWFyY2hTdHJpbmcsIHNwZWNpYWxDaGFyYWN0ZXJJbmRpY2VzKQotICAg
IHsKLSAgICAgICAgaWYgKHF1ZXJ5Lmxlbmd0aCA+IHNlYXJjaFN0cmluZy5sZW5ndGgpCi0gICAg
ICAgICAgICByZXR1cm4gW107Ci0KLSAgICAgICAgbGV0IG1hdGNoZXMgPSBbXTsKLSAgICAgICAg
bGV0IHF1ZXJ5SW5kZXggPSAwOwotICAgICAgICBsZXQgc2VhcmNoSW5kZXggPSAwOwotICAgICAg
ICBsZXQgc3BlY2lhbEluZGV4ID0gMDsKLSAgICAgICAgbGV0IGRlYWRCcmFuY2hlcyA9IG5ldyBB
cnJheShxdWVyeS5sZW5ndGgpLmZpbGwoSW5maW5pdHkpOwotICAgICAgICBsZXQgdHlwZSA9IFdJ
LlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7Ci0KLSAgICAgICAgZnVuY3Rpb24gcHVz
aE1hdGNoKGluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBtYXRjaGVzLnB1c2gobmV3IFdJ
LlJlc291cmNlUXVlcnlNYXRjaCh0eXBlLCBpbmRleCwgcXVlcnlJbmRleCkpOwotICAgICAgICAg
ICAgc2VhcmNoSW5kZXggPSBpbmRleCArIDE7Ci0gICAgICAgICAgICBxdWVyeUluZGV4Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKHNwZWNpYWxJbmRleCA+PSBzcGVjaWFsQ2hhcmFj
dGVySW5kaWNlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgICAgICBsZXQgb3JpZ2luYWxTcGVjaWFsSW5kZXggPSBzcGVjaWFsSW5kZXg7Ci0gICAgICAg
ICAgICB3aGlsZSAoc3BlY2lhbEluZGV4IDwgc3BlY2lhbENoYXJhY3RlckluZGljZXMubGVuZ3Ro
KSB7Ci0gICAgICAgICAgICAgICAgLy8gTm9ybWFsIGNoYXJhY3RlciBtYXRjaGluZyBjYW4gbW92
ZSBwYXN0IHNwZWNpYWwgY2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAvLyBzbyBhZHZhbmNl
IHRoZSBzcGVjaWFsIGNoYXJhY3RlciBpbmRleCBpZiBpdCdzIGJlZm9yZSB0aGUKLSAgICAgICAg
ICAgICAgICAvLyBjdXJyZW50IHNlYXJjaCBzdHJpbmcgcG9zaXRpb24uCi0gICAgICAgICAgICAg
ICAgbGV0IGluZGV4ID0gc3BlY2lhbENoYXJhY3RlckluZGljZXNbc3BlY2lhbEluZGV4KytdOwot
ICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHNlYXJjaEluZGV4KQotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGlmIChxdWVyeVtxdWVyeUluZGV4XSA9
PT0gc2VhcmNoU3RyaW5nW2luZGV4XSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoTWF0Y2go
aW5kZXgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNwZWNpYWxJbmRleCA9IG9yaWdpbmFs
U3BlY2lhbEluZGV4OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gYmFja3RyYWNrKCkKLSAgICAgICAgewotICAgICAgICAgICAgd2hpbGUg
KG1hdGNoZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgcXVlcnlJbmRleC0tOwotCi0gICAg
ICAgICAgICAgICAgbGV0IGxhc3RNYXRjaCA9IG1hdGNoZXMucG9wKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGxhc3RNYXRjaC50eXBlICE9PSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlwZS5TcGVj
aWFsKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgIGRl
YWRCcmFuY2hlc1tsYXN0TWF0Y2gucXVlcnlJbmRleF0gPSBsYXN0TWF0Y2guaW5kZXg7Ci0gICAg
ICAgICAgICAgICAgc2VhcmNoSW5kZXggPSBtYXRjaGVzLmxhc3RWYWx1ZSA/IG1hdGNoZXMubGFz
dFZhbHVlLmluZGV4ICsgMSA6IDA7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHdoaWxlIChxdWVyeUluZGV4IDwgcXVlcnkubGVuZ3RoICYmIHNlYXJjaEluZGV4IDw9IHNl
YXJjaFN0cmluZy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGlmICh0eXBlID09PSBXSS5SZXNvdXJj
ZVF1ZXJ5TWF0Y2guVHlwZS5TcGVjaWFsICYmICFtYXRjaE5leHRTcGVjaWFsQ2hhcmFjdGVyKCkp
Ci0gICAgICAgICAgICAgICAgdHlwZSA9IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLk5vcm1h
bDsKLQotICAgICAgICAgICAgaWYgKHR5cGUgPT09IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBl
Lk5vcm1hbCkgewotICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHNlYXJjaFN0cmluZy5pbmRl
eE9mKHF1ZXJ5W3F1ZXJ5SW5kZXhdLCBzZWFyY2hJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGluZGV4ID49IDAgJiYgaW5kZXggPCBkZWFkQnJhbmNoZXNbcXVlcnlJbmRleF0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaE1hdGNoKGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAgdHlw
ZSA9IFdJLlJlc291cmNlUXVlcnlNYXRjaC5UeXBlLlNwZWNpYWw7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmICghYmFja3RyYWNrKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChxdWVyeUluZGV4IDwgcXVl
cnkubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIFtdOwotCi0gICAgICAgIHJldHVybiBtYXRj
aGVzOwotICAgIH0KLQogICAgIF9maW5kU3BlY2lhbENoYXJhY3RlckluZGljZXMoc3RyaW5nKQog
ICAgIHsKICAgICAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IGNmY2UxOGQ4M2E5NTgwMDUyODIzNzBh
NTU0ZGZhNmM2YzgyYTI5MzUuLjY2NGVhODFhNmQ5MjMxNDU3NTU0NzNiNjZjODRjNGM1NTJhMzgx
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwK
QEAgLTQ2OCw2ICs0NjgsOCBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlEZXNj
cmlwdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Byb3BlcnR5UGF0
aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eVByZXZpZXcu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUXVlcnlNYXRjaC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9RdWVyeVJlc3VsdC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZWNvcmRpbmcuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL1JlY29yZGluZ0ZyYW1lLmpzIj48L3NjcmlwdD4KQEAgLTQ3Niw3ICs0
NzgsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVkaXJlY3QuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVJlY29yZC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VRdWVyeU1hdGNoLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlSZXN1bHQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VUaW1lbGluZVJl
Y29yZC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVRpbWlu
Z0RhdGEuanMiPjwvc2NyaXB0PgpAQCAtODg3LDYgKzg4OCw3IEBACiAKICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvQW5ub3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
IAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BbmltYXRpb25NYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9RdWVyeU1hdGNoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1F1ZXJ5TWF0Y2guanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2UzMDZmZDdjNjlhZGRiYjlmNjE1ZmIx
YWNjODlhY2NiZTVmMDMwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9RdWVyeU1hdGNoLmpzCkBAIC0wLDAgKzEsNDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCitXSS5RdWVyeU1hdGNoID0gY2xhc3MgUXVlcnlNYXRjaAoreworICAgIGNvbnN0
cnVjdG9yKHR5cGUsIGluZGV4LCBxdWVyeUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5RdWVyeU1hdGNoLlR5cGUpLmluY2x1ZGVzKHR5cGUpLCB0
eXBlKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggPj0gMCwgaW5kZXgpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChxdWVyeUluZGV4ID49IDAsIHF1ZXJ5SW5kZXgpOworICAgICAgICB0
aGlzLl90eXBlID0gdHlwZTsKKyAgICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKKyAgICAgICAg
dGhpcy5fcXVlcnlJbmRleCA9IHF1ZXJ5SW5kZXg7CisgICAgfQorCisgICAgLy8gUHVibGljCisK
KyAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KKyAgICBnZXQgaW5kZXgoKSB7
IHJldHVybiB0aGlzLl9pbmRleDsgfQorICAgIGdldCBxdWVyeUluZGV4KCkgeyByZXR1cm4gdGhp
cy5fcXVlcnlJbmRleDsgfQorfTsKKworV0kuUXVlcnlNYXRjaC5UeXBlID0geworICAgIE5vcm1h
bDogU3ltYm9sKCJub3JtYWwiKSwKKyAgICBTcGVjaWFsOiBTeW1ib2woInNwZWNpYWwiKSwKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UXVlcnlSZXN1bHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUXVlcnlSZXN1bHQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGYyNmRjMjA4ZjYxOTg5YTZmYTQxOGNmOThk
MTUyYTI5NThlNzUwMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9RdWVyeVJlc3VsdC5qcwpAQCAtMCwwICsxLDEyNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLlF1ZXJ5UmVzdWx0ID0gY2xhc3MgUXVlcnlSZXN1bHQKK3sKKyAgICBjb25z
dHJ1Y3Rvcih2YWx1ZSwgbWF0Y2hlcykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1h
dGNoZXMubGVuZ3RoLCAiUXVlcnkgbWF0Y2hlcyBsaXN0IGNhbid0IGJlIGVtcHR5LiIpOworCisg
ICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMuX21hdGNoZXMgPSBtYXRj
aGVzOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHZhbHVlKCkgeyByZXR1cm4g
dGhpcy5fdmFsdWU7IH0KKworICAgIGdldCByYW5rKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9yYW5rID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICB0aGlzLl9jYWxjdWxhdGVSYW5rKCk7
CisKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jhbms7CisgICAgfQorCisgICAgZ2V0IG1hdGNoaW5n
VGV4dFJhbmdlcygpCisgICAgeworICAgICAgICB0aGlzLl9tYXRjaGluZ1RleHRSYW5nZXMgPz89
IHRoaXMuX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcygpOworCisgICAgICAgIHJldHVybiB0aGlz
Ll9tYXRjaGluZ1RleHRSYW5nZXM7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2Nh
bGN1bGF0ZVJhbmsoKQorICAgIHsKKyAgICAgICAgY29uc3Qgbm9ybWFsV2VpZ2h0ID0gMTA7Cisg
ICAgICAgIGNvbnN0IGNvbnNlY3V0aXZlV2VpZ2h0ID0gNTsKKyAgICAgICAgY29uc3Qgc3BlY2lh
bE11bHRpcGxpZXIgPSA1OworCisgICAgICAgIGZ1bmN0aW9uIGdldE11bHRpcGxpZXIobWF0Y2gp
IHsKKyAgICAgICAgICAgIGlmIChtYXRjaC50eXBlID09PSBXSS5RdWVyeU1hdGNoLlR5cGUuU3Bl
Y2lhbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbE11bHRpcGxpZXI7CisKKyAgICAg
ICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmFuayA9IDA7CisK
KyAgICAgICAgbGV0IHByZXZpb3VzTWF0Y2ggPSBudWxsOworICAgICAgICBsZXQgY29uc2VjdXRp
dmVNYXRjaFN0YXJ0ID0gbnVsbDsKKyAgICAgICAgZm9yIChsZXQgbWF0Y2ggb2YgdGhpcy5fbWF0
Y2hlcykgeworICAgICAgICAgICAgdGhpcy5fcmFuayArPSBub3JtYWxXZWlnaHQgKiBnZXRNdWx0
aXBsaWVyKG1hdGNoKTsKKworICAgICAgICAgICAgbGV0IGNvbnNlY3V0aXZlID0gcHJldmlvdXNN
YXRjaCAmJiBwcmV2aW91c01hdGNoLmluZGV4ID09PSBtYXRjaC5pbmRleCAtIDE7CisgICAgICAg
ICAgICBpZiAoY29uc2VjdXRpdmUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnNlY3V0aXZl
TWF0Y2hTdGFydCkKKyAgICAgICAgICAgICAgICAgICAgY29uc2VjdXRpdmVNYXRjaFN0YXJ0ID0g
cHJldmlvdXNNYXRjaDsKKworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBtYXRjaCBp
biB0aGlzIGNvbnNlY3V0aXZlIHNlcmllcyB3YXMgYSBzcGVjaWFsIGNoYXJhY3RlciwgZ2l2ZSBh
CisgICAgICAgICAgICAgICAgLy8gYm9udXMgKG1vcmUgbGlrZWx5IHRvIG1hdGNoIGEgc3BlY2lm
aWMgd29yZCBpbiB0aGUgdGV4dCkuICBPdGhlcndpc2UsIG11bHRpcGx5CisgICAgICAgICAgICAg
ICAgLy8gYnkgdGhlIGN1cnJlbnQgbGVuZ3RoIG9mIHRoZSBjb25zZWN1dGl2ZSBzZXF1ZW5jZSAo
Z2l2ZXMgcHJpb3JpdHkgdG8gZmV3ZXIKKyAgICAgICAgICAgICAgICAvLyBsb25nZXIgc2VxdWVu
Y2VzIGluc3RlYWQgb2YgbW9yZSBzaG9ydCBzZXF1ZW5jZXMpLgorICAgICAgICAgICAgICAgIHRo
aXMuX3JhbmsgKz0gY29uc2VjdXRpdmVXZWlnaHQgKiBnZXRNdWx0aXBsaWVyKGNvbnNlY3V0aXZl
TWF0Y2hTdGFydCkgKiAobWF0Y2guaW5kZXggLSBjb25zZWN1dGl2ZU1hdGNoU3RhcnQuaW5kZXgp
OworICAgICAgICAgICAgfSBlbHNlIGlmIChjb25zZWN1dGl2ZU1hdGNoU3RhcnQpCisgICAgICAg
ICAgICAgICAgY29uc2VjdXRpdmVNYXRjaFN0YXJ0ID0gbnVsbDsKKworICAgICAgICAgICAgcHJl
dmlvdXNNYXRjaCA9IG1hdGNoOworCisgICAgICAgICAgICAvLyBUaGUgbWF0Y2ggaW5kZXggaXMg
ZGVkdWN0ZWQgZnJvbSB0aGUgdG90YWwgcmFuaywgc28gbWF0Y2hlcyB0aGF0IG9jY3VyIGNsb3Nl
ciB0bworICAgICAgICAgICAgLy8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGFyZSByYW5r
ZWQgaGlnaGVyLiAgSW5jcmVhc2UgdGhlIGFtb3VudCBzdWJ0cmFjdGVkIGlmCisgICAgICAgICAg
ICAvLyB0aGUgbWF0Y2ggaXMgc3BlY2lhbCwgc28gYXMgdG8gZmF2b3IgbWF0Y2hlcyB0b3dhcmRz
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZy4KKyAgICAgICAgICAgIGlmICghY29uc2VjdXRp
dmUpCisgICAgICAgICAgICAgICAgdGhpcy5fcmFuayAtPSBtYXRjaC5pbmRleCAqIGdldE11bHRp
cGxpZXIobWF0Y2gpOworICAgICAgICB9CisgICAgfQorCisgICAgX2NyZWF0ZU1hdGNoaW5nVGV4
dFJhbmdlcygpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX21hdGNoZXMubGVuZ3RoKQorICAg
ICAgICAgICAgcmV0dXJuIFtdOworCisgICAgICAgIGxldCByYW5nZXMgPSBbXTsKKyAgICAgICAg
bGV0IHN0YXJ0SW5kZXggPSB0aGlzLl9tYXRjaGVzWzBdLmluZGV4OworICAgICAgICBsZXQgZW5k
SW5kZXggPSBzdGFydEluZGV4OworICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuX21h
dGNoZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGxldCBtYXRjaCA9IHRoaXMuX21hdGNo
ZXNbaV07CisKKyAgICAgICAgICAgIC8vIEluY3JlbWVudCBlbmRJbmRleCBmb3IgY29uc2VjdXRp
dmUgbWF0Y2guCisgICAgICAgICAgICBpZiAobWF0Y2guaW5kZXggPT09IGVuZEluZGV4ICsgMSkg
eworICAgICAgICAgICAgICAgIGVuZEluZGV4Kys7CisgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEJlZ2luIGEgbmV3IHJhbmdlIHdoZW4g
YSBnYXAgYmV0d2VlbiB0aGlzIG1hdGNoIGFuZCB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgZm91bmQu
CisgICAgICAgICAgICByYW5nZXMucHVzaChuZXcgV0kuVGV4dFJhbmdlKDAsIHN0YXJ0SW5kZXgs
IDAsIGVuZEluZGV4ICsgMSkpOworICAgICAgICAgICAgc3RhcnRJbmRleCA9IG1hdGNoLmluZGV4
OworICAgICAgICAgICAgZW5kSW5kZXggPSBzdGFydEluZGV4OworICAgICAgICB9CisKKyAgICAg
ICAgcmFuZ2VzLnB1c2gobmV3IFdJLlRleHRSYW5nZSgwLCBzdGFydEluZGV4LCAwLCBlbmRJbmRl
eCArIDEpKTsKKyAgICAgICAgcmV0dXJuIHJhbmdlczsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlUXVlcnlN
YXRjaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZVF1ZXJ5TWF0Y2guanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkMTQwZGE3
MmFhMGE2M2Q0NGVmNDZkYjAwMGEwZGFkZGYzY2NkMDAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRjaC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1XSS5SZXNvdXJjZVF1ZXJ5TWF0Y2ggPSBjbGFzcyBSZXNvdXJj
ZVF1ZXJ5TWF0Y2gKLXsKLSAgICBjb25zdHJ1Y3Rvcih0eXBlLCBpbmRleCwgcXVlcnlJbmRleCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotICAgICAgICB0aGlzLl9pbmRleCA9
IGluZGV4OwotICAgICAgICB0aGlzLl9xdWVyeUluZGV4ID0gcXVlcnlJbmRleDsKLSAgICB9Ci0K
LSAgICAvLyBQdWJsaWMKLQotICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQot
ICAgIGdldCBpbmRleCgpIHsgcmV0dXJuIHRoaXMuX2luZGV4OyB9Ci0gICAgZ2V0IHF1ZXJ5SW5k
ZXgoKSB7IHJldHVybiB0aGlzLl9xdWVyeUluZGV4OyB9Ci19OwotCi1XSS5SZXNvdXJjZVF1ZXJ5
TWF0Y2guVHlwZSA9IHsKLSAgICBOb3JtYWw6IFN5bWJvbCgibm9ybWFsIiksCi0gICAgU3BlY2lh
bDogU3ltYm9sKCJzcGVjaWFsIikKLX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VRdWVyeVJlc3VsdC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0Lmpz
CmluZGV4IDAyMjliNzgwMDBkNGZjZDhlNWU0ZWIxY2QzNjIzNjIyNTQ0ZDFkYTYuLmM3NjU5NjJj
OWU0YTM5YjRjODNkNTI0MzhhODFjZDc3N2M1MWFjZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1ZXJ5UmVzdWx0LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZVF1
ZXJ5UmVzdWx0LmpzCkBAIC0yMywxMTUgKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuUmVzb3VyY2VRdWVyeVJlc3VsdCA9IGNsYXNzIFJlc291
cmNlUXVlcnlSZXN1bHQKK1dJLlJlc291cmNlUXVlcnlSZXN1bHQgPSBjbGFzcyBSZXNvdXJjZVF1
ZXJ5UmVzdWx0IGV4dGVuZHMgV0kuUXVlcnlSZXN1bHQKIHsKICAgICBjb25zdHJ1Y3RvcihyZXNv
dXJjZSwgbWF0Y2hlcywgY29va2llKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobWF0
Y2hlcy5sZW5ndGgsICJRdWVyeSBtYXRjaGVzIGxpc3QgY2FuJ3QgYmUgZW1wdHkuIik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV0kuUmVzb3VyY2UsIHJlc291
cmNlKTsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsIG1hdGNoZXMpOwogCi0gICAgICAgIHRoaXMu
X3Jlc291cmNlID0gcmVzb3VyY2U7Ci0gICAgICAgIHRoaXMuX21hdGNoZXMgPSBtYXRjaGVzOwog
ICAgICAgICB0aGlzLl9jb29raWUgPSBjb29raWUgfHwgbnVsbDsKICAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAotICAgIGdldCByZXNvdXJjZSgpIHsgcmV0dXJuIHRoaXMuX3Jlc291cmNlOyB9Cisg
ICAgZ2V0IHJlc291cmNlKCkgeyByZXR1cm4gdGhpcy52YWx1ZTsgfQogICAgIGdldCBjb29raWUo
KSB7IHJldHVybiB0aGlzLl9jb29raWU7IH0KIAotICAgIGdldCByYW5rKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9yYW5rID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICB0aGlzLl9jYWxj
dWxhdGVSYW5rKCk7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jhbms7Ci0gICAgfQotCi0gICAg
Z2V0IG1hdGNoaW5nVGV4dFJhbmdlcygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX21hdGNo
aW5nVGV4dFJhbmdlcykKLSAgICAgICAgICAgIHRoaXMuX21hdGNoaW5nVGV4dFJhbmdlcyA9IHRo
aXMuX2NyZWF0ZU1hdGNoaW5nVGV4dFJhbmdlcygpOwotCi0gICAgICAgIHJldHVybiB0aGlzLl9t
YXRjaGluZ1RleHRSYW5nZXM7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2NhbGN1
bGF0ZVJhbmsoKQotICAgIHsKLSAgICAgICAgY29uc3Qgbm9ybWFsV2VpZ2h0ID0gMTA7Ci0gICAg
ICAgIGNvbnN0IGNvbnNlY3V0aXZlV2VpZ2h0ID0gNTsKLSAgICAgICAgY29uc3Qgc3BlY2lhbE11
bHRpcGxpZXIgPSA1OwotCi0gICAgICAgIGZ1bmN0aW9uIGdldE11bHRpcGxpZXIobWF0Y2gpIHsK
LSAgICAgICAgICAgIGlmIChtYXRjaC50eXBlID09PSBXSS5SZXNvdXJjZVF1ZXJ5TWF0Y2guVHlw
ZS5TcGVjaWFsKQotICAgICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsTXVsdGlwbGllcjsKLQot
ICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9yYW5rID0g
MDsKLQotICAgICAgICBsZXQgcHJldmlvdXNNYXRjaCA9IG51bGw7Ci0gICAgICAgIGxldCBjb25z
ZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOwotICAgICAgICBmb3IgKGxldCBtYXRjaCBvZiB0aGlz
Ll9tYXRjaGVzKSB7Ci0gICAgICAgICAgICB0aGlzLl9yYW5rICs9IG5vcm1hbFdlaWdodCAqIGdl
dE11bHRpcGxpZXIobWF0Y2gpOwotCi0gICAgICAgICAgICBsZXQgY29uc2VjdXRpdmUgPSBwcmV2
aW91c01hdGNoICYmIHByZXZpb3VzTWF0Y2guaW5kZXggPT09IG1hdGNoLmluZGV4IC0gMTsKLSAg
ICAgICAgICAgIGlmIChjb25zZWN1dGl2ZSkgewotICAgICAgICAgICAgICAgIGlmICghY29uc2Vj
dXRpdmVNYXRjaFN0YXJ0KQotICAgICAgICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3Rh
cnQgPSBwcmV2aW91c01hdGNoOwotCi0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZpcnN0IG1h
dGNoIGluIHRoaXMgY29uc2VjdXRpdmUgc2VyaWVzIHdhcyBhIHNwZWNpYWwgY2hhcmFjdGVyLCBn
aXZlIGEKLSAgICAgICAgICAgICAgICAvLyBib251cyAobW9yZSBsaWtlbHkgdG8gbWF0Y2ggYSBz
cGVjaWZpYyB3b3JkIGluIHRoZSB0ZXh0KS4gIE90aGVyd2lzZSwgbXVsdGlwbHkKLSAgICAgICAg
ICAgICAgICAvLyBieSB0aGUgY3VycmVudCBsZW5ndGggb2YgdGhlIGNvbnNlY3V0aXZlIHNlcXVl
bmNlIChnaXZlcyBwcmlvcml0eSB0byBmZXdlcgotICAgICAgICAgICAgICAgIC8vIGxvbmdlciBz
ZXF1ZW5jZXMgaW5zdGVhZCBvZiBtb3JlIHNob3J0IHNlcXVlbmNlcykuCi0gICAgICAgICAgICAg
ICAgdGhpcy5fcmFuayArPSBjb25zZWN1dGl2ZVdlaWdodCAqIGdldE11bHRpcGxpZXIoY29uc2Vj
dXRpdmVNYXRjaFN0YXJ0KSAqIChtYXRjaC5pbmRleCAtIGNvbnNlY3V0aXZlTWF0Y2hTdGFydC5p
bmRleCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnNlY3V0aXZlTWF0Y2hTdGFydCkKLSAg
ICAgICAgICAgICAgICBjb25zZWN1dGl2ZU1hdGNoU3RhcnQgPSBudWxsOwotCi0gICAgICAgICAg
ICBwcmV2aW91c01hdGNoID0gbWF0Y2g7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBtYXRjaCBpbmRl
eCBpcyBkZWR1Y3RlZCBmcm9tIHRoZSB0b3RhbCByYW5rLCBzbyBtYXRjaGVzIHRoYXQgb2NjdXIg
Y2xvc2VyIHRvCi0gICAgICAgICAgICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYXJl
IHJhbmtlZCBoaWdoZXIuICBJbmNyZWFzZSB0aGUgYW1vdW50IHN1YnRyYWN0ZWQgaWYKLSAgICAg
ICAgICAgIC8vIHRoZSBtYXRjaCBpcyBzcGVjaWFsLCBzbyBhcyB0byBmYXZvciBtYXRjaGVzIHRv
d2FyZHMgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgotICAgICAgICAgICAgaWYgKCFjb25z
ZWN1dGl2ZSkKLSAgICAgICAgICAgICAgICB0aGlzLl9yYW5rIC09IG1hdGNoLmluZGV4ICogZ2V0
TXVsdGlwbGllcihtYXRjaCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfY3JlYXRlTWF0Y2hp
bmdUZXh0UmFuZ2VzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fbWF0Y2hlcy5sZW5ndGgp
Ci0gICAgICAgICAgICByZXR1cm4gW107Ci0KLSAgICAgICAgbGV0IHJhbmdlcyA9IFtdOwotICAg
ICAgICBsZXQgc3RhcnRJbmRleCA9IHRoaXMuX21hdGNoZXNbMF0uaW5kZXg7Ci0gICAgICAgIGxl
dCBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhp
cy5fbWF0Y2hlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbGV0IG1hdGNoID0gdGhpcy5f
bWF0Y2hlc1tpXTsKLQotICAgICAgICAgICAgLy8gSW5jcmVtZW50IGVuZEluZGV4IGZvciBjb25z
ZWN1dGl2ZSBtYXRjaC4KLSAgICAgICAgICAgIGlmIChtYXRjaC5pbmRleCA9PT0gZW5kSW5kZXgg
KyAxKSB7Ci0gICAgICAgICAgICAgICAgZW5kSW5kZXgrKzsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQmVnaW4gYSBuZXcgcmFuZ2Ug
d2hlbiBhIGdhcCBiZXR3ZWVuIHRoaXMgbWF0Y2ggYW5kIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBm
b3VuZC4KLSAgICAgICAgICAgIHJhbmdlcy5wdXNoKG5ldyBXSS5UZXh0UmFuZ2UoMCwgc3RhcnRJ
bmRleCwgMCwgZW5kSW5kZXggKyAxKSk7Ci0gICAgICAgICAgICBzdGFydEluZGV4ID0gbWF0Y2gu
aW5kZXg7Ci0gICAgICAgICAgICBlbmRJbmRleCA9IHN0YXJ0SW5kZXg7Ci0gICAgICAgIH0KLQot
ICAgICAgICByYW5nZXMucHVzaChuZXcgV0kuVGV4dFJhbmdlKDAsIHN0YXJ0SW5kZXgsIDAsIGVu
ZEluZGV4ICsgMSkpOwotICAgICAgICByZXR1cm4gcmFuZ2VzOwotICAgIH0KLQogICAgIC8vIFRl
c3RpbmcKIAogICAgIF9fdGVzdF9jcmVhdGVNYXRjaGVzTWFzaygpCiAgICAgewotICAgICAgICBs
ZXQgZmlsZW5hbWUgPSB0aGlzLl9yZXNvdXJjZS5kaXNwbGF5TmFtZTsKKyAgICAgICAgbGV0IGZp
bGVuYW1lID0gdGhpcy5yZXNvdXJjZS5kaXNwbGF5TmFtZTsKICAgICAgICAgbGV0IGxhc3RJbmRl
eCA9IC0xOwogICAgICAgICBsZXQgcmVzdWx0ID0gIiI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAzMTYyMWZmNTc1YTFmNDNjN2VlNmNk
ZjliYjNhMzUyZDAxZDE4ZDVhLi5jMzAwYmMwYzk3OGUyNjA3MTVhODg4NWZmOGIyMDM1ODIzY2Nj
ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
CkBAIC0xOTYsNiArMTk2LDggQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Byb2ZpbGVOb2Rl
Q2FsbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Qcm9wZXJ0eURlc2Ny
aXB0b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUHJvcGVydHlQcmV2
aWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1F1ZXJ5TWF0Y2guanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUXVlcnlSZXN1bHQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVjb3JkaW5nLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9SZWNvcmRpbmdGcmFtZS5qcyI+PC9zY3JpcHQ+CkBAIC0yMDQs
NyArMjA2LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlZGlyZWN0LmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVSZWNvcmQu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9u
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlUXVlcnlNYXRj
aC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9SZXNvdXJjZVF1ZXJ5UmVz
dWx0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL1Jlc291cmNlVGltZWxp
bmVSZWNvcmQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvUmVzb3VyY2VU
aW1pbmdEYXRhLmpzIj48L3NjcmlwdD4KQEAgLTI0NCw2ICsyNDUsOCBAQAogICAgIDxzY3JpcHQg
c3JjPSJQcm94aWVzL0hlYXBTbmFwc2hvdFByb3h5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUHJveGllcy9IZWFwU25hcHNob3RXb3JrZXJQcm94eS5qcyI+PC9zY3JpcHQ+CiAKKyAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvUXVlcnlDb250cm9sbGVyLmpzIj48L3NjcmlwdD4K
KwogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BbmltYXRpb25NYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>