<?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>230600</bug_id>
          
          <creation_ts>2021-09-22 00:51:54 -0700</creation_ts>
          <short_desc>Web Inspector: add a pinned [+] button to the tab bar to make it easier to re-open closed tabs</short_desc>
          <delta_ts>2021-09-22 21:09:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795972</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-22 00:51:54 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795973</commentid>
    <comment_count>1</comment_count>
      <attachid>438930</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-22 00:52:20 -0700</bug_when>
    <thetext>Created attachment 438930
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796088</commentid>
    <comment_count>2</comment_count>
      <attachid>438930</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2021-09-22 08:40:01 -0700</bug_when>
    <thetext>Comment on attachment 438930
Patch

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

Nice! Much more discoverable. Provision r+ from me.

&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:770
&gt; +        contextMenu.show();

Aside: It&apos;s unfortunate I still haven&apos;t let us provide a coordinate at which to show the menu so it can be more neatly aligned below the tab bar item.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796092</commentid>
    <comment_count>3</comment_count>
      <attachid>438930</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-09-22 08:52:57 -0700</bug_when>
    <thetext>Comment on attachment 438930
Patch

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

r=me

&gt; Source/WebInspectorUI/ChangeLog:23
&gt; +        Drive-by: Remove `_handleTabContainerClick` as tabs can only be removed from the contextmenu.

s/from/by using/

So in other words, this is dead code. Right? I wasn&apos;t able to trigger the previous behavior of &quot;option-click to delete&quot; in a build without this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796345</commentid>
    <comment_count>4</comment_count>
      <attachid>438930</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-22 20:37:41 -0700</bug_when>
    <thetext>Comment on attachment 438930
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:23
&gt;&gt; +        Drive-by: Remove `_handleTabContainerClick` as tabs can only be removed from the contextmenu.
&gt; 
&gt; s/from/by using/
&gt; 
&gt; So in other words, this is dead code. Right? I wasn&apos;t able to trigger the previous behavior of &quot;option-click to delete&quot; in a build without this change.

Correct.  I wasn&apos;t even able to get this event listener to fire.  I think some other things may be `stopPropagation`.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TabBar.js:770
&gt;&gt; +        contextMenu.show();
&gt; 
&gt; Aside: It&apos;s unfortunate I still haven&apos;t let us provide a coordinate at which to show the menu so it can be more neatly aligned below the tab bar item.

Heh yeah that would be nice to have.  I could imagine using that in a bunch of places to simulate the behavior of a `&lt;select&gt;` where the text in the page lines up with the text inside the contextmenu.  Would love to see it =D

We probably just need another method along the lines of `InspectorFrontendHost::dispatchEventAsContextMenuEvent` that takes an `EventTarget` (or even just `float x, float y`) and does all the logic from there .  Frankly the fact that we require a `MouseEvent` is quite arbitrary (other than having a mouse location).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796346</commentid>
    <comment_count>5</comment_count>
      <attachid>439008</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-22 20:38:43 -0700</bug_when>
    <thetext>Created attachment 439008
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796349</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-22 21:08:35 -0700</bug_when>
    <thetext>Committed r282905 (242033@main): &lt;https://commits.webkit.org/242033@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439008.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796350</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 21:09:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/83430573&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438930</attachid>
            <date>2021-09-22 00:52:20 -0700</date>
            <delta_ts>2021-09-22 20:38:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tab-bar.diff</filename>
            <type>text/plain</type>
            <size>15803</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY2YTcyNjZhNmE4OS4uNWY5NzdhNTc4ODUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wOS0xOSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWRkIGEgcGlubmVkIFsrXSBidXR0b24gdG8gdGhlIHRhYiBiYXIgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcmUtb3BlbiBjbG9zZWQgdGFicworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMwNjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYkJhci5qczoKKyAgICAgICAg
