<?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>229748</bug_id>
          
          <creation_ts>2021-08-31 18:23:12 -0700</creation_ts>
          <short_desc>Eagerly resolve slot elements to simply the code in SlotAssignment</short_desc>
          <delta_ts>2021-09-07 18:21:08 -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>DOM</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>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789187</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-31 18:23:12 -0700</bug_when>
    <thetext>We have a rather elaborate logic to lazily resolve slot elements when there are multiple ones of the same name.

Get rid of this code since that&apos;s a very rare case, and it doesn&apos;t really benefit perf much
since the only case we&apos;d get faster is when scripts inserts &amp; removes slot elements repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789188</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-31 18:24:23 -0700</bug_when>
    <thetext>Actually, it&apos;s even more stupid. It only benefits details element since whenever slot change may be needed, we&apos;d go through the slow path anyway. This is really stupid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789190</commentid>
    <comment_count>2</comment_count>
      <attachid>436980</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-31 18:36:18 -0700</bug_when>
    <thetext>Created attachment 436980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789191</commentid>
    <comment_count>3</comment_count>
      <attachid>436980</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-08-31 18:39:21 -0700</bug_when>
    <thetext>Comment on attachment 436980
Patch

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

&gt; Source/WebCore/dom/SlotAssignment.cpp:-125
&gt; -    if (!m_slotAssignmentsIsValid)
&gt; -        assignSlots(shadowRoot);

FYI, this code was totally unnecessary. hasAssignedNodes calls it internally where it&apos;s needed
In all other cases hasAssignedNodes is not called, we&apos;re just waiting CPU cycle traversing through nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789236</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-01 00:28:21 -0700</bug_when>
    <thetext>Ugh... I need to special case when we&apos;re in the middle of shadow root teardown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789268</commentid>
    <comment_count>5</comment_count>
      <attachid>437003</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-01 02:00:25 -0700</bug_when>
    <thetext>Created attachment 437003
Fixed the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789314</commentid>
    <comment_count>6</comment_count>
      <attachid>437003</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-01 07:13:38 -0700</bug_when>
    <thetext>Comment on attachment 437003
Fixed the crash

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This patch makes the resolution of slot elements eager. Lazily resolution stopping making any sense

stopping -&gt; stopped?

&gt; Source/WebCore/ChangeLog:11
&gt; +        Right now, this lazy optimzation only applies when scripts repeatedly inserts &amp; removes a slot element

Typo: optimzation

&gt; Source/WebCore/ChangeLog:13
&gt; +        and there are assigned nodes to the slot. There is no reason to overcomplicate the slot assignemnt code

typo: assignemnt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789417</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-01 12:35:30 -0700</bug_when>
    <thetext>Will address these. Thanks!

