<?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>229542</bug_id>
          
          <creation_ts>2021-08-26 01:25:41 -0700</creation_ts>
          <short_desc>[CSS Cascade Layers] Initial support</short_desc>
          <delta_ts>2021-08-27 10:44: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>emilio</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1787507</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-26 01:25:41 -0700</bug_when>
    <thetext>Implement initial support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787515</commentid>
    <comment_count>1</comment_count>
      <attachid>436483</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-26 02:23:39 -0700</bug_when>
    <thetext>Created attachment 436483
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787532</commentid>
    <comment_count>2</comment_count>
      <attachid>436491</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-26 03:56:45 -0700</bug_when>
    <thetext>Created attachment 436491
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788057</commentid>
    <comment_count>3</comment_count>
      <attachid>436491</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-08-27 10:17:13 -0700</bug_when>
    <thetext>Comment on attachment 436491
patch

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

&gt; Source/WebCore/css/StyleRule.h:265
&gt; +    Variant&lt;CascadeLayerName, Vector&lt;CascadeLayerName&gt;&gt; m_nameVariant;

Is this preferable to just always using a Vector&lt;&gt;? Or is a name list with one item different from a simple name?

&gt; Source/WebCore/css/StyleRuleType.h:40
&gt;      Namespace = 10,

What happened to 9? Why do we number these from here on?

&gt; Source/WebCore/css/parser/CSSAtRuleID.h:51
&gt; +    CSSAtRuleLayer = 13,

Not sure why we need exploit values here?

&gt; Source/WebCore/style/RuleSet.cpp:510
&gt; +            // FIXME: This is not correct when adding a sublayer to an already registered layer after it has gained siblings.

Reference a bug url?

&gt; Source/WebCore/style/RuleSet.h:196
&gt; +    // FIXME: These should be in stack.

in a stack? on the stack?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788058</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-27 10:22:28 -0700</bug_when>
    <thetext>&gt; Is this preferable to just always using a Vector&lt;&gt;? Or is a name list with
&gt; one item different from a simple name?

One for the statement case, another for the block case. See the different constructor variants. I just used Vector initially but this ended up reading better. Otherwise I also need a separate bool to differentiate between the cases.

&gt; What happened to 9? Why do we number these from here on?

 Needs some historical digging.

&gt; Not sure why we need exploit values here?

We don&apos;t, I was just sticking with the existing style.

&gt; Reference a bug url?
&gt; in a stack? on the stack?

I&apos;ll be fixing both shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788065</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-27 10:43:12 -0700</bug_when>
    <thetext>Committed r281701 (241051@main): &lt;https://commits.webkit.org/241051@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436491.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788066</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-27 10:44:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/82445409&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436483</attachid>
            <date>2021-08-26 02:23:39 -0700</date>
            <delta_ts>2021-08-26 03:56:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layers-4.patch</filename>
            <type>text/plain</type>
            <size>37710</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDhhNjY1MGY4ODI4NC4uMDE3YzI0OWE4