KFdJLlRhYkJhcik6CisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLnNlbGVjdFRhYkJhckl0
ZW0pOgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0ku
VGFiQmFyLnByb3RvdHlwZS5fcGlubmVkQnV0dG9ucyk6IEFkZGVkLgorICAgICAgICAoV0kuVGFi
QmFyLnByb3RvdHlwZS5fY2xvc2VkVGFiQ2xhc3Nlcyk6IEFkZGVkLgorICAgICAgICAoV0kuVGFi
QmFyLnByb3RvdHlwZS5faGFuZGxlVGFiQ29udGFpbmVyTW91c2VEb3duKToKKyAgICAgICAgKFdJ
LlRhYkJhci5wcm90b3R5cGUuX2hhbmRsZVNob3dIaWRkZW5UYWJzVGFiQmFySXRlbU1vdXNlRG93
bik6IEFkZGVkLgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5faGFuZGxlQWRkQ2xvc2Vk
VGFic1RhYkJhckl0ZW1Nb3VzZURvd24pOiBBZGRlZC4KKyAgICAgICAgKFdJLlRhYkJhci5wcm90
b3R5cGUuX2hhbmRsZVRhYkNvbnRhaW5lckNsaWNrKTogRGVsZXRlZC4KKyAgICAgICAgQWRkIGEg
YF9vcGVuQ2xvc2VkVGFic1RhYkJhckl0ZW1gIHRoYXQncyBhIGBXSS5QaW5uZWRUYWJCYXJJdGVt
YCB3aXRob3V0IGEgYHJlcHJlc2VudGVkT2JqZWN0YCwKKyAgICAgICAgbWVhbmluZyB0aGF0IGl0
J3MgYmFzaWNhbGx5IGp1c3QgYSBidXR0b24gYW5kIHdvbid0IGFjdHVhbGx5IG9wZW4gYSB0YWIg
d2hlbiBjbGlja2VkLiBUaGlzCisgICAgICAgIHN1aXRzIG91ciBwdXJwb3NlcyBwZXJmZWN0bHkg
YXMgd2Ugb25seSB3YW50IHRvIHNob3cgYSBjb250ZXh0bWVudSBvbiBjbGljaywgbm90IHRvIG1l
bnRpb24KKyAgICAgICAgdGhhdCBpdCB3aWxsIG9ubHkgYmUgc2hvd24gaWYgdGhlcmUgYXJlIGNs
b3NlZCB0YWJzLgorICAgICAgICBEcml2ZS1ieTogUmVuYW1lIGBfdGFiUGlja2VyVGFiQmFySXRl
bWAgdG8gYF9zaG93SGlkZGVuVGFic1RhYkJhckl0ZW1gIHRvIGNsYXJpZnkgcHVycG9zZS4KKyAg
ICAgICAgRHJpdmUtYnk6IFJlbW92ZSBgX2hhbmRsZVRhYkNvbnRhaW5lckNsaWNrYCBhcyB0YWJz
IGNhbiBvbmx5IGJlIHJlbW92ZWQgZnJvbSB0aGUgY29udGV4dG1lbnUuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0ltYWdlcy9PdmVyZmxvdy5zdmc6IFJlbmFtZWQgZnJvbSBVc2VySW50ZXJm
YWNlL0ltYWdlcy9UYWJQaWNrZXIuc3ZnLgorICAgICAgICBEcml2ZS1ieTogUmVuYW1lIHRvIGNs
YXJpZnkgcHVycG9zZS4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qczoKKwogMjAyMS0wOC0yNyAgUnVzc2VsbCBFcHN0ZWluICA8cmVwc3RlaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIExhbmQgV2luZG93cyBidWlsZCBmaXhlcyBmcm9tIHNhZmFy
aS02MTIuMS4yOS4xNC1icmFuY2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCBmM2Y4ZDk4YjI1ZmIuLmVhYzYxZGYyYTk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzCkBAIC0xMDI3LDYgKzEwMjcsNyBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJPbmxpbmUiXSA9
ICJPbmxpbmUiOwogbG9jYWxpemVkU3RyaW5nc1siT25seSBzaG93IHJlc291cmNlcyB3aXRoIGlz
c3VlcyJdID0gIk9ubHkgc2hvdyByZXNvdXJjZXMgd2l0aCBpc3N1ZXMiOwogbG9jYWxpemVkU3Ry
aW5nc1siT25seSBzaG93IHZpc3VhbCBhY3Rpb25zIl0gPSAiT25seSBzaG93IHZpc3VhbCBhY3Rp
b25zIjsKIGxvY2FsaXplZFN0cmluZ3NbIk9wZW4iXSA9ICJPcGVuIjsKK2xvY2FsaXplZFN0cmlu
Z3NbIk9wZW4gY2xvc2VkIHRhYnNcdTIwMjYiXSA9ICJPcGVuIGNsb3NlZCB0YWJzXHUyMDI2IjsK
IC8qIENvbnRleHQgbWVudSBpdGVtIGZvciBvcGVuaW5nIHRoZSB0YXJnZXQgaXRlbSBpbiBhIG5l
dyB3aW5kb3cuICovCiBsb2NhbGl6ZWRTdHJpbmdzWyJPcGVuIGluIE5ldyBXaW5kb3cgQCBDb250
ZXh0IE1lbnUgSXRlbSJdID0gIk9wZW4gaW4gTmV3IFdpbmRvdyI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJPcHRpb24tY2xpY2sgdG8gc2hvdyBzb3VyY2UiXSA9ICJPcHRpb24tY2xpY2sgdG8gc2hvdyBz
b3VyY2UiOwpAQCAtMTM0Myw3ICsxMzQ0LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siU2hvdyBjb21w
b3NpdGluZyBib3JkZXJzIl0gPSAiU2hvdyBjb21wb3NpdGluZyBib3JkZXJzIjsKIC8qIExhYmVs
IGZvciBvcHRpb24gdG8gdG9nZ2xlIHRoZSBleHRlbmRlZCBsaW5lcyBzZXR0aW5nIGZvciBDU1Mg
Z3JpZCBvdmVybGF5cyAqLwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBleHRlbmRlZCBsaW5lcyBA
IExheW91dCBQYW5lbCBPdmVybGF5IE9wdGlvbnMiXSA9ICJFeHRlbmRlZCBHcmlkIExpbmVzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlNob3cgZnVsbCBjZXJ0aWZpY2F0ZSJdID0gIlNob3cgZnVsbCBj
ZXJ0aWZpY2F0ZSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGhpZGRlbiB0YWJzIl0gPSAiU2hv
dyBoaWRkZW4gdGFicyI7Citsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGhpZGRlbiB0YWJzXHUyMDI2
Il0gPSAiU2hvdyBoaWRkZW4gdGFic1x1MjAyNiI7CiAvKiBTZXR0aW5ncyB0YWIgY2hlY2tib3gg
bGFiZWwgZm9yIHdoZXRoZXIgdGhlIGluZGVwZW5kZW50IHN0eWxlcyBzaWRlYmFyIHNob3VsZCBi
ZSBzaG93biAqLwogbG9jYWxpemVkU3RyaW5nc1siU2hvdyBpbmRlcGVuZGVudCBTdHlsZXMgc2lk
ZWJhciBAIFNldHRpbmdzIEVsZW1lbnRzIFBhbmUiXSA9ICJTaG93IGluZGVwZW5kZW50IFN0eWxl
cyBzaWRlYmFyIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNob3cganVtcCB0byBlZmZlY3RpdmUgcHJv
cGVydHkgYnV0dG9uIl0gPSAiU2hvdyBqdW1wIHRvIGVmZmVjdGl2ZSBwcm9wZXJ0eSBidXR0b24i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2Vz
L092ZXJmbG93LnN2ZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdl
cy9PdmVyZmxvdy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5k
NjFlZDFkNmNjNjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9JbWFnZXMvT3ZlcmZsb3cuc3ZnCkBAIC0wLDAgKzEsNiBAQAorPD94bWwgdmVy
c2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IMKpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAtLT4KKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTMg
MTYiPgorICAgIDxwYXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDIg
NCBMIDYgOCBMIDIgMTIiLz4KKyAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRD
b2xvciIgZD0iTSA3IDQgTCAxMSA4IEwgNyAxMiIvPgorPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGFiUGlja2VyLnN2ZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9UYWJQaWNrZXIuc3ZnCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjFlZDFkNmNjNjUuLjAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGFiUGlja2Vy
LnN2ZworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBl
bmNvZGluZz0idXRmLTgiPz4KLTwhLS0gQ29weXJpZ2h0IMKpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLiAtLT4KLTxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAv
c3ZnIiBpZD0icm9vdCIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgMTMgMTYiPgotICAgIDxw
YXRoIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBkPSJNIDIgNCBMIDYgOCBMIDIg
MTIiLz4KLSAgICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSA3
IDQgTCAxMSA4IEwgNyAxMiIvPgotPC9zdmc+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJCYXIuanMKaW5kZXggYmQ2NDE2YTFjMDQ1Li40MWZh
ZjgwZDY0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RhYkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJCYXIuanMKQEAgLTQyLDcgKzQyLDYgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl90YWJDb250YWluZXIuY2xhc3NOYW1l
ID0gInRhYnMiOwogICAgICAgICB0aGlzLl90YWJDb250YWluZXIuc2V0QXR0cmlidXRlKCJyb2xl
IiwgInRhYmxpc3QiKTsKICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX2hhbmRsZVRhYkNvbnRhaW5lck1vdXNlRG93bi5iaW5kKHRo
aXMpKTsKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5faGFuZGxlVGFiQ29udGFpbmVyQ2xpY2suYmluZCh0aGlzKSk7CiAgICAgICAgIHRo
aXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5faGFu
ZGxlVGFiQ29udGFpbmVyTW91c2VMZWF2ZS5iaW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fdGFi
Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlVGFi
Q29udGFpbmVyQ29udGV4dE1lbnUuYmluZCh0aGlzKSk7CiAKQEAgLTU1LDEyICs1NCwxNyBAQCBX
SS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMuX3Rh
YkJhckl0ZW1zID0gW107CiAgICAgICAgIHRoaXMuX2hpZGRlblRhYkJhckl0ZW1zID0gW107CiAK
LSAgICAgICAgY29uc3QgdGFiUGlja2VyUmVwcmVzZW50ZWRPYmplY3QgPSBudWxsOwotICAgICAg
ICBjb25zdCB0YWJQaWNrZXJEaXNwbGF5TmFtZSA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3RhYlBp
Y2tlclRhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbSh0YWJQaWNrZXJSZXByZXNl
bnRlZE9iamVjdCwgIkltYWdlcy9UYWJQaWNrZXIuc3ZnIiwgdGFiUGlja2VyRGlzcGxheU5hbWUs
IFdJLlVJU3RyaW5nKCJTaG93IGhpZGRlbiB0YWJzIikpOwotICAgICAgICB0aGlzLl90YWJQaWNr
ZXJUYWJCYXJJdGVtLmhpZGRlbiA9IHRydWU7Ci0gICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJh
ckl0ZW0uZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWItcGlja2VyIik7Ci0gICAgICAgIHRoaXMu
YWRkVGFiQmFySXRlbSh0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRp
b25zOiB0cnVlfSk7CisgICAgICAgIGNvbnN0IHNob3dIaWRkZW5UYWJzUmVwcmVzZW50ZWRPYmpl
Y3QgPSBudWxsOworICAgICAgICBjb25zdCBzaG93SGlkZGVuVGFic0Rpc3BsYXlOYW1lID0gbnVs
bDsKKyAgICAgICAgdGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtID0gbmV3IFdJLlBpbm5l
ZFRhYkJhckl0ZW0oc2hvd0hpZGRlblRhYnNSZXByZXNlbnRlZE9iamVjdCwgIkltYWdlcy9PdmVy
Zmxvdy5zdmciLCBzaG93SGlkZGVuVGFic0Rpc3BsYXlOYW1lLCBXSS5VSVN0cmluZygiU2hvdyBo
aWRkZW4gdGFic1x1MjAyNiIpKTsKKyAgICAgICAgdGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJ
dGVtLmhpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuYWRkVGFiQmFySXRlbSh0aGlzLl9zaG93
SGlkZGVuVGFic1RhYkJhckl0ZW0sIHtzdXBwcmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKKworICAg
ICAgICBjb25zdCBvcGVuQ2xvc2VkVGFic1JlcHJlc2VudGVkT2JqZWN0ID0gbnVsbDsKKyAgICAg
ICAgY29uc3Qgb3BlbkNsb3NlZFRhYnNEaXNwbGF5TmFtZSA9IG51bGw7CisgICAgICAgIHRoaXMu
X29wZW5DbG9zZWRUYWJzVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJdGVtKG9wZW5D
bG9zZWRUYWJzUmVwcmVzZW50ZWRPYmplY3QsICJJbWFnZXMvUGx1czE1LnN2ZyIsIG9wZW5DbG9z
ZWRUYWJzRGlzcGxheU5hbWUsIFdJLlVJU3RyaW5nKCJPcGVuIGNsb3NlZCB0YWJzXHUyMDI2Iikp
OworICAgICAgICB0aGlzLl9vcGVuQ2xvc2VkVGFic1RhYkJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5hZGRUYWJCYXJJdGVtKHRoaXMuX29wZW5DbG9zZWRUYWJzVGFiQmFySXRl
bSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1ZX0pOwogCiAgICAgICAgIHRoaXMuX21vdXNlRG93
blBhZ2VYID0gTmFOOwogICAgICAgICB0aGlzLl9pc0RyYWdnaW5nID0gZmFsc2U7CkBAIC0xMjks
MTggKzEzMywxNiBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAK
ICAgICAgICAgaWYgKHRoaXMuX3RhYkNvbnRhaW5lci5jb250YWlucyhuZXh0U2libGluZy5lbGVt
ZW50KSkgewogICAgICAgICAgICAgaWYgKCEodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5l
ZFRhYkJhckl0ZW0pICYmIG5leHRTaWJsaW5nIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRl
bSkKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYkJh
ckl0ZW0uZWxlbWVudCwgdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbS5lbGVtZW50KTsKKyAgICAg
ICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxl
bWVudCwgdGhpcy5fcGlubmVkQnV0dG9ucygpWzBdLmVsZW1lbnQpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFiQmFy
SXRlbS5lbGVtZW50LCBuZXh0U2libGluZy5lbGVtZW50KTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmICh0YWJCYXJJdGVtIGluc3RhbmNlb2YgV0kuUGlubmVkVGFiQmFySXRlbSkK
ICAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuYXBwZW5kQ2hpbGQodGFiQmFySXRl
bS5lbGVtZW50KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl90YWJD
b250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgdGhpcy5fdGFiUGlja2Vy
VGFiQmFySXRlbS5lbGVtZW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIu
aW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxlbWVudCwgdGhpcy5fcGlubmVkQnV0dG9ucygpWzBd
LmVsZW1lbnQpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNz
TGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIo
KSk7Ci0KICAgICAgICAgdGFiQmFySXRlbS5lbGVtZW50LnN0eWxlLmxlZnQgPSBudWxsOwogICAg
ICAgICB0YWJCYXJJdGVtLmVsZW1lbnQuc3R5bGUud2lkdGggPSBudWxsOwogCkBAIC0yMzIsMTAg
KzIzNCw5IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgdGhpcy5fdGFiQmFySXRlbXMucmVtb3ZlKHRhYkJhckl0ZW0pOwogICAgICAgICB0YWJCYXJJ
dGVtLmVsZW1lbnQucmVtb3ZlKCk7CiAKLSAgICAgICAgdmFyIGhhc01vcmVUaGFuT25lTm9ybWFs
VGFiID0gdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxUYWIoKTsKLSAgICAgICAgdGhpcy5fdGFi
Q29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoInNpbmdsZS10YWIiLCAhaGFzTW9yZVRoYW5PbmVO
b3JtYWxUYWIpOworICAgICAgICB0aGlzLl9vcGVuQ2xvc2VkVGFic1RhYkJhckl0ZW0uaGlkZGVu
ID0gIXRoaXMuX2Nsb3NlZFRhYkNsYXNzZXMoKS5sZW5ndGg7CiAKLSAgICAgICAgaWYgKCFoYXNN
b3JlVGhhbk9uZU5vcm1hbFRhYiB8fCB3YXNMYXN0Tm9ybWFsVGFiIHx8ICFvcHRpb25zLnN1cHBy
ZXNzRXhwYW5zaW9uKSB7CisgICAgICAgIGlmICghdGhpcy5faGFzTW9yZVRoYW5PbmVOb3JtYWxU
YWIoKSB8fCB3YXNMYXN0Tm9ybWFsVGFiIHx8ICFvcHRpb25zLnN1cHByZXNzRXhwYW5zaW9uKSB7
CiAgICAgICAgICAgICBpZiAoIW9wdGlvbnMuc3VwcHJlc3NBbmltYXRpb25zKSB7CiAgICAgICAg
ICAgICAgICAgdGhpcy5fdGFiQW5pbWF0ZWRDbG9zZWRTaW5jZU1vdXNlRW50ZXIgPSB0cnVlOwog
ICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmlzaEV4cGFuZGluZ1RhYnNBZnRlckNsb3NlKGJlZm9y
ZVRhYlNpemVzQW5kUG9zaXRpb25zKTsKQEAgLTM3Niw3ICszNzcsNyBAQCBXSS5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgc2VsZWN0VGFiQmFySXRlbSh0YWJCYXJJ
dGVtT3JJbmRleCwgb3B0aW9ucyA9IHt9KQogICAgIHsKICAgICAgICAgbGV0IHRhYkJhckl0ZW0g
PSB0aGlzLl9maW5kVGFiQmFySXRlbSh0YWJCYXJJdGVtT3JJbmRleCk7Ci0gICAgICAgIGlmICh0
YWJCYXJJdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtKSB7CisgICAgICAgIGlmICh0
aGlzLl9waW5uZWRCdXR0b25zKCkuaW5jbHVkZXModGFiQmFySXRlbSkpIHsKICAgICAgICAgICAg
IC8vIEdldCB0aGUgbGFzdCBub3JtYWwgdGFiIGl0ZW0gaWYgdGhlIGl0ZW0gaXMgbm90IHNlbGVj
dGFibGUuCiAgICAgICAgICAgICB0YWJCYXJJdGVtID0gdGhpcy5fdGFiQmFySXRlbXNbdGhpcy5u
b3JtYWxUYWJDb3VudCAtIDFdOwogICAgICAgICB9CkBAIC00NDUsOSArNDQ2LDE3IEBAIFdJLlRh
YkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcKIAogICAgICAgICBsZXQgbm9ybWFs
VGFiQmFySXRlbXMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgdGFiQmFySXRlbSBvZiB0aGlzLl90
YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdodCgpKSB7Ci0gICAgICAgICAgICBpZiAodGFiQmFySXRl
bSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSkgeworICAgICAgICAgICAgc3dpdGNoICh0
YWJCYXJJdGVtKSB7CisgICAgICAgICAgICBjYXNlIHRoaXMuX3Nob3dIaWRkZW5UYWJzVGFiQmFy
SXRlbToKICAgICAgICAgICAgICAgICB0YWJCYXJJdGVtLmhpZGRlbiA9IHRydWU7CiAgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGNhc2UgdGhpcy5fb3BlbkNsb3NlZFRh
YnNUYWJCYXJJdGVtOgorICAgICAgICAgICAgICAgIHRhYkJhckl0ZW0uaGlkZGVuID0gIXRoaXMu
X2Nsb3NlZFRhYkNsYXNzZXMoKS5sZW5ndGg7CisgICAgICAgICAgICAgICAgaWYgKHRhYkJhckl0
ZW0uaGlkZGVuKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBNYWtlIHN1cmUgdG8gY2FsY3Vs
YXRlIGl0cyB3aWR0aCBiZWxvdy4KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdGFiQmFy
SXRlbS5oaWRkZW4gPSBmYWxzZTsKQEAgLTQ2OCw4ICs0NzcsOCBAQCBXSS5UYWJCYXIgPSBjbGFz
cyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIC8vIFdhaXQgdG8gbWVhc3VyZSB3aWR0
aHMgdW50aWwgYWxsIGBXSS5UYWJCYXJJdGVtYCBhcmUgdW4taGlkZGVuIGZvciB0aGUgcmVhc29u
IGFib3ZlLgogICAgICAgICBsZXQgbm9ybWFsVGFiQmFySXRlbXNXaWR0aCA9IG5vcm1hbFRhYkJh
ckl0ZW1zLnJlZHVjZSgoYWNjdW11bGF0b3IsIHRhYkJhckl0ZW0pID0+IGFjY3VtdWxhdG9yICsg
bWVhc3VyZVdpZHRoKHRhYkJhckl0ZW0pLCAwKTsKICAgICAgICAgaWYgKE1hdGgucm91bmQobm9y
bWFsVGFiQmFySXRlbXNXaWR0aCkgPj0gTWF0aC5mbG9vcihhdmFpbGFibGVTcGFjZSkpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uaGlkZGVuID0gZmFsc2U7Ci0gICAg
ICAgICAgICBhdmFpbGFibGVTcGFjZSAtPSBtZWFzdXJlV2lkdGgodGhpcy5fdGFiUGlja2VyVGFi
QmFySXRlbSk7CisgICAgICAgICAgICB0aGlzLl9zaG93SGlkZGVuVGFic1RhYkJhckl0ZW0uaGlk
ZGVuID0gZmFsc2U7CisgICAgICAgICAgICBhdmFpbGFibGVTcGFjZSAtPSBtZWFzdXJlV2lkdGgo
dGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtKTsKIAogICAgICAgICAgICAgbGV0IGluZGV4
ID0gbm9ybWFsVGFiQmFySXRlbXMubGVuZ3RoIC0gMTsKICAgICAgICAgICAgIGRvIHsKQEAgLTUw
MSwxMSArNTEwLDIxIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRzIFdJLlZpZXcK
IAogICAgIC8vIFByaXZhdGUKIAorICAgIF9waW5uZWRCdXR0b25zKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBbdGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtLCB0aGlzLl9vcGVuQ2xvc2Vk
VGFic1RhYkJhckl0ZW1dOworICAgIH0KKwogICAgIF90YWJCYXJJdGVtc0Zyb21MZWZ0VG9SaWdo
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gV0kucmVzb2x2ZWRMYXlvdXREaXJlY3Rpb24oKSA9
PT0gV0kuTGF5b3V0RGlyZWN0aW9uLkxUUiA/IHRoaXMuX3RhYkJhckl0ZW1zIDogdGhpcy5fdGFi
QmFySXRlbXMuc2xpY2UoKS5yZXZlcnNlKCk7CiAgICAgfQogCisgICAgX2Nsb3NlZFRhYkNsYXNz
ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oV0kua25vd25UYWJDbGFzc2Vz
KCkpLmZpbHRlcigodGFiQ2xhc3MpID0+IFdJLmlzTmV3VGFiV2l0aFR5cGVBbGxvd2VkKHRhYkNs
YXNzLlR5cGUpKTsKKyAgICB9CisKICAgICBfZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5k
ZXgpCiAgICAgewogICAgICAgICBpZiAodHlwZW9mIHRhYkJhckl0ZW1PckluZGV4ID09PSAibnVt
YmVyIikKQEAgLTY2MSwyOSArNjgwLDEzIEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRoaXMuX3RhYlBpY2tlclRh
YkJhckl0ZW0pIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5faGlkZGVuVGFiQmFySXRlbXMubGVu
Z3RoKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3dpdGNoICh0YWJCYXJJdGVt
KSB7CisgICAgICAgIGNhc2UgdGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtOgorICAgICAg
ICAgICAgdGhpcy5faGFuZGxlU2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtTW91c2VEb3duKGV2ZW50
KTsKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZVRh
YlBpY2tlck1vdXNlRG93bikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAg
IHRoaXMuX2lnbm9yZVRhYlBpY2tlck1vdXNlRG93biA9IHRydWU7Ci0KLSAgICAgICAgICAgIGxl
dCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7Ci0g
ICAgICAgICAgICBjb250ZXh0TWVudS5hZGRCZWZvcmVTaG93Q2FsbGJhY2soKCkgPT4gewotICAg
ICAgICAgICAgICAgIHRoaXMuX2lnbm9yZVRhYlBpY2tlck1vdXNlRG93biA9IGZhbHNlOwotICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5faGlkZGVu
VGFiQmFySXRlbXMpIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGl0
ZW0uZGlzcGxheU5hbWUsICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RU
YWJCYXJJdGVtKGl0ZW0sIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvcjogV0ku
VGFiQnJvd3Nlci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51Ci0gICAgICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7CisgICAgICAgIGNhc2UgdGhpcy5fb3BlbkNsb3Nl
ZFRhYnNUYWJCYXJJdGVtOgorICAgICAgICAgICAgdGhpcy5faGFuZGxlQWRkQ2xvc2VkVGFic1Rh
YkJhckl0ZW1Nb3VzZURvd24oZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTcxNiw0MCArNzE5LDU1IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRlbmRz
IFdJLlZpZXcKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfQogCi0gICAg
X2hhbmRsZVRhYkNvbnRhaW5lckNsaWNrKGV2ZW50KQorICAgIF9oYW5kbGVTaG93SGlkZGVuVGFi
c1RhYkJhckl0ZW1Nb3VzZURvd24oZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgaXRlbUVsZW1l
bnQgPSBldmVudC50YXJnZXQuY2xvc2VzdCgiLiIgKyBXSS5UYWJCYXJJdGVtLlN0eWxlQ2xhc3NO
YW1lKTsKLSAgICAgICAgaWYgKCFpdGVtRWxlbWVudCkKKyAgICAgICAgaWYgKCF0aGlzLl9oaWRk
ZW5UYWJCYXJJdGVtcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFy
IHRhYkJhckl0ZW0gPSBpdGVtRWxlbWVudFtXSS5UYWJCYXJJdGVtLkVsZW1lbnRSZWZlcmVuY2VT
eW1ib2xdOwotICAgICAgICBpZiAoIXRhYkJhckl0ZW0pCisgICAgICAgIGlmICh0aGlzLl9pZ25v
cmVTaG93SGlkZGVuVGFic1RhYkJhckl0ZW1Nb3VzZURvd24pCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHRhYkJhckl0ZW0uZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuX2lnbm9yZVNob3dIaWRkZW5UYWJzVGFiQmFySXRlbU1vdXNlRG93biA9
IHRydWU7CiAKLSAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiA9PT0gMSkgewotICAgICAgICAgICAg
Ly8gRGlzYWxsb3cgY2xvc2luZyB0aGUgb25seSB0YWIuCi0gICAgICAgICAgICBpZiAodGhpcy5f
dGFiQ29udGFpbmVyLmNsYXNzTGlzdC5jb250YWlucygic2luZ2xlLXRhYiIpKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUu
Y3JlYXRlRnJvbUV2ZW50KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuYWRkQmVmb3JlU2hv
d0NhbGxiYWNrKCgpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZVNob3dIaWRkZW5UYWJz
VGFiQmFySXRlbU1vdXNlRG93biA9IGZhbHNlOworICAgICAgICB9KTsKIAotICAgICAgICAgICAg
aWYgKCFldmVudC5hbHRLZXkpIHsKLSAgICAgICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgc3VwcHJlc3NFeHBhbnNpb246IHRydWUsCi0gICAgICAgICAgICAg
ICAgICAgIGluaXRpYXRvckhpbnQ6IFdJLlRhYkJyb3dzZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRv
ci5UYWJDbGljaywKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIHRoaXMucmVt
b3ZlVGFiQmFySXRlbSh0YWJCYXJJdGVtLCBvcHRpb25zKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLl90YWJC
YXJJdGVtcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICAgICAgICAgIGxldCBp
dGVtID0gdGhpcy5fdGFiQmFySXRlbXNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW0gPT09
IHRhYkJhckl0ZW0gfHwgaXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlVGFi
QmFySXRlbShpdGVtKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0
aGlzLl9oaWRkZW5UYWJCYXJJdGVtcykgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShpdGVtLmRpc3BsYXlOYW1lLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgdGhpcy5zZWxl
Y3RUYWJCYXJJdGVtKGl0ZW0sIHsKKyAgICAgICAgICAgICAgICAgICAgaW5pdGlhdG9yOiBXSS5U
YWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuQ29udGV4dE1lbnUKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CisKKyAgICAgICAgY29udGV4dE1l
bnUuc2hvdygpOworICAgIH0KKworICAgIF9oYW5kbGVBZGRDbG9zZWRUYWJzVGFiQmFySXRlbU1v
dXNlRG93bihldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjbG9zZWRUYWJDbGFzc2VzID0gdGhp
cy5fY2xvc2VkVGFiQ2xhc3NlcygpOworICAgICAgICBpZiAoIWNsb3NlZFRhYkNsYXNzZXMubGVu
Z3RoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVBZGRD
bG9zZWRUYWJzVGFiQmFySXRlbU1vdXNlRG93bikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICB0aGlzLl9pZ25vcmVBZGRDbG9zZWRUYWJzVGFiQmFySXRlbU1vdXNlRG93biA9IHRydWU7
CisKKyAgICAgICAgbGV0IGNvbnRleHRNZW51ID0gV0kuQ29udGV4dE1lbnUuY3JlYXRlRnJvbUV2
ZW50KGV2ZW50KTsKKyAgICAgICAgY29udGV4dE1lbnUuYWRkQmVmb3JlU2hvd0NhbGxiYWNrKCgp
ID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2lnbm9yZUFkZENsb3NlZFRhYnNUYWJCYXJJdGVtTW91
c2VEb3duID0gZmFsc2U7CisgICAgICAgIH0pOworCisgICAgICAgIGZvciAobGV0IGNsb3NlZFRh
YkNsYXNzIG9mIGNsb3NlZFRhYkNsYXNzZXMpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oY2xvc2VkVGFiQ2xhc3MudGFiSW5mbygpLmRpc3BsYXlOYW1lLCAoKSA9PiB7Cisg
ICAgICAgICAgICAgICAgV0kuY3JlYXRlTmV3VGFiV2l0aFR5cGUoY2xvc2VkVGFiQ2xhc3MuVHlw
ZSwge3Nob3VsZFNob3dOZXdUYWI6IHRydWV9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisKKyAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwogICAgIH0KIAogICAgIF9oYW5kbGVNb3Vz
ZU1vdmVkKGV2ZW50KQo=
</data>
<flag name="review"
          id="462450"
          type_id="1"
          status="+"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439008</attachid>
            <date>2021-09-22 20:38:43 -0700</date>
            <delta_ts>2021-09-22 21:08:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>tab-bar.diff</filename>
            <type>text/plain</type>
            <size>15795</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGY2YTcyNjZhNmE4OS4uNWY5NzdhNTc4ODUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMS0wOS0yMiAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWRkIGEgcGlubmVkIFsrXSBidXR0b24gdG8gdGhlIHRhYiBiYXIgdG8gbWFrZSBpdCBlYXNpZXIg
