<?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>229666</bug_id>
          
          <creation_ts>2021-08-30 03:29:43 -0700</creation_ts>
          <short_desc>[CSS Cascade Layers] Compute order correctly for late added sublayers</short_desc>
          <delta_ts>2021-08-31 04:49:25 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788469</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 03:29:43 -0700</bug_when>
    <thetext>We currently get order wrong in cases like

@layer a.b {
  ...
}
@layer c {
  ...
}
@layer a.d {
  ...
}

where c should have higher priority than a.d.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788473</commentid>
    <comment_count>1</comment_count>
      <attachid>436763</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 04:12:42 -0700</bug_when>
    <thetext>Created attachment 436763
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788480</commentid>
    <comment_count>2</comment_count>
      <attachid>436764</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 05:38:49 -0700</bug_when>
    <thetext>Created attachment 436764
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788511</commentid>
    <comment_count>3</comment_count>
      <attachid>436764</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-30 08:46:27 -0700</bug_when>
    <thetext>Comment on attachment 436764
patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [CSS Cascade Layers] Computer order correctly for late added sublayers

Compute order

&gt; Source/WebCore/style/RuleSet.cpp:86
&gt; +void RuleSet::addRule(const StyleRule&amp; rule, unsigned selectorIndex, unsigned selectorListIndex, unsigned cascadeLayerIdentifier, MediaQueryCollector* mediaQueryCollector)

unsigned -&gt; CascadeLayerIdentifier ?

&gt; Source/WebCore/style/RuleSet.cpp:93
&gt; +        std::fill(m_cascadeLayerIdentifierForRulePosition.begin() + oldSize, m_cascadeLayerIdentifierForRulePosition.end(), 0);

Shame they don&apos;t init to 0 automatically

&gt; Source/WebCore/style/RuleSet.cpp:405
&gt; +        CascadeLayerIdentifier identifier = 0;

Oh there is a typedef! Perhaps it should be a type which can initialize itself to 0.

&gt; Source/WebCore/style/RuleSet.cpp:470
&gt; +    auto compareCascadeLayers = [&amp;](CascadeLayerIdentifier a, CascadeLayerIdentifier b) {
&gt; +        while (a &amp;&amp; b) {
&gt; +            // Identifiers are in parse order which almost corresponds to the layer priority order.
&gt; +            // The only exception is when a sublayer gets added to a layer after adding other non-sublayers.
&gt; +            // To resolve this we need look for a shared ancestor layer.
&gt; +            auto aParent = ruleSet-&gt;cascadeLayerForIdentifier(a).parentIdentifier;
&gt; +            auto bParent = ruleSet-&gt;cascadeLayerForIdentifier(b).parentIdentifier;
&gt; +            if (aParent == bParent || aParent == b || bParent == a)
&gt; +                break;
&gt; +            if (aParent &gt; bParent)
&gt; +                a = aParent;
&gt; +            else
&gt; +                b = bParent;
&gt; +        }
&gt; +        return a &lt; b;
&gt; +    };
&gt; +
&gt; +    auto updateCascadeLayerOrder = [&amp;] {
&gt; +        Vector&lt;CascadeLayerIdentifier&gt; orderVector;
&gt; +        for (CascadeLayerIdentifier identifier = 1; identifier &lt;= ruleSet-&gt;m_cascadeLayers.size(); ++identifier)
&gt; +            orderVector.append(identifier);
&gt; +        std::sort(orderVector.begin(), orderVector.end(), compareCascadeLayers);
&gt; +        for (unsigned i = 0; i &lt; orderVector.size(); ++i)
&gt; +            ruleSet-&gt;cascadeLayerForIdentifier(orderVector[i]).order = i + 1;
&gt; +    };
&gt; +
&gt; +    if (mode == Mode::Normal &amp;&amp; !ruleSet-&gt;m_cascadeLayers.isEmpty())
&gt; +        updateCascadeLayerOrder();

Maybe put this in its own function

&gt; Source/WebCore/style/RuleSet.h:193
&gt; +    CascadeLayer&amp; cascadeLayerForIdentifier(CascadeLayerIdentifier identifier) { return m_cascadeLayers[identifier - 1]; }
&gt; +    const CascadeLayer&amp; cascadeLayerForIdentifier(CascadeLayerIdentifier identifier) const { return m_cascadeLayers[identifier - 1]; }

Maybe assert that identifier != 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788528</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 09:22:09 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 436764 [details]
&gt; Shame they don&apos;t init to 0 automatically

Yeah, was going to add a variant of grow that takes an initialization value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788554</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 10:06:11 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/style/RuleSet.h:193
&gt; &gt; +    CascadeLayer&amp; cascadeLayerForIdentifier(CascadeLayerIdentifier identifier) { return m_cascadeLayers[identifier - 1]; }
&gt; &gt; +    const CascadeLayer&amp; cascadeLayerForIdentifier(CascadeLayerIdentifier identifier) const { return m_cascadeLayers[identifier - 1]; }
&gt; 
&gt; Maybe assert that identifier != 0

Didn&apos;t seem necessary since vector asserts against overflow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788555</commentid>
    <comment_count>6</comment_count>
      <attachid>436788</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 10:10:18 -0700</bug_when>
    <thetext>Created attachment 436788
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788572</commentid>
    <comment_count>7</comment_count>
      <attachid>436794</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-30 10:56:07 -0700</bug_when>
    <thetext>Created attachment 436794
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788867</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-31 04:48:20 -0700</bug_when>
    <thetext>Committed r281798 (241135@main): &lt;https://commits.webkit.org/241135@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436794.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788868</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-31 04:49:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/82574233&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436763</attachid>
            <date>2021-08-30 04:12:42 -0700</date>
            <delta_ts>2021-08-30 05:38:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layer-parent-order.patch</filename>
            <type>text/plain</type>
            <size>13034</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVhNjZkMTkzOTVhNy4uYTk4MzFiODE3
OGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gQ29tcHV0ZXIgb3JkZXIgY29ycmVjdGx5IGZvciBsYXRlIGFkZGVk
IHN1YmxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVyLWJhc2ljLWV4cGVj
dGVkLnR4dDoKKwogMjAyMS0wOC0yNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3Rl
ZC50eHQKaW5kZXggNzllOTk0MjM3MzkwLi4xMTA5YmNmMjllYWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xh
eWVyLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQK
QEAgLTE3LDIwICsxNywyMCBAQCBQQVNTIEI2IE5hbWVkIGxheWVycwogUEFTUyBCNyBOYW1lZCBs
YXllcnMKIFBBU1MgQjggTmFtZWQgbGF5ZXJzCiBQQVNTIEI5IE5hbWVkIGxheWVycwotRkFJTCBC
MTAgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIxMCBOYW1lZCBsYXllcnMsIHRhcmdldCAn
Zmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCki
CitQQVNTIEIxMCBOYW1lZCBsYXllcnMKIFBBU1MgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAog
UEFTUyBDMiBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCi1GQUlMIEMzIE5hbWVkIGxheWVycyBzaG9y
dGhhbmQgYXNzZXJ0X2VxdWFsczogQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdm
aXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIK
K1BBU1MgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hv
cnRoYW5kCi1GQUlMIEM1IE5hbWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUg
TmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAx
MjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgQzUgTmFtZWQgbGF5ZXJzIHNo
b3J0aGFuZAogUEFTUyBEMSBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBE
MiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMyBNaXhlZCBuYW1lZCBh
bmQgYW5vbnltb3VzIGxheWVycwotRkFJTCBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxh
eWVycyBhc3NlcnRfZXF1YWxzOiBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywg
dGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1
LCAwLCAwKSIKK1BBU1MgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1Mg
RDUgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRTEgU3RhdGVtZW50IHN5
bnRheAogUEFTUyBFMiBTdGF0ZW1lbnQgc3ludGF4CiBQQVNTIEUzIFN0YXRlbWVudCBzeW50YXgK
IFBBU1MgRTQgU3RhdGVtZW50IHN5bnRheAotRkFJTCBFNSBTdGF0ZW1lbnQgc3ludGF4IGFzc2Vy
dF9lcXVhbHM6IEU1IFN0YXRlbWVudCBzeW50YXgsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJy
Z2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQQVNTIEU1IFN0YXRlbWVu
dCBzeW50YXgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTA1NWRhNWY1NS4uMTFkYmRkMWIzNmMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIENvbXB1dGVyIG9y
ZGVyIGNvcnJlY3RseSBmb3IgbGF0ZSBhZGRlZCBzdWJsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTY2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGNhc2VzIGxpa2UKKworICAgICAgICAg
ICAgQGxheWVyIGEuYiB7IC4uLiB9CisgICAgICAgICAgICBAbGF5ZXIgYyB7IC4uLiB9CisgICAg
ICAgICAgICBAbGF5ZXIgYS5kIHsgLi4uIH0KKworICAgICAgICAnYycgc2hvdWxkIGhhdmUgaGln
aGVyIHByaW9yaXR5IHRoYW4gJ2EuZCcuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgcGVyLVJ1bGVE
YXRhIGxheWVyIG9yZGVyIHZlY3RvciB3aXRoIHJlZmVyZW5jZXMgKGluZGV4ZXMpIHRvIGxheWVy
IGVudHJpZXMuCisgICAgICAgIFRoZXNlIG9iamVjdCBoYXZlIG9yZGVyIGZpZWxkIHRoYXQgY2Fu
IGJlIHJlY29tcHV0ZWQuCisKKyAgICAgICAgKiBzdHlsZS9SdWxlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIpOgorCisgICAgICAgIElu
c3RlYWQgb2YgY29tcHV0aW5nIG9yZGVyIGRpcmVjdGx5IHdlIGp1c3QgZ2l2ZSBlYWNoIGxheWVy
IGFuZCBpZGVudGlmaWVyIGFuZCBhZGQgYW4gZW50cnkgZm9yIGl0IHRvIHRoZSBsYXllciB2ZWN0
b3IuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjpwb3BDYXNj
YWRlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6On5C
dWlsZGVyKToKKworICAgICAgICBDb21wdXRlIGxheWVyIG9yZGVyIGFmdGVyIGJ1aWxkaW5nIGZv
ciBhbGwgbGF5ZXJzLgorCisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6c2hyaW5r
VG9GaXQpOgorICAgICAgICAqIHN0eWxlL1J1bGVTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSdWxlU2V0OjpjYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSdWxlU2V0OjpjYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpjYXNjYWRlTGF5ZXJPcmRlckZvciBjb25z
dCk6CisKIDIwMjEtMDgtMjkgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0lGQ10gTW92ZSAibGluZSBuZWVkcyBpbnRlZ3JhbCBzbmFwcGluZyIgY29tcHV0
aW5nIHRvIElGQyBmcm9tIHRoZSBpbnRlZ3JhdGlvbiBsYXllcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0
LmNwcAppbmRleCA0NjhhMzdjNmY0MTMuLjlkNWNlNDEwMzU2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVs
ZVNldC5jcHAKQEAgLTgzLDE1ICs4MywxNSBAQCBzdGF0aWMgYm9vbCBpc0hvc3RTZWxlY3Rvck1h
dGNoaW5nSW5TaGFkb3dUcmVlKGNvbnN0IENTU1NlbGVjdG9yJiBzdGFydFNlbGVjdG9yKQogICAg
IHJldHVybiBsZWZ0bW9zdFNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVjdG9yOjpQc2V1ZG9D
bGFzcyAmJiBsZWZ0bW9zdFNlbGVjdG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NIb3N0OwogfQogCi12b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5
bGVSdWxlJiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxp
c3RJbmRleCwgdW5zaWduZWQgY2FzY2FkZUxheWVyT3JkZXIsIE1lZGlhUXVlcnlDb2xsZWN0b3Iq
IG1lZGlhUXVlcnlDb2xsZWN0b3IpCit2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVS
dWxlJiBydWxlLCB1bnNpZ25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJ
bmRleCwgdW5zaWduZWQgY2FzY2FkZUxheWVySWRlbnRpZmllciwgTWVkaWFRdWVyeUNvbGxlY3Rv
ciogbWVkaWFRdWVyeUNvbGxlY3RvcikKIHsKICAgICBSdWxlRGF0YSBydWxlRGF0YShydWxlLCBz
ZWxlY3RvckluZGV4LCBzZWxlY3Rvckxpc3RJbmRleCwgbV9ydWxlQ291bnQrKyk7CiAKLSAgICBp
ZiAoY2FzY2FkZUxheWVyT3JkZXIpIHsKLSAgICAgICAgYXV0byBvbGRTaXplID0gbV9jYXNjYWRl
TGF5ZXJPcmRlckZvclBvc2l0aW9uLnNpemUoKTsKLSAgICAgICAgbV9jYXNjYWRlTGF5ZXJPcmRl
ckZvclBvc2l0aW9uLmdyb3cobV9ydWxlQ291bnQpOwotICAgICAgICBzdGQ6OmZpbGwobV9jYXNj
YWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLmJlZ2luKCkgKyBvbGRTaXplLCBtX2Nhc2NhZGVMYXll
ck9yZGVyRm9yUG9zaXRpb24uZW5kKCksIDApOwotICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVy
Rm9yUG9zaXRpb24ubGFzdCgpID0gY2FzY2FkZUxheWVyT3JkZXI7CisgICAgaWYgKGNhc2NhZGVM
YXllcklkZW50aWZpZXIpIHsKKyAgICAgICAgYXV0byBvbGRTaXplID0gbV9jYXNjYWRlTGF5ZXJJ
ZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uLnNpemUoKTsKKyAgICAgICAgbV9jYXNjYWRlTGF5ZXJJ
ZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uLmdyb3cobV9ydWxlQ291bnQpOworICAgICAgICBzdGQ6
OmZpbGwobV9jYXNjYWRlTGF5ZXJJZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uLmJlZ2luKCkgKyBv
bGRTaXplLCBtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uZW5kKCksIDAp
OworICAgICAgICBtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24ubGFzdCgp
ID0gY2FzY2FkZUxheWVySWRlbnRpZmllcjsKICAgICB9CiAKICAgICBtX2ZlYXR1cmVzLmNvbGxl
Y3RGZWF0dXJlcyhydWxlRGF0YSk7CkBAIC0zOTIsMTMgKzM5MiwyMSBAQCB2b2lkIFJ1bGVTZXQ6
OkJ1aWxkZXI6OmFkZFN0eWxlUnVsZShjb25zdCBTdHlsZVJ1bGUmIHJ1bGUpCiAgICAgICAgIHJl
dHVybjsKICAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RJbmRleCA9IDA7CiAgICAgZm9yIChzaXpl
X3Qgc2VsZWN0b3JJbmRleCA9IDA7IHNlbGVjdG9ySW5kZXggIT0gbm90Rm91bmQ7IHNlbGVjdG9y
SW5kZXggPSBzZWxlY3Rvckxpc3QuaW5kZXhPZk5leHRTZWxlY3RvckFmdGVyKHNlbGVjdG9ySW5k
ZXgpKQotICAgICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVj
dG9yTGlzdEluZGV4KyssIGNhc2NhZGVMYXllck9yZGVyLCAmbWVkaWFRdWVyeUNvbGxlY3Rvcik7
CisgICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwgc2VsZWN0b3JM
aXN0SW5kZXgrKywgY3VycmVudENhc2NhZGVMYXllcklkZW50aWZpZXIsICZtZWRpYVF1ZXJ5Q29s
bGVjdG9yKTsKIH0KIAogdm9pZCBSdWxlU2V0OjpCdWlsZGVyOjpwdXNoQ2FzY2FkZUxheWVyKGNv
bnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6Tm9y
bWFsKQogICAgICAgICByZXR1cm47CisKKyAgICBpZiAoY2FzY2FkZUxheWVySWRlbnRpZmllck1h
cC5pc0VtcHR5KCkgJiYgIXJ1bGVTZXQtPm1fY2FzY2FkZUxheWVycy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgLy8gRm9yIGluY3JlbWVudGFsIGJ1aWxkLCByZWNvbnN0cnVjdCB0aGUgbmFtZS0+aWRl
bnRpZmllciBtYXAuCisgICAgICAgIENhc2NhZGVMYXllcklkZW50aWZpZXIgaWRlbnRpZmllciA9
IDA7CisgICAgICAgIGZvciAoYXV0byYgbGF5ZXIgOiBydWxlU2V0LT5tX2Nhc2NhZGVMYXllcnMp
CisgICAgICAgICAgICBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyTWFwLmFkZChsYXllci5yZXNvbHZl
ZE5hbWUsICsraWRlbnRpZmllcik7CisgICAgfQorCiAgICAgYXV0byBuYW1lUmVzb2x2aW5nQW5v
bnltb3VzID0gWyZdIHsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICAvLyBNYWtlIHVuaXF1ZSBuYW1lIGZvciBhbiBhbm9ueW1vdXMgbGF5ZXIuCkBAIC00MTEsOSAr
NDE5LDEwIEBAIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6cHVzaENhc2NhZGVMYXllcihjb25zdCBD
YXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQogICAgIC8vIEZvciBoaWVyYXJjaGljYWwgbmFtZXMgd2Ug
cmVnaXN0ZXIgdGhlIGNvbnRhaW5pbmcgbGF5ZXJzIGluZGl2aWR1YWxseSBmaXJzdC4KICAgICBm
b3IgKGF1dG8mIG5hbWVTZWdtZW50IDogbmFtZVJlc29sdmluZ0Fub255bW91cygpKSB7CiAgICAg
ICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5hcHBlbmQobmFtZVNlZ21lbnQpOwotICAgICAg
ICBjYXNjYWRlTGF5ZXJPcmRlciA9IHJ1bGVTZXQtPm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZW5z
dXJlKHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSwgWyZdIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzIG5vdCBjb3JyZWN0IHdoZW4gYWRkaW5nIGEgc3VibGF5ZXIgdG8gYW4gYWxyZWFk
eSByZWdpc3RlcmVkIGxheWVyIGFmdGVyIGl0IGhhcyBnYWluZWQgc2libGluZ3MuCi0gICAgICAg
ICAgICByZXR1cm4gcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5zaXplKCkgKyAxOwor
ICAgICAgICBjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllciA9IGNhc2NhZGVMYXllcklkZW50
aWZpZXJNYXAuZW5zdXJlKHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSwgWyZdIHsKKyAgICAgICAg
ICAgIC8vIFByZXZpb3VzbHkgdW5zZWVuIGxheWVyLgorICAgICAgICAgICAgcnVsZVNldC0+bV9j
YXNjYWRlTGF5ZXJzLmFwcGVuZCh7IHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSwgY3VycmVudENh
c2NhZGVMYXllcklkZW50aWZpZXIgfSk7CisgICAgICAgICAgICByZXR1cm4gcnVsZVNldC0+bV9j
YXNjYWRlTGF5ZXJzLnNpemUoKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogICAgIH0K
IH0KQEAgLTQyMiw5ICs0MzEsNDMgQEAgdm9pZCBSdWxlU2V0OjpCdWlsZGVyOjpwb3BDYXNjYWRl
TGF5ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobW9kZSAhPSBN
b2RlOjpOb3JtYWwpCiAgICAgICAgIHJldHVybjsKLSAgICBhdXRvIHNpemUgPSBuYW1lLmlzRW1w
dHkoKSA/IDEgOiBuYW1lLnNpemUoKTsKLSAgICByZXNvbHZlZENhc2NhZGVMYXllck5hbWUuc2hy
aW5rKHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5zaXplKCkgLSBzaXplKTsKLSAgICBjYXNjYWRl
TGF5ZXJPcmRlciA9IHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5pc0VtcHR5KCkgPyAwIDogcnVs
ZVNldC0+bV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5nZXQocmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1l
KTsKKworICAgIGZvciAoYXV0byBzaXplID0gbmFtZS5pc0VtcHR5KCkgPyAxIDogbmFtZS5zaXpl
KCk7IHNpemUtLTspIHsKKyAgICAgICAgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnJlbW92ZUxh
c3QoKTsKKyAgICAgICAgY3VycmVudENhc2NhZGVMYXllcklkZW50aWZpZXIgPSBydWxlU2V0LT5j
YXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyKS5w
YXJlbnRJZGVudGlmaWVyOworICAgIH0KK30KKworUnVsZVNldDo6QnVpbGRlcjo6fkJ1aWxkZXIo
KQoreworICAgIGF1dG8gY29tcGFyZUNhc2NhZGVMYXllcnMgPSBbJl0oQ2FzY2FkZUxheWVySWRl
bnRpZmllciBhLCBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGIpIHsKKyAgICAgICAgd2hpbGUgKGEg
JiYgYikgeworICAgICAgICAgICAgLy8gSWRlbnRpZmllcnMgYXJlIGluIHBhcnNlIG9yZGVyIHdo
aWNoIGFsbW9zdCBjb3JyZXNwb25kcyB0byB0aGUgbGF5ZXIgcHJpb3JpdHkgb3JkZXIuCisgICAg
ICAgICAgICAvLyBUaGUgb25seSBleGNlcHRpb24gaXMgd2hlbiBhIHN1YmxheWVyIGdldHMgYWRk
ZWQgdG8gYSBsYXllciBhZnRlciBhZGRpbmcgb3RoZXIgbm9uLXN1YmxheWVycy4KKyAgICAgICAg
ICAgIC8vIFRvIHJlc29sdmUgdGhpcyB3ZSBuZWVkIGxvb2sgZm9yIGEgc2hhcmVkIGFuY2VzdG9y
IGxheWVyLgorICAgICAgICAgICAgYXV0byBhUGFyZW50ID0gcnVsZVNldC0+Y2FzY2FkZUxheWVy
Rm9ySWRlbnRpZmllcihhKS5wYXJlbnRJZGVudGlmaWVyOworICAgICAgICAgICAgYXV0byBiUGFy
ZW50ID0gcnVsZVNldC0+Y2FzY2FkZUxheWVyRm9ySWRlbnRpZmllcihiKS5wYXJlbnRJZGVudGlm
aWVyOworICAgICAgICAgICAgaWYgKGFQYXJlbnQgPT0gYlBhcmVudCB8fCBhUGFyZW50ID09IGIg
fHwgYlBhcmVudCA9PSBhKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYg
KGFQYXJlbnQgPiBiUGFyZW50KQorICAgICAgICAgICAgICAgIGEgPSBhUGFyZW50OworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGIgPSBiUGFyZW50OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBhIDwgYjsKKyAgICB9OworCisgICAgYXV0byB1cGRhdGVDYXNjYWRlTGF5ZXJP
cmRlciA9IFsmXSB7CisgICAgICAgIFZlY3RvcjxDYXNjYWRlTGF5ZXJJZGVudGlmaWVyPiBvcmRl
clZlY3RvcjsKKyAgICAgICAgZm9yIChDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIg
PSAxOyBpZGVudGlmaWVyIDw9IHJ1bGVTZXQtPm1fY2FzY2FkZUxheWVycy5zaXplKCk7ICsraWRl
bnRpZmllcikKKyAgICAgICAgICAgIG9yZGVyVmVjdG9yLmFwcGVuZChpZGVudGlmaWVyKTsKKyAg
ICAgICAgc3RkOjpzb3J0KG9yZGVyVmVjdG9yLmJlZ2luKCksIG9yZGVyVmVjdG9yLmVuZCgpLCBj
b21wYXJlQ2FzY2FkZUxheWVycyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
cmRlclZlY3Rvci5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHJ1bGVTZXQtPmNhc2NhZGVMYXll
ckZvcklkZW50aWZpZXIob3JkZXJWZWN0b3JbaV0pLm9yZGVyID0gaSArIDE7CisgICAgfTsKKwor
ICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCAmJiAhcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJz
LmlzRW1wdHkoKSkKKyAgICAgICAgdXBkYXRlQ2FzY2FkZUxheWVyT3JkZXIoKTsKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+CkBAIC01NjEsNyArNjA0LDggQEAgdm9pZCBSdWxlU2V0
OjpzaHJpbmtUb0ZpdCgpCiAKICAgICBzaHJpbmtEeW5hbWljUnVsZXMobV9keW5hbWljTWVkaWFR
dWVyeVJ1bGVzKTsKIAotICAgIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5zaHJpbmtU
b0ZpdCgpOworICAgIG1fY2FzY2FkZUxheWVycy5zaHJpbmtUb0ZpdCgpOworICAgIG1fY2FzY2Fk
ZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5zaHJpbmtUb0ZpdCgpOwogfQogCiBSdWxl
U2V0OjpNZWRpYVF1ZXJ5Q29sbGVjdG9yOjp+TWVkaWFRdWVyeUNvbGxlY3RvcigpID0gZGVmYXVs
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA0NjlmZTJhMDE5OGUuLjI2NjgwMTFlZmY4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTUwLDYgKzE1MCw4IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgUnVsZVNldCgpOwogCisgICAgdXNpbmcgQ2FzY2FkZUxheWVySWRlbnRpZmllciA9
IHVuc2lnbmVkOworCiAgICAgc3RydWN0IEJ1aWxkZXIgewogICAgICAgICBlbnVtIGNsYXNzIE1v
ZGUgeyBOb3JtYWwsIFJlc29sdmVyTXV0YXRpb25TY2FuIH07CiAKQEAgLTE1OCw5ICsxNjAsMTIg
QEAgcHJpdmF0ZToKICAgICAgICAgU3R5bGU6OlJlc29sdmVyKiByZXNvbHZlciB7IG51bGxwdHIg
fTsKICAgICAgICAgTW9kZSBtb2RlIHsgTW9kZTo6Tm9ybWFsIH07CiAgICAgICAgIENhc2NhZGVM
YXllck5hbWUgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lIHsgfTsKLSAgICAgICAgdW5zaWduZWQg
Y2FzY2FkZUxheWVyT3JkZXIgeyAwIH07CisgICAgICAgIEhhc2hNYXA8Q2FzY2FkZUxheWVyTmFt
ZSwgQ2FzY2FkZUxheWVySWRlbnRpZmllcj4gY2FzY2FkZUxheWVySWRlbnRpZmllck1hcCB7IH07
CisgICAgICAgIENhc2NhZGVMYXllcklkZW50aWZpZXIgY3VycmVudENhc2NhZGVMYXllcklkZW50
aWZpZXIgeyAwIH07CiAKICAgICAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVldChjb25zdCBTdHls
ZVNoZWV0Q29udGVudHMmKTsKKworICAgICAgICB+QnVpbGRlcigpOwogICAgICAgICAKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGFkZENoaWxkUnVsZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxT
dHlsZVJ1bGVCYXNlPj4mKTsKQEAgLTE3OSw2ICsxODQsMTQgQEAgcHJpdmF0ZToKIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB2b2lkIHRyYXZlcnNlUnVsZURhdGFzKEZ1bmN0aW9u
JiYpOwogCisgICAgc3RydWN0IENhc2NhZGVMYXllciB7CisgICAgICAgIENhc2NhZGVMYXllck5h
bWUgcmVzb2x2ZWROYW1lOworICAgICAgICBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIHBhcmVudElk
ZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVkIG9yZGVyIHsgMCB9OworICAgIH07CisgICAgQ2Fz
Y2FkZUxheWVyJiBjYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKENhc2NhZGVMYXllcklkZW50aWZp
ZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9jYXNjYWRlTGF5ZXJzW2lkZW50aWZpZXIgLSAxXTsg
fQorICAgIGNvbnN0IENhc2NhZGVMYXllciYgY2FzY2FkZUxheWVyRm9ySWRlbnRpZmllcihDYXNj
YWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FzY2FkZUxh
eWVyc1tpZGVudGlmaWVyIC0gMV07IH0KKwogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAg
ICBBdG9tUnVsZU1hcCBtX2NsYXNzUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAgbV90YWdMb2NhbE5h
bWVSdWxlczsKQEAgLTE5OSw5ICsyMTIsOSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8VmVjdG9y
PHNpemVfdD4sIFJlZjxjb25zdCBSdWxlU2V0Pj4gbV9tZWRpYVF1ZXJ5SW52YWxpZGF0aW9uUnVs
ZVNldENhY2hlOwogICAgIHVuc2lnbmVkIG1fcnVsZUNvdW50IHsgMCB9OwogCi0gICAgSGFzaE1h
cDxDYXNjYWRlTGF5ZXJOYW1lLCB1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcDsKLSAg
ICAvLyBUaGlzIGlzIGEgc2lkZSB2ZWN0b3IgdG8gaG9sZCBsYXllciBvcmRlciB3aXRob3V0IGJs
b2F0aW5nIFJ1bGVEYXRhLgotICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRl
ckZvclBvc2l0aW9uOworICAgIFZlY3RvcjxDYXNjYWRlTGF5ZXI+IG1fY2FzY2FkZUxheWVyczsK
KyAgICAvLyBUaGlzIGlzIGEgc2lkZSB2ZWN0b3IgdG8gaG9sZCBsYXllciBpZGVudGlmaWVycyB3
aXRob3V0IGJsb2F0aW5nIFJ1bGVEYXRhLgorICAgIFZlY3RvcjxDYXNjYWRlTGF5ZXJJZGVudGlm
aWVyPiBtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb247CiAKICAgICBib29s
IG1faGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNNYXRjaGluZ0luU2hhZG93VHJlZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2F1dG9TaHJpbmtUb0ZpdEVuYWJsZWQgeyB0cnVlIH07CkBAIC0yMjAsMTEg
KzIzMywxMyBAQCBpbmxpbmUgY29uc3QgUnVsZVNldDo6UnVsZURhdGFWZWN0b3IqIFJ1bGVTZXQ6
OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcmIGtleSwgYgogCiBpbmxpbmUgdW5zaWduZWQgUnVs
ZVNldDo6Y2FzY2FkZUxheWVyT3JkZXJGb3IoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKSBjb25z
dAogewotICAgIGlmIChtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24uc2l6ZSgpID4gcnVs
ZURhdGEucG9zaXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQ
b3NpdGlvbltydWxlRGF0YS5wb3NpdGlvbigpXTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAobV9j
YXNjYWRlTGF5ZXJJZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uLnNpemUoKSA8PSBydWxlRGF0YS5w
b3NpdGlvbigpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2Nh
c2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb25bcnVsZURhdGEucG9zaXRpb24oKV07
CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY2Fz
Y2FkZUxheWVyRm9ySWRlbnRpZmllcihpZGVudGlmaWVyKS5vcmRlcjsKIH0KIAotCiB9IC8vIG5h
bWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436764</attachid>
            <date>2021-08-30 05:38:49 -0700</date>
            <delta_ts>2021-08-30 10:10:18 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layer-parent-order-2.patch</filename>
            <type>text/plain</type>
            <size>13039</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVhNjZkMTkzOTVhNy4uYTk4MzFiODE3
OGFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gQ29tcHV0ZXIgb3JkZXIgY29ycmVjdGx5IGZvciBsYXRlIGFkZGVk
IHN1YmxheWVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVyLWJhc2ljLWV4cGVj
dGVkLnR4dDoKKwogMjAyMS0wOC0yNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
Y2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3Rl
ZC50eHQKaW5kZXggNzllOTk0MjM3MzkwLi4xMTA5YmNmMjllYWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xh
eWVyLWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQK
QEAgLTE3LDIwICsxNywyMCBAQCBQQVNTIEI2IE5hbWVkIGxheWVycwogUEFTUyBCNyBOYW1lZCBs
YXllcnMKIFBBU1MgQjggTmFtZWQgbGF5ZXJzCiBQQVNTIEI5IE5hbWVkIGxheWVycwotRkFJTCBC
MTAgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIxMCBOYW1lZCBsYXllcnMsIHRhcmdldCAn
Zmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCki
CitQQVNTIEIxMCBOYW1lZCBsYXllcnMKIFBBU1MgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAog
UEFTUyBDMiBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCi1GQUlMIEMzIE5hbWVkIGxheWVycyBzaG9y
dGhhbmQgYXNzZXJ0X2VxdWFsczogQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdm
aXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIK
K1BBU1MgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hv
cnRoYW5kCi1GQUlMIEM1IE5hbWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUg
TmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAx
MjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgQzUgTmFtZWQgbGF5ZXJzIHNo
b3J0aGFuZAogUEFTUyBEMSBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBE
MiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMyBNaXhlZCBuYW1lZCBh
bmQgYW5vbnltb3VzIGxheWVycwotRkFJTCBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxh
eWVycyBhc3NlcnRfZXF1YWxzOiBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywg
dGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1
LCAwLCAwKSIKK1BBU1MgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1Mg
RDUgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRTEgU3RhdGVtZW50IHN5
bnRheAogUEFTUyBFMiBTdGF0ZW1lbnQgc3ludGF4CiBQQVNTIEUzIFN0YXRlbWVudCBzeW50YXgK
IFBBU1MgRTQgU3RhdGVtZW50IHN5bnRheAotRkFJTCBFNSBTdGF0ZW1lbnQgc3ludGF4IGFzc2Vy
dF9lcXVhbHM6IEU1IFN0YXRlbWVudCBzeW50YXgsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJy
Z2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQQVNTIEU1IFN0YXRlbWVu
dCBzeW50YXgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTA1NWRhNWY1NS4uZTMwZWFkOTdhYmM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIENvbXB1dGVyIG9y
ZGVyIGNvcnJlY3RseSBmb3IgbGF0ZSBhZGRlZCBzdWJsYXllcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTY2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIGNhc2VzIGxpa2UKKworICAgICAgICAg
ICAgQGxheWVyIGEuYiB7IC4uLiB9CisgICAgICAgICAgICBAbGF5ZXIgYyB7IC4uLiB9CisgICAg
ICAgICAgICBAbGF5ZXIgYS5kIHsgLi4uIH0KKworICAgICAgICAnYycgc2hvdWxkIGhhdmUgaGln
aGVyIHByaW9yaXR5IHRoYW4gJ2EuZCcuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgcGVyLVJ1bGVE
YXRhIGxheWVyIG9yZGVyIHZlY3RvciB3aXRoIHJlZmVyZW5jZXMgKGluZGV4ZXMpIHRvIGxheWVy
IGVudHJ5IHZlY3Rvci4KKyAgICAgICAgVGhlc2UgZW50cmllcyBoYXZlIG9yZGVyIGZpZWxkIHRo
YXQgY2FuIGJlIHJlY29tcHV0ZWQuCisKKyAgICAgICAgKiBzdHlsZS9SdWxlU2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIpOgorCisgICAg
ICAgIEluc3RlYWQgb2YgY29tcHV0aW5nIG9yZGVyIGRpcmVjdGx5IHdlIGp1c3QgZ2l2ZSBlYWNo
IGxheWVyIGFuIGlkZW50aWZpZXIgYW5kIGFkZCBhbiBlbnRyeSBmb3IgaXQgdG8gdGhlIGxheWVy
IHZlY3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnBv
cENhc2NhZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6QnVpbGRl
cjo6fkJ1aWxkZXIpOgorCisgICAgICAgIENvbXB1dGUgbGF5ZXIgb3JkZXIgYWZ0ZXIgYnVpbGRp
bmcgZm9yIGFsbCBsYXllcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0Ojpz
aHJpbmtUb0ZpdCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9y
IGNvbnN0KToKKwogMjAyMS0wOC0yOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0xGQ11bSUZDXSBNb3ZlICJsaW5lIG5lZWRzIGludGVncmFsIHNuYXBwaW5nIiBj
b21wdXRpbmcgdG8gSUZDIGZyb20gdGhlIGludGVncmF0aW9uIGxheWVyCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuY3BwCmluZGV4IDQ2OGEzN2M2ZjQxMy4uOWQ1Y2U0MTAzNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SdWxlU2V0LmNwcApAQCAtODMsMTUgKzgzLDE1IEBAIHN0YXRpYyBib29sIGlzSG9zdFNlbGVj
dG9yTWF0Y2hpbmdJblNoYWRvd1RyZWUoY29uc3QgQ1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3Ip
CiAgICAgcmV0dXJuIGxlZnRtb3N0U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzICYmIGxlZnRtb3N0U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzc0hvc3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25z
dCBTdHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVj
dG9yTGlzdEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciwgTWVkaWFRdWVyeUNvbGxl
Y3RvciogbWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBT
dHlsZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9y
TGlzdEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyLCBNZWRpYVF1ZXJ5Q29s
bGVjdG9yKiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewogICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1
bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsKIAot
ICAgIGlmIChjYXNjYWRlTGF5ZXJPcmRlcikgewotICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nh
c2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24uc2l6ZSgpOwotICAgICAgICBtX2Nhc2NhZGVMYXll
ck9yZGVyRm9yUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7Ci0gICAgICAgIHN0ZDo6ZmlsbCht
X2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb24uYmVnaW4oKSArIG9sZFNpemUsIG1fY2FzY2Fk
ZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5lbmQoKSwgMCk7Ci0gICAgICAgIG1fY2FzY2FkZUxheWVy
T3JkZXJGb3JQb3NpdGlvbi5sYXN0KCkgPSBjYXNjYWRlTGF5ZXJPcmRlcjsKKyAgICBpZiAoY2Fz
Y2FkZUxheWVySWRlbnRpZmllcikgeworICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVM
YXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uc2l6ZSgpOworICAgICAgICBtX2Nhc2NhZGVM
YXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7CisgICAgICAg
IHN0ZDo6ZmlsbChtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uYmVnaW4o
KSArIG9sZFNpemUsIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5lbmQo
KSwgMCk7CisgICAgICAgIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5s
YXN0KCkgPSBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyOwogICAgIH0KIAogICAgIG1fZmVhdHVyZXMu
Y29sbGVjdEZlYXR1cmVzKHJ1bGVEYXRhKTsKQEAgLTM5MiwxMyArMzkyLDIxIEBAIHZvaWQgUnVs
ZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxlKGNvbnN0IFN0eWxlUnVsZSYgcnVsZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIHVuc2lnbmVkIHNlbGVjdG9yTGlzdEluZGV4ID0gMDsKICAgICBmb3Ig
KHNpemVfdCBzZWxlY3RvckluZGV4ID0gMDsgc2VsZWN0b3JJbmRleCAhPSBub3RGb3VuZDsgc2Vs
ZWN0b3JJbmRleCA9IHNlbGVjdG9yTGlzdC5pbmRleE9mTmV4dFNlbGVjdG9yQWZ0ZXIoc2VsZWN0
b3JJbmRleCkpCi0gICAgICAgIHJ1bGVTZXQtPmFkZFJ1bGUocnVsZSwgc2VsZWN0b3JJbmRleCwg
c2VsZWN0b3JMaXN0SW5kZXgrKywgY2FzY2FkZUxheWVyT3JkZXIsICZtZWRpYVF1ZXJ5Q29sbGVj
dG9yKTsKKyAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxl
Y3Rvckxpc3RJbmRleCsrLCBjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllciwgJm1lZGlhUXVl
cnlDb2xsZWN0b3IpOwogfQogCiB2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5
ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYgbmFtZSkKIHsKICAgICBpZiAobW9kZSAhPSBNb2Rl
OjpOb3JtYWwpCiAgICAgICAgIHJldHVybjsKKworICAgIGlmIChjYXNjYWRlTGF5ZXJJZGVudGlm
aWVyTWFwLmlzRW1wdHkoKSAmJiAhcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJzLmlzRW1wdHkoKSkg
eworICAgICAgICAvLyBGb3IgaW5jcmVtZW50YWwgYnVpbGQsIHJlY29uc3RydWN0IHRoZSBuYW1l
LT5pZGVudGlmaWVyIG1hcC4KKyAgICAgICAgQ2FzY2FkZUxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyID0gMDsKKyAgICAgICAgZm9yIChhdXRvJiBsYXllciA6IHJ1bGVTZXQtPm1fY2FzY2FkZUxh
eWVycykKKyAgICAgICAgICAgIGNhc2NhZGVMYXllcklkZW50aWZpZXJNYXAuYWRkKGxheWVyLnJl
c29sdmVkTmFtZSwgKytpZGVudGlmaWVyKTsKKyAgICB9CisKICAgICBhdXRvIG5hbWVSZXNvbHZp
bmdBbm9ueW1vdXMgPSBbJl0gewogICAgICAgICBpZiAobmFtZS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIC8vIE1ha2UgdW5pcXVlIG5hbWUgZm9yIGFuIGFub255bW91cyBsYXllci4KQEAgLTQx
MSw5ICs0MTksMTAgQEAgdm9pZCBSdWxlU2V0OjpCdWlsZGVyOjpwdXNoQ2FzY2FkZUxheWVyKGNv
bnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCiAgICAgLy8gRm9yIGhpZXJhcmNoaWNhbCBuYW1l
cyB3ZSByZWdpc3RlciB0aGUgY29udGFpbmluZyBsYXllcnMgaW5kaXZpZHVhbGx5IGZpcnN0Lgog
ICAgIGZvciAoYXV0byYgbmFtZVNlZ21lbnQgOiBuYW1lUmVzb2x2aW5nQW5vbnltb3VzKCkpIHsK
ICAgICAgICAgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmFwcGVuZChuYW1lU2VnbWVudCk7Ci0g
ICAgICAgIGNhc2NhZGVMYXllck9yZGVyID0gcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJPcmRlck1h
cC5lbnN1cmUocmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLCBbJl0gewotICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3Qgd2hlbiBhZGRpbmcgYSBzdWJsYXllciB0byBhbiBh
bHJlYWR5IHJlZ2lzdGVyZWQgbGF5ZXIgYWZ0ZXIgaXQgaGFzIGdhaW5lZCBzaWJsaW5ncy4KLSAg
ICAgICAgICAgIHJldHVybiBydWxlU2V0LT5tX2Nhc2NhZGVMYXllck9yZGVyTWFwLnNpemUoKSAr
IDE7CisgICAgICAgIGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyID0gY2FzY2FkZUxheWVy
SWRlbnRpZmllck1hcC5lbnN1cmUocmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLCBbJl0geworICAg
ICAgICAgICAgLy8gUHJldmlvdXNseSB1bnNlZW4gbGF5ZXIuCisgICAgICAgICAgICBydWxlU2V0
LT5tX2Nhc2NhZGVMYXllcnMuYXBwZW5kKHsgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLCBjdXJy
ZW50Q2FzY2FkZUxheWVySWRlbnRpZmllciB9KTsKKyAgICAgICAgICAgIHJldHVybiBydWxlU2V0
LT5tX2Nhc2NhZGVMYXllcnMuc2l6ZSgpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAg
ICAgfQogfQpAQCAtNDIyLDkgKzQzMSw0MyBAQCB2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnBvcENh
c2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQogewogICAgIGlmIChtb2Rl
ICE9IE1vZGU6Ok5vcm1hbCkKICAgICAgICAgcmV0dXJuOwotICAgIGF1dG8gc2l6ZSA9IG5hbWUu
aXNFbXB0eSgpID8gMSA6IG5hbWUuc2l6ZSgpOwotICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFt
ZS5zaHJpbmsocmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNpemUoKSAtIHNpemUpOwotICAgIGNh
c2NhZGVMYXllck9yZGVyID0gcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmlzRW1wdHkoKSA/IDAg
OiBydWxlU2V0LT5tX2Nhc2NhZGVMYXllck9yZGVyTWFwLmdldChyZXNvbHZlZENhc2NhZGVMYXll
ck5hbWUpOworCisgICAgZm9yIChhdXRvIHNpemUgPSBuYW1lLmlzRW1wdHkoKSA/IDEgOiBuYW1l
LnNpemUoKTsgc2l6ZS0tOykgeworICAgICAgICByZXNvbHZlZENhc2NhZGVMYXllck5hbWUucmVt
b3ZlTGFzdCgpOworICAgICAgICBjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllciA9IHJ1bGVT
ZXQtPmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIoY3VycmVudENhc2NhZGVMYXllcklkZW50aWZp
ZXIpLnBhcmVudElkZW50aWZpZXI7CisgICAgfQorfQorCitSdWxlU2V0OjpCdWlsZGVyOjp+QnVp
bGRlcigpCit7CisgICAgYXV0byBjb21wYXJlQ2FzY2FkZUxheWVycyA9IFsmXShDYXNjYWRlTGF5
ZXJJZGVudGlmaWVyIGEsIENhc2NhZGVMYXllcklkZW50aWZpZXIgYikgeworICAgICAgICB3aGls
ZSAoYSAmJiBiKSB7CisgICAgICAgICAgICAvLyBJZGVudGlmaWVycyBhcmUgaW4gcGFyc2Ugb3Jk
ZXIgd2hpY2ggYWxtb3N0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXllciBwcmlvcml0eSBvcmRlci4K
KyAgICAgICAgICAgIC8vIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuIGEgc3VibGF5ZXIgZ2V0
cyBhZGRlZCB0byBhIGxheWVyIGFmdGVyIGFkZGluZyBvdGhlciBub24tc3VibGF5ZXJzLgorICAg
ICAgICAgICAgLy8gVG8gcmVzb2x2ZSB0aGlzIHdlIG5lZWQgbG9vayBmb3IgYSBzaGFyZWQgYW5j
ZXN0b3IgbGF5ZXIuCisgICAgICAgICAgICBhdXRvIGFQYXJlbnQgPSBydWxlU2V0LT5jYXNjYWRl
TGF5ZXJGb3JJZGVudGlmaWVyKGEpLnBhcmVudElkZW50aWZpZXI7CisgICAgICAgICAgICBhdXRv
IGJQYXJlbnQgPSBydWxlU2V0LT5jYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKGIpLnBhcmVudElk
ZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoYVBhcmVudCA9PSBiUGFyZW50IHx8IGFQYXJlbnQg
PT0gYiB8fCBiUGFyZW50ID09IGEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBpZiAoYVBhcmVudCA+IGJQYXJlbnQpCisgICAgICAgICAgICAgICAgYSA9IGFQYXJlbnQ7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYiA9IGJQYXJlbnQ7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIGEgPCBiOworICAgIH07CisKKyAgICBhdXRvIHVwZGF0ZUNhc2NhZGVM
YXllck9yZGVyID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPENhc2NhZGVMYXllcklkZW50aWZpZXI+
IG9yZGVyVmVjdG9yOworICAgICAgICBmb3IgKENhc2NhZGVMYXllcklkZW50aWZpZXIgaWRlbnRp
ZmllciA9IDE7IGlkZW50aWZpZXIgPD0gcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJzLnNpemUoKTsg
KytpZGVudGlmaWVyKQorICAgICAgICAgICAgb3JkZXJWZWN0b3IuYXBwZW5kKGlkZW50aWZpZXIp
OworICAgICAgICBzdGQ6OnNvcnQob3JkZXJWZWN0b3IuYmVnaW4oKSwgb3JkZXJWZWN0b3IuZW5k
KCksIGNvbXBhcmVDYXNjYWRlTGF5ZXJzKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG9yZGVyVmVjdG9yLnNpemUoKTsgKytpKQorICAgICAgICAgICAgcnVsZVNldC0+Y2FzY2Fk
ZUxheWVyRm9ySWRlbnRpZmllcihvcmRlclZlY3RvcltpXSkub3JkZXIgPSBpICsgMTsKKyAgICB9
OworCisgICAgaWYgKG1vZGUgPT0gTW9kZTo6Tm9ybWFsICYmICFydWxlU2V0LT5tX2Nhc2NhZGVM
YXllcnMuaXNFbXB0eSgpKQorICAgICAgICB1cGRhdGVDYXNjYWRlTGF5ZXJPcmRlcigpOwogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4KQEAgLTU2MSw3ICs2MDQsOCBAQCB2b2lkIFJ1
bGVTZXQ6OnNocmlua1RvRml0KCkKIAogICAgIHNocmlua0R5bmFtaWNSdWxlcyhtX2R5bmFtaWNN
ZWRpYVF1ZXJ5UnVsZXMpOwogCi0gICAgbV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLnNo
cmlua1RvRml0KCk7CisgICAgbV9jYXNjYWRlTGF5ZXJzLnNocmlua1RvRml0KCk7CisgICAgbV9j
YXNjYWRlTGF5ZXJJZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uLnNocmlua1RvRml0KCk7CiB9CiAK
IFJ1bGVTZXQ6Ok1lZGlhUXVlcnlDb2xsZWN0b3I6On5NZWRpYVF1ZXJ5Q29sbGVjdG9yKCkgPSBk
ZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCmluZGV4IDQ2OWZlMmEwMTk4ZS4uMjY2ODAxMWVm
ZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgog
cHJpdmF0ZToKICAgICBSdWxlU2V0KCk7CiAKKyAgICB1c2luZyBDYXNjYWRlTGF5ZXJJZGVudGlm
aWVyID0gdW5zaWduZWQ7CisKICAgICBzdHJ1Y3QgQnVpbGRlciB7CiAgICAgICAgIGVudW0gY2xh
c3MgTW9kZSB7IE5vcm1hbCwgUmVzb2x2ZXJNdXRhdGlvblNjYW4gfTsKIApAQCAtMTU4LDkgKzE2
MCwxMiBAQCBwcml2YXRlOgogICAgICAgICBTdHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyIHsgbnVs
bHB0ciB9OwogICAgICAgICBNb2RlIG1vZGUgeyBNb2RlOjpOb3JtYWwgfTsKICAgICAgICAgQ2Fz
Y2FkZUxheWVyTmFtZSByZXNvbHZlZENhc2NhZGVMYXllck5hbWUgeyB9OwotICAgICAgICB1bnNp
Z25lZCBjYXNjYWRlTGF5ZXJPcmRlciB7IDAgfTsKKyAgICAgICAgSGFzaE1hcDxDYXNjYWRlTGF5
ZXJOYW1lLCBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyPiBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyTWFw
IHsgfTsKKyAgICAgICAgQ2FzY2FkZUxheWVySWRlbnRpZmllciBjdXJyZW50Q2FzY2FkZUxheWVy
SWRlbnRpZmllciB7IDAgfTsKIAogICAgICAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0
IFN0eWxlU2hlZXRDb250ZW50cyYpOworCisgICAgICAgIH5CdWlsZGVyKCk7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgYWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlUnVsZUJhc2U+PiYpOwpAQCAtMTc5LDYgKzE4NCwxNCBAQCBwcml2YXRlOgogCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHZvaWQgdHJhdmVyc2VSdWxlRGF0YXMoRnVu
Y3Rpb24mJik7CiAKKyAgICBzdHJ1Y3QgQ2FzY2FkZUxheWVyIHsKKyAgICAgICAgQ2FzY2FkZUxh
eWVyTmFtZSByZXNvbHZlZE5hbWU7CisgICAgICAgIENhc2NhZGVMYXllcklkZW50aWZpZXIgcGFy
ZW50SWRlbnRpZmllcjsKKyAgICAgICAgdW5zaWduZWQgb3JkZXIgeyAwIH07CisgICAgfTsKKyAg
ICBDYXNjYWRlTGF5ZXImIGNhc2NhZGVMYXllckZvcklkZW50aWZpZXIoQ2FzY2FkZUxheWVySWRl
bnRpZmllciBpZGVudGlmaWVyKSB7IHJldHVybiBtX2Nhc2NhZGVMYXllcnNbaWRlbnRpZmllciAt
IDFdOyB9CisgICAgY29uc3QgQ2FzY2FkZUxheWVyJiBjYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVy
KENhc2NhZGVMYXllcklkZW50aWZpZXIgaWRlbnRpZmllcikgY29uc3QgeyByZXR1cm4gbV9jYXNj
YWRlTGF5ZXJzW2lkZW50aWZpZXIgLSAxXTsgfQorCiAgICAgQXRvbVJ1bGVNYXAgbV9pZFJ1bGVz
OwogICAgIEF0b21SdWxlTWFwIG1fY2xhc3NSdWxlczsKICAgICBBdG9tUnVsZU1hcCBtX3RhZ0xv
Y2FsTmFtZVJ1bGVzOwpAQCAtMTk5LDkgKzIxMiw5IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxW
ZWN0b3I8c2l6ZV90PiwgUmVmPGNvbnN0IFJ1bGVTZXQ+PiBtX21lZGlhUXVlcnlJbnZhbGlkYXRp
b25SdWxlU2V0Q2FjaGU7CiAgICAgdW5zaWduZWQgbV9ydWxlQ291bnQgeyAwIH07CiAKLSAgICBI
YXNoTWFwPENhc2NhZGVMYXllck5hbWUsIHVuc2lnbmVkPiBtX2Nhc2NhZGVMYXllck9yZGVyTWFw
OwotICAgIC8vIFRoaXMgaXMgYSBzaWRlIHZlY3RvciB0byBob2xkIGxheWVyIG9yZGVyIHdpdGhv
dXQgYmxvYXRpbmcgUnVsZURhdGEuCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBtX2Nhc2NhZGVMYXll
ck9yZGVyRm9yUG9zaXRpb247CisgICAgVmVjdG9yPENhc2NhZGVMYXllcj4gbV9jYXNjYWRlTGF5
ZXJzOworICAgIC8vIFRoaXMgaXMgYSBzaWRlIHZlY3RvciB0byBob2xkIGxheWVyIGlkZW50aWZp
ZXJzIHdpdGhvdXQgYmxvYXRpbmcgUnVsZURhdGEuCisgICAgVmVjdG9yPENhc2NhZGVMYXllcklk
ZW50aWZpZXI+IG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbjsKIAogICAg
IGJvb2wgbV9oYXNIb3N0UHNldWRvQ2xhc3NSdWxlc01hdGNoaW5nSW5TaGFkb3dUcmVlIHsgZmFs
c2UgfTsKICAgICBib29sIG1fYXV0b1Nocmlua1RvRml0RW5hYmxlZCB7IHRydWUgfTsKQEAgLTIy
MCwxMSArMjMzLDEzIEBAIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciogUnVs
ZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5LCBiCiAKIGlubGluZSB1bnNpZ25l
ZCBSdWxlU2V0OjpjYXNjYWRlTGF5ZXJPcmRlckZvcihjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEp
IGNvbnN0CiB7Ci0gICAgaWYgKG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5zaXplKCkg
PiBydWxlRGF0YS5wb3NpdGlvbigpKQotICAgICAgICByZXR1cm4gbV9jYXNjYWRlTGF5ZXJPcmRl
ckZvclBvc2l0aW9uW3J1bGVEYXRhLnBvc2l0aW9uKCldOwotICAgIHJldHVybiAwOworICAgIGlm
IChtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uc2l6ZSgpIDw9IHJ1bGVE
YXRhLnBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGF1dG8gaWRlbnRpZmllciA9
IG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbltydWxlRGF0YS5wb3NpdGlv
bigpXTsKKyAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVy
biBjYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpLm9yZGVyOwogfQogCi0KIH0g
Ly8gbmFtZXNwYWNlIFN0eWxlCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="459839"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436788</attachid>
            <date>2021-08-30 10:10:18 -0700</date>
            <delta_ts>2021-08-30 10:56:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layer-parent-order-3.patch</filename>
            <type>text/plain</type>
            <size>13476</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVhNjZkMTkzOTVhNy4uZjc1MTdhYTRl
NzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gQ29tcHV0ZSBvcmRlciBjb3JyZWN0bHkgZm9yIGxhdGUgYWRkZWQg
c3VibGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVyLWJhc2ljLWV4cGVjdGVk
LnR4dDoKKwogMjAyMS0wOC0yNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2Fz
Y2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50
eHQKaW5kZXggNzllOTk0MjM3MzkwLi4xMTA5YmNmMjllYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVy
LWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQKQEAg
LTE3LDIwICsxNywyMCBAQCBQQVNTIEI2IE5hbWVkIGxheWVycwogUEFTUyBCNyBOYW1lZCBsYXll
cnMKIFBBU1MgQjggTmFtZWQgbGF5ZXJzCiBQQVNTIEI5IE5hbWVkIGxheWVycwotRkFJTCBCMTAg
TmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIxMCBOYW1lZCBsYXllcnMsIHRhcmdldCAnZmly
c3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQ
QVNTIEIxMCBOYW1lZCBsYXllcnMKIFBBU1MgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFT
UyBDMiBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCi1GQUlMIEMzIE5hbWVkIGxheWVycyBzaG9ydGhh
bmQgYXNzZXJ0X2VxdWFsczogQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJz
dCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BB
U1MgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hvcnRo
YW5kCi1GQUlMIEM1IE5hbWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUgTmFt
ZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgs
IDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgQzUgTmFtZWQgbGF5ZXJzIHNob3J0
aGFuZAogUEFTUyBEMSBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMiBN
aXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMyBNaXhlZCBuYW1lZCBhbmQg
YW5vbnltb3VzIGxheWVycwotRkFJTCBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVy
cyBhc3NlcnRfZXF1YWxzOiBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywgdGFy
Z2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAw
LCAwKSIKK1BBU1MgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRDUg
TWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRTEgU3RhdGVtZW50IHN5bnRh
eAogUEFTUyBFMiBTdGF0ZW1lbnQgc3ludGF4CiBQQVNTIEUzIFN0YXRlbWVudCBzeW50YXgKIFBB
U1MgRTQgU3RhdGVtZW50IHN5bnRheAotRkFJTCBFNSBTdGF0ZW1lbnQgc3ludGF4IGFzc2VydF9l
cXVhbHM6IEU1IFN0YXRlbWVudCBzeW50YXgsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2Io
MCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQQVNTIEU1IFN0YXRlbWVudCBz
eW50YXgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTA1NWRhNWY1NS4uNmM0ZDU2Y2IzNzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIENvbXB1dGUgb3JkZXIg
Y29ycmVjdGx5IGZvciBsYXRlIGFkZGVkIHN1YmxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIGNhc2VzIGxpa2UKKworICAgICAgICAgICAgQGxh
eWVyIGEuYiB7IC4uLiB9CisgICAgICAgICAgICBAbGF5ZXIgYyB7IC4uLiB9CisgICAgICAgICAg
ICBAbGF5ZXIgYS5kIHsgLi4uIH0KKworICAgICAgICAnYycgc2hvdWxkIGhhdmUgaGlnaGVyIHBy
aW9yaXR5IHRoYW4gJ2EuZCcuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgcGVyLVJ1bGVEYXRhIGxh
eWVyIG9yZGVyIHZlY3RvciB3aXRoIHJlZmVyZW5jZXMgKGluZGV4ZXMpIHRvIGxheWVyIGVudHJ5
IHZlY3Rvci4KKyAgICAgICAgVGhlc2UgZW50cmllcyBoYXZlIG9yZGVyIGZpZWxkIHRoYXQgY2Fu
IGJlIHJlY29tcHV0ZWQuCisKKyAgICAgICAgKiBzdHlsZS9SdWxlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIpOgorCisgICAgICAgIElu
c3RlYWQgb2YgY29tcHV0aW5nIG9yZGVyIGRpcmVjdGx5IHdlIGp1c3QgZ2l2ZSBlYWNoIGxheWVy
IGFuIGlkZW50aWZpZXIgYW5kIGFkZCBhbiBlbnRyeSBmb3IgaXQgdG8gdGhlIGxheWVyIHZlY3Rv
ci4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnBvcENhc2Nh
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6QnVpbGRlcjo6fkJ1
aWxkZXIpOgorCisgICAgICAgIENvbXB1dGUgbGF5ZXIgb3JkZXIgYWZ0ZXIgYnVpbGRpbmcgZm9y
IGFsbCBsYXllcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9yIGNvbnN0
KToKKwogMjAyMS0wOC0yOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXSBNb3ZlICJsaW5lIG5lZWRzIGludGVncmFsIHNuYXBwaW5nIiBjb21wdXRp
bmcgdG8gSUZDIGZyb20gdGhlIGludGVncmF0aW9uIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQu
Y3BwCmluZGV4IDQ2OGEzN2M2ZjQxMy4uNDY1MWU4Y2E3ZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
U2V0LmNwcApAQCAtODMsMTUgKzgzLDE1IEBAIHN0YXRpYyBib29sIGlzSG9zdFNlbGVjdG9yTWF0
Y2hpbmdJblNoYWRvd1RyZWUoY29uc3QgQ1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3IpCiAgICAg
cmV0dXJuIGxlZnRtb3N0U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzICYmIGxlZnRtb3N0U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvc3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHls
ZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlz
dEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciwgTWVkaWFRdWVyeUNvbGxlY3Rvciog
bWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHlsZVJ1
bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdElu
ZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyLCBNZWRpYVF1ZXJ5Q29sbGVjdG9y
KiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewogICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUsIHNl
bGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsKIAotICAgIGlm
IChjYXNjYWRlTGF5ZXJPcmRlcikgewotICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVM
YXllck9yZGVyRm9yUG9zaXRpb24uc2l6ZSgpOwotICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVy
Rm9yUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7Ci0gICAgICAgIHN0ZDo6ZmlsbChtX2Nhc2Nh
ZGVMYXllck9yZGVyRm9yUG9zaXRpb24uYmVnaW4oKSArIG9sZFNpemUsIG1fY2FzY2FkZUxheWVy
T3JkZXJGb3JQb3NpdGlvbi5lbmQoKSwgMCk7Ci0gICAgICAgIG1fY2FzY2FkZUxheWVyT3JkZXJG
b3JQb3NpdGlvbi5sYXN0KCkgPSBjYXNjYWRlTGF5ZXJPcmRlcjsKKyAgICBpZiAoY2FzY2FkZUxh
eWVySWRlbnRpZmllcikgeworICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVMYXllcklk
ZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uc2l6ZSgpOworICAgICAgICBtX2Nhc2NhZGVMYXllcklk
ZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7CisgICAgICAgIHN0ZDo6
ZmlsbChtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uYmVnaW4oKSArIG9s
ZFNpemUsIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5lbmQoKSwgMCk7
CisgICAgICAgIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5sYXN0KCkg
PSBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyOwogICAgIH0KIAogICAgIG1fZmVhdHVyZXMuY29sbGVj
dEZlYXR1cmVzKHJ1bGVEYXRhKTsKQEAgLTM4NSw2ICszODUsMTIgQEAgdm9pZCBSdWxlU2V0OjpC
dWlsZGVyOjphZGRSdWxlc0Zyb21TaGVldChjb25zdCBTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0
KQogICAgIGFkZENoaWxkUnVsZXMoc2hlZXQuY2hpbGRSdWxlcygpKTsKIH0KIAorUnVsZVNldDo6
QnVpbGRlcjo6fkJ1aWxkZXIoKQoreworICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCAmJiAh
Y2FzY2FkZUxheWVySWRlbnRpZmllck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHVwZGF0ZUNhc2Nh
ZGVMYXllck9yZGVyKCk7Cit9CisKIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxl
KGNvbnN0IFN0eWxlUnVsZSYgcnVsZSkKIHsKICAgICBhdXRvJiBzZWxlY3Rvckxpc3QgPSBydWxl
LnNlbGVjdG9yTGlzdCgpOwpAQCAtMzkyLDEzICszOTgsMjEgQEAgdm9pZCBSdWxlU2V0OjpCdWls
ZGVyOjphZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlKQogICAgICAgICByZXR1cm47
CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXggPSAwOwogICAgIGZvciAoc2l6ZV90IHNl
bGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4
ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkK
LSAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxp
c3RJbmRleCsrLCBjYXNjYWRlTGF5ZXJPcmRlciwgJm1lZGlhUXVlcnlDb2xsZWN0b3IpOworICAg
ICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdElu
ZGV4KyssIGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyLCAmbWVkaWFRdWVyeUNvbGxlY3Rv
cik7CiB9CiAKIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6cHVzaENhc2NhZGVMYXllcihjb25zdCBD
YXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQogewogICAgIGlmIChtb2RlICE9IE1vZGU6Ok5vcm1hbCkK
ICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhc2NhZGVMYXllcklkZW50aWZpZXJNYXAuaXNF
bXB0eSgpICYmICFydWxlU2V0LT5tX2Nhc2NhZGVMYXllcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEZvciBpbmNyZW1lbnRhbCBidWlsZCwgcmVjb25zdHJ1Y3QgdGhlIG5hbWUtPmlkZW50aWZp
ZXIgbWFwLgorICAgICAgICBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIgPSAwOwor
ICAgICAgICBmb3IgKGF1dG8mIGxheWVyIDogcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJzKQorICAg
ICAgICAgICAgY2FzY2FkZUxheWVySWRlbnRpZmllck1hcC5hZGQobGF5ZXIucmVzb2x2ZWROYW1l
LCArK2lkZW50aWZpZXIpOworICAgIH0KKwogICAgIGF1dG8gbmFtZVJlc29sdmluZ0Fub255bW91
cyA9IFsmXSB7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
TWFrZSB1bmlxdWUgbmFtZSBmb3IgYW4gYW5vbnltb3VzIGxheWVyLgpAQCAtNDExLDkgKzQyNSwx
MCBAQCB2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2Fk
ZUxheWVyTmFtZSYgbmFtZSkKICAgICAvLyBGb3IgaGllcmFyY2hpY2FsIG5hbWVzIHdlIHJlZ2lz
dGVyIHRoZSBjb250YWluaW5nIGxheWVycyBpbmRpdmlkdWFsbHkgZmlyc3QuCiAgICAgZm9yIChh
dXRvJiBuYW1lU2VnbWVudCA6IG5hbWVSZXNvbHZpbmdBbm9ueW1vdXMoKSkgewogICAgICAgICBy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUuYXBwZW5kKG5hbWVTZWdtZW50KTsKLSAgICAgICAgY2Fz
Y2FkZUxheWVyT3JkZXIgPSBydWxlU2V0LT5tX2Nhc2NhZGVMYXllck9yZGVyTWFwLmVuc3VyZShy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3QgY29ycmVjdCB3aGVuIGFkZGluZyBhIHN1YmxheWVyIHRvIGFuIGFscmVhZHkgcmVn
aXN0ZXJlZCBsYXllciBhZnRlciBpdCBoYXMgZ2FpbmVkIHNpYmxpbmdzLgotICAgICAgICAgICAg
cmV0dXJuIHJ1bGVTZXQtPm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuc2l6ZSgpICsgMTsKKyAgICAg
ICAgY3VycmVudENhc2NhZGVMYXllcklkZW50aWZpZXIgPSBjYXNjYWRlTGF5ZXJJZGVudGlmaWVy
TWFwLmVuc3VyZShyZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7CisgICAgICAgICAgICAv
LyBQcmV2aW91c2x5IHVuc2VlbiBsYXllci4KKyAgICAgICAgICAgIHJ1bGVTZXQtPm1fY2FzY2Fk
ZUxheWVycy5hcHBlbmQoeyByZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIGN1cnJlbnRDYXNjYWRl
TGF5ZXJJZGVudGlmaWVyIH0pOworICAgICAgICAgICAgcmV0dXJuIHJ1bGVTZXQtPm1fY2FzY2Fk
ZUxheWVycy5zaXplKCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiB9CkBA
IC00MjIsOSArNDM3LDM4IEBAIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6cG9wQ2FzY2FkZUxheWVy
KGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6
Tm9ybWFsKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzaXplID0gbmFtZS5pc0VtcHR5KCkg
PyAxIDogbmFtZS5zaXplKCk7Ci0gICAgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNocmluayhy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUuc2l6ZSgpIC0gc2l6ZSk7Ci0gICAgY2FzY2FkZUxheWVy
T3JkZXIgPSByZXNvbHZlZENhc2NhZGVMYXllck5hbWUuaXNFbXB0eSgpID8gMCA6IHJ1bGVTZXQt
Pm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZ2V0KHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSk7CisK
KyAgICBmb3IgKGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0eSgpID8gMSA6IG5hbWUuc2l6ZSgpOyBz
aXplLS07KSB7CisgICAgICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5yZW1vdmVMYXN0KCk7
CisgICAgICAgIGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyID0gcnVsZVNldC0+Y2FzY2Fk
ZUxheWVyRm9ySWRlbnRpZmllcihjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllcikucGFyZW50
SWRlbnRpZmllcjsKKyAgICB9Cit9CisKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6dXBkYXRlQ2Fz
Y2FkZUxheWVyT3JkZXIoKQoreworICAgIGF1dG8gY29tcGFyZSA9IFsmXShDYXNjYWRlTGF5ZXJJ
ZGVudGlmaWVyIGEsIENhc2NhZGVMYXllcklkZW50aWZpZXIgYikgeworICAgICAgICB3aGlsZSAo
YSAmJiBiKSB7CisgICAgICAgICAgICAvLyBJZGVudGlmaWVycyBhcmUgaW4gcGFyc2Ugb3JkZXIg
d2hpY2ggYWxtb3N0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXllciBwcmlvcml0eSBvcmRlci4KKyAg
ICAgICAgICAgIC8vIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuIGEgc3VibGF5ZXIgZ2V0cyBh
ZGRlZCB0byBhIGxheWVyIGFmdGVyIGFkZGluZyBvdGhlciBub24tc3VibGF5ZXJzLgorICAgICAg
ICAgICAgLy8gVG8gcmVzb2x2ZSB0aGlzIHdlIG5lZWQgbG9vayBmb3IgYSBzaGFyZWQgYW5jZXN0
b3IgbGF5ZXIuCisgICAgICAgICAgICBhdXRvIGFQYXJlbnQgPSBydWxlU2V0LT5jYXNjYWRlTGF5
ZXJGb3JJZGVudGlmaWVyKGEpLnBhcmVudElkZW50aWZpZXI7CisgICAgICAgICAgICBhdXRvIGJQ
YXJlbnQgPSBydWxlU2V0LT5jYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKGIpLnBhcmVudElkZW50
aWZpZXI7CisgICAgICAgICAgICBpZiAoYVBhcmVudCA9PSBiUGFyZW50IHx8IGFQYXJlbnQgPT0g
YiB8fCBiUGFyZW50ID09IGEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoYVBhcmVudCA+IGJQYXJlbnQpCisgICAgICAgICAgICAgICAgYSA9IGFQYXJlbnQ7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYiA9IGJQYXJlbnQ7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGEgPCBiOworICAgIH07CisKKyAgICBWZWN0b3I8Q2FzY2FkZUxheWVySWRl
bnRpZmllcj4gb3JkZXJWZWN0b3I7CisgICAgZm9yIChDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIgPSAxOyBpZGVudGlmaWVyIDw9IHJ1bGVTZXQtPm1fY2FzY2FkZUxheWVycy5zaXpl
KCk7ICsraWRlbnRpZmllcikKKyAgICAgICAgb3JkZXJWZWN0b3IuYXBwZW5kKGlkZW50aWZpZXIp
OworICAgIHN0ZDo6c29ydChvcmRlclZlY3Rvci5iZWdpbigpLCBvcmRlclZlY3Rvci5lbmQoKSwg
Y29tcGFyZSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yZGVyVmVjdG9yLnNpemUo
KTsgKytpKQorICAgICAgICBydWxlU2V0LT5jYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKG9yZGVy
VmVjdG9yW2ldKS5vcmRlciA9IGkgKyAxOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlv
bj4KQEAgLTU2MSw3ICs2MDUsOCBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0KCkKIAogICAg
IHNocmlua0R5bmFtaWNSdWxlcyhtX2R5bmFtaWNNZWRpYVF1ZXJ5UnVsZXMpOwogCi0gICAgbV9j
YXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLnNocmlua1RvRml0KCk7CisgICAgbV9jYXNjYWRl
TGF5ZXJzLnNocmlua1RvRml0KCk7CisgICAgbV9jYXNjYWRlTGF5ZXJJZGVudGlmaWVyRm9yUnVs
ZVBvc2l0aW9uLnNocmlua1RvRml0KCk7CiB9CiAKIFJ1bGVTZXQ6Ok1lZGlhUXVlcnlDb2xsZWN0
b3I6On5NZWRpYVF1ZXJ5Q29sbGVjdG9yKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5o
CmluZGV4IDQ2OWZlMmEwMTk4ZS4uNTcxMjVjZWU4ODdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9SdWxlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5o
CkBAIC0xNTAsNiArMTUwLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBSdWxlU2V0KCk7CiAK
KyAgICB1c2luZyBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyID0gdW5zaWduZWQ7CisKICAgICBzdHJ1
Y3QgQnVpbGRlciB7CiAgICAgICAgIGVudW0gY2xhc3MgTW9kZSB7IE5vcm1hbCwgUmVzb2x2ZXJN
dXRhdGlvblNjYW4gfTsKIApAQCAtMTU4LDkgKzE2MCwxMiBAQCBwcml2YXRlOgogICAgICAgICBT
dHlsZTo6UmVzb2x2ZXIqIHJlc29sdmVyIHsgbnVsbHB0ciB9OwogICAgICAgICBNb2RlIG1vZGUg
eyBNb2RlOjpOb3JtYWwgfTsKICAgICAgICAgQ2FzY2FkZUxheWVyTmFtZSByZXNvbHZlZENhc2Nh
ZGVMYXllck5hbWUgeyB9OwotICAgICAgICB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciB7IDAg
fTsKKyAgICAgICAgSGFzaE1hcDxDYXNjYWRlTGF5ZXJOYW1lLCBDYXNjYWRlTGF5ZXJJZGVudGlm
aWVyPiBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyTWFwIHsgfTsKKyAgICAgICAgQ2FzY2FkZUxheWVy
SWRlbnRpZmllciBjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllciB7IDAgfTsKIAogICAgICAg
ICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyYpOworCisg
ICAgICAgIH5CdWlsZGVyKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQg
YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYpOwpAQCAt
MTY4LDYgKzE3Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgdm9pZCBwdXNoQ2FzY2FkZUxheWVy
KGNvbnN0IENhc2NhZGVMYXllck5hbWUmKTsKICAgICAgICAgdm9pZCBwb3BDYXNjYWRlTGF5ZXIo
Y29uc3QgQ2FzY2FkZUxheWVyTmFtZSYpOworICAgICAgICB2b2lkIHVwZGF0ZUNhc2NhZGVMYXll
ck9yZGVyKCk7CiAgICAgfTsKIAogICAgIHN0cnVjdCBDb2xsZWN0ZWRNZWRpYVF1ZXJ5Q2hhbmdl
cyB7CkBAIC0xNzksNiArMTg1LDE0IEBAIHByaXZhdGU6CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZVJ1bGVEYXRhcyhGdW5jdGlvbiYmKTsKIAorICAgIHN0
cnVjdCBDYXNjYWRlTGF5ZXIgeworICAgICAgICBDYXNjYWRlTGF5ZXJOYW1lIHJlc29sdmVkTmFt
ZTsKKyAgICAgICAgQ2FzY2FkZUxheWVySWRlbnRpZmllciBwYXJlbnRJZGVudGlmaWVyOworICAg
ICAgICB1bnNpZ25lZCBvcmRlciB7IDAgfTsKKyAgICB9OworICAgIENhc2NhZGVMYXllciYgY2Fz
Y2FkZUxheWVyRm9ySWRlbnRpZmllcihDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
IHsgcmV0dXJuIG1fY2FzY2FkZUxheWVyc1tpZGVudGlmaWVyIC0gMV07IH0KKyAgICBjb25zdCBD
YXNjYWRlTGF5ZXImIGNhc2NhZGVMYXllckZvcklkZW50aWZpZXIoQ2FzY2FkZUxheWVySWRlbnRp
ZmllciBpZGVudGlmaWVyKSBjb25zdCB7IHJldHVybiBtX2Nhc2NhZGVMYXllcnNbaWRlbnRpZmll
ciAtIDFdOyB9CisKICAgICBBdG9tUnVsZU1hcCBtX2lkUnVsZXM7CiAgICAgQXRvbVJ1bGVNYXAg
bV9jbGFzc1J1bGVzOwogICAgIEF0b21SdWxlTWFwIG1fdGFnTG9jYWxOYW1lUnVsZXM7CkBAIC0x
OTksOSArMjEzLDkgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPFZlY3RvcjxzaXplX3Q+LCBSZWY8
Y29uc3QgUnVsZVNldD4+IG1fbWVkaWFRdWVyeUludmFsaWRhdGlvblJ1bGVTZXRDYWNoZTsKICAg
ICB1bnNpZ25lZCBtX3J1bGVDb3VudCB7IDAgfTsKIAotICAgIEhhc2hNYXA8Q2FzY2FkZUxheWVy
TmFtZSwgdW5zaWduZWQ+IG1fY2FzY2FkZUxheWVyT3JkZXJNYXA7Ci0gICAgLy8gVGhpcyBpcyBh
IHNpZGUgdmVjdG9yIHRvIGhvbGQgbGF5ZXIgb3JkZXIgd2l0aG91dCBibG9hdGluZyBSdWxlRGF0
YS4KLSAgICBWZWN0b3I8dW5zaWduZWQ+IG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbjsK
KyAgICBWZWN0b3I8Q2FzY2FkZUxheWVyPiBtX2Nhc2NhZGVMYXllcnM7CisgICAgLy8gVGhpcyBp
cyBhIHNpZGUgdmVjdG9yIHRvIGhvbGQgbGF5ZXIgaWRlbnRpZmllcnMgd2l0aG91dCBibG9hdGlu
ZyBSdWxlRGF0YS4KKyAgICBWZWN0b3I8Q2FzY2FkZUxheWVySWRlbnRpZmllcj4gbV9jYXNjYWRl
TGF5ZXJJZGVudGlmaWVyRm9yUnVsZVBvc2l0aW9uOwogCiAgICAgYm9vbCBtX2hhc0hvc3RQc2V1
ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9h
dXRvU2hyaW5rVG9GaXRFbmFibGVkIHsgdHJ1ZSB9OwpAQCAtMjIwLDExICsyMzQsMTMgQEAgaW5s
aW5lIGNvbnN0IFJ1bGVTZXQ6OlJ1bGVEYXRhVmVjdG9yKiBSdWxlU2V0Ojp0YWdSdWxlcyhjb25z
dCBBdG9tU3RyaW5nJiBrZXksIGIKIAogaW5saW5lIHVuc2lnbmVkIFJ1bGVTZXQ6OmNhc2NhZGVM
YXllck9yZGVyRm9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkgY29uc3QKIHsKLSAgICBpZiAo
bV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLnNpemUoKSA+IHJ1bGVEYXRhLnBvc2l0aW9u
KCkpCi0gICAgICAgIHJldHVybiBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb25bcnVsZURh
dGEucG9zaXRpb24oKV07Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKG1fY2FzY2FkZUxheWVySWRl
bnRpZmllckZvclJ1bGVQb3NpdGlvbi5zaXplKCkgPD0gcnVsZURhdGEucG9zaXRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgYXV0byBpZGVudGlmaWVyID0gbV9jYXNjYWRlTGF5ZXJJZGVu
dGlmaWVyRm9yUnVsZVBvc2l0aW9uW3J1bGVEYXRhLnBvc2l0aW9uKCldOworICAgIGlmICghaWRl
bnRpZmllcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGNhc2NhZGVMYXllckZvcklk
ZW50aWZpZXIoaWRlbnRpZmllcikub3JkZXI7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgU3R5bGUK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436794</attachid>
            <date>2021-08-30 10:56:07 -0700</date>
            <delta_ts>2021-08-31 04:48:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layer-parent-order-4.patch</filename>
            <type>text/plain</type>
            <size>13577</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVhNjZkMTkzOTVhNy4uZjc1MTdhYTRl
NzMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gQ29tcHV0ZSBvcmRlciBjb3JyZWN0bHkgZm9yIGxhdGUgYWRkZWQg
c3VibGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjk2NjYKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
KiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVyLWJhc2ljLWV4cGVjdGVk
LnR4dDoKKwogMjAyMS0wOC0yNyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0NTUyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2Fz
Y2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50
eHQKaW5kZXggNzllOTk0MjM3MzkwLi4xMTA5YmNmMjllYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1jYXNjYWRlL2xheWVy
LWJhc2ljLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9sYXllci1iYXNpYy1leHBlY3RlZC50eHQKQEAg
LTE3LDIwICsxNywyMCBAQCBQQVNTIEI2IE5hbWVkIGxheWVycwogUEFTUyBCNyBOYW1lZCBsYXll
cnMKIFBBU1MgQjggTmFtZWQgbGF5ZXJzCiBQQVNTIEI5IE5hbWVkIGxheWVycwotRkFJTCBCMTAg
TmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIxMCBOYW1lZCBsYXllcnMsIHRhcmdldCAnZmly
c3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQ
QVNTIEIxMCBOYW1lZCBsYXllcnMKIFBBU1MgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFT
UyBDMiBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCi1GQUlMIEMzIE5hbWVkIGxheWVycyBzaG9ydGhh
bmQgYXNzZXJ0X2VxdWFsczogQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJz
dCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BB
U1MgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZAogUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hvcnRo
YW5kCi1GQUlMIEM1IE5hbWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUgTmFt
ZWQgbGF5ZXJzIHNob3J0aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgs
IDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKK1BBU1MgQzUgTmFtZWQgbGF5ZXJzIHNob3J0
aGFuZAogUEFTUyBEMSBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMiBN
aXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycwogUEFTUyBEMyBNaXhlZCBuYW1lZCBhbmQg
YW5vbnltb3VzIGxheWVycwotRkFJTCBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVy
cyBhc3NlcnRfZXF1YWxzOiBENCBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywgdGFy
Z2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAw
LCAwKSIKK1BBU1MgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRDUg
TWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKIFBBU1MgRTEgU3RhdGVtZW50IHN5bnRh
eAogUEFTUyBFMiBTdGF0ZW1lbnQgc3ludGF4CiBQQVNTIEUzIFN0YXRlbWVudCBzeW50YXgKIFBB
U1MgRTQgU3RhdGVtZW50IHN5bnRheAotRkFJTCBFNSBTdGF0ZW1lbnQgc3ludGF4IGFzc2VydF9l
cXVhbHM6IEU1IFN0YXRlbWVudCBzeW50YXgsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2Io
MCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCkiCitQQVNTIEU1IFN0YXRlbWVudCBz
eW50YXgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzOTA1NWRhNWY1NS4uNmM0ZDU2Y2IzNzhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMjEtMDgtMzAgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgQ2FzY2FkZSBMYXllcnNdIENvbXB1dGUgb3JkZXIg
Y29ycmVjdGx5IGZvciBsYXRlIGFkZGVkIHN1YmxheWVycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NjY2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
U2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIGNhc2VzIGxpa2UKKworICAgICAgICAgICAgQGxh
eWVyIGEuYiB7IC4uLiB9CisgICAgICAgICAgICBAbGF5ZXIgYyB7IC4uLiB9CisgICAgICAgICAg
ICBAbGF5ZXIgYS5kIHsgLi4uIH0KKworICAgICAgICAnYycgc2hvdWxkIGhhdmUgaGlnaGVyIHBy
aW9yaXR5IHRoYW4gJ2EuZCcuCisKKyAgICAgICAgUmVwbGFjZSB0aGUgcGVyLVJ1bGVEYXRhIGxh
eWVyIG9yZGVyIHZlY3RvciB3aXRoIHJlZmVyZW5jZXMgKGluZGV4ZXMpIHRvIGxheWVyIGVudHJ5
IHZlY3Rvci4KKyAgICAgICAgVGhlc2UgZW50cmllcyBoYXZlIG9yZGVyIGZpZWxkIHRoYXQgY2Fu
IGJlIHJlY29tcHV0ZWQuCisKKyAgICAgICAgKiBzdHlsZS9SdWxlU2V0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpSdWxlU2V0OjpCdWlsZGVyOjphZGRTdHlsZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIpOgorCisgICAgICAgIElu
c3RlYWQgb2YgY29tcHV0aW5nIG9yZGVyIGRpcmVjdGx5IHdlIGp1c3QgZ2l2ZSBlYWNoIGxheWVy
IGFuIGlkZW50aWZpZXIgYW5kIGFkZCBhbiBlbnRyeSBmb3IgaXQgdG8gdGhlIGxheWVyIHZlY3Rv
ci4KKworICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OkJ1aWxkZXI6OnBvcENhc2Nh
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6QnVpbGRlcjo6fkJ1
aWxkZXIpOgorCisgICAgICAgIENvbXB1dGUgbGF5ZXIgb3JkZXIgYWZ0ZXIgYnVpbGRpbmcgZm9y
IGFsbCBsYXllcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlU2V0OjpzaHJpbmtU
b0ZpdCk6CisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9yIGNvbnN0
KToKKwogMjAyMS0wOC0yOSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXSBNb3ZlICJsaW5lIG5lZWRzIGludGVncmFsIHNuYXBwaW5nIiBjb21wdXRp
bmcgdG8gSUZDIGZyb20gdGhlIGludGVncmF0aW9uIGxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQu
Y3BwCmluZGV4IDQ2OGEzN2M2ZjQxMy4uY2NhMzlkYzFiMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9SdWxlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
U2V0LmNwcApAQCAtODMsMTUgKzgzLDE1IEBAIHN0YXRpYyBib29sIGlzSG9zdFNlbGVjdG9yTWF0
Y2hpbmdJblNoYWRvd1RyZWUoY29uc3QgQ1NTU2VsZWN0b3ImIHN0YXJ0U2VsZWN0b3IpCiAgICAg
cmV0dXJuIGxlZnRtb3N0U2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzICYmIGxlZnRtb3N0U2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzc0hvc3Q7CiB9CiAKLXZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHls
ZVJ1bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlz
dEluZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJPcmRlciwgTWVkaWFRdWVyeUNvbGxlY3Rvciog
bWVkaWFRdWVyeUNvbGxlY3RvcikKK3ZvaWQgUnVsZVNldDo6YWRkUnVsZShjb25zdCBTdHlsZVJ1
bGUmIHJ1bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIHVuc2lnbmVkIHNlbGVjdG9yTGlzdElu
ZGV4LCB1bnNpZ25lZCBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyLCBNZWRpYVF1ZXJ5Q29sbGVjdG9y
KiBtZWRpYVF1ZXJ5Q29sbGVjdG9yKQogewogICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUsIHNl
bGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsKIAotICAgIGlm
IChjYXNjYWRlTGF5ZXJPcmRlcikgewotICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVM
YXllck9yZGVyRm9yUG9zaXRpb24uc2l6ZSgpOwotICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVy
Rm9yUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7Ci0gICAgICAgIHN0ZDo6ZmlsbChtX2Nhc2Nh
ZGVMYXllck9yZGVyRm9yUG9zaXRpb24uYmVnaW4oKSArIG9sZFNpemUsIG1fY2FzY2FkZUxheWVy
T3JkZXJGb3JQb3NpdGlvbi5lbmQoKSwgMCk7Ci0gICAgICAgIG1fY2FzY2FkZUxheWVyT3JkZXJG
b3JQb3NpdGlvbi5sYXN0KCkgPSBjYXNjYWRlTGF5ZXJPcmRlcjsKKyAgICBpZiAoY2FzY2FkZUxh
eWVySWRlbnRpZmllcikgeworICAgICAgICBhdXRvIG9sZFNpemUgPSBtX2Nhc2NhZGVMYXllcklk
ZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uc2l6ZSgpOworICAgICAgICBtX2Nhc2NhZGVMYXllcklk
ZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uZ3JvdyhtX3J1bGVDb3VudCk7CisgICAgICAgIHN0ZDo6
ZmlsbChtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uYmVnaW4oKSArIG9s
ZFNpemUsIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5lbmQoKSwgMCk7
CisgICAgICAgIG1fY2FzY2FkZUxheWVySWRlbnRpZmllckZvclJ1bGVQb3NpdGlvbi5sYXN0KCkg
PSBjYXNjYWRlTGF5ZXJJZGVudGlmaWVyOwogICAgIH0KIAogICAgIG1fZmVhdHVyZXMuY29sbGVj
dEZlYXR1cmVzKHJ1bGVEYXRhKTsKQEAgLTM4NSw2ICszODUsMTIgQEAgdm9pZCBSdWxlU2V0OjpC
dWlsZGVyOjphZGRSdWxlc0Zyb21TaGVldChjb25zdCBTdHlsZVNoZWV0Q29udGVudHMmIHNoZWV0
KQogICAgIGFkZENoaWxkUnVsZXMoc2hlZXQuY2hpbGRSdWxlcygpKTsKIH0KIAorUnVsZVNldDo6
QnVpbGRlcjo6fkJ1aWxkZXIoKQoreworICAgIGlmIChtb2RlID09IE1vZGU6Ok5vcm1hbCAmJiAh
Y2FzY2FkZUxheWVySWRlbnRpZmllck1hcC5pc0VtcHR5KCkpCisgICAgICAgIHVwZGF0ZUNhc2Nh
ZGVMYXllck9yZGVyKCk7Cit9CisKIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6YWRkU3R5bGVSdWxl
KGNvbnN0IFN0eWxlUnVsZSYgcnVsZSkKIHsKICAgICBhdXRvJiBzZWxlY3Rvckxpc3QgPSBydWxl
LnNlbGVjdG9yTGlzdCgpOwpAQCAtMzkyLDEzICszOTgsMjEgQEAgdm9pZCBSdWxlU2V0OjpCdWls
ZGVyOjphZGRTdHlsZVJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlKQogICAgICAgICByZXR1cm47
CiAgICAgdW5zaWduZWQgc2VsZWN0b3JMaXN0SW5kZXggPSAwOwogICAgIGZvciAoc2l6ZV90IHNl
bGVjdG9ySW5kZXggPSAwOyBzZWxlY3RvckluZGV4ICE9IG5vdEZvdW5kOyBzZWxlY3RvckluZGV4
ID0gc2VsZWN0b3JMaXN0LmluZGV4T2ZOZXh0U2VsZWN0b3JBZnRlcihzZWxlY3RvckluZGV4KSkK
LSAgICAgICAgcnVsZVNldC0+YWRkUnVsZShydWxlLCBzZWxlY3RvckluZGV4LCBzZWxlY3Rvckxp
c3RJbmRleCsrLCBjYXNjYWRlTGF5ZXJPcmRlciwgJm1lZGlhUXVlcnlDb2xsZWN0b3IpOworICAg
ICAgICBydWxlU2V0LT5hZGRSdWxlKHJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdElu
ZGV4KyssIGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyLCAmbWVkaWFRdWVyeUNvbGxlY3Rv
cik7CiB9CiAKIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6cHVzaENhc2NhZGVMYXllcihjb25zdCBD
YXNjYWRlTGF5ZXJOYW1lJiBuYW1lKQogewogICAgIGlmIChtb2RlICE9IE1vZGU6Ok5vcm1hbCkK
ICAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGNhc2NhZGVMYXllcklkZW50aWZpZXJNYXAuaXNF
bXB0eSgpICYmICFydWxlU2V0LT5tX2Nhc2NhZGVMYXllcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IC8vIEZvciBpbmNyZW1lbnRhbCBidWlsZCwgcmVjb25zdHJ1Y3QgdGhlIG5hbWUtPmlkZW50aWZp
ZXIgbWFwLgorICAgICAgICBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZpZXIgPSAwOwor
ICAgICAgICBmb3IgKGF1dG8mIGxheWVyIDogcnVsZVNldC0+bV9jYXNjYWRlTGF5ZXJzKQorICAg
ICAgICAgICAgY2FzY2FkZUxheWVySWRlbnRpZmllck1hcC5hZGQobGF5ZXIucmVzb2x2ZWROYW1l
LCArK2lkZW50aWZpZXIpOworICAgIH0KKwogICAgIGF1dG8gbmFtZVJlc29sdmluZ0Fub255bW91
cyA9IFsmXSB7CiAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgLy8g
TWFrZSB1bmlxdWUgbmFtZSBmb3IgYW4gYW5vbnltb3VzIGxheWVyLgpAQCAtNDExLDkgKzQyNSwx
MCBAQCB2b2lkIFJ1bGVTZXQ6OkJ1aWxkZXI6OnB1c2hDYXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2Fk
ZUxheWVyTmFtZSYgbmFtZSkKICAgICAvLyBGb3IgaGllcmFyY2hpY2FsIG5hbWVzIHdlIHJlZ2lz
dGVyIHRoZSBjb250YWluaW5nIGxheWVycyBpbmRpdmlkdWFsbHkgZmlyc3QuCiAgICAgZm9yIChh
dXRvJiBuYW1lU2VnbWVudCA6IG5hbWVSZXNvbHZpbmdBbm9ueW1vdXMoKSkgewogICAgICAgICBy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUuYXBwZW5kKG5hbWVTZWdtZW50KTsKLSAgICAgICAgY2Fz
Y2FkZUxheWVyT3JkZXIgPSBydWxlU2V0LT5tX2Nhc2NhZGVMYXllck9yZGVyTWFwLmVuc3VyZShy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBpcyBub3QgY29ycmVjdCB3aGVuIGFkZGluZyBhIHN1YmxheWVyIHRvIGFuIGFscmVhZHkgcmVn
aXN0ZXJlZCBsYXllciBhZnRlciBpdCBoYXMgZ2FpbmVkIHNpYmxpbmdzLgotICAgICAgICAgICAg
cmV0dXJuIHJ1bGVTZXQtPm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuc2l6ZSgpICsgMTsKKyAgICAg
ICAgY3VycmVudENhc2NhZGVMYXllcklkZW50aWZpZXIgPSBjYXNjYWRlTGF5ZXJJZGVudGlmaWVy
TWFwLmVuc3VyZShyZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7CisgICAgICAgICAgICAv
LyBQcmV2aW91c2x5IHVuc2VlbiBsYXllci4KKyAgICAgICAgICAgIHJ1bGVTZXQtPm1fY2FzY2Fk
ZUxheWVycy5hcHBlbmQoeyByZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIGN1cnJlbnRDYXNjYWRl
TGF5ZXJJZGVudGlmaWVyIH0pOworICAgICAgICAgICAgcmV0dXJuIHJ1bGVTZXQtPm1fY2FzY2Fk
ZUxheWVycy5zaXplKCk7CiAgICAgICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKICAgICB9CiB9CkBA
IC00MjIsOSArNDM3LDQyIEBAIHZvaWQgUnVsZVNldDo6QnVpbGRlcjo6cG9wQ2FzY2FkZUxheWVy
KGNvbnN0IENhc2NhZGVMYXllck5hbWUmIG5hbWUpCiB7CiAgICAgaWYgKG1vZGUgIT0gTW9kZTo6
Tm9ybWFsKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBzaXplID0gbmFtZS5pc0VtcHR5KCkg
PyAxIDogbmFtZS5zaXplKCk7Ci0gICAgcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLnNocmluayhy
ZXNvbHZlZENhc2NhZGVMYXllck5hbWUuc2l6ZSgpIC0gc2l6ZSk7Ci0gICAgY2FzY2FkZUxheWVy
T3JkZXIgPSByZXNvbHZlZENhc2NhZGVMYXllck5hbWUuaXNFbXB0eSgpID8gMCA6IHJ1bGVTZXQt
Pm1fY2FzY2FkZUxheWVyT3JkZXJNYXAuZ2V0KHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSk7CisK
KyAgICBmb3IgKGF1dG8gc2l6ZSA9IG5hbWUuaXNFbXB0eSgpID8gMSA6IG5hbWUuc2l6ZSgpOyBz
aXplLS07KSB7CisgICAgICAgIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5yZW1vdmVMYXN0KCk7
CisgICAgICAgIGN1cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyID0gcnVsZVNldC0+Y2FzY2Fk
ZUxheWVyRm9ySWRlbnRpZmllcihjdXJyZW50Q2FzY2FkZUxheWVySWRlbnRpZmllcikucGFyZW50
SWRlbnRpZmllcjsKKyAgICB9Cit9CisKK3ZvaWQgUnVsZVNldDo6QnVpbGRlcjo6dXBkYXRlQ2Fz
Y2FkZUxheWVyT3JkZXIoKQoreworICAgIGF1dG8gY29tcGFyZSA9IFsmXShDYXNjYWRlTGF5ZXJJ
ZGVudGlmaWVyIGEsIENhc2NhZGVMYXllcklkZW50aWZpZXIgYikgeworICAgICAgICB3aGlsZSAo
YSAmJiBiKSB7CisgICAgICAgICAgICAvLyBJZGVudGlmaWVycyBhcmUgaW4gcGFyc2Ugb3JkZXIg
d2hpY2ggYWxtb3N0IGNvcnJlc3BvbmRzIHRvIHRoZSBsYXllciBwcmlvcml0eSBvcmRlci4KKyAg
ICAgICAgICAgIC8vIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyB3aGVuIGEgc3VibGF5ZXIgZ2V0cyBh
ZGRlZCB0byBhIGxheWVyIGFmdGVyIGFkZGluZyBvdGhlciBub24tc3VibGF5ZXJzLgorICAgICAg
ICAgICAgLy8gVG8gcmVzb2x2ZSB0aGlzIHdlIG5lZWQgbG9vayBmb3IgYSBzaGFyZWQgYW5jZXN0
b3IgbGF5ZXIuCisgICAgICAgICAgICBhdXRvIGFQYXJlbnQgPSBydWxlU2V0LT5jYXNjYWRlTGF5
ZXJGb3JJZGVudGlmaWVyKGEpLnBhcmVudElkZW50aWZpZXI7CisgICAgICAgICAgICBhdXRvIGJQ
YXJlbnQgPSBydWxlU2V0LT5jYXNjYWRlTGF5ZXJGb3JJZGVudGlmaWVyKGIpLnBhcmVudElkZW50
aWZpZXI7CisgICAgICAgICAgICBpZiAoYVBhcmVudCA9PSBiUGFyZW50IHx8IGFQYXJlbnQgPT0g
YiB8fCBiUGFyZW50ID09IGEpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAoYVBhcmVudCA+IGJQYXJlbnQpCisgICAgICAgICAgICAgICAgYSA9IGFQYXJlbnQ7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYiA9IGJQYXJlbnQ7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIGEgPCBiOworICAgIH07CisKKyAgICBWZWN0b3I8Q2FzY2FkZUxheWVySWRl
bnRpZmllcj4gb3JkZXJWZWN0b3I7CisgICAgYXV0byBsYXllckNvdW50ID0gcnVsZVNldC0+bV9j
YXNjYWRlTGF5ZXJzLnNpemUoKTsKKyAgICBvcmRlclZlY3Rvci5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KGxheWVyQ291bnQpOworICAgIGZvciAoQ2FzY2FkZUxheWVySWRlbnRpZmllciBpZGVudGlm
aWVyID0gMTsgaWRlbnRpZmllciA8PSBsYXllckNvdW50OyArK2lkZW50aWZpZXIpCisgICAgICAg
IG9yZGVyVmVjdG9yLnVuY2hlY2tlZEFwcGVuZChpZGVudGlmaWVyKTsKKworICAgIHN0ZDo6c29y
dChvcmRlclZlY3Rvci5iZWdpbigpLCBvcmRlclZlY3Rvci5lbmQoKSwgY29tcGFyZSk7CisKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb3JkZXJWZWN0b3Iuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHJ1bGVTZXQtPmNhc2NhZGVMYXllckZvcklkZW50aWZpZXIob3JkZXJWZWN0b3JbaV0pLm9y
ZGVyID0gaSArIDE7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPgpAQCAtNTYxLDcg
KzYwOSw4IEBAIHZvaWQgUnVsZVNldDo6c2hyaW5rVG9GaXQoKQogCiAgICAgc2hyaW5rRHluYW1p
Y1J1bGVzKG1fZHluYW1pY01lZGlhUXVlcnlSdWxlcyk7CiAKLSAgICBtX2Nhc2NhZGVMYXllck9y
ZGVyRm9yUG9zaXRpb24uc2hyaW5rVG9GaXQoKTsKKyAgICBtX2Nhc2NhZGVMYXllcnMuc2hyaW5r
VG9GaXQoKTsKKyAgICBtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxlUG9zaXRpb24uc2hy
aW5rVG9GaXQoKTsKIH0KIAogUnVsZVNldDo6TWVkaWFRdWVyeUNvbGxlY3Rvcjo6fk1lZGlhUXVl
cnlDb2xsZWN0b3IoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SdWxlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKaW5kZXggNDY5ZmUy
YTAxOThlLi41NzEyNWNlZTg4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1
bGVTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlU2V0LmgKQEAgLTE1MCw2ICsx
NTAsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIFJ1bGVTZXQoKTsKIAorICAgIHVzaW5nIENh
c2NhZGVMYXllcklkZW50aWZpZXIgPSB1bnNpZ25lZDsKKwogICAgIHN0cnVjdCBCdWlsZGVyIHsK
ICAgICAgICAgZW51bSBjbGFzcyBNb2RlIHsgTm9ybWFsLCBSZXNvbHZlck11dGF0aW9uU2NhbiB9
OwogCkBAIC0xNTgsOSArMTYwLDEyIEBAIHByaXZhdGU6CiAgICAgICAgIFN0eWxlOjpSZXNvbHZl
ciogcmVzb2x2ZXIgeyBudWxscHRyIH07CiAgICAgICAgIE1vZGUgbW9kZSB7IE1vZGU6Ok5vcm1h
bCB9OwogICAgICAgICBDYXNjYWRlTGF5ZXJOYW1lIHJlc29sdmVkQ2FzY2FkZUxheWVyTmFtZSB7
IH07Ci0gICAgICAgIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyIHsgMCB9OworICAgICAgICBI
YXNoTWFwPENhc2NhZGVMYXllck5hbWUsIENhc2NhZGVMYXllcklkZW50aWZpZXI+IGNhc2NhZGVM
YXllcklkZW50aWZpZXJNYXAgeyB9OworICAgICAgICBDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGN1
cnJlbnRDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIHsgMCB9OwogCiAgICAgICAgIHZvaWQgYWRkUnVs
ZXNGcm9tU2hlZXQoY29uc3QgU3R5bGVTaGVldENvbnRlbnRzJik7CisKKyAgICAgICAgfkJ1aWxk
ZXIoKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBhZGRDaGlsZFJ1bGVz
KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+Jik7CkBAIC0xNjgsNiArMTczLDcg
QEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHB1c2hDYXNjYWRlTGF5ZXIoY29uc3QgQ2FzY2Fk
ZUxheWVyTmFtZSYpOwogICAgICAgICB2b2lkIHBvcENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRl
TGF5ZXJOYW1lJik7CisgICAgICAgIHZvaWQgdXBkYXRlQ2FzY2FkZUxheWVyT3JkZXIoKTsKICAg
ICB9OwogCiAgICAgc3RydWN0IENvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIHsKQEAgLTE3OSw2
ICsxODUsMTQgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPiB2
b2lkIHRyYXZlcnNlUnVsZURhdGFzKEZ1bmN0aW9uJiYpOwogCisgICAgc3RydWN0IENhc2NhZGVM
YXllciB7CisgICAgICAgIENhc2NhZGVMYXllck5hbWUgcmVzb2x2ZWROYW1lOworICAgICAgICBD
YXNjYWRlTGF5ZXJJZGVudGlmaWVyIHBhcmVudElkZW50aWZpZXI7CisgICAgICAgIHVuc2lnbmVk
IG9yZGVyIHsgMCB9OworICAgIH07CisgICAgQ2FzY2FkZUxheWVyJiBjYXNjYWRlTGF5ZXJGb3JJ
ZGVudGlmaWVyKENhc2NhZGVMYXllcklkZW50aWZpZXIgaWRlbnRpZmllcikgeyByZXR1cm4gbV9j
YXNjYWRlTGF5ZXJzW2lkZW50aWZpZXIgLSAxXTsgfQorICAgIGNvbnN0IENhc2NhZGVMYXllciYg
Y2FzY2FkZUxheWVyRm9ySWRlbnRpZmllcihDYXNjYWRlTGF5ZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIpIGNvbnN0IHsgcmV0dXJuIG1fY2FzY2FkZUxheWVyc1tpZGVudGlmaWVyIC0gMV07IH0KKwog
ICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKICAgICBBdG9tUnVsZU1hcCBtX2NsYXNzUnVsZXM7
CiAgICAgQXRvbVJ1bGVNYXAgbV90YWdMb2NhbE5hbWVSdWxlczsKQEAgLTE5OSw5ICsyMTMsOSBA
QCBwcml2YXRlOgogICAgIEhhc2hNYXA8VmVjdG9yPHNpemVfdD4sIFJlZjxjb25zdCBSdWxlU2V0
Pj4gbV9tZWRpYVF1ZXJ5SW52YWxpZGF0aW9uUnVsZVNldENhY2hlOwogICAgIHVuc2lnbmVkIG1f
cnVsZUNvdW50IHsgMCB9OwogCi0gICAgSGFzaE1hcDxDYXNjYWRlTGF5ZXJOYW1lLCB1bnNpZ25l
ZD4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcDsKLSAgICAvLyBUaGlzIGlzIGEgc2lkZSB2ZWN0b3Ig
dG8gaG9sZCBsYXllciBvcmRlciB3aXRob3V0IGJsb2F0aW5nIFJ1bGVEYXRhLgotICAgIFZlY3Rv
cjx1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uOworICAgIFZlY3RvcjxD
YXNjYWRlTGF5ZXI+IG1fY2FzY2FkZUxheWVyczsKKyAgICAvLyBUaGlzIGlzIGEgc2lkZSB2ZWN0
b3IgdG8gaG9sZCBsYXllciBpZGVudGlmaWVycyB3aXRob3V0IGJsb2F0aW5nIFJ1bGVEYXRhLgor
ICAgIFZlY3RvcjxDYXNjYWRlTGF5ZXJJZGVudGlmaWVyPiBtX2Nhc2NhZGVMYXllcklkZW50aWZp
ZXJGb3JSdWxlUG9zaXRpb247CiAKICAgICBib29sIG1faGFzSG9zdFBzZXVkb0NsYXNzUnVsZXNN
YXRjaGluZ0luU2hhZG93VHJlZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2F1dG9TaHJpbmtUb0Zp
dEVuYWJsZWQgeyB0cnVlIH07CkBAIC0yMjAsMTEgKzIzNCwxMyBAQCBpbmxpbmUgY29uc3QgUnVs
ZVNldDo6UnVsZURhdGFWZWN0b3IqIFJ1bGVTZXQ6OnRhZ1J1bGVzKGNvbnN0IEF0b21TdHJpbmcm
IGtleSwgYgogCiBpbmxpbmUgdW5zaWduZWQgUnVsZVNldDo6Y2FzY2FkZUxheWVyT3JkZXJGb3Io
Y29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKSBjb25zdAogewotICAgIGlmIChtX2Nhc2NhZGVMYXll
ck9yZGVyRm9yUG9zaXRpb24uc2l6ZSgpID4gcnVsZURhdGEucG9zaXRpb24oKSkKLSAgICAgICAg
cmV0dXJuIG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbltydWxlRGF0YS5wb3NpdGlvbigp
XTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAobV9jYXNjYWRlTGF5ZXJJZGVudGlmaWVyRm9yUnVs
ZVBvc2l0aW9uLnNpemUoKSA8PSBydWxlRGF0YS5wb3NpdGlvbigpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBtX2Nhc2NhZGVMYXllcklkZW50aWZpZXJGb3JSdWxl
UG9zaXRpb25bcnVsZURhdGEucG9zaXRpb24oKV07CisgICAgaWYgKCFpZGVudGlmaWVyKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gY2FzY2FkZUxheWVyRm9ySWRlbnRpZmllcihpZGVu
dGlmaWVyKS5vcmRlcjsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBTdHlsZQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>