N2RiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNh
c2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA4LTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW01hYyB3azJdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3JlcG9y
dGluZy10by1mcmFtZS1vd25lci5odHRwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0
ZWQudHh0CmluZGV4IGJkNzZkZTAyZTE0NS4uNzllOTk0MjM3MzkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9s
YXllci1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0
CkBAIC0xLDM2ICsxLDM2IEBACiAKIFBBU1MgQTEgQW5vbnltb3VzIGxheWVycwotRkFJTCBBMiBB
bm9ueW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEEyIEFub255bW91cyBsYXllcnMsIHRhcmdl
dCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwg
MCkiCi1GQUlMIEEzIEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTMgQW5vbnltb3Vz
IGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290
ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwgQTQgQW5vbnltb3VzIGxheWVycyBhc3NlcnRfZXF1YWxz
OiBBNCBBbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEy
OCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQTUgQW5vbnltb3VzIGxheWVycyBh
c3NlcnRfZXF1YWxzOiBBNSBBbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3Rl
ZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAsIDApIgotRkFJTCBBNiBBbm9u
eW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEE2IEFub255bW91cyBsYXllcnMsIHRhcmdldCAn
Zmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCki
Ci1GQUlMIEE3IEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTcgQW5vbnltb3VzIGxh
eWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMCwgMCwgMCkiCi1GQUlMIEE4IEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTgg
QW5vbnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDAp
IiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEE5IEFub255bW91cyBsYXllcnMgYXNzZXJ0
X2VxdWFsczogQTkgQW5vbnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJn
YigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCitQQVNTIEEyIEFub255bW91cyBs
YXllcnMKK1BBU1MgQTMgQW5vbnltb3VzIGxheWVycworUEFTUyBBNCBBbm9ueW1vdXMgbGF5ZXJz
CitQQVNTIEE1IEFub255bW91cyBsYXllcnMKK1BBU1MgQTYgQW5vbnltb3VzIGxheWVycworUEFT
UyBBNyBBbm9ueW1vdXMgbGF5ZXJzCitQQVNTIEE4IEFub255bW91cyBsYXllcnMKK1BBU1MgQTkg
QW5vbnltb3VzIGxheWVycwogUEFTUyBCMSBOYW1lZCBsYXllcnMKLUZBSUwgQjIgTmFtZWQgbGF5
ZXJzIGFzc2VydF9lcXVhbHM6IEIyIE5hbWVkIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0
ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwgQjMgTmFt
ZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIzIE5hbWVkIGxheWVycywgdGFyZ2V0ICdmaXJzdCcg
ZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwg
QjQgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEI0IE5hbWVkIGxheWVycywgdGFyZ2V0ICdm
aXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1G
QUlMIEI1IE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBCNSBOYW1lZCBsYXllcnMsIHRhcmdl
dCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDAsIDAsIDAp
IgotRkFJTCBCNiBOYW1lZCBsYXllcnMgYXNzZXJ0X2VxdWFsczogQjYgTmFtZWQgbGF5ZXJzLCB0
YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAw
LCAwKSIKLUZBSUwgQjcgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEI3IE5hbWVkIGxheWVy
cywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2Io
MCwgMCwgMCkiCi1GQUlMIEI4IE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBCOCBOYW1lZCBs
YXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAi
cmdiKDAsIDAsIDApIgotRkFJTCBCOSBOYW1lZCBsYXllcnMgYXNzZXJ0X2VxdWFsczogQjkgTmFt
ZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBn
b3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQjEwIE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBC
MTAgTmFtZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCki
IGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBh
c3NlcnRfZXF1YWxzOiBDMSBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBl
eHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzIg
TmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDMiBOYW1lZCBsYXllcnMgc2hv
cnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3Qg
InJnYigwLCAwLCAwKSIKLUZBSUwgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1
YWxzOiBDMyBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAi
cmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzQgTmFtZWQgbGF5
ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDNCBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0
YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAw
LCAwKSIKLUZBSUwgQzUgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDNSBO
YW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEy
OCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgRDEgTWl4ZWQgbmFtZWQgYW5kIGFu
b255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDEgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91
cyBsYXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdv
dCAicmdiKDAsIDAsIDApIgotRkFJTCBEMiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVy
cyBhc3NlcnRfZXF1YWxzOiBEMiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywgdGFy
Z2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwg
MCkiCi1GQUlMIEQzIE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVh
bHM6IEQzIE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBl
eHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgRDQg
TWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDQgTWl4ZWQg
bmFtZWQgYW5kIGFub255bW91cyBsYXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2Io
MCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDAsIDAsIDApIgotRkFJTCBENSBNaXhlZCBuYW1lZCBh
bmQgYW5vbnltb3VzIGxheWVycyBhc3NlcnRfZXF1YWxzOiBENSBNaXhlZCBuYW1lZCBhbmQgYW5v
bnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBi
dXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUxIFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2Vx
dWFsczogRTEgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigw
LCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUyIFN0YXRlbWVudCBzeW50
YXggYXNzZXJ0X2VxdWFsczogRTIgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhw
ZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUzIFN0
YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTMgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0
ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCki
Ci1GQUlMIEU0IFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTQgU3RhdGVtZW50IHN5
bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMCwgMCwgMCkiCi1GQUlMIEU1IFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTUg
U3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDAp
IiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCitQQVNTIEIyIE5hbWVkIGxheWVycworUEFTUyBCMyBO
YW1lZCBsYXllcnMKK1BBU1MgQjQgTmFtZWQgbGF5ZXJzCitQQVNTIEI1IE5hbWVkIGxheWVycwor
UEFTUyBCNiBOYW1lZCBsYXllcnMKK1BBU1MgQjcgTmFtZWQgbGF5ZXJzCitQQVNTIEI4IE5hbWVk
IGxheWVycworUEFTUyBCOSBOYW1lZCBsYXllcnMKK0ZBSUwgQjEwIE5hbWVkIGxheWVycyBhc3Nl
cnRfZXF1YWxzOiBCMTAgTmFtZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdi
KDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAsIDApIgorUEFTUyBDMSBOYW1lZCBsYXll
cnMgc2hvcnRoYW5kCitQQVNTIEMyIE5hbWVkIGxheWVycyBzaG9ydGhhbmQKK0ZBSUwgQzMgTmFt
ZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDMyBOYW1lZCBsYXllcnMgc2hvcnRo
YW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJn
YigyNTUsIDAsIDApIgorUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCitGQUlMIEM1IE5h
bWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUgTmFtZWQgbGF5ZXJzIHNob3J0
aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMjU1LCAwLCAwKSIKK1BBU1MgRDEgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMK
K1BBU1MgRDIgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKK1BBU1MgRDMgTWl4ZWQg
bmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKK0ZBSUwgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255
bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBs
YXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAi
cmdiKDI1NSwgMCwgMCkiCitQQVNTIEQ1IE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJz
CitQQVNTIEUxIFN0YXRlbWVudCBzeW50YXgKK1BBU1MgRTIgU3RhdGVtZW50IHN5bnRheAorUEFT
UyBFMyBTdGF0ZW1lbnQgc3ludGF4CitQQVNTIEU0IFN0YXRlbWVudCBzeW50YXgKK0ZBSUwgRTUg
U3RhdGVtZW50IHN5bnRheCBhc3NlcnRfZXF1YWxzOiBFNSBTdGF0ZW1lbnQgc3ludGF4LCB0YXJn
ZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAs
IDApIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGYyNGY1ODIwYzYwYy4uNmNhYzI3OGE5NTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIxLTA4LTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBJbml0aWFsIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOgorCiAyMDIxLTA4LTI1ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGlPUy1z
cGVjaWZpYyBjb21waWxlLXRpbWUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMTg1YTVhYzBmNDU0Li4xMzZiMTEzYjAzNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0xMTEsNiArMTExLDE4IEBAIENGTmV0
d29ya05ldHdvcmtMb2FkZXJFbmFibGVkOgogICAgIFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IGZh
bHNlCiAKK0NTU0Nhc2NhZGVMYXllcnNFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVh
ZGFibGVOYW1lOiAiQ1NTIENhc2NhZGUgTGF5ZXJzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRp
b246ICJFbmFibGUgQ1NTIENhc2NhZGUgTGF5ZXJzIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2Vi
S2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBDU1NDb2xv
cjQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDU1MgQ29sb3IgNCBDb2xv
ciBUeXBlcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTkzNTJkZDhlZjkuLjgzNzAwOGMzNWRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBJbml0aWFsIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3MtY2FzY2FkZS01LyNjYXNjYWRlLWxheWVycworCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIEBsYXllciBydWxlcywgaW5jbHVk
aW5nIGJvdGggdGhlIGJsb2NrIGFuZCB0aGUgc3RhdGVtZW50IHN5bnRheC4KKyAgICAgICAgTm8g
c3VwcG9ydCBmb3IgQGltcG9ydCBvciBDU1NPTSB5ZXQgYnV0IGJhc2ljIGZ1bmN0aW9uYWxpdHkg
bW9zdGx5IHdvcmtzLgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6
Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlTGF5ZXI6OlN0eWxl
UnVsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbmFtZVZhcmlhbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6aXNHcm91cFJ1bGUgY29uc3Qp
OgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjYXN0aW5nIHRvIFN0eWxlUnVsZUdyb3VwLgor
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc0xheWVyUnVsZSBjb25zdCk6Cisg
ICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVUeXBlLmg6CisKKyAgICAg
ICAgQWRkIHN1YmNsYXNzIGZvciBsYXllci4KKworICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29u
dGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VSdWxlc0luVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJjZXMg
Y29uc3QpOgorCisgICAgICAgIFRyYXZlcnNhbCBzdXBwb3J0LiBBbHNvIGNvdmVyIG90aGVyIG1p
c3NpbmcgZ3JvdXAgcnVsZXMuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc0F0UnVsZUlEKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU0F0UnVsZUlELmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNw
cDoKKworICAgICAgICBFbmFibGUgYml0LgorCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0Lmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUxheWVyUnVsZSk6CisKKyAgICAgICAgUGFy
c2luZyBzdXBwb3J0LgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmg6Cisg
ICAgICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdCk6CisKKyAgICAgICAgU2F2ZSB0aGUgbGF5ZXIgb3JkZXIgdG8gTWF0Y2hSZXN1
bHQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wYXJlUnVsZXMpOgorCisgICAgICAg
IExheWVyIG9yZGVyIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiBzcGVjaWZpY2l0eSBidXQgbG93
ZXIgdGhhbiBzY29wZS4KKworICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6
CisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6YWRk
Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6cHVzaENhc2Nh
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6cG9wQ2FzY2FkZUxh
eWVyKToKKworICAgICAgICBDb21wdXRlIGxheWVyIG9yZGVyIHdoZW4gYWRkaW5nIHRoZSBydWxl
cyB0byBSdWxlU2V0LgorCisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9yIGNvbnN0KToKKworICAg
ICAgICBSZXNvbHZlZCBvcmRlciBpcyBrZXB0IGluIGEgc2lkZSB2ZWN0b3IgdG8gYXZvaWQgYmxv
YXRpbmcgUnVsZVNldC4gVGhlIHZlY3RvciBpcyBpbml0aWFsaXplZAorICAgICAgICBvbmx5IGlm
IGNhc2NhZGUgbGF5ZXJzIGFyZSBiZWluZyB1c2VkLgorCiAyMDIxLTA4LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcAppbmRleCA4Y2JkZmIyOGJhMTAuLjRiMTVjMDk0OTg5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTk0LDYgKzk0LDkgQEAgdm9pZCBTdHlsZVJ1bGVCYXNl
OjpkZXN0cm95KCkKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNvdW50ZXJTdHlsZToKICAgICAg
ICAgZGVsZXRlIGRvd25jYXN0PFN0eWxlUnVsZUNvdW50ZXJTdHlsZT4odGhpcyk7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgorICAgICAgICBkZWxldGUg
ZG93bmNhc3Q8U3R5bGVSdWxlTGF5ZXI+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBTdHlsZVJ1bGVUeXBlOjpVbmtub3duOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE4LDYgKzEyMSw4IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBT
dHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxl
UnVsZUtleWZyYW1lcz4oKnRoaXMpLmNvcHkoKTsKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNv
dW50ZXJTdHlsZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZUNvdW50ZXJTdHls
ZT4oKnRoaXMpLmNvcHkoKTsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlTGF5ZXI+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2Fz
ZSBTdHlsZVJ1bGVUeXBlOjpJbXBvcnQ6CiAgICAgY2FzZSBTdHlsZVJ1bGVUeXBlOjpOYW1lc3Bh
Y2U6CiAgICAgICAgIC8vIEZJWE1FOiBDb3B5IGltcG9ydCBhbmQgbmFtZXNwYWNlIHJ1bGVzLgpA
QCAtMTYyLDYgKzE2Nyw4IEBAIFJlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1CiAgICAgY2FzZSBTdHls
ZVJ1bGVUeXBlOjpDb3VudGVyU3R5bGU6CiAgICAgICAgIHJ1bGUgPSBDU1NDb3VudGVyU3R5bGVS
dWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlQ291bnRlclN0eWxlPihzZWxmKSwgcGFyZW50
U2hlZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6VW5r
bm93bjoKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNoYXJzZXQ6CiAgICAgY2FzZSBTdHlsZVJ1
bGVUeXBlOjpLZXlmcmFtZToKQEAgLTQzMSw2ICs0MzgsNyBAQCBTdHlsZVJ1bGVTdXBwb3J0czo6
U3R5bGVSdWxlU3VwcG9ydHMoY29uc3QgU3R5bGVSdWxlU3VwcG9ydHMmIG8pCiB7CiB9CiAKKwog
UmVmPFN0eWxlUnVsZVN1cHBvcnRzPiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVTdXBwb3J0cyhjb25kaXRpb25UZXh0LCBjb25kaXRpb25Jc1N1cHBvcnRlZCwg
V1RGTW92ZShydWxlcykpKTsKQEAgLTQ0MSw2ICs0NDksNDUgQEAgUmVmPFN0eWxlUnVsZVN1cHBv
cnRzPiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4
dCwgYm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVTdXBwb3J0cyhjb25kaXRp
b25UZXh0LCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgV1RGTW92ZShydWxlcykpKTsKIH0KIAorU3R5
bGVSdWxlTGF5ZXI6OlN0eWxlUnVsZUxheWVyKFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPiYmIG5h
bWVMaXN0KQorICAgIDogU3R5bGVSdWxlR3JvdXAoU3R5bGVSdWxlVHlwZTo6TGF5ZXIsIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHsgfSkKKyAgICAsIG1fbmFtZVZhcmlhbnQoV1RGTW92
ZShuYW1lTGlzdCkpCit7Cit9CisKK1N0eWxlUnVsZUxheWVyOjpTdHlsZVJ1bGVMYXllcihDYXNj
YWRlTGF5ZXJOYW1lJiYgbmFtZSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxl
cykKKyAgICA6IFN0eWxlUnVsZUdyb3VwKFN0eWxlUnVsZVR5cGU6OkxheWVyLCBXVEZNb3ZlKHJ1
bGVzKSkKKyAgICAsIG1fbmFtZVZhcmlhbnQoV1RGTW92ZShuYW1lKSkKK3sKK30KKworU3R5bGVS
dWxlTGF5ZXI6OlN0eWxlUnVsZUxheWVyKENhc2NhZGVMYXllck5hbWUmJiBuYW1lLCBzdGQ6OnVu
aXF1ZV9wdHI8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+JiYgcnVsZXMpCisgICAgOiBTdHls
ZVJ1bGVHcm91cChTdHlsZVJ1bGVUeXBlOjpMYXllciwgV1RGTW92ZShydWxlcykpCisgICAgLCBt
X25hbWVWYXJpYW50KFdURk1vdmUobmFtZSkpCit7Cit9CisKK1N0eWxlUnVsZUxheWVyOjpTdHls
ZVJ1bGVMYXllcihjb25zdCBTdHlsZVJ1bGVMYXllciYgb3RoZXIpCisgICAgOiBTdHlsZVJ1bGVH
cm91cChvdGhlcikKKyAgICAsIG1fbmFtZVZhcmlhbnQob3RoZXIubV9uYW1lVmFyaWFudCkKK3sK
K30KKworUmVmPFN0eWxlUnVsZUxheWVyPiBTdHlsZVJ1bGVMYXllcjo6Y3JlYXRlKFZlY3RvcjxD
YXNjYWRlTGF5ZXJOYW1lPiYmIG5hbWVMaXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlUnVsZUxheWVyKFdURk1vdmUobmFtZUxpc3QpKSk7Cit9CisKK1JlZjxTdHlsZVJ1bGVM
YXllcj4gU3R5bGVSdWxlTGF5ZXI6OmNyZWF0ZShDYXNjYWRlTGF5ZXJOYW1lJiYgbmFtZSwgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxlcykKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGVMYXllcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSkpOwor
fQorCitSZWY8U3R5bGVSdWxlTGF5ZXI+IFN0eWxlUnVsZUxheWVyOjpjcmVhdGUoQ2FzY2FkZUxh
eWVyTmFtZSYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlz
dD4mJiBydWxlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVMYXllcihX
VEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSkpOworfQorCiBTdHlsZVJ1bGVDaGFyc2V0OjpT
dHlsZVJ1bGVDaGFyc2V0KCkKICAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGVSdWxlVHlwZTo6Q2hh
cnNldCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBlYTFkYWU1ODUxZmEuLjE1NjJjNzky
NjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zOSw2ICs0MCw4IEBAIGNsYXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXM7
CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNz
IFN0eWxlUnVsZUtleWZyYW1lczsKKwordXNpbmcgQ2FzY2FkZUxheWVyTmFtZSA9IFZlY3RvcjxB
dG9tU3RyaW5nPjsKICAgICAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFN0eWxlUnVsZUJhc2UpOwogY2xhc3MgU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNv
dW50ZWRCYXNlIHsKQEAgLTU1LDggKzU4LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVkaWFS
dWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6Ok1lZGlhOyB9CiAg
ICAgYm9vbCBpc1BhZ2VSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5
cGU6OlBhZ2U7IH0KICAgICBib29sIGlzU3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFN0eWxlUnVsZVR5cGU6OlN0eWxlOyB9CisgICAgYm9vbCBpc0dyb3VwUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZVJ1bGVUeXBlOjpNZWRpYSB8fCB0eXBlKCkgPT0gU3R5
bGVSdWxlVHlwZTo6U3VwcG9ydHMgfHwgdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6OkxheWVyOyB9
CiAgICAgYm9vbCBpc1N1cHBvcnRzUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHls
ZVJ1bGVUeXBlOjpTdXBwb3J0czsgfQogICAgIGJvb2wgaXNJbXBvcnRSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6OkltcG9ydDsgfQorICAgIGJvb2wgaXNMYXll
clJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3R5bGVSdWxlVHlwZTo6TGF5ZXI7IH0K
IAogICAgIFJlZjxTdHlsZVJ1bGVCYXNlPiBjb3B5KCkgY29uc3Q7CiAKQEAgLTIzOSw2ICsyNDQs
MjcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9OwogCitj
bGFzcyBTdHlsZVJ1bGVMYXllciBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVMYXllcj4gY3JlYXRlKFZlY3RvcjxDYXNjYWRl
TGF5ZXJOYW1lPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUxheWVyPiBjcmVhdGUoQ2Fz
Y2FkZUxheWVyTmFtZSYmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0eWxlUnVsZUxheWVyPiBjcmVhdGUoQ2FzY2FkZUxheWVyTmFtZSYmLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+JiYpOworICAgIFJlZjxTdHls
ZVJ1bGVMYXllcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxl
TGF5ZXIoKnRoaXMpKTsgfQorCisgICAgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPj4obV9uYW1lVmFyaWFu
dCk7IH0KKworICAgIGF1dG8mIG5hbWUoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDYXNjYWRl
TGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQorICAgIGF1dG8mIG5hbWVMaXN0KCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPENhc2NhZGVMYXllck5hbWU+PihtX25hbWVWYXJpYW50
KTsgfQorCitwcml2YXRlOgorICAgIFN0eWxlUnVsZUxheWVyKFZlY3RvcjxDYXNjYWRlTGF5ZXJO
YW1lPiYmKTsKKyAgICBTdHlsZVJ1bGVMYXllcihDYXNjYWRlTGF5ZXJOYW1lJiYsIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiYpOworICAgIFN0eWxlUnVsZUxheWVyKENhc2NhZGVMYXll
ck5hbWUmJiwgc3RkOjp1bmlxdWVfcHRyPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PiYmKTsK
KyAgICBTdHlsZVJ1bGVMYXllcihjb25zdCBTdHlsZVJ1bGVMYXllciYpOworCisgICAgVmFyaWFu
dDxDYXNjYWRlTGF5ZXJOYW1lLCBWZWN0b3I8Q2FzY2FkZUxheWVyTmFtZT4+IG1fbmFtZVZhcmlh
bnQ7Cit9OworCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCBieSB0aGUgQ1NTIHBhcnNlci4KIGNsYXNz
IFN0eWxlUnVsZUNoYXJzZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6
CkBAIC0zMjMsNiArMzQ5LDEwIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6U3R5bGVSdWxlKQogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHls
ZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVybiBydWxlLmlzU3R5bGVSdWxlKCk7IH0KIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpTdHlsZVJ1bGVHcm91cCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0dyb3VwUnVsZSgpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6U3R5bGVSdWxlRm9udEZhY2UpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNGb250RmFj
ZVJ1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpAQCAtMzUwLDMgKzM4MCw3
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlQ2hhcnNldCkKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0NoYXJz
ZXRSdWxlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVMYXllcikKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVs
ZS5pc0xheWVyUnVsZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZVR5cGUuaAppbmRleCBjNDA0NzQ2YWU5NDUuLmM5ZTUxOGRiZTYxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZVR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlVHlwZS5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3Mg
U3R5bGVSdWxlVHlwZSA6IHVpbnQ4X3QgewogICAgIE5hbWVzcGFjZSA9IDEwLAogICAgIENvdW50
ZXJTdHlsZSA9IDExLAogICAgIFN1cHBvcnRzID0gMTIsCisgICAgTGF5ZXIgPSAxMywKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKaW5kZXggYWE4N2UyYThmMGRiLi4zMjg0OTc0ODUzNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC00MjMsOCArNDIzLDEwIEBAIHN0YXRp
YyBib29sIHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgcnVsZXMsIGNvCiAgICAgICAgIGlmIChoYW5kbGVyKCpydWxlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBzd2l0Y2ggKHJ1bGUtPnR5cGUoKSkgewotICAgICAg
ICBjYXNlIFN0eWxlUnVsZVR5cGU6Ok1lZGlhOiB7Ci0gICAgICAgICAgICBhdXRvKiBjaGlsZFJ1
bGVzID0gZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5jaGlsZFJ1bGVzV2l0aG91dERl
ZmVycmVkUGFyc2luZygpOworICAgICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6Ok1lZGlhOgorICAg
ICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OlN1cHBvcnRzOgorICAgICAgICBjYXNlIFN0eWxlUnVs
ZVR5cGU6OkxheWVyOiB7CisgICAgICAgICAgICBhdXRvKiBjaGlsZFJ1bGVzID0gZG93bmNhc3Q8
U3R5bGVSdWxlR3JvdXA+KCpydWxlKS5jaGlsZFJ1bGVzV2l0aG91dERlZmVycmVkUGFyc2luZygp
OwogICAgICAgICAgICAgaWYgKGNoaWxkUnVsZXMgJiYgdHJhdmVyc2VSdWxlc0luVmVjdG9yKCpj
aGlsZFJ1bGVzLCBoYW5kbGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDQxLDcgKzQ0Myw2IEBAIHN0YXRpYyBib29sIHRyYXZlcnNlUnVs
ZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNv
CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6Q2hhcnNldDoKICAgICAgICAgY2FzZSBTdHls
ZVJ1bGVUeXBlOjpDb3VudGVyU3R5bGU6CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6S2V5
ZnJhbWU6Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6U3VwcG9ydHM6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4NCw2ICs0ODUsNyBAQCBib29sIFN0eWxl
U2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sIChjb25zdCBDYQogICAgICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNoYXJzZXQ6CiAgICAg
ICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6S2V5ZnJhbWU6CiAgICAgICAgIGNhc2UgU3R5bGVSdWxl
VHlwZTo6U3VwcG9ydHM6CisgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6TGF5ZXI6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NBdFJ1bGVJ
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAppbmRleCBl
NGI3ZDMzMGU2ZmQuLjA4MjU3MjM4YzhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NBdFJ1bGVJRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NBdFJ1bGVJRC5jcHAKQEAgLTU4LDYgKzU4LDggQEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQo
U3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlQXBwbHk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImNvdW50ZXItc3R5bGUiKSkKICAgICAgICAg
cmV0dXJuIENTU0F0UnVsZUNvdW50ZXJTdHlsZTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAibGF5ZXIiKSkKKyAgICAgICAgcmV0dXJuIENTU0F0UnVsZUxheWVyOwogICAg
IHJldHVybiBDU1NBdFJ1bGVJbnZhbGlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U0F0UnVsZUlELmgKaW5kZXggOTY4NTI2ODcwOGU4Li4zMzBmNmNiZTJlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBDU1NB
dFJ1bGVJRCB7CiAgICAgQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzID0gMTAsCiAgICAgQ1NTQXRS
dWxlQXBwbHkgPSAxMSwKICAgICBDU1NBdFJ1bGVDb3VudGVyU3R5bGUgPSAxMiwKKyAgICBDU1NB
dFJ1bGVMYXllciA9IDEzLAogfTsKIAogQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmll
dyBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
Y3BwCmluZGV4IGYyOWU5YzdjYmZlZC4uMDBiOWRiODUxOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgQ1NT
UGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgc2hlZXRCYXMKICAgICAsIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRo
YW5kQmVoYXZpb3IgeyBkb2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tncm91bmRTaXpl
U2hvcnRoYW5kQmVoYXZpb3IoKSB9CiAgICAgLCBmb2N1c1Zpc2libGVFbmFibGVkIHsgZG9jdW1l
bnQuc2V0dGluZ3MoKS5mb2N1c1Zpc2libGVFbmFibGVkKCkgfQogICAgICwgaGFzUHNldWRvQ2xh
c3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9
CisgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2Fz
Y2FkZUxheWVyc0VuYWJsZWQoKSB9CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICAsIGF0dGFjaG1lbnRFbmFibGVkIHsgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSB9CiAjZW5kaWYKQEAgLTEzOSw2ICsx
NDAsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgYikKICAgICAgICAgJiYgYS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6
ZVNob3J0aGFuZEJlaGF2aW9yID09IGIudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRC
ZWhhdmlvcgogICAgICAgICAmJiBhLmZvY3VzVmlzaWJsZUVuYWJsZWQgPT0gYi5mb2N1c1Zpc2li
bGVFbmFibGVkCiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNl
dWRvQ2xhc3NFbmFibGVkCisgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5j
YXNjYWRlTGF5ZXJzRW5hYmxlZAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
ICAgICYmIGEuYXR0YWNobWVudEVuYWJsZWQgPT0gYi5hdHRhY2htZW50RW5hYmxlZAogI2VuZGlm
CkBAIC0xNzcsMTEgKzE3OSwxMiBAQCB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgfCBjb250ZXh0LnVzZUxlZ2FjeUJhY2tn
cm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgIDw8IDIwCiAgICAgICAgIHwgY29udGV4dC5mb2N1
c1Zpc2libGVFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICA8PCAyMQogICAgICAgICB8IGNv
bnRleHQuaGFzUHNldWRvQ2xhc3NFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMjIKKyAg
ICAgICAgfCBjb250ZXh0LmNhc2NhZGVMYXllcnNFbmFibGVkICAgICAgICAgICAgICAgICAgICAg
IDw8IDIzCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgfCBjb250ZXh0
LmF0dGFjaG1lbnRFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDIzCisgICAgICAg
IHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAy
NAogI2VuZGlmCi0gICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyNAotICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjU7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywg
c28ga2VlcCBpdCBsYXN0LgorICAgICAgICB8IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMjUKKyAgICAgICAgfCBjb250ZXh0Lm1vZGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI2OyAvLyBUaGlzIGlzIG11bHRpcGxl
IGJpdHMsIHNvIGtlZXAgaXQgbGFzdC4KICAgICBhZGQoaGFzaGVyLCBjb250ZXh0LmJhc2VVUkws
IGNvbnRleHQuY2hhcnNldCwgYml0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggMTU0MDAwMDVjYjVjLi4yNTM1Zjg4Y2Y3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBAIC04Miw2
ICs4Miw3IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBib29sIHVzZUxlZ2FjeUJh
Y2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OwogICAgIGJvb2wgZm9jdXNW
aXNpYmxlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBoYXNQc2V1ZG9DbGFzc0VuYWJsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgY2FzY2FkZUxheWVyc0VuYWJsZWQgeyBmYWxzZSB9OwogCiAg
ICAgLy8gUnVudGltZUVuYWJsZWRGZWF0dXJlcy4KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXgg
ZmQxYzRjNDVhMzQzLi4xYTlkN2U4NzdmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNDIwLDYgKzQyMCw4IEBAIFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXRSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBBCiAgICAgICAgICAgICByZXR1cm4gY29uc3VtZUltcG9ydFJ1bGUocHJlbHVkZSk7CiAg
ICAgICAgIGlmIChhbGxvd2VkUnVsZXMgPD0gQWxsb3dOYW1lc3BhY2VSdWxlcyAmJiBpZCA9PSBD
U1NBdFJ1bGVOYW1lc3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gY29uc3VtZU5hbWVzcGFjZVJ1
bGUocHJlbHVkZSk7CisgICAgICAgIGlmIChhbGxvd2VkUnVsZXMgPD0gUmVndWxhclJ1bGVzICYm
IGlkID09IENTU0F0UnVsZUxheWVyKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVMYXllclJ1
bGUocHJlbHVkZSwgeyB9KTsKICAgICAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJh
cHBseSIKICAgICAgICAgLyppZiAoYWxsb3dlZFJ1bGVzID09IEFwcGx5UnVsZXMgJiYgaWQgPT0g
Q1NTQXRSdWxlQXBwbHkpIHsKICAgICAgICAgICAgIGNvbnN1bWVBcHBseVJ1bGUocHJlbHVkZSk7
CkBAIC00NTEsNiArNDUzLDggQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6
OmNvbnN1bWVBdFJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIEEKICAgICAgICAgcmV0
dXJuIGNvbnN1bWVQYWdlUnVsZShwcmVsdWRlLCBibG9jayk7CiAgICAgY2FzZSBDU1NBdFJ1bGVD
b3VudGVyU3R5bGU6CiAgICAgICAgIHJldHVybiBjb25zdW1lQ291bnRlclN0eWxlUnVsZShwcmVs
dWRlLCBibG9jayk7CisgICAgY2FzZSBDU1NBdFJ1bGVMYXllcjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMYXllclJ1bGUocHJlbHVkZSwgYmxvY2spOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBi
bG9jawogICAgIH0KQEAgLTY3Niw2ICs2ODAsOTIgQEAgUmVmUHRyPFN0eWxlUnVsZUNvdW50ZXJT
dHlsZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUNvdW50ZXJTdHlsZVJ1bGUoQ1NTUGFyc2VyVG8K
ICAgICByZXR1cm4gU3R5bGVSdWxlQ291bnRlclN0eWxlOjpjcmVhdGUobmFtZSwgY3JlYXRlU3R5
bGVQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9jb250ZXh0Lm1vZGUpKTsKIH0KIAor
UmVmUHRyPFN0eWxlUnVsZUxheWVyPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTGF5ZXJSdWxlKENT
U1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgc3RkOjpvcHRpb25hbDxDU1NQYXJzZXJUb2tlblJh
bmdlPiBibG9jaykKK3sKKyAgICBpZiAoIW1fY29udGV4dC5jYXNjYWRlTGF5ZXJzRW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHByZWx1ZGVDb3B5ID0gcHJlbHVk
ZTsKKworICAgIGF1dG8gY29uc3VtZU5hbWUgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPENhc2Nh
ZGVMYXllck5hbWU+IHsKKyAgICAgICAgQ2FzY2FkZUxheWVyTmFtZSBuYW1lOworICAgICAgICAv
LyBBbm9ueW1vdXMgY2FzZS4KKyAgICAgICAgaWYgKHByZWx1ZGUuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBuYW1lOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBh
dXRvIG5hbWVUb2tlbiA9IHByZWx1ZGUuY29uc3VtZSgpOworICAgICAgICAgICAgaWYgKG5hbWVU
b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9Owor
CisgICAgICAgICAgICBuYW1lLmFwcGVuZChuYW1lVG9rZW4udmFsdWUoKS50b0F0b21TdHJpbmco
KSk7CisKKyAgICAgICAgICAgIGlmIChwcmVsdWRlLnBlZWsoKS50eXBlKCkgIT0gRGVsaW1pdGVy
VG9rZW4gfHwgcHJlbHVkZS5wZWVrKCkuZGVsaW1pdGVyKCkgIT0gJy4nKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgcHJlbHVkZS5jb25zdW1lKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmVsdWRlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBuYW1l
OworICAgIH07CisKKyAgICBpZiAoIWJsb2NrKSB7CisgICAgICAgIC8vIExpc3Qgc3ludGF4Lgor
ICAgICAgICBWZWN0b3I8Q2FzY2FkZUxheWVyTmFtZT4gbmFtZUxpc3Q7CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBjb25zdW1lTmFtZSgpOworICAgICAg
ICAgICAgaWYgKCFuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgbmFtZUxpc3QuYXBwZW5kKCpuYW1lKTsKKworICAgICAgICAgICAgaWYgKHByZWx1ZGUu
YXRFbmQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgYXV0byBjb21t
YVRva2VuID0gcHJlbHVkZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAg
ICAgaWYgKGNvbW1hVG9rZW4udHlwZSgpICE9IENvbW1hVG9rZW4pCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikg
eworICAgICAgICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbV9vYnNlcnZlcldyYXBwZXItPmVu
ZE9mZnNldChwcmVsdWRlQ29weSk7CisgICAgICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2Jz
ZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlVHlwZTo6TGF5ZXIsIG1fb2JzZXJ2ZXJX
cmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlQ29weSkpOworICAgICAgICAgICAgbV9vYnNlcnZl
cldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUhlYWRlcihlbmRPZmZzZXQpOworICAgICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShlbmRPZmZzZXQp
OworICAgICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUJvZHko
ZW5kT2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6
Y3JlYXRlKFdURk1vdmUobmFtZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIG5hbWUgPSBjb25z
dW1lTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBObyBjb21tYSBzZXBhcmF0ZWQgbGlzdCB3aGVuIHVzaW5nIHRoZSBibG9jayBzeW50YXgu
CisgICAgaWYgKCFwcmVsdWRlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6
Y3JlYXRlKFdURk1vdmUoKm5hbWUpLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVM
aXN0PigqYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisKKyAgICBpZiAobV9vYnNlcnZlcldy
YXBwZXIpIHsKKyAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxl
SGVhZGVyKFN0eWxlUnVsZVR5cGU6OkxheWVyLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZz
ZXQocHJlbHVkZUNvcHkpKTsKKyAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCku
ZW5kUnVsZUhlYWRlcihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGVDb3B5KSk7
CisgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUJvZHkobV9v
YnNlcnZlcldyYXBwZXItPnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCgqYmxvY2spKTsKKyAgICB9
CisKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKKyAgICBjb25zdW1l
UnVsZUxpc3QoKmJsb2NrLCBSZWd1bGFyUnVsZUxpc3QsIFsmXShSZWZQdHI8U3R5bGVSdWxlQmFz
ZT4gcnVsZSkgeworICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7CisgICAgfSk7CisgICAgcnVs
ZXMuc2hyaW5rVG9GaXQoKTsKKworICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikKKyAgICAgICAg
bV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUJvZHkobV9vYnNlcnZlcldyYXBw
ZXItPmVuZE9mZnNldCgqYmxvY2spKTsKKworICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6Y3Jl
YXRlKFdURk1vdmUoKm5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSk7Cit9CisKIC8vIEZJWE1FLU5FV1BB
UlNFUjogU3VwcG9ydCAiYXBwbHkiCiAvKnZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUFwcGx5
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySW1wbC5oCmluZGV4IDg5YWI5Y2UxMmM1OC4uMTZjNGMzZDE5ZjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaApAQCAtNTMsNiArNTMs
NyBAQCBjbGFzcyBTdHlsZVJ1bGVDaGFyc2V0OwogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2U7CiBj
bGFzcyBTdHlsZVJ1bGVJbXBvcnQ7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CitjbGFzcyBT
dHlsZVJ1bGVMYXllcjsKIGNsYXNzIFN0eWxlUnVsZU1lZGlhOwogY2xhc3MgU3R5bGVSdWxlTmFt
ZXNwYWNlOwogY2xhc3MgU3R5bGVSdWxlUGFnZTsKQEAgLTEzNSw3ICsxMzYsOCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxlKGJv
b2wgd2Via2l0UHJlZml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBibG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQYWdl
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxv
Y2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVDb3VudGVyU3R5bGU+IGNvbnN1bWVDb3VudGVyU3R5
bGVSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jayk7Ci0gICAgCisgICAgUmVmUHRyPFN0eWxlUnVsZUxheWVyPiBjb25zdW1lTGF5ZXJSdWxl
KENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgc3RkOjpvcHRpb25hbDxDU1NQYXJzZXJUb2tl
blJhbmdlPiBibG9jayk7CisKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5
IgogICAgIC8vIHZvaWQgY29uc3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1
ZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
aW5kZXggYWI2Y2FhOTE0YTUxLi44Njk3ZDkwMDg5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTExMSw5ICsxMTEsOSBAQCBjb25zdCBW
ZWN0b3I8UmVmUHRyPGNvbnN0IFN0eWxlUnVsZT4+JiBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6bWF0
Y2hlZFJ1bGVMaXN0KCkgYwogICAgIHJldHVybiBtX21hdGNoZWRSdWxlTGlzdDsKIH0KIAotaW5s
aW5lIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVE
YXRhJiBydWxlRGF0YSwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5hbCBzdHlsZVNj
b3BlT3JkaW5hbCkKK2lubGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVk
UnVsZShjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTY29w
ZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWwsIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyKQog
ewotICAgIG1fbWF0Y2hlZFJ1bGVzLmFwcGVuZCh7ICZydWxlRGF0YSwgc3BlY2lmaWNpdHksIHN0
eWxlU2NvcGVPcmRpbmFsIH0pOworICAgIG1fbWF0Y2hlZFJ1bGVzLmFwcGVuZCh7ICZydWxlRGF0
YSwgc3BlY2lmaWNpdHksIHN0eWxlU2NvcGVPcmRpbmFsLCBjYXNjYWRlTGF5ZXJPcmRlciB9KTsK
IH0KIAogdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6Y2xlYXJNYXRjaGVkUnVsZXMoKQpAQCAt
NTM0LDcgKzUzNCw3IEBAIHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzRm9yTGlzdChjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlCiAKICAgICAgICAgdW5zaWdu
ZWQgc3BlY2lmaWNpdHk7CiAgICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwgc3BlY2lm
aWNpdHkpKQotICAgICAgICAgICAgYWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5
LCBtYXRjaFJlcXVlc3Quc3R5bGVTY29wZU9yZGluYWwpOworICAgICAgICAgICAgYWRkTWF0Y2hl
ZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5LCBtYXRjaFJlcXVlc3Quc3R5bGVTY29wZU9yZGlu
YWwsIG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5jYXNjYWRlTGF5ZXJPcmRlckZvcihydWxlRGF0YSkp
OwogICAgIH0KIH0KIApAQCAtNTQ0LDYgKzU0NCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21w
YXJlUnVsZXMoTWF0Y2hlZFJ1bGUgcjEsIE1hdGNoZWRSdWxlIHIyKQogICAgIGlmIChyMS5zdHls
ZVNjb3BlT3JkaW5hbCAhPSByMi5zdHlsZVNjb3BlT3JkaW5hbCkKICAgICAgICAgcmV0dXJuIHIx
LnN0eWxlU2NvcGVPcmRpbmFsID4gcjIuc3R5bGVTY29wZU9yZGluYWw7CiAKKyAgICBpZiAocjEu
Y2FzY2FkZUxheWVyT3JkZXIgIT0gcjIuY2FzY2FkZUxheWVyT3JkZXIpCisgICAgICAgIHJldHVy
biByMS5jYXNjYWRlTGF5ZXJPcmRlciA8IHIyLmNhc2NhZGVMYXllck9yZGVyOworCiAgICAgaWYg
KHIxLnNwZWNpZmljaXR5ICE9IHIyLnNwZWNpZmljaXR5KQogICAgICAgICByZXR1cm4gcjEuc3Bl
Y2lmaWNpdHkgPCByMi5zcGVjaWZpY2l0eTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1l
bnRSdWxlQ29sbGVjdG9yLmgKaW5kZXggMjM5MmUwYjc0NDIxLi5jNTJlYmZhNjE5ZTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaApAQCAtNjIsNiArNjIs
NyBAQCBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewogICAgIGNvbnN0IFJ1bGVEYXRhKiBydWxlRGF0YTsK
ICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eTsKICAgICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9y
ZGluYWw7CisgICAgdW5zaWduZWQgY2FzY2FkZUxheWVyT3JkZXI7CiB9OwogCiBzdHJ1Y3QgTWF0
Y2hlZFByb3BlcnRpZXMgewpAQCAtMTQ2LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
b3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4pOwogICAgIHZvaWQg
dHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRpb25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2Nv
cGVPcmRpbmFsPiBmb3JTY29wZSA9IHsgfSk7CiAKLSAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNv
bnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgc3BlY2lmaWNpdHksIFNjb3BlT3JkaW5hbCk7CisgICAg
dm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxlRGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5
LCBTY29wZU9yZGluYWwsIHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyKTsKICAgICB2b2lkIGFk
ZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoZWRQcm9wZXJ0aWVzJiYsIERlY2xhcmF0aW9uT3JpZ2lu
KTsKIAogICAgIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2VsZW1l
bnQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKaW5kZXggNGRlNzNhNjI4MWRkLi44
NDUyNzAyOTc5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC04Nyw2ICs4NywxMyBA
QCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlLCB1bnNpZ25lZCBz
ZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZQogewogICAgIFJ1bGVEYXRhIHJ1bGVEYXRhKHJ1bGUs
IHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsKIAorICAg
IGlmIChtX2Nhc2NhZGVMYXllck9yZGVyKSB7CisgICAgICAgIGF1dG8gb2xkU2l6ZSA9IG1fY2Fz
Y2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5zaXplKCk7CisgICAgICAgIG1fY2FzY2FkZUxheWVy
T3JkZXJGb3JQb3NpdGlvbi5ncm93KG1fcnVsZUNvdW50KTsKKyAgICAgICAgc3RkOjpmaWxsKG1f
Y2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5iZWdpbigpICsgb2xkU2l6ZSwgbV9jYXNjYWRl
TGF5ZXJPcmRlckZvclBvc2l0aW9uLmVuZCgpLCAwKTsKKyAgICAgICAgbV9jYXNjYWRlTGF5ZXJP
cmRlckZvclBvc2l0aW9uLmxhc3QoKSA9IG1fY2FzY2FkZUxheWVyT3JkZXI7CisgICAgfQorCiAg
ICAgbV9mZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXMocnVsZURhdGEpOwogCiAgICAgaWYgKG1lZGlh
UXVlcnlDb2xsZWN0b3IpCkBAIC0yODcsNiArMjk0LDIyIEBAIHZvaWQgUnVsZVNldDo6YWRkQ2hp
bGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIE1lZGlh
UXVlCiAgICAgICAgICAgICBtZWRpYVF1ZXJ5Q29sbGVjdG9yLnBvcCgmbWVkaWFSdWxlLm1lZGlh
UXVlcmllcygpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisgICAgICAgIGlm
IChpczxTdHlsZVJ1bGVMYXllcj4oKnJ1bGUpKSB7CisgICAgICAgICAgICBhdXRvJiBsYXllclJ1
bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVMYXllcj4oKnJ1bGUpOworICAgICAgICAgICAgaWYgKGxh
eWVyUnVsZS5pc0xpc3QoKSkgeworICAgICAgICAgICAgICAgIC8vIExpc3Qgc3ludGF4IHRoYXQg
anVzdCByZWdpc3RlcnMgdGhlIGxheWVycy4KKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG5h
bWUgOiBsYXllclJ1bGUubmFtZUxpc3QoKSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoQ2Fz
Y2FkZUxheWVyKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwb3BDYXNjYWRlTGF5ZXIobmFt
ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLy8gQmxvY2sgc3ludGF4LgorICAgICAgICAgICAgcHVzaENh
c2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgpKTsKKyAgICAgICAgICAgIGFkZENoaWxkUnVsZXMo
bGF5ZXJSdWxlLmNoaWxkUnVsZXMoKSwgbWVkaWFRdWVyeUNvbGxlY3RvciwgcmVzb2x2ZXIsIG1v
ZGUpOworICAgICAgICAgICAgcG9wQ2FzY2FkZUxheWVyKGxheWVyUnVsZS5uYW1lKCkpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0eWxlUnVsZUZv
bnRGYWNlPigqcnVsZSkpIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGlzIGZvbnQgZmFjZSB0byBv
dXIgc2V0LgogICAgICAgICAgICAgaWYgKHJlc29sdmVyKSB7CkBAIC00NjksNiArNDkyLDM0IEBA
IFJ1bGVTZXQ6OkNvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIFJ1bGVTZXQ6OmV2YWx1YXRlRHlu
YW1pY01lZGlhUXVlcnlSdWxlcyhjb25zCiAgICAgcmV0dXJuIGNvbGxlY3RlZENoYW5nZXM7CiB9
CiAKK3ZvaWQgUnVsZVNldDo6cHVzaENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1l
JiBuYW1lKQoreworICAgIGF1dG8gbmFtZVJlc29sdmluZ0Fub255bW91cyA9IFsmXSB7CisgICAg
ICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTWFrZSB1bmlxdWUgbmFt
ZSBmb3IgYW4gYW5vbnltb3VzIGxheWVyLgorICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25n
IHJhbmRvbSA9IHJhbmRvbU51bWJlcigpICogc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBs
b25nIGxvbmc+OjptYXgoKTsKKyAgICAgICAgICAgIHJldHVybiBDYXNjYWRlTGF5ZXJOYW1lIHsg
ImFub25fIl9zICsgU3RyaW5nOjpudW1iZXIocmFuZG9tKSB9OworICAgICAgICB9CisgICAgICAg
IHJldHVybiBuYW1lOworICAgIH07CisKKyAgICAvLyBGb3IgaGllcmFyY2hpY2FsIG5hbWVzIHdl
IHJlZ2lzdGVyIHRoZSBjb250YWluaW5nIGxheWVycyBpbmRpdmlkdWFsbHkgZmlyc3QuCisgICAg
Zm9yIChhdXRvJiBuYW1lU2VnbWVudCA6IG5hbWVSZXNvbHZpbmdBbm9ueW1vdXMoKSkgeworICAg
ICAgICBtX3Jlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5hcHBlbmQobmFtZVNlZ21lbnQpOworICAg
ICAgICBtX2Nhc2NhZGVMYXllck9yZGVyID0gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5lbnN1cmUo
bV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBub3QgY29ycmVjdCB3aGVuIGFkZGluZyBhIHN1YmxheWVyIHRvIGFuIGFscmVhZHkg
cmVnaXN0ZXJlZCBsYXllciBhZnRlciBpdCBoYXMgZ2FpbmVkIHNpYmxpbmdzLgorICAgICAgICAg
ICAgcmV0dXJuIG1fY2FzY2FkZUxheWVyT3JkZXJNYXAuc2l6ZSgpICsgMTsKKyAgICAgICAgfSku
aXRlcmF0b3ItPnZhbHVlOworICAgIH0KK30KKwordm9pZCBSdWxlU2V0Ojpwb3BDYXNjYWRlTGF5
ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYgbmFtZSkKK3sKKyAgICBhdXRvIHNpemUgPSBuYW1l
LmlzRW1wdHkoKSA/IDEgOiBuYW1lLnNpemUoKTsKKyAgICBtX3Jlc29sdmVkQ2FzY2FkZUxheWVy
TmFtZS5zaHJpbmsobV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUuc2l6ZSgpIC0gc2l6ZSk7Cisg
ICAgbV9jYXNjYWRlTGF5ZXJPcmRlciA9IG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1lLmlzRW1w
dHkoKSA/IDAgOiBtX2Nhc2NhZGVMYXllck9yZGVyTWFwLmdldChtX3Jlc29sdmVkQ2FzY2FkZUxh
eWVyTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaHJpbmtNYXBWZWN0b3JzVG9GaXQo
UnVsZVNldDo6QXRvbVJ1bGVNYXAmIG1hcCkKIHsKICAgICBmb3IgKGF1dG8mIHZlY3RvciA6IG1h
cC52YWx1ZXMoKSkKQEAgLTUwNSw2ICs1NTYsOCBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlua1RvRml0
KCkKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiAKICAgICBzaHJpbmtEeW5hbWljUnVs
ZXMobV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzKTsKKworICAgIG1fY2FzY2FkZUxheWVyT3JkZXJG
b3JQb3NpdGlvbi5zaHJpbmtUb0ZpdCgpOwogfQogCiBSdWxlU2V0OjpNZWRpYVF1ZXJ5Q29sbGVj
dG9yOjp+TWVkaWFRdWVyeUNvbGxlY3RvcigpID0gZGVmYXVsdDsKQEAgLTU2OSw2ICs2MjIsNSBA
QCB2b2lkIFJ1bGVTZXQ6Ok1lZGlhUXVlcnlDb2xsZWN0b3I6OmFkZFJ1bGVJZk5lZWRlZChjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgY29udGV4dC5ydWxlRmVhdHVyZXMuYXBwZW5kKHsg
cnVsZURhdGEgfSk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA3YWI1ZjdiNDBjNTMuLmYxMDM5M2Zj
NmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1YmxpYzoK
ICAgICBib29sIGhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuICFt
X3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc0hvc3RQ
c2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVybiBtX2hh
c0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWU7IH0KIAorICAgIHVuc2ln
bmVkIGNhc2NhZGVMYXllck9yZGVyRm9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgUnVsZVNldCgpOwogCkBAIC0xNTgsNiArMTYwLDkgQEAgcHJpdmF0ZToKICAgICB9
OwogICAgIENvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIGV2YWx1YXRlRHluYW1pY01lZGlhUXVl
cnlSdWxlcyhjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgc2l6ZV90IHN0YXJ0SW5kZXgpOwog
CisgICAgdm9pZCBwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUmKTsKKyAg
ICB2b2lkIHBvcENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1lJik7CisKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZVJ1bGVEYXRhcyhGdW5jdGlv
biYmKTsKIAogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKQEAgLTE3OSw5ICsxODQsMTggQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8RHluYW1pY01lZGlhUXVlcnlSdWxlcz4gbV9keW5hbWljTWVk
aWFRdWVyeVJ1bGVzOwogICAgIEhhc2hNYXA8VmVjdG9yPHNpemVfdD4sIFJlZjxjb25zdCBSdWxl
U2V0Pj4gbV9tZWRpYVF1ZXJ5SW52YWxpZGF0aW9uUnVsZVNldENhY2hlOwogICAgIHVuc2lnbmVk
IG1fcnVsZUNvdW50IHsgMCB9OworCisgICAgSGFzaE1hcDxDYXNjYWRlTGF5ZXJOYW1lLCB1bnNp
Z25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcDsKKyAgICAvLyBUaGlzIGlzIGEgc2lkZSB2ZWN0
b3IgdG8gaG9sZCBsYXllciBvcmRlciB3aXRob3V0IGJsb2F0aW5nIFJ1bGVEYXRhLgorICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uOworCiAgICAgYm9v
bCBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcyB7IGZhbHNlIH07CisKKyAgICAvLyBG
SVhNRTogVGhlc2Ugc2hvdWxkIGJlIGluIHN0YWNrLgorICAgIENhc2NhZGVMYXllck5hbWUgbV9y
ZXNvbHZlZENhc2NhZGVMYXllck5hbWU7CisgICAgdW5zaWduZWQgbV9jYXNjYWRlTGF5ZXJPcmRl
ciB7IDAgfTsKIH07CiAKIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlY3RvciogUnVs
ZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5LCBib29sIGlzSFRNTE5hbWUpIGNv
bnN0CkBAIC0xOTQsNSArMjA4LDEzIEBAIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZl
Y3RvciogUnVsZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5LCBiCiAgICAgcmV0
dXJuIHRhZ1J1bGVzLT5nZXQoa2V5KTsKIH0KIAoraW5saW5lIHVuc2lnbmVkIFJ1bGVTZXQ6OmNh
c2NhZGVMYXllck9yZGVyRm9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkgY29uc3QKK3sKKyAg
ICBpZiAobV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLnNpemUoKSA+IHJ1bGVEYXRhLnBv
c2l0aW9uKCkpCisgICAgICAgIHJldHVybiBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9zaXRpb25b
cnVsZURhdGEucG9zaXRpb24oKV07CisgICAgcmV0dXJuIDA7Cit9CisKKwogfSAvLyBuYW1lc3Bh
Y2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="commit-queue"
          id="459538"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436491</attachid>
            <date>2021-08-26 03:56:45 -0700</date>
            <delta_ts>2021-08-27 10:43:13 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cascade-layers-5.patch</filename>
            <type>text/plain</type>
            <size>37716</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDhhNjY1MGY4ODI4NC4uMDE3YzI0OWE4