dG8gcmUtb3BlbiBjbG9zZWQgdGFicworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMwNjAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQkogQnVyZy4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzOgorICAgICAgICAoV0kuVGFi
QmFyKToKKyAgICAgICAgKFdJLlRhYkJhci5wcm90b3R5cGUuc2VsZWN0VGFiQmFySXRlbSk6Cisg
ICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXSS5UYWJCYXIu
cHJvdG90eXBlLl9waW5uZWRCdXR0b25zKTogQWRkZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJv
dG90eXBlLl9jbG9zZWRUYWJDbGFzc2VzKTogQWRkZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJv
dG90eXBlLl9oYW5kbGVUYWJDb250YWluZXJNb3VzZURvd24pOgorICAgICAgICAoV0kuVGFiQmFy
LnByb3RvdHlwZS5faGFuZGxlU2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtTW91c2VEb3duKTogQWRk
ZWQuCisgICAgICAgIChXSS5UYWJCYXIucHJvdG90eXBlLl9oYW5kbGVBZGRDbG9zZWRUYWJzVGFi
QmFySXRlbU1vdXNlRG93bik6IEFkZGVkLgorICAgICAgICAoV0kuVGFiQmFyLnByb3RvdHlwZS5f
aGFuZGxlVGFiQ29udGFpbmVyQ2xpY2spOiBEZWxldGVkLgorICAgICAgICBBZGQgYSBgX29wZW5D
bG9zZWRUYWJzVGFiQmFySXRlbWAgdGhhdCdzIGEgYFdJLlBpbm5lZFRhYkJhckl0ZW1gIHdpdGhv
dXQgYSBgcmVwcmVzZW50ZWRPYmplY3RgLAorICAgICAgICBtZWFuaW5nIHRoYXQgaXQncyBiYXNp
Y2FsbHkganVzdCBhIGJ1dHRvbiBhbmQgd29uJ3QgYWN0dWFsbHkgb3BlbiBhIHRhYiB3aGVuIGNs
aWNrZWQuIFRoaXMKKyAgICAgICAgc3VpdHMgb3VyIHB1cnBvc2VzIHBlcmZlY3RseSBhcyB3ZSBv
bmx5IHdhbnQgdG8gc2hvdyBhIGNvbnRleHRtZW51IG9uIGNsaWNrLCBub3QgdG8gbWVudGlvbgor
ICAgICAgICB0aGF0IGl0IHdpbGwgb25seSBiZSBzaG93biBpZiB0aGVyZSBhcmUgY2xvc2VkIHRh
YnMuCisgICAgICAgIERyaXZlLWJ5OiBSZW5hbWUgYF90YWJQaWNrZXJUYWJCYXJJdGVtYCB0byBg
X3Nob3dIaWRkZW5UYWJzVGFiQmFySXRlbWAgdG8gY2xhcmlmeSBwdXJwb3NlLgorICAgICAgICBE
cml2ZS1ieTogUmVtb3ZlIGBfaGFuZGxlVGFiQ29udGFpbmVyQ2xpY2tgIGFzIHRhYnMgY2FuIG9u
bHkgYmUgcmVtb3ZlZCB2aWEgdGhlIGNvbnRleHRtZW51LgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9JbWFnZXMvT3ZlcmZsb3cuc3ZnOiBSZW5hbWVkIGZyb20gVXNlckludGVyZmFjZS9JbWFn
ZXMvVGFiUGlja2VyLnN2Zy4KKyAgICAgICAgRHJpdmUtYnk6IFJlbmFtZSB0byBjbGFyaWZ5IHB1
cnBvc2UuCisKKyAgICAgICAgKiBMb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanM6CisKIDIwMjEtMDgtMjcgIFJ1c3NlbGwgRXBzdGVpbiAgPHJlcHN0ZWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBMYW5kIFdpbmRvd3MgYnVpbGQgZml4ZXMgZnJvbSBzYWZhcmktNjEyLjEu
MjkuMTQtYnJhbmNoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggZjNmOGQ5
OGIyNWZiLi5lYWM2MWRmMmE5NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpA
QCAtMTAyNyw2ICsxMDI3LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siT25saW5lIl0gPSAiT25saW5l
IjsKIGxvY2FsaXplZFN0cmluZ3NbIk9ubHkgc2hvdyByZXNvdXJjZXMgd2l0aCBpc3N1ZXMiXSA9
ICJPbmx5IHNob3cgcmVzb3VyY2VzIHdpdGggaXNzdWVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIk9u
bHkgc2hvdyB2aXN1YWwgYWN0aW9ucyJdID0gIk9ubHkgc2hvdyB2aXN1YWwgYWN0aW9ucyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJPcGVuIl0gPSAiT3BlbiI7Citsb2NhbGl6ZWRTdHJpbmdzWyJPcGVu
IGNsb3NlZCB0YWJzXHUyMDI2Il0gPSAiT3BlbiBjbG9zZWQgdGFic1x1MjAyNiI7CiAvKiBDb250
ZXh0IG1lbnUgaXRlbSBmb3Igb3BlbmluZyB0aGUgdGFyZ2V0IGl0ZW0gaW4gYSBuZXcgd2luZG93
LiAqLwogbG9jYWxpemVkU3RyaW5nc1siT3BlbiBpbiBOZXcgV2luZG93IEAgQ29udGV4dCBNZW51
IEl0ZW0iXSA9ICJPcGVuIGluIE5ldyBXaW5kb3ciOwogbG9jYWxpemVkU3RyaW5nc1siT3B0aW9u
LWNsaWNrIHRvIHNob3cgc291cmNlIl0gPSAiT3B0aW9uLWNsaWNrIHRvIHNob3cgc291cmNlIjsK
QEAgLTEzNDMsNyArMTM0NCw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgY29tcG9zaXRpbmcg
Ym9yZGVycyJdID0gIlNob3cgY29tcG9zaXRpbmcgYm9yZGVycyI7CiAvKiBMYWJlbCBmb3Igb3B0
aW9uIHRvIHRvZ2dsZSB0aGUgZXh0ZW5kZWQgbGluZXMgc2V0dGluZyBmb3IgQ1NTIGdyaWQgb3Zl
cmxheXMgKi8KIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgZXh0ZW5kZWQgbGluZXMgQCBMYXlvdXQg
UGFuZWwgT3ZlcmxheSBPcHRpb25zIl0gPSAiRXh0ZW5kZWQgR3JpZCBMaW5lcyI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJTaG93IGZ1bGwgY2VydGlmaWNhdGUiXSA9ICJTaG93IGZ1bGwgY2VydGlmaWNh
dGUiOwotbG9jYWxpemVkU3RyaW5nc1siU2hvdyBoaWRkZW4gdGFicyJdID0gIlNob3cgaGlkZGVu
IHRhYnMiOworbG9jYWxpemVkU3RyaW5nc1siU2hvdyBoaWRkZW4gdGFic1x1MjAyNiJdID0gIlNo
b3cgaGlkZGVuIHRhYnNcdTIwMjYiOwogLyogU2V0dGluZ3MgdGFiIGNoZWNrYm94IGxhYmVsIGZv
ciB3aGV0aGVyIHRoZSBpbmRlcGVuZGVudCBzdHlsZXMgc2lkZWJhciBzaG91bGQgYmUgc2hvd24g
Ki8KIGxvY2FsaXplZFN0cmluZ3NbIlNob3cgaW5kZXBlbmRlbnQgU3R5bGVzIHNpZGViYXIgQCBT
ZXR0aW5ncyBFbGVtZW50cyBQYW5lIl0gPSAiU2hvdyBpbmRlcGVuZGVudCBTdHlsZXMgc2lkZWJh
ciI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTaG93IGp1bXAgdG8gZWZmZWN0aXZlIHByb3BlcnR5IGJ1
dHRvbiJdID0gIlNob3cganVtcCB0byBlZmZlY3RpdmUgcHJvcGVydHkgYnV0dG9uIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0ltYWdlcy9PdmVyZmxv
dy5zdmcgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvT3ZlcmZs
b3cuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDYxZWQxZDZj
YzY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvSW1hZ2VzL092ZXJmbG93LnN2ZwpAQCAtMCwwICsxLDYgQEAKKzw/eG1sIHZlcnNpb249IjEu
MCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCDCqSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gLS0+Cis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIgaWQ9InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEzIDE2Ij4KKyAg
ICA8cGF0aCBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSAyIDQgTCA2IDgg
TCAyIDEyIi8+CisgICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9
Ik0gNyA0IEwgMTEgOCBMIDcgMTIiLz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RhYlBpY2tlci5zdmcgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9JbWFnZXMvVGFiUGlja2VyLnN2ZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZDYxZWQxZDZjYzY1Li4wMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvSW1hZ2VzL1RhYlBpY2tlci5zdmcKKysr
IC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
InV0Zi04Ij8+Ci08IS0tIENvcHlyaWdodCDCqSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gLS0+Ci08c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9
InJvb3QiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDEzIDE2Ij4KLSAgICA8cGF0aCBmaWxs
PSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgZD0iTSAyIDQgTCA2IDggTCAyIDEyIi8+Ci0g
ICAgPHBhdGggZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGQ9Ik0gNyA0IEwgMTEg
OCBMIDcgMTIiLz4KLTwvc3ZnPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGFiQmFyLmpzCmluZGV4IGJkNjQxNmExYzA0NS4uNDFmYWY4MGQ2NGVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
YWJCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGFiQmFyLmpzCkBAIC00Miw3ICs0Miw2IEBAIFdJLlRhYkJhciA9IGNsYXNzIFRhYkJhciBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJ0YWJz
IjsKICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJs
aXN0Iik7CiAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZWRvd24iLCB0aGlzLl9oYW5kbGVUYWJDb250YWluZXJNb3VzZURvd24uYmluZCh0aGlzKSk7Ci0g
ICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2hhbmRsZVRhYkNvbnRhaW5lckNsaWNrLmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl90YWJD
b250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX2hhbmRsZVRhYkNv
bnRhaW5lck1vdXNlTGVhdmUuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZVRhYkNvbnRhaW5l
ckNvbnRleHRNZW51LmJpbmQodGhpcykpOwogCkBAIC01NSwxMiArNTQsMTcgQEAgV0kuVGFiQmFy
ID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogICAgICAgICB0aGlzLl90YWJCYXJJdGVt
cyA9IFtdOwogICAgICAgICB0aGlzLl9oaWRkZW5UYWJCYXJJdGVtcyA9IFtdOwogCi0gICAgICAg
IGNvbnN0IHRhYlBpY2tlclJlcHJlc2VudGVkT2JqZWN0ID0gbnVsbDsKLSAgICAgICAgY29uc3Qg
dGFiUGlja2VyRGlzcGxheU5hbWUgPSBudWxsOwotICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJC
YXJJdGVtID0gbmV3IFdJLlBpbm5lZFRhYkJhckl0ZW0odGFiUGlja2VyUmVwcmVzZW50ZWRPYmpl
Y3QsICJJbWFnZXMvVGFiUGlja2VyLnN2ZyIsIHRhYlBpY2tlckRpc3BsYXlOYW1lLCBXSS5VSVN0
cmluZygiU2hvdyBoaWRkZW4gdGFicyIpKTsKLSAgICAgICAgdGhpcy5fdGFiUGlja2VyVGFiQmFy
SXRlbS5oaWRkZW4gPSB0cnVlOwotICAgICAgICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFiLXBpY2tlciIpOwotICAgICAgICB0aGlzLmFkZFRhYkJh
ckl0ZW0odGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSwge3N1cHByZXNzQW5pbWF0aW9uczogdHJ1
ZX0pOworICAgICAgICBjb25zdCBzaG93SGlkZGVuVGFic1JlcHJlc2VudGVkT2JqZWN0ID0gbnVs
bDsKKyAgICAgICAgY29uc3Qgc2hvd0hpZGRlblRhYnNEaXNwbGF5TmFtZSA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3Nob3dIaWRkZW5UYWJzVGFiQmFySXRlbSA9IG5ldyBXSS5QaW5uZWRUYWJCYXJJ
dGVtKHNob3dIaWRkZW5UYWJzUmVwcmVzZW50ZWRPYmplY3QsICJJbWFnZXMvT3ZlcmZsb3cuc3Zn
Iiwgc2hvd0hpZGRlblRhYnNEaXNwbGF5TmFtZSwgV0kuVUlTdHJpbmcoIlNob3cgaGlkZGVuIHRh
YnNcdTIwMjYiKSk7CisgICAgICAgIHRoaXMuX3Nob3dIaWRkZW5UYWJzVGFiQmFySXRlbS5oaWRk
ZW4gPSB0cnVlOworICAgICAgICB0aGlzLmFkZFRhYkJhckl0ZW0odGhpcy5fc2hvd0hpZGRlblRh
YnNUYWJCYXJJdGVtLCB7c3VwcHJlc3NBbmltYXRpb25zOiB0cnVlfSk7CisKKyAgICAgICAgY29u
c3Qgb3BlbkNsb3NlZFRhYnNSZXByZXNlbnRlZE9iamVjdCA9IG51bGw7CisgICAgICAgIGNvbnN0
IG9wZW5DbG9zZWRUYWJzRGlzcGxheU5hbWUgPSBudWxsOworICAgICAgICB0aGlzLl9vcGVuQ2xv
c2VkVGFic1RhYkJhckl0ZW0gPSBuZXcgV0kuUGlubmVkVGFiQmFySXRlbShvcGVuQ2xvc2VkVGFi
c1JlcHJlc2VudGVkT2JqZWN0LCAiSW1hZ2VzL1BsdXMxNS5zdmciLCBvcGVuQ2xvc2VkVGFic0Rp
c3BsYXlOYW1lLCBXSS5VSVN0cmluZygiT3BlbiBjbG9zZWQgdGFic1x1MjAyNiIpKTsKKyAgICAg
ICAgdGhpcy5fb3BlbkNsb3NlZFRhYnNUYWJCYXJJdGVtLmhpZGRlbiA9IHRydWU7CisgICAgICAg
IHRoaXMuYWRkVGFiQmFySXRlbSh0aGlzLl9vcGVuQ2xvc2VkVGFic1RhYkJhckl0ZW0sIHtzdXBw
cmVzc0FuaW1hdGlvbnM6IHRydWV9KTsKIAogICAgICAgICB0aGlzLl9tb3VzZURvd25QYWdlWCA9
IE5hTjsKICAgICAgICAgdGhpcy5faXNEcmFnZ2luZyA9IGZhbHNlOwpAQCAtMTI5LDE4ICsxMzMs
MTYgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFyIGV4dGVuZHMgV0kuVmlldwogCiAgICAgICAg
IGlmICh0aGlzLl90YWJDb250YWluZXIuY29udGFpbnMobmV4dFNpYmxpbmcuZWxlbWVudCkpIHsK
ICAgICAgICAgICAgIGlmICghKHRhYkJhckl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJ
dGVtKSAmJiBuZXh0U2libGluZyBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCi0gICAg
ICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVs
ZW1lbnQsIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0uZWxlbWVudCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fdGFiQ29udGFpbmVyLmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIHRo
aXMuX3Bpbm5lZEJ1dHRvbnMoKVswXS5lbGVtZW50KTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICB0aGlzLl90YWJDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYkJhckl0ZW0uZWxl
bWVudCwgbmV4dFNpYmxpbmcuZWxlbWVudCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBpZiAodGFiQmFySXRlbSBpbnN0YW5jZW9mIFdJLlBpbm5lZFRhYkJhckl0ZW0pCiAgICAgICAg
ICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmFwcGVuZENoaWxkKHRhYkJhckl0ZW0uZWxlbWVu
dCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVy
Lmluc2VydEJlZm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIHRoaXMuX3RhYlBpY2tlclRhYkJhckl0
ZW0uZWxlbWVudCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdGFiQ29udGFpbmVyLmluc2VydEJl
Zm9yZSh0YWJCYXJJdGVtLmVsZW1lbnQsIHRoaXMuX3Bpbm5lZEJ1dHRvbnMoKVswXS5lbGVtZW50
KTsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5lci5jbGFzc0xpc3QudG9n
Z2xlKCJzaW5nbGUtdGFiIiwgIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkpOwotCiAg
ICAgICAgIHRhYkJhckl0ZW0uZWxlbWVudC5zdHlsZS5sZWZ0ID0gbnVsbDsKICAgICAgICAgdGFi
QmFySXRlbS5lbGVtZW50LnN0eWxlLndpZHRoID0gbnVsbDsKIApAQCAtMjMyLDEwICsyMzQsOSBA
QCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIHRoaXMu
X3RhYkJhckl0ZW1zLnJlbW92ZSh0YWJCYXJJdGVtKTsKICAgICAgICAgdGFiQmFySXRlbS5lbGVt
ZW50LnJlbW92ZSgpOwogCi0gICAgICAgIHZhciBoYXNNb3JlVGhhbk9uZU5vcm1hbFRhYiA9IHRo
aXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCk7Ci0gICAgICAgIHRoaXMuX3RhYkNvbnRhaW5l
ci5jbGFzc0xpc3QudG9nZ2xlKCJzaW5nbGUtdGFiIiwgIWhhc01vcmVUaGFuT25lTm9ybWFsVGFi
KTsKKyAgICAgICAgdGhpcy5fb3BlbkNsb3NlZFRhYnNUYWJCYXJJdGVtLmhpZGRlbiA9ICF0aGlz
Ll9jbG9zZWRUYWJDbGFzc2VzKCkubGVuZ3RoOwogCi0gICAgICAgIGlmICghaGFzTW9yZVRoYW5P
bmVOb3JtYWxUYWIgfHwgd2FzTGFzdE5vcm1hbFRhYiB8fCAhb3B0aW9ucy5zdXBwcmVzc0V4cGFu
c2lvbikgeworICAgICAgICBpZiAoIXRoaXMuX2hhc01vcmVUaGFuT25lTm9ybWFsVGFiKCkgfHwg
d2FzTGFzdE5vcm1hbFRhYiB8fCAhb3B0aW9ucy5zdXBwcmVzc0V4cGFuc2lvbikgewogICAgICAg
ICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzQW5pbWF0aW9ucykgewogICAgICAgICAgICAgICAg
IHRoaXMuX3RhYkFuaW1hdGVkQ2xvc2VkU2luY2VNb3VzZUVudGVyID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICB0aGlzLl9maW5pc2hFeHBhbmRpbmdUYWJzQWZ0ZXJDbG9zZShiZWZvcmVUYWJTaXpl
c0FuZFBvc2l0aW9ucyk7CkBAIC0zNzYsNyArMzc3LDcgQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFi
QmFyIGV4dGVuZHMgV0kuVmlldwogICAgIHNlbGVjdFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5k
ZXgsIG9wdGlvbnMgPSB7fSkKICAgICB7CiAgICAgICAgIGxldCB0YWJCYXJJdGVtID0gdGhpcy5f
ZmluZFRhYkJhckl0ZW0odGFiQmFySXRlbU9ySW5kZXgpOwotICAgICAgICBpZiAodGFiQmFySXRl
bSA9PT0gdGhpcy5fdGFiUGlja2VyVGFiQmFySXRlbSkgeworICAgICAgICBpZiAodGhpcy5fcGlu
bmVkQnV0dG9ucygpLmluY2x1ZGVzKHRhYkJhckl0ZW0pKSB7CiAgICAgICAgICAgICAvLyBHZXQg
dGhlIGxhc3Qgbm9ybWFsIHRhYiBpdGVtIGlmIHRoZSBpdGVtIGlzIG5vdCBzZWxlY3RhYmxlLgog
ICAgICAgICAgICAgdGFiQmFySXRlbSA9IHRoaXMuX3RhYkJhckl0ZW1zW3RoaXMubm9ybWFsVGFi
Q291bnQgLSAxXTsKICAgICAgICAgfQpAQCAtNDQ1LDkgKzQ0NiwxNyBAQCBXSS5UYWJCYXIgPSBj
bGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAgICAgbGV0IG5vcm1hbFRhYkJhckl0
ZW1zID0gW107CiAgICAgICAgIGZvciAobGV0IHRhYkJhckl0ZW0gb2YgdGhpcy5fdGFiQmFySXRl
bXNGcm9tTGVmdFRvUmlnaHQoKSkgewotICAgICAgICAgICAgaWYgKHRhYkJhckl0ZW0gPT09IHRo
aXMuX3RhYlBpY2tlclRhYkJhckl0ZW0pIHsKKyAgICAgICAgICAgIHN3aXRjaCAodGFiQmFySXRl
bSkgeworICAgICAgICAgICAgY2FzZSB0aGlzLl9zaG93SGlkZGVuVGFic1RhYkJhckl0ZW06CiAg
ICAgICAgICAgICAgICAgdGFiQmFySXRlbS5oaWRkZW4gPSB0cnVlOwogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBjYXNlIHRoaXMuX29wZW5DbG9zZWRUYWJzVGFiQmFy
SXRlbToKKyAgICAgICAgICAgICAgICB0YWJCYXJJdGVtLmhpZGRlbiA9ICF0aGlzLl9jbG9zZWRU
YWJDbGFzc2VzKCkubGVuZ3RoOworICAgICAgICAgICAgICAgIGlmICh0YWJCYXJJdGVtLmhpZGRl
bikKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gTWFrZSBzdXJlIHRvIGNhbGN1bGF0ZSBpdHMg
d2lkdGggYmVsb3cuCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHRhYkJhckl0ZW0uaGlk
ZGVuID0gZmFsc2U7CkBAIC00NjgsOCArNDc3LDggQEAgV0kuVGFiQmFyID0gY2xhc3MgVGFiQmFy
IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAvLyBXYWl0IHRvIG1lYXN1cmUgd2lkdGhzIHVudGls
IGFsbCBgV0kuVGFiQmFySXRlbWAgYXJlIHVuLWhpZGRlbiBmb3IgdGhlIHJlYXNvbiBhYm92ZS4K
ICAgICAgICAgbGV0IG5vcm1hbFRhYkJhckl0ZW1zV2lkdGggPSBub3JtYWxUYWJCYXJJdGVtcy5y
ZWR1Y2UoKGFjY3VtdWxhdG9yLCB0YWJCYXJJdGVtKSA9PiBhY2N1bXVsYXRvciArIG1lYXN1cmVX
aWR0aCh0YWJCYXJJdGVtKSwgMCk7CiAgICAgICAgIGlmIChNYXRoLnJvdW5kKG5vcm1hbFRhYkJh
ckl0ZW1zV2lkdGgpID49IE1hdGguZmxvb3IoYXZhaWxhYmxlU3BhY2UpKSB7Ci0gICAgICAgICAg
ICB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVtLmhpZGRlbiA9IGZhbHNlOwotICAgICAgICAgICAg
YXZhaWxhYmxlU3BhY2UgLT0gbWVhc3VyZVdpZHRoKHRoaXMuX3RhYlBpY2tlclRhYkJhckl0ZW0p
OworICAgICAgICAgICAgdGhpcy5fc2hvd0hpZGRlblRhYnNUYWJCYXJJdGVtLmhpZGRlbiA9IGZh
bHNlOworICAgICAgICAgICAgYXZhaWxhYmxlU3BhY2UgLT0gbWVhc3VyZVdpZHRoKHRoaXMuX3No
b3dIaWRkZW5UYWJzVGFiQmFySXRlbSk7CiAKICAgICAgICAgICAgIGxldCBpbmRleCA9IG5vcm1h
bFRhYkJhckl0ZW1zLmxlbmd0aCAtIDE7CiAgICAgICAgICAgICBkbyB7CkBAIC01MDEsMTEgKzUx
MCwyMSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICAv
LyBQcml2YXRlCiAKKyAgICBfcGlubmVkQnV0dG9ucygpCisgICAgeworICAgICAgICByZXR1cm4g
W3RoaXMuX3Nob3dIaWRkZW5UYWJzVGFiQmFySXRlbSwgdGhpcy5fb3BlbkNsb3NlZFRhYnNUYWJC
YXJJdGVtXTsKKyAgICB9CisKICAgICBfdGFiQmFySXRlbXNGcm9tTGVmdFRvUmlnaHQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdJLnJlc29sdmVkTGF5b3V0RGlyZWN0aW9uKCkgPT09IFdJLkxh
eW91dERpcmVjdGlvbi5MVFIgPyB0aGlzLl90YWJCYXJJdGVtcyA6IHRoaXMuX3RhYkJhckl0ZW1z
LnNsaWNlKCkucmV2ZXJzZSgpOwogICAgIH0KIAorICAgIF9jbG9zZWRUYWJDbGFzc2VzKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBBcnJheS5mcm9tKFdJLmtub3duVGFiQ2xhc3NlcygpKS5maWx0
ZXIoKHRhYkNsYXNzKSA9PiBXSS5pc05ld1RhYldpdGhUeXBlQWxsb3dlZCh0YWJDbGFzcy5UeXBl
KSk7CisgICAgfQorCiAgICAgX2ZpbmRUYWJCYXJJdGVtKHRhYkJhckl0ZW1PckluZGV4KQogICAg
IHsKICAgICAgICAgaWYgKHR5cGVvZiB0YWJCYXJJdGVtT3JJbmRleCA9PT0gIm51bWJlciIpCkBA
IC02NjEsMjkgKzY4MCwxMyBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICh0YWJCYXJJdGVtID09PSB0aGlzLl90YWJQaWNrZXJUYWJCYXJJdGVt
KSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2hpZGRlblRhYkJhckl0ZW1zLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHN3aXRjaCAodGFiQmFySXRlbSkgeworICAg
ICAgICBjYXNlIHRoaXMuX3Nob3dIaWRkZW5UYWJzVGFiQmFySXRlbToKKyAgICAgICAgICAgIHRo
aXMuX2hhbmRsZVNob3dIaWRkZW5UYWJzVGFiQmFySXRlbU1vdXNlRG93bihldmVudCk7CisgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVUYWJQaWNrZXJN
b3VzZURvd24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB0aGlzLl9p
Z25vcmVUYWJQaWNrZXJNb3VzZURvd24gPSB0cnVlOwotCi0gICAgICAgICAgICBsZXQgY29udGV4
dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOwotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYWRkQmVmb3JlU2hvd0NhbGxiYWNrKCgpID0+IHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9pZ25vcmVUYWJQaWNrZXJNb3VzZURvd24gPSBmYWxzZTsKLSAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHRoaXMuX2hpZGRlblRhYkJhckl0
ZW1zKSB7Ci0gICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShpdGVtLmRpc3Bs
YXlOYW1lLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFySXRl
bShpdGVtLCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3I6IFdJLlRhYkJyb3dz
ZXIuVGFiTmF2aWdhdGlvbkluaXRpYXRvci5Db250ZXh0TWVudQotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y29udGV4dE1lbnUuc2hvdygpOworICAgICAgICBjYXNlIHRoaXMuX29wZW5DbG9zZWRUYWJzVGFi
QmFySXRlbToKKyAgICAgICAgICAgIHRoaXMuX2hhbmRsZUFkZENsb3NlZFRhYnNUYWJCYXJJdGVt
TW91c2VEb3duKGV2ZW50KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC03
MTYsNDAgKzcxOSw1NSBAQCBXSS5UYWJCYXIgPSBjbGFzcyBUYWJCYXIgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0KIAotICAgIF9oYW5kbGVU
YWJDb250YWluZXJDbGljayhldmVudCkKKyAgICBfaGFuZGxlU2hvd0hpZGRlblRhYnNUYWJCYXJJ
dGVtTW91c2VEb3duKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIGl0ZW1FbGVtZW50ID0gZXZl
bnQudGFyZ2V0LmNsb3Nlc3QoIi4iICsgV0kuVGFiQmFySXRlbS5TdHlsZUNsYXNzTmFtZSk7Ci0g
ICAgICAgIGlmICghaXRlbUVsZW1lbnQpCisgICAgICAgIGlmICghdGhpcy5faGlkZGVuVGFiQmFy
SXRlbXMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHZhciB0YWJCYXJJ
dGVtID0gaXRlbUVsZW1lbnRbV0kuVGFiQmFySXRlbS5FbGVtZW50UmVmZXJlbmNlU3ltYm9sXTsK
LSAgICAgICAgaWYgKCF0YWJCYXJJdGVtKQorICAgICAgICBpZiAodGhpcy5faWdub3JlU2hvd0hp
ZGRlblRhYnNUYWJCYXJJdGVtTW91c2VEb3duKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICh0YWJCYXJJdGVtLmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB0aGlzLl9pZ25vcmVTaG93SGlkZGVuVGFic1RhYkJhckl0ZW1Nb3VzZURvd24gPSB0cnVlOwog
Ci0gICAgICAgIGlmIChldmVudC5idXR0b24gPT09IDEpIHsKLSAgICAgICAgICAgIC8vIERpc2Fs
bG93IGNsb3NpbmcgdGhlIG9ubHkgdGFiLgotICAgICAgICAgICAgaWYgKHRoaXMuX3RhYkNvbnRh
aW5lci5jbGFzc0xpc3QuY29udGFpbnMoInNpbmdsZS10YWIiKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZy
b21FdmVudChldmVudCk7CisgICAgICAgIGNvbnRleHRNZW51LmFkZEJlZm9yZVNob3dDYWxsYmFj
aygoKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9pZ25vcmVTaG93SGlkZGVuVGFic1RhYkJhckl0
ZW1Nb3VzZURvd24gPSBmYWxzZTsKKyAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGlmICghZXZl
bnQuYWx0S2V5KSB7Ci0gICAgICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHN1cHByZXNzRXhwYW5zaW9uOiB0cnVlLAotICAgICAgICAgICAgICAgICAgICBp
bml0aWF0b3JIaW50OiBXSS5UYWJCcm93c2VyLlRhYk5hdmlnYXRpb25Jbml0aWF0b3IuVGFiQ2xp
Y2ssCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJh
ckl0ZW0odGFiQmFySXRlbSwgb3B0aW9ucyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5fdGFiQmFySXRlbXMu
bGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgICAgICBsZXQgaXRlbSA9IHRo
aXMuX3RhYkJhckl0ZW1zW2ldOwotICAgICAgICAgICAgICAgIGlmIChpdGVtID09PSB0YWJCYXJJ
dGVtIHx8IGl0ZW0gaW5zdGFuY2VvZiBXSS5QaW5uZWRUYWJCYXJJdGVtKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVRhYkJhckl0ZW0o
aXRlbSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhpcy5faGlk
ZGVuVGFiQmFySXRlbXMpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oaXRl
bS5kaXNwbGF5TmFtZSwgKCkgPT4geworICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiQmFy
SXRlbShpdGVtLCB7CisgICAgICAgICAgICAgICAgICAgIGluaXRpYXRvcjogV0kuVGFiQnJvd3Nl
ci5UYWJOYXZpZ2F0aW9uSW5pdGlhdG9yLkNvbnRleHRNZW51CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHRNZW51LnNob3co
KTsKKyAgICB9CisKKyAgICBfaGFuZGxlQWRkQ2xvc2VkVGFic1RhYkJhckl0ZW1Nb3VzZURvd24o
ZXZlbnQpCisgICAgeworICAgICAgICBsZXQgY2xvc2VkVGFiQ2xhc3NlcyA9IHRoaXMuX2Nsb3Nl
ZFRhYkNsYXNzZXMoKTsKKyAgICAgICAgaWYgKCFjbG9zZWRUYWJDbGFzc2VzLmxlbmd0aCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhpcy5faWdub3JlQWRkQ2xvc2VkVGFi
c1RhYkJhckl0ZW1Nb3VzZURvd24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5faWdub3JlQWRkQ2xvc2VkVGFic1RhYkJhckl0ZW1Nb3VzZURvd24gPSB0cnVlOworCisgICAg
ICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVu
dCk7CisgICAgICAgIGNvbnRleHRNZW51LmFkZEJlZm9yZVNob3dDYWxsYmFjaygoKSA9PiB7Cisg
ICAgICAgICAgICB0aGlzLl9pZ25vcmVBZGRDbG9zZWRUYWJzVGFiQmFySXRlbU1vdXNlRG93biA9
IGZhbHNlOworICAgICAgICB9KTsKKworICAgICAgICBmb3IgKGxldCBjbG9zZWRUYWJDbGFzcyBv
ZiBjbG9zZWRUYWJDbGFzc2VzKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KGNsb3NlZFRhYkNsYXNzLnRhYkluZm8oKS5kaXNwbGF5TmFtZSwgKCkgPT4geworICAgICAgICAg
ICAgICAgIFdJLmNyZWF0ZU5ld1RhYldpdGhUeXBlKGNsb3NlZFRhYkNsYXNzLlR5cGUsIHtzaG91
bGRTaG93TmV3VGFiOiB0cnVlfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbnRleHRNZW51LnNob3coKTsKICAgICB9CiAKICAgICBfaGFuZGxlTW91c2VNb3ZlZChl
dmVudCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>