(In reply to Chris Dumez from comment #6)
&gt; Comment on attachment 437003 [details]
&gt; Fixed the crash
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=437003&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        This patch makes the resolution of slot elements eager. Lazily resolution stopping making any sense
&gt; 
&gt; stopping -&gt; stopped?
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        Right now, this lazy optimzation only applies when scripts repeatedly inserts &amp; removes a slot element
&gt; 
&gt; Typo: optimzation
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        and there are assigned nodes to the slot. There is no reason to overcomplicate the slot assignemnt code
&gt; 
&gt; typo: assignemnt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789485</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-01 14:30:59 -0700</bug_when>
    <thetext>Committed r281878 (241208@main): &lt;https://commits.webkit.org/241208@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789487</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-01 14:31:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/82646116&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791295</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-07 18:20:01 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #3)
&gt; Comment on attachment 436980 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436980&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/SlotAssignment.cpp:-125
&gt; &gt; -    if (!m_slotAssignmentsIsValid)
&gt; &gt; -        assignSlots(shadowRoot);
&gt; 
&gt; FYI, this code was totally unnecessary. hasAssignedNodes calls it internally
&gt; where it&apos;s needed
&gt; In all other cases hasAssignedNodes is not called, we&apos;re just waiting CPU
&gt; cycle traversing through nodes.

This was totally wrong LOL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791298</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-09-07 18:21:08 -0700</bug_when>
    <thetext>Committed r282120 (241417@main): &lt;https://commits.webkit.org/241417@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436980</attachid>
            <date>2021-08-31 18:36:18 -0700</date>
            <delta_ts>2021-09-01 02:00:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229748-20210831183617.patch</filename>
            <type>text/plain</type>
            <size>15294</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY5YzJiZGQ3ODhmMjBl
ODQyODMyMDA3NmIxZjUxZGMxYjg5NGZhYy4uZjQzMDJiN2Q3YzFkMmEyOTQ0YjZlNDM1MzRmN2Vi
NjVmZDY3NTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTA4LTMxICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVhZ2VybHkgcmVzb2x2ZSBz
bG90IGVsZW1lbnRzIHRvIHNpbXBseSB0aGUgY29kZSBpbiBTbG90QXNzaWdubWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtl
cyB0aGUgcmVzb2x1dGlvbiBvZiBzbG90IGVsZW1lbnRzIGVhZ2VyLiBMYXppbHkgcmVzb2x1dGlv
biBzdG9wcGluZyBtYWtpbmcgYW55IHNlbnNlCisgICAgICAgIG9uY2Ugc2xvdGNoYW5nZSBldmVu
dCB3YXMgcmVxdWlyZWQgd2hlbmV2ZXIgYSBzbG90IGVsZW1lbnQgd2FzIGluc2VydGVkIG9yIHJl
bW92ZWQgcGVyIHIyMzU2NTAuCisKKyAgICAgICAgUmlnaHQgbm93LCB0aGlzIGxhenkgb3B0aW16
YXRpb24gb25seSBhcHBsaWVzIHdoZW4gc2NyaXB0cyByZXBlYXRlZGx5IGluc2VydHMgJiByZW1v
dmVzIGEgc2xvdCBlbGVtZW50CisgICAgICAgIGluIHN1Y2ggYSBtYW5uZXIgdGhhdCB0aGVyZSBh
cmUgbXVsdGlwbGUgc2xvdCBlbGVtZW50cyBvZiB0aGUgc2FtZSBuYW1lIGluIGEgc2luZ2xlIHNo
YWRvdyB0cmVlLAorICAgICAgICBhbmQgdGhlcmUgYXJlIGFzc2lnbmVkIG5vZGVzIHRvIHRoZSBz
bG90LiBUaGVyZSBpcyBubyByZWFzb24gdG8gb3ZlcmNvbXBsaWNhdGUgdGhlIHNsb3QgYXNzaWdu
ZW1udCBjb2RlCisgICAgICAgIGZvciB0aGlzIGluc2FuZSBlZGdlIGNhc2UuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OmZpbmRBc3NpZ25lZFNsb3QpOgorICAgICAgICAqIGRvbS9TbG90QXNz
aWdubWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6ZmluZEFzc2ln
bmVkU2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1l
bnRCeU5hbWUpOiBBbHdheXMgY2FsbCByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbiB3aGVu
IHRoZXJlCisgICAgICAgIGlzIGFuIGFtYmlndWl0eSBhcyB0byB3aGV0aGVyIHRoaXMgaXMgdGhl
IGZpcnN0IHNsb3QgZWxlbWVudCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdu
bWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUpOiBEaXR0byBmb3IgcmVtb3ZhbCBjYXNlLgor
ICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVyU2xvdE11
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xvdHNC
ZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKTogTW92ZWQgdG8gdGhlIGhlYWRlciBmaWxlLgor
ICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OndpbGxSZW1vdmVBbGxDaGlsZHJlbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFzc2lnbmVkTm9kZXNGb3JTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpmaW5kRmlyc3RTbG90RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZUFsbFNsb3RFbGVt
ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlv
bk9yUmVtb3ZhbCk6IE1vdmVkIGZyb20gY3BwIGZpbGUgbm93IHRoYXQgaXQKKyAgICAgICAgZG9l
c24ndCBvcHRpb25hbGx5IGNhbGwgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cy4gSSdtIG5vdCByZW5h
bWluZyB0aGlzIGZ1bmN0aW9uIGZvciBub3cgc2luY2UgSSB3YW50IHRvCisgICAgICAgIHJlbW92
ZSBpdCBhbHRvZ2V0aGVyIGluIGEgZm9sbG93dXAuCisgICAgICAgIChXZWJDb3JlOjpTbG90QXNz
aWdubWVudDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpyZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKTog
QWx3YXlzIHVwZGF0ZSB0aGUgc2xvdCBtdXRhdGlvbiB2ZXJzaW9uCisgICAgICAgIGFuZCBjbGVh
ciBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gZm9yIHNpbXBsaWNpdHkuIFRoaXMgZXh0cmEg
Y29uZGl0aW9uIHdpbGwgb25seSBhcHBseSBmb3IKKyAgICAgICAgdGhlIGRlYXRpbHMgZWxlbWVu
dCwgd2hpY2ggbm9ib2R5IGNhcmVzIGFib3V0IGl0LiBNZWFud2hpbGUsIHdlJ3JlIHdhc3Rpbmcg
bWFueSBJQyBlbnRyaWVzIGZvciBhbGwgb3RoZXIKKyAgICAgICAgbm9kZSB0eXBlcyB3aGVuZXZl
ciBhIG5vZGUgaXMgaW5zZXJ0ZWQgb3IgcmVtb3ZlZC4gSXQncyBhIHB1cmUgbWFkbmVzcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OndpbGxSZW1vdmVBbGxDaGlsZHJlbik6IERpdHRv
LgorCiAyMDIxLTA4LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIFNoYXJlZEFycmF5QnVmZmVyIHN1cHBvcnQgd2hlbiBDT09QL0NPRVAgaGVhZGVy
cyBhcmUgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGE4NTI4ODIyNWE4NjQ2
YjNmMThlMWE0OGI5YTU2ZGZmMjI1MDdhZDMuLmNjZjAyOGNlZTM3MzJkM2U4OGNmNWM2YmYyZDVl
MWExOTE4MTVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTIyNiw3ICsyMjYs
NyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmZpbmRBc3NpZ25lZFNsb3QoY29uc3Qg
Tm9kZSYgbm9kZSkKICAgICBBU1NFUlQobm9kZS5wYXJlbnROb2RlKCkgPT0gaG9zdCgpKTsKICAg
ICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBtX3Nsb3RBc3NpZ25tZW50LT5maW5kQXNzaWduZWRTbG90KG5vZGUsICp0aGlzKTsKKyAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+ZmluZEFzc2lnbmVkU2xvdChub2RlKTsKIH0KIAog
dm9pZCBTaGFkb3dSb290OjpyZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3Qs
IGNvbnN0IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBjY2VmMGRiYzA2MjM1MWI2NTE0
NmVkNGJmMzAzM2M3ZTUzODExNzllLi4xM2FkNGQ2ZWEyZWZjODE5YTMxN2FlMGE5MTI3ODkwY2Y0
ZTE0NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OwogCiBTbG90
QXNzaWdubWVudDo6flNsb3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OwogCi1IVE1MU2xvdEVsZW1l
bnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUsIFNo
YWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCitIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50Ojpm
aW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFpczxUZXh0Pihu
b2RlKSAmJiAhaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
ODQsNyArODQsNyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kQXNzaWdu
ZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUsIFNoYWRvd1Jvb3QmCiAgICAgaWYgKCFzbG90KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmaW5kRmlyc3RTbG90RWxlbWVudCgq
c2xvdCwgc2hhZG93Um9vdCk7CisgICAgcmV0dXJuIGZpbmRGaXJzdFNsb3RFbGVtZW50KCpzbG90
KTsKIH0KIAogaW5saW5lIGJvb2wgU2xvdEFzc2lnbm1lbnQ6Omhhc0Fzc2lnbmVkTm9kZXMoU2hh
ZG93Um9vdCYgc2hhZG93Um9vdCwgU2xvdCYgc2xvdCkKQEAgLTExNCw2ICsxMTQsMTAgQEAgdm9p
ZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZG8gYSB0YXJnZXRlZCByZWNvbnN0cnVjdGlvbi4KICAgICBzaGFkb3dSb290Lmhvc3QoKS0+aW52
YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwogCisgICAgaWYgKCFtX3Nsb3RF
bGVtZW50Q291bnQpCisgICAgICAgIHNoYWRvd1Jvb3QuaG9zdCgpLT5zZXRIYXNTaGFkb3dSb290
Q29udGFpbmluZ1Nsb3RzKHRydWUpOworICAgIG1fc2xvdEVsZW1lbnRDb3VudCsrOworCiAgICAg
YXV0byYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShuYW1lKTsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbJl0gewogICAgICAgICBt
X3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKQEAgLTEyMSwyOSArMTI1LDE0IEBAIHZv
aWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIEhUTUxTbG90RWxlbWVuCiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQp
Ci0gICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOwotCi0gICAgc2hhZG93Um9vdC5ob3N0
KCktPnNldEhhc1NoYWRvd1Jvb3RDb250YWluaW5nU2xvdHModHJ1ZSk7Ci0gICAgbV9zbG90RWxl
bWVudENvdW50Kys7Ci0KLSAgICBib29sIG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93Um9v
dC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFkb3dS
b290LCBzbG90KTsKLQogICAgIHNsb3QuZWxlbWVudENvdW50Kys7CiAgICAgaWYgKHNsb3QuZWxl
bWVudENvdW50ID09IDEpIHsKICAgICAgICAgc2xvdC5lbGVtZW50ID0gbWFrZVdlYWtQdHIoc2xv
dEVsZW1lbnQpOwotICAgICAgICBpZiAobmVlZHNTbG90Y2hhbmdlRXZlbnQpCisgICAgICAgIGlm
IChzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5v
ZGVzKHNoYWRvd1Jvb3QsIHNsb3QpKQogICAgICAgICAgICAgc2xvdEVsZW1lbnQuZW5xdWV1ZVNs
b3RDaGFuZ2VFdmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFuZWVk
c1Nsb3RjaGFuZ2VFdmVudCkgewotICAgICAgICBBU1NFUlQoc2xvdC5lbGVtZW50IHx8IG1fbmVl
ZHNUb1Jlc29sdmVTbG90RWxlbWVudHMpOwotICAgICAgICBzbG90LmVsZW1lbnQgPSBudWxscHRy
OwotICAgICAgICBtX25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIHJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKHNoYWRv
d1Jvb3QsIFNsb3RNdXRhdGlvblR5cGU6Okluc2VydGlvbik7CiB9CiAKQEAgLTE2NiwzMiArMTU1
LDI2IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlCiAKICAgICBhdXRvKiBzbG90ID0gbV9zbG90
cy5nZXQoc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUobmFtZSkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHNsb3QgJiYgc2xvdC0+aGFzU2xvdEVsZW1lbnRzKCkpOwotICAgIGJvb2wgbmVlZHNTbG90
Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBo
YXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsICpzbG90KTsKIAogICAgIHNsb3QtPmVsZW1lbnRD
b3VudC0tOwogICAgIGlmICghc2xvdC0+ZWxlbWVudENvdW50KSB7CiAgICAgICAgIHNsb3QtPmVs
ZW1lbnQgPSBudWxscHRyOwotICAgICAgICBpZiAobmVlZHNTbG90Y2hhbmdlRXZlbnQgJiYgbV9z
bG90UmVzb2x1dGlvblZlcnNpb24gIT0gbV9zbG90TXV0YXRpb25WZXJzaW9uKQorICAgICAgICBi
b29sIGhhc05vdFJlc29sdmVkQWxsU2xvdHMgPSBtX3Nsb3RSZXNvbHV0aW9uVmVyc2lvbiAhPSBt
X3Nsb3RNdXRhdGlvblZlcnNpb247CisgICAgICAgIGlmIChzaGFkb3dSb290LnNob3VsZEZpcmVT
bG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsICpzbG90KSAm
JiBoYXNOb3RSZXNvbHZlZEFsbFNsb3RzKQogICAgICAgICAgICAgc2xvdEVsZW1lbnQuZW5xdWV1
ZVNsb3RDaGFuZ2VFdmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFu
ZWVkc1Nsb3RjaGFuZ2VFdmVudCkgewotICAgICAgICBBU1NFUlQoc2xvdC0+ZWxlbWVudCB8fCBt
X25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzKTsKLSAgICAgICAgc2xvdC0+ZWxlbWVudCA9IG51
bGxwdHI7Ci0gICAgICAgIG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVudHMgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgYm9vbCBlbGVtZW50V2FzUmVuYW1lZCA9ICFvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbDsKICAgICBpZiAoZWxlbWVudFdhc1JlbmFtZWQg
JiYgc2xvdC0+ZWxlbWVudCA9PSAmc2xvdEVsZW1lbnQpCiAgICAgICAgIHNsb3RFbGVtZW50LmVu
cXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKIAotICAgIC8vIEEgcHJldmlvdXMgaW52b2NhdGlvbiB0
byByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbiBkdXJpbmcgdGhpcyByZW1vdmFsIGhhcyB1
cGRhdGVkIHRoaXMgc2xvdC4KLSAgICBBU1NFUlQoc2xvdC0+ZWxlbWVudCB8fCAobV9zbG90UmVz
b2x1dGlvblZlcnNpb24gPT0gbV9zbG90TXV0YXRpb25WZXJzaW9uICYmICFmaW5kU2xvdEVsZW1l
bnQoc2hhZG93Um9vdCwgbmFtZSkpKTsKICAgICBpZiAoc2xvdC0+ZWxlbWVudCkgewogICAgICAg
ICByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihzaGFkb3dSb290LCBlbGVtZW50V2FzUmVu
YW1lZCA/IFNsb3RNdXRhdGlvblR5cGU6Okluc2VydGlvbiA6IFNsb3RNdXRhdGlvblR5cGU6OlJl
bW92YWwsCiAgICAgICAgICAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gPyBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCA6IG51bGxwdHIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIEEgcHJldmlvdXMgaW52b2NhdGlvbiB0byByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRh
dGlvbiBkdXJpbmcgdGhpcyByZW1vdmFsIGhhcyB1cGRhdGVkIHRoaXMgc2xvdC4KKyAgICAgICAg
QVNTRVJUKG1fc2xvdFJlc29sdXRpb25WZXJzaW9uID09IG1fc2xvdE11dGF0aW9uVmVyc2lvbiAm
JiAhZmluZFNsb3RFbGVtZW50KHNoYWRvd1Jvb3QsIG5hbWUpKTsKICAgICB9CiAKICAgICBpZiAo
c2xvdC0+b2xkRWxlbWVudCA9PSAmc2xvdEVsZW1lbnQpIHsKQEAgLTIwNyw3ICsxOTAsNiBAQCB2
b2lkIFNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihTaGFkb3dS
b290JiBzaGFkb3dSb290LCBTbG90TQogICAgIG1fc2xvdFJlc29sdXRpb25WZXJzaW9uID0gbV9z
bG90TXV0YXRpb25WZXJzaW9uOwogCiAgICAgQVNTRVJUKCFzdWJ0cmVlVG9Ta2lwIHx8IG11dGF0
aW9uVHlwZSA9PSBTbG90TXV0YXRpb25UeXBlOjpSZW1vdmFsKTsKLSAgICBtX25lZWRzVG9SZXNv
bHZlU2xvdEVsZW1lbnRzID0gZmFsc2U7CiAKICAgICBmb3IgKGF1dG8mIHNsb3QgOiBtX3Nsb3Rz
LnZhbHVlcygpKQogICAgICAgICBzbG90LT5zZWVuRmlyc3RFbGVtZW50ID0gZmFsc2U7CkBAIC0y
ODMsMjMgKzI2NSw2IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnNsb3RGYWxsYmFja0RpZENoYW5n
ZShIVE1MU2xvdEVsZW1lbnQmIHNsb3RFbGVtZW50LCBTaGFkb3dSCiAgICAgICAgIHNsb3RFbGVt
ZW50LmVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVudDo6
cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbChTaGFkb3dSb290JiBzaGFk
b3dSb290KQotewotICAgIEFTU0VSVChzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZl
bnQoKSk7Ci0gICAgbV9zbG90TXV0YXRpb25WZXJzaW9uKys7Ci0gICAgbV93aWxsQmVSZW1vdmlu
Z0FsbENoaWxkcmVuID0gZmFsc2U7Ci0gICAgaWYgKG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVu
dHMpCi0gICAgICAgIHJlc29sdmVBbGxTbG90RWxlbWVudHMoc2hhZG93Um9vdCk7Ci19Ci0KLXZv
aWQgU2xvdEFzc2lnbm1lbnQ6OndpbGxSZW1vdmVBbGxDaGlsZHJlbihTaGFkb3dSb290JiBzaGFk
b3dSb290KQotewotICAgIG1fc2xvdE11dGF0aW9uVmVyc2lvbisrOwotICAgIG1fd2lsbEJlUmVt
b3ZpbmdBbGxDaGlsZHJlbiA9IHRydWU7Ci0gICAgaWYgKG1fbmVlZHNUb1Jlc29sdmVTbG90RWxl
bWVudHMpCi0gICAgICAgIHJlc29sdmVBbGxTbG90RWxlbWVudHMoc2hhZG93Um9vdCk7Ci19Ci0K
IHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QoY29uc3QgQXRvbVN0cmluZyYgc2xv
dEF0dHJWYWx1ZSwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKIHsKICAgICBhdXRvJiBzbG90TmFt
ZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RBdHRyVmFsdWUpOwpAQCAtMzEzLDcg
KzI3OCw3IEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3QoY29uc3QgQXRvbVN0
cmluZyYgc2xvdEF0dHJWYWx1ZSwgU2hhZG93Um9vdCYKICAgICBzbG90LT5hc3NpZ25lZE5vZGVz
LmNsZWFyKCk7CiAgICAgbV9zbG90QXNzaWdubWVudHNJc1ZhbGlkID0gZmFsc2U7CiAKLSAgICBh
dXRvIHNsb3RFbGVtZW50ID0gbWFrZVJlZlB0cihmaW5kRmlyc3RTbG90RWxlbWVudCgqc2xvdCwg
c2hhZG93Um9vdCkpOworICAgIGF1dG8gc2xvdEVsZW1lbnQgPSBtYWtlUmVmUHRyKGZpbmRGaXJz
dFNsb3RFbGVtZW50KCpzbG90KSk7CiAgICAgaWYgKCFzbG90RWxlbWVudCkKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zNDQsNyArMzA5LDcgQEAgY29uc3QgVmVjdG9yPFdlYWtQdHI8Tm9kZT4+KiBT
bG90QXNzaWdubWVudDo6YXNzaWduZWROb2Rlc0ZvclNsb3QoY29uc3QgSFRNTFNsb3QKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSRUxFQVNFX0FTU0VSVChzbG90LT5oYXNTbG90RWxl
bWVudHMoKSk7Ci0gICAgaWYgKHNsb3QtPmhhc0R1cGxpY2F0ZWRTbG90RWxlbWVudHMoKSAmJiBm
aW5kRmlyc3RTbG90RWxlbWVudCgqc2xvdCwgc2hhZG93Um9vdCkgIT0gJnNsb3RFbGVtZW50KQor
ICAgIGlmIChzbG90LT5oYXNEdXBsaWNhdGVkU2xvdEVsZW1lbnRzKCkgJiYgZmluZEZpcnN0U2xv
dEVsZW1lbnQoKnNsb3QpICE9ICZzbG90RWxlbWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICByZXR1cm4gJnNsb3QtPmFzc2lnbmVkTm9kZXM7CkBAIC0zNzIsMTAgKzMzNyw5IEBA
IGNvbnN0IEF0b21TdHJpbmcmIFNsb3RBc3NpZ25tZW50OjpzbG90TmFtZUZvckhvc3RDaGlsZChj
b25zdCBOb2RlJiBjaGlsZCkgY29uc3QKICAgICByZXR1cm4gc2xvdE5hbWVGcm9tU2xvdEF0dHJp
YnV0ZShjaGlsZCk7CiB9CiAKLUhUTUxTbG90RWxlbWVudCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRG
aXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3QsIFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCitIVE1M
U2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kRmlyc3RTbG90RWxlbWVudChTbG90JiBz
bG90KQogewotICAgIGlmIChzbG90LnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKQotICAgICAg
ICByZXNvbHZlQWxsU2xvdEVsZW1lbnRzKHNoYWRvd1Jvb3QpOworICAgIFJFTEVBU0VfQVNTRVJU
KCFzbG90LnNob3VsZFJlc29sdmVTbG90RWxlbWVudCgpKTsKIAogICAgIEFTU0VSVCghc2xvdC5l
bGVtZW50IHx8IG1fc2xvdEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjay5jb250YWlucyhzbG90
LmVsZW1lbnQuZ2V0KCkpKTsKICAgICBBU1NFUlQoISFzbG90LmVsZW1lbnQgPT0gISFzbG90LmVs
ZW1lbnRDb3VudCk7CkBAIC0zODMsMzMgKzM0Nyw2IEBAIEhUTUxTbG90RWxlbWVudCogU2xvdEFz
c2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3QsIFNoYWRvd1Jvb3QmIHNo
CiAgICAgcmV0dXJuIHNsb3QuZWxlbWVudC5nZXQoKTsKIH0KIAotdm9pZCBTbG90QXNzaWdubWVu
dDo6cmVzb2x2ZUFsbFNsb3RFbGVtZW50cyhTaGFkb3dSb290JiBzaGFkb3dSb290KQotewotICAg
IEFTU0VSVChtX25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzKTsKLSAgICBtX25lZWRzVG9SZXNv
bHZlU2xvdEVsZW1lbnRzID0gZmFsc2U7Ci0KLSAgICAvLyBGSVhNRTogSXQncyBpbmVmZmljaWVu
dCB0byByZXNldCBhbGwgdmFsdWVzLiBXZSBzaG91bGQgYmUgYWJsZSB0byB2b2lkIHRoaXMgaW4g
Y29tbW9uIGNhc2UuCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fc2xvdHMpCi0gICAgICAgIGVu
dHJ5LnZhbHVlLT5zZWVuRmlyc3RFbGVtZW50ID0gZmFsc2U7Ci0KLSAgICB1bnNpZ25lZCBzbG90
Q291bnQgPSBtX3Nsb3RzLnNpemUoKTsKLSAgICBmb3IgKGF1dG8mIHNsb3RFbGVtZW50IDogZGVz
Y2VuZGFudHNPZlR5cGU8SFRNTFNsb3RFbGVtZW50PihzaGFkb3dSb290KSkgewotICAgICAgICBh
dXRvJiBzbG90TmFtZSA9IHNsb3ROYW1lRnJvbUF0dHJpYnV0ZVZhbHVlKHNsb3RFbGVtZW50LmF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obmFtZUF0dHIpKTsKLQotICAgICAgICBhdXRv
KiBzbG90ID0gbV9zbG90cy5nZXQoc2xvdE5hbWUpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChz
bG90KTsgLy8gc2xvdCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gYSBzbG90IHdhcyBpbnNl
cnRlZC4KLQotICAgICAgICBpZiAoc2xvdC0+c2VlbkZpcnN0RWxlbWVudCkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBzbG90LT5zZWVuRmlyc3RFbGVtZW50ID0gdHJ1ZTsKLQotICAg
ICAgICBzbG90LT5lbGVtZW50ID0gbWFrZVdlYWtQdHIoc2xvdEVsZW1lbnQpOwotICAgICAgICBz
bG90Q291bnQtLTsKLSAgICAgICAgaWYgKCFzbG90Q291bnQpCi0gICAgICAgICAgICBicmVhazsK
LSAgICB9Ci19Ci0KIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OmFzc2lnblNsb3RzKFNoYWRvd1Jvb3Qm
IHNoYWRvd1Jvb3QpCiB7CiAgICAgQVNTRVJUKCFtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAppbmRleCA3MWM1MDE1OTkwNWMwNTk0OTYwMzE5
NGJkNDAyNTc0OWQ4YjJhNWNkLi5lZTVjOWRiZjBjMzFiM2VlYzA3ZmNlMWZlMTZlZjlhZWQ2OWFl
YWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaApAQCAtNDgsMTQgKzQ4LDE1IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBkZWZhdWx0U2xvdE5hbWUo
KSB7IHJldHVybiBlbXB0eUF0b20oKTsgfQogCi0gICAgSFRNTFNsb3RFbGVtZW50KiBmaW5kQXNz
aWduZWRTbG90KGNvbnN0IE5vZGUmLCBTaGFkb3dSb290Jik7CisgICAgSFRNTFNsb3RFbGVtZW50
KiBmaW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmKTsKIAogICAgIHZvaWQgcmVuYW1lU2xvdEVs
ZW1lbnQoSFRNTFNsb3RFbGVtZW50JiwgY29uc3QgQXRvbVN0cmluZyYgb2xkTmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYgbmV3TmFtZSwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgYWRkU2xvdEVsZW1l
bnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3Qm
KTsKICAgICB2b2lkIHJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcmLCBI
VE1MU2xvdEVsZW1lbnQmLCBDb250YWluZXJOb2RlKiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlRm9y
UmVtb3ZhbCwgU2hhZG93Um9vdCYpOwogICAgIHZvaWQgc2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhU
TUxTbG90RWxlbWVudCYsIFNoYWRvd1Jvb3QmKTsKLSAgICB2b2lkIHJlc29sdmVTbG90c0JlZm9y
ZU5vZGVJbnNlcnRpb25PclJlbW92YWwoU2hhZG93Um9vdCYpOwotICAgIHZvaWQgd2lsbFJlbW92
ZUFsbENoaWxkcmVuKFNoYWRvd1Jvb3QmKTsKKworICAgIHZvaWQgcmVzb2x2ZVNsb3RzQmVmb3Jl
Tm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpOworICAgIHZvaWQgd2lsbFJlbW92ZUFsbENoaWxkcmVu
KCk7CiAKICAgICB2b2lkIGRpZENoYW5nZVNsb3QoY29uc3QgQXRvbVN0cmluZyYsIFNoYWRvd1Jv
b3QmKTsKIApAQCAtNzUsOSArNzYsOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIHNob3VsZFJl
c29sdmVTbG90RWxlbWVudCgpIHsgcmV0dXJuICFlbGVtZW50ICYmIGVsZW1lbnRDb3VudDsgfQog
CiAgICAgICAgIFdlYWtQdHI8SFRNTFNsb3RFbGVtZW50PiBlbGVtZW50OwotICAgICAgICBXZWFr
UHRyPEhUTUxTbG90RWxlbWVudD4gb2xkRWxlbWVudDsKKyAgICAgICAgV2Vha1B0cjxIVE1MU2xv
dEVsZW1lbnQ+IG9sZEVsZW1lbnQ7IC8vIFNldCBieSByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRh
dGlvbiB0byBkaXNwYXRjaCBzbG90Y2hhbmdlIGluIHRyZWUgb3JkZXIuCiAgICAgICAgIHVuc2ln
bmVkIGVsZW1lbnRDb3VudCB7IDAgfTsKLSAgICAgICAgYm9vbCBzZWVuRmlyc3RFbGVtZW50IHsg
ZmFsc2UgfTsKKyAgICAgICAgYm9vbCBzZWVuRmlyc3RFbGVtZW50IHsgZmFsc2UgfTsgLy8gVXNl
ZCBpbiByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbi4KICAgICAgICAgVmVjdG9yPFdlYWtQ
dHI8Tm9kZT4+IGFzc2lnbmVkTm9kZXM7CiAgICAgfTsKIApAQCAtODcsOCArODgsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFtZUZvckhvc3RDaGls
ZChjb25zdCBOb2RlJikgY29uc3Q7CiAKLSAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRGaXJzdFNs
b3RFbGVtZW50KFNsb3QmLCBTaGFkb3dSb290Jik7Ci0gICAgdm9pZCByZXNvbHZlQWxsU2xvdEVs
ZW1lbnRzKFNoYWRvd1Jvb3QmKTsKKyAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRGaXJzdFNsb3RF
bGVtZW50KFNsb3QmKTsKIAogICAgIHZvaWQgYXNzaWduU2xvdHMoU2hhZG93Um9vdCYpOwogICAg
IHZvaWQgYXNzaWduVG9TbG90KE5vZGUmIGNoaWxkLCBjb25zdCBBdG9tU3RyaW5nJiBzbG90TmFt
ZSk7CkBAIC05OSw3ICs5OSw2IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxIVE1MU2xvdEVsZW1l
bnQqPiBtX3Nsb3RFbGVtZW50c0ZvckNvbnNpc3RlbmN5Q2hlY2s7CiAjZW5kaWYKIAotICAgIGJv
b2wgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cyB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Ns
b3RBc3NpZ25tZW50c0lzVmFsaWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93aWxsQmVSZW1vdmlu
Z0FsbENoaWxkcmVuIHsgZmFsc2UgfTsKICAgICB1bnNpZ25lZCBtX3Nsb3RNdXRhdGlvblZlcnNp
b24geyAwIH07CkBAIC0xMDcsMTYgKzEwNiwyOCBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1f
c2xvdEVsZW1lbnRDb3VudCB7IDAgfTsKIH07CiAKK2lubGluZSB2b2lkIFNsb3RBc3NpZ25tZW50
OjpyZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCkKK3sKKyAgICBtX3Ns
b3RNdXRhdGlvblZlcnNpb24rKzsKKyAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gPSBm
YWxzZTsKK30KKworaW5saW5lIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OndpbGxSZW1vdmVBbGxDaGls
ZHJlbigpCit7CisgICAgbV9zbG90TXV0YXRpb25WZXJzaW9uKys7CisgICAgbV93aWxsQmVSZW1v
dmluZ0FsbENoaWxkcmVuID0gdHJ1ZTsKK30KKwogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6cmVz
b2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9yUmVtb3ZhbCgpCiB7Ci0gICAgaWYgKFVOTElL
RUxZKHNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBtX3Nsb3RBc3NpZ25tZW50KSkKLSAg
ICAgICAgbV9zbG90QXNzaWdubWVudC0+cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlvbk9y
UmVtb3ZhbCgqdGhpcyk7CisgICAgaWYgKFVOTElLRUxZKG1fc2xvdEFzc2lnbm1lbnQpKQorICAg
ICAgICBtX3Nsb3RBc3NpZ25tZW50LT5yZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JS
ZW1vdmFsKCk7CiB9CiAKIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OndpbGxSZW1vdmVBbGxDaGls
ZHJlbihDb250YWluZXJOb2RlJikKIHsKLSAgICBpZiAoVU5MSUtFTFkoc2hvdWxkRmlyZVNsb3Rj
aGFuZ2VFdmVudCgpICYmIG1fc2xvdEFzc2lnbm1lbnQpKQotICAgICAgICBtX3Nsb3RBc3NpZ25t
ZW50LT53aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKnRoaXMpOworICAgIGlmIChVTkxJS0VMWShtX3Ns
b3RBc3NpZ25tZW50KSkKKyAgICAgICAgbV9zbG90QXNzaWdubWVudC0+d2lsbFJlbW92ZUFsbENo
aWxkcmVuKCk7CiB9CiAKIGlubGluZSB2b2lkIFNoYWRvd1Jvb3Q6OmRpZFJlbW92ZUFsbENoaWxk
cmVuT2ZTaGFkb3dIb3N0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437003</attachid>
            <date>2021-09-01 02:00:25 -0700</date>
            <delta_ts>2021-09-01 07:13:38 -0700</delta_ts>
            <desc>Fixed the crash</desc>
            <filename>bug-229748-20210901020024.patch</filename>
            <type>text/plain</type>
            <size>16538</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWY5YzJiZGQ3ODhmMjBl
ODQyODMyMDA3NmIxZjUxZGMxYjg5NGZhYy4uZjQzMDJiN2Q3YzFkMmEyOTQ0YjZlNDM1MzRmN2Vi
NjVmZDY3NTBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIxLTA4LTMxICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEVhZ2VybHkgcmVzb2x2ZSBz
bG90IGVsZW1lbnRzIHRvIHNpbXBseSB0aGUgY29kZSBpbiBTbG90QXNzaWdubWVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtl
cyB0aGUgcmVzb2x1dGlvbiBvZiBzbG90IGVsZW1lbnRzIGVhZ2VyLiBMYXppbHkgcmVzb2x1dGlv
biBzdG9wcGluZyBtYWtpbmcgYW55IHNlbnNlCisgICAgICAgIG9uY2Ugc2xvdGNoYW5nZSBldmVu
dCB3YXMgcmVxdWlyZWQgd2hlbmV2ZXIgYSBzbG90IGVsZW1lbnQgd2FzIGluc2VydGVkIG9yIHJl
bW92ZWQgcGVyIHIyMzU2NTAuCisKKyAgICAgICAgUmlnaHQgbm93LCB0aGlzIGxhenkgb3B0aW16
YXRpb24gb25seSBhcHBsaWVzIHdoZW4gc2NyaXB0cyByZXBlYXRlZGx5IGluc2VydHMgJiByZW1v
dmVzIGEgc2xvdCBlbGVtZW50CisgICAgICAgIGluIHN1Y2ggYSBtYW5uZXIgdGhhdCB0aGVyZSBh
cmUgbXVsdGlwbGUgc2xvdCBlbGVtZW50cyBvZiB0aGUgc2FtZSBuYW1lIGluIGEgc2luZ2xlIHNo
YWRvdyB0cmVlLAorICAgICAgICBhbmQgdGhlcmUgYXJlIGFzc2lnbmVkIG5vZGVzIHRvIHRoZSBz
bG90LiBUaGVyZSBpcyBubyByZWFzb24gdG8gb3ZlcmNvbXBsaWNhdGUgdGhlIHNsb3QgYXNzaWdu
ZW1udCBjb2RlCisgICAgICAgIGZvciB0aGlzIGluc2FuZSBlZGdlIGNhc2UuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBvYnNlcnZhYmxlIGJlaGF2aW9y
IGNoYW5nZS4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNoYWRvd1Jvb3Q6OmZpbmRBc3NpZ25lZFNsb3QpOgorICAgICAgICAqIGRvbS9TbG90QXNz
aWdubWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6ZmluZEFzc2ln
bmVkU2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1l
bnRCeU5hbWUpOiBBbHdheXMgY2FsbCByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbiB3aGVu
IHRoZXJlCisgICAgICAgIGlzIGFuIGFtYmlndWl0eSBhcyB0byB3aGV0aGVyIHRoaXMgaXMgdGhl
IGZpcnN0IHNsb3QgZWxlbWVudCBvciBub3QuCisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdu
bWVudDo6cmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUpOiBEaXR0byBmb3IgcmVtb3ZhbCBjYXNlLgor
ICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVyU2xvdE11
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xvdHNC
ZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKTogTW92ZWQgdG8gdGhlIGhlYWRlciBmaWxlLgor
ICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OndpbGxSZW1vdmVBbGxDaGlsZHJlbik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmRpZENoYW5nZVNsb3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2xvdEFzc2lnbm1lbnQ6OmFzc2lnbmVkTm9kZXNGb3JTbG90
KToKKyAgICAgICAgKFdlYkNvcmU6OlNsb3RBc3NpZ25tZW50OjpmaW5kRmlyc3RTbG90RWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZUFsbFNsb3RFbGVt
ZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1Nsb3RBc3NpZ25tZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTbG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2VydGlv
bk9yUmVtb3ZhbCk6IE1vdmVkIGZyb20gY3BwIGZpbGUgbm93IHRoYXQgaXQKKyAgICAgICAgZG9l
c24ndCBvcHRpb25hbGx5IGNhbGwgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cy4gSSdtIG5vdCByZW5h
bWluZyB0aGlzIGZ1bmN0aW9uIGZvciBub3cgc2luY2UgSSB3YW50IHRvCisgICAgICAgIHJlbW92
ZSBpdCBhbHRvZ2V0aGVyIGluIGEgZm9sbG93dXAuCisgICAgICAgIChXZWJDb3JlOjpTbG90QXNz
aWdubWVudDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dSb290OjpyZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKTog
QWx3YXlzIHVwZGF0ZSB0aGUgc2xvdCBtdXRhdGlvbiB2ZXJzaW9uCisgICAgICAgIGFuZCBjbGVh
ciBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gZm9yIHNpbXBsaWNpdHkuIFRoaXMgZXh0cmEg
Y29uZGl0aW9uIHdpbGwgb25seSBhcHBseSBmb3IKKyAgICAgICAgdGhlIGRlYXRpbHMgZWxlbWVu
dCwgd2hpY2ggbm9ib2R5IGNhcmVzIGFib3V0IGl0LiBNZWFud2hpbGUsIHdlJ3JlIHdhc3Rpbmcg
bWFueSBJQyBlbnRyaWVzIGZvciBhbGwgb3RoZXIKKyAgICAgICAgbm9kZSB0eXBlcyB3aGVuZXZl
ciBhIG5vZGUgaXMgaW5zZXJ0ZWQgb3IgcmVtb3ZlZC4gSXQncyBhIHB1cmUgbWFkbmVzcy4KKyAg
ICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OndpbGxSZW1vdmVBbGxDaGlsZHJlbik6IERpdHRv
LgorCiAyMDIxLTA4LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRW5hYmxlIFNoYXJlZEFycmF5QnVmZmVyIHN1cHBvcnQgd2hlbiBDT09QL0NPRVAgaGVhZGVy
cyBhcmUgdXNlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IGE4NTI4ODIyNWE4NjQ2
YjNmMThlMWE0OGI5YTU2ZGZmMjI1MDdhZDMuLmNjZjAyOGNlZTM3MzJkM2U4OGNmNWM2YmYyZDVl
MWExOTE4MTVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTIyNiw3ICsyMjYs
NyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNoYWRvd1Jvb3Q6OmZpbmRBc3NpZ25lZFNsb3QoY29uc3Qg
Tm9kZSYgbm9kZSkKICAgICBBU1NFUlQobm9kZS5wYXJlbnROb2RlKCkgPT0gaG9zdCgpKTsKICAg
ICBpZiAoIW1fc2xvdEFzc2lnbm1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJl
dHVybiBtX3Nsb3RBc3NpZ25tZW50LT5maW5kQXNzaWduZWRTbG90KG5vZGUsICp0aGlzKTsKKyAg
ICByZXR1cm4gbV9zbG90QXNzaWdubWVudC0+ZmluZEFzc2lnbmVkU2xvdChub2RlKTsKIH0KIAog
dm9pZCBTaGFkb3dSb290OjpyZW5hbWVTbG90RWxlbWVudChIVE1MU2xvdEVsZW1lbnQmIHNsb3Qs
IGNvbnN0IEF0b21TdHJpbmcmIG9sZE5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIG5ld05hbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1Nsb3RBc3NpZ25tZW50LmNwcAppbmRleCBjY2VmMGRiYzA2MjM1MWI2NTE0
NmVkNGJmMzAzM2M3ZTUzODExNzllLi5iOTQwYWExMGUxYzg4ZmJkYmEzMWU2NmE2YzNlNTY2MTQ5
MDViMTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5jcHAKQEAgLTc1LDcgKzc1
LDcgQEAgU2xvdEFzc2lnbm1lbnQ6OlNsb3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OwogCiBTbG90
QXNzaWdubWVudDo6flNsb3RBc3NpZ25tZW50KCkgPSBkZWZhdWx0OwogCi1IVE1MU2xvdEVsZW1l
bnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUsIFNo
YWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCitIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50Ojpm
aW5kQXNzaWduZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKCFpczxUZXh0Pihu
b2RlKSAmJiAhaXM8RWxlbWVudD4obm9kZSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
ODQsNyArODQsNyBAQCBIVE1MU2xvdEVsZW1lbnQqIFNsb3RBc3NpZ25tZW50OjpmaW5kQXNzaWdu
ZWRTbG90KGNvbnN0IE5vZGUmIG5vZGUsIFNoYWRvd1Jvb3QmCiAgICAgaWYgKCFzbG90KQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiBmaW5kRmlyc3RTbG90RWxlbWVudCgq
c2xvdCwgc2hhZG93Um9vdCk7CisgICAgcmV0dXJuIGZpbmRGaXJzdFNsb3RFbGVtZW50KCpzbG90
KTsKIH0KIAogaW5saW5lIGJvb2wgU2xvdEFzc2lnbm1lbnQ6Omhhc0Fzc2lnbmVkTm9kZXMoU2hh
ZG93Um9vdCYgc2hhZG93Um9vdCwgU2xvdCYgc2xvdCkKQEAgLTExNCw2ICsxMTQsMTAgQEAgdm9p
ZCBTbG90QXNzaWdubWVudDo6YWRkU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYg
bmFtZSwgSFRNTFNsb3RFbGVtZW4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8g
ZG8gYSB0YXJnZXRlZCByZWNvbnN0cnVjdGlvbi4KICAgICBzaGFkb3dSb290Lmhvc3QoKS0+aW52
YWxpZGF0ZVN0eWxlQW5kUmVuZGVyZXJzRm9yU3VidHJlZSgpOwogCisgICAgaWYgKCFtX3Nsb3RF
bGVtZW50Q291bnQpCisgICAgICAgIHNoYWRvd1Jvb3QuaG9zdCgpLT5zZXRIYXNTaGFkb3dSb290
Q29udGFpbmluZ1Nsb3RzKHRydWUpOworICAgIG1fc2xvdEVsZW1lbnRDb3VudCsrOworCiAgICAg
YXV0byYgc2xvdE5hbWUgPSBzbG90TmFtZUZyb21BdHRyaWJ1dGVWYWx1ZShuYW1lKTsKICAgICBh
dXRvIGFkZFJlc3VsdCA9IG1fc2xvdHMuZW5zdXJlKHNsb3ROYW1lLCBbJl0gewogICAgICAgICBt
X3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKQEAgLTEyMSwyOSArMTI1LDE0IEBAIHZv
aWQgU2xvdEFzc2lnbm1lbnQ6OmFkZFNsb3RFbGVtZW50QnlOYW1lKGNvbnN0IEF0b21TdHJpbmcm
IG5hbWUsIEhUTUxTbG90RWxlbWVuCiAgICAgfSk7CiAgICAgYXV0byYgc2xvdCA9ICphZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgaWYgKCFtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQp
Ci0gICAgICAgIGFzc2lnblNsb3RzKHNoYWRvd1Jvb3QpOwotCi0gICAgc2hhZG93Um9vdC5ob3N0
KCktPnNldEhhc1NoYWRvd1Jvb3RDb250YWluaW5nU2xvdHModHJ1ZSk7Ci0gICAgbV9zbG90RWxl
bWVudENvdW50Kys7Ci0KLSAgICBib29sIG5lZWRzU2xvdGNoYW5nZUV2ZW50ID0gc2hhZG93Um9v
dC5zaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50KCkgJiYgaGFzQXNzaWduZWROb2RlcyhzaGFkb3dS
b290LCBzbG90KTsKLQogICAgIHNsb3QuZWxlbWVudENvdW50Kys7CiAgICAgaWYgKHNsb3QuZWxl
bWVudENvdW50ID09IDEpIHsKICAgICAgICAgc2xvdC5lbGVtZW50ID0gbWFrZVdlYWtQdHIoc2xv
dEVsZW1lbnQpOwotICAgICAgICBpZiAobmVlZHNTbG90Y2hhbmdlRXZlbnQpCisgICAgICAgIGlm
IChzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5v
ZGVzKHNoYWRvd1Jvb3QsIHNsb3QpKQogICAgICAgICAgICAgc2xvdEVsZW1lbnQuZW5xdWV1ZVNs
b3RDaGFuZ2VFdmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFuZWVk
c1Nsb3RjaGFuZ2VFdmVudCkgewotICAgICAgICBBU1NFUlQoc2xvdC5lbGVtZW50IHx8IG1fbmVl
ZHNUb1Jlc29sdmVTbG90RWxlbWVudHMpOwotICAgICAgICBzbG90LmVsZW1lbnQgPSBudWxscHRy
OwotICAgICAgICBtX25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzID0gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQogICAgIHJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKHNoYWRv
d1Jvb3QsIFNsb3RNdXRhdGlvblR5cGU6Okluc2VydGlvbik7CiB9CiAKQEAgLTE2NiwzNSArMTU1
LDMwIEBAIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlbW92ZVNsb3RFbGVtZW50QnlOYW1lKGNvbnN0
IEF0b21TdHJpbmcmIG5hbWUsIEhUTUxTbG90RWxlCiAKICAgICBhdXRvKiBzbG90ID0gbV9zbG90
cy5nZXQoc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUobmFtZSkpOwogICAgIFJFTEVBU0VfQVNT
RVJUKHNsb3QgJiYgc2xvdC0+aGFzU2xvdEVsZW1lbnRzKCkpOwotICAgIGJvb2wgbmVlZHNTbG90
Y2hhbmdlRXZlbnQgPSBzaGFkb3dSb290LnNob3VsZEZpcmVTbG90Y2hhbmdlRXZlbnQoKSAmJiBo
YXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsICpzbG90KTsKIAogICAgIHNsb3QtPmVsZW1lbnRD
b3VudC0tOwogICAgIGlmICghc2xvdC0+ZWxlbWVudENvdW50KSB7CiAgICAgICAgIHNsb3QtPmVs
ZW1lbnQgPSBudWxscHRyOwotICAgICAgICBpZiAobmVlZHNTbG90Y2hhbmdlRXZlbnQgJiYgbV9z
bG90UmVzb2x1dGlvblZlcnNpb24gIT0gbV9zbG90TXV0YXRpb25WZXJzaW9uKQorICAgICAgICBi
b29sIGhhc05vdFJlc29sdmVkQWxsU2xvdHMgPSBtX3Nsb3RSZXNvbHV0aW9uVmVyc2lvbiAhPSBt
X3Nsb3RNdXRhdGlvblZlcnNpb247CisgICAgICAgIGlmIChzaGFkb3dSb290LnNob3VsZEZpcmVT
bG90Y2hhbmdlRXZlbnQoKSAmJiBoYXNBc3NpZ25lZE5vZGVzKHNoYWRvd1Jvb3QsICpzbG90KSAm
JiBoYXNOb3RSZXNvbHZlZEFsbFNsb3RzKQogICAgICAgICAgICAgc2xvdEVsZW1lbnQuZW5xdWV1
ZVNsb3RDaGFuZ2VFdmVudCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFu
ZWVkc1Nsb3RjaGFuZ2VFdmVudCkgewotICAgICAgICBBU1NFUlQoc2xvdC0+ZWxlbWVudCB8fCBt
X25lZWRzVG9SZXNvbHZlU2xvdEVsZW1lbnRzKTsKLSAgICAgICAgc2xvdC0+ZWxlbWVudCA9IG51
bGxwdHI7Ci0gICAgICAgIG1fbmVlZHNUb1Jlc29sdmVTbG90RWxlbWVudHMgPSB0cnVlOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgYm9vbCBlbGVtZW50V2FzUmVuYW1lZCA9ICFvbGRQ
YXJlbnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbDsKICAgICBpZiAoZWxlbWVudFdhc1JlbmFtZWQg
JiYgc2xvdC0+ZWxlbWVudCA9PSAmc2xvdEVsZW1lbnQpCiAgICAgICAgIHNsb3RFbGVtZW50LmVu
cXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKIAotICAgIC8vIEEgcHJldmlvdXMgaW52b2NhdGlvbiB0
byByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbiBkdXJpbmcgdGhpcyByZW1vdmFsIGhhcyB1
cGRhdGVkIHRoaXMgc2xvdC4KLSAgICBBU1NFUlQoc2xvdC0+ZWxlbWVudCB8fCAobV9zbG90UmVz
b2x1dGlvblZlcnNpb24gPT0gbV9zbG90TXV0YXRpb25WZXJzaW9uICYmICFmaW5kU2xvdEVsZW1l
bnQoc2hhZG93Um9vdCwgbmFtZSkpKTsKICAgICBpZiAoc2xvdC0+ZWxlbWVudCkgewogICAgICAg
ICByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRhdGlvbihzaGFkb3dSb290LCBlbGVtZW50V2FzUmVu
YW1lZCA/IFNsb3RNdXRhdGlvblR5cGU6Okluc2VydGlvbiA6IFNsb3RNdXRhdGlvblR5cGU6OlJl
bW92YWwsCiAgICAgICAgICAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRyZW4gPyBvbGRQYXJl
bnRPZlJlbW92ZWRUcmVlRm9yUmVtb3ZhbCA6IG51bGxwdHIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIC8vIEEgcHJldmlvdXMgaW52b2NhdGlvbiB0byByZXNvbHZlU2xvdHNBZnRlclNsb3RNdXRh
dGlvbiBkdXJpbmcgdGhpcyByZW1vdmFsIGhhcyB1cGRhdGVkIHRoaXMgc2xvdC4KKyAgICAgICAg
QVNTRVJUKG1fc2xvdFJlc29sdXRpb25WZXJzaW9uID09IG1fc2xvdE11dGF0aW9uVmVyc2lvbiAm
JiAhZmluZFNsb3RFbGVtZW50KHNoYWRvd1Jvb3QsIG5hbWUpKTsKICAgICB9CiAKICAgICBpZiAo
c2xvdC0+b2xkRWxlbWVudCA9PSAmc2xvdEVsZW1lbnQpIHsKKyAgICAgICAgQVNTRVJUKHNoYWRv
d1Jvb3Quc2hvdWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpKTsKICAgICAgICAgc2xvdEVsZW1lbnQu
ZW5xdWV1ZVNsb3RDaGFuZ2VFdmVudCgpOwogICAgICAgICBzbG90LT5vbGRFbGVtZW50ID0gbnVs
bHB0cjsKICAgICB9CkBAIC0yMDcsNyArMTkxLDYgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6cmVz
b2x2ZVNsb3RzQWZ0ZXJTbG90TXV0YXRpb24oU2hhZG93Um9vdCYgc2hhZG93Um9vdCwgU2xvdE0K
ICAgICBtX3Nsb3RSZXNvbHV0aW9uVmVyc2lvbiA9IG1fc2xvdE11dGF0aW9uVmVyc2lvbjsKIAog
ICAgIEFTU0VSVCghc3VidHJlZVRvU2tpcCB8fCBtdXRhdGlvblR5cGUgPT0gU2xvdE11dGF0aW9u
VHlwZTo6UmVtb3ZhbCk7Ci0gICAgbV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cyA9IGZhbHNl
OwogCiAgICAgZm9yIChhdXRvJiBzbG90IDogbV9zbG90cy52YWx1ZXMoKSkKICAgICAgICAgc2xv
dC0+c2VlbkZpcnN0RWxlbWVudCA9IGZhbHNlOwpAQCAtMjI2LDYgKzIwOSw3IEBAIHZvaWQgU2xv
dEFzc2lnbm1lbnQ6OnJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uKFNoYWRvd1Jvb3QmIHNo
YWRvd1Jvb3QsIFNsb3RNCiAgICAgICAgIH0KICAgICAgICAgaWYgKGN1cnJlbnRTbG90LT5zZWVu
Rmlyc3RFbGVtZW50KSB7CiAgICAgICAgICAgICBpZiAobXV0YXRpb25UeXBlID09IFNsb3RNdXRh
dGlvblR5cGU6Okluc2VydGlvbiAmJiBjdXJyZW50U2xvdC0+b2xkRWxlbWVudCA9PSBjdXJyZW50
RWxlbWVudCkgeworICAgICAgICAgICAgICAgIEFTU0VSVChzaGFkb3dSb290LnNob3VsZEZpcmVT
bG90Y2hhbmdlRXZlbnQoKSk7CiAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQtPmVucXVl
dWVTbG90Q2hhbmdlRXZlbnQoKTsKICAgICAgICAgICAgICAgICBjdXJyZW50U2xvdC0+b2xkRWxl
bWVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICB9CkBAIC0yMzMsOSArMjE3LDggQEAgdm9pZCBT
bG90QXNzaWdubWVudDo6cmVzb2x2ZVNsb3RzQWZ0ZXJTbG90TXV0YXRpb24oU2hhZG93Um9vdCYg
c2hhZG93Um9vdCwgU2xvdE0KICAgICAgICAgfQogICAgICAgICBjdXJyZW50U2xvdC0+c2VlbkZp
cnN0RWxlbWVudCA9IHRydWU7CiAgICAgICAgIHNsb3RDb3VudCsrOwotICAgICAgICBBU1NFUlQo
Y3VycmVudFNsb3QtPmVsZW1lbnQgfHwgIWhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9vdCwgKmN1
cnJlbnRTbG90KSk7CiAgICAgICAgIGlmIChjdXJyZW50U2xvdC0+ZWxlbWVudCAhPSBjdXJyZW50
RWxlbWVudCkgewotICAgICAgICAgICAgaWYgKGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9vdCwg
KmN1cnJlbnRTbG90KSkgeworICAgICAgICAgICAgaWYgKHNoYWRvd1Jvb3Quc2hvdWxkRmlyZVNs
b3RjaGFuZ2VFdmVudCgpICYmIGhhc0Fzc2lnbmVkTm9kZXMoc2hhZG93Um9vdCwgKmN1cnJlbnRT
bG90KSkgewogICAgICAgICAgICAgICAgIGN1cnJlbnRTbG90LT5vbGRFbGVtZW50ID0gV1RGTW92
ZShjdXJyZW50U2xvdC0+ZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgY3VycmVudEVsZW1lbnQt
PmVucXVldWVTbG90Q2hhbmdlRXZlbnQoKTsKICAgICAgICAgICAgIH0KQEAgLTI4MywyMyArMjY2
LDYgQEAgdm9pZCBTbG90QXNzaWdubWVudDo6c2xvdEZhbGxiYWNrRGlkQ2hhbmdlKEhUTUxTbG90
RWxlbWVudCYgc2xvdEVsZW1lbnQsIFNoYWRvd1IKICAgICAgICAgc2xvdEVsZW1lbnQuZW5xdWV1
ZVNsb3RDaGFuZ2VFdmVudCgpOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjpyZXNvbHZlU2xv
dHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCi17
Ci0gICAgQVNTRVJUKHNoYWRvd1Jvb3Quc2hvdWxkRmlyZVNsb3RjaGFuZ2VFdmVudCgpKTsKLSAg
ICBtX3Nsb3RNdXRhdGlvblZlcnNpb24rKzsKLSAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRy
ZW4gPSBmYWxzZTsKLSAgICBpZiAobV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cykKLSAgICAg
ICAgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cyhzaGFkb3dSb290KTsKLX0KLQotdm9pZCBTbG90QXNz
aWdubWVudDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCi17
Ci0gICAgbV9zbG90TXV0YXRpb25WZXJzaW9uKys7Ci0gICAgbV93aWxsQmVSZW1vdmluZ0FsbENo
aWxkcmVuID0gdHJ1ZTsKLSAgICBpZiAobV9uZWVkc1RvUmVzb2x2ZVNsb3RFbGVtZW50cykKLSAg
ICAgICAgcmVzb2x2ZUFsbFNsb3RFbGVtZW50cyhzaGFkb3dSb290KTsKLX0KLQogdm9pZCBTbG90
QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiBzbG90QXR0clZhbHVl
LCBTaGFkb3dSb290JiBzaGFkb3dSb290KQogewogICAgIGF1dG8mIHNsb3ROYW1lID0gc2xvdE5h
bWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEF0dHJWYWx1ZSk7CkBAIC0zMTMsNyArMjc5LDcgQEAg
dm9pZCBTbG90QXNzaWdubWVudDo6ZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiBzbG90
QXR0clZhbHVlLCBTaGFkb3dSb290JgogICAgIHNsb3QtPmFzc2lnbmVkTm9kZXMuY2xlYXIoKTsK
ICAgICBtX3Nsb3RBc3NpZ25tZW50c0lzVmFsaWQgPSBmYWxzZTsKIAotICAgIGF1dG8gc2xvdEVs
ZW1lbnQgPSBtYWtlUmVmUHRyKGZpbmRGaXJzdFNsb3RFbGVtZW50KCpzbG90LCBzaGFkb3dSb290
KSk7CisgICAgYXV0byBzbG90RWxlbWVudCA9IG1ha2VSZWZQdHIoZmluZEZpcnN0U2xvdEVsZW1l
bnQoKnNsb3QpKTsKICAgICBpZiAoIXNsb3RFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKQEAg
LTM0NCw3ICszMTAsNyBAQCBjb25zdCBWZWN0b3I8V2Vha1B0cjxOb2RlPj4qIFNsb3RBc3NpZ25t
ZW50Ojphc3NpZ25lZE5vZGVzRm9yU2xvdChjb25zdCBIVE1MU2xvdAogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QtPmhhc1Nsb3RFbGVtZW50cygpKTsK
LSAgICBpZiAoc2xvdC0+aGFzRHVwbGljYXRlZFNsb3RFbGVtZW50cygpICYmIGZpbmRGaXJzdFNs
b3RFbGVtZW50KCpzbG90LCBzaGFkb3dSb290KSAhPSAmc2xvdEVsZW1lbnQpCisgICAgaWYgKHNs
b3QtPmhhc0R1cGxpY2F0ZWRTbG90RWxlbWVudHMoKSAmJiBmaW5kRmlyc3RTbG90RWxlbWVudCgq
c2xvdCkgIT0gJnNsb3RFbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJl
dHVybiAmc2xvdC0+YXNzaWduZWROb2RlczsKQEAgLTM3MiwxMCArMzM4LDkgQEAgY29uc3QgQXRv
bVN0cmluZyYgU2xvdEFzc2lnbm1lbnQ6OnNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5vZGUm
IGNoaWxkKSBjb25zdAogICAgIHJldHVybiBzbG90TmFtZUZyb21TbG90QXR0cmlidXRlKGNoaWxk
KTsKIH0KIAotSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVudDo6ZmluZEZpcnN0U2xvdEVs
ZW1lbnQoU2xvdCYgc2xvdCwgU2hhZG93Um9vdCYgc2hhZG93Um9vdCkKK0hUTUxTbG90RWxlbWVu
dCogU2xvdEFzc2lnbm1lbnQ6OmZpbmRGaXJzdFNsb3RFbGVtZW50KFNsb3QmIHNsb3QpCiB7Ci0g
ICAgaWYgKHNsb3Quc2hvdWxkUmVzb2x2ZVNsb3RFbGVtZW50KCkpCi0gICAgICAgIHJlc29sdmVB
bGxTbG90RWxlbWVudHMoc2hhZG93Um9vdCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNsb3Quc2hv
dWxkUmVzb2x2ZVNsb3RFbGVtZW50KCkpOwogCiAgICAgQVNTRVJUKCFzbG90LmVsZW1lbnQgfHwg
bV9zbG90RWxlbWVudHNGb3JDb25zaXN0ZW5jeUNoZWNrLmNvbnRhaW5zKHNsb3QuZWxlbWVudC5n
ZXQoKSkpOwogICAgIEFTU0VSVCghIXNsb3QuZWxlbWVudCA9PSAhIXNsb3QuZWxlbWVudENvdW50
KTsKQEAgLTM4MywzMyArMzQ4LDYgQEAgSFRNTFNsb3RFbGVtZW50KiBTbG90QXNzaWdubWVudDo6
ZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xvdCYgc2xvdCwgU2hhZG93Um9vdCYgc2gKICAgICByZXR1
cm4gc2xvdC5lbGVtZW50LmdldCgpOwogfQogCi12b2lkIFNsb3RBc3NpZ25tZW50OjpyZXNvbHZl
QWxsU2xvdEVsZW1lbnRzKFNoYWRvd1Jvb3QmIHNoYWRvd1Jvb3QpCi17Ci0gICAgQVNTRVJUKG1f
bmVlZHNUb1Jlc29sdmVTbG90RWxlbWVudHMpOwotICAgIG1fbmVlZHNUb1Jlc29sdmVTbG90RWxl
bWVudHMgPSBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBJdCdzIGluZWZmaWNpZW50IHRvIHJlc2V0
IGFsbCB2YWx1ZXMuIFdlIHNob3VsZCBiZSBhYmxlIHRvIHZvaWQgdGhpcyBpbiBjb21tb24gY2Fz
ZS4KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9zbG90cykKLSAgICAgICAgZW50cnkudmFsdWUt
PnNlZW5GaXJzdEVsZW1lbnQgPSBmYWxzZTsKLQotICAgIHVuc2lnbmVkIHNsb3RDb3VudCA9IG1f
c2xvdHMuc2l6ZSgpOwotICAgIGZvciAoYXV0byYgc2xvdEVsZW1lbnQgOiBkZXNjZW5kYW50c09m
VHlwZTxIVE1MU2xvdEVsZW1lbnQ+KHNoYWRvd1Jvb3QpKSB7Ci0gICAgICAgIGF1dG8mIHNsb3RO
YW1lID0gc2xvdE5hbWVGcm9tQXR0cmlidXRlVmFsdWUoc2xvdEVsZW1lbnQuYXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihuYW1lQXR0cikpOwotCi0gICAgICAgIGF1dG8qIHNsb3QgPSBt
X3Nsb3RzLmdldChzbG90TmFtZSk7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QpOyAvLyBz
bG90IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBhIHNsb3Qgd2FzIGluc2VydGVkLgotCi0g
ICAgICAgIGlmIChzbG90LT5zZWVuRmlyc3RFbGVtZW50KQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIHNsb3QtPnNlZW5GaXJzdEVsZW1lbnQgPSB0cnVlOwotCi0gICAgICAgIHNsb3Qt
PmVsZW1lbnQgPSBtYWtlV2Vha1B0cihzbG90RWxlbWVudCk7Ci0gICAgICAgIHNsb3RDb3VudC0t
OwotICAgICAgICBpZiAoIXNsb3RDb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQogdm9pZCBTbG90QXNzaWdubWVudDo6YXNzaWduU2xvdHMoU2hhZG93Um9vdCYgc2hhZG93Um9v
dCkKIHsKICAgICBBU1NFUlQoIW1fc2xvdEFzc2lnbm1lbnRzSXNWYWxpZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2xvdEFzc2lnbm1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TbG90QXNzaWdubWVudC5oCmluZGV4IDcxYzUwMTU5OTA1YzA1OTQ5NjAzMTk0YmQ0MDI1NzQ5
ZDhiMmE1Y2QuLmVlNWM5ZGJmMGMzMWIzZWVjMDdmY2UxZmUxNmVmOWFlZDY5YWVhY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TbG90QXNzaWdubWVudC5oCkBAIC00OCwxNCArNDgsMTUgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGRlZmF1bHRTbG90TmFtZSgpIHsgcmV0dXJu
IGVtcHR5QXRvbSgpOyB9CiAKLSAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3NpZ25lZFNsb3Qo
Y29uc3QgTm9kZSYsIFNoYWRvd1Jvb3QmKTsKKyAgICBIVE1MU2xvdEVsZW1lbnQqIGZpbmRBc3Np
Z25lZFNsb3QoY29uc3QgTm9kZSYpOwogCiAgICAgdm9pZCByZW5hbWVTbG90RWxlbWVudChIVE1M
U2xvdEVsZW1lbnQmLCBjb25zdCBBdG9tU3RyaW5nJiBvbGROYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiBuZXdOYW1lLCBTaGFkb3dSb290Jik7CiAgICAgdm9pZCBhZGRTbG90RWxlbWVudEJ5TmFtZShj
b25zdCBBdG9tU3RyaW5nJiwgSFRNTFNsb3RFbGVtZW50JiwgU2hhZG93Um9vdCYpOwogICAgIHZv
aWQgcmVtb3ZlU2xvdEVsZW1lbnRCeU5hbWUoY29uc3QgQXRvbVN0cmluZyYsIEhUTUxTbG90RWxl
bWVudCYsIENvbnRhaW5lck5vZGUqIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWVGb3JSZW1vdmFsLCBT
aGFkb3dSb290Jik7CiAgICAgdm9pZCBzbG90RmFsbGJhY2tEaWRDaGFuZ2UoSFRNTFNsb3RFbGVt
ZW50JiwgU2hhZG93Um9vdCYpOwotICAgIHZvaWQgcmVzb2x2ZVNsb3RzQmVmb3JlTm9kZUluc2Vy
dGlvbk9yUmVtb3ZhbChTaGFkb3dSb290Jik7Ci0gICAgdm9pZCB3aWxsUmVtb3ZlQWxsQ2hpbGRy
ZW4oU2hhZG93Um9vdCYpOworCisgICAgdm9pZCByZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0
aW9uT3JSZW1vdmFsKCk7CisgICAgdm9pZCB3aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKTsKIAogICAg
IHZvaWQgZGlkQ2hhbmdlU2xvdChjb25zdCBBdG9tU3RyaW5nJiwgU2hhZG93Um9vdCYpOwogCkBA
IC03NSw5ICs3Niw5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgc2hvdWxkUmVzb2x2ZVNsb3RF
bGVtZW50KCkgeyByZXR1cm4gIWVsZW1lbnQgJiYgZWxlbWVudENvdW50OyB9CiAKICAgICAgICAg
V2Vha1B0cjxIVE1MU2xvdEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgIFdlYWtQdHI8SFRNTFNs
b3RFbGVtZW50PiBvbGRFbGVtZW50OworICAgICAgICBXZWFrUHRyPEhUTUxTbG90RWxlbWVudD4g
b2xkRWxlbWVudDsgLy8gU2V0IGJ5IHJlc29sdmVTbG90c0FmdGVyU2xvdE11dGF0aW9uIHRvIGRp
c3BhdGNoIHNsb3RjaGFuZ2UgaW4gdHJlZSBvcmRlci4KICAgICAgICAgdW5zaWduZWQgZWxlbWVu
dENvdW50IHsgMCB9OwotICAgICAgICBib29sIHNlZW5GaXJzdEVsZW1lbnQgeyBmYWxzZSB9Owor
ICAgICAgICBib29sIHNlZW5GaXJzdEVsZW1lbnQgeyBmYWxzZSB9OyAvLyBVc2VkIGluIHJlc29s
dmVTbG90c0FmdGVyU2xvdE11dGF0aW9uLgogICAgICAgICBWZWN0b3I8V2Vha1B0cjxOb2RlPj4g
YXNzaWduZWROb2RlczsKICAgICB9OwogCkBAIC04Nyw4ICs4OCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lRm9ySG9zdENoaWxkKGNvbnN0IE5v
ZGUmKSBjb25zdDsKIAotICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZpcnN0U2xvdEVsZW1lbnQo
U2xvdCYsIFNoYWRvd1Jvb3QmKTsKLSAgICB2b2lkIHJlc29sdmVBbGxTbG90RWxlbWVudHMoU2hh
ZG93Um9vdCYpOworICAgIEhUTUxTbG90RWxlbWVudCogZmluZEZpcnN0U2xvdEVsZW1lbnQoU2xv
dCYpOwogCiAgICAgdm9pZCBhc3NpZ25TbG90cyhTaGFkb3dSb290Jik7CiAgICAgdm9pZCBhc3Np
Z25Ub1Nsb3QoTm9kZSYgY2hpbGQsIGNvbnN0IEF0b21TdHJpbmcmIHNsb3ROYW1lKTsKQEAgLTk5
LDcgKzk5LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PEhUTUxTbG90RWxlbWVudCo+IG1fc2xv
dEVsZW1lbnRzRm9yQ29uc2lzdGVuY3lDaGVjazsKICNlbmRpZgogCi0gICAgYm9vbCBtX25lZWRz
VG9SZXNvbHZlU2xvdEVsZW1lbnRzIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2xvdEFzc2lnbm1l
bnRzSXNWYWxpZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3dpbGxCZVJlbW92aW5nQWxsQ2hpbGRy
ZW4geyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fc2xvdE11dGF0aW9uVmVyc2lvbiB7IDAgfTsK
QEAgLTEwNywxNiArMTA2LDI4IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9zbG90RWxlbWVu
dENvdW50IHsgMCB9OwogfTsKIAoraW5saW5lIHZvaWQgU2xvdEFzc2lnbm1lbnQ6OnJlc29sdmVT
bG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKQoreworICAgIG1fc2xvdE11dGF0aW9u
VmVyc2lvbisrOworICAgIG1fd2lsbEJlUmVtb3ZpbmdBbGxDaGlsZHJlbiA9IGZhbHNlOworfQor
CitpbmxpbmUgdm9pZCBTbG90QXNzaWdubWVudDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKCkKK3sK
KyAgICBtX3Nsb3RNdXRhdGlvblZlcnNpb24rKzsKKyAgICBtX3dpbGxCZVJlbW92aW5nQWxsQ2hp
bGRyZW4gPSB0cnVlOworfQorCiBpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpyZXNvbHZlU2xvdHNC
ZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCkKIHsKLSAgICBpZiAoVU5MSUtFTFkoc2hvdWxk
RmlyZVNsb3RjaGFuZ2VFdmVudCgpICYmIG1fc2xvdEFzc2lnbm1lbnQpKQotICAgICAgICBtX3Ns
b3RBc3NpZ25tZW50LT5yZXNvbHZlU2xvdHNCZWZvcmVOb2RlSW5zZXJ0aW9uT3JSZW1vdmFsKCp0
aGlzKTsKKyAgICBpZiAoVU5MSUtFTFkobV9zbG90QXNzaWdubWVudCkpCisgICAgICAgIG1fc2xv
dEFzc2lnbm1lbnQtPnJlc29sdmVTbG90c0JlZm9yZU5vZGVJbnNlcnRpb25PclJlbW92YWwoKTsK
IH0KIAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6d2lsbFJlbW92ZUFsbENoaWxkcmVuKENvbnRh
aW5lck5vZGUmKQogewotICAgIGlmIChVTkxJS0VMWShzaG91bGRGaXJlU2xvdGNoYW5nZUV2ZW50
KCkgJiYgbV9zbG90QXNzaWdubWVudCkpCi0gICAgICAgIG1fc2xvdEFzc2lnbm1lbnQtPndpbGxS
ZW1vdmVBbGxDaGlsZHJlbigqdGhpcyk7CisgICAgaWYgKFVOTElLRUxZKG1fc2xvdEFzc2lnbm1l
bnQpKQorICAgICAgICBtX3Nsb3RBc3NpZ25tZW50LT53aWxsUmVtb3ZlQWxsQ2hpbGRyZW4oKTsK
IH0KIAogaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6ZGlkUmVtb3ZlQWxsQ2hpbGRyZW5PZlNoYWRv
d0hvc3QoKQo=
</data>
<flag name="review"
          id="460111"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>