N2RiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAy
MS0wOC0yNiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgW0NT
UyBDYXNjYWRlIExheWVyc10gSW5pdGlhbCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk1NDIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNh
c2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA4LTI1ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW01hYyB3azJdIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jcm9zcy1vcmlnaW4tZW1iZWRkZXItcG9saWN5L3JlcG9y
dGluZy10by1mcmFtZS1vd25lci5odHRwcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0
ZWQudHh0CmluZGV4IGJkNzZkZTAyZTE0NS4uNzllOTk0MjM3MzkwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY2FzY2FkZS9s
YXllci1iYXNpYy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNhc2NhZGUvbGF5ZXItYmFzaWMtZXhwZWN0ZWQudHh0
CkBAIC0xLDM2ICsxLDM2IEBACiAKIFBBU1MgQTEgQW5vbnltb3VzIGxheWVycwotRkFJTCBBMiBB
bm9ueW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEEyIEFub255bW91cyBsYXllcnMsIHRhcmdl
dCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwg
MCkiCi1GQUlMIEEzIEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTMgQW5vbnltb3Vz
IGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290
ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwgQTQgQW5vbnltb3VzIGxheWVycyBhc3NlcnRfZXF1YWxz
OiBBNCBBbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEy
OCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQTUgQW5vbnltb3VzIGxheWVycyBh
c3NlcnRfZXF1YWxzOiBBNSBBbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3Rl
ZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAsIDApIgotRkFJTCBBNiBBbm9u
eW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEE2IEFub255bW91cyBsYXllcnMsIHRhcmdldCAn
Zmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDI1NSwgMCwgMCki
Ci1GQUlMIEE3IEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTcgQW5vbnltb3VzIGxh
eWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMCwgMCwgMCkiCi1GQUlMIEE4IEFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogQTgg
QW5vbnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDAp
IiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEE5IEFub255bW91cyBsYXllcnMgYXNzZXJ0
X2VxdWFsczogQTkgQW5vbnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJn
YigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCitQQVNTIEEyIEFub255bW91cyBs
YXllcnMKK1BBU1MgQTMgQW5vbnltb3VzIGxheWVycworUEFTUyBBNCBBbm9ueW1vdXMgbGF5ZXJz
CitQQVNTIEE1IEFub255bW91cyBsYXllcnMKK1BBU1MgQTYgQW5vbnltb3VzIGxheWVycworUEFT
UyBBNyBBbm9ueW1vdXMgbGF5ZXJzCitQQVNTIEE4IEFub255bW91cyBsYXllcnMKK1BBU1MgQTkg
QW5vbnltb3VzIGxheWVycwogUEFTUyBCMSBOYW1lZCBsYXllcnMKLUZBSUwgQjIgTmFtZWQgbGF5
ZXJzIGFzc2VydF9lcXVhbHM6IEIyIE5hbWVkIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0
ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwgQjMgTmFt
ZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEIzIE5hbWVkIGxheWVycywgdGFyZ2V0ICdmaXJzdCcg
ZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMjU1LCAwLCAwKSIKLUZBSUwg
QjQgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEI0IE5hbWVkIGxheWVycywgdGFyZ2V0ICdm
aXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1G
QUlMIEI1IE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBCNSBOYW1lZCBsYXllcnMsIHRhcmdl
dCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDAsIDAsIDAp
IgotRkFJTCBCNiBOYW1lZCBsYXllcnMgYXNzZXJ0X2VxdWFsczogQjYgTmFtZWQgbGF5ZXJzLCB0
YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAw
LCAwKSIKLUZBSUwgQjcgTmFtZWQgbGF5ZXJzIGFzc2VydF9lcXVhbHM6IEI3IE5hbWVkIGxheWVy
cywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2Io
MCwgMCwgMCkiCi1GQUlMIEI4IE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBCOCBOYW1lZCBs
YXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAi
cmdiKDAsIDAsIDApIgotRkFJTCBCOSBOYW1lZCBsYXllcnMgYXNzZXJ0X2VxdWFsczogQjkgTmFt
ZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBn
b3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQjEwIE5hbWVkIGxheWVycyBhc3NlcnRfZXF1YWxzOiBC
MTAgTmFtZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCki
IGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzEgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBh
c3NlcnRfZXF1YWxzOiBDMSBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBl
eHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzIg
TmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDMiBOYW1lZCBsYXllcnMgc2hv
cnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3Qg
InJnYigwLCAwLCAwKSIKLUZBSUwgQzMgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1
YWxzOiBDMyBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAi
cmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgQzQgTmFtZWQgbGF5
ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDNCBOYW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0
YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAw
LCAwKSIKLUZBSUwgQzUgTmFtZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDNSBO
YW1lZCBsYXllcnMgc2hvcnRoYW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEy
OCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgRDEgTWl4ZWQgbmFtZWQgYW5kIGFu
b255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDEgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91
cyBsYXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdv
dCAicmdiKDAsIDAsIDApIgotRkFJTCBEMiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVy
cyBhc3NlcnRfZXF1YWxzOiBEMiBNaXhlZCBuYW1lZCBhbmQgYW5vbnltb3VzIGxheWVycywgdGFy
Z2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwg
MCkiCi1GQUlMIEQzIE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJzIGFzc2VydF9lcXVh
bHM6IEQzIE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBl
eHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigwLCAwLCAwKSIKLUZBSUwgRDQg
TWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDQgTWl4ZWQg
bmFtZWQgYW5kIGFub255bW91cyBsYXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2Io
MCwgMTI4LCAwKSIgYnV0IGdvdCAicmdiKDAsIDAsIDApIgotRkFJTCBENSBNaXhlZCBuYW1lZCBh
bmQgYW5vbnltb3VzIGxheWVycyBhc3NlcnRfZXF1YWxzOiBENSBNaXhlZCBuYW1lZCBhbmQgYW5v
bnltb3VzIGxheWVycywgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBi
dXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUxIFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2Vx
dWFsczogRTEgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigw
LCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUyIFN0YXRlbWVudCBzeW50
YXggYXNzZXJ0X2VxdWFsczogRTIgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhw
ZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCi1GQUlMIEUzIFN0
YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTMgU3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0
ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJyZ2IoMCwgMCwgMCki
Ci1GQUlMIEU0IFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTQgU3RhdGVtZW50IHN5
bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMCwgMCwgMCkiCi1GQUlMIEU1IFN0YXRlbWVudCBzeW50YXggYXNzZXJ0X2VxdWFsczogRTUg
U3RhdGVtZW50IHN5bnRheCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDAp
IiBidXQgZ290ICJyZ2IoMCwgMCwgMCkiCitQQVNTIEIyIE5hbWVkIGxheWVycworUEFTUyBCMyBO
YW1lZCBsYXllcnMKK1BBU1MgQjQgTmFtZWQgbGF5ZXJzCitQQVNTIEI1IE5hbWVkIGxheWVycwor
UEFTUyBCNiBOYW1lZCBsYXllcnMKK1BBU1MgQjcgTmFtZWQgbGF5ZXJzCitQQVNTIEI4IE5hbWVk
IGxheWVycworUEFTUyBCOSBOYW1lZCBsYXllcnMKK0ZBSUwgQjEwIE5hbWVkIGxheWVycyBhc3Nl
cnRfZXF1YWxzOiBCMTAgTmFtZWQgbGF5ZXJzLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdi
KDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAsIDApIgorUEFTUyBDMSBOYW1lZCBsYXll
cnMgc2hvcnRoYW5kCitQQVNTIEMyIE5hbWVkIGxheWVycyBzaG9ydGhhbmQKK0ZBSUwgQzMgTmFt
ZWQgbGF5ZXJzIHNob3J0aGFuZCBhc3NlcnRfZXF1YWxzOiBDMyBOYW1lZCBsYXllcnMgc2hvcnRo
YW5kLCB0YXJnZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJn
YigyNTUsIDAsIDApIgorUEFTUyBDNCBOYW1lZCBsYXllcnMgc2hvcnRoYW5kCitGQUlMIEM1IE5h
bWVkIGxheWVycyBzaG9ydGhhbmQgYXNzZXJ0X2VxdWFsczogQzUgTmFtZWQgbGF5ZXJzIHNob3J0
aGFuZCwgdGFyZ2V0ICdmaXJzdCcgZXhwZWN0ZWQgInJnYigwLCAxMjgsIDApIiBidXQgZ290ICJy
Z2IoMjU1LCAwLCAwKSIKK1BBU1MgRDEgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMK
K1BBU1MgRDIgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKK1BBU1MgRDMgTWl4ZWQg
bmFtZWQgYW5kIGFub255bW91cyBsYXllcnMKK0ZBSUwgRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255
bW91cyBsYXllcnMgYXNzZXJ0X2VxdWFsczogRDQgTWl4ZWQgbmFtZWQgYW5kIGFub255bW91cyBs
YXllcnMsIHRhcmdldCAnZmlyc3QnIGV4cGVjdGVkICJyZ2IoMCwgMTI4LCAwKSIgYnV0IGdvdCAi
cmdiKDI1NSwgMCwgMCkiCitQQVNTIEQ1IE1peGVkIG5hbWVkIGFuZCBhbm9ueW1vdXMgbGF5ZXJz
CitQQVNTIEUxIFN0YXRlbWVudCBzeW50YXgKK1BBU1MgRTIgU3RhdGVtZW50IHN5bnRheAorUEFT
UyBFMyBTdGF0ZW1lbnQgc3ludGF4CitQQVNTIEU0IFN0YXRlbWVudCBzeW50YXgKK0ZBSUwgRTUg
U3RhdGVtZW50IHN5bnRheCBhc3NlcnRfZXF1YWxzOiBFNSBTdGF0ZW1lbnQgc3ludGF4LCB0YXJn
ZXQgJ2ZpcnN0JyBleHBlY3RlZCAicmdiKDAsIDEyOCwgMCkiIGJ1dCBnb3QgInJnYigyNTUsIDAs
IDApIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCmluZGV4IGYyNGY1ODIwYzYwYy4uNmNhYzI3OGE5NTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEy
IEBACisyMDIxLTA4LTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBJbml0aWFsIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sOgorCiAyMDIxLTA4LTI1ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBzb21lIGlPUy1z
cGVjaWZpYyBjb21waWxlLXRpbWUgZ3VhcmRzIHRoYXQgYXJlIG5vIGxvbmdlciBuZWVkZWQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNlc0V4
cGVyaW1lbnRhbC55YW1sIGIvU291cmNlL1dURi9TY3JpcHRzL1ByZWZlcmVuY2VzL1dlYlByZWZl
cmVuY2VzRXhwZXJpbWVudGFsLnlhbWwKaW5kZXggMTg1YTVhYzBmNDU0Li4xMzZiMTEzYjAzNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9XZWJQcmVmZXJlbmNl
c0V4cGVyaW1lbnRhbC55YW1sCisrKyBiL1NvdXJjZS9XVEYvU2NyaXB0cy9QcmVmZXJlbmNlcy9X
ZWJQcmVmZXJlbmNlc0V4cGVyaW1lbnRhbC55YW1sCkBAIC0xMTEsNiArMTExLDE4IEBAIENGTmV0
d29ya05ldHdvcmtMb2FkZXJFbmFibGVkOgogICAgIFdlYktpdDoKICAgICAgIGRlZmF1bHQ6IGZh
bHNlCiAKK0NTU0Nhc2NhZGVMYXllcnNFbmFibGVkOgorICB0eXBlOiBib29sCisgIGh1bWFuUmVh
ZGFibGVOYW1lOiAiQ1NTIENhc2NhZGUgTGF5ZXJzIgorICBodW1hblJlYWRhYmxlRGVzY3JpcHRp
b246ICJFbmFibGUgQ1NTIENhc2NhZGUgTGF5ZXJzIgorICBkZWZhdWx0VmFsdWU6CisgICAgV2Vi
S2l0TGVnYWN5OgorICAgICAgZGVmYXVsdDogZmFsc2UKKyAgICBXZWJLaXQ6CisgICAgICBkZWZh
dWx0OiBmYWxzZQorICAgIFdlYkNvcmU6CisgICAgICBkZWZhdWx0OiBmYWxzZQorCiBDU1NDb2xv
cjQ6CiAgIHR5cGU6IGJvb2wKICAgaHVtYW5SZWFkYWJsZU5hbWU6ICJDU1MgQ29sb3IgNCBDb2xv
ciBUeXBlcyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkYTkzNTJkZDhlZjkuLjgzNzAwOGMzNWRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTI2ICBBbnR0aSBLb2l2aXN0byAgPGFudHRp
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ1NTIENhc2NhZGUgTGF5ZXJzXSBJbml0aWFsIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTU0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3MtY2FzY2FkZS01LyNjYXNjYWRlLWxheWVycworCisgICAgICAg
IFRoaXMgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIEBsYXllciBydWxlcywgaW5jbHVk
aW5nIGJvdGggdGhlIGJsb2NrIGFuZCB0aGUgc3RhdGVtZW50IHN5bnRheC4KKyAgICAgICAgTm8g
c3VwcG9ydCBmb3IgQGltcG9ydCBvciBDU1NPTSB5ZXQgYnV0IGJhc2ljIGZ1bmN0aW9uYWxpdHkg
bW9zdGx5IHdvcmtzLgorCisgICAgICAgIFRoZSBmZWF0dXJlIGlzIGRpc2FibGVkIGJ5IGRlZmF1
bHQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUJhc2U6OmRlc3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6
Y29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlTGF5ZXI6OlN0eWxl
UnVsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1fbmFtZVZhcmlhbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgICogY3NzL1N0eWxlUnVs
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSdWxlQmFzZTo6aXNHcm91cFJ1bGUgY29uc3Qp
OgorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBjYXN0aW5nIHRvIFN0eWxlUnVsZUdyb3VwLgor
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJ1bGVCYXNlOjppc0xheWVyUnVsZSBjb25zdCk6Cisg
ICAgICAgIChpc1R5cGUpOgorICAgICAgICAqIGNzcy9TdHlsZVJ1bGVUeXBlLmg6CisKKyAgICAg
ICAgQWRkIHN1YmNsYXNzIGZvciBsYXllci4KKworICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29u
dGVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhdmVyc2VSdWxlc0luVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJjZXMg
Y29uc3QpOgorCisgICAgICAgIFRyYXZlcnNhbCBzdXBwb3J0LiBBbHNvIGNvdmVyIG90aGVyIG1p
c3NpbmcgZ3JvdXAgcnVsZXMuCisKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNzc0F0UnVsZUlEKToKKyAgICAgICAgKiBjc3MvcGFyc2Vy
L0NTU0F0UnVsZUlELmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJDb250ZXh0LmNw
cDoKKworICAgICAgICBFbmFibGUgYml0LgorCisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09
KToKKyAgICAgICAgKFdlYkNvcmU6OmFkZCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJz
ZXJDb250ZXh0Lmg6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckltcGw6OmNvbnN1bWVBdFJ1bGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6Y29uc3VtZUxheWVyUnVsZSk6CisKKyAgICAgICAgUGFy
c2luZyBzdXBwb3J0LgorCisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmg6Cisg
ICAgICAgICogc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OkVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1
bGVzRm9yTGlzdCk6CisKKyAgICAgICAgU2F2ZSB0aGUgbGF5ZXIgb3JkZXIgdG8gTWF0Y2hSZXN1
bHQuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpjb21wYXJlUnVsZXMpOgorCisgICAgICAg
IExheWVyIG9yZGVyIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiBzcGVjaWZpY2l0eSBidXQgbG93
ZXIgdGhhbiBzY29wZS4KKworICAgICAgICAqIHN0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmg6
CisgICAgICAgICogc3R5bGUvUnVsZVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6
UnVsZVNldDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6YWRk
Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6cHVzaENhc2Nh
ZGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZVNldDo6cG9wQ2FzY2FkZUxh
eWVyKToKKworICAgICAgICBDb21wdXRlIGxheWVyIG9yZGVyIHdoZW4gYWRkaW5nIHRoZSBydWxl
cyB0byBSdWxlU2V0LgorCisgICAgICAgICogc3R5bGUvUnVsZVNldC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OlJ1bGVTZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9yIGNvbnN0KToKKworICAg
ICAgICBSZXNvbHZlZCBvcmRlciBpcyBrZXB0IGluIGEgc2lkZSB2ZWN0b3IgdG8gYXZvaWQgYmxv
YXRpbmcgUnVsZVNldC4gVGhlIHZlY3RvciBpcyBpbml0aWFsaXplZAorICAgICAgICBvbmx5IGlm
IGNhc2NhZGUgbGF5ZXJzIGFyZSBiZWluZyB1c2VkLgorCiAyMDIxLTA4LTI1ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlLmNwcAppbmRleCA4Y2JkZmIyOGJhMTAuLjRiMTVjMDk0OTg5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUnVsZS5jcHAKQEAgLTk0LDYgKzk0LDkgQEAgdm9pZCBTdHlsZVJ1bGVCYXNl
OjpkZXN0cm95KCkKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNvdW50ZXJTdHlsZToKICAgICAg
ICAgZGVsZXRlIGRvd25jYXN0PFN0eWxlUnVsZUNvdW50ZXJTdHlsZT4odGhpcyk7CiAgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgorICAgICAgICBkZWxldGUg
ZG93bmNhc3Q8U3R5bGVSdWxlTGF5ZXI+KHRoaXMpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBTdHlsZVJ1bGVUeXBlOjpVbmtub3duOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTE4LDYgKzEyMSw4IEBAIFJlZjxTdHlsZVJ1bGVCYXNlPiBT
dHlsZVJ1bGVCYXNlOjpjb3B5KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxl
UnVsZUtleWZyYW1lcz4oKnRoaXMpLmNvcHkoKTsKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNv
dW50ZXJTdHlsZToKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFN0eWxlUnVsZUNvdW50ZXJTdHls
ZT4oKnRoaXMpLmNvcHkoKTsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgorICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8U3R5bGVSdWxlTGF5ZXI+KCp0aGlzKS5jb3B5KCk7CiAgICAgY2Fz
ZSBTdHlsZVJ1bGVUeXBlOjpJbXBvcnQ6CiAgICAgY2FzZSBTdHlsZVJ1bGVUeXBlOjpOYW1lc3Bh
Y2U6CiAgICAgICAgIC8vIEZJWE1FOiBDb3B5IGltcG9ydCBhbmQgbmFtZXNwYWNlIHJ1bGVzLgpA
QCAtMTYyLDYgKzE2Nyw4IEBAIFJlZjxDU1NSdWxlPiBTdHlsZVJ1bGVCYXNlOjpjcmVhdGVDU1NP
TVdyYXBwZXIoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQsIENTU1J1CiAgICAgY2FzZSBTdHls
ZVJ1bGVUeXBlOjpDb3VudGVyU3R5bGU6CiAgICAgICAgIHJ1bGUgPSBDU1NDb3VudGVyU3R5bGVS
dWxlOjpjcmVhdGUoZG93bmNhc3Q8U3R5bGVSdWxlQ291bnRlclN0eWxlPihzZWxmKSwgcGFyZW50
U2hlZXQpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkxheWVyOgor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6VW5r
bm93bjoKICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNoYXJzZXQ6CiAgICAgY2FzZSBTdHlsZVJ1
bGVUeXBlOjpLZXlmcmFtZToKQEAgLTQzMSw2ICs0MzgsNyBAQCBTdHlsZVJ1bGVTdXBwb3J0czo6
U3R5bGVSdWxlU3VwcG9ydHMoY29uc3QgU3R5bGVSdWxlU3VwcG9ydHMmIG8pCiB7CiB9CiAKKwog
UmVmPFN0eWxlUnVsZVN1cHBvcnRzPiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgY29uZGl0aW9uVGV4dCwgYm9vbCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgVmVjdG9yPFJl
ZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTdHlsZVJ1bGVTdXBwb3J0cyhjb25kaXRpb25UZXh0LCBjb25kaXRpb25Jc1N1cHBvcnRlZCwg
V1RGTW92ZShydWxlcykpKTsKQEAgLTQ0MSw2ICs0NDksNDUgQEAgUmVmPFN0eWxlUnVsZVN1cHBv
cnRzPiBTdHlsZVJ1bGVTdXBwb3J0czo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uVGV4
dCwgYm8KICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVTdXBwb3J0cyhjb25kaXRp
b25UZXh0LCBjb25kaXRpb25Jc1N1cHBvcnRlZCwgV1RGTW92ZShydWxlcykpKTsKIH0KIAorU3R5
bGVSdWxlTGF5ZXI6OlN0eWxlUnVsZUxheWVyKFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPiYmIG5h
bWVMaXN0KQorICAgIDogU3R5bGVSdWxlR3JvdXAoU3R5bGVSdWxlVHlwZTo6TGF5ZXIsIFZlY3Rv
cjxSZWZQdHI8U3R5bGVSdWxlQmFzZT4+IHsgfSkKKyAgICAsIG1fbmFtZVZhcmlhbnQoV1RGTW92
ZShuYW1lTGlzdCkpCit7Cit9CisKK1N0eWxlUnVsZUxheWVyOjpTdHlsZVJ1bGVMYXllcihDYXNj
YWRlTGF5ZXJOYW1lJiYgbmFtZSwgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxl
cykKKyAgICA6IFN0eWxlUnVsZUdyb3VwKFN0eWxlUnVsZVR5cGU6OkxheWVyLCBXVEZNb3ZlKHJ1
bGVzKSkKKyAgICAsIG1fbmFtZVZhcmlhbnQoV1RGTW92ZShuYW1lKSkKK3sKK30KKworU3R5bGVS
dWxlTGF5ZXI6OlN0eWxlUnVsZUxheWVyKENhc2NhZGVMYXllck5hbWUmJiBuYW1lLCBzdGQ6OnVu
aXF1ZV9wdHI8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+JiYgcnVsZXMpCisgICAgOiBTdHls
ZVJ1bGVHcm91cChTdHlsZVJ1bGVUeXBlOjpMYXllciwgV1RGTW92ZShydWxlcykpCisgICAgLCBt
X25hbWVWYXJpYW50KFdURk1vdmUobmFtZSkpCit7Cit9CisKK1N0eWxlUnVsZUxheWVyOjpTdHls
ZVJ1bGVMYXllcihjb25zdCBTdHlsZVJ1bGVMYXllciYgb3RoZXIpCisgICAgOiBTdHlsZVJ1bGVH
cm91cChvdGhlcikKKyAgICAsIG1fbmFtZVZhcmlhbnQob3RoZXIubV9uYW1lVmFyaWFudCkKK3sK
K30KKworUmVmPFN0eWxlUnVsZUxheWVyPiBTdHlsZVJ1bGVMYXllcjo6Y3JlYXRlKFZlY3RvcjxD
YXNjYWRlTGF5ZXJOYW1lPiYmIG5hbWVMaXN0KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFN0eWxlUnVsZUxheWVyKFdURk1vdmUobmFtZUxpc3QpKSk7Cit9CisKK1JlZjxTdHlsZVJ1bGVM
YXllcj4gU3R5bGVSdWxlTGF5ZXI6OmNyZWF0ZShDYXNjYWRlTGF5ZXJOYW1lJiYgbmFtZSwgVmVj
dG9yPFJlZlB0cjxTdHlsZVJ1bGVCYXNlPj4mJiBydWxlcykKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTdHlsZVJ1bGVMYXllcihXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSkpOwor
fQorCitSZWY8U3R5bGVSdWxlTGF5ZXI+IFN0eWxlUnVsZUxheWVyOjpjcmVhdGUoQ2FzY2FkZUxh
eWVyTmFtZSYmIG5hbWUsIHN0ZDo6dW5pcXVlX3B0cjxEZWZlcnJlZFN0eWxlR3JvdXBSdWxlTGlz
dD4mJiBydWxlcykKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdHlsZVJ1bGVMYXllcihX
VEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSkpOworfQorCiBTdHlsZVJ1bGVDaGFyc2V0OjpT
dHlsZVJ1bGVDaGFyc2V0KCkKICAgICA6IFN0eWxlUnVsZUJhc2UoU3R5bGVSdWxlVHlwZTo6Q2hh
cnNldCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaAppbmRleCBlYTFkYWU1ODUxZmEuLjE1NjJjNzky
NjdlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJ1bGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3Rm
L1VuaXF1ZUFycmF5Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zOSw2ICs0MCw4IEBAIGNsYXNzIE11dGFibGVTdHlsZVByb3BlcnRpZXM7
CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZTsKIGNsYXNzIFN0eWxlUHJvcGVydGllczsKIGNsYXNz
IFN0eWxlUnVsZUtleWZyYW1lczsKKwordXNpbmcgQ2FzY2FkZUxheWVyTmFtZSA9IFZlY3RvcjxB
dG9tU3RyaW5nPjsKICAgICAKIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFN0eWxlUnVsZUJhc2UpOwogY2xhc3MgU3R5bGVSdWxlQmFzZSA6IHB1YmxpYyBXVEY6OlJlZkNv
dW50ZWRCYXNlIHsKQEAgLTU1LDggKzU4LDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzTWVkaWFS
dWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6Ok1lZGlhOyB9CiAg
ICAgYm9vbCBpc1BhZ2VSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5
cGU6OlBhZ2U7IH0KICAgICBib29sIGlzU3R5bGVSdWxlKCkgY29uc3QgeyByZXR1cm4gdHlwZSgp
ID09IFN0eWxlUnVsZVR5cGU6OlN0eWxlOyB9CisgICAgYm9vbCBpc0dyb3VwUnVsZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHlsZVJ1bGVUeXBlOjpNZWRpYSB8fCB0eXBlKCkgPT0gU3R5
bGVSdWxlVHlwZTo6U3VwcG9ydHMgfHwgdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6OkxheWVyOyB9
CiAgICAgYm9vbCBpc1N1cHBvcnRzUnVsZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGUoKSA9PSBTdHls
ZVJ1bGVUeXBlOjpTdXBwb3J0czsgfQogICAgIGJvb2wgaXNJbXBvcnRSdWxlKCkgY29uc3QgeyBy
ZXR1cm4gdHlwZSgpID09IFN0eWxlUnVsZVR5cGU6OkltcG9ydDsgfQorICAgIGJvb2wgaXNMYXll
clJ1bGUoKSBjb25zdCB7IHJldHVybiB0eXBlKCkgPT0gU3R5bGVSdWxlVHlwZTo6TGF5ZXI7IH0K
IAogICAgIFJlZjxTdHlsZVJ1bGVCYXNlPiBjb3B5KCkgY29uc3Q7CiAKQEAgLTIzOSw2ICsyNDQs
MjcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fY29uZGl0aW9uSXNTdXBwb3J0ZWQ7CiB9OwogCitj
bGFzcyBTdHlsZVJ1bGVMYXllciBmaW5hbCA6IHB1YmxpYyBTdHlsZVJ1bGVHcm91cCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFJlZjxTdHlsZVJ1bGVMYXllcj4gY3JlYXRlKFZlY3RvcjxDYXNjYWRl
TGF5ZXJOYW1lPiYmKTsKKyAgICBzdGF0aWMgUmVmPFN0eWxlUnVsZUxheWVyPiBjcmVhdGUoQ2Fz
Y2FkZUxheWVyTmFtZSYmLCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYmKTsKKyAgICBz
dGF0aWMgUmVmPFN0eWxlUnVsZUxheWVyPiBjcmVhdGUoQ2FzY2FkZUxheWVyTmFtZSYmLCBzdGQ6
OnVuaXF1ZV9wdHI8RGVmZXJyZWRTdHlsZUdyb3VwUnVsZUxpc3Q+JiYpOworICAgIFJlZjxTdHls
ZVJ1bGVMYXllcj4gY29weSgpIGNvbnN0IHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3R5bGVSdWxl
TGF5ZXIoKnRoaXMpKTsgfQorCisgICAgYm9vbCBpc0xpc3QoKSBjb25zdCB7IHJldHVybiBXVEY6
OmhvbGRzX2FsdGVybmF0aXZlPFZlY3RvcjxDYXNjYWRlTGF5ZXJOYW1lPj4obV9uYW1lVmFyaWFu
dCk7IH0KKworICAgIGF1dG8mIG5hbWUoKSBjb25zdCB7IHJldHVybiBXVEY6OmdldDxDYXNjYWRl
TGF5ZXJOYW1lPihtX25hbWVWYXJpYW50KTsgfQorICAgIGF1dG8mIG5hbWVMaXN0KCkgY29uc3Qg
eyByZXR1cm4gV1RGOjpnZXQ8VmVjdG9yPENhc2NhZGVMYXllck5hbWU+PihtX25hbWVWYXJpYW50
KTsgfQorCitwcml2YXRlOgorICAgIFN0eWxlUnVsZUxheWVyKFZlY3RvcjxDYXNjYWRlTGF5ZXJO
YW1lPiYmKTsKKyAgICBTdHlsZVJ1bGVMYXllcihDYXNjYWRlTGF5ZXJOYW1lJiYsIFZlY3RvcjxS
ZWZQdHI8U3R5bGVSdWxlQmFzZT4+JiYpOworICAgIFN0eWxlUnVsZUxheWVyKENhc2NhZGVMYXll
ck5hbWUmJiwgc3RkOjp1bmlxdWVfcHRyPERlZmVycmVkU3R5bGVHcm91cFJ1bGVMaXN0PiYmKTsK
KyAgICBTdHlsZVJ1bGVMYXllcihjb25zdCBTdHlsZVJ1bGVMYXllciYpOworCisgICAgVmFyaWFu
dDxDYXNjYWRlTGF5ZXJOYW1lLCBWZWN0b3I8Q2FzY2FkZUxheWVyTmFtZT4+IG1fbmFtZVZhcmlh
bnQ7Cit9OworCiAvLyBUaGlzIGlzIG9ubHkgdXNlZCBieSB0aGUgQ1NTIHBhcnNlci4KIGNsYXNz
IFN0eWxlUnVsZUNoYXJzZXQgZmluYWwgOiBwdWJsaWMgU3R5bGVSdWxlQmFzZSB7CiBwdWJsaWM6
CkBAIC0zMjMsNiArMzQ5LDEwIEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29y
ZTo6U3R5bGVSdWxlKQogICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpTdHls
ZVJ1bGVCYXNlJiBydWxlKSB7IHJldHVybiBydWxlLmlzU3R5bGVSdWxlKCk7IH0KIFNQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJD
b3JlOjpTdHlsZVJ1bGVHcm91cCkKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29y
ZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0dyb3VwUnVsZSgpOyB9CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCisKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6U3R5bGVSdWxlRm9udEZhY2UpCiAgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OlN0eWxlUnVsZUJhc2UmIHJ1bGUpIHsgcmV0dXJuIHJ1bGUuaXNGb250RmFj
ZVJ1bGUoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQpAQCAtMzUwLDMgKzM4MCw3
IEBAIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
QkVHSU4oV2ViQ29yZTo6U3R5bGVSdWxlQ2hhcnNldCkKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUo
Y29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVsZS5pc0NoYXJz
ZXRSdWxlKCk7IH0KIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKKworU1BFQ0lBTElaRV9U
WVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpTdHlsZVJ1bGVMYXllcikKKyAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6U3R5bGVSdWxlQmFzZSYgcnVsZSkgeyByZXR1cm4gcnVs
ZS5pc0xheWVyUnVsZSgpOyB9CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSdWxlVHlwZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUnVsZVR5cGUuaAppbmRleCBjNDA0NzQ2YWU5NDUuLmM5ZTUxOGRiZTYxYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUnVsZVR5cGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSdWxlVHlwZS5oCkBAIC00MCw2ICs0MCw3IEBAIGVudW0gY2xhc3Mg
U3R5bGVSdWxlVHlwZSA6IHVpbnQ4X3QgewogICAgIE5hbWVzcGFjZSA9IDEwLAogICAgIENvdW50
ZXJTdHlsZSA9IDExLAogICAgIFN1cHBvcnRzID0gMTIsCisgICAgTGF5ZXIgPSAxMywKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAKaW5kZXggYWE4N2UyYThmMGRiLi4zMjg0OTc0ODUzNWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC00MjMsOCArNDIzLDEwIEBAIHN0YXRp
YyBib29sIHRyYXZlcnNlUnVsZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVs
ZUJhc2U+PiYgcnVsZXMsIGNvCiAgICAgICAgIGlmIChoYW5kbGVyKCpydWxlKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICBzd2l0Y2ggKHJ1bGUtPnR5cGUoKSkgewotICAgICAg
ICBjYXNlIFN0eWxlUnVsZVR5cGU6Ok1lZGlhOiB7Ci0gICAgICAgICAgICBhdXRvKiBjaGlsZFJ1
bGVzID0gZG93bmNhc3Q8U3R5bGVSdWxlTWVkaWE+KCpydWxlKS5jaGlsZFJ1bGVzV2l0aG91dERl
ZmVycmVkUGFyc2luZygpOworICAgICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6Ok1lZGlhOgorICAg
ICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OlN1cHBvcnRzOgorICAgICAgICBjYXNlIFN0eWxlUnVs
ZVR5cGU6OkxheWVyOiB7CisgICAgICAgICAgICBhdXRvKiBjaGlsZFJ1bGVzID0gZG93bmNhc3Q8
U3R5bGVSdWxlR3JvdXA+KCpydWxlKS5jaGlsZFJ1bGVzV2l0aG91dERlZmVycmVkUGFyc2luZygp
OwogICAgICAgICAgICAgaWYgKGNoaWxkUnVsZXMgJiYgdHJhdmVyc2VSdWxlc0luVmVjdG9yKCpj
aGlsZFJ1bGVzLCBoYW5kbGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDQxLDcgKzQ0Myw2IEBAIHN0YXRpYyBib29sIHRyYXZlcnNlUnVs
ZXNJblZlY3Rvcihjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMsIGNv
CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6Q2hhcnNldDoKICAgICAgICAgY2FzZSBTdHls
ZVJ1bGVUeXBlOjpDb3VudGVyU3R5bGU6CiAgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6S2V5
ZnJhbWU6Ci0gICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6U3VwcG9ydHM6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTQ4NCw2ICs0ODUsNyBAQCBib29sIFN0eWxl
U2hlZXRDb250ZW50czo6dHJhdmVyc2VTdWJyZXNvdXJjZXMoY29uc3QgV1RGOjpGdW5jdGlvbjxi
b29sIChjb25zdCBDYQogICAgICAgICBjYXNlIFN0eWxlUnVsZVR5cGU6OkNoYXJzZXQ6CiAgICAg
ICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6S2V5ZnJhbWU6CiAgICAgICAgIGNhc2UgU3R5bGVSdWxl
VHlwZTo6U3VwcG9ydHM6CisgICAgICAgIGNhc2UgU3R5bGVSdWxlVHlwZTo6TGF5ZXI6CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NBdFJ1bGVJ
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmNwcAppbmRleCBl
NGI3ZDMzMGU2ZmQuLjA4MjU3MjM4YzhiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NBdFJ1bGVJRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NBdFJ1bGVJRC5jcHAKQEAgLTU4LDYgKzU4LDggQEAgQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQo
U3RyaW5nVmlldyBuYW1lKQogICAgICAgICByZXR1cm4gQ1NTQXRSdWxlQXBwbHk7CiAgICAgaWYg
KGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgImNvdW50ZXItc3R5bGUiKSkKICAgICAgICAg
cmV0dXJuIENTU0F0UnVsZUNvdW50ZXJTdHlsZTsKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShuYW1lLCAibGF5ZXIiKSkKKyAgICAgICAgcmV0dXJuIENTU0F0UnVsZUxheWVyOwogICAg
IHJldHVybiBDU1NBdFJ1bGVJbnZhbGlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NT
U0F0UnVsZUlELmgKaW5kZXggOTY4NTI2ODcwOGU4Li4zMzBmNmNiZTJlMjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTQXRSdWxlSUQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU0F0UnVsZUlELmgKQEAgLTQ4LDYgKzQ4LDcgQEAgZW51bSBDU1NB
dFJ1bGVJRCB7CiAgICAgQ1NTQXRSdWxlV2Via2l0S2V5ZnJhbWVzID0gMTAsCiAgICAgQ1NTQXRS
dWxlQXBwbHkgPSAxMSwKICAgICBDU1NBdFJ1bGVDb3VudGVyU3R5bGUgPSAxMiwKKyAgICBDU1NB
dFJ1bGVMYXllciA9IDEzLAogfTsKIAogQ1NTQXRSdWxlSUQgY3NzQXRSdWxlSUQoU3RyaW5nVmll
dyBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2Vy
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQu
Y3BwCmluZGV4IGYyOWU5YzdjYmZlZC4uMDBiOWRiODUxOTE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5jcHAKQEAgLTk1LDYgKzk1LDcgQEAgQ1NT
UGFyc2VyQ29udGV4dDo6Q1NTUGFyc2VyQ29udGV4dChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgc2hlZXRCYXMKICAgICAsIHVzZUxlZ2FjeUJhY2tncm91bmRTaXplU2hvcnRo
YW5kQmVoYXZpb3IgeyBkb2N1bWVudC5zZXR0aW5ncygpLnVzZUxlZ2FjeUJhY2tncm91bmRTaXpl
U2hvcnRoYW5kQmVoYXZpb3IoKSB9CiAgICAgLCBmb2N1c1Zpc2libGVFbmFibGVkIHsgZG9jdW1l
bnQuc2V0dGluZ3MoKS5mb2N1c1Zpc2libGVFbmFibGVkKCkgfQogICAgICwgaGFzUHNldWRvQ2xh
c3NFbmFibGVkIHsgZG9jdW1lbnQuc2V0dGluZ3MoKS5oYXNQc2V1ZG9DbGFzc0VuYWJsZWQoKSB9
CisgICAgLCBjYXNjYWRlTGF5ZXJzRW5hYmxlZCB7IGRvY3VtZW50LnNldHRpbmdzKCkuY3NzQ2Fz
Y2FkZUxheWVyc0VuYWJsZWQoKSB9CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAg
ICAsIGF0dGFjaG1lbnRFbmFibGVkIHsgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSB9CiAjZW5kaWYKQEAgLTEzOSw2ICsx
NDAsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgYSwgY29uc3Qg
Q1NTUGFyc2VyQ29udGV4dCYgYikKICAgICAgICAgJiYgYS51c2VMZWdhY3lCYWNrZ3JvdW5kU2l6
ZVNob3J0aGFuZEJlaGF2aW9yID09IGIudXNlTGVnYWN5QmFja2dyb3VuZFNpemVTaG9ydGhhbmRC
ZWhhdmlvcgogICAgICAgICAmJiBhLmZvY3VzVmlzaWJsZUVuYWJsZWQgPT0gYi5mb2N1c1Zpc2li
bGVFbmFibGVkCiAgICAgICAgICYmIGEuaGFzUHNldWRvQ2xhc3NFbmFibGVkID09IGIuaGFzUHNl
dWRvQ2xhc3NFbmFibGVkCisgICAgICAgICYmIGEuY2FzY2FkZUxheWVyc0VuYWJsZWQgPT0gYi5j
YXNjYWRlTGF5ZXJzRW5hYmxlZAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAg
ICAgICYmIGEuYXR0YWNobWVudEVuYWJsZWQgPT0gYi5hdHRhY2htZW50RW5hYmxlZAogI2VuZGlm
CkBAIC0xNzcsMTEgKzE3OSwxMiBAQCB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ1NT
UGFyc2VyQ29udGV4dCYgY29udGV4dCkKICAgICAgICAgfCBjb250ZXh0LnVzZUxlZ2FjeUJhY2tn
cm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgIDw8IDIwCiAgICAgICAgIHwgY29udGV4dC5mb2N1
c1Zpc2libGVFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICA8PCAyMQogICAgICAgICB8IGNv
bnRleHQuaGFzUHNldWRvQ2xhc3NFbmFibGVkICAgICAgICAgICAgICAgICAgICAgPDwgMjIKKyAg
ICAgICAgfCBjb250ZXh0LmNhc2NhZGVMYXllcnNFbmFibGVkICAgICAgICAgICAgICAgICAgICAg
IDw8IDIzCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICAgICAgfCBjb250ZXh0
LmF0dGFjaG1lbnRFbmFibGVkICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDIzCisgICAgICAg
IHwgY29udGV4dC5hdHRhY2htZW50RW5hYmxlZCAgICAgICAgICAgICAgICAgICAgICAgICA8PCAy
NAogI2VuZGlmCi0gICAgICAgIHwgY29udGV4dC5vdmVyZmxvd0NsaXBFbmFibGVkICAgICAgICAg
ICAgICAgICAgICAgICA8PCAyNAotICAgICAgICB8IGNvbnRleHQubW9kZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPDwgMjU7IC8vIFRoaXMgaXMgbXVsdGlwbGUgYml0cywg
c28ga2VlcCBpdCBsYXN0LgorICAgICAgICB8IGNvbnRleHQub3ZlcmZsb3dDbGlwRW5hYmxlZCAg
ICAgICAgICAgICAgICAgICAgICAgPDwgMjUKKyAgICAgICAgfCBjb250ZXh0Lm1vZGUgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDI2OyAvLyBUaGlzIGlzIG11bHRpcGxl
IGJpdHMsIHNvIGtlZXAgaXQgbGFzdC4KICAgICBhZGQoaGFzaGVyLCBjb250ZXh0LmJhc2VVUkws
IGNvbnRleHQuY2hhcnNldCwgYml0cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJDb250ZXh0LmgKaW5kZXggMTU0MDAwMDVjYjVjLi4yNTM1Zjg4Y2Y3MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyQ29udGV4dC5oCkBAIC04Miw2
ICs4Miw3IEBAIHN0cnVjdCBDU1NQYXJzZXJDb250ZXh0IHsKICAgICBib29sIHVzZUxlZ2FjeUJh
Y2tncm91bmRTaXplU2hvcnRoYW5kQmVoYXZpb3IgeyBmYWxzZSB9OwogICAgIGJvb2wgZm9jdXNW
aXNpYmxlRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBoYXNQc2V1ZG9DbGFzc0VuYWJsZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgY2FzY2FkZUxheWVyc0VuYWJsZWQgeyBmYWxzZSB9OwogCiAg
ICAgLy8gUnVudGltZUVuYWJsZWRGZWF0dXJlcy4KICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVN
RU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKaW5kZXgg
ZmQxYzRjNDVhMzQzLi4xYTlkN2U4NzdmZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUGFyc2VySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9DU1NQYXJzZXJJbXBsLmNwcApAQCAtNDIwLDYgKzQyMCw4IEBAIFJlZlB0cjxTdHlsZVJ1bGVC
YXNlPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lQXRSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UmIHJh
bmdlLCBBCiAgICAgICAgICAgICByZXR1cm4gY29uc3VtZUltcG9ydFJ1bGUocHJlbHVkZSk7CiAg
ICAgICAgIGlmIChhbGxvd2VkUnVsZXMgPD0gQWxsb3dOYW1lc3BhY2VSdWxlcyAmJiBpZCA9PSBD
U1NBdFJ1bGVOYW1lc3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gY29uc3VtZU5hbWVzcGFjZVJ1
bGUocHJlbHVkZSk7CisgICAgICAgIGlmIChhbGxvd2VkUnVsZXMgPD0gUmVndWxhclJ1bGVzICYm
IGlkID09IENTU0F0UnVsZUxheWVyKQorICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVMYXllclJ1
bGUocHJlbHVkZSwgeyB9KTsKICAgICAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0ICJh
cHBseSIKICAgICAgICAgLyppZiAoYWxsb3dlZFJ1bGVzID09IEFwcGx5UnVsZXMgJiYgaWQgPT0g
Q1NTQXRSdWxlQXBwbHkpIHsKICAgICAgICAgICAgIGNvbnN1bWVBcHBseVJ1bGUocHJlbHVkZSk7
CkBAIC00NTEsNiArNDUzLDggQEAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IENTU1BhcnNlckltcGw6
OmNvbnN1bWVBdFJ1bGUoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIEEKICAgICAgICAgcmV0
dXJuIGNvbnN1bWVQYWdlUnVsZShwcmVsdWRlLCBibG9jayk7CiAgICAgY2FzZSBDU1NBdFJ1bGVD
b3VudGVyU3R5bGU6CiAgICAgICAgIHJldHVybiBjb25zdW1lQ291bnRlclN0eWxlUnVsZShwcmVs
dWRlLCBibG9jayk7CisgICAgY2FzZSBDU1NBdFJ1bGVMYXllcjoKKyAgICAgICAgcmV0dXJuIGNv
bnN1bWVMYXllclJ1bGUocHJlbHVkZSwgYmxvY2spOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBudWxscHRyOyAvLyBQYXJzZSBlcnJvciwgdW5yZWNvZ25pc2VkIGF0LXJ1bGUgd2l0aCBi
bG9jawogICAgIH0KQEAgLTY3Niw2ICs2ODAsOTIgQEAgUmVmUHRyPFN0eWxlUnVsZUNvdW50ZXJT
dHlsZT4gQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUNvdW50ZXJTdHlsZVJ1bGUoQ1NTUGFyc2VyVG8K
ICAgICByZXR1cm4gU3R5bGVSdWxlQ291bnRlclN0eWxlOjpjcmVhdGUobmFtZSwgY3JlYXRlU3R5
bGVQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9jb250ZXh0Lm1vZGUpKTsKIH0KIAor
UmVmUHRyPFN0eWxlUnVsZUxheWVyPiBDU1NQYXJzZXJJbXBsOjpjb25zdW1lTGF5ZXJSdWxlKENT
U1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgc3RkOjpvcHRpb25hbDxDU1NQYXJzZXJUb2tlblJh
bmdlPiBibG9jaykKK3sKKyAgICBpZiAoIW1fY29udGV4dC5jYXNjYWRlTGF5ZXJzRW5hYmxlZCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHByZWx1ZGVDb3B5ID0gcHJlbHVk
ZTsKKworICAgIGF1dG8gY29uc3VtZU5hbWUgPSBbJl0oKSAtPiBzdGQ6Om9wdGlvbmFsPENhc2Nh
ZGVMYXllck5hbWU+IHsKKyAgICAgICAgQ2FzY2FkZUxheWVyTmFtZSBuYW1lOworICAgICAgICAv
LyBBbm9ueW1vdXMgY2FzZS4KKyAgICAgICAgaWYgKHByZWx1ZGUuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBuYW1lOworCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBh
dXRvIG5hbWVUb2tlbiA9IHByZWx1ZGUuY29uc3VtZSgpOworICAgICAgICAgICAgaWYgKG5hbWVU
b2tlbi50eXBlKCkgIT0gSWRlbnRUb2tlbikKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9Owor
CisgICAgICAgICAgICBuYW1lLmFwcGVuZChuYW1lVG9rZW4udmFsdWUoKS50b0F0b21TdHJpbmco
KSk7CisKKyAgICAgICAgICAgIGlmIChwcmVsdWRlLnBlZWsoKS50eXBlKCkgIT0gRGVsaW1pdGVy
VG9rZW4gfHwgcHJlbHVkZS5wZWVrKCkuZGVsaW1pdGVyKCkgIT0gJy4nKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgcHJlbHVkZS5jb25zdW1lKCk7CisgICAgICAgIH0KKwor
ICAgICAgICBwcmVsdWRlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIHJldHVybiBuYW1l
OworICAgIH07CisKKyAgICBpZiAoIWJsb2NrKSB7CisgICAgICAgIC8vIExpc3Qgc3ludGF4Lgor
ICAgICAgICBWZWN0b3I8Q2FzY2FkZUxheWVyTmFtZT4gbmFtZUxpc3Q7CisgICAgICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBjb25zdW1lTmFtZSgpOworICAgICAg
ICAgICAgaWYgKCFuYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAg
ICAgICAgbmFtZUxpc3QuYXBwZW5kKCpuYW1lKTsKKworICAgICAgICAgICAgaWYgKHByZWx1ZGUu
YXRFbmQoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgYXV0byBjb21t
YVRva2VuID0gcHJlbHVkZS5jb25zdW1lSW5jbHVkaW5nV2hpdGVzcGFjZSgpOworICAgICAgICAg
ICAgaWYgKGNvbW1hVG9rZW4udHlwZSgpICE9IENvbW1hVG9rZW4pCisgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikg
eworICAgICAgICAgICAgdW5zaWduZWQgZW5kT2Zmc2V0ID0gbV9vYnNlcnZlcldyYXBwZXItPmVu
ZE9mZnNldChwcmVsdWRlQ29weSk7CisgICAgICAgICAgICBtX29ic2VydmVyV3JhcHBlci0+b2Jz
ZXJ2ZXIoKS5zdGFydFJ1bGVIZWFkZXIoU3R5bGVSdWxlVHlwZTo6TGF5ZXIsIG1fb2JzZXJ2ZXJX
cmFwcGVyLT5zdGFydE9mZnNldChwcmVsdWRlQ29weSkpOworICAgICAgICAgICAgbV9vYnNlcnZl
cldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUhlYWRlcihlbmRPZmZzZXQpOworICAgICAgICAg
ICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxlQm9keShlbmRPZmZzZXQp
OworICAgICAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUJvZHko
ZW5kT2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6
Y3JlYXRlKFdURk1vdmUobmFtZUxpc3QpKTsKKyAgICB9CisKKyAgICBhdXRvIG5hbWUgPSBjb25z
dW1lTmFtZSgpOworICAgIGlmICghbmFtZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBObyBjb21tYSBzZXBhcmF0ZWQgbGlzdCB3aGVuIHVzaW5nIHRoZSBibG9jayBzeW50YXgu
CisgICAgaWYgKCFwcmVsdWRlLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgaWYgKG1fZGVmZXJyZWRQYXJzZXIpCisgICAgICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6
Y3JlYXRlKFdURk1vdmUoKm5hbWUpLCBtYWtlVW5pcXVlPERlZmVycmVkU3R5bGVHcm91cFJ1bGVM
aXN0PigqYmxvY2ssICptX2RlZmVycmVkUGFyc2VyKSk7CisKKyAgICBpZiAobV9vYnNlcnZlcldy
YXBwZXIpIHsKKyAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuc3RhcnRSdWxl
SGVhZGVyKFN0eWxlUnVsZVR5cGU6OkxheWVyLCBtX29ic2VydmVyV3JhcHBlci0+c3RhcnRPZmZz
ZXQocHJlbHVkZUNvcHkpKTsKKyAgICAgICAgbV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCku
ZW5kUnVsZUhlYWRlcihtX29ic2VydmVyV3JhcHBlci0+ZW5kT2Zmc2V0KHByZWx1ZGVDb3B5KSk7
CisgICAgICAgIG1fb2JzZXJ2ZXJXcmFwcGVyLT5vYnNlcnZlcigpLnN0YXJ0UnVsZUJvZHkobV9v
YnNlcnZlcldyYXBwZXItPnByZXZpb3VzVG9rZW5TdGFydE9mZnNldCgqYmxvY2spKTsKKyAgICB9
CisKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiBydWxlczsKKyAgICBjb25zdW1l
UnVsZUxpc3QoKmJsb2NrLCBSZWd1bGFyUnVsZUxpc3QsIFsmXShSZWZQdHI8U3R5bGVSdWxlQmFz
ZT4gcnVsZSkgeworICAgICAgICBydWxlcy5hcHBlbmQocnVsZSk7CisgICAgfSk7CisgICAgcnVs
ZXMuc2hyaW5rVG9GaXQoKTsKKworICAgIGlmIChtX29ic2VydmVyV3JhcHBlcikKKyAgICAgICAg
bV9vYnNlcnZlcldyYXBwZXItPm9ic2VydmVyKCkuZW5kUnVsZUJvZHkobV9vYnNlcnZlcldyYXBw
ZXItPmVuZE9mZnNldCgqYmxvY2spKTsKKworICAgIHJldHVybiBTdHlsZVJ1bGVMYXllcjo6Y3Jl
YXRlKFdURk1vdmUoKm5hbWUpLCBXVEZNb3ZlKHJ1bGVzKSk7Cit9CisKIC8vIEZJWE1FLU5FV1BB
UlNFUjogU3VwcG9ydCAiYXBwbHkiCiAvKnZvaWQgQ1NTUGFyc2VySW1wbDo6Y29uc3VtZUFwcGx5
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VySW1wbC5oCmluZGV4IDg5YWI5Y2UxMmM1OC4uMTZjNGMzZDE5ZjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuaApAQCAtNTMsNiArNTMs
NyBAQCBjbGFzcyBTdHlsZVJ1bGVDaGFyc2V0OwogY2xhc3MgU3R5bGVSdWxlRm9udEZhY2U7CiBj
bGFzcyBTdHlsZVJ1bGVJbXBvcnQ7CiBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CitjbGFzcyBT
dHlsZVJ1bGVMYXllcjsKIGNsYXNzIFN0eWxlUnVsZU1lZGlhOwogY2xhc3MgU3R5bGVSdWxlTmFt
ZXNwYWNlOwogY2xhc3MgU3R5bGVSdWxlUGFnZTsKQEAgLTEzNSw3ICsxMzYsOCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxTdHlsZVJ1bGVLZXlmcmFtZXM+IGNvbnN1bWVLZXlmcmFtZXNSdWxlKGJv
b2wgd2Via2l0UHJlZml4ZWQsIENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2Vy
VG9rZW5SYW5nZSBibG9jayk7CiAgICAgUmVmUHRyPFN0eWxlUnVsZVBhZ2U+IGNvbnN1bWVQYWdl
UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1ZGUsIENTU1BhcnNlclRva2VuUmFuZ2UgYmxv
Y2spOwogICAgIFJlZlB0cjxTdHlsZVJ1bGVDb3VudGVyU3R5bGU+IGNvbnN1bWVDb3VudGVyU3R5
bGVSdWxlKENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgQ1NTUGFyc2VyVG9rZW5SYW5nZSBi
bG9jayk7Ci0gICAgCisgICAgUmVmUHRyPFN0eWxlUnVsZUxheWVyPiBjb25zdW1lTGF5ZXJSdWxl
KENTU1BhcnNlclRva2VuUmFuZ2UgcHJlbHVkZSwgc3RkOjpvcHRpb25hbDxDU1NQYXJzZXJUb2tl
blJhbmdlPiBibG9jayk7CisKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQgImFwcGx5
IgogICAgIC8vIHZvaWQgY29uc3VtZUFwcGx5UnVsZShDU1NQYXJzZXJUb2tlblJhbmdlIHByZWx1
ZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxl
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
aW5kZXggYWI2Y2FhOTE0YTUxLi41YzA5NGVjMjE2ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAKQEAgLTExMSw5ICsxMTEsMTAgQEAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxjb25zdCBTdHlsZVJ1bGU+PiYgRWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1h
dGNoZWRSdWxlTGlzdCgpIGMKICAgICByZXR1cm4gbV9tYXRjaGVkUnVsZUxpc3Q7CiB9CiAKLWlu
bGluZSB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjphZGRNYXRjaGVkUnVsZShjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBTY29wZU9yZGluYWwgc3R5bGVT
Y29wZU9yZGluYWwpCitpbmxpbmUgdm9pZCBFbGVtZW50UnVsZUNvbGxlY3Rvcjo6YWRkTWF0Y2hl
ZFJ1bGUoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCB1bnNpZ25lZCBzcGVjaWZpY2l0eSwgY29u
c3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QpCiB7Ci0gICAgbV9tYXRjaGVkUnVsZXMuYXBw
ZW5kKHsgJnJ1bGVEYXRhLCBzcGVjaWZpY2l0eSwgc3R5bGVTY29wZU9yZGluYWwgfSk7CisgICAg
YXV0byBjYXNjYWRlTGF5ZXJPcmRlciA9IG1hdGNoUmVxdWVzdC5ydWxlU2V0ID8gbWF0Y2hSZXF1
ZXN0LnJ1bGVTZXQtPmNhc2NhZGVMYXllck9yZGVyRm9yKHJ1bGVEYXRhKSA6IDA7CisgICAgbV9t
YXRjaGVkUnVsZXMuYXBwZW5kKHsgJnJ1bGVEYXRhLCBzcGVjaWZpY2l0eSwgbWF0Y2hSZXF1ZXN0
LnN0eWxlU2NvcGVPcmRpbmFsLCBjYXNjYWRlTGF5ZXJPcmRlciB9KTsKIH0KIAogdm9pZCBFbGVt
ZW50UnVsZUNvbGxlY3Rvcjo6Y2xlYXJNYXRjaGVkUnVsZXMoKQpAQCAtNTM0LDcgKzUzNSw3IEBA
IHZvaWQgRWxlbWVudFJ1bGVDb2xsZWN0b3I6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChj
b25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlCiAKICAgICAgICAgdW5zaWduZWQgc3BlY2lmaWNpdHk7
CiAgICAgICAgIGlmIChydWxlTWF0Y2hlcyhydWxlRGF0YSwgc3BlY2lmaWNpdHkpKQotICAgICAg
ICAgICAgYWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEsIHNwZWNpZmljaXR5LCBtYXRjaFJlcXVlc3Qu
c3R5bGVTY29wZU9yZGluYWwpOworICAgICAgICAgICAgYWRkTWF0Y2hlZFJ1bGUocnVsZURhdGEs
IHNwZWNpZmljaXR5LCBtYXRjaFJlcXVlc3QpOwogICAgIH0KIH0KIApAQCAtNTQ0LDYgKzU0NSw5
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlUnVsZXMoTWF0Y2hlZFJ1bGUgcjEsIE1hdGNo
ZWRSdWxlIHIyKQogICAgIGlmIChyMS5zdHlsZVNjb3BlT3JkaW5hbCAhPSByMi5zdHlsZVNjb3Bl
T3JkaW5hbCkKICAgICAgICAgcmV0dXJuIHIxLnN0eWxlU2NvcGVPcmRpbmFsID4gcjIuc3R5bGVT
Y29wZU9yZGluYWw7CiAKKyAgICBpZiAocjEuY2FzY2FkZUxheWVyT3JkZXIgIT0gcjIuY2FzY2Fk
ZUxheWVyT3JkZXIpCisgICAgICAgIHJldHVybiByMS5jYXNjYWRlTGF5ZXJPcmRlciA8IHIyLmNh
c2NhZGVMYXllck9yZGVyOworCiAgICAgaWYgKHIxLnNwZWNpZmljaXR5ICE9IHIyLnNwZWNpZmlj
aXR5KQogICAgICAgICByZXR1cm4gcjEuc3BlY2lmaWNpdHkgPCByMi5zcGVjaWZpY2l0eTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1bGVDb2xsZWN0b3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmgKaW5kZXggMjM5MmUw
Yjc0NDIxLi45MDk0MDk2OGMwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0Vs
ZW1lbnRSdWxlQ29sbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvRWxlbWVudFJ1
bGVDb2xsZWN0b3IuaApAQCAtNjIsNiArNjIsNyBAQCBzdHJ1Y3QgTWF0Y2hlZFJ1bGUgewogICAg
IGNvbnN0IFJ1bGVEYXRhKiBydWxlRGF0YTsKICAgICB1bnNpZ25lZCBzcGVjaWZpY2l0eTsKICAg
ICBTY29wZU9yZGluYWwgc3R5bGVTY29wZU9yZGluYWw7CisgICAgdW5zaWduZWQgY2FzY2FkZUxh
eWVyT3JkZXI7CiB9OwogCiBzdHJ1Y3QgTWF0Y2hlZFByb3BlcnRpZXMgewpAQCAtMTQ2LDcgKzE0
Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVj
bGFyYXRpb25PcmlnaW4pOwogICAgIHZvaWQgdHJhbnNmZXJNYXRjaGVkUnVsZXMoRGVjbGFyYXRp
b25PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8U2NvcGVPcmRpbmFsPiBmb3JTY29wZSA9IHsgfSk7CiAK
LSAgICB2b2lkIGFkZE1hdGNoZWRSdWxlKGNvbnN0IFJ1bGVEYXRhJiwgdW5zaWduZWQgc3BlY2lm
aWNpdHksIFNjb3BlT3JkaW5hbCk7CisgICAgdm9pZCBhZGRNYXRjaGVkUnVsZShjb25zdCBSdWxl
RGF0YSYsIHVuc2lnbmVkIHNwZWNpZmljaXR5LCBjb25zdCBNYXRjaFJlcXVlc3QmKTsKICAgICB2
b2lkIGFkZE1hdGNoZWRQcm9wZXJ0aWVzKE1hdGNoZWRQcm9wZXJ0aWVzJiYsIERlY2xhcmF0aW9u
T3JpZ2luKTsKIAogICAgIGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2VsZW1lbnQuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVT
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5jcHAKaW5kZXggNGRlNzNhNjI4
MWRkLi44NDUyNzAyOTc5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVT
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuY3BwCkBAIC04Nyw2ICs4
NywxMyBAQCB2b2lkIFJ1bGVTZXQ6OmFkZFJ1bGUoY29uc3QgU3R5bGVSdWxlJiBydWxlLCB1bnNp
Z25lZCBzZWxlY3RvckluZGV4LCB1bnNpZ25lZCBzZQogewogICAgIFJ1bGVEYXRhIHJ1bGVEYXRh
KHJ1bGUsIHNlbGVjdG9ySW5kZXgsIHNlbGVjdG9yTGlzdEluZGV4LCBtX3J1bGVDb3VudCsrKTsK
IAorICAgIGlmIChtX2Nhc2NhZGVMYXllck9yZGVyKSB7CisgICAgICAgIGF1dG8gb2xkU2l6ZSA9
IG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5zaXplKCk7CisgICAgICAgIG1fY2FzY2Fk
ZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5ncm93KG1fcnVsZUNvdW50KTsKKyAgICAgICAgc3RkOjpm
aWxsKG1fY2FzY2FkZUxheWVyT3JkZXJGb3JQb3NpdGlvbi5iZWdpbigpICsgb2xkU2l6ZSwgbV9j
YXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLmVuZCgpLCAwKTsKKyAgICAgICAgbV9jYXNjYWRl
TGF5ZXJPcmRlckZvclBvc2l0aW9uLmxhc3QoKSA9IG1fY2FzY2FkZUxheWVyT3JkZXI7CisgICAg
fQorCiAgICAgbV9mZWF0dXJlcy5jb2xsZWN0RmVhdHVyZXMocnVsZURhdGEpOwogCiAgICAgaWYg
KG1lZGlhUXVlcnlDb2xsZWN0b3IpCkBAIC0yODcsNiArMjk0LDIyIEBAIHZvaWQgUnVsZVNldDo6
YWRkQ2hpbGRSdWxlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+PiYgcnVsZXMs
IE1lZGlhUXVlCiAgICAgICAgICAgICBtZWRpYVF1ZXJ5Q29sbGVjdG9yLnBvcCgmbWVkaWFSdWxl
Lm1lZGlhUXVlcmllcygpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CisgICAg
ICAgIGlmIChpczxTdHlsZVJ1bGVMYXllcj4oKnJ1bGUpKSB7CisgICAgICAgICAgICBhdXRvJiBs
YXllclJ1bGUgPSBkb3duY2FzdDxTdHlsZVJ1bGVMYXllcj4oKnJ1bGUpOworICAgICAgICAgICAg
aWYgKGxheWVyUnVsZS5pc0xpc3QoKSkgeworICAgICAgICAgICAgICAgIC8vIExpc3Qgc3ludGF4
IHRoYXQganVzdCByZWdpc3RlcnMgdGhlIGxheWVycy4KKyAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIG5hbWUgOiBsYXllclJ1bGUubmFtZUxpc3QoKSkgeworICAgICAgICAgICAgICAgICAgICBw
dXNoQ2FzY2FkZUxheWVyKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwb3BDYXNjYWRlTGF5
ZXIobmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQmxvY2sgc3ludGF4LgorICAgICAgICAgICAg
cHVzaENhc2NhZGVMYXllcihsYXllclJ1bGUubmFtZSgpKTsKKyAgICAgICAgICAgIGFkZENoaWxk
UnVsZXMobGF5ZXJSdWxlLmNoaWxkUnVsZXMoKSwgbWVkaWFRdWVyeUNvbGxlY3RvciwgcmVzb2x2
ZXIsIG1vZGUpOworICAgICAgICAgICAgcG9wQ2FzY2FkZUxheWVyKGxheWVyUnVsZS5uYW1lKCkp
OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KICAgICAgICAgaWYgKGlzPFN0eWxl
UnVsZUZvbnRGYWNlPigqcnVsZSkpIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGlzIGZvbnQgZmFj
ZSB0byBvdXIgc2V0LgogICAgICAgICAgICAgaWYgKHJlc29sdmVyKSB7CkBAIC00NjksNiArNDky
LDM0IEBAIFJ1bGVTZXQ6OkNvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIFJ1bGVTZXQ6OmV2YWx1
YXRlRHluYW1pY01lZGlhUXVlcnlSdWxlcyhjb25zCiAgICAgcmV0dXJuIGNvbGxlY3RlZENoYW5n
ZXM7CiB9CiAKK3ZvaWQgUnVsZVNldDo6cHVzaENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5
ZXJOYW1lJiBuYW1lKQoreworICAgIGF1dG8gbmFtZVJlc29sdmluZ0Fub255bW91cyA9IFsmXSB7
CisgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTWFrZSB1bmlx
dWUgbmFtZSBmb3IgYW4gYW5vbnltb3VzIGxheWVyLgorICAgICAgICAgICAgdW5zaWduZWQgbG9u
ZyBsb25nIHJhbmRvbSA9IHJhbmRvbU51bWJlcigpICogc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZCBsb25nIGxvbmc+OjptYXgoKTsKKyAgICAgICAgICAgIHJldHVybiBDYXNjYWRlTGF5ZXJO
YW1lIHsgImFub25fIl9zICsgU3RyaW5nOjpudW1iZXIocmFuZG9tKSB9OworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBuYW1lOworICAgIH07CisKKyAgICAvLyBGb3IgaGllcmFyY2hpY2FsIG5h
bWVzIHdlIHJlZ2lzdGVyIHRoZSBjb250YWluaW5nIGxheWVycyBpbmRpdmlkdWFsbHkgZmlyc3Qu
CisgICAgZm9yIChhdXRvJiBuYW1lU2VnbWVudCA6IG5hbWVSZXNvbHZpbmdBbm9ueW1vdXMoKSkg
eworICAgICAgICBtX3Jlc29sdmVkQ2FzY2FkZUxheWVyTmFtZS5hcHBlbmQobmFtZVNlZ21lbnQp
OworICAgICAgICBtX2Nhc2NhZGVMYXllck9yZGVyID0gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcC5l
bnN1cmUobV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUsIFsmXSB7CisgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCB3aGVuIGFkZGluZyBhIHN1YmxheWVyIHRvIGFuIGFs
cmVhZHkgcmVnaXN0ZXJlZCBsYXllciBhZnRlciBpdCBoYXMgZ2FpbmVkIHNpYmxpbmdzLgorICAg
ICAgICAgICAgcmV0dXJuIG1fY2FzY2FkZUxheWVyT3JkZXJNYXAuc2l6ZSgpICsgMTsKKyAgICAg
ICAgfSkuaXRlcmF0b3ItPnZhbHVlOworICAgIH0KK30KKwordm9pZCBSdWxlU2V0Ojpwb3BDYXNj
YWRlTGF5ZXIoY29uc3QgQ2FzY2FkZUxheWVyTmFtZSYgbmFtZSkKK3sKKyAgICBhdXRvIHNpemUg
PSBuYW1lLmlzRW1wdHkoKSA/IDEgOiBuYW1lLnNpemUoKTsKKyAgICBtX3Jlc29sdmVkQ2FzY2Fk
ZUxheWVyTmFtZS5zaHJpbmsobV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWUuc2l6ZSgpIC0gc2l6
ZSk7CisgICAgbV9jYXNjYWRlTGF5ZXJPcmRlciA9IG1fcmVzb2x2ZWRDYXNjYWRlTGF5ZXJOYW1l
LmlzRW1wdHkoKSA/IDAgOiBtX2Nhc2NhZGVMYXllck9yZGVyTWFwLmdldChtX3Jlc29sdmVkQ2Fz
Y2FkZUxheWVyTmFtZSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaHJpbmtNYXBWZWN0b3Jz
VG9GaXQoUnVsZVNldDo6QXRvbVJ1bGVNYXAmIG1hcCkKIHsKICAgICBmb3IgKGF1dG8mIHZlY3Rv
ciA6IG1hcC52YWx1ZXMoKSkKQEAgLTUwNSw2ICs1NTYsOCBAQCB2b2lkIFJ1bGVTZXQ6OnNocmlu
a1RvRml0KCkKICAgICBtX2ZlYXR1cmVzLnNocmlua1RvRml0KCk7CiAKICAgICBzaHJpbmtEeW5h
bWljUnVsZXMobV9keW5hbWljTWVkaWFRdWVyeVJ1bGVzKTsKKworICAgIG1fY2FzY2FkZUxheWVy
T3JkZXJGb3JQb3NpdGlvbi5zaHJpbmtUb0ZpdCgpOwogfQogCiBSdWxlU2V0OjpNZWRpYVF1ZXJ5
Q29sbGVjdG9yOjp+TWVkaWFRdWVyeUNvbGxlY3RvcigpID0gZGVmYXVsdDsKQEAgLTU2OSw2ICs2
MjIsNSBAQCB2b2lkIFJ1bGVTZXQ6Ok1lZGlhUXVlcnlDb2xsZWN0b3I6OmFkZFJ1bGVJZk5lZWRl
ZChjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgY29udGV4dC5ydWxlRmVhdHVyZXMuYXBw
ZW5kKHsgcnVsZURhdGEgfSk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaAppbmRleCA3YWI1ZjdiNDBjNTMuLmYx
MDM5M2ZjNmFiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZVNldC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVTZXQuaApAQCAtMTQ1LDYgKzE0NSw4IEBAIHB1
YmxpYzoKICAgICBib29sIGhhc1NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcygpIGNvbnN0IHsgcmV0
dXJuICFtX3NoYWRvd1BzZXVkb0VsZW1lbnRSdWxlcy5pc0VtcHR5KCk7IH0KICAgICBib29sIGhh
c0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUoKSBjb25zdCB7IHJldHVy
biBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWU7IH0KIAorICAg
IHVuc2lnbmVkIGNhc2NhZGVMYXllck9yZGVyRm9yKGNvbnN0IFJ1bGVEYXRhJikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgUnVsZVNldCgpOwogCkBAIC0xNTgsNiArMTYwLDkgQEAgcHJpdmF0ZToK
ICAgICB9OwogICAgIENvbGxlY3RlZE1lZGlhUXVlcnlDaGFuZ2VzIGV2YWx1YXRlRHluYW1pY01l
ZGlhUXVlcnlSdWxlcyhjb25zdCBNZWRpYVF1ZXJ5RXZhbHVhdG9yJiwgc2l6ZV90IHN0YXJ0SW5k
ZXgpOwogCisgICAgdm9pZCBwdXNoQ2FzY2FkZUxheWVyKGNvbnN0IENhc2NhZGVMYXllck5hbWUm
KTsKKyAgICB2b2lkIHBvcENhc2NhZGVMYXllcihjb25zdCBDYXNjYWRlTGF5ZXJOYW1lJik7CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdGlvbj4gdm9pZCB0cmF2ZXJzZVJ1bGVEYXRhcyhG
dW5jdGlvbiYmKTsKIAogICAgIEF0b21SdWxlTWFwIG1faWRSdWxlczsKQEAgLTE3OSw5ICsxODQs
MTggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8RHluYW1pY01lZGlhUXVlcnlSdWxlcz4gbV9keW5h
bWljTWVkaWFRdWVyeVJ1bGVzOwogICAgIEhhc2hNYXA8VmVjdG9yPHNpemVfdD4sIFJlZjxjb25z
dCBSdWxlU2V0Pj4gbV9tZWRpYVF1ZXJ5SW52YWxpZGF0aW9uUnVsZVNldENhY2hlOwogICAgIHVu
c2lnbmVkIG1fcnVsZUNvdW50IHsgMCB9OworCisgICAgSGFzaE1hcDxDYXNjYWRlTGF5ZXJOYW1l
LCB1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlck1hcDsKKyAgICAvLyBUaGlzIGlzIGEgc2lk
ZSB2ZWN0b3IgdG8gaG9sZCBsYXllciBvcmRlciB3aXRob3V0IGJsb2F0aW5nIFJ1bGVEYXRhLgor
ICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uOworCiAg
ICAgYm9vbCBtX2hhc0hvc3RQc2V1ZG9DbGFzc1J1bGVzTWF0Y2hpbmdJblNoYWRvd1RyZWUgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9hdXRvU2hyaW5rVG9GaXRFbmFibGVkIHsgdHJ1ZSB9OwogICAg
IGJvb2wgbV9oYXNWaWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcmllcyB7IGZhbHNlIH07CisKKyAg
ICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIGluIHN0YWNrLgorICAgIENhc2NhZGVMYXllck5h
bWUgbV9yZXNvbHZlZENhc2NhZGVMYXllck5hbWU7CisgICAgdW5zaWduZWQgbV9jYXNjYWRlTGF5
ZXJPcmRlciB7IDAgfTsKIH07CiAKIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxlRGF0YVZlY3Rv
ciogUnVsZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5LCBib29sIGlzSFRNTE5h
bWUpIGNvbnN0CkBAIC0xOTQsNSArMjA4LDEzIEBAIGlubGluZSBjb25zdCBSdWxlU2V0OjpSdWxl
RGF0YVZlY3RvciogUnVsZVNldDo6dGFnUnVsZXMoY29uc3QgQXRvbVN0cmluZyYga2V5LCBiCiAg
ICAgcmV0dXJuIHRhZ1J1bGVzLT5nZXQoa2V5KTsKIH0KIAoraW5saW5lIHVuc2lnbmVkIFJ1bGVT
ZXQ6OmNhc2NhZGVMYXllck9yZGVyRm9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkgY29uc3QK
K3sKKyAgICBpZiAobV9jYXNjYWRlTGF5ZXJPcmRlckZvclBvc2l0aW9uLnNpemUoKSA+IHJ1bGVE
YXRhLnBvc2l0aW9uKCkpCisgICAgICAgIHJldHVybiBtX2Nhc2NhZGVMYXllck9yZGVyRm9yUG9z
aXRpb25bcnVsZURhdGEucG9zaXRpb24oKV07CisgICAgcmV0dXJuIDA7Cit9CisKKwogfSAvLyBu
YW1lc3BhY2UgU3R5bGUKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>