<?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>175432</bug_id>
          
          <creation_ts>2017-08-10 11:02:54 -0700</creation_ts>
          <short_desc>Use @putByValDirect instead of Array.prototype.@push in built-ins</short_desc>
          <delta_ts>2020-10-14 16:31:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=175240</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=217738</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1337498</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-08-10 11:02:54 -0700</bug_when>
    <thetext>We need use @putByValDirect instead array.prototyp.@push. @push is observable because it uses Set operation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338435</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-08-14 12:36:46 -0700</bug_when>
    <thetext>It seems that this task will require anther approach, than just replace @push by @putByValDirect. For instance Object.entries, that is implemented in builtins\ObjectConstructor.js, used [Set] operation somewhere in getOwnPropertyNames, tested by following code:
```
Object.defineProperty(Array.prototype, &apos;0&apos;, { 
    set : function (x) { throw new Error(&apos;Should not be raised:&apos; + x); }
});
```
Possible we need some internal data structure that closed to Array and implement push, slice and access to index item, but did not open its API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1338509</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-14 15:56:56 -0700</bug_when>
    <thetext>It seems like we should only replace this when the spec doesn&apos;t call Set(...), e.g, when we&apos;re using the Array for internal bookkeeping. If the spec exposes that we call Set(...), then we can keep using @push or push depending on what the spec says for property access of &quot;push&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339094</commentid>
    <comment_count>3</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-08-16 00:13:45 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #2)
&gt; It seems like we should only replace this when the spec doesn&apos;t call
&gt; Set(...), e.g, when we&apos;re using the Array for internal bookkeeping. If the
&gt; spec exposes that we call Set(...), then we can keep using @push or push
&gt; depending on what the spec says for property access of &quot;push&quot;

Ok. I see, I&apos;ll check spec where @push is used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696684</commentid>
    <comment_count>4</comment_count>
      <attachid>411062</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-11 13:20:11 -0700</bug_when>
    <thetext>Created attachment 411062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696777</commentid>
    <comment_count>5</comment_count>
      <attachid>411062</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-11 19:32:10 -0700</bug_when>
    <thetext>Comment on attachment 411062
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        since [[Set]] is performed on indexed properies [2].

typo: properties

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:135
&gt; +        @putByValDirect(resultList, resultList.length, resultString);

Is this a less efficient idiom than @push? Seems sort of unpleasant to have to invoke length. Is the call to length observable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696811</commentid>
    <comment_count>6</comment_count>
      <attachid>411062</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-10-12 03:00:22 -0700</bug_when>
    <thetext>Comment on attachment 411062
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Use @putByValDirect instead of Array.prototype.@push in built-ins

Should we envision doing so for WebCore built-ins as well?
See StreamInternals.js and WritableStreamInternals.js as placed where we use push/shift</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696967</commentid>
    <comment_count>7</comment_count>
      <attachid>411062</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2020-10-12 11:55:38 -0700</bug_when>
    <thetext>Comment on attachment 411062
Patch

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

