<?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>269072</bug_id>
          
          <creation_ts>2024-02-09 09:16:26 -0800</creation_ts>
          <short_desc>AX: WebKit fails to emit newlines between container nodes when serving AXStringForTextMarkerRange off the main-thread</short_desc>
          <delta_ts>2024-02-14 14:41:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tyler Wilcock">tyler_w</reporter>
          <assigned_to name="Tyler Wilcock">tyler_w</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jhoffman23</cc>
    
    <cc>mifenton</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2012208</commentid>
    <comment_count>0</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-02-09 09:16:26 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2012209</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-02-09 09:16:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/122648346&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2012237</commentid>
    <comment_count>2</comment_count>
      <attachid>469795</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-02-09 10:42:01 -0800</bug_when>
    <thetext>Created attachment 469795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2012246</commentid>
    <comment_count>3</comment_count>
      <attachid>469797</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-02-09 10:50:15 -0800</bug_when>
    <thetext>Created attachment 469797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2012262</commentid>
    <comment_count>4</comment_count>
      <attachid>469797</attachid>
    <who name="Joshua Hoffman">jhoffman23</who>
    <bug_when>2024-02-09 11:54:17 -0800</bug_when>
    <thetext>Comment on attachment 469797
Patch

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

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:414
&gt; +    if (isForward) {
&gt; +        for (size_t i = startIndex; i &gt; endIndex; i--)
&gt; +            append(children.at(i - 1));

This feels counter-intuitive to me (or may need a comment explaining)—why do we traverse backward in the children when appending the children when isForward == true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013640</commentid>
    <comment_count>5</comment_count>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2024-02-14 13:29:10 -0800</bug_when>
    <thetext>(In reply to Joshua Hoffman from comment #4)
&gt; Comment on attachment 469797 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=469797&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:414
&gt; &gt; +    if (isForward) {
&gt; &gt; +        for (size_t i = startIndex; i &gt; endIndex; i--)
&gt; &gt; +            append(children.at(i - 1));
&gt; 
&gt; This feels counter-intuitive to me (or may need a comment explaining)—why do
&gt; we traverse backward in the children when appending the children when
&gt; isForward == true?
This is a good question. I think traversing forward would be fine, but this bit is copied exactly from AccessibilityObject::appendChildrenToArray, so I think it makes sense to keep consistent. These functions differ for now, but once all of this text-marker logic is not specific to AXIsolatedObject, we may want to share the original AccessibilityObject::appendChildrenToArray implementation, so want to keep similarities where we can to make that more straightforward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2013669</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-02-14 14:41:27 -0800</bug_when>
    <thetext>Committed 274664@main (53c3857f5cea): &lt;https://commits.webkit.org/274664@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 469797.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469795</attachid>
            <date>2024-02-09 10:42:01 -0800</date>
            <delta_ts>2024-02-09 10:54:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-269072-20240209104200.patch</filename>
            <type>text/plain</type>
            <size>28423</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBkYjRiM2U5MDBiNDc4ZGVjYmM3YWU5YzNiZGIzZDZiYjVmMjU4NzBmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCA5IEZlYiAyMDI0IDEwOjMxOjAzIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFdl
YktpdCBmYWlscyB0byBlbWl0IG5ld2xpbmVzIGJldHdlZW4gY29udGFpbmVyIG5vZGVzCiB3aGVu
IHNlcnZpbmcgQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Ugb2ZmIHRoZSBtYWluLXRocmVhZAog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTA3MiByZGFyOi8vcHJv
YmxlbS8xMjI2NDgzNDYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKUHJpb3IgdG8gdGhp
cyBwYXRjaCwgQVhUZXh0TWFya2VyOjpmaW5kT2JqZWN0V2l0aFJ1bnMgd2FzIGJhc2ljYWxseSBq
dXN0IGEgd3JhcHBlciBvdmVyIGBmaW5kTWF0Y2hpbmdPYmplY3RzYC4KSXQgaGFzIGJlY29tZSBj
bGVhciB0aGF0IHRoZSB0cmF2ZXJzYWwgd2UgbmVlZCB0byBkbyBmb3IgdGV4dCBtYXJrZXJzIHJl
cXVpcmVzIGxvdHMgb2YgY3VzdG9tIGhvb2tzIGFuZCBiZWhhdmlvciwKYW5kIGl0IGRvZXNuJ3Qg
bWFrZSBzZW5zZSB0byBtdWRkeSBgZmluZE1hdGNoaW5nT2JqZWN0c2AgZm9yIHRoaXMgc2luZ2xl
IHVzZWNhc2UsIHNvIHRoaXMgcGF0Y2ggdGFrZXMgd2hhdCB3ZSBuZWVkCmZyb20gYGZpbmRNYXRj
aGluZ09iamVjdHNgIGFuZCBtb3ZlcyBpdCBkaXJlY3RseSBpbnRvIGZpbmRPYmplY3RXaXRoUnVu
cy4KClRoaXMgYWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgYHN0b3BBdElEYCBsb2dpYyBmcm9tIGBm
aW5kTWF0Y2hpbmdPYmplY3RzYC4gSXQgYWxzbyBhbGxvd3MgdG8gYWRkIGFuICJleGl0IG9iamVj
dCIKaG9vayB0byB0aGUgdHJhdmVyc2FsLCB3aGljaCB0aGlzIHBhdGNoIHVzZXMgdG8gZW1pdCBu
ZXdsaW5lcyB3aGVuIGV4aXRpbmcgYSBub2RlIHRoYXQgYHNob3VsZEVtaXROZXdsaW5lc0JlZm9y
ZUFuZEFmdGVyTm9kZWAuClRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIFRleHRJdGVy
YXRvcjogZGl2ZSBpbnRvIHRleHQtbGVhZiBub2RlcywgYW5kIGVtaXQgbmV3bGluZXMgZm9yIHRo
ZWlyIGNvbnRhaW5lcnMgb24gZXhpdC4KClByaW9yIHRvIHRoaXMgcGF0Y2gsIHdlIG5ldmVyIGVt
aXR0ZWQgYW55IG5ld2xpbmUuIE5vdyB3ZSBkbywgYnJpbmdpbmcgdXMgY2xvc2VyIHRvIHBhc3Np
bmcgc2V2ZXJhbCB0ZXN0cyBpbgpMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10
ZXh0LWFwaXMuIFRoaXMgcGF0Y2ggYWxzbyBkb2N1bWVudHMgaW4gZGV0YWlsIHdoeSBzZXZlcmFs
IG9mIHRoZXNlIHRlc3RzIGNvdGludWUKdG8gZmFpbCwgYW5kIGFkZHMgYSBuZXcgdGVzdCB0aGF0
IGV4ZXJjaXNlcyBpbnRlcmVzdGluZyBlZGdlY2FzZXMgd2hlbiB3ZSBlbWl0IG5ld2xpbmVzIGZv
ciBjb250YWluZXJzOiB0ZXh0LW1hcmtlci1zdHJpbmctZW1wdHktcGFyYWdyYXBocy5odG1sCgoq
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy9kaXNwbGF5LWNv
bnRlbnRzLWVuZC10ZXh0LW1hcmtlci5odG1sOgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1yYW5nZS13aXRoLXVub3JkZXJlZC1tYXJr
ZXJzLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlz
L3RleHQtbWFya2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFy
a2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZm9yLWRv
Y3VtZW50LXJhbmdlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQt
dGV4dC1hcGlzL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVyYXRvcjw8KToKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHA6CihXZWJDb3JlOjphcHBl
bmRDaGlsZHJlbik6CihXZWJDb3JlOjpmaW5kT2JqZWN0V2l0aFJ1bnMpOgooV2ViQ29yZTo6QVhU
ZXh0TWFya2VyUmFuZ2U6OnRvU3RyaW5nIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUgY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0
Y2hBdEluZGV4KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6OmZpbmRNYXRjaGluZ09iamVjdHMp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KFdlYkNvcmU6OnNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSk6CiogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuY3BwICAgICB8ICAgNSAtCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxMDggKysrKysrKysrKysrKysrLS0tCiAuLi4vYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgfCAgIDcgKysKIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggICB8ICAgNCArCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDkgLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmggICAgICAgICB8ICAgMiArCiAuLi4vZGlzcGxheS1jb250ZW50cy1l
bmQtdGV4dC1tYXJrZXIuaHRtbCAgICAgfCAgIDQgKy0KIC4uLnQtbWFya2VyLXJhbmdlLXdpdGgt
dW5vcmRlcmVkLW1hcmtlcnMuaHRtbCB8ICAgNiArLQogLi4uYXJrZXItc3RyaW5nLWVtcHR5LXBh
cmFncmFwaHMtZXhwZWN0ZWQudHh0IHwgIDE0ICsrKwogLi4uL3RleHQtbWFya2VyLXN0cmluZy1l
bXB0eS1wYXJhZ3JhcGhzLmh0bWwgIHwgIDQ3ICsrKysrKysrCiAuLi50ZXh0LW1hcmtlci1zdHJp
bmctZm9yLWRvY3VtZW50LXJhbmdlLmh0bWwgfCAgIDcgKysKIC4uLi90ZXh0LW1hcmtlci13aXRo
LXVzZXItc2VsZWN0LW5vbmUuaHRtbCAgICB8ICAgMyArLQogMTggZmlsZXMgY2hhbmdlZCwgMTg5
IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJp
bmctZW1wdHktcGFyYWdyYXBocy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3Ry
aW5nLWVtcHR5LXBhcmFncmFwaHMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oCmluZGV4IGNiODkzYTY4ZWVkOS4uNDQxMDg0ZWNiODA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKQEAgLTU4MSw5ICs1ODEs
NiBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgewogICAgIEZvbnRDb2xvckNo
YW5nZSwKICAgICBGcmFtZSwKICAgICBHcmFwaGljLAotI2lmIEVOQUJMRShBWF9USFJFQURfVEVY
VF9BUElTKQotICAgIEhhc1RleHRSdW5zLAotI2VuZGlmCiAgICAgSGVhZGluZ0xldmVsMSwKICAg
ICBIZWFkaW5nTGV2ZWwyLAogICAgIEhlYWRpbmdMZXZlbDMsCkBAIC02MTksNyArNjE2LDYgQEAg
dXNpbmcgQVhFZGl0aW5nU3R5bGVWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBi
b29sLCBpbnQ+Owogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CiAgICAgQVhD
b3JlT2JqZWN0KiBhbmNob3JPYmplY3QgeyBudWxscHRyIH07CiAgICAgQVhDb3JlT2JqZWN0KiBz
dGFydE9iamVjdDsKLSAgICBBWElEIHN0b3BBdElEOwogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5PiBzZWFyY2hLZXlzOwogICAgIFN0cmluZyBzZWFyY2hUZXh0OwpAQCAtMTExOSw2ICsxMTE1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHRDb250
ZW50KCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgIHZp
cnR1YWwgYm9vbCBoYXNUZXh0UnVucygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW1p
dE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2RlKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICAv
LyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmlsaXR5IHRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCmluZGV4IGJlNmVkOGVjYzM2Zi4uYjZlMzA2
Y2RkZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAt
Mjk1LDExICsyOTUsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVh
bSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkpCiAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpHcmFwaGljOgogICAgICAgICBzdHJlYW0gPDwgIkdyYXBoaWMiOwogICAg
ICAgICBicmVhazsKLSNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhhc1RleHRSdW5zOgotICAgICAgICBzdHJlYW0gPDwgIkhh
c1RleHRSdW5zIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDE6CiAgICAgICAgIHN0cmVhbSA8PCAiSGVhZGluZ0xl
dmVsMSI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuY3BwCmluZGV4IGU0YjcxZDllNzJhNi4uYTQ2ZDgwYTU5NTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0zODUsMjcg
KzM4NSw5NiBAQCBib29sIEFYVGV4dE1hcmtlclJhbmdlOjppc0NvbmZpbmVkVG8oQVhJRCBvYmpl
Y3RJRCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQorc3RhdGlj
IHZvaWQgYXBwZW5kQ2hpbGRyZW4oUmVmUHRyPEFYQ29yZU9iamVjdD4gb2JqZWN0LCBib29sIGlz
Rm9yd2FyZCwgUmVmUHRyPEFYQ29yZU9iamVjdD4gc3RhcnRPYmplY3QsIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQoreworICAgIC8vIEEg
dGFibGUncyBjaGlsZHJlbiBpbmNsdWRlcyBlbGVtZW50cyB3aG9zZSBvd24gY2hpbGRyZW4gYXJl
IGFsc28gdGhlIHRhYmxlJ3MgY2hpbGRyZW4gKGR1ZSB0byB0aGUgd2F5IHRoZSBNYWMgZXhwb3Nl
cyB0YWJsZXMpLgorICAgIC8vIFRoZSByb3dzIGZyb20gdGhlIHRhYmxlIHNob3VsZCBiZSBxdWVy
aWVkLCBzaW5jZSB0aG9zZSBhcmUgZGlyZWN0IGRlc2NlbmRhbnRzIG9mIHRoZSB0YWJsZSwgYW5k
IHRoZXkgY29udGFpbiBjb250ZW50LgorICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gb2JqZWN0
LT5pc1RhYmxlKCkgJiYgb2JqZWN0LT5pc0V4cG9zYWJsZSgpID8gb2JqZWN0LT5yb3dzKCkgOiBv
YmplY3QtPmNoaWxkcmVuKCk7CisKKyAgICBzaXplX3QgY2hpbGRyZW5TaXplID0gY2hpbGRyZW4u
c2l6ZSgpOworCisgICAgc2l6ZV90IHN0YXJ0SW5kZXggPSBpc0ZvcndhcmQgPyBjaGlsZHJlblNp
emUgOiAwOworICAgIHNpemVfdCBlbmRJbmRleCA9IGlzRm9yd2FyZCA/IDAgOiBjaGlsZHJlblNp
emU7CisgICAgc2l6ZV90IHNlYXJjaFBvc2l0aW9uID0gc3RhcnRPYmplY3QgPyBjaGlsZHJlbi5m
aW5kKHN0YXJ0T2JqZWN0KSA6IG5vdEZvdW5kOworCisgICAgaWYgKHNlYXJjaFBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc0ZvcndhcmQpCisgICAgICAgICAgICBlbmRJbmRl
eCA9IHNlYXJjaFBvc2l0aW9uICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5kSW5k
ZXggPSBzZWFyY2hQb3NpdGlvbjsKKyAgICB9CisKKyAgICBhdXRvIGFwcGVuZCA9IFsmdmVjdG9y
XSAoUmVmUHRyPEFYQ29yZU9iamVjdD4gb2JqZWN0KSB7CisgICAgICAgIGlmIChvYmplY3QpCisg
ICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgfTsKKworICAg
IGlmIChpc0ZvcndhcmQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkg
PiBlbmRJbmRleDsgaS0tKQorICAgICAgICAgICAgYXBwZW5kKGNoaWxkcmVuLmF0KGkgLSAxKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBl
bmRJbmRleDsgaSsrKQorICAgICAgICAgICAgYXBwZW5kKGNoaWxkcmVuLmF0KGkpKTsKKyAgICB9
Cit9CisKIC8vIEZpbmRzIHRoZSBuZXh0IG9iamVjdCB3aXRoIHRleHQgcnVucyBpbiB0aGUgZ2l2
ZW4gZGlyZWN0aW9uLCBvcHRpb25hbGx5IHN0b3BwaW5nIGF0IHRoZSBnaXZlbiBJRCBhbmQgcmV0
dXJuaW5nIHN0ZDo6bnVsbG9wdC4KLXN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gZmlu
ZE9iamVjdFdpdGhSdW5zKEFYSXNvbGF0ZWRPYmplY3QmIHN0YXJ0LCBBWERpcmVjdGlvbiBkaXJl
Y3Rpb24sIHN0ZDo6b3B0aW9uYWw8QVhJRD4gc3RvcEF0SUQgPSBzdGQ6Om51bGxvcHQpCisvLyBZ
b3UgbWF5IG9wdGlvbmFsbHkgcGFzcyBhIGxhbWJkYSB0aGF0IHJ1bnMgZWFjaCB0aW1lIGFuIG9i
amVjdCBpcyAiZXhpdGVkIiBpbiB0aGUgdHJhdmVyc2FsLCBpLmUuIHdlIHByb2Nlc3NlZCBpdHMg
Y2hpbGRyZW4KKy8vIChpZiBwcmVzZW50KSBhbmQgYXJlIG1vdmluZyBiZXlvbmQgaXQuIFRoaXMg
Y2FuIGhlbHAgbWlycm9yIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUgaW4gdGhlIGNvbnRleHRzIHdo
ZXJlIHRoYXQncyBuZWNlc3NhcnkuCitzdGF0aWMgQVhJc29sYXRlZE9iamVjdCogZmluZE9iamVj
dFdpdGhSdW5zKEFYSXNvbGF0ZWRPYmplY3QmIHN0YXJ0LCBBWERpcmVjdGlvbiBkaXJlY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8QVhJRD4gc3RvcEF0SUQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZChBWElzb2xhdGVkT2JqZWN0Jik+JiBleGl0T2JqZWN0ID0gW10gKEFYSXNv
bGF0ZWRPYmplY3QmKSB7IH0pCiB7CisgICAgUmVmUHRyIHRyZWUgPSBzdGQ6OmdldDxSZWZQdHI8
QVhJc29sYXRlZFRyZWU+PihheFRyZWVGb3JJRChzdGFydC50cmVlSUQoKSkpOworICAgIC8vIGBy
b290YCBpcyBhIHN0YW5kLWluIGZvciBgYW5jaG9yT2JqZWN0YCBpbiBmaW5kTWF0Y2hpbmdPYmpl
Y3RzLCB3aGljaCB0aGlzIGZ1bmN0aW9uIHBhcnRpYWxseSBjb3BpZXMgZnJvbS4KKyAgICBSZWZQ
dHIgcm9vdCA9IHRyZWUgPyB0cmVlLT5yb290Tm9kZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXJv
b3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gRklYTUU6IGFyaWEtb3ducyBi
cmVha3MgdGhpcyBmdW5jdGlvbiwgYXMgYXJpYS1vd25zIGNhdXNlcyB0aGUgQVggdHJlZSB0byBi
ZSBjaGFuZ2VkLCBhZmZlY3RpbmcKICAgICAvLyBvdXIgc2VhcmNoIGJlbG93LCBidXQgaXQgZG9l
c24ndCBhY3R1YWxseSBjaGFuZ2UgdGV4dCBwb3NpdGlvbiBvbiB0aGUgcGFnZS4gU28gd2UgbmVl
ZCB0byBpZ25vcmUKICAgICAvLyBhcmlhLW93bnMgdHJlZSBjaGFuZ2VzIGhlcmUgaW4gb3JkZXIg
dG8gYmVoYXZlIGNvcnJlY3RseS4gV2UgYWxzbyBwcm9iYWJseSBuZWVkIHRvIGRvIHNvbWV0aGlu
ZwogICAgIC8vIGFib3V0IHRleHQgd2l0aGluIGFyaWEtaGlkZGVuIGNvbnRhaW5lcnMsIHdoaWNo
IGFmZmVjdHMgdGhlIEFYIHRyZWUuCiAKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEg
Y3JpdGVyaWEgeyAmc3RhcnQsIGRpcmVjdGlvbiA9PSBBWERpcmVjdGlvbjo6TmV4dCA/IEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uOjpQcmV2aW91cywgZW1wdHlTdHJpbmcoKSwgMSwgZmFsc2UsIGZhbHNlIH07Ci0gICAgUmVm
UHRyIHRyZWUgPSBzdGQ6OmdldDxSZWZQdHI8QVhJc29sYXRlZFRyZWU+PihheFRyZWVGb3JJRChz
dGFydC50cmVlSUQoKSkpOwotICAgIFJlZlB0ciByb290ID0gdHJlZSA/IHRyZWUtPnJvb3ROb2Rl
KCkgOiBudWxscHRyOwotICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgY3JpdGVyaWEuYW5jaG9yT2JqZWN0ID0gcm9vdC5nZXQoKTsKLSAgICBjcml0ZXJpYS5zZWFy
Y2hLZXlzID0geyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIYXNUZXh0UnVucyB9OwotICAgIGlm
IChzdG9wQXRJRCkKLSAgICAgICAgY3JpdGVyaWEuc3RvcEF0SUQgPSAqc3RvcEF0SUQ7CisgICAg
Ly8gVGhpcyBzZWFyY2ggYWxnb3JpdGhtIG9ubHkgc2VhcmNoZXMgdGhlIGVsZW1lbnRzIGJlZm9y
ZS9hZnRlciB0aGUgc3RhcnRpbmcgb2JqZWN0LgorICAgIC8vIEl0IGRvZXMgdGhpcyBieSBzdGVw
cGluZyB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBhdCBlYWNoIGxldmVsIGRvaW5nIGEgREZTLgor
ICAgIFJlZlB0ciBzdGFydE9iamVjdCA9ICZzdGFydDsKKworICAgIGJvb2wgaXNGb3J3YXJkID0g
ZGlyZWN0aW9uID09IEFYRGlyZWN0aW9uOjpOZXh0OworICAgIC8vIFRoZSBmaXJzdCBpdGVyYXRp
b24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGlsZHJlbiBvZiB0aGUgc3Rh
cnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCisgICAgLy8gaXRlcmF0aW5nIGJh
Y2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQgbm90IGJlIGNvbnNpZGVy
ZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2UgYW4KKyAgICAvLyBleGNl
cHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmllZCBiZWNhdXNlIHdlIHdhbnQg
dG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFyY2ggZGlyZWN0aW9uLgorICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IHByZXZpb3VzT2JqZWN0OworICAgIGlmICghaXNGb3J3YXJk
ICYmIHN0YXJ0T2JqZWN0ICE9IHJvb3QuZ2V0KCkpIHsKKyAgICAgICAgcHJldmlvdXNPYmplY3Qg
PSBzdGFydE9iamVjdDsKKyAgICAgICAgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgfQorCisgICAgZm9yIChhdXRvKiBzdG9wT2JqZWN0ID0g
cm9vdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0
ICE9IHN0b3BPYmplY3Q7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpKSB7CisgICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9i
ZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBj
aGVjayBlbGVtZW50cyB0aGF0IGFyZQorICAgICAgICAvLyBhbHJlYWR5IGJlaGluZC9haGVhZCBv
ZiBzdGFydCBlbGVtZW50LgorICAgICAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWFyY2hTdGFjazsKKyAgICAgICAgYXBwZW5kQ2hpbGRyZW4oc3RhcnRPYmpl
Y3QsIGlzRm9yd2FyZCwgcHJldmlvdXNPYmplY3QsIHNlYXJjaFN0YWNrKTsKIAotICAgIEFYQ29y
ZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7Ci0gICAgQWNjZXNz
aWJpbGl0eTo6ZmluZE1hdGNoaW5nT2JqZWN0cyhjcml0ZXJpYSwgcmVzdWx0cyk7Ci0gICAgcmV0
dXJuIHJlc3VsdHMuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGR5bmFtaWNEb3duY2FzdDxBWElzb2xh
dGVkT2JqZWN0PihyZXN1bHRzWzBdKTsKKyAgICAgICAgLy8gVGhpcyBub3cgZG9lcyBhIERGUyBh
dCB0aGUgY3VycmVudCBsZXZlbCBvZiB0aGUgcGFyZW50LgorICAgICAgICB3aGlsZSAoIXNlYXJj
aFN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyIHNlYXJjaE9iamVjdCA9IHNl
YXJjaFN0YWNrLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIGlmIChzdG9wQXRJRCAmJiBzdG9w
QXRJRC0+aXNWYWxpZCgpICYmIHNlYXJjaE9iamVjdC0+b2JqZWN0SUQoKSA9PSAqc3RvcEF0SUQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIGlmIChzZWFy
Y2hPYmplY3QtPmhhc1RleHRSdW5zKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNE
b3duY2FzdDxBWElzb2xhdGVkT2JqZWN0PihzZWFyY2hPYmplY3QuZ2V0KCkpOworCisgICAgICAg
ICAgICBhcHBlbmRDaGlsZHJlbihzZWFyY2hPYmplY3QsIGlzRm9yd2FyZCwgbnVsbHB0ciwgc2Vh
cmNoU3RhY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiBtb3ZpbmcgYmFja3dhcmRz
LCB0aGUgcGFyZW50IG9iamVjdCBuZWVkcyB0byBiZSBjaGVja2VkLCBiZWNhdXNlIHRlY2huaWNh
bGx5IGl0J3MgImJlZm9yZSIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQuCisgICAgICAgIGlmICghaXNG
b3J3YXJkICYmIHN0YXJ0T2JqZWN0ICE9IHJvb3QuZ2V0KCkgJiYgc3RhcnRPYmplY3QtPmhhc1Rl
eHRSdW5zKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhcnRPYmplY3QuZ2V0KCk7CisKKyAgICAg
ICAgZXhpdE9iamVjdCgqc3RhcnRPYmplY3QpOworICAgICAgICBwcmV2aW91c09iamVjdCA9IHN0
YXJ0T2JqZWN0OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdW5zaWduZWQgQVhU
ZXh0TWFya2VyOjpvZmZzZXRGcm9tUm9vdCgpIGNvbnN0CkBAIC00OTUsMTYgKzU2NCwyNSBAQCBT
dHJpbmcgQVhUZXh0TWFya2VyUmFuZ2U6OnRvU3RyaW5nKCkgY29uc3QKICAgICB9CiAKICAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBhdXRvIGVtaXROZXdsaW5lT25FeGl0ID0gWyZdIChB
WElzb2xhdGVkT2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgaWYgKCFvYmplY3Quc2hvdWxkRW1p
dE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2RlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gTGlrZSBUZXh0SXRlcmF0b3IsIGRvbid0IGVtaXQgYSBuZXdsaW5lIGlmIHRoZSBt
b3N0IHJlY2VudGx5IGVtaXR0ZWQgY2hhcmFjdGVyIHdhcyBhbHJlYWR5IGEgbmV3bGluZS4KKyAg
ICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSAmJiByZXN1bHRbcmVzdWx0Lmxlbmd0aCgpIC0gMV0g
IT0gJ1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CisgICAgfTsKKwogICAg
IHJlc3VsdC5hcHBlbmQoc3RhcnQucnVucygpLT5zdWJzdHJpbmcoc3RhcnQub2Zmc2V0KCkpKTsK
IAogICAgIC8vIEZJWE1FOiBJZiB3ZSd2ZSBiZWVuIGdpdmVuIHJldmVyc2VkIG1hcmtlcnMsIGku
ZS4gdGhlIGVuZCBtYXJrZXIgYWN0dWFsbHkgY29tZXMgYmVmb3JlIHRoZSBzdGFydCBtYXJrZXIs
CiAgICAgLy8gd2UgbWF5IHdhbnQgdG8gZGV0ZWN0IHRoaXMgYW5kIHRyeSBzZWFyY2hpbmcgQVhE
aXJlY3Rpb246OlByZXZpb3VzPwotICAgIFJlZlB0ciBjdXJyZW50ID0gZmluZE9iamVjdFdpdGhS
dW5zKCpzdGFydC5pc29sYXRlZE9iamVjdCgpLCBBWERpcmVjdGlvbjo6TmV4dCk7CisgICAgUmVm
UHRyIGN1cnJlbnQgPSBmaW5kT2JqZWN0V2l0aFJ1bnMoKnN0YXJ0Lmlzb2xhdGVkT2JqZWN0KCks
IEFYRGlyZWN0aW9uOjpOZXh0LCBzdGQ6Om51bGxvcHQsIGVtaXROZXdsaW5lT25FeGl0KTsKICAg
ICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50LT5vYmplY3RJRCgpICE9IGVuZC5vYmplY3RJRCgp
KSB7CiAgICAgICAgIGNvbnN0IGF1dG8qIHJ1bnMgPSBjdXJyZW50LT50ZXh0UnVucygpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVucy0+c2l6ZSgpOyBpKyspCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHJ1bnMtPmF0KGkpLnRleHQpOwotICAgICAgICBjdXJyZW50ID0g
ZmluZE9iamVjdFdpdGhSdW5zKCpjdXJyZW50LCBBWERpcmVjdGlvbjo6TmV4dCk7CisgICAgICAg
IGN1cnJlbnQgPSBmaW5kT2JqZWN0V2l0aFJ1bnMoKmN1cnJlbnQsIEFYRGlyZWN0aW9uOjpOZXh0
LCBzdGQ6Om51bGxvcHQsIGVtaXROZXdsaW5lT25FeGl0KTsKICAgICB9CiAgICAgcmVzdWx0LmFw
cGVuZChlbmQucnVucygpLT5zdWJzdHJpbmcoMCwgZW5kLm9mZnNldCgpKSk7CiAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkZTZjMDE2MDczNDMuLjJm
ODY4ODllYWQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CkBAIC0xMTA3LDYgKzExMDgsMTIgQEAgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCk7CiB9CiAKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNob3VsZEVtaXROZXdsaW5l
c0JlZm9yZUFuZEFmdGVyTm9kZSgpIGNvbnN0Cit7CisgICAgUmVmUHRyIG5vZGUgPSB0aGlzLT5u
b2RlKCk7CisgICAgcmV0dXJuIG5vZGUgPyBXZWJDb3JlOjpzaG91bGRFbWl0TmV3bGluZXNCZWZv
cmVBbmRBZnRlck5vZGUoKm5vZGUpIDogZmFsc2U7Cit9CisKIEVsZW1lbnQqIEFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjphbmNob3JFbGVtZW50KCkgY29uc3QKIHsKICAgICBOb2RlKiBub2RlID0g
dGhpcy0+bm9kZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oCmluZGV4IDBiMmEyMGVjMWI2Ni4uYzAxNWVmOWFlNzM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5oCkBAIC0xNDQsNiArMTQ0LDEwIEBAIHB1YmxpYzoKIAogICAgIExheW91
dFJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCBvdmVycmlkZTsKIAorI2lmIEVOQUJMRShBWF9USFJF
QURfVEVYVF9BUElTKQorICAgIGJvb2wgc2hvdWxkRW1pdE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJO
b2RlKCkgY29uc3QgZmluYWw7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0KE5vZGUqKTsKICAgICB2b2lkIGRldGFjaFJlbW90ZVBhcnRz
KEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA4MWE0
MDBlNTkyZjYuLjNlMzJkYjA5M2FmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC00NDcxLDEwICs0NDcxLDYgQEAg
c3RhdGljIGJvb2wgaXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0Y2hBdEluZGV4KFJlZlB0
cjxBWENvcmVPYmplY3Q+IGF4T2JqZWMKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT5pc1dlYkFy
ZWEoKTsKICAgICBjYXNlIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk6OkdyYXBoaWM6CiAgICAgICAg
IHJldHVybiBheE9iamVjdC0+aXNJbWFnZSgpOwotI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9B
UElTKQotICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6SGFzVGV4dFJ1bnM6Ci0gICAg
ICAgIHJldHVybiBheE9iamVjdC0+aGFzVGV4dFJ1bnMoKTsKLSNlbmRpZgogICAgIGNhc2UgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleTo6SGVhZGluZ0xldmVsMToKICAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oZWFkaW5nTGV2ZWwoKSA9PSAxOwogICAgIGNhc2UgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eTo6SGVhZGluZ0xldmVsMjoKQEAgLTQ2NzksMTEgKzQ2NzUsNiBAQCB2b2lkIGZpbmRNYXRjaGlu
Z09iamVjdHMoY29uc3QgQWNjZXNzaWJpbGl0eVNlYXJjaENyaXRlcmlhJiBjcml0ZXJpYSwgQVhD
b3JlT2JqZQogICAgICAgICAgICAgYXV0byBzZWFyY2hPYmplY3QgPSBzZWFyY2hTdGFjay5sYXN0
KCk7CiAgICAgICAgICAgICBzZWFyY2hTdGFjay5yZW1vdmVMYXN0KCk7CiAKLSAgICAgICAgICAg
IGlmIChjcml0ZXJpYS5zdG9wQXRJRC5pc1ZhbGlkKCkgJiYgc2VhcmNoT2JqZWN0LT5vYmplY3RJ
RCgpID09IGNyaXRlcmlhLnN0b3BBdElEKSB7Ci0gICAgICAgICAgICAgICAgQVhMT0cocmVzdWx0
cyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAg
ICBpZiAob2JqZWN0TWF0Y2hlc1NlYXJjaENyaXRlcmlhV2l0aFJlc3VsdExpbWl0KHNlYXJjaE9i
amVjdCwgY3JpdGVyaWEsIHJlc3VsdHMpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmlu
ZGV4IDBhZjc3NDM5YzM1NS4uZDU1MmE2ZjdkMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtMzg4LDYgKzM4OCw3IEBA
IHB1YmxpYzoKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKICAgICB2aXJ0dWFsIEFY
VGV4dFJ1bnMgdGV4dFJ1bnMoKSB7IHJldHVybiB7IH07IH0KICAgICBib29sIGhhc1RleHRSdW5z
KCkgZmluYWwgeyByZXR1cm4gdGV4dFJ1bnMoKS5zaXplKCk7IH0KKyAgICBib29sIHNob3VsZEVt
aXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAvLyBSZXR1cm5zIGFuIGFy
cmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcgdG8gdGhl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwCmluZGV4IDNmMjAzMTMzMmFkMS4uNjBhZGVhMzAw
MmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmNwcApAQCAtMzU4LDYgKzM1OCw3IEBAIHZv
aWQgQVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoY29uc3QgUmVmPEFjY2Vz
c2liaWxpdHlPYmplY3Q+JiBheE9iCiAKICNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykK
ICAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6VGV4dFJ1bnMsIG9iamVjdC50ZXh0UnVu
cygpKTsKKyAgICBzZXRQcm9wZXJ0eShBWFByb3BlcnR5TmFtZTo6U2hvdWxkRW1pdE5ld2xpbmVz
QmVmb3JlQW5kQWZ0ZXJOb2RlLCBvYmplY3Quc2hvdWxkRW1pdE5ld2xpbmVzQmVmb3JlQW5kQWZ0
ZXJOb2RlKCkpOwogI2VuZGlmCiAKICAgICAvLyBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBvbmx5IG5l
ZWRlZCBvbiB0aGUgQVhDb3JlT2JqZWN0IGludGVyZmFjZSBkdWUgdG8gdGhlaXIgdXNlIGluIEFU
U1BJLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IGRhZmZmMWY0NWQwNC4uMDJmODFjOGU4
OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCkBAIC03Nyw2ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgY29uc3QgYXV0byogcnVucyA9IHRleHRSdW5zKCk7CiAgICAgICAgIHJldHVybiBy
dW5zICYmIHJ1bnMtPnNpemUoKTsKICAgICB9CisgICAgYm9vbCBzaG91bGRFbWl0TmV3bGluZXNC
ZWZvcmVBbmRBZnRlck5vZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBib29sQXR0cmlidXRlVmFs
dWUoQVhQcm9wZXJ0eU5hbWU6OlNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSk7
IH0KICNlbmRpZiAvLyBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9B
WElzb2xhdGVkVHJlZS5oCmluZGV4IDUxYTA0YzcyZTBjZC4uNmM3NDUzNmNjYjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVk
VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKQEAgLTIxMiw2ICsyMTIsNyBAQCBlbnVtIGNsYXNzIEFYUHJvcGVydHlO
YW1lIDogdWludDE2X3QgewogICAgIFNlbGVjdGVkQ2hpbGRyZW4sCiAgICAgU2VsZWN0ZWRUZXh0
UmFuZ2UsCiAgICAgU2V0U2l6ZSwKKyAgICBTaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRl
ck5vZGUsCiAgICAgU29ydERpcmVjdGlvbiwKICAgICBTcGVlY2hIaW50LAogICAgIFN0cmluZ1Zh
bHVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGFiMTRlYWU3
Y2NlMi4uN2Q2ZDhkZDg5NmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCkBAIC04NDgsNyArODQ4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkRW1pdFJlcGxhY2VtZW50
SW5zdGVhZE9mTm9kZShjb25zdCBOb2RlJiBub2RlKQogICAgIHJldHVybiBpczxUZXh0UGxhY2Vo
b2xkZXJFbGVtZW50Pihub2RlKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkRW1pdE5ld2xpbmVz
QmVmb3JlQW5kQWZ0ZXJOb2RlKE5vZGUmIG5vZGUpCitib29sIHNob3VsZEVtaXROZXdsaW5lc0Jl
Zm9yZUFuZEFmdGVyTm9kZShOb2RlJiBub2RlKQogewogICAgIC8vIEJsb2NrIGZsb3cgKHZlcnN1
cyBpbmxpbmUgZmxvdykgaXMgcmVwcmVzZW50ZWQgYnkgaGF2aW5nCiAgICAgLy8gYSBuZXdsaW5l
IGJvdGggYmVmb3JlIGFuZCBhZnRlciB0aGUgZWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRJdGVyYXRvci5oCmluZGV4IDkzYjIyZjEyN2U1OC4uOTE1NmRlNmEzN2ExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKQEAgLTkyLDYgKzkyLDggQEAgcHJpdmF0ZToKIC8v
IGF0IHBvaW50cyB3aGVyZSByZXBsYWNlZCBlbGVtZW50cyBicmVhayB1cCB0aGUgdGV4dCBmbG93
LiBUaGUgdGV4dCBpcyBkZWxpdmVyZWQgaW4KIC8vIHRoZSBjaHVua3MgaXQncyBhbHJlYWR5IHN0
b3JlZCBpbiwgdG8gYXZvaWQgY29weWluZyBhbnkgdGV4dC4KIAorYm9vbCBzaG91bGRFbWl0TmV3
bGluZXNCZWZvcmVBbmRBZnRlck5vZGUoTm9kZSYpOworCiBjbGFzcyBUZXh0SXRlcmF0b3Igewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL2Rpc3BsYXktY29udGVudHMt
ZW5kLXRleHQtbWFya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVh
ZC10ZXh0LWFwaXMvZGlzcGxheS1jb250ZW50cy1lbmQtdGV4dC1tYXJrZXIuaHRtbAppbmRleCBh
Y2VhNTUzMzkzOGIuLmJjNDkzOGNkMmRjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL2Rpc3BsYXktY29udGVudHMtZW5kLXRleHQtbWFy
a2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1h
cGlzL2Rpc3BsYXktY29udGVudHMtZW5kLXRleHQtbWFya2VyLmh0bWwKQEAgLTUzLDggKzUzLDgg
QEAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgIGNvbnN0IHRleHRN
YXJrZXJSYW5nZSA9IHdlYkFyZWEudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtl
ciwgZW5kTWFya2VyKTsKIAogICAgIC8vIEZhaWxzIGJlY2F1c2U6Ci0gICAgLy8gIDEuIFdlIGRv
bid0IGluY2x1ZGUgc3BhY2VzIGJldHdlZW4gY2VsbHMKLSAgICAvLyAgMi4gV2UgZG9uJ3QgaW5j
bHVkZSBuZXdsaW5lIGNoYXJhY3RlcnMgYmV0d2VlbiByb3dzCisgICAgLy8gIDEuIFdlIGZhaWwg
dG8gZW1pdCBhIG5ld2xpbmUgYmVmb3JlIGVudGVyaW5nIGEgdGFibGUsIHJpZ2h0IGFmdGVyICJG
b28gdGV4dCIgKFRleHRJdGVyYXRvcjo6YWR2YW5jZSgpIC0+IFRleHRJdGVyYXRvcjo6aGFuZGxl
Tm9uVGV4dE5vZGUoKSAtPiBUZXh0SXRlcmF0b3I6OnJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkg
LT4gc2hvdWxkRW1pdE5ld2xpbmVCZWZvcmVOb2RlKCkgcmV0dXJucyB0cnVlKQorICAgIC8vICAy
LiBXZSBkb24ndCBlbWl0IHNwYWNlcyBiZXR3ZWVuIGNlbGxzCiAgICAgLy8gIDMuIFdlIG1pc3Mg
dGhlIHRhYmxlIGNhcHRpb24gdGV4dCBlbnRpcmVseSAoaXQgaXMgcmVuZGVyZWQgYW5kIHNlbGVj
dGFibGUgdGV4dCwgc28gd2Ugc2hvdWxkIGJlIGluY2x1ZGluZyBpdCkKICAgICBvdXRwdXQgKz0g
YFdlYiBhcmVhIHN0cmluZyBmb3Igc3RhcnQtdG8tZW5kIHRleHQgbWFya2VyIHJhbmdlOlxuXG4k
e3dlYkFyZWEuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSl9XG5gOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0LWNvbnRlbnRzIikuc3R5bGUuZGlzcGxh
eSA9ICJub25lIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhy
ZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1yYW5nZS13aXRoLXVub3JkZXJlZC1tYXJrZXJzLmh0
bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1t
YXJrZXItcmFuZ2Utd2l0aC11bm9yZGVyZWQtbWFya2Vycy5odG1sCmluZGV4IDhmZmMwZWI1ZTI2
ZC4uMTE0YWQ3YTEyMTMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4
LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItcmFuZ2Utd2l0aC11bm9yZGVyZWQtbWFya2Vy
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBp
cy90ZXh0LW1hcmtlci1yYW5nZS13aXRoLXVub3JkZXJlZC1tYXJrZXJzLmh0bWwKQEAgLTQ4LDcg
KzQ4LDExIEBAIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewogICAgICAgICBlbmQgPSBs
aW5rLm5leHRUZXh0TWFya2VyKGVuZCk7CiAgICAgdmFyIHJhbmdlNCA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhlbmQsIHN0YXJ0KTsKICAgICB2YXIgZXhwZWN0ZWQgPSAiZ3JhcGgu
XG5cbkNsaWNrIjsKLSAgICAvLyBGSVhNRTogRmFpbHMgYmVjYXVzZSB3ZSBhcmUgbWlzc2luZyB0
d28gbmV3bGluZSBjaGFyYWN0ZXJzIGJldHdlZW4gImdyYXBoLiIgYW5kICJDbGljayIuCisgICAg
Ly8gRklYTUU6IFdlIGZhaWwgYmVjYXVzZSB3ZSBhcmUgbWlzc2luZyBvbmUgbmV3bGluZSBiZXR3
ZWVuICJncmFwaC4iIGFuZCAiQ2xpY2siLgorICAgIC8vIFRleHRJdGVyYXRvciBlbWl0cyB0aGlz
IG5ld2xpbmUgYXMgcGFydCBvZiBoYW5kbGluZyBUZXh0SXRlcmF0b3I6Om1fbm9kZUZvckFkZGl0
aW9uYWxOZXdsaW5lLCB3aGljaCBpcyBvbmx5IHNldAorICAgIC8vIHdoZW4gc2hvdWxkRW1pdEV4
dHJhTmV3bGluZUZvck5vZGUgaXMgdHJ1ZSB1cG9uIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUuIHNo
b3VsZEVtaXRFeHRyYU5ld2xpbmVGb3JOb2RlIGlzIG9ubHkKKyAgICAvLyB0cnVlICJXaGVuIHRo
ZXJlIGlzIGEgc2lnbmlmaWNhbnQgY29sbGFwc2VkIGJvdHRvbSBtYXJnaW4iIChxdW90aW5nIHRo
YXQgZnVuY3Rpb24pIHRvIGNyZWF0ZSBhIG1vcmUgcmVhbGlzdGljIHJlc3VsdC4KKyAgICAvLyBD
b3B5LXBhc3RpbmcgdGhlIHRleHQgd2l0aG91dCBhbnkgQVQgaW4gcGxheSBkb2VzIG5vdCBoYXZl
IHRoaXMgZXh0cmEgbmV3bGluZSwgc28gaXRzIG5lY2Vzc2l0eSBpcyBxdWVzdGlvbmFibGU/CiAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2U0
KSIsICJleHBlY3RlZCIpOwogICAgIG91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHJhbmdlNCkiLCAiZXhwZWN0ZWQubGVuZ3RoIik7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1z
dHJpbmctZW1wdHktcGFyYWdyYXBocy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3RyaW5nLWVtcHR5LXBhcmFn
cmFwaHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uZjFlY2U2ZDY4NDU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXN0cmluZy1lbXB0eS1wYXJhZ3Jh
cGhzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3RzIHRoYXQgd2UgYXJl
IGdldHRpbmcgdGhlIGNvcnJlY3Qgc3RyaW5nIGZvciBkb2N1bWVudCByYW5nZSB3aXRoIG5lc3Rl
ZCBwYXJhZ3JhcGhzLgorCitPbmUgdHdvCisKK3RocmVlCisKK2ZvdXIKK2ZpdmUKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFy
a2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3RyaW5nLWVtcHR5LXBhcmFncmFw
aHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdiNGI4YjIx
ZWUxYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhy
ZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZW1wdHktcGFyYWdyYXBocy5odG1sCkBA
IC0wLDAgKzEsNDcgQEAKKzwhRE9DVFlQRSBIVE1MPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
cnVuU2luZ2x5PXRydWUgQWNjZXNzaWJpbGl0eVRocmVhZFRleHRBcGlzRW5hYmxlZD10cnVlIF0g
LS0+Cis8IS0tIE5ldyB0ZXN0LiBLZWVwIGFmdGVyIGFjY2Vzc2liaWxpdHlUaHJlYWRUZXh0QXBp
c0VuYWJsZWQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiAtLT4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0iY29udGVudCI+Cis8cD4KKyAgICBPbmUgdHdvCisg
ICAgPHA+CisgICAgICAgIHRocmVlCisgICAgICAgIDxwPjwvcD4KKyAgICAgICAgZm91cgorICAg
IDwvcD4KKyAgICA8cD48L3A+CisgICAgPHA+PC9wPgorICAgIDxwPjwvcD4KKyAgICBmaXZlCis8
L3A+Cis8L2Rpdj4KKworPHNjcmlwdD4KK3ZhciBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGF0IHdl
IGFyZSBnZXR0aW5nIHRoZSBjb3JyZWN0IHN0cmluZyBmb3IgZG9jdW1lbnQgcmFuZ2Ugd2l0aCBu
ZXN0ZWQgcGFyYWdyYXBocy5cblxuIjsKKworLy8gRklYTUU6IEZhaWxzIGJlY2F1c2U6CisvLyAg
MS4gV2UgbWlzcyBhIG5ld2xpbmUgYmV0d2VlbiAiT25lIHR3byIgYW5kICJ0aHJlZSIsIGFuZCBi
ZXR3ZWVuICJ0aHJlZSIgYW5kICJmb3VyIiBkdWUgdG8gc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZv
ck5vZGUKKy8vICAgICBsb2dpYyBpbiBUZXh0SXRlcmF0b3IgdGhhdCB3ZSBkb24ndCBlbXVsYXRl
LgorLy8gIDIuIFdlIGFyZSBtaXNzaW5nIGEgbmV3bGluZSBiZXR3ZWVuICJmb3VyIiBhbmQgImZp
dmUiLCBnZW5lcmF0ZWQgYnkgVGV4dEl0ZXJhdG9yOjpyZXByZXNlbnROb2RlT2Zmc2V0WmVybygp
IC0+CisvLyAgICAgc2hvdWxkRW1pdE5ld2xpbmVCZWZvcmVOb2RlIC0+IHNob3VsZFJlcHJlc2Vu
dE5vZGVPZmZzZXRaZXJvID09IHRydWUgZm9yIHNvbWUgbm9kZSBiZXR3ZWVuIHRoZSB0d28gcGll
Y2VzIG9mIHRleHQKKworaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAg
IHZhciB3ZWJBcmVhID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucm9vdEVsZW1lbnQuY2hpbGRB
dEluZGV4KDApOworICAgIHZhciBzdGFydE1hcmtlciA9IHdlYkFyZWEuc3RhcnRUZXh0TWFya2Vy
OworICAgIHZhciBlbmRNYXJrZXIgPSB3ZWJBcmVhLmVuZFRleHRNYXJrZXI7CisgICAgdmFyIHJh
bmdlID0gd2ViQXJlYS50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRN
YXJrZXIpOworCisgICAgb3V0cHV0ICs9IHdlYkFyZWEuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHJhbmdlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICBkZWJ1ZyhvdXRwdXQpOworfQorPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZm9yLWRvY3VtZW50LXJhbmdl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4
dC1tYXJrZXItc3RyaW5nLWZvci1kb2N1bWVudC1yYW5nZS5odG1sCmluZGV4IDU3OWE0NDExOWZi
MC4uZmIzMWVlYjI0OWZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4
LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3RyaW5nLWZvci1kb2N1bWVudC1yYW5nZS5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90
ZXh0LW1hcmtlci1zdHJpbmctZm9yLWRvY3VtZW50LXJhbmdlLmh0bWwKQEAgLTI3LDYgKzI3LDEz
IEBACiAgICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gYm9keS5zdGFydFRleHRNYXJrZXI7CiAg
ICAgICAgICAgdmFyIGVuZE1hcmtlciA9IGJvZHkuZW5kVGV4dE1hcmtlcjsKICAgICAgICAgICB2
YXIgdGV4dE1hcmtlclJhbmdlID0gYm9keS50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0
TWFya2VyLCBlbmRNYXJrZXIpOworICAgICAgICAgIC8vIEZJWE1FOiBXZSBmYWlsIGJlY2F1c2Ug
d2UgYXJlIG1pc3NpbmcgYSBuZXdsaW5lIGFmdGVyICJ0ZXh0Ii4gVGhpcyBoYXBwZW5zIGJlY2F1
c2UgdGhlIHRhYmxlIGlzIGNvbnNpZGVyZWQKKyAgICAgICAgICAvLyBhIGxheW91dCB0YWJsZSAo
bm90IGFuICJleHBvc2VkIiBBWCBkYXRhIHRhYmxlKSwgYW5kIHRodXMgdGhlIDx0cj4gaXMgaWdu
b3JlZCwgdGh1cyBub3QgaW4gdGhlIEFYIHRyZWUuCisgICAgICAgICAgLy8gVGhpcyBtZWFucyB3
ZSBjYW4ndCBlbWl0IGEgbmV3bGluZSB3aGVuIHdlICJleGl0IiB0aGUgPHRyPiBpbiB0aGUgdGV4
dCB0cmF2ZXJzYWwgYmVjYXVzZSBpdCdzIG5vdCB0aGVyZS4KKworICAgICAgICAgIC8vIFdlIGFs
c28gZmFpbCBiZWNhdXNlIHdlIGRvbid0IGVtaXQgYSBuZXdsaW5lIGFmdGVyICIuLi5oYXMgYWZ0
ZXIgYW5jaG9yIHR5cGUuIiBUZXh0SXRlcmF0b3IgZW1pdHMgdGhpcyBuZXdsaW5lCisgICAgICAg
ICAgLy8gYXMgcGFydCBvZiBoYW5kbGluZyBUZXh0SXRlcmF0b3I6Om1fbm9kZUZvckFkZGl0aW9u
YWxOZXdsaW5lLCB3aGljaCBpcyBvbmx5IHNldCB3aGVuIHNob3VsZEVtaXRFeHRyYU5ld2xpbmVG
b3JOb2RlCisgICAgICAgICAgLy8gaXMgdHJ1ZSB1cG9uIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUu
CiAgICAgICAgICAgZGVidWcoIlN0cmluZzogXG4iICsgYm9keS5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXdpdGgt
dXNlci1zZWxlY3Qtbm9uZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJl
YWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sCmluZGV4
IDQ2ZjIxMTc2ZGIxZi4uZjVkN2IxZWFjYzdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVj
dC1ub25lLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4
dC1hcGlzL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sCkBAIC0yMCwxMyAr
MjAsMTQgQEAgdmFyIG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgYWNjZXNzaWJpbGl0eSB0ZXh0
IG1hcmtlcnMgc3RpbGwgd29yayBldmVuIHdoZW4gdXMKIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIpIHsKICAgICB2YXIgdGV4dEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKICAgICB2YXIgdGV4dE1hcmtlclJh
bmdlID0gdGV4dEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0RWxlbWVudCk7
Ci0gICAgLy8gRklYTUU6IFRoaXMgd2lsbCBwYXNzIGFmdGVyIHdlIGltcGxlbWVudCB0ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50IGluIHRlcm1zIG9mIEFjY2Vzc2liaWxpdHlUaHJlYWRUZXh0QXBp
c0VuYWJsZWQuCisgICAgLy8gRklYTUU6IFdlIGRvbid0IGVtaXQgbmV3bGluZXMgZm9yIGVpdGhl
ciBvZiB0aGUgPGJyPnMgYmVjYXVzZSB0aGV5IGFyZSBpZ25vcmVkLCBjYXVzaW5nIHRoaXMgbGVu
Z3RoIHRvIGJlIHdyb25nLgogICAgIG91dHB1dCArPSBleHBlY3QoInRleHRFbGVtZW50LnRleHRN
YXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQ1Iik7CiAKICAgICB2YXIgc3Rh
cnRNYXJrZXIgPSB0ZXh0RWxlbWVudC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKTsKICAgICB2YXIgZW5kTWFya2VyID0gdGV4dEVsZW1lbnQuZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIHRleHRNYXJr
ZXJSYW5nZSA9IHRleHRFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJr
ZXIsIGVuZE1hcmtlcik7CiAgICAgdmFyIHRleHQgPSB0ZXh0RWxlbWVudC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKKyAgICAvLyBGSVhNRTogRmFpbHMgZHVlIHRv
IHRoZSBtaXNzaW5nIDxicj4gbmV3bGluZXMgbWVudGlvbmVkIGFib3ZlLgogICAgIG91dHB1dCAr
PSBleHBlY3QoYCIke3RleHR9IiA9PSAiaGVsbG8gdGVzdCB3b3JsZCB0ZXN0IGhlbGxvXFxubGlu
ayB0byBoZXJlXFxudGVzdCJgLCAidHJ1ZSIpOwogCiAgICAgdmFyIG5leHRNYXJrZXIgPSB0ZXh0
RWxlbWVudC5uZXh0VGV4dE1hcmtlcihzdGFydE1hcmtlcik7Cg==
</data>
<flag name="commit-queue"
          id="496179"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469797</attachid>
            <date>2024-02-09 10:50:15 -0800</date>
            <delta_ts>2024-02-14 14:41:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-269072-20240209105015.patch</filename>
            <type>text/plain</type>
            <size>28464</size>
            <attacher name="Tyler Wilcock">tyler_w</attacher>
            
              <data encoding="base64">RnJvbSBkMmNmN2Q4MWFmYTBhYTdhZWY5ZTQ5MjBlNjM2NTQwZDA2YmIwOWNjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUeWxlciBXaWxjb2NrIDx0eWxlcl93QGFwcGxlLmNvbT4KRGF0
ZTogRnJpLCA5IEZlYiAyMDI0IDEwOjMxOjAzIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gQVg6IFdl
YktpdCBmYWlscyB0byBlbWl0IG5ld2xpbmVzIGJldHdlZW4gY29udGFpbmVyIG5vZGVzCiB3aGVu
IHNlcnZpbmcgQVhTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Ugb2ZmIHRoZSBtYWluLXRocmVhZAog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI2OTA3MiByZGFyOi8vcHJv
YmxlbS8xMjI2NDgzNDYKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKUHJpb3IgdG8gdGhp
cyBwYXRjaCwgQVhUZXh0TWFya2VyOjpmaW5kT2JqZWN0V2l0aFJ1bnMgd2FzIGJhc2ljYWxseSBq
dXN0IGEgd3JhcHBlciBvdmVyIGBmaW5kTWF0Y2hpbmdPYmplY3RzYC4KSXQgaGFzIGJlY29tZSBj
bGVhciB0aGF0IHRoZSB0cmF2ZXJzYWwgd2UgbmVlZCB0byBkbyBmb3IgdGV4dCBtYXJrZXJzIHJl
cXVpcmVzIGxvdHMgb2YgY3VzdG9tIGhvb2tzIGFuZCBiZWhhdmlvciwKYW5kIGl0IGRvZXNuJ3Qg
bWFrZSBzZW5zZSB0byBtdWRkeSBgZmluZE1hdGNoaW5nT2JqZWN0c2AgZm9yIHRoaXMgc2luZ2xl
IHVzZWNhc2UsIHNvIHRoaXMgcGF0Y2ggdGFrZXMgd2hhdCB3ZSBuZWVkCmZyb20gYGZpbmRNYXRj
aGluZ09iamVjdHNgIGFuZCBtb3ZlcyBpdCBkaXJlY3RseSBpbnRvIGZpbmRPYmplY3RXaXRoUnVu
cy4KClRoaXMgYWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgYHN0b3BBdElEYCBsb2dpYyBmcm9tIGBm
aW5kTWF0Y2hpbmdPYmplY3RzYC4gSXQgYWxzbyBhbGxvd3MgdG8gYWRkIGFuICJleGl0IG9iamVj
dCIKaG9vayB0byB0aGUgdHJhdmVyc2FsLCB3aGljaCB0aGlzIHBhdGNoIHVzZXMgdG8gZW1pdCBu
ZXdsaW5lcyB3aGVuIGV4aXRpbmcgYSBub2RlIHRoYXQgYHNob3VsZEVtaXROZXdsaW5lc0JlZm9y
ZUFuZEFmdGVyTm9kZWAuClRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIFRleHRJdGVy
YXRvcjogZGl2ZSBpbnRvIHRleHQtbGVhZiBub2RlcywgYW5kIGVtaXQgbmV3bGluZXMgZm9yIHRo
ZWlyIGNvbnRhaW5lcnMgb24gZXhpdC4KClByaW9yIHRvIHRoaXMgcGF0Y2gsIHdlIG5ldmVyIGVt
aXR0ZWQgYW55IG5ld2xpbmUuIE5vdyB3ZSBkbywgYnJpbmdpbmcgdXMgY2xvc2VyIHRvIHBhc3Np
bmcgc2V2ZXJhbCB0ZXN0cyBpbgpMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10
ZXh0LWFwaXMuIFRoaXMgcGF0Y2ggYWxzbyBkb2N1bWVudHMgaW4gZGV0YWlsIHdoeSBzZXZlcmFs
IG9mIHRoZXNlIHRlc3RzIGNvdGludWUKdG8gZmFpbCwgYW5kIGFkZHMgYSBuZXcgdGVzdCB0aGF0
IGV4ZXJjaXNlcyBpbnRlcmVzdGluZyBlZGdlY2FzZXMgd2hlbiB3ZSBlbWl0IG5ld2xpbmVzIGZv
ciBjb250YWluZXJzOiB0ZXh0LW1hcmtlci1zdHJpbmctZW1wdHktcGFyYWdyYXBocy5odG1sCgoq
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy9kaXNwbGF5LWNv
bnRlbnRzLWVuZC10ZXh0LW1hcmtlci5odG1sOgoqIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
YXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1yYW5nZS13aXRoLXVub3JkZXJlZC1tYXJr
ZXJzLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlz
L3RleHQtbWFya2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFy
a2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLmh0bWw6IEFkZGVkLgoqIExheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZm9yLWRv
Y3VtZW50LXJhbmdlLmh0bWw6CiogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQt
dGV4dC1hcGlzL3RleHQtbWFya2VyLXdpdGgtdXNlci1zZWxlY3Qtbm9uZS5odG1sOgoqIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0Lmg6CiogU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHA6CihXZWJDb3JlOjpvcGVyYXRvcjw8KToKKiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHA6CihXZWJDb3JlOjphcHBl
bmRDaGlsZHJlbik6CihXZWJDb3JlOjpmaW5kT2JqZWN0V2l0aFJ1bnMpOgooV2ViQ29yZTo6QVhU
ZXh0TWFya2VyUmFuZ2U6OnRvU3RyaW5nIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlOb2RlT2JqZWN0OjpzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUgY29uc3Qp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qu
aDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3Bw
OgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eTo6aXNBY2Nlc3NpYmlsaXR5T2JqZWN0U2VhcmNoTWF0
Y2hBdEluZGV4KToKKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHk6OmZpbmRNYXRjaGluZ09iamVjdHMp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgoq
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwOgooV2ViQ29yZTo6QVhJc29sYXRlZE9iamVjdDo6aW5pdGlhbGl6ZVByb3BlcnRpZXMp
OgoqIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRP
YmplY3QuaDoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkVHJlZS5oOgoqIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoK
KFdlYkNvcmU6OnNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSk6CiogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKLS0tCiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oICAgfCAgIDUgKy0KIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhMb2dnZXIuY3BwICAgICB8ICAgNSAtCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxMDggKysrKysrKysrKysrKysrLS0tCiAuLi4vYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgfCAgIDkgKysKIC4uLi9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggICB8ICAgNCArCiAuLi4vYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgICAgfCAgIDkgLS0KIC4uLi9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCAgICAgICB8ICAgMSArCiAuLi4vaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRPYmplY3QuY3BwICAgICAgICAgfCAgIDEgKwogLi4uL2lzb2xhdGVkdHJl
ZS9BWElzb2xhdGVkT2JqZWN0LmggICAgICAgICAgIHwgICAxICsKIC4uLi9pc29sYXRlZHRyZWUv
QVhJc29sYXRlZFRyZWUuaCAgICAgICAgICAgICB8ICAgMSArCiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1RleHRJdGVyYXRvci5jcHAgICAgICAgfCAgIDIgKy0KIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmggICAgICAgICB8ICAgMiArCiAuLi4vZGlzcGxheS1jb250ZW50cy1l
bmQtdGV4dC1tYXJrZXIuaHRtbCAgICAgfCAgIDQgKy0KIC4uLnQtbWFya2VyLXJhbmdlLXdpdGgt
dW5vcmRlcmVkLW1hcmtlcnMuaHRtbCB8ICAgNiArLQogLi4uYXJrZXItc3RyaW5nLWVtcHR5LXBh
cmFncmFwaHMtZXhwZWN0ZWQudHh0IHwgIDE0ICsrKwogLi4uL3RleHQtbWFya2VyLXN0cmluZy1l
bXB0eS1wYXJhZ3JhcGhzLmh0bWwgIHwgIDQ3ICsrKysrKysrCiAuLi50ZXh0LW1hcmtlci1zdHJp
bmctZm9yLWRvY3VtZW50LXJhbmdlLmh0bWwgfCAgIDcgKysKIC4uLi90ZXh0LW1hcmtlci13aXRo
LXVzZXItc2VsZWN0LW5vbmUuaHRtbCAgICB8ICAgMyArLQogMTggZmlsZXMgY2hhbmdlZCwgMTkx
IGluc2VydGlvbnMoKyksIDM4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJp
bmctZW1wdHktcGFyYWdyYXBocy1leHBlY3RlZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3Ry
aW5nLWVtcHR5LXBhcmFncmFwaHMuaHRtbAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYQ29yZU9iamVjdC5oCmluZGV4IGNiODkzYTY4ZWVkOS4uNDQxMDg0ZWNiODA1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYQ29yZU9iamVjdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhDb3JlT2JqZWN0LmgKQEAgLTU4MSw5ICs1ODEs
NiBAQCBlbnVtIGNsYXNzIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgewogICAgIEZvbnRDb2xvckNo
YW5nZSwKICAgICBGcmFtZSwKICAgICBHcmFwaGljLAotI2lmIEVOQUJMRShBWF9USFJFQURfVEVY
VF9BUElTKQotICAgIEhhc1RleHRSdW5zLAotI2VuZGlmCiAgICAgSGVhZGluZ0xldmVsMSwKICAg
ICBIZWFkaW5nTGV2ZWwyLAogICAgIEhlYWRpbmdMZXZlbDMsCkBAIC02MTksNyArNjE2LDYgQEAg
dXNpbmcgQVhFZGl0aW5nU3R5bGVWYWx1ZVZhcmlhbnQgPSBzdGQ6OnZhcmlhbnQ8U3RyaW5nLCBi
b29sLCBpbnQ+Owogc3RydWN0IEFjY2Vzc2liaWxpdHlTZWFyY2hDcml0ZXJpYSB7CiAgICAgQVhD
b3JlT2JqZWN0KiBhbmNob3JPYmplY3QgeyBudWxscHRyIH07CiAgICAgQVhDb3JlT2JqZWN0KiBz
dGFydE9iamVjdDsKLSAgICBBWElEIHN0b3BBdElEOwogICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24gc2VhcmNoRGlyZWN0aW9uOwogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5PiBzZWFyY2hLZXlzOwogICAgIFN0cmluZyBzZWFyY2hUZXh0OwpAQCAtMTExOSw2ICsxMTE1
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHRleHRDb250
ZW50KCkgY29uc3QgPSAwOwogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgIHZp
cnR1YWwgYm9vbCBoYXNUZXh0UnVucygpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW1p
dE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2RlKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICAgICAv
LyBNZXRob2RzIGZvciBkZXRlcm1pbmluZyBhY2Nlc3NpYmlsaXR5IHRleHQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCmluZGV4IGJlNmVkOGVjYzM2Zi4uYjZlMzA2
Y2RkZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcApAQCAt
Mjk1LDExICsyOTUsNiBAQCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHN0cmVh
bSwgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkpCiAgICAgY2FzZSBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5OjpHcmFwaGljOgogICAgICAgICBzdHJlYW0gPDwgIkdyYXBoaWMiOwogICAg
ICAgICBicmVhazsKLSNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKLSAgICBjYXNlIEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXk6Okhhc1RleHRSdW5zOgotICAgICAgICBzdHJlYW0gPDwgIkhh
c1RleHRSdW5zIjsKLSAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICBjYXNlIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXk6OkhlYWRpbmdMZXZlbDE6CiAgICAgICAgIHN0cmVhbSA8PCAiSGVhZGluZ0xl
dmVsMSI7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuY3BwCmluZGV4IGU0YjcxZDllNzJhNi4uYTQ2ZDgwYTU5NTlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0zODUsMjcg
KzM4NSw5NiBAQCBib29sIEFYVGV4dE1hcmtlclJhbmdlOjppc0NvbmZpbmVkVG8oQVhJRCBvYmpl
Y3RJRCkgY29uc3QKIH0KIAogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQorc3RhdGlj
IHZvaWQgYXBwZW5kQ2hpbGRyZW4oUmVmUHRyPEFYQ29yZU9iamVjdD4gb2JqZWN0LCBib29sIGlz
Rm9yd2FyZCwgUmVmUHRyPEFYQ29yZU9iamVjdD4gc3RhcnRPYmplY3QsIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQoreworICAgIC8vIEEg
dGFibGUncyBjaGlsZHJlbiBpbmNsdWRlcyBlbGVtZW50cyB3aG9zZSBvd24gY2hpbGRyZW4gYXJl
IGFsc28gdGhlIHRhYmxlJ3MgY2hpbGRyZW4gKGR1ZSB0byB0aGUgd2F5IHRoZSBNYWMgZXhwb3Nl
cyB0YWJsZXMpLgorICAgIC8vIFRoZSByb3dzIGZyb20gdGhlIHRhYmxlIHNob3VsZCBiZSBxdWVy
aWVkLCBzaW5jZSB0aG9zZSBhcmUgZGlyZWN0IGRlc2NlbmRhbnRzIG9mIHRoZSB0YWJsZSwgYW5k
IHRoZXkgY29udGFpbiBjb250ZW50LgorICAgIGNvbnN0IGF1dG8mIGNoaWxkcmVuID0gb2JqZWN0
LT5pc1RhYmxlKCkgJiYgb2JqZWN0LT5pc0V4cG9zYWJsZSgpID8gb2JqZWN0LT5yb3dzKCkgOiBv
YmplY3QtPmNoaWxkcmVuKCk7CisKKyAgICBzaXplX3QgY2hpbGRyZW5TaXplID0gY2hpbGRyZW4u
c2l6ZSgpOworCisgICAgc2l6ZV90IHN0YXJ0SW5kZXggPSBpc0ZvcndhcmQgPyBjaGlsZHJlblNp
emUgOiAwOworICAgIHNpemVfdCBlbmRJbmRleCA9IGlzRm9yd2FyZCA/IDAgOiBjaGlsZHJlblNp
emU7CisgICAgc2l6ZV90IHNlYXJjaFBvc2l0aW9uID0gc3RhcnRPYmplY3QgPyBjaGlsZHJlbi5m
aW5kKHN0YXJ0T2JqZWN0KSA6IG5vdEZvdW5kOworCisgICAgaWYgKHNlYXJjaFBvc2l0aW9uICE9
IG5vdEZvdW5kKSB7CisgICAgICAgIGlmIChpc0ZvcndhcmQpCisgICAgICAgICAgICBlbmRJbmRl
eCA9IHNlYXJjaFBvc2l0aW9uICsgMTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW5kSW5k
ZXggPSBzZWFyY2hQb3NpdGlvbjsKKyAgICB9CisKKyAgICBhdXRvIGFwcGVuZCA9IFsmdmVjdG9y
XSAoUmVmUHRyPEFYQ29yZU9iamVjdD4gb2JqZWN0KSB7CisgICAgICAgIGlmIChvYmplY3QpCisg
ICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKFdURk1vdmUob2JqZWN0KSk7CisgICAgfTsKKworICAg
IGlmIChpc0ZvcndhcmQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkg
PiBlbmRJbmRleDsgaS0tKQorICAgICAgICAgICAgYXBwZW5kKGNoaWxkcmVuLmF0KGkgLSAxKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IHN0YXJ0SW5kZXg7IGkgPCBl
bmRJbmRleDsgaSsrKQorICAgICAgICAgICAgYXBwZW5kKGNoaWxkcmVuLmF0KGkpKTsKKyAgICB9
Cit9CisKIC8vIEZpbmRzIHRoZSBuZXh0IG9iamVjdCB3aXRoIHRleHQgcnVucyBpbiB0aGUgZ2l2
ZW4gZGlyZWN0aW9uLCBvcHRpb25hbGx5IHN0b3BwaW5nIGF0IHRoZSBnaXZlbiBJRCBhbmQgcmV0
dXJuaW5nIHN0ZDo6bnVsbG9wdC4KLXN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZE9iamVjdD4gZmlu
ZE9iamVjdFdpdGhSdW5zKEFYSXNvbGF0ZWRPYmplY3QmIHN0YXJ0LCBBWERpcmVjdGlvbiBkaXJl
Y3Rpb24sIHN0ZDo6b3B0aW9uYWw8QVhJRD4gc3RvcEF0SUQgPSBzdGQ6Om51bGxvcHQpCisvLyBZ
b3UgbWF5IG9wdGlvbmFsbHkgcGFzcyBhIGxhbWJkYSB0aGF0IHJ1bnMgZWFjaCB0aW1lIGFuIG9i
amVjdCBpcyAiZXhpdGVkIiBpbiB0aGUgdHJhdmVyc2FsLCBpLmUuIHdlIHByb2Nlc3NlZCBpdHMg
Y2hpbGRyZW4KKy8vIChpZiBwcmVzZW50KSBhbmQgYXJlIG1vdmluZyBiZXlvbmQgaXQuIFRoaXMg
Y2FuIGhlbHAgbWlycm9yIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUgaW4gdGhlIGNvbnRleHRzIHdo
ZXJlIHRoYXQncyBuZWNlc3NhcnkuCitzdGF0aWMgQVhJc29sYXRlZE9iamVjdCogZmluZE9iamVj
dFdpdGhSdW5zKEFYSXNvbGF0ZWRPYmplY3QmIHN0YXJ0LCBBWERpcmVjdGlvbiBkaXJlY3Rpb24s
IHN0ZDo6b3B0aW9uYWw8QVhJRD4gc3RvcEF0SUQgPSBzdGQ6Om51bGxvcHQsIGNvbnN0IHN0ZDo6
ZnVuY3Rpb248dm9pZChBWElzb2xhdGVkT2JqZWN0Jik+JiBleGl0T2JqZWN0ID0gW10gKEFYSXNv
bGF0ZWRPYmplY3QmKSB7IH0pCiB7CisgICAgUmVmUHRyIHRyZWUgPSBzdGQ6OmdldDxSZWZQdHI8
QVhJc29sYXRlZFRyZWU+PihheFRyZWVGb3JJRChzdGFydC50cmVlSUQoKSkpOworICAgIC8vIGBy
b290YCBpcyBhIHN0YW5kLWluIGZvciBgYW5jaG9yT2JqZWN0YCBpbiBmaW5kTWF0Y2hpbmdPYmpl
Y3RzLCB3aGljaCB0aGlzIGZ1bmN0aW9uIHBhcnRpYWxseSBjb3BpZXMgZnJvbS4KKyAgICBSZWZQ
dHIgcm9vdCA9IHRyZWUgPyB0cmVlLT5yb290Tm9kZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXJv
b3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgLy8gRklYTUU6IGFyaWEtb3ducyBi
cmVha3MgdGhpcyBmdW5jdGlvbiwgYXMgYXJpYS1vd25zIGNhdXNlcyB0aGUgQVggdHJlZSB0byBi
ZSBjaGFuZ2VkLCBhZmZlY3RpbmcKICAgICAvLyBvdXIgc2VhcmNoIGJlbG93LCBidXQgaXQgZG9l
c24ndCBhY3R1YWxseSBjaGFuZ2UgdGV4dCBwb3NpdGlvbiBvbiB0aGUgcGFnZS4gU28gd2UgbmVl
ZCB0byBpZ25vcmUKICAgICAvLyBhcmlhLW93bnMgdHJlZSBjaGFuZ2VzIGhlcmUgaW4gb3JkZXIg
dG8gYmVoYXZlIGNvcnJlY3RseS4gV2UgYWxzbyBwcm9iYWJseSBuZWVkIHRvIGRvIHNvbWV0aGlu
ZwogICAgIC8vIGFib3V0IHRleHQgd2l0aGluIGFyaWEtaGlkZGVuIGNvbnRhaW5lcnMsIHdoaWNo
IGFmZmVjdHMgdGhlIEFYIHRyZWUuCiAKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEg
Y3JpdGVyaWEgeyAmc3RhcnQsIGRpcmVjdGlvbiA9PSBBWERpcmVjdGlvbjo6TmV4dCA/IEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb246Ok5leHQgOiBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0
aW9uOjpQcmV2aW91cywgZW1wdHlTdHJpbmcoKSwgMSwgZmFsc2UsIGZhbHNlIH07Ci0gICAgUmVm
UHRyIHRyZWUgPSBzdGQ6OmdldDxSZWZQdHI8QVhJc29sYXRlZFRyZWU+PihheFRyZWVGb3JJRChz
dGFydC50cmVlSUQoKSkpOwotICAgIFJlZlB0ciByb290ID0gdHJlZSA/IHRyZWUtPnJvb3ROb2Rl
KCkgOiBudWxscHRyOwotICAgIGlmICghcm9vdCkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgY3JpdGVyaWEuYW5jaG9yT2JqZWN0ID0gcm9vdC5nZXQoKTsKLSAgICBjcml0ZXJpYS5zZWFy
Y2hLZXlzID0geyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIYXNUZXh0UnVucyB9OwotICAgIGlm
IChzdG9wQXRJRCkKLSAgICAgICAgY3JpdGVyaWEuc3RvcEF0SUQgPSAqc3RvcEF0SUQ7CisgICAg
Ly8gVGhpcyBzZWFyY2ggYWxnb3JpdGhtIG9ubHkgc2VhcmNoZXMgdGhlIGVsZW1lbnRzIGJlZm9y
ZS9hZnRlciB0aGUgc3RhcnRpbmcgb2JqZWN0LgorICAgIC8vIEl0IGRvZXMgdGhpcyBieSBzdGVw
cGluZyB1cCB0aGUgcGFyZW50IGNoYWluIGFuZCBhdCBlYWNoIGxldmVsIGRvaW5nIGEgREZTLgor
ICAgIFJlZlB0ciBzdGFydE9iamVjdCA9ICZzdGFydDsKKworICAgIGJvb2wgaXNGb3J3YXJkID0g
ZGlyZWN0aW9uID09IEFYRGlyZWN0aW9uOjpOZXh0OworICAgIC8vIFRoZSBmaXJzdCBpdGVyYXRp
b24gb2YgdGhlIG91dGVyIGxvb3Agd2lsbCBleGFtaW5lIHRoZSBjaGlsZHJlbiBvZiB0aGUgc3Rh
cnQgb2JqZWN0IGZvciBtYXRjaGVzLiBIb3dldmVyLCB3aGVuCisgICAgLy8gaXRlcmF0aW5nIGJh
Y2t3YXJkcywgdGhlIHN0YXJ0IG9iamVjdCBjaGlsZHJlbiBzaG91bGQgbm90IGJlIGNvbnNpZGVy
ZWQsIHNvIHRoZSBsb29wIGlzIHNraXBwZWQgYWhlYWQuIFdlIG1ha2UgYW4KKyAgICAvLyBleGNl
cHRpb24gd2hlbiBubyBzdGFydCBvYmplY3Qgd2FzIHNwZWNpZmllZCBiZWNhdXNlIHdlIHdhbnQg
dG8gc2VhcmNoIGV2ZXJ5dGhpbmcgcmVnYXJkbGVzcyBvZiBzZWFyY2ggZGlyZWN0aW9uLgorICAg
IFJlZlB0cjxBWENvcmVPYmplY3Q+IHByZXZpb3VzT2JqZWN0OworICAgIGlmICghaXNGb3J3YXJk
ICYmIHN0YXJ0T2JqZWN0ICE9IHJvb3QuZ2V0KCkpIHsKKyAgICAgICAgcHJldmlvdXNPYmplY3Qg
PSBzdGFydE9iamVjdDsKKyAgICAgICAgc3RhcnRPYmplY3QgPSBzdGFydE9iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgfQorCisgICAgZm9yIChhdXRvKiBzdG9wT2JqZWN0ID0g
cm9vdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7IHN0YXJ0T2JqZWN0ICYmIHN0YXJ0T2JqZWN0
ICE9IHN0b3BPYmplY3Q7IHN0YXJ0T2JqZWN0ID0gc3RhcnRPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpKSB7CisgICAgICAgIC8vIE9ubHkgYXBwZW5kIHRoZSBjaGlsZHJlbiBhZnRlci9i
ZWZvcmUgdGhlIHByZXZpb3VzIGVsZW1lbnQsIHNvIHRoYXQgdGhlIHNlYXJjaCBkb2VzIG5vdCBj
aGVjayBlbGVtZW50cyB0aGF0IGFyZQorICAgICAgICAvLyBhbHJlYWR5IGJlaGluZC9haGVhZCBv
ZiBzdGFydCBlbGVtZW50LgorICAgICAgICBBWENvcmVPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWFyY2hTdGFjazsKKyAgICAgICAgYXBwZW5kQ2hpbGRyZW4oc3RhcnRPYmpl
Y3QsIGlzRm9yd2FyZCwgcHJldmlvdXNPYmplY3QsIHNlYXJjaFN0YWNrKTsKIAotICAgIEFYQ29y
ZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJlc3VsdHM7Ci0gICAgQWNjZXNz
aWJpbGl0eTo6ZmluZE1hdGNoaW5nT2JqZWN0cyhjcml0ZXJpYSwgcmVzdWx0cyk7Ci0gICAgcmV0
dXJuIHJlc3VsdHMuaXNFbXB0eSgpID8gbnVsbHB0ciA6IGR5bmFtaWNEb3duY2FzdDxBWElzb2xh
dGVkT2JqZWN0PihyZXN1bHRzWzBdKTsKKyAgICAgICAgLy8gVGhpcyBub3cgZG9lcyBhIERGUyBh
dCB0aGUgY3VycmVudCBsZXZlbCBvZiB0aGUgcGFyZW50LgorICAgICAgICB3aGlsZSAoIXNlYXJj
aFN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUmVmUHRyIHNlYXJjaE9iamVjdCA9IHNl
YXJjaFN0YWNrLnRha2VMYXN0KCk7CisKKyAgICAgICAgICAgIGlmIChzdG9wQXRJRCAmJiBzdG9w
QXRJRC0+aXNWYWxpZCgpICYmIHNlYXJjaE9iamVjdC0+b2JqZWN0SUQoKSA9PSAqc3RvcEF0SUQp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAgICAgICAgIGlmIChzZWFy
Y2hPYmplY3QtPmhhc1RleHRSdW5zKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGR5bmFtaWNE
b3duY2FzdDxBWElzb2xhdGVkT2JqZWN0PihzZWFyY2hPYmplY3QuZ2V0KCkpOworCisgICAgICAg
ICAgICBhcHBlbmRDaGlsZHJlbihzZWFyY2hPYmplY3QsIGlzRm9yd2FyZCwgbnVsbHB0ciwgc2Vh
cmNoU3RhY2spOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiBtb3ZpbmcgYmFja3dhcmRz
LCB0aGUgcGFyZW50IG9iamVjdCBuZWVkcyB0byBiZSBjaGVja2VkLCBiZWNhdXNlIHRlY2huaWNh
bGx5IGl0J3MgImJlZm9yZSIgdGhlIHN0YXJ0aW5nIGVsZW1lbnQuCisgICAgICAgIGlmICghaXNG
b3J3YXJkICYmIHN0YXJ0T2JqZWN0ICE9IHJvb3QuZ2V0KCkgJiYgc3RhcnRPYmplY3QtPmhhc1Rl
eHRSdW5zKCkpCisgICAgICAgICAgICByZXR1cm4gc3RhcnRPYmplY3QuZ2V0KCk7CisKKyAgICAg
ICAgZXhpdE9iamVjdCgqc3RhcnRPYmplY3QpOworICAgICAgICBwcmV2aW91c09iamVjdCA9IHN0
YXJ0T2JqZWN0OworICAgIH0KKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdW5zaWduZWQgQVhU
ZXh0TWFya2VyOjpvZmZzZXRGcm9tUm9vdCgpIGNvbnN0CkBAIC00OTUsMTYgKzU2NCwyNSBAQCBT
dHJpbmcgQVhUZXh0TWFya2VyUmFuZ2U6OnRvU3RyaW5nKCkgY29uc3QKICAgICB9CiAKICAgICBT
dHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICBhdXRvIGVtaXROZXdsaW5lT25FeGl0ID0gWyZdIChB
WElzb2xhdGVkT2JqZWN0JiBvYmplY3QpIHsKKyAgICAgICAgaWYgKCFvYmplY3Quc2hvdWxkRW1p
dE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2RlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gTGlrZSBUZXh0SXRlcmF0b3IsIGRvbid0IGVtaXQgYSBuZXdsaW5lIGlmIHRoZSBt
b3N0IHJlY2VudGx5IGVtaXR0ZWQgY2hhcmFjdGVyIHdhcyBhbHJlYWR5IGEgbmV3bGluZS4KKyAg
ICAgICAgaWYgKHJlc3VsdC5sZW5ndGgoKSAmJiByZXN1bHRbcmVzdWx0Lmxlbmd0aCgpIC0gMV0g
IT0gJ1xuJykKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ1xuJyk7CisgICAgfTsKKwogICAg
IHJlc3VsdC5hcHBlbmQoc3RhcnQucnVucygpLT5zdWJzdHJpbmcoc3RhcnQub2Zmc2V0KCkpKTsK
IAogICAgIC8vIEZJWE1FOiBJZiB3ZSd2ZSBiZWVuIGdpdmVuIHJldmVyc2VkIG1hcmtlcnMsIGku
ZS4gdGhlIGVuZCBtYXJrZXIgYWN0dWFsbHkgY29tZXMgYmVmb3JlIHRoZSBzdGFydCBtYXJrZXIs
CiAgICAgLy8gd2UgbWF5IHdhbnQgdG8gZGV0ZWN0IHRoaXMgYW5kIHRyeSBzZWFyY2hpbmcgQVhE
aXJlY3Rpb246OlByZXZpb3VzPwotICAgIFJlZlB0ciBjdXJyZW50ID0gZmluZE9iamVjdFdpdGhS
dW5zKCpzdGFydC5pc29sYXRlZE9iamVjdCgpLCBBWERpcmVjdGlvbjo6TmV4dCk7CisgICAgUmVm
UHRyIGN1cnJlbnQgPSBmaW5kT2JqZWN0V2l0aFJ1bnMoKnN0YXJ0Lmlzb2xhdGVkT2JqZWN0KCks
IEFYRGlyZWN0aW9uOjpOZXh0LCBzdGQ6Om51bGxvcHQsIGVtaXROZXdsaW5lT25FeGl0KTsKICAg
ICB3aGlsZSAoY3VycmVudCAmJiBjdXJyZW50LT5vYmplY3RJRCgpICE9IGVuZC5vYmplY3RJRCgp
KSB7CiAgICAgICAgIGNvbnN0IGF1dG8qIHJ1bnMgPSBjdXJyZW50LT50ZXh0UnVucygpOwogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcnVucy0+c2l6ZSgpOyBpKyspCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHJ1bnMtPmF0KGkpLnRleHQpOwotICAgICAgICBjdXJyZW50ID0g
ZmluZE9iamVjdFdpdGhSdW5zKCpjdXJyZW50LCBBWERpcmVjdGlvbjo6TmV4dCk7CisgICAgICAg
IGN1cnJlbnQgPSBmaW5kT2JqZWN0V2l0aFJ1bnMoKmN1cnJlbnQsIEFYRGlyZWN0aW9uOjpOZXh0
LCBzdGQ6Om51bGxvcHQsIGVtaXROZXdsaW5lT25FeGl0KTsKICAgICB9CiAgICAgcmVzdWx0LmFw
cGVuZChlbmQucnVucygpLT5zdWJzdHJpbmcoMCwgZW5kLm9mZnNldCgpKSk7CiAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAppbmRleCBkZTZjMDE2MDczNDMuLjg3
ODMxNzYyYjNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKQEAgLTc5LDYgKzc5LDcgQEAKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRDb250cm9s
SW5uZXJFbGVtZW50cy5oIgorI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlVz
ZXJHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CkBAIC0xMTA3LDYgKzExMDgsMTQgQEAgQWNjZXNzaWJpbGl0eUJ1dHRv
blN0YXRlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjaGVja2JveE9yUmFkaW9WYWx1ZSgpIGNv
bnN0CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCk7CiB9CiAKKyNpZiBFTkFCTEUoQVhfVEhSRUFEX1RFWFRfQVBJUykKK2Jvb2wgQWNjZXNzaWJp
bGl0eU5vZGVPYmplY3Q6OnNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSgpIGNv
bnN0Cit7CisgICAgUmVmUHRyIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisgICAgcmV0dXJuIG5vZGUg
PyBXZWJDb3JlOjpzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUoKm5vZGUpIDog
ZmFsc2U7Cit9CisjZW5kaWYKKwogRWxlbWVudCogQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFu
Y2hvckVsZW1lbnQoKSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmgKaW5kZXggMGIyYTIwZWMxYjY2Li5jMDE1ZWY5YWU3MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgK
QEAgLTE0NCw2ICsxNDQsMTAgQEAgcHVibGljOgogCiAgICAgTGF5b3V0UmVjdCBlbGVtZW50UmVj
dCgpIGNvbnN0IG92ZXJyaWRlOwogCisjaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMpCisg
ICAgYm9vbCBzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUoKSBjb25zdCBmaW5h
bDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QoTm9kZSopOwogICAgIHZvaWQgZGV0YWNoUmVtb3RlUGFydHMoQWNjZXNzaWJpbGl0eURl
dGFjaG1lbnRUeXBlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDgxYTQwMGU1OTJmNi4uM2UzMmRi
MDkzYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKQEAgLTQ0NzEsMTAgKzQ0NzEsNiBAQCBzdGF0aWMgYm9vbCBpc0Fj
Y2Vzc2liaWxpdHlPYmplY3RTZWFyY2hNYXRjaEF0SW5kZXgoUmVmUHRyPEFYQ29yZU9iamVjdD4g
YXhPYmplYwogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmlzV2ViQXJlYSgpOwogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVNlYXJjaEtleTo6R3JhcGhpYzoKICAgICAgICAgcmV0dXJuIGF4T2JqZWN0
LT5pc0ltYWdlKCk7Ci0jaWYgRU5BQkxFKEFYX1RIUkVBRF9URVhUX0FQSVMpCi0gICAgY2FzZSBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIYXNUZXh0UnVuczoKLSAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT5oYXNUZXh0UnVucygpOwotI2VuZGlmCiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5OjpIZWFkaW5nTGV2ZWwxOgogICAgICAgICByZXR1cm4gYXhPYmplY3QtPmhlYWRpbmdMZXZl
bCgpID09IDE7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5OjpIZWFkaW5nTGV2ZWwy
OgpAQCAtNDY3OSwxMSArNDY3NSw2IEBAIHZvaWQgZmluZE1hdGNoaW5nT2JqZWN0cyhjb25zdCBB
Y2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEmIGNyaXRlcmlhLCBBWENvcmVPYmplCiAgICAgICAg
ICAgICBhdXRvIHNlYXJjaE9iamVjdCA9IHNlYXJjaFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAg
IHNlYXJjaFN0YWNrLnJlbW92ZUxhc3QoKTsKIAotICAgICAgICAgICAgaWYgKGNyaXRlcmlhLnN0
b3BBdElELmlzVmFsaWQoKSAmJiBzZWFyY2hPYmplY3QtPm9iamVjdElEKCkgPT0gY3JpdGVyaWEu
c3RvcEF0SUQpIHsKLSAgICAgICAgICAgICAgICBBWExPRyhyZXN1bHRzKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGlmIChvYmplY3RNYXRj
aGVzU2VhcmNoQ3JpdGVyaWFXaXRoUmVzdWx0TGltaXQoc2VhcmNoT2JqZWN0LCBjcml0ZXJpYSwg
cmVzdWx0cykpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5kZXggMGFmNzc0MzljMzU1
Li5kNTUyYTZmN2QzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0zODgsNiArMzg4LDcgQEAgcHVibGljOgogI2lmIEVO
QUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgIHZpcnR1YWwgQVhUZXh0UnVucyB0ZXh0UnVu
cygpIHsgcmV0dXJuIHsgfTsgfQogICAgIGJvb2wgaGFzVGV4dFJ1bnMoKSBmaW5hbCB7IHJldHVy
biB0ZXh0UnVucygpLnNpemUoKTsgfQorICAgIGJvb2wgc2hvdWxkRW1pdE5ld2xpbmVzQmVmb3Jl
QW5kQWZ0ZXJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIC8vIFJldHVybnMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBh
bmQgQVhPYmplY3Qgd3JhcHBlcnMgY29ycmVzcG9uZGluZyB0byB0aGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRl
ZE9iamVjdC5jcHAKaW5kZXggM2YyMDMxMzMyYWQxLi42MGFkZWEzMDAyYTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRPYmplY3QuY3BwCkBAIC0zNTgsNiArMzU4LDcgQEAgdm9pZCBBWElzb2xhdGVkT2Jq
ZWN0Ojppbml0aWFsaXplUHJvcGVydGllcyhjb25zdCBSZWY8QWNjZXNzaWJpbGl0eU9iamVjdD4m
IGF4T2IKIAogI2lmIEVOQUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogICAgIHNldFByb3BlcnR5
KEFYUHJvcGVydHlOYW1lOjpUZXh0UnVucywgb2JqZWN0LnRleHRSdW5zKCkpOworICAgIHNldFBy
b3BlcnR5KEFYUHJvcGVydHlOYW1lOjpTaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5v
ZGUsIG9iamVjdC5zaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5vZGUoKSk7CiAjZW5k
aWYKIAogICAgIC8vIFRoZXNlIHByb3BlcnRpZXMgYXJlIG9ubHkgbmVlZGVkIG9uIHRoZSBBWENv
cmVPYmplY3QgaW50ZXJmYWNlIGR1ZSB0byB0aGVpciB1c2UgaW4gQVRTUEksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkT2JqZWN0LmgKaW5kZXggZGFmZmYxZjQ1ZDA0Li4wMmY4MWM4ZTg5NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElz
b2xhdGVkT2JqZWN0LmgKQEAgLTc3LDYgKzc3LDcgQEAgcHVibGljOgogICAgICAgICBjb25zdCBh
dXRvKiBydW5zID0gdGV4dFJ1bnMoKTsKICAgICAgICAgcmV0dXJuIHJ1bnMgJiYgcnVucy0+c2l6
ZSgpOwogICAgIH0KKyAgICBib29sIHNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9k
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGJvb2xBdHRyaWJ1dGVWYWx1ZShBWFByb3BlcnR5TmFt
ZTo6U2hvdWxkRW1pdE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2RlKTsgfQogI2VuZGlmIC8vIEVO
QUJMRShBWF9USFJFQURfVEVYVF9BUElTKQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
aW5kZXggNTFhMDRjNzJlMGNkLi42Yzc0NTM2Y2NiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMjEyLDYgKzIxMiw3IEBAIGVudW0gY2xhc3MgQVhQcm9wZXJ0eU5hbWUgOiB1aW50MTZfdCB7
CiAgICAgU2VsZWN0ZWRDaGlsZHJlbiwKICAgICBTZWxlY3RlZFRleHRSYW5nZSwKICAgICBTZXRT
aXplLAorICAgIFNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFmdGVyTm9kZSwKICAgICBTb3J0
RGlyZWN0aW9uLAogICAgIFNwZWVjaEhpbnQsCiAgICAgU3RyaW5nVmFsdWUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYWIxNGVhZTdjY2UyLi43ZDZkOGRkODk2
YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTg0OCw3ICs4
NDgsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRFbWl0UmVwbGFjZW1lbnRJbnN0ZWFkT2ZOb2RlKGNv
bnN0IE5vZGUmIG5vZGUpCiAgICAgcmV0dXJuIGlzPFRleHRQbGFjZWhvbGRlckVsZW1lbnQ+KG5v
ZGUpOwogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRFbWl0TmV3bGluZXNCZWZvcmVBbmRBZnRlck5v
ZGUoTm9kZSYgbm9kZSkKK2Jvb2wgc2hvdWxkRW1pdE5ld2xpbmVzQmVmb3JlQW5kQWZ0ZXJOb2Rl
KE5vZGUmIG5vZGUpCiB7CiAgICAgLy8gQmxvY2sgZmxvdyAodmVyc3VzIGlubGluZSBmbG93KSBp
cyByZXByZXNlbnRlZCBieSBoYXZpbmcKICAgICAvLyBhIG5ld2xpbmUgYm90aCBiZWZvcmUgYW5k
IGFmdGVyIHRoZSBlbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKaW5k
ZXggOTNiMjJmMTI3ZTU4Li45MTU2ZGU2YTM3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
SXRlcmF0b3IuaApAQCAtOTIsNiArOTIsOCBAQCBwcml2YXRlOgogLy8gYXQgcG9pbnRzIHdoZXJl
IHJlcGxhY2VkIGVsZW1lbnRzIGJyZWFrIHVwIHRoZSB0ZXh0IGZsb3cuIFRoZSB0ZXh0IGlzIGRl
bGl2ZXJlZCBpbgogLy8gdGhlIGNodW5rcyBpdCdzIGFscmVhZHkgc3RvcmVkIGluLCB0byBhdm9p
ZCBjb3B5aW5nIGFueSB0ZXh0LgogCitib29sIHNob3VsZEVtaXROZXdsaW5lc0JlZm9yZUFuZEFm
dGVyTm9kZShOb2RlJik7CisKIGNsYXNzIFRleHRJdGVyYXRvciB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvZGlzcGxheS1jb250ZW50cy1lbmQtdGV4dC1tYXJrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy9kaXNw
bGF5LWNvbnRlbnRzLWVuZC10ZXh0LW1hcmtlci5odG1sCmluZGV4IGFjZWE1NTMzOTM4Yi4uYmM0
OTM4Y2QyZGM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVh
ZC10ZXh0LWFwaXMvZGlzcGxheS1jb250ZW50cy1lbmQtdGV4dC1tYXJrZXIuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvZGlzcGxheS1jb250
ZW50cy1lbmQtdGV4dC1tYXJrZXIuaHRtbApAQCAtNTMsOCArNTMsOCBAQCBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgY29uc3QgdGV4dE1hcmtlclJhbmdlID0gd2Vi
QXJlYS50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOwog
CiAgICAgLy8gRmFpbHMgYmVjYXVzZToKLSAgICAvLyAgMS4gV2UgZG9uJ3QgaW5jbHVkZSBzcGFj
ZXMgYmV0d2VlbiBjZWxscwotICAgIC8vICAyLiBXZSBkb24ndCBpbmNsdWRlIG5ld2xpbmUgY2hh
cmFjdGVycyBiZXR3ZWVuIHJvd3MKKyAgICAvLyAgMS4gV2UgZmFpbCB0byBlbWl0IGEgbmV3bGlu
ZSBiZWZvcmUgZW50ZXJpbmcgYSB0YWJsZSwgcmlnaHQgYWZ0ZXIgIkZvbyB0ZXh0IiAoVGV4dEl0
ZXJhdG9yOjphZHZhbmNlKCkgLT4gVGV4dEl0ZXJhdG9yOjpoYW5kbGVOb25UZXh0Tm9kZSgpIC0+
IFRleHRJdGVyYXRvcjo6cmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKSAtPiBzaG91bGRFbWl0TmV3
bGluZUJlZm9yZU5vZGUoKSByZXR1cm5zIHRydWUpCisgICAgLy8gIDIuIFdlIGRvbid0IGVtaXQg
c3BhY2VzIGJldHdlZW4gY2VsbHMKICAgICAvLyAgMy4gV2UgbWlzcyB0aGUgdGFibGUgY2FwdGlv
biB0ZXh0IGVudGlyZWx5IChpdCBpcyByZW5kZXJlZCBhbmQgc2VsZWN0YWJsZSB0ZXh0LCBzbyB3
ZSBzaG91bGQgYmUgaW5jbHVkaW5nIGl0KQogICAgIG91dHB1dCArPSBgV2ViIGFyZWEgc3RyaW5n
IGZvciBzdGFydC10by1lbmQgdGV4dCBtYXJrZXIgcmFuZ2U6XG5cbiR7d2ViQXJlYS5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKX1cbmA7CiAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRlc3QtY29udGVudHMiKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3Rl
eHQtbWFya2VyLXJhbmdlLXdpdGgtdW5vcmRlcmVkLW1hcmtlcnMuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1yYW5nZS13aXRo
LXVub3JkZXJlZC1tYXJrZXJzLmh0bWwKaW5kZXggOGZmYzBlYjVlMjZkLi4xMTRhZDdhMTIxMzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBp
cy90ZXh0LW1hcmtlci1yYW5nZS13aXRoLXVub3JkZXJlZC1tYXJrZXJzLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXJh
bmdlLXdpdGgtdW5vcmRlcmVkLW1hcmtlcnMuaHRtbApAQCAtNDgsNyArNDgsMTEgQEAgaWYgKGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CiAgICAgICAgIGVuZCA9IGxpbmsubmV4dFRleHRNYXJr
ZXIoZW5kKTsKICAgICB2YXIgcmFuZ2U0ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KGVuZCwgc3RhcnQpOwogICAgIHZhciBleHBlY3RlZCA9ICJncmFwaC5cblxuQ2xpY2siOwotICAg
IC8vIEZJWE1FOiBGYWlscyBiZWNhdXNlIHdlIGFyZSBtaXNzaW5nIHR3byBuZXdsaW5lIGNoYXJh
Y3RlcnMgYmV0d2VlbiAiZ3JhcGguIiBhbmQgIkNsaWNrIi4KKyAgICAvLyBGSVhNRTogV2UgZmFp
bCBiZWNhdXNlIHdlIGFyZSBtaXNzaW5nIG9uZSBuZXdsaW5lIGJldHdlZW4gImdyYXBoLiIgYW5k
ICJDbGljayIuCisgICAgLy8gVGV4dEl0ZXJhdG9yIGVtaXRzIHRoaXMgbmV3bGluZSBhcyBwYXJ0
IG9mIGhhbmRsaW5nIFRleHRJdGVyYXRvcjo6bV9ub2RlRm9yQWRkaXRpb25hbE5ld2xpbmUsIHdo
aWNoIGlzIG9ubHkgc2V0CisgICAgLy8gd2hlbiBzaG91bGRFbWl0RXh0cmFOZXdsaW5lRm9yTm9k
ZSBpcyB0cnVlIHVwb24gVGV4dEl0ZXJhdG9yOjpleGl0Tm9kZS4gc2hvdWxkRW1pdEV4dHJhTmV3
bGluZUZvck5vZGUgaXMgb25seQorICAgIC8vIHRydWUgIldoZW4gdGhlcmUgaXMgYSBzaWduaWZp
Y2FudCBjb2xsYXBzZWQgYm90dG9tIG1hcmdpbiIgKHF1b3RpbmcgdGhhdCBmdW5jdGlvbikgdG8g
Y3JlYXRlIGEgbW9yZSByZWFsaXN0aWMgcmVzdWx0LgorICAgIC8vIENvcHktcGFzdGluZyB0aGUg
dGV4dCB3aXRob3V0IGFueSBBVCBpbiBwbGF5IGRvZXMgbm90IGhhdmUgdGhpcyBleHRyYSBuZXds
aW5lLCBzbyBpdHMgbmVjZXNzaXR5IGlzIHF1ZXN0aW9uYWJsZT8KICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZTQpIiwgImV4cGVjdGVkIik7
CiAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgocmFuZ2U0
KSIsICJleHBlY3RlZC5sZW5ndGgiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXN0cmluZy1lbXB0eS1wYXJh
Z3JhcGhzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFk
LXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZW1wdHktcGFyYWdyYXBocy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMWVjZTZkNjg0NTUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10
ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3RyaW5nLWVtcHR5LXBhcmFncmFwaHMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgdGhhdCB3ZSBhcmUgZ2V0dGluZyB0aGUgY29y
cmVjdCBzdHJpbmcgZm9yIGRvY3VtZW50IHJhbmdlIHdpdGggbmVzdGVkIHBhcmFncmFwaHMuCisK
K09uZSB0d28KKwordGhyZWUKKworZm91cgorZml2ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItc3RyaW5nLWVtcHR5
LXBhcmFncmFwaHMuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRl
eHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmctZW1wdHktcGFyYWdyYXBocy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2I0YjhiMjFlZTFjCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3Rl
eHQtbWFya2VyLXN0cmluZy1lbXB0eS1wYXJhZ3JhcGhzLmh0bWwKQEAgLTAsMCArMSw0NyBAQAor
PCFET0NUWVBFIEhUTUw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBydW5TaW5nbHk9dHJ1ZSBB
Y2Nlc3NpYmlsaXR5VGhyZWFkVGV4dEFwaXNFbmFibGVkPXRydWUgXSAtLT4KKzwhLS0gTmV3IHRl
c3QuIEtlZXAgYWZ0ZXIgYWNjZXNzaWJpbGl0eVRocmVhZFRleHRBcGlzRW5hYmxlZCBpcyBlbmFi
bGVkIGJ5IGRlZmF1bHQuIC0tPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJjb250ZW50Ij4KKzxwPgorICAgIE9uZSB0d28KKyAgICA8cD4KKyAgICAgICAg
dGhyZWUKKyAgICAgICAgPHA+PC9wPgorICAgICAgICBmb3VyCisgICAgPC9wPgorICAgIDxwPjwv
cD4KKyAgICA8cD48L3A+CisgICAgPHA+PC9wPgorICAgIGZpdmUKKzwvcD4KKzwvZGl2PgorCis8
c2NyaXB0PgordmFyIG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgd2UgYXJlIGdldHRpbmcgdGhl
IGNvcnJlY3Qgc3RyaW5nIGZvciBkb2N1bWVudCByYW5nZSB3aXRoIG5lc3RlZCBwYXJhZ3JhcGhz
LlxuXG4iOworCisvLyBGSVhNRTogRmFpbHMgYmVjYXVzZToKKy8vICAxLiBXZSBtaXNzIGEgbmV3
bGluZSBiZXR3ZWVuICJPbmUgdHdvIiBhbmQgInRocmVlIiwgYW5kIGJldHdlZW4gInRocmVlIiBh
bmQgImZvdXIiIGR1ZSB0byBzaG91bGRFbWl0RXh0cmFOZXdsaW5lRm9yTm9kZQorLy8gICAgIGxv
Z2ljIGluIFRleHRJdGVyYXRvciB0aGF0IHdlIGRvbid0IGVtdWxhdGUuCisvLyAgMi4gV2UgYXJl
IG1pc3NpbmcgYSBuZXdsaW5lIGJldHdlZW4gImZvdXIiIGFuZCAiZml2ZSIsIGdlbmVyYXRlZCBi
eSBUZXh0SXRlcmF0b3I6OnJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkgLT4KKy8vICAgICBzaG91
bGRFbWl0TmV3bGluZUJlZm9yZU5vZGUgLT4gc2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8g
PT0gdHJ1ZSBmb3Igc29tZSBub2RlIGJldHdlZW4gdGhlIHR3byBwaWVjZXMgb2YgdGV4dAorCitp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgdmFyIHdlYkFyZWEgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7CisgICAg
dmFyIHN0YXJ0TWFya2VyID0gd2ViQXJlYS5zdGFydFRleHRNYXJrZXI7CisgICAgdmFyIGVuZE1h
cmtlciA9IHdlYkFyZWEuZW5kVGV4dE1hcmtlcjsKKyAgICB2YXIgcmFuZ2UgPSB3ZWJBcmVhLnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVuZE1hcmtlcik7CisKKyAgICBv
dXRwdXQgKz0gd2ViQXJlYS5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworICAgIGRlYnVnKG91dHB1dCk7Cit9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1h
cGlzL3RleHQtbWFya2VyLXN0cmluZy1mb3ItZG9jdW1lbnQtcmFuZ2UuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci1zdHJpbmct
Zm9yLWRvY3VtZW50LXJhbmdlLmh0bWwKaW5kZXggNTc5YTQ0MTE5ZmIwLi5mYjMxZWViMjQ5ZmUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhyZWFkLXRleHQtYXBp
cy90ZXh0LW1hcmtlci1zdHJpbmctZm9yLWRvY3VtZW50LXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9heC10aHJlYWQtdGV4dC1hcGlzL3RleHQtbWFya2VyLXN0cmlu
Zy1mb3ItZG9jdW1lbnQtcmFuZ2UuaHRtbApAQCAtMjcsNiArMjcsMTMgQEAKICAgICAgICAgICB2
YXIgc3RhcnRNYXJrZXIgPSBib2R5LnN0YXJ0VGV4dE1hcmtlcjsKICAgICAgICAgICB2YXIgZW5k
TWFya2VyID0gYm9keS5lbmRUZXh0TWFya2VyOwogICAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFu
Z2UgPSBib2R5LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVuZE1hcmtl
cik7CisgICAgICAgICAgLy8gRklYTUU6IFdlIGZhaWwgYmVjYXVzZSB3ZSBhcmUgbWlzc2luZyBh
IG5ld2xpbmUgYWZ0ZXIgInRleHQiLiBUaGlzIGhhcHBlbnMgYmVjYXVzZSB0aGUgdGFibGUgaXMg
Y29uc2lkZXJlZAorICAgICAgICAgIC8vIGEgbGF5b3V0IHRhYmxlIChub3QgYW4gImV4cG9zZWQi
IEFYIGRhdGEgdGFibGUpLCBhbmQgdGh1cyB0aGUgPHRyPiBpcyBpZ25vcmVkLCB0aHVzIG5vdCBp
biB0aGUgQVggdHJlZS4KKyAgICAgICAgICAvLyBUaGlzIG1lYW5zIHdlIGNhbid0IGVtaXQgYSBu
ZXdsaW5lIHdoZW4gd2UgImV4aXQiIHRoZSA8dHI+IGluIHRoZSB0ZXh0IHRyYXZlcnNhbCBiZWNh
dXNlIGl0J3Mgbm90IHRoZXJlLgorCisgICAgICAgICAgLy8gV2UgYWxzbyBmYWlsIGJlY2F1c2Ug
d2UgZG9uJ3QgZW1pdCBhIG5ld2xpbmUgYWZ0ZXIgIi4uLmhhcyBhZnRlciBhbmNob3IgdHlwZS4i
IFRleHRJdGVyYXRvciBlbWl0cyB0aGlzIG5ld2xpbmUKKyAgICAgICAgICAvLyBhcyBwYXJ0IG9m
IGhhbmRsaW5nIFRleHRJdGVyYXRvcjo6bV9ub2RlRm9yQWRkaXRpb25hbE5ld2xpbmUsIHdoaWNo
IGlzIG9ubHkgc2V0IHdoZW4gc2hvdWxkRW1pdEV4dHJhTmV3bGluZUZvck5vZGUKKyAgICAgICAg
ICAvLyBpcyB0cnVlIHVwb24gVGV4dEl0ZXJhdG9yOjpleGl0Tm9kZS4KICAgICAgICAgICBkZWJ1
ZygiU3RyaW5nOiBcbiIgKyBib2R5LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UpKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25l
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4
dC1tYXJrZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwKaW5kZXggNDZmMjExNzZkYjFmLi5m
NWQ3YjFlYWNjN2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXgtdGhy
ZWFkLXRleHQtYXBpcy90ZXh0LW1hcmtlci13aXRoLXVzZXItc2VsZWN0LW5vbmUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2F4LXRocmVhZC10ZXh0LWFwaXMvdGV4dC1tYXJr
ZXItd2l0aC11c2VyLXNlbGVjdC1ub25lLmh0bWwKQEAgLTIwLDEzICsyMCwxNCBAQCB2YXIgb3V0
cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCBhY2Nlc3NpYmlsaXR5IHRleHQgbWFya2VycyBzdGlsbCB3
b3JrIGV2ZW4gd2hlbiB1cwogaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewog
ICAgIHZhciB0ZXh0RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGV4dCIpOwogICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0RWxlbWVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHRFbGVtZW50KTsKLSAgICAvLyBGSVhNRTog
VGhpcyB3aWxsIHBhc3MgYWZ0ZXIgd2UgaW1wbGVtZW50IHRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQgaW4gdGVybXMgb2YgQWNjZXNzaWJpbGl0eVRocmVhZFRleHRBcGlzRW5hYmxlZC4KKyAgICAv
LyBGSVhNRTogV2UgZG9uJ3QgZW1pdCBuZXdsaW5lcyBmb3IgZWl0aGVyIG9mIHRoZSA8YnI+cyBi
ZWNhdXNlIHRoZXkgYXJlIGlnbm9yZWQsIGNhdXNpbmcgdGhpcyBsZW5ndGggdG8gYmUgd3Jvbmcu
CiAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dEVsZW1lbnQudGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KHRleHRNYXJrZXJSYW5nZSkiLCAiNDUiKTsKIAogICAgIHZhciBzdGFydE1hcmtlciA9IHRleHRF
bGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
OwogICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0RWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dEVs
ZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsK
ICAgICB2YXIgdGV4dCA9IHRleHRFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOworICAgIC8vIEZJWE1FOiBGYWlscyBkdWUgdG8gdGhlIG1pc3NpbmcgPGJy
PiBuZXdsaW5lcyBtZW50aW9uZWQgYWJvdmUuCiAgICAgb3V0cHV0ICs9IGV4cGVjdChgIiR7dGV4
dH0iID09ICJoZWxsbyB0ZXN0IHdvcmxkIHRlc3QgaGVsbG9cXG5saW5rIHRvIGhlcmVcXG50ZXN0
ImAsICJ0cnVlIik7CiAKICAgICB2YXIgbmV4dE1hcmtlciA9IHRleHRFbGVtZW50Lm5leHRUZXh0
TWFya2VyKHN0YXJ0TWFya2VyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>