&gt; Source/JavaScriptCore/builtins/ObjectConstructor.js:35
&gt; +    for (var i = 0; i &lt; names.length; ++i) {

names.length can be moved into a local variable, which should be a bit faster than getting it on each iteration.

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:135
&gt;&gt; +        @putByValDirect(resultList, resultList.length, resultString);
&gt; 
&gt; Is this a less efficient idiom than @push? Seems sort of unpleasant to have to invoke length. Is the call to length observable?

Length shouldn&apos;t be observable here since resultList is guaranteed to be an Array. I don&apos;t think is more efficient since we will IC the length access here, whereas the push call is polymorphic and not IC&apos;d (it&apos;s implemented in C++).

Although, we should move the length access into a local variable at the top of the loop.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697828</commentid>
    <comment_count>8</comment_count>
      <attachid>411364</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-14 12:24:12 -0700</bug_when>
    <thetext>Created attachment 411364
Patch

Bring back @shift, cache length to a variable, introduce @arrayPush intrinsic and utilize it in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697830</commentid>
    <comment_count>9</comment_count>
      <attachid>411364</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-14 12:33:00 -0700</bug_when>
    <thetext>Comment on attachment 411364
Patch

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

r=me with one comment.

&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:132
&gt;          if (!resultString.length)

Can you change the other code like that to @arrayPush too?

`@putByValDirect(xxx, xxx.length, yyy)`

For example, RegExpPrototype.js includes some code like this.

@putByValDirect(result, result.length, subStr);

ArrayPrototype.js also has similar one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697837</commentid>
    <comment_count>10</comment_count>
      <attachid>411364</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-14 12:54:37 -0700</bug_when>
    <thetext>Comment on attachment 411364
Patch

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

&gt;&gt; Source/JavaScriptCore/builtins/RegExpPrototype.js:132
&gt;&gt;          if (!resultString.length)
&gt; 
&gt; Can you change the other code like that to @arrayPush too?
&gt; 
&gt; `@putByValDirect(xxx, xxx.length, yyy)`
&gt; 
&gt; For example, RegExpPrototype.js includes some code like this.
&gt; 
&gt; @putByValDirect(result, result.length, subStr);
&gt; 
&gt; ArrayPrototype.js also has similar one.

I did a grep for putByValDirect.*length and those are the only two source files that have hits: 1 in ArrayPrototype.js and 3 in RegExpPrototype.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697874</commentid>
    <comment_count>11</comment_count>
      <attachid>411371</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-14 14:12:58 -0700</bug_when>
    <thetext>Created attachment 411371
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697882</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-14 14:23:12 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #6)
&gt; Should we envision doing so for WebCore built-ins as well?
&gt; See StreamInternals.js and WritableStreamInternals.js as placed where we use
&gt; push/shift

I&apos;ve updated the patch to replace Array.prototype.@push =&gt; @arrayPush() in WebCore as well.
Array.prototype.@shift is unobservable for non-sparse arrays and is also non-trivial to replace, so let&apos;s keep it.

(In reply to Yusuke Suzuki from comment #9)
&gt; r=me with one comment.

Thank you for review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697893</commentid>
    <comment_count>13</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-14 14:48:55 -0700</bug_when>
    <thetext>Committed r268489: &lt;https://trac.webkit.org/changeset/268489&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411371.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697894</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-14 14:49:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/70309207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697947</commentid>
    <comment_count>15</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-10-14 16:31:00 -0700</bug_when>
    <thetext>This caused test/built-ins/Object/entries/order-after-define-property.js to fail on test262 bots. Details in https://bugs.webkit.org/show_bug.cgi?id=217738</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411062</attachid>
            <date>2020-10-11 13:20:11 -0700</date>
            <delta_ts>2020-10-14 12:24:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175432-20201011232010.patch</filename>
            <type>text/plain</type>
            <size>8692</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjgzMjQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDIwLTEwLTExICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgQHB1dEJ5VmFsRGlyZWN0IGluc3RlYWQgb2YgQXJy
YXkucHJvdG90eXBlLkBwdXNoIGluIGJ1aWx0LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOiBNYXJr
IDIgdGVzdCBjYXNlcyBhcyBwYXNzaW5nLgorCiAyMDIwLTEwLTExICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gYXJndW1lbnRzLmNhbGxlZSBzaG91
bGQgYmVjb21lIFRocm93VHlwZUVycm9yIGlmIGZ1bmN0aW9uIGhhcyBub24gc2ltcGxlIHBhcmFt
ZXRlciBsaXN0CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCShyZXZpc2lvbiAyNjgz
MjMpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyMzEsOSArMTIzMSw2IEBAIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm9wZXJ0eS1lc2Nh
cGVzL2cKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90b3R5cGUvU3ltYm9sLm1hdGNoL2J1aWx0
aW4taW5mZXItdW5pY29kZS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKr77+9wrssIMKrbnVsbMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr77+9wrssIMKrbnVsbMK7KSB0byBi
ZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3RvdHlwZS9TeW1ib2wucmVwbGFjZS9w
b2lzb25lZC1zdGRsaWIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IDAgc2V0dGVyIHNo
b3VsZCBiZSB1bnJlYWNoYWJsZS4nCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAwIHNl
dHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUuJwogdGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3Rv
dHlwZS9TeW1ib2wuc2VhcmNoL3UtbGFzdGluZGV4LWFkdmFuY2UuanM6CiAgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzHCuywgwqstMcK7KSB0byBiZSB0cnVl
JwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMcK7
LCDCqy0xwrspIHRvIGJlIHRydWUnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2ODMyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMyBAQAorMjAyMC0xMC0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIEBwdXRCeVZhbERpcmVjdCBpbnN0ZWFk
IG9mIEFycmF5LnByb3RvdHlwZS5AcHVzaCBpbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSwgQXJyYXkucHJvdG90eXBl
LkBwdXNoIGlzIHVzZWQgdG8gaW1wbGVtZW50IExpc3Qgc3BlY2lmaWNhdGlvbgorICAgICAgICB0
eXBlIGFuZCBpbiBwbGFjZSBvZiBDcmVhdGVEYXRhUHJvcGVydHkgWzFdOyBpdCdzIHVuZGVzaXJh
Ymx5IG9ic2VydmFibGUKKyAgICAgICAgc2luY2UgW1tTZXRdXSBpcyBwZXJmb3JtZWQgb24gaW5k
ZXhlZCBwcm9wZXJpZXMgWzJdLgorCisgICAgICAgIFRoaXMgcGF0Y2ggdXRpbGl6ZXMgQHB1dEJ5
VmFsRGlyZWN0IGluc3RlYWQsIGVuc3VyaW5nIGxpc3RzIHNpemVkIGJleW9uZAorICAgICAgICBV
SU5UX01BWCB3b3JrIGNvcnJlY3RseSwgYW5kIHJlbW92ZXMgQHB1c2ggYW5kIEB1bnNoaWZ0IChh
bHNvIGNhbGxzIFNldCkKKyAgICAgICAgZnJvbSBBcnJheS5wcm90b3R5cGUuCisKKyAgICAgICAg
QWR2YW5jZXMgT2JqZWN0LmVudHJpZXMgbWljcm9iZW5jaG1hcmsgYnkgMS0zJS4KKworICAgICAg
ICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlmcm9tbGlzdCAo
c3RlcCA0LmEpCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJh
eS5wcm90b3R5cGUucHVzaCAoc3RlcCA1LmEpCisKKyAgICAgICAgKiBidWlsdGlucy9PYmplY3RD
b25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMpOgorICAgICAgICAqIGJ1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWF0Y2hTbG93KToKKyAg
ICAgICAgKFN5bWJvbC5yZXBsYWNlKToKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFycmF5UHJv
dG90eXBlLmpzOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9u
KToKKwogMjAyMC0xMC0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtKU0NdIGFyZ3VtZW50cy5jYWxsZWUgc2hvdWxkIGJlY29tZSBUaHJvd1R5cGVFcnJv
ciBpZiBmdW5jdGlvbiBoYXMgbm9uIHNpbXBsZSBwYXJhbWV0ZXIgbGlzdApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qcwko
cmV2aXNpb24gMjY4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVj
dENvbnN0cnVjdG9yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMSArMzEsMTEgQEAgZnVuY3Rp
b24gZW50cmllcyhvYmplY3QpCiAKICAgICB2YXIgb2JqID0gQHRvT2JqZWN0KG9iamVjdCwgIk9i
amVjdC5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9y
IHVuZGVmaW5lZCIpOwogICAgIHZhciBuYW1lcyA9IEBPYmplY3QuQGdldE93blByb3BlcnR5TmFt
ZXMob2JqKTsKLSAgICB2YXIgcHJvcGVydGllcyA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwLCBs
ZW5ndGggPSBuYW1lcy5sZW5ndGg7IGkgPCBsZW5ndGg7ICsraSkgeworICAgIHZhciBwcm9wZXJ0
aWVzID0gQG5ld0FycmF5V2l0aFNpemUobmFtZXMubGVuZ3RoKTsKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIHZhciBuYW1lID0gbmFtZXNbaV07
CiAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFibGUob2JqLCBuYW1lKSkKLSAgICAgICAg
ICAgIHByb3BlcnRpZXMuQHB1c2goW25hbWUsIG9ialtuYW1lXV0pOworICAgICAgICAgICAgQHB1
dEJ5VmFsRGlyZWN0KHByb3BlcnRpZXMsIGksIFtuYW1lLCBvYmpbbmFtZV1dKTsKICAgICB9CiAK
ICAgICByZXR1cm4gcHJvcGVydGllczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9SZWdFeHBQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjY4MzIzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIGZ1bmN0aW9uIG1hdGNoU2xvdyhyZWdleHAsIHN0cikK
ICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVuZ3RoKQogICAgICAgICAgICAgcmVnZXhwLmxh
c3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyLCByZWdleHAubGFzdEluZGV4LCB1bmlj
b2RlKTsKIAotICAgICAgICByZXN1bHRMaXN0LkBwdXNoKHJlc3VsdFN0cmluZyk7CisgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXN1bHRMaXN0LCByZXN1bHRMaXN0Lmxlbmd0aCwgcmVzdWx0U3Ry
aW5nKTsKICAgICB9CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCBmdW5jdGlvbiByZXBsYWNlKHN0
ckFyZywgcmVwbGFjZSkKICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAg
IGRvbmUgPSB0cnVlOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdExpc3QuQHB1
c2gocmVzdWx0KTsKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1bHRMaXN0LCByZXN1
bHRMaXN0Lmxlbmd0aCwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghZ2xvYmFsKQogICAgICAg
ICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgZWxzZSB7CkBAIC0zNDAsNyArMzQw
LDcgQEAgZnVuY3Rpb24gcmVwbGFjZShzdHJBcmcsIHJlcGxhY2UpCiAgICAgICAgICAgICB2YXIg
Y2FwTiA9IHJlc3VsdFtuXTsKICAgICAgICAgICAgIGlmIChjYXBOICE9PSBAdW5kZWZpbmVkKQog
ICAgICAgICAgICAgICAgIGNhcE4gPSBAdG9TdHJpbmcoY2FwTik7Ci0gICAgICAgICAgICBjYXB0
dXJlcy5AcHVzaChjYXBOKTsKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChjYXB0dXJlcywg
biAtIDEsIGNhcE4pOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIHJlcGxhY2VtZW50OwpAQCAt
MzQ5LDEzICszNDksMTMgQEAgZnVuY3Rpb24gcmVwbGFjZShzdHJBcmcsIHJlcGxhY2UpCiAgICAg
ICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkgewogICAgICAgICAgICAgdmFyIHJlcGxhY2VyQXJn
cyA9IFsgbWF0Y2hlZCBdOwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjYXB0dXJl
cy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgICAgICByZXBsYWNlckFyZ3MuQHB1c2goY2FwdHVy
ZXNbal0pOworICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXBsYWNlckFyZ3MsIGog
KyAxLCBjYXB0dXJlc1tqXSk7CiAKLSAgICAgICAgICAgIHJlcGxhY2VyQXJncy5AcHVzaChwb3Np
dGlvbik7Ci0gICAgICAgICAgICByZXBsYWNlckFyZ3MuQHB1c2goc3RyKTsKKyAgICAgICAgICAg
IEBwdXRCeVZhbERpcmVjdChyZXBsYWNlckFyZ3MsIHJlcGxhY2VyQXJncy5sZW5ndGgsIHBvc2l0
aW9uKTsKKyAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXBsYWNlckFyZ3MsIHJlcGxhY2Vy
QXJncy5sZW5ndGgsIHN0cik7CiAKICAgICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSBA
dW5kZWZpbmVkKQotICAgICAgICAgICAgICAgIHJlcGxhY2VyQXJncy5AcHVzaChuYW1lZENhcHR1
cmVzKTsKKyAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVwbGFjZXJBcmdzLCByZXBs
YWNlckFyZ3MubGVuZ3RoLCBuYW1lZENhcHR1cmVzKTsKIAogICAgICAgICAgICAgdmFyIHJlcGxW
YWx1ZSA9IHJlcGxhY2UuQGFwcGx5KEB1bmRlZmluZWQsIHJlcGxhY2VyQXJncyk7CiAgICAgICAg
ICAgICByZXBsYWNlbWVudCA9IEB0b1N0cmluZyhyZXBsVmFsdWUpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMJ
KHJldmlzaW9uIDI2ODMyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBl
ZEFycmF5UHJvdG90eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNDAsNyArMzQwLDcgQEAgZnVu
Y3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQogICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgdmFyIHZhbHVlID0gdGhpc1tpXTsKICAgICAg
ICAgaWYgKGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcsIHZhbHVlLCBpLCB0aGlzKSkKLSAgICAgICAg
ICAgIGtlcHQuQHB1c2godmFsdWUpOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KGtlcHQs
IGtlcHQubGVuZ3RoLCB2YWx1ZSk7CiAgICAgfQogICAgIHZhciBsZW5ndGggPSBrZXB0Lmxlbmd0
aDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcAkocmV2aXNpb24gMjY4MzIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMCArODYsOCBA
QCB2b2lkIEFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgCiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+am9pbiwgYXJy
YXlQcm90b0Z1bmNKb2luLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKCJwb3AiLCBhcnJheVByb3RvRnVuY1BvcCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDAsIEFycmF5UG9wSW50cmluc2ljKTsK
ICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0u
cHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHVzaFB1YmxpY05hbWUoKSwgYXJyYXlQcm90
b0Z1bmNQdXNoLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKLSAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkucHVzaFByaXZhdGVOYW1lKCksIGFycmF5UHJvdG9GdW5jUHVzaCwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHksIDEsIEFycmF5UHVzaEludHJpbnNpYyk7CiAgICAgSlNDX05BVElW
RV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInJldmVyc2UiLCBhcnJheVByb3RvRnVuY1Jl
dmVyc2UsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
LCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5zaGlmdFB1YmxpY05hbWUoKSwgYXJyYXlQcm90b0Z1
bmNTaGlmdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSksIDApOwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnNoaWZ0UHJpdmF0ZU5hbWUoKSwgYXJyYXlQcm90
b0Z1bmNTaGlmdCwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHksIDApOwogICAgIEpT
Q19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5zbGljZSwgYXJyYXlQcm90b0Z1bmNTbGljZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDIsIEFycmF5U2xpY2VJbnRyaW5zaWMpOwog
ICAgIEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5zb3J0UHVibGljTmFtZSgpLCBhcnJheVByb3RvdHlwZVNvcnRD
b2RlR2VuZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInNw
bGljZSIsIGFycmF5UHJvdG9GdW5jU3BsaWNlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411364</attachid>
            <date>2020-10-14 12:24:12 -0700</date>
            <delta_ts>2020-10-14 14:12:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175432-20201014222411.patch</filename>
            <type>text/plain</type>
            <size>17942</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjg0NTkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTEwLTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgQHB1dEJ5VmFsRGlyZWN0IGluc3RlYWQgb2YgQXJy
YXkucHJvdG90eXBlLkBwdXNoIGluIGJ1aWx0LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvYXJyYXktcHVzaC1pbnRyaW5zaWMuanM6
IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6IE1hcmsgMiB0ZXN0
IGNhc2VzIGFzIHBhc3NpbmcuCisKIDIwMjAtMTAtMTMgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBh
cHBsZS5jb20+CiAKICAgICAgICAgSlNPYmplY3Q6OmdldFByb3BlcnR5TmFtZXMgc2hvdWxkIGhh
dmUgYSBzdGFjayBvdmVyZmxvdyBjaGVjawpJbmRleDogSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVz
aC1pbnRyaW5zaWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1p
bnRyaW5zaWMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvYXJyYXktcHVzaC1p
bnRyaW5zaWMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3NiBAQAorInVzZSBzdHJpY3Qi
OworCitjb25zdCBhcnJheVB1c2ggPSAkdm0uY3JlYXRlQnVpbHRpbigiKGZ1bmN0aW9uIChhLCB2
KSB7IEBhcnJheVB1c2goYSwgdik7IH0pIik7Citub0lubGluZShhcnJheVB1c2gpOworCitmdW5j
dGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgQmFkIHZhbHVlOiAke2FjdHVhbH0uYCk7
Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkKK3sKKyAgICB2
YXIgZXJyb3JUaHJvd24gPSBmYWxzZTsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAgICAgICBp
ZiAoU3RyaW5nKGVycm9yKSAhPT0gZXJyb3JNZXNzYWdlKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKGBCYWQgZXJyb3I6ICR7ZXJyb3J9YCk7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJv
d24pCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiRGlkbid0IHRocm93ISIpOworfQorCitzaG91
bGRUaHJvdygKKyAgICAoKSA9PiBhcnJheVB1c2goeCwgeSksCisgICAgIlJlZmVyZW5jZUVycm9y
OiBDYW4ndCBmaW5kIHZhcmlhYmxlOiB4IiwKKyk7CisKK3Nob3VsZFRocm93KAorICAgICgpID0+
IGFycmF5UHVzaCh7IGdldCBsZW5ndGgoKSB7IHRocm93IG5ldyBFcnJvcigiJ2xlbmd0aCcgc2hv
dWxkIGJlIHVucmVhY2hhYmxlLiIpOyB9IH0sIHkpLAorICAgICJSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogeSIsCispOworCitmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkg
eworICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCBpLCB7CisgICAg
ICAgIGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKGkgKyAiIGdldHRlciBzaG91bGQgYmUgdW5yZWFj
aGFibGUuIik7IH0sCisgICAgICAgIHNldChfdmFsdWUpIHsgdGhyb3cgbmV3IEVycm9yKGkgKyAi
IHNldHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUuIik7IH0sCisgICAgfSk7Cit9CisKKygoKSA9
PiB7CisgICAgY29uc3QgYXJyID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTU7ICsr
aSkgeworICAgICAgICBhcnJheVB1c2goYXJyLCBpKTsKKyAgICAgICAgc2hvdWxkQmUoYXJyW2ld
LCBpKTsKKyAgICAgICAgc2hvdWxkQmUoYXJyLmxlbmd0aCwgaSArIDEpOworICAgIH0KK30pKCk7
CisKKygoKSA9PiB7CisgICAgY29uc3QgbWF4TGVuZ3RoID0gMiAqKiAzMiAtIDE7CisgICAgY29u
c3Qgc3RhcnRJbmRleCA9IG1heExlbmd0aCAtIDFlNDsKKyAgICBjb25zdCBhcnIgPSBuZXcgQXJy
YXkoc3RhcnRJbmRleCk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7Cisg
ICAgICAgIGFycmF5UHVzaChhcnIsIGkpOworICAgICAgICBzaG91bGRCZShhcnJbc3RhcnRJbmRl
eCArIGldLCBpKTsKKyAgICAgICAgc2hvdWxkQmUoYXJyLmxlbmd0aCwgc3RhcnRJbmRleCArIGkg
KyAxKTsKKyAgICB9CisKKyAgICBzaG91bGRCZShhcnIubGVuZ3RoLCBtYXhMZW5ndGgpOworCisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1OyArK2kpIHsKKyAgICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KE9iamVjdC5wcm90b3R5cGUsIG1heExlbmd0aCArIGksIHsKKyAgICAgICAgICAgIGdl
dCgpIHsgdGhyb3cgbmV3IEVycm9yKGkgKyAiIGdldHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUu
Iik7IH0sCisgICAgICAgICAgICBzZXQoX3ZhbHVlKSB7IHRocm93IG5ldyBFcnJvcihpICsgIiBz
ZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlLiIpOyB9LAorICAgICAgICB9KTsKKyAgICB9CisK
KyAgICBmb3IgKGxldCBpID0gMTsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGFycmF5UHVzaChh
cnIsIGkpOworICAgICAgICBzaG91bGRCZShhcnIuaGFzT3duUHJvcGVydHkobWF4TGVuZ3RoICsg
aSksIGZhbHNlKTsKKyAgICAgICAgc2hvdWxkQmUoYXJyLmxlbmd0aCwgbWF4TGVuZ3RoKTsKKyAg
ICB9Cit9KSgpOwpJbmRleDogSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkocmV2aXNpb24gMjY4
NDU1KQorKysgSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMxLDkgKzEyMzEsNiBAQCB0ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvcGVydHktZXNj
YXBlcy9nCiB0ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvdG90eXBlL1N5bWJvbC5tYXRjaC9idWls
dGluLWluZmVyLXVuaWNvZGUuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq++/vcK7LCDCq251bGzCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq++/vcK7LCDCq251bGzCuykgdG8g
YmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90b3R5cGUvU3ltYm9sLnJlcGxhY2Uv
cG9pc29uZWQtc3RkbGliLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiAwIHNldHRlciBz
aG91bGQgYmUgdW5yZWFjaGFibGUuJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogMCBz
ZXR0ZXIgc2hvdWxkIGJlIHVucmVhY2hhYmxlLicKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90
b3R5cGUvU3ltYm9sLnNlYXJjaC91LWxhc3RpbmRleC1hZHZhbmNlLmpzOgogICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqsxwrssIMKrLTHCuykgdG8gYmUgdHJ1
ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzHC
uywgwqstMcK7KSB0byBiZSB0cnVlJwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNjg0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDEgQEAKKzIwMjAtMTAtMTQgIEFsZXhleSBTaHZheWthICA8c2h2
YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAgIFVzZSBAcHV0QnlWYWxEaXJlY3QgaW5zdGVh
ZCBvZiBBcnJheS5wcm90b3R5cGUuQHB1c2ggaW4gYnVpbHQtaW5zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU0MzIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaCwgQXJyYXku
cHJvdG90eXBlLkBwdXNoIHdhcyB1c2VkIHRvIGltcGxlbWVudCBMaXN0IHNwZWMgdHlwZSwKKyAg
ICAgICAgc3RhY2tzIC8gcXVldWVzLCBhbmQgaW4gcGxhY2Ugb2YgQ3JlYXRlRGF0YVByb3BlcnR5
IFsxXS4KKyAgICAgICAgSXQncyB1bmRlc2lyYWJseSBvYnNlcnZhYmxlIHNpbmNlIGVsZW1lbnRz
IGFyZSBwdXNoZWQgdXNpbmcgW1tTZXRdXSwKKyAgICAgICAgYWZmZWN0aW5nIGluZGV4ZWQgcHJv
cGVydGllcyBvbiBwcm90b3R5cGVzIFsyXS4KKworICAgICAgICBUaGlzIHBhdGNoIHVzZXMgQHB1
dEJ5VmFsRGlyZWN0KCkgdG8gaW1wbGVtZW50IENyZWF0ZURhdGFQcm9wZXJ0eSwgYW5kCisgICAg
ICAgIGludHJvZHVjZXMgQGFycmF5UHVzaCgpIGludHJpbnNpYyB0byB1c2Ugd2l0aCBsaXN0cyAv
IHN0YWNrcyAvIHF1ZXVlcy4KKworICAgICAgICBAYXJyYXlQdXNoKCkgc2hvdWxkIG9ubHkgYmUg
dXNlZCB3aXRoIGFycmF5cyBhcyBpdCBkb2Vzbid0IGluY3JlbWVudCAibGVuZ3RoIi4KKyAgICAg
ICAgVW5saWtlIEFycmF5LnByb3RvdHlwZS5AcHVzaCwgaXQgZG9lc24ndCBncm93IHJlY2VpdmVy
cyBiZXlvbmQgVUlOVF9NQVgsCisgICAgICAgIHdoaWNoIGlzIE9LIGZvciBjdXJyZW50IHVzZSBj
YXNlcy4KKworICAgICAgICBEZXNwaXRlIEFycmF5LnByb3RvdHlwZS5Ac2hpZnQgYWxzbyBwZXJm
b3JtaW5nIFtbU2V0XV0sIGl0J3Mgc2FmZSB0byB1c2UKKyAgICAgICAgd2l0aCBub24tc3BhcnNl
IHJlY2VpdmVycy4gT2JqZWN0LmVudHJpZXMgbWljcm9iZW5jaG1hcmsgaXMgbmV1dHJhbC4KKwor
ICAgICAgICBbMV06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlmcm9t
bGlzdCAoc3RlcCA0LmEpCisgICAgICAgIFsyXTogaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3Nl
Yy1hcnJheS5wcm90b3R5cGUucHVzaCAoc3RlcCA1LmEpCisKKyAgICAgICAgKiBidWlsdGlucy9P
YmplY3RDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMpOgorICAgICAgICAqIGJ1aWx0
aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2JhbFByaXZhdGUubWF0Y2hTbG93
KToKKyAgICAgICAgKFN5bWJvbC5yZXBsYWNlKToKKyAgICAgICAgKiBidWlsdGlucy9UeXBlZEFy
cmF5UHJvdG90eXBlLmpzOgorICAgICAgICAoZmlsdGVyKToKKyAgICAgICAgKiBieXRlY29kZS9C
eXRlY29kZUludHJpbnNpY1JlZ2lzdHJ5Lmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9p
bnRyaW5zaWNfYXJyYXlQdXNoKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKwogMjAy
MC0xMC0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBKU09i
amVjdDo6Z2V0UHJvcGVydHlOYW1lcyBzaG91bGQgaGF2ZSBhIHN0YWNrIG92ZXJmbG93IGNoZWNr
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3Iu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL09iamVjdENv
bnN0cnVjdG9yLmpzCShyZXZpc2lvbiAyNjg0NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1
LDcgQEAgZnVuY3Rpb24gZW50cmllcyhvYmplY3QpCiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbmd0
aCA9IG5hbWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgIHZhciBuYW1lID0g
bmFtZXNbaV07CiAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1lcmFibGUob2JqLCBuYW1lKSkK
LSAgICAgICAgICAgIHByb3BlcnRpZXMuQHB1c2goW25hbWUsIG9ialtuYW1lXV0pOworICAgICAg
ICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb3BlcnRpZXMsIGksIFtuYW1lLCBvYmpbbmFtZV1dKTsK
ICAgICB9CiAKICAgICByZXR1cm4gcHJvcGVydGllczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwkocmV2aXNpb24gMjY4NDU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qcwko
d29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIGZ1bmN0aW9uIG1hdGNoU2xvdyhyZWdl
eHAsIHN0cikKICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVuZ3RoKQogICAgICAgICAgICAg
cmVnZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgoc3RyLCByZWdleHAubGFzdElu
ZGV4LCB1bmljb2RlKTsKIAotICAgICAgICByZXN1bHRMaXN0LkBwdXNoKHJlc3VsdFN0cmluZyk7
CisgICAgICAgIEBhcnJheVB1c2gocmVzdWx0TGlzdCwgcmVzdWx0U3RyaW5nKTsKICAgICB9CiB9
CiAKQEAgLTMwNyw3ICszMDcsNyBAQCBmdW5jdGlvbiByZXBsYWNlKHN0ckFyZywgcmVwbGFjZSkK
ICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdExpc3QuQHB1c2gocmVzdWx0KTsKKyAg
ICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0TGlzdCwgcmVzdWx0KTsKICAgICAgICAgICAgIGlm
ICghZ2xvYmFsKQogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICAgICAgZWxz
ZSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgZnVuY3Rpb24gcmVwbGFjZShzdHJBcmcsIHJlcGxhY2Up
CiAgICAgICAgICAgICB2YXIgY2FwTiA9IHJlc3VsdFtuXTsKICAgICAgICAgICAgIGlmIChjYXBO
ICE9PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIGNhcE4gPSBAdG9TdHJpbmcoY2FwTik7
Ci0gICAgICAgICAgICBjYXB0dXJlcy5AcHVzaChjYXBOKTsKKyAgICAgICAgICAgIEBhcnJheVB1
c2goY2FwdHVyZXMsIGNhcE4pOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIHJlcGxhY2VtZW50
OwpAQCAtMzQ5LDEzICszNDksMTMgQEAgZnVuY3Rpb24gcmVwbGFjZShzdHJBcmcsIHJlcGxhY2Up
CiAgICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkgewogICAgICAgICAgICAgdmFyIHJlcGxh
Y2VyQXJncyA9IFsgbWF0Y2hlZCBdOwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBj
YXB0dXJlcy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgICAgICByZXBsYWNlckFyZ3MuQHB1c2go
Y2FwdHVyZXNbal0pOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2gocmVwbGFjZXJBcmdzLCBj
YXB0dXJlc1tqXSk7CiAKLSAgICAgICAgICAgIHJlcGxhY2VyQXJncy5AcHVzaChwb3NpdGlvbik7
Ci0gICAgICAgICAgICByZXBsYWNlckFyZ3MuQHB1c2goc3RyKTsKKyAgICAgICAgICAgIEBhcnJh
eVB1c2gocmVwbGFjZXJBcmdzLCBwb3NpdGlvbik7CisgICAgICAgICAgICBAYXJyYXlQdXNoKHJl
cGxhY2VyQXJncywgc3RyKTsKIAogICAgICAgICAgICAgaWYgKG5hbWVkQ2FwdHVyZXMgIT09IEB1
bmRlZmluZWQpCi0gICAgICAgICAgICAgICAgcmVwbGFjZXJBcmdzLkBwdXNoKG5hbWVkQ2FwdHVy
ZXMpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2gocmVwbGFjZXJBcmdzLCBuYW1lZENhcHR1
cmVzKTsKIAogICAgICAgICAgICAgdmFyIHJlcGxWYWx1ZSA9IHJlcGxhY2UuQGFwcGx5KEB1bmRl
ZmluZWQsIHJlcGxhY2VyQXJncyk7CiAgICAgICAgICAgICByZXBsYWNlbWVudCA9IEB0b1N0cmlu
ZyhyZXBsVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVk
QXJyYXlQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMJKHJldmlzaW9uIDI2ODQ1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDAsNyArMzQwLDcgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0
aGlzQXJnICovKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAg
ICAgdmFyIHZhbHVlID0gdGhpc1tpXTsKICAgICAgICAgaWYgKGNhbGxiYWNrLkBjYWxsKHRoaXNB
cmcsIHZhbHVlLCBpLCB0aGlzKSkKLSAgICAgICAgICAgIGtlcHQuQHB1c2godmFsdWUpOworICAg
ICAgICAgICAgQGFycmF5UHVzaChrZXB0LCB2YWx1ZSk7CiAgICAgfQogICAgIHZhciBsZW5ndGgg
PSBrZXB0Lmxlbmd0aDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlSW50cmluc2ljUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCShyZXZpc2lvbiAyNjg0
NTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNS
ZWdpc3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgTGlu
a1RpbWVDb25zdGFudCA6IGludDMyX3Q7CiAjZGVmaW5lIEpTQ19DT01NT05fQllURUNPREVfSU5U
UklOU0lDX0ZVTkNUSU9OU19FQUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhhcmd1bWVudCkg
XAogICAgIG1hY3JvKGFyZ3VtZW50Q291bnQpIFwKKyAgICBtYWNybyhhcnJheVB1c2gpIFwKICAg
ICBtYWNybyhnZXRCeUlkRGlyZWN0KSBcCiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdFByaXZhdGUp
IFwKICAgICBtYWNybyhnZXRQcm90b3R5cGVPZikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjY4
NDU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzg4LDYgKzEzODgsMTkgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0XwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEFyZ3Vt
ZW50Q291bnQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CiB9CiAKK1JlZ2lzdGVy
SUQqIEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJyYXlQdXNoKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5t
X25leHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG5vZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGxlbmd0aCA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1
dEJ5VmFsKGJhc2UuZ2V0KCksIGxlbmd0aC5nZXQoKSwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRCeUlkRGly
ZWN0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAg
ICBBcmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2
aXNpb24gMjY4NDU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIHZvaWQgQXJyYXlQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiAKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5qb2luLCBhcnJheVByb3RvRnVuY0pvaW4s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsK
ICAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInBv
cCIsIGFycmF5UHJvdG9GdW5jUG9wLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5wdXNoUHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY1B1c2gsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBBcnJheVB1
c2hJbnRyaW5zaWMpOwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wdXNoUHJpdmF0ZU5h
bWUoKSwgYXJyYXlQcm90b0Z1bmNQdXNoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSwgMSwgQXJyYXlQdXNoSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhP
VVRfVFJBTlNJVElPTigicmV2ZXJzZSIsIGFycmF5UHJvdG9GdW5jUmV2ZXJzZSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnNoaWZ0UHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlND
X05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVp
bHRpbk5hbWVzKCkuc2hpZnRQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lv
biAyNjg0NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyNiBAQAorMjAyMC0xMC0xNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBn
bWFpbC5jb20+CisKKyAgICAgICAgVXNlIEBwdXRCeVZhbERpcmVjdCBpbnN0ZWFkIG9mIEFycmF5
LnByb3RvdHlwZS5AcHVzaCBpbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBAYXJyYXlQdXNoKCkgaW50cmluc2ljIGluc3RlYWQg
b2YgQXJyYXkucHJvdG90eXBlLkBwdXNoLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0
cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQ
dWxsKToKKyAgICAgICAgKHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJFbnF1ZXVlQ2h1bmsp
OgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclB1bGxJbnRvKToKKyAgICAg
ICAgKHJlYWRhYmxlU3RyZWFtQWRkUmVhZEludG9SZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanM6CisgICAgICAgIChyZWFkYWJsZVN0
cmVhbUFkZFJlYWRSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50
ZXJuYWxzLmpzOgorICAgICAgICAoZW5xdWV1ZVZhbHVlV2l0aFNpemUpOgorICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHdyaXRh
YmxlU3RyZWFtQWRkV3JpdGVSZXF1ZXN0KToKKwogMjAyMC0xMC0xNCAgQW5kcmVzIEdvbnphbGV6
ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CiAKICAgICAgICAgWyBtYWNPUyBdIGFjY2Vzc2liaWxp
dHkvbWFjL3NlbGVjdC1lbGVtZW50LXNlbGVjdGlvbi13aXRoLW9wdGdyb3Vwcy5odG1sIGlzIGEg
Zmxha3kgZmFpbHVyZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzCShyZXZpc2lvbiAy
Njg0NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3Ry
ZWFtSW50ZXJuYWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcgQEAgZnVuY3Rp
b24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclB1bAogICAgICAgICAgICAgY3RvcjogQFVp
bnQ4QXJyYXksCiAgICAgICAgICAgICByZWFkZXJUeXBlOiAnZGVmYXVsdCcKICAgICAgICAgfTsK
LSAgICAgICAgQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbElu
dG9zIikuQHB1c2gocHVsbEludG9EZXNjcmlwdG9yKTsKKyAgICAgICAgQGFycmF5UHVzaChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoY29udHJvbGxlciwgInBlbmRpbmdQdWxsSW50b3MiKSwgcHVsbElu
dG9EZXNjcmlwdG9yKTsKICAgICB9CiAKICAgICBjb25zdCBwcm9taXNlID0gQHJlYWRhYmxlU3Ry
ZWFtQWRkUmVhZFJlcXVlc3Qoc3RyZWFtKTsKQEAgLTM0Nyw3ICszNDcsNyBAQCBmdW5jdGlvbiBy
ZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyRW5xCiB7CiAgICAgInVzZSBzdHJpY3QiOwogCi0g
ICAgQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJxdWV1ZSIpLmNvbnRlbnQuQHB1
c2goeworICAgIEBhcnJheVB1c2goQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJx
dWV1ZSIpLmNvbnRlbnQsIHsKICAgICAgICAgYnVmZmVyOiBidWZmZXIsCiAgICAgICAgIGJ5dGVP
ZmZzZXQ6IGJ5dGVPZmZzZXQsCiAgICAgICAgIGJ5dGVMZW5ndGg6IGJ5dGVMZW5ndGgKQEAgLTYz
MCw3ICs2MzAsNyBAQCBmdW5jdGlvbiByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHVsCiAK
ICAgICBpZiAoQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbElu
dG9zIikubGVuZ3RoKSB7CiAgICAgICAgIHB1bGxJbnRvRGVzY3JpcHRvci5idWZmZXIgPSBAdHJh
bnNmZXJCdWZmZXJUb0N1cnJlbnRSZWFsbShwdWxsSW50b0Rlc2NyaXB0b3IuYnVmZmVyKTsKLSAg
ICAgICAgQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbEludG9z
IikuQHB1c2gocHVsbEludG9EZXNjcmlwdG9yKTsKKyAgICAgICAgQGFycmF5UHVzaChAZ2V0QnlJ
ZERpcmVjdFByaXZhdGUoY29udHJvbGxlciwgInBlbmRpbmdQdWxsSW50b3MiKSwgcHVsbEludG9E
ZXNjcmlwdG9yKTsKICAgICAgICAgcmV0dXJuIEByZWFkYWJsZVN0cmVhbUFkZFJlYWRJbnRvUmVx
dWVzdChzdHJlYW0pOwogICAgIH0KIApAQCAtNjUzLDcgKzY1Myw3IEBAIGZ1bmN0aW9uIHJlYWRh
YmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQdWwKICAgICB9CiAKICAgICBwdWxsSW50b0Rlc2NyaXB0
b3IuYnVmZmVyID0gQHRyYW5zZmVyQnVmZmVyVG9DdXJyZW50UmVhbG0ocHVsbEludG9EZXNjcmlw
dG9yLmJ1ZmZlcik7Ci0gICAgQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5k
aW5nUHVsbEludG9zIikuQHB1c2gocHVsbEludG9EZXNjcmlwdG9yKTsKKyAgICBAYXJyYXlQdXNo
KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9sbGVyLCAicGVuZGluZ1B1bGxJbnRvcyIpLCBw
dWxsSW50b0Rlc2NyaXB0b3IpOwogICAgIGNvbnN0IHByb21pc2UgPSBAcmVhZGFibGVTdHJlYW1B
ZGRSZWFkSW50b1JlcXVlc3Qoc3RyZWFtKTsKICAgICBAcmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlckNhbGxQdWxsSWZOZWVkZWQoY29udHJvbGxlcik7CiAgICAgcmV0dXJuIHByb21pc2U7CkBA
IC02NjcsNyArNjY3LDcgQEAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1BZGRSZWFkSW50b1JlcXVl
cwogICAgIEBhc3NlcnQoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInN0YXRlIikgPT09
IEBzdHJlYW1SZWFkYWJsZSB8fCBAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAic3RhdGUi
KSA9PT0gQHN0cmVhbUNsb3NlZCk7CiAKICAgICBjb25zdCByZWFkUmVxdWVzdCA9IEBuZXdQcm9t
aXNlKCk7Ci0gICAgQGdldEJ5SWREaXJlY3RQcml2YXRlKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShz
dHJlYW0sICJyZWFkZXIiKSwgInJlYWRJbnRvUmVxdWVzdHMiKS5AcHVzaChyZWFkUmVxdWVzdCk7
CisgICAgQGFycmF5UHVzaChAZ2V0QnlJZERpcmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2
YXRlKHN0cmVhbSwgInJlYWRlciIpLCAicmVhZEludG9SZXF1ZXN0cyIpLCByZWFkUmVxdWVzdCk7
CiAKICAgICByZXR1cm4gcmVhZFJlcXVlc3Q7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCShy
ZXZpc2lvbiAyNjg0NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTc4Myw3ICs3ODMsNyBAQCBm
dW5jdGlvbiByZWFkYWJsZVN0cmVhbUFkZFJlYWRSZXF1ZXN0KHN0CiAgICAgQGFzc2VydChAZ2V0
QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAic3RhdGUiKSA9PSBAc3RyZWFtUmVhZGFibGUpOwog
CiAgICAgY29uc3QgcmVhZFJlcXVlc3QgPSBAbmV3UHJvbWlzZSgpOwotICAgIEBnZXRCeUlkRGly
ZWN0UHJpdmF0ZShAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAicmVhZGVyIiksICJyZWFk
UmVxdWVzdHMiKS5AcHVzaChyZWFkUmVxdWVzdCk7CisgICAgQGFycmF5UHVzaChAZ2V0QnlJZERp
cmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInJlYWRlciIpLCAicmVh
ZFJlcXVlc3RzIiksIHJlYWRSZXF1ZXN0KTsKIAogICAgIHJldHVybiByZWFkUmVxdWVzdDsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0cmVhbUludGVy
bmFscy5qcwkocmV2aXNpb24gMjY4NDU1KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1N0cmVhbUludGVybmFscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQzLDcgKzE0Myw3IEBA
IGZ1bmN0aW9uIGVucXVldWVWYWx1ZVdpdGhTaXplKHF1ZXVlLCB2YWwKICAgICBzaXplID0gQHRv
TnVtYmVyKHNpemUpOwogICAgIGlmICghQGlzRmluaXRlKHNpemUpIHx8IHNpemUgPCAwKQogICAg
ICAgICBAdGhyb3dSYW5nZUVycm9yKCJzaXplIGhhcyBhbiBpbmNvcnJlY3QgdmFsdWUiKTsKLSAg
ICBxdWV1ZS5jb250ZW50LkBwdXNoKHsgdmFsdWU6IHZhbHVlLCBzaXplOiBzaXplIH0pOworICAg
IEBhcnJheVB1c2gocXVldWUuY29udGVudCwgeyB2YWx1ZSwgc2l6ZSB9KTsKICAgICBxdWV1ZS5z
aXplICs9IHNpemU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9X
cml0YWJsZVN0cmVhbUludGVybmFscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMJKHJldmlzaW9uIDI2ODQ1
NSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbUludGVy
bmFscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIGZ1bmN0aW9uIHdyaXRh
YmxlU3RyZWFtQWRkV3JpdGVSZXF1ZXN0KHMKIAogICAgIGNvbnN0IHdyaXRlUHJvbWlzZUNhcGFi
aWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwogICAgIGNvbnN0IHdyaXRl
UmVxdWVzdHMgPSBAZ2V0QnlJZERpcmVjdFByaXZhdGUoc3RyZWFtLCAid3JpdGVSZXF1ZXN0cyIp
OwotICAgIHdyaXRlUmVxdWVzdHMuQHB1c2god3JpdGVQcm9taXNlQ2FwYWJpbGl0eSk7CisgICAg
QGFycmF5UHVzaCh3cml0ZVJlcXVlc3RzLCB3cml0ZVByb21pc2VDYXBhYmlsaXR5KTsKICAgICBy
ZXR1cm4gd3JpdGVQcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411371</attachid>
            <date>2020-10-14 14:12:58 -0700</date>
            <delta_ts>2020-10-14 14:48:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175432-20201015001256.patch</filename>
            <type>text/plain</type>
            <size>20061</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNjg0NzcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDIwLTEwLTE0ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBVc2UgQHB1dEJ5VmFsRGlyZWN0IGluc3RlYWQgb2YgQXJy
YXkucHJvdG90eXBlLkBwdXNoIGluIGJ1aWx0LWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVz
dWtlIFN1enVraS4KKworICAgICAgICAqIHN0cmVzcy9hcnJheS1wdXNoLWludHJpbnNpYy5qczog
QWRkZWQuCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDogTWFyayAyIHRlc3Qg
Y2FzZXMgYXMgcGFzc2luZy4KKwogMjAyMC0xMC0xMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyBzaG91bGQgaGF2
ZSBhIHN0YWNrIG92ZXJmbG93IGNoZWNrCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNo
LWludHJpbnNpYy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLWlu
dHJpbnNpYy5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9hcnJheS1wdXNoLWlu
dHJpbnNpYy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc2IEBACisidXNlIHN0cmljdCI7
CisKK2NvbnN0IGFycmF5UHVzaCA9ICR2bS5jcmVhdGVCdWlsdGluKCIoZnVuY3Rpb24gKGEsIHYp
IHsgQGFycmF5UHVzaChhLCB2KTsgfSkiKTsKK25vSW5saW5lKGFycmF5UHVzaCk7CisKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBCYWQgdmFsdWU6ICR7YWN0dWFsfS5gKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKQoreworICAgIHZh
ciBlcnJvclRocm93biA9IGZhbHNlOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9
IGNhdGNoIChlcnJvcikgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGlm
IChTdHJpbmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCisgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoYEJhZCBlcnJvcjogJHtlcnJvcn1gKTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93
bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEaWRuJ3QgdGhyb3chIik7Cit9CisKK3Nob3Vs
ZFRocm93KAorICAgICgpID0+IGFycmF5UHVzaCh4LCB5KSwKKyAgICAiUmVmZXJlbmNlRXJyb3I6
IENhbid0IGZpbmQgdmFyaWFibGU6IHgiLAorKTsKKworc2hvdWxkVGhyb3coCisgICAgKCkgPT4g
YXJyYXlQdXNoKHsgZ2V0IGxlbmd0aCgpIHsgdGhyb3cgbmV3IEVycm9yKCInbGVuZ3RoJyBzaG91
bGQgYmUgdW5yZWFjaGFibGUuIik7IH0gfSwgeSksCisgICAgIlJlZmVyZW5jZUVycm9yOiBDYW4n
dCBmaW5kIHZhcmlhYmxlOiB5IiwKKyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTsgKytpKSB7
CisgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsIGksIHsKKyAgICAg
ICAgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoaSArICIgZ2V0dGVyIHNob3VsZCBiZSB1bnJlYWNo
YWJsZS4iKTsgfSwKKyAgICAgICAgc2V0KF92YWx1ZSkgeyB0aHJvdyBuZXcgRXJyb3IoaSArICIg
c2V0dGVyIHNob3VsZCBiZSB1bnJlYWNoYWJsZS4iKTsgfSwKKyAgICB9KTsKK30KKworKCgpID0+
IHsKKyAgICBjb25zdCBhcnIgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNTsgKytp
KSB7CisgICAgICAgIGFycmF5UHVzaChhcnIsIGkpOworICAgICAgICBzaG91bGRCZShhcnJbaV0s
IGkpOworICAgICAgICBzaG91bGRCZShhcnIubGVuZ3RoLCBpICsgMSk7CisgICAgfQorfSkoKTsK
KworKCgpID0+IHsKKyAgICBjb25zdCBtYXhMZW5ndGggPSAyICoqIDMyIC0gMTsKKyAgICBjb25z
dCBzdGFydEluZGV4ID0gbWF4TGVuZ3RoIC0gMWU0OworICAgIGNvbnN0IGFyciA9IG5ldyBBcnJh
eShzdGFydEluZGV4KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgYXJyYXlQdXNoKGFyciwgaSk7CisgICAgICAgIHNob3VsZEJlKGFycltzdGFydEluZGV4
ICsgaV0sIGkpOworICAgICAgICBzaG91bGRCZShhcnIubGVuZ3RoLCBzdGFydEluZGV4ICsgaSAr
IDEpOworICAgIH0KKworICAgIHNob3VsZEJlKGFyci5sZW5ndGgsIG1heExlbmd0aCk7CisKKyAg
ICBmb3IgKGxldCBpID0gMDsgaSA8IDU7ICsraSkgeworICAgICAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkoT2JqZWN0LnByb3RvdHlwZSwgbWF4TGVuZ3RoICsgaSwgeworICAgICAgICAgICAgZ2V0
KCkgeyB0aHJvdyBuZXcgRXJyb3IoaSArICIgZ2V0dGVyIHNob3VsZCBiZSB1bnJlYWNoYWJsZS4i
KTsgfSwKKyAgICAgICAgICAgIHNldChfdmFsdWUpIHsgdGhyb3cgbmV3IEVycm9yKGkgKyAiIHNl
dHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUuIik7IH0sCisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGZvciAobGV0IGkgPSAxOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgYXJyYXlQdXNoKGFy
ciwgaSk7CisgICAgICAgIHNob3VsZEJlKGFyci5oYXNPd25Qcm9wZXJ0eShtYXhMZW5ndGggKyBp
KSwgZmFsc2UpOworICAgICAgICBzaG91bGRCZShhcnIubGVuZ3RoLCBtYXhMZW5ndGgpOworICAg
IH0KK30pKCk7CkluZGV4OiBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCShyZXZpc2lvbiAyNjg0
NzcpCisrKyBKU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyMzEsOSArMTIzMSw2IEBAIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm9wZXJ0eS1lc2Nh
cGVzL2cKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9wcm90b3R5cGUvU3ltYm9sLm1hdGNoL2J1aWx0
aW4taW5mZXItdW5pY29kZS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKr77+9wrssIMKrbnVsbMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKr77+9wrssIMKrbnVsbMK7KSB0byBi
ZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3RvdHlwZS9TeW1ib2wucmVwbGFjZS9w
b2lzb25lZC1zdGRsaWIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IDAgc2V0dGVyIHNo
b3VsZCBiZSB1bnJlYWNoYWJsZS4nCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiAwIHNl
dHRlciBzaG91bGQgYmUgdW5yZWFjaGFibGUuJwogdGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3Rv
dHlwZS9TeW1ib2wuc2VhcmNoL3UtbGFzdGluZGV4LWFkdmFuY2UuanM6CiAgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzHCuywgwqstMcK7KSB0byBiZSB0cnVl
JwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMcK7
LCDCqy0xwrspIHRvIGJlIHRydWUnCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDI2ODQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMC0xMC0xNCAgQWxleGV5IFNodmF5a2EgIDxzaHZh
aWthbGVzaEBnbWFpbC5jb20+CisKKyAgICAgICAgVXNlIEBwdXRCeVZhbERpcmVjdCBpbnN0ZWFk
IG9mIEFycmF5LnByb3RvdHlwZS5AcHVzaCBpbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTQzMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0Y2gsIEFycmF5LnBy
b3RvdHlwZS5AcHVzaCB3YXMgdXNlZCB0byBpbXBsZW1lbnQgTGlzdCBzcGVjIHR5cGUsCisgICAg
ICAgIHN0YWNrcyAvIHF1ZXVlcywgYW5kIGluIHBsYWNlIG9mIENyZWF0ZURhdGFQcm9wZXJ0eSBb
MV0uCisgICAgICAgIEl0J3MgdW5kZXNpcmFibHkgb2JzZXJ2YWJsZSBzaW5jZSBlbGVtZW50cyBh
cmUgcHVzaGVkIHVzaW5nIFtbU2V0XV0sCisgICAgICAgIGFmZmVjdGluZyBpbmRleGVkIHByb3Bl
cnRpZXMgb24gcHJvdG90eXBlcyBbMl0uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgaW50cm9kdWNl
cyBAYXJyYXlQdXNoKCkgaW50cmluc2ljIHRvIHVzZSB3aXRoIGxpc3RzIC8gc3RhY2tzIC8gcXVl
dWVzLgorICAgICAgICBAYXJyYXlQdXNoKCkgc2hvdWxkIG9ubHkgYmUgdXNlZCB3aXRoIEpTQXJy
YXkgcmVjZWl2ZXJzIGJlY2F1c2UgImxlbmd0aCIgaXNuJ3QKKyAgICAgICAgaW5jcmVtZW50ZWQu
IFVubGlrZSBBcnJheS5wcm90b3R5cGUuQHB1c2gsIGl0IGRvZXNuJ3QgZ3JvdyBhcnJheXMgYmV5
b25kIFVJTlRfTUFYLAorICAgICAgICB3aGljaCBpcyBPSyBmb3IgY3VycmVudCB1c2UgY2FzZXMu
IE9iamVjdC5lbnRyaWVzIG1pY3JvYmVuY2htYXJrIGlzIG5ldXRyYWwuCisKKyAgICAgICAgRGVz
cGl0ZSBBcnJheS5wcm90b3R5cGUuQHNoaWZ0IGFsc28gcGVyZm9ybWluZyBbW1NldF1dLCBpdCdz
IHNhZmUgdG8gdXNlIHdpdGgKKyAgICAgICAgbm9uLXNwYXJzZSByZWNlaXZlcnMuCisKKyAgICAg
ICAgWzFdOiBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZWFycmF5ZnJvbWxpc3Qg
KHN0ZXAgNC5hKQorICAgICAgICBbMl06IGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJy
YXkucHJvdG90eXBlLnB1c2ggKHN0ZXAgNS5hKQorCisgICAgICAgICogYnVpbHRpbnMvQXJyYXlQ
cm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnNvcnRCdWNrZXRTb3J0KToKKyAg
ICAgICAgKiBidWlsdGlucy9PYmplY3RDb25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKGVudHJpZXMp
OgorICAgICAgICAqIGJ1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5qczoKKyAgICAgICAgKGdsb2Jh
bFByaXZhdGUubWF0Y2hTbG93KToKKyAgICAgICAgKFN5bWJvbC5yZXBsYWNlKToKKyAgICAgICAg
KFN5bWJvbC5zcGxpdCk6CisgICAgICAgICogYnVpbHRpbnMvVHlwZWRBcnJheVByb3RvdHlwZS5q
czoKKyAgICAgICAgKGZpbHRlcik6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5z
aWNSZWdpc3RyeS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX2FycmF5
UHVzaCk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkFycmF5UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisKIDIwMjAtMTAtMTMgIFNhYW0g
QmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSlNPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMgc2hvdWxkIGhhdmUgYSBzdGFjayBvdmVyZmxvdyBjaGVjawpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwkocmV2aXNp
b24gMjY4NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90
eXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00NjMsNyArNDYzLDcgQEAgZnVuY3Rpb24gc29ydEJ1
Y2tldFNvcnQoYXJyYXksIGRzdCwgYnVjawogICAgICAgICB2YXIgYyA9IHN0cmluZy5AY2hhckNv
ZGVBdChkZXB0aCk7CiAgICAgICAgIHZhciBjQnVja2V0ID0gYnVja2V0c1tjXTsKICAgICAgICAg
aWYgKGNCdWNrZXQpCi0gICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoY0J1Y2tldCwgY0J1Y2tl
dC5sZW5ndGgsIGVudHJ5KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2goY0J1Y2tldCwgZW50cnkp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QoYnVja2V0cywgYywg
WyBlbnRyeSBdKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
T2JqZWN0Q29uc3RydWN0b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL09iamVjdENvbnN0cnVjdG9yLmpzCShyZXZpc2lvbiAyNjg0NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvT2JqZWN0Q29uc3RydWN0b3IuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAgZnVuY3Rpb24gZW50cmllcyhvYmplY3QpCiAgICAgZm9y
ICh2YXIgaSA9IDAsIGxlbmd0aCA9IG5hbWVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgKytpKSB7CiAg
ICAgICAgIHZhciBuYW1lID0gbmFtZXNbaV07CiAgICAgICAgIGlmIChAcHJvcGVydHlJc0VudW1l
cmFibGUob2JqLCBuYW1lKSkKLSAgICAgICAgICAgIHByb3BlcnRpZXMuQHB1c2goW25hbWUsIG9i
altuYW1lXV0pOworICAgICAgICAgICAgQHB1dEJ5VmFsRGlyZWN0KHByb3BlcnRpZXMsIGksIFtu
YW1lLCBvYmpbbmFtZV1dKTsKICAgICB9CiAKICAgICByZXR1cm4gcHJvcGVydGllczsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9SZWdFeHBQcm90b3R5cGUuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1JlZ0V4cFByb3RvdHlwZS5q
cwkocmV2aXNpb24gMjY4NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Jl
Z0V4cFByb3RvdHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIGZ1bmN0
aW9uIG1hdGNoU2xvdyhyZWdleHAsIHN0cikKICAgICAgICAgaWYgKCFyZXN1bHRTdHJpbmcubGVu
Z3RoKQogICAgICAgICAgICAgcmVnZXhwLmxhc3RJbmRleCA9IEBhZHZhbmNlU3RyaW5nSW5kZXgo
c3RyLCByZWdleHAubGFzdEluZGV4LCB1bmljb2RlKTsKIAotICAgICAgICByZXN1bHRMaXN0LkBw
dXNoKHJlc3VsdFN0cmluZyk7CisgICAgICAgIEBhcnJheVB1c2gocmVzdWx0TGlzdCwgcmVzdWx0
U3RyaW5nKTsKICAgICB9CiB9CiAKQEAgLTMwNyw3ICszMDcsNyBAQCBmdW5jdGlvbiByZXBsYWNl
KHN0ckFyZywgcmVwbGFjZSkKICAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkKICAgICAgICAg
ICAgIGRvbmUgPSB0cnVlOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdExpc3Qu
QHB1c2gocmVzdWx0KTsKKyAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0TGlzdCwgcmVzdWx0
KTsKICAgICAgICAgICAgIGlmICghZ2xvYmFsKQogICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVl
OwogICAgICAgICAgICAgZWxzZSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgZnVuY3Rpb24gcmVwbGFj
ZShzdHJBcmcsIHJlcGxhY2UpCiAgICAgICAgICAgICB2YXIgY2FwTiA9IHJlc3VsdFtuXTsKICAg
ICAgICAgICAgIGlmIChjYXBOICE9PSBAdW5kZWZpbmVkKQogICAgICAgICAgICAgICAgIGNhcE4g
PSBAdG9TdHJpbmcoY2FwTik7Ci0gICAgICAgICAgICBjYXB0dXJlcy5AcHVzaChjYXBOKTsKKyAg
ICAgICAgICAgIEBhcnJheVB1c2goY2FwdHVyZXMsIGNhcE4pOwogICAgICAgICB9CiAKICAgICAg
ICAgdmFyIHJlcGxhY2VtZW50OwpAQCAtMzQ5LDEzICszNDksMTMgQEAgZnVuY3Rpb24gcmVwbGFj
ZShzdHJBcmcsIHJlcGxhY2UpCiAgICAgICAgIGlmIChmdW5jdGlvbmFsUmVwbGFjZSkgewogICAg
ICAgICAgICAgdmFyIHJlcGxhY2VyQXJncyA9IFsgbWF0Y2hlZCBdOwogICAgICAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBjYXB0dXJlcy5sZW5ndGg7IGorKykKLSAgICAgICAgICAgICAgICBy
ZXBsYWNlckFyZ3MuQHB1c2goY2FwdHVyZXNbal0pOworICAgICAgICAgICAgICAgIEBhcnJheVB1
c2gocmVwbGFjZXJBcmdzLCBjYXB0dXJlc1tqXSk7CiAKLSAgICAgICAgICAgIHJlcGxhY2VyQXJn
cy5AcHVzaChwb3NpdGlvbik7Ci0gICAgICAgICAgICByZXBsYWNlckFyZ3MuQHB1c2goc3RyKTsK
KyAgICAgICAgICAgIEBhcnJheVB1c2gocmVwbGFjZXJBcmdzLCBwb3NpdGlvbik7CisgICAgICAg
ICAgICBAYXJyYXlQdXNoKHJlcGxhY2VyQXJncywgc3RyKTsKIAogICAgICAgICAgICAgaWYgKG5h
bWVkQ2FwdHVyZXMgIT09IEB1bmRlZmluZWQpCi0gICAgICAgICAgICAgICAgcmVwbGFjZXJBcmdz
LkBwdXNoKG5hbWVkQ2FwdHVyZXMpOworICAgICAgICAgICAgICAgIEBhcnJheVB1c2gocmVwbGFj
ZXJBcmdzLCBuYW1lZENhcHR1cmVzKTsKIAogICAgICAgICAgICAgdmFyIHJlcGxWYWx1ZSA9IHJl
cGxhY2UuQGFwcGx5KEB1bmRlZmluZWQsIHJlcGxhY2VyQXJncyk7CiAgICAgICAgICAgICByZXBs
YWNlbWVudCA9IEB0b1N0cmluZyhyZXBsVmFsdWUpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIGZ1bmN0
aW9uIHNwbGl0KHN0cmluZywgbGltaXQpCiAgICAgICAgICAgICAgICAgdmFyIHN1YlN0ciA9IEBz
dHJpbmdTdWJzdHJpbmdJbnRlcm5hbC5AY2FsbChzdHIsIHBvc2l0aW9uLCBtYXRjaFBvc2l0aW9u
KTsKICAgICAgICAgICAgICAgICAvLyAyLiBQZXJmb3JtICEgQ3JlYXRlRGF0YVByb3BlcnR5KEEs
ICEgVG9TdHJpbmcobGVuZ3RoQSksIFQpLgogICAgICAgICAgICAgICAgIC8vIDMuIExldCBsZW5n
dGhBIGJlIGxlbmd0aEEgKyAxLgotICAgICAgICAgICAgICAgIEBwdXRCeVZhbERpcmVjdChyZXN1
bHQsIHJlc3VsdC5sZW5ndGgsIHN1YlN0cik7CisgICAgICAgICAgICAgICAgQGFycmF5UHVzaChy
ZXN1bHQsIHN1YlN0cik7CiAgICAgICAgICAgICAgICAgLy8gNC4gSWYgbGVuZ3RoQSA9IGxpbSwg
cmV0dXJuIEEuCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPT0gbGltaXQpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01ODUsNyArNTg1LDcgQEAgZnVu
Y3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKICAgICAgICAgICAgICAgICAgICAgdmFyIG5leHRD
YXB0dXJlID0gbWF0Y2hlc1tpXTsKICAgICAgICAgICAgICAgICAgICAgLy8gYi4gUGVyZm9ybSAh
IENyZWF0ZURhdGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBuZXh0Q2FwdHVyZSku
CiAgICAgICAgICAgICAgICAgICAgIC8vIGQuIExldCBsZW5ndGhBIGJlIGxlbmd0aEEgKyAxLgot
ICAgICAgICAgICAgICAgICAgICBAcHV0QnlWYWxEaXJlY3QocmVzdWx0LCByZXN1bHQubGVuZ3Ro
LCBuZXh0Q2FwdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIEBhcnJheVB1c2gocmVzdWx0LCBu
ZXh0Q2FwdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgIC8vIGUuIElmIGxlbmd0aEEgPSBsaW0s
IHJldHVybiBBLgogICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PSBsaW1p
dCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC02MDAsNyArNjAw
LDcgQEAgZnVuY3Rpb24gc3BsaXQoc3RyaW5nLCBsaW1pdCkKICAgICAvLyAyMC4gTGV0IFQgYmUg
YSBTdHJpbmcgdmFsdWUgZXF1YWwgdG8gdGhlIHN1YnN0cmluZyBvZiBTIGNvbnNpc3Rpbmcgb2Yg
dGhlIGVsZW1lbnRzIGF0IGluZGljZXMgcCAoaW5jbHVzaXZlKSB0aHJvdWdoIHNpemUgKGV4Y2x1
c2l2ZSkuCiAgICAgdmFyIHJlbWFpbmluZ1N0ciA9IEBzdHJpbmdTdWJzdHJpbmdJbnRlcm5hbC5A
Y2FsbChzdHIsIHBvc2l0aW9uLCBzaXplKTsKICAgICAvLyAyMS4gUGVyZm9ybSAhIENyZWF0ZURh
dGFQcm9wZXJ0eShBLCAhIFRvU3RyaW5nKGxlbmd0aEEpLCBUKS4KLSAgICBAcHV0QnlWYWxEaXJl
Y3QocmVzdWx0LCByZXN1bHQubGVuZ3RoLCByZW1haW5pbmdTdHIpOworICAgIEBhcnJheVB1c2go
cmVzdWx0LCByZW1haW5pbmdTdHIpOwogICAgIC8vIDIyLiBSZXR1cm4gQS4KICAgICByZXR1cm4g
cmVzdWx0OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1R5cGVkQXJy
YXlQcm90b3R5cGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL1R5cGVkQXJyYXlQcm90b3R5cGUuanMJKHJldmlzaW9uIDI2ODQ3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9idWlsdGlucy9UeXBlZEFycmF5UHJvdG90eXBlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zNDAsNyArMzQwLDcgQEAgZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlz
QXJnICovKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAg
dmFyIHZhbHVlID0gdGhpc1tpXTsKICAgICAgICAgaWYgKGNhbGxiYWNrLkBjYWxsKHRoaXNBcmcs
IHZhbHVlLCBpLCB0aGlzKSkKLSAgICAgICAgICAgIGtlcHQuQHB1c2godmFsdWUpOworICAgICAg
ICAgICAgQGFycmF5UHVzaChrZXB0LCB2YWx1ZSk7CiAgICAgfQogICAgIHZhciBsZW5ndGggPSBr
ZXB0Lmxlbmd0aDsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlSW50cmluc2ljUmVnaXN0cnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdpc3RyeS5oCShyZXZpc2lvbiAyNjg0Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVJbnRyaW5zaWNSZWdp
c3RyeS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3MgTGlua1Rp
bWVDb25zdGFudCA6IGludDMyX3Q7CiAjZGVmaW5lIEpTQ19DT01NT05fQllURUNPREVfSU5UUklO
U0lDX0ZVTkNUSU9OU19FQUNIX05BTUUobWFjcm8pIFwKICAgICBtYWNybyhhcmd1bWVudCkgXAog
ICAgIG1hY3JvKGFyZ3VtZW50Q291bnQpIFwKKyAgICBtYWNybyhhcnJheVB1c2gpIFwKICAgICBt
YWNybyhnZXRCeUlkRGlyZWN0KSBcCiAgICAgbWFjcm8oZ2V0QnlJZERpcmVjdFByaXZhdGUpIFwK
ICAgICBtYWNybyhnZXRQcm90b3R5cGVPZikgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkocmV2aXNpb24gMjY4NDc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzg4LDYgKzEzODgsMTkgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0XwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEFyZ3VtZW50
Q291bnQoZ2VuZXJhdG9yLmZpbmFsRGVzdGluYXRpb24oZHN0KSk7CiB9CiAKK1JlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfYXJyYXlQdXNoKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOworICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBiYXNlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgIG5vZGUgPSBub2RlLT5tX25l
eHQ7CisgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5v
ZGUpOworCisgICAgQVNTRVJUKCFub2RlLT5tX25leHQpOworCisgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGxlbmd0aCA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGJhc2UuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKTsK
KyAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5
VmFsKGJhc2UuZ2V0KCksIGxlbmd0aC5nZXQoKSwgdmFsdWUuZ2V0KCkpKTsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY19wdXRCeUlkRGlyZWN0
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
cmd1bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNp
b24gMjY4NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIHZvaWQgQXJyYXlQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiAKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5qb2luLCBhcnJheVByb3RvRnVuY0pvaW4sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxKTsKICAg
ICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04oInBvcCIs
IGFycmF5UHJvdG9GdW5jUG9wLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSwgMCwgQXJyYXlQb3BJbnRyaW5zaWMpOwogICAgIEpTQ19OQVRJVkVfSU5U
UklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWls
dGluTmFtZXMoKS5wdXNoUHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY1B1c2gsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pLCAxLCBBcnJheVB1c2hJ
bnRyaW5zaWMpOwotICAgIEpTQ19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJB
TlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5wdXNoUHJpdmF0ZU5hbWUo
KSwgYXJyYXlQcm90b0Z1bmNQdXNoLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwg
MSwgQXJyYXlQdXNoSW50cmluc2ljKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OX1dJVEhPVVRf
VFJBTlNJVElPTigicmV2ZXJzZSIsIGFycmF5UHJvdG9GdW5jUmV2ZXJzZSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSksIDApOwogICAgIEpTQ19OQVRJ
VkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5O
YW1lcygpLnNoaWZ0UHVibGljTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkuc2hpZnRQcml2YXRlTmFtZSgpLCBhcnJheVByb3RvRnVuY1NoaWZ0LCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSwgMCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
Njg0NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNiBAQAorMjAyMC0xMC0xNCAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CisKKyAgICAgICAgVXNlIEBwdXRCeVZhbERpcmVjdCBpbnN0ZWFkIG9mIEFycmF5LnBy
b3RvdHlwZS5AcHVzaCBpbiBidWlsdC1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NTQzMgorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBT
dXp1a2kuCisKKyAgICAgICAgVXNlIEBhcnJheVB1c2goKSBpbnRyaW5zaWMgaW5zdGVhZCBvZiBB
cnJheS5wcm90b3R5cGUuQHB1c2guCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlv
ciBjaGFuZ2UuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVCeXRlU3RyZWFt
SW50ZXJuYWxzLmpzOgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlclB1bGwp
OgorICAgICAgICAocmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVucXVldWVDaHVuayk6Cisg
ICAgICAgIChyZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHVsbEludG8pOgorICAgICAgICAo
cmVhZGFibGVTdHJlYW1BZGRSZWFkSW50b1JlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qczoKKyAgICAgICAgKHJlYWRhYmxlU3RyZWFt
QWRkUmVhZFJlcXVlc3QpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5h
bHMuanM6CisgICAgICAgIChlbnF1ZXVlVmFsdWVXaXRoU2l6ZSk6CisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOgorICAgICAgICAod3JpdGFibGVT
dHJlYW1BZGRXcml0ZVJlcXVlc3QpOgorCiAyMDIwLTEwLTE0ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYVJlY29yZGVyIC5zdG9wIHNob3VsZCBub3Qg
dGhyb3cgaW4gSW5hY3RpdmUgc3RhdGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFscy5qcwko
cmV2aXNpb24gMjY4NDc3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlQnl0ZVN0cmVhbUludGVybmFscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQzLDcgKzI0Myw3
IEBAIGZ1bmN0aW9uIHJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJQdWwKICAgICAgICAgICAg
IGN0b3I6IEBVaW50OEFycmF5LAogICAgICAgICAgICAgcmVhZGVyVHlwZTogJ2RlZmF1bHQnCiAg
ICAgICAgIH07Ci0gICAgICAgIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9sbGVyLCAicGVu
ZGluZ1B1bGxJbnRvcyIpLkBwdXNoKHB1bGxJbnRvRGVzY3JpcHRvcik7CisgICAgICAgIEBhcnJh
eVB1c2goQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbEludG9z
IiksIHB1bGxJbnRvRGVzY3JpcHRvcik7CiAgICAgfQogCiAgICAgY29uc3QgcHJvbWlzZSA9IEBy
ZWFkYWJsZVN0cmVhbUFkZFJlYWRSZXF1ZXN0KHN0cmVhbSk7CkBAIC0zNDcsNyArMzQ3LDcgQEAg
ZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckVucQogewogICAgICJ1c2Ugc3Ry
aWN0IjsKIAotICAgIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9sbGVyLCAicXVldWUiKS5j
b250ZW50LkBwdXNoKHsKKyAgICBAYXJyYXlQdXNoKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250
cm9sbGVyLCAicXVldWUiKS5jb250ZW50LCB7CiAgICAgICAgIGJ1ZmZlcjogYnVmZmVyLAogICAg
ICAgICBieXRlT2Zmc2V0OiBieXRlT2Zmc2V0LAogICAgICAgICBieXRlTGVuZ3RoOiBieXRlTGVu
Z3RoCkBAIC02MzAsNyArNjMwLDcgQEAgZnVuY3Rpb24gcmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlclB1bAogCiAgICAgaWYgKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9sbGVyLCAicGVu
ZGluZ1B1bGxJbnRvcyIpLmxlbmd0aCkgewogICAgICAgICBwdWxsSW50b0Rlc2NyaXB0b3IuYnVm
ZmVyID0gQHRyYW5zZmVyQnVmZmVyVG9DdXJyZW50UmVhbG0ocHVsbEludG9EZXNjcmlwdG9yLmJ1
ZmZlcik7Ci0gICAgICAgIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9sbGVyLCAicGVuZGlu
Z1B1bGxJbnRvcyIpLkBwdXNoKHB1bGxJbnRvRGVzY3JpcHRvcik7CisgICAgICAgIEBhcnJheVB1
c2goQGdldEJ5SWREaXJlY3RQcml2YXRlKGNvbnRyb2xsZXIsICJwZW5kaW5nUHVsbEludG9zIiks
IHB1bGxJbnRvRGVzY3JpcHRvcik7CiAgICAgICAgIHJldHVybiBAcmVhZGFibGVTdHJlYW1BZGRS
ZWFkSW50b1JlcXVlc3Qoc3RyZWFtKTsKICAgICB9CiAKQEAgLTY1Myw3ICs2NTMsNyBAQCBmdW5j
dGlvbiByZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyUHVsCiAgICAgfQogCiAgICAgcHVsbElu
dG9EZXNjcmlwdG9yLmJ1ZmZlciA9IEB0cmFuc2ZlckJ1ZmZlclRvQ3VycmVudFJlYWxtKHB1bGxJ
bnRvRGVzY3JpcHRvci5idWZmZXIpOwotICAgIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShjb250cm9s
bGVyLCAicGVuZGluZ1B1bGxJbnRvcyIpLkBwdXNoKHB1bGxJbnRvRGVzY3JpcHRvcik7CisgICAg
QGFycmF5UHVzaChAZ2V0QnlJZERpcmVjdFByaXZhdGUoY29udHJvbGxlciwgInBlbmRpbmdQdWxs
SW50b3MiKSwgcHVsbEludG9EZXNjcmlwdG9yKTsKICAgICBjb25zdCBwcm9taXNlID0gQHJlYWRh
YmxlU3RyZWFtQWRkUmVhZEludG9SZXF1ZXN0KHN0cmVhbSk7CiAgICAgQHJlYWRhYmxlQnl0ZVN0
cmVhbUNvbnRyb2xsZXJDYWxsUHVsbElmTmVlZGVkKGNvbnRyb2xsZXIpOwogICAgIHJldHVybiBw
cm9taXNlOwpAQCAtNjY3LDcgKzY2Nyw3IEBAIGZ1bmN0aW9uIHJlYWRhYmxlU3RyZWFtQWRkUmVh
ZEludG9SZXF1ZXMKICAgICBAYXNzZXJ0KEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJz
dGF0ZSIpID09PSBAc3RyZWFtUmVhZGFibGUgfHwgQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVh
bSwgInN0YXRlIikgPT09IEBzdHJlYW1DbG9zZWQpOwogCiAgICAgY29uc3QgcmVhZFJlcXVlc3Qg
PSBAbmV3UHJvbWlzZSgpOwotICAgIEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShAZ2V0QnlJZERpcmVj
dFByaXZhdGUoc3RyZWFtLCAicmVhZGVyIiksICJyZWFkSW50b1JlcXVlc3RzIikuQHB1c2gocmVh
ZFJlcXVlc3QpOworICAgIEBhcnJheVB1c2goQGdldEJ5SWREaXJlY3RQcml2YXRlKEBnZXRCeUlk
RGlyZWN0UHJpdmF0ZShzdHJlYW0sICJyZWFkZXIiKSwgInJlYWRJbnRvUmVxdWVzdHMiKSwgcmVh
ZFJlcXVlc3QpOwogCiAgICAgcmV0dXJuIHJlYWRSZXF1ZXN0OwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVy
bmFscy5qcwkocmV2aXNpb24gMjY4NDc3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03ODMsNyAr
NzgzLDcgQEAgZnVuY3Rpb24gcmVhZGFibGVTdHJlYW1BZGRSZWFkUmVxdWVzdChzdAogICAgIEBh
c3NlcnQoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInN0YXRlIikgPT0gQHN0cmVhbVJl
YWRhYmxlKTsKIAogICAgIGNvbnN0IHJlYWRSZXF1ZXN0ID0gQG5ld1Byb21pc2UoKTsKLSAgICBA
Z2V0QnlJZERpcmVjdFByaXZhdGUoQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgInJlYWRl
ciIpLCAicmVhZFJlcXVlc3RzIikuQHB1c2gocmVhZFJlcXVlc3QpOworICAgIEBhcnJheVB1c2go
QGdldEJ5SWREaXJlY3RQcml2YXRlKEBnZXRCeUlkRGlyZWN0UHJpdmF0ZShzdHJlYW0sICJyZWFk
ZXIiKSwgInJlYWRSZXF1ZXN0cyIpLCByZWFkUmVxdWVzdCk7CiAKICAgICByZXR1cm4gcmVhZFJl
cXVlc3Q7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50
ZXJuYWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9T
dHJlYW1JbnRlcm5hbHMuanMJKHJldmlzaW9uIDI2ODQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3
ICsxNDMsNyBAQCBmdW5jdGlvbiBlbnF1ZXVlVmFsdWVXaXRoU2l6ZShxdWV1ZSwgdmFsCiAgICAg
c2l6ZSA9IEB0b051bWJlcihzaXplKTsKICAgICBpZiAoIUBpc0Zpbml0ZShzaXplKSB8fCBzaXpl
IDwgMCkKICAgICAgICAgQHRocm93UmFuZ2VFcnJvcigic2l6ZSBoYXMgYW4gaW5jb3JyZWN0IHZh
bHVlIik7Ci0gICAgcXVldWUuY29udGVudC5AcHVzaCh7IHZhbHVlOiB2YWx1ZSwgc2l6ZTogc2l6
ZSB9KTsKKyAgICBAYXJyYXlQdXNoKHF1ZXVlLmNvbnRlbnQsIHsgdmFsdWUsIHNpemUgfSk7CiAg
ICAgcXVldWUuc2l6ZSArPSBzaXplOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCShyZXZp
c2lvbiAyNjg0NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBmdW5j
dGlvbiB3cml0YWJsZVN0cmVhbUFkZFdyaXRlUmVxdWVzdChzCiAKICAgICBjb25zdCB3cml0ZVBy
b21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KEBQcm9taXNlKTsKICAgICBj
b25zdCB3cml0ZVJlcXVlc3RzID0gQGdldEJ5SWREaXJlY3RQcml2YXRlKHN0cmVhbSwgIndyaXRl
UmVxdWVzdHMiKTsKLSAgICB3cml0ZVJlcXVlc3RzLkBwdXNoKHdyaXRlUHJvbWlzZUNhcGFiaWxp
dHkpOworICAgIEBhcnJheVB1c2god3JpdGVSZXF1ZXN0cywgd3JpdGVQcm9taXNlQ2FwYWJpbGl0
eSk7CiAgICAgcmV0dXJuIHdyaXRlUHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>