<?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>229103</bug_id>
          
          <creation_ts>2021-08-13 18:12:45 -0700</creation_ts>
          <short_desc>[LFC][IFC] Add support for out-of-flow box static positioning</short_desc>
          <delta_ts>2021-08-22 17:03:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1784292</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-13 18:12:45 -0700</bug_when>
    <thetext>e.g. https://www.w3.org/TR/CSS22/visudet.html#abs-non-replaced-height

For the purposes of this section and the next, the term &quot;static position&quot; (of an element) refers, roughly, to the position an element would have had in the normal flow. More precisely, the static position for &apos;top&apos; is the distance from the top edge of the containing block to the top margin edge of a hypothetical box that would have been the first box of the element if its specified &apos;position&apos; value had been &apos;static&apos; and its specified &apos;float&apos; had been &apos;none&apos; and its specified &apos;clear&apos; had been &apos;none&apos;. (Note that due to the rules in section 9.7 this might require also assuming a different computed value for &apos;display&apos;.) The value is negative if the hypothetical box is above the containing block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784293</commentid>
    <comment_count>1</comment_count>
      <attachid>435531</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-13 18:23:13 -0700</bug_when>
    <thetext>Created attachment 435531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784312</commentid>
    <comment_count>2</comment_count>
      <attachid>435531</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-08-13 22:45:14 -0700</bug_when>
    <thetext>Comment on attachment 435531
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:260
&gt; +    // Instead we figure out this static position after the inline layout by looking at the previous sibling (or parent) box&apos;s geometry and

Are there any cases where we should be looking for the next siblings box?

&gt; Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:281
&gt; +                // FIXME: In very rare cases, the previous box&apos;s content might have been completely collapsed and left us with no run.

I suppose we&apos;ll need the previous run-generating box.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784320</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-14 03:13:18 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #2)
&gt; Comment on attachment 435531 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435531&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:260
&gt; &gt; +    // Instead we figure out this static position after the inline layout by looking at the previous sibling (or parent) box&apos;s geometry and
&gt; 
&gt; Are there any cases where we should be looking for the next siblings box?
&gt; 
&gt; &gt; Source/WebCore/layout/formattingContexts/inline/InlineFormattingContext.cpp:281
&gt; &gt; +                // FIXME: In very rare cases, the previous box&apos;s content might have been completely collapsed and left us with no run.
&gt; 
&gt; I suppose we&apos;ll need the previous run-generating box.
Yeah, that&apos;s exactly what we need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784360</commentid>
    <comment_count>4</comment_count>
      <attachid>435553</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-14 18:03:57 -0700</bug_when>
    <thetext>Created attachment 435553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786069</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-20 18:13:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/82193466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786249</commentid>
    <comment_count>6</comment_count>
      <attachid>436118</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-22 10:14:21 -0700</bug_when>
    <thetext>Created attachment 436118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786276</commentid>
    <comment_count>7</comment_count>
      <attachid>436130</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-22 15:37:03 -0700</bug_when>
    <thetext>Created attachment 436130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786293</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-22 17:03:18 -0700</bug_when>
    <thetext>Committed r281424 (240814@main): &lt;https://commits.webkit.org/240814@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436130.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435531</attachid>
            <date>2021-08-13 18:23:13 -0700</date>
            <delta_ts>2021-08-14 18:03:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229103-20210813182312.patch</filename>
            <type>text/plain</type>
            <size>12936</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTMzMzRmYTBiNGUzZWQw
OGUxZTcyZjFiYjEwZjQyNGUyNGI3NDhjMi4uNTc5YjIwOGVhNWM0ZTEyMWJhMjczNmVlYTNmNzE4
M2U0NzI0MWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBw
b3J0IGZvciBvdXQtb2YtZmxvdyBib3ggc3RhdGljIHBvc2l0aW9uaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBh
cmF0aW9uIGZvciBlbmFibGluZyBwb3NpdGlvbmVkIGNvbnRlbnQgZm9yIElGQyBoYW5kbGluZy4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGNvbXB1dGUgdGhlIHN0YXRpYyBwb3NpdGlvbiBm
b3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQuCisgICAgICAgIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0aW9uIG9mIGFuIG91dC1v
Zi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24gd2FzIHNldCB0byBzdGF0
aWMuCisgICAgICAgIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisg
ICAgICAgIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0
aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0CisgICAgICAgIHRoZSBwcmV2aW91cyBzaWJs
aW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZCBwbGFjZSB0aGUgb3V0LW9mLWZsb3cg
Ym94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgorCisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5G
bG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aDoKKwogMjAyMS0wOC0xMyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0lGQ10gQW5vbnltb3VzIGlubGluZSB0ZXh0IGJveCBpcyBub3QgYW4gaW5saW5lIGJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGE5MGE5NDU3ZGI1ZjBjOWJhMzk1OWVkMDBmMTcwY2M5MWM3ZDNkZDQuLjBmNmI0ODQxYTVjYjcy
YWIyNTg4MWIzYTY1MTI0MTQwMzViOWRkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEzMywxOSArMTMzLDIxIEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvCiAgICAgICAgIGxheW91dEJveCA9IG5leHRJbmxpbmVMZXZlbEJveFRv
TGF5b3V0KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAgICAgfQogCi0gICAgY29sbGVjdElubGluZUNv
bnRlbnRJZk5lZWRlZCgpOworICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKIAogICAgIGF1
dG8mIGlubGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKICAgICBs
aW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBjb25zdHJh
aW50cyk7CisgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChmb3Jt
YXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRp
bmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAK
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24o
SW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIGludmFsaWRhdGVGb3JtYXR0aW5n
U3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOwotICAgIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVk
ZWQoKTsKKyAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgYXV0byYgaW5saW5lSXRl
bXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGxpbmVMYXlvdXQoaW5s
aW5lSXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0cmFpbnRzKTsKKyAgICBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgp
Lm91dE9mRmxvd0JveGVzKCkpOwogfQogCiBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CkBAIC0yNTAsNiArMjUyLDU3IEBAIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0
ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgfQogfQogCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1h
dHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMpCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgc3RhdGljIHBvc2l0aW9uIGZvciBvdXQtb2YtZmxv
dyBjb250ZW50IGluc2lkZSB0aGUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KKyAgICAvLyBB
cyBwZXIgc3BlYywgdGhlIHN0YXRpYyBwb3NpdGlvbiBvZiBhbiBvdXQtb2YtZmxvdyBib3ggaXMg
Y29tcHV0ZWQgYXMgaWYgdGhlIHBvc2l0aW9uIHdhcyBzZXQgdG8gc3RhdGljLgorICAgIC8vIEhv
d2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxvdyBib3ggc2hvdWxkIGJl
IGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisgICAgLy8gSW5zdGVhZCB3
ZSBmaWd1cmUgb3V0IHRoaXMgc3RhdGljIHBvc2l0aW9uIGFmdGVyIHRoZSBpbmxpbmUgbGF5b3V0
IGJ5IGxvb2tpbmcgYXQgdGhlIHByZXZpb3VzIHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2Vv
bWV0cnkgYW5kCisgICAgLy8gcGxhY2UgdGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNh
bCByaWdodCBwb3NpdGlvbi4KKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBsaW5lUnVucyA9IGZvcm1hdHRpbmdTdGF0ZS5saW5l
UnVucygpOworICAgIHNpemVfdCBsYXN0VmlzaXRlZElubGluZVRleHRSdW5JbmRleCA9IDA7CisK
KyAgICAvLyBJdCBsb29rcyBsaWtlIGZvciB0aGUgdmVydGljYWwgcG9zaXRpb24gd2UganVzdCB1
c2UgdGhlIHJvb3QuIFRoZXNlIHN0YXRpYyBvdXQtb2YtZmxvdyBib3hlcyBkb24ndCBmb2xsb3cg
YmFzZWxpbmVzIChubyB2ZXJ0aWNhbCBhbGlnbm1lbnQpLgorICAgIGF1dG8gbG9naWNhbFRvcCA9
IGdlb21ldHJ5Rm9yQm94KHJvb3QoKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6
T3V0T2ZGbG93Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSkuY29udGVudEJveFRvcCgpOworICAgIGZv
ciAoYXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94ZXMpIHsKKyAgICAgICAgYXV0byBs
b2dpY2FsTGVmdCA9IElubGluZUxheW91dFVuaXQgeyB9OworICAgICAgICAvLyBCb3RoIHByZXZp
b3VzIGZsb2F0IGFuZCBvdXQtb2YtZmxvdyBib3hlcyBhcmUgc2tpcHBlZCBoZXJlLiBBIHNlcmll
cyBvZiBhZGpvaW5pbmcgb3V0LW9mLWZsb3cgYm94ZXMgc2hvdWxkIGFsbCBiZSBwbGFjZWQKKyAg
ICAgICAgLy8gYXQgdGhlIHNhbWUgc3RhdGljIHBvc2l0aW9uICh0aGV5IGRvbid0IGFmZmVjdCBu
ZXh0LXNpYmxpbmcgcG9zaXRpb25zKSBhbmQgd2hpbGUgZmxvYXRzIGRvIHBhcnRpY2lwYXRlIGlu
IHRoZSBpbmxpbmUgbGF5b3V0CisgICAgICAgIC8vIHRoZWlyIHBvc2l0aW9ucyBoYXZlIGFscmVh
ZHkgYmVlbiB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBpbmxpbmUgbGF5b3V0LgorICAg
ICAgICBpZiAoYXV0byogcHJldmlvdXNJbkZsb3dDb250ZW50ID0gb3V0T2ZGbG93Qm94LT5wcmV2
aW91c0luRmxvd1NpYmxpbmcoKSkgeworICAgICAgICAgICAgaWYgKGlzPElubGluZVRleHRCb3g+
KHByZXZpb3VzSW5GbG93Q29udGVudCkpIHsKKyAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8
aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjwvZGl2PgorICAgICAgICAgICAgICAgIC8v
IEZpbmQgdGhlIGxhc3QgdGV4dCBydW4gYXNzb2NpYXRlZCB3aXRoIHRoZSBwcmV2aW91cyBsYXlv
dXQgYm94ICgidGV4dCIpLiBOb3RlIHRoYXQgdGhpcyB0ZXh0IGNvbnRlbnQgbWF5IG92ZXJsYXAg
bXVsdGlwbGUgbGluZXMuCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoaXMgdHVybnMg
b3V0IHRvIGJlIGEgcGVyZiBpc3N1ZSwgd2UgY291bGQganVzdCBpbnRyb2R1Y2UgYSBzaWRlLXN0
cnVjdHVyZSB0byBmaW5kIHRoZXNlIHJ1bnMgZmFzdGVyLgorCisgICAgICAgICAgICAgICAgLy8g
RmluZCB0byB0aGUgZmlyc3QgcnVuLiBTaW5jZSB0aGlzIGlzIGRvY3VtZW50IG9yZGVyLCB3ZSBj
YW4ganVzdCBjb250aW51ZSBmcm9tIHdoZXJlIHdlIGxlZnQgb2ZmLgorICAgICAgICAgICAgICAg
IGZvciAoOyBsYXN0VmlzaXRlZElubGluZVRleHRSdW5JbmRleCA8IGxpbmVSdW5zLnNpemUoKSAm
JiAmbGluZVJ1bnNbbGFzdFZpc2l0ZWRJbmxpbmVUZXh0UnVuSW5kZXhdLmxheW91dEJveCgpICE9
IHByZXZpb3VzSW5GbG93Q29udGVudDsgKytsYXN0VmlzaXRlZElubGluZVRleHRSdW5JbmRleCkg
eyB9CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IEluIHZlcnkgcmFyZSBjYXNlcywgdGhlIHBy
ZXZpb3VzIGJveCdzIGNvbnRlbnQgbWlnaHQgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgY29sbGFwc2Vk
IGFuZCBsZWZ0IHVzIHdpdGggbm8gcnVuLgorICAgICAgICAgICAgICAgIGlmIChsYXN0VmlzaXRl
ZElubGluZVRleHRSdW5JbmRleCA8IGxpbmVSdW5zLnNpemUoKSkgeworICAgICAgICAgICAgICAg
ICAgICAvLyBTa2lwIHRvIHRoZSBsYXN0IHJ1biBvbiB0aGlzIGxheW91dCBib3guCisgICAgICAg
ICAgICAgICAgICAgIGZvciAoOyBsYXN0VmlzaXRlZElubGluZVRleHRSdW5JbmRleCA8IGxpbmVS
dW5zLnNpemUoKSAmJiAmbGluZVJ1bnNbbGFzdFZpc2l0ZWRJbmxpbmVUZXh0UnVuSW5kZXhdLmxh
eW91dEJveCgpID09IHByZXZpb3VzSW5GbG93Q29udGVudDsgKytsYXN0VmlzaXRlZElubGluZVRl
eHRSdW5JbmRleCkgeyB9CisgICAgICAgICAgICAgICAgICAgIGF1dG8gbGFzdFJ1bkluZGV4T2ZQ
cmV2aW91c1NpYmxpbmdUZXh0Qm94ID0gbGFzdFZpc2l0ZWRJbmxpbmVUZXh0UnVuSW5kZXggLSAx
OworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobGFzdFJ1bkluZGV4T2ZQcmV2aW91c1NpYmxp
bmdUZXh0Qm94ID49IDApOworICAgICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGxpbmVS
dW5zW2xhc3RSdW5JbmRleE9mUHJldmlvdXNTaWJsaW5nVGV4dEJveF0ubG9naWNhbFJpZ2h0KCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
SU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IC8vIDxkaXY+PGltZyBzdHlsZT0id2lkdGg6IDIwcHg7IGhlaWdodDogMjBweDsgbWFyZ2luOiAx
MHB4OyI+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48L2Rpdj4KKyAgICAgICAgICAg
ICAgICBsb2dpY2FsTGVmdCA9IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGdlb21ldHJ5Rm9y
Qm94KCpwcmV2aW91c0luRmxvd0NvbnRlbnQpKS5yaWdodCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgaWYgKCZvdXRPZkZsb3dCb3gtPnBhcmVudCgpID09ICZyb290KCkpIHsKKyAg
ICAgICAgICAgIC8vIDxkaXYgc3R5bGU9InBhZGRpbmc6IDEwcHgiPjxpbWcgc3R5bGU9InBvc2l0
aW9uOiBhYnNvbHV0ZSI+PC9kaXY+CisgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IGdlb21ldHJ5
Rm9yQm94KHJvb3QoKSwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6T3V0T2ZGbG93
Qm94TmVlZHNJbkZsb3dHZW9tZXRyeSkuY29udGVudEJveExlZnQoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIDxkaXY+PHNwYW4gc3R5bGU9InBhZGRpbmc6IDEwcHgiPjxpbWcg
c3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9zcGFuPjwvZGl2PiBvcgorICAgICAgICAgICAg
YXV0byYgcGFyZW50Qm94R2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveChvdXRPZkZsb3dCb3gtPnBh
cmVudCgpKTsKKyAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ID0gQm94R2VvbWV0cnk6OmJvcmRlckJv
eExlZnQocGFyZW50Qm94R2VvbWV0cnkpICsgcGFyZW50Qm94R2VvbWV0cnkuY29udGVudEJveExl
ZnQoKTsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnkoKm91
dE9mRmxvd0JveCkuc2V0TG9naWNhbFRvcExlZnQoeyBsb2dpY2FsTGVmdCwgbG9naWNhbFRvcCB9
KTsKKyAgICB9Cit9CisKIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpCiB7CiAgICAgYXV0
byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwpAQCAtMjg4LDcgKzM0MSw3IEBA
IEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1
dGVkSW50cmluc2ljV2lkdGhDb25zdHJhCiAgICAgICAgIGxheW91dEJveCA9IG5leHRJbmxpbmVM
ZXZlbEJveFRvTGF5b3V0KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAgICAgfQogCi0gICAgY29sbGVj
dElubGluZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsK
IAogICAgIGF1dG8gbWF4aW11bUxpbmVXaWR0aCA9IFsmXShhdXRvIGF2YWlsYWJsZVdpZHRoKSB7
CiAgICAgICAgIC8vIFN3aXRjaCB0byB0aGUgbWluL21heCBmb3JtYXR0aW5nIHJvb3Qgd2lkdGgg
dmFsdWVzIGJlZm9yZSBmb3JtYXR0aW5nIHRoZSBsaW5lcy4KQEAgLTQxMiw3ICs0NjUsNyBAQCB2
b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0
IEJveCYgbGF5b3V0Qm94LCBjb25zdAogICAgIGJveEdlb21ldHJ5LnNldFZlcnRpY2FsTWFyZ2lu
KHsgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlLCBjb250
ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciB9KTsKIH0KIAotdm9p
ZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgp
Cit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0Q29udGVudElmTmVlZGVkKCkK
IHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsK
ICAgICBpZiAoIWZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygpLmlzRW1wdHkoKSkKQEAgLTQy
MSwyNCArNDc0LDI4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxp
bmVDb250ZW50SWZOZWVkZWQoKQogICAgIC8vIDxzcGFuPnRleHQ8c3Bhbj48L3NwYW4+PGltZz48
L3NwYW4+IC0+IFtJbmxpbmVCb3hTdGFydF1bSW5saW5lTGV2ZWxCb3hdW0lubGluZUJveFN0YXJ0
XVtJbmxpbmVCb3hFbmRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hFbmRdCiAgICAgQVNTRVJU
KHJvb3QoKS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSk7CiAgICAgTGF5b3V0UXVldWUgbGF5
b3V0UXVldWU7Ci0gICAgbGF5b3V0UXVldWUuYXBwZW5kKHJvb3QoKS5maXJzdEluRmxvd09yRmxv
YXRpbmdDaGlsZCgpKTsKKyAgICBsYXlvdXRRdWV1ZS5hcHBlbmQocm9vdCgpLmZpcnN0Q2hpbGQo
KSk7CiAgICAgd2hpbGUgKCFsYXlvdXRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgd2hpbGUg
KHRydWUpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS5sYXN0
KCk7Ci0gICAgICAgICAgICBhdXRvIGlzQm94V2l0aElubGluZUNvbnRlbnQgPSBsYXlvdXRCb3gu
aXNJbmxpbmVCb3goKSAmJiAhbGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCk7Ci0gICAgICAgICAg
ICBpZiAoIWlzQm94V2l0aElubGluZUNvbnRlbnQpCisgICAgICAgICAgICBhdXRvIGlzSW5saW5l
Qm94V2l0aElubGluZUNvbnRlbnQgPSBsYXlvdXRCb3guaXNJbmxpbmVCb3goKSAmJiAhbGF5b3V0
Qm94LmlzTGluZUJyZWFrQm94KCkgJiYgIWxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQo
KTsKKyAgICAgICAgICAgIGlmICghaXNJbmxpbmVCb3hXaXRoSW5saW5lQ29udGVudCkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHN0YXJ0IG9mIGFu
IGlubGluZSBib3ggKGUuZy4gPHNwYW4+KS4KICAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRJbmxpbmVJdGVtKHsgbGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpUeXBlOjpJbmxpbmVCb3hTdGFy
dCB9KTsKICAgICAgICAgICAgIGF1dG8mIGlubGluZUJveFdpdGhJbmxpbmVDb250ZW50ID0gZG93
bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpOwotICAgICAgICAgICAgaWYgKCFpbmxpbmVC
b3hXaXRoSW5saW5lQ29udGVudC5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSkKKyAgICAgICAg
ICAgIGlmICghaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuaGFzQ2hpbGQoKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGxheW91dFF1ZXVlLmFwcGVuZChpbmxpbmVCb3hX
aXRoSW5saW5lQ29udGVudC5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKTsKKyAgICAgICAg
ICAgIGxheW91dFF1ZXVlLmFwcGVuZChpbmxpbmVCb3hXaXRoSW5saW5lQ29udGVudC5maXJzdENo
aWxkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKCFsYXlvdXRRdWV1ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICpsYXlvdXRRdWV1ZS50YWtlTGFz
dCgpOwotICAgICAgICAgICAgaWYgKGlzPExpbmVCcmVha0JveD4obGF5b3V0Qm94KSkgeworICAg
ICAgICAgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAg
ICAgICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5lSXRlbXMgZm9yIG91dC1vZi1m
bG93IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBpbiB0aGUgaW5saW5lIGxheW91
dC4KKyAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFibGUgdG8gc3RhdGljIHBvc2l0
aW9uaW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBhcHByb3hpbWF0ZSBwb3NpdGlv
bnMuCisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZE91dE9mRmxvd0JveChsYXlv
dXRCb3gpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpczxMaW5lQnJlYWtCb3g+KGxheW91dEJv
eCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsaW5lQnJlYWtCb3ggPSBkb3duY2FzdDxMaW5l
QnJlYWtCb3g+KGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIGxpbmVCcmVha0JveC5pc09wdGlvbmFsKCkgPyBJbmxp
bmVJdGVtOjpUeXBlOjpXb3JkQnJlYWtPcHBvcnR1bml0eSA6IElubGluZUl0ZW06OlR5cGU6Okhh
cmRMaW5lQnJlYWsgfSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheW91dEJveC5pc0Zsb2F0
aW5nUG9zaXRpb25lZCgpKQpAQCAtNDUyLDcgKzUwOSw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCi0gICAgICAgICAgICBp
ZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dEluRmxvd09yRmxvYXRpbmdTaWJs
aW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5u
ZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKG5leHRT
aWJsaW5nKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDM1YzllZjY0NWM5
ODMyNDI4OWFjZjdlMTJlNTBiNDM0N2NhNzI2YzAuLjk1NWI0NTlkZmRiMzJkYzc1ZTEyMGRiYWNj
YzMxYTk0MDEyNjBmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElO
R19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJG
b3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nR2VvbWV0cnkuaCIK
ICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSAiSW5saW5lTGlu
ZUJ1aWxkZXIuaCIKQEAgLTYxLDYgKzYyLDcgQEAgcHJpdmF0ZToKICAgICBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwgTGluZUJ1aWxkZXI6OklubGlu
ZUl0ZW1SYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50Jik7CisgICAgdm9p
ZCBjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1hdHRp
bmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYpOwogCiAgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
V2lkdGhGb3JGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmKTsKICAgICBJbmxpbmVMYXlvdXRVbml0
IGNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KElubGluZUxheW91dFVuaXQgYXZh
aWxhYmxlV2lkdGgpIGNvbnN0OwpAQCAtNjksNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3Ry
YWludHMmKTsKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAotICAgIHZvaWQgY29sbGVjdElubGluZUNvbnRl
bnRJZk5lZWRlZCgpOworICAgIHZvaWQgY29sbGVjdENvbnRlbnRJZk5lZWRlZCgpOwogICAgIElu
bGluZVJlY3QgY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAgICAgdm9pZCBp
bnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435553</attachid>
            <date>2021-08-14 18:03:57 -0700</date>
            <delta_ts>2021-08-22 10:14:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229103-20210814180357.patch</filename>
            <type>text/plain</type>
            <size>15177</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFhMjRlYTVkOWQ2YTJj
OWM1YjdmMzFiODU3ZGIyZGMzNTRhN2FhYS4uMWE0YjA2NDY0YWVkY2EwMDM4NjY5ZGY5NjA1NGU3
NWJlYzZmYTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBw
b3J0IGZvciBvdXQtb2YtZmxvdyBib3ggc3RhdGljIHBvc2l0aW9uaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBh
cmF0aW9uIGZvciBlbmFibGluZyBwb3NpdGlvbmVkIGNvbnRlbnQgZm9yIElGQyBoYW5kbGluZy4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGNvbXB1dGUgdGhlIHN0YXRpYyBwb3NpdGlvbiBm
b3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQuCisgICAgICAgIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0aW9uIG9mIGFuIG91dC1v
Zi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24gd2FzIHNldCB0byBzdGF0
aWMuCisgICAgICAgIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisg
ICAgICAgIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0
aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0CisgICAgICAgIHRoZSBwcmV2aW91cyBzaWJs
aW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZCBwbGFjZSB0aGUgb3V0LW9mLWZsb3cg
Ym94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgorCisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5G
bG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aDoKKwogMjAyMS0wOC0xMyAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0lGQ10gQW5vbnltb3VzIGlubGluZSB0ZXh0IGJveCBpcyBub3QgYW4gaW5saW5lIGJveApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4
IGE5MGE5NDU3ZGI1ZjBjOWJhMzk1OWVkMDBmMTcwY2M5MWM3ZDNkZDQuLmQxMjllMTIyYTMwN2Yw
NmZhNTNkZmJlZTU5MmZjMDQxNDVmZGI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEzMywxOSArMTMzLDIxIEBAIHZvaWQgSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmIGludmFsaWRhdGlvCiAgICAgICAgIGxheW91dEJveCA9IG5leHRJbmxpbmVMZXZlbEJveFRv
TGF5b3V0KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAgICAgfQogCi0gICAgY29sbGVjdElubGluZUNv
bnRlbnRJZk5lZWRlZCgpOworICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKIAogICAgIGF1
dG8mIGlubGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKICAgICBs
aW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBjb25zdHJh
aW50cyk7CisgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChmb3Jt
YXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9y
bWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRp
bmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAK
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24o
SW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBDb25zdHJhaW50c0Zv
ckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIGludmFsaWRhdGVGb3JtYXR0aW5n
U3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOwotICAgIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVk
ZWQoKTsKKyAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgYXV0byYgaW5saW5lSXRl
bXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGxpbmVMYXlvdXQoaW5s
aW5lSXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0cmFpbnRzKTsKKyAgICBj
b21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgp
Lm91dE9mRmxvd0JveGVzKCkpOwogfQogCiBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CkBAIC0yNTAsNiArMjUyLDkzIEBAIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0
ZW1zLCBMaW5lQnVpbGRlcjo6CiAgICAgfQogfQogCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250
ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcm1h
dHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYgb3V0T2ZGbG93Qm94ZXMpCit7CisgICAgLy8g
VGhpcyBmdW5jdGlvbiBjb21wdXRlcyB0aGUgc3RhdGljIHBvc2l0aW9uIGZvciBvdXQtb2YtZmxv
dyBjb250ZW50IGluc2lkZSB0aGUgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dC4KKyAgICAvLyBB
cyBwZXIgc3BlYywgdGhlIHN0YXRpYyBwb3NpdGlvbiBvZiBhbiBvdXQtb2YtZmxvdyBib3ggaXMg
Y29tcHV0ZWQgYXMgaWYgdGhlIHBvc2l0aW9uIHdhcyBzZXQgdG8gc3RhdGljLgorICAgIC8vIEhv
d2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxvdyBib3ggc2hvdWxkIGJl
IGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisgICAgLy8gSW5zdGVhZCB3
ZSBmaWd1cmUgb3V0IHRoaXMgc3RhdGljIHBvc2l0aW9uIGFmdGVyIHRoZSBpbmxpbmUgbGF5b3V0
IGJ5IGxvb2tpbmcgYXQgdGhlIHByZXZpb3VzL25leHQgc2libGluZyAob3IgcGFyZW50KSBib3gn
cyBnZW9tZXRyeSBhbmQKKyAgICAvLyBwbGFjZSB0aGUgb3V0LW9mLWZsb3cgYm94IGF0IHRoZSBs
b2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgorICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMt
PmZvcm1hdHRpbmdTdGF0ZSgpOworICAgIGF1dG8mIGxpbmVzID0gZm9ybWF0dGluZ1N0YXRlLmxp
bmVzKCk7CisgICAgYXV0byYgbGluZVJ1bnMgPSBmb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKTsK
KworICAgIGZvciAoYXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94ZXMpIHsKKyAgICAg
ICAgYXV0byYgb3V0T2ZGbG93R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnko
Km91dE9mRmxvd0JveCk7CisgICAgICAgIC8vIEJvdGggcHJldmlvdXMgZmxvYXQgYW5kIG91dC1v
Zi1mbG93IGJveGVzIGFyZSBza2lwcGVkIGhlcmUuIEEgc2VyaWVzIG9mIGFkam9pbmluZyBvdXQt
b2YtZmxvdyBib3hlcyBzaG91bGQgYWxsIGJlIHBsYWNlZAorICAgICAgICAvLyBhdCB0aGUgc2Ft
ZSBzdGF0aWMgcG9zaXRpb24gKHRoZXkgZG9uJ3QgYWZmZWN0IG5leHQtc2libGluZyBwb3NpdGlv
bnMpIGFuZCB3aGlsZSBmbG9hdHMgZG8gcGFydGljaXBhdGUgaW4gdGhlIGlubGluZSBsYXlvdXQK
KyAgICAgICAgLy8gdGhlaXIgcG9zaXRpb25zIGhhdmUgYWxyZWFkeSBiZWVuIHRha2VuIGludG8g
YWNjb3VudCBkdXJpbmcgdGhlIGlubGluZSBsYXlvdXQuCisgICAgICAgIGF1dG8gcHJldmlvdXND
b250ZW50U2tpcHBpbmdGbG9hdHMgPSBbJl0oKSAtPiBjb25zdCBMYXlvdXQ6OkJveCogeworICAg
ICAgICAgICAgYXV0byogcHJldmlvdXNTaWJsaW5nID0gb3V0T2ZGbG93Qm94LT5wcmV2aW91c1Np
YmxpbmcoKTsKKyAgICAgICAgICAgIGZvciAoOyBwcmV2aW91c1NpYmxpbmcgJiYgcHJldmlvdXNT
aWJsaW5nLT5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpOyBwcmV2aW91c1NpYmxpbmcgPSBwcmV2aW91
c1NpYmxpbmctPnByZXZpb3VzU2libGluZygpKSB7IH0KKyAgICAgICAgICAgIGlmIChwcmV2aW91
c1NpYmxpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzU2libGluZzsKKyAgICAg
ICAgICAgIC8vIFBhcmVudCBpcyBlaXRoZXIgdGhlIHJvb3QgaGVyZSBvciBhbm90aGVyIGlubGlu
ZSBib3ggKGUuZy4gPHNwYW4+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48L3NwYW4+
KQorICAgICAgICAgICAgYXV0byYgcGFyZW50ID0gb3V0T2ZGbG93Qm94LT5wYXJlbnQoKTsKKyAg
ICAgICAgICAgIHJldHVybiAmcGFyZW50ID09ICZyb290KCkgPyBudWxscHRyIDogJnBhcmVudDsK
KyAgICAgICAgfSgpOworICAgICAgICBpZiAoIXByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRz
KSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAobm9uLWZsb2F0KWNoaWxkLiBM
ZXQncyBwbGFjZSBpdCB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgcnVuLgorICAgICAgICAgICAg
Ly8gPGRpdj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPnRleHQgY29udGVudDwvZGl2
PgorICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW5zLnNpemUoKSk7CisgICAgICAgICAgICBvdXRP
ZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxpbmVSdW5zWzBdLmxvZ2ljYWxMZWZ0
KCksIGxpbmVzWzBdLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByZXZpb3VzQ29udGVudFNraXBwaW5n
RmxvYXRzLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkgeworICAgICAgICAgICAgLy8gU3Vic2Vx
dWVudCBvdXQtb2YtZmxvdyBwb3NpdGlvbmVkIGJveGVzIHNoYXJlIHRoZSBzYW1lIHN0YXRpYyBw
b3NpdGlvbi4KKyAgICAgICAgICAgIC8vIDxkaXY+dGV4dCBjb250ZW50PGltZyBzdHlsZT0icG9z
aXRpb246IGFic29sdXRlIj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjwvZGl2Pgor
ICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoQm94R2VvbWV0
cnk6OmJvcmRlckJveFRvcExlZnQoZ2VvbWV0cnlGb3JCb3goKnByZXZpb3VzQ29udGVudFNraXBw
aW5nRmxvYXRzKSkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzLT5pc0luRmxvdygpKTsKKyAgICAg
ICAgLy8gRmluZCB0byB0aGUgZmlyc3QgcnVuIG9uIHRoaXMgaW5mbG93IGxheW91dCBib3guIFNp
bmNlIHRoaXMgaXMgZG9jdW1lbnQgb3JkZXIsIHdlIGNhbiBqdXN0IGNvbnRpbnVlIGZyb20gd2hl
cmUgd2UgbGVmdCBvZmYuCisgICAgICAgIHNpemVfdCBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5
b3V0Qm94ID0gMDsKKyAgICAgICAgZm9yICg7IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRC
b3ggPCBsaW5lUnVucy5zaXplKCkgJiYgJmxpbmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3hdLmxheW91dEJveCgpICE9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyAr
K2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3gpIHsgfQorICAgICAgICBpZiAobGFzdFJ1
bkluZGV4T25QcmV2aW91c0xheW91dEJveCA9PSBsaW5lUnVucy5zaXplKCkpIHsKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBJbiB2ZXJ5IHJhcmUgY2FzZXMsIHRoZSBwcmV2aW91cyBib3gncyBjb250
ZW50IG1pZ2h0IGhhdmUgYmVlbiBjb21wbGV0ZWx5IGNvbGxhcHNlZCBhbmQgbGVmdCB1cyB3aXRo
IG5vIHJ1bi4KKyAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAvLyBTa2lwIHRvIHRoZSBsYXN0
IHJ1biBvbiB0aGlzIGxheW91dCBib3guIFRoZSBsYXN0IHJ1bidzIGdlb21ldHJ5IGlzIHVzZWQg
dG8gY29tcHV0ZSB0aGUgb3V0LW9mLWZsb3cgYm94J3Mgc3RhdGljIHBvc2l0aW9uLgorICAgICAg
ICBmb3IgKDsgbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA8IGxpbmVSdW5zLnNpemUo
KSAmJiAmbGluZVJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveF0ubGF5b3V0Qm94
KCkgPT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdFJ1bkluZGV4T25QcmV2
aW91c0xheW91dEJveCkgeyB9CisgICAgICAgICAgICAtLWxhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3g7CisgICAgICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91cyBydW4gaXMg
dGhlIGxhc3QgcnVuIG9uIHRoZSBjdXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4dCBydW4ncyBs
ZWZ0IGluc3RlYWQuCisgICAgICAgIGF1dG8mIHByZXZpb3VzUnVuID0gbGluZVJ1bnNbbGFzdFJ1
bkluZGV4T25QcmV2aW91c0xheW91dEJveF07CisgICAgICAgIGF1dG8qIG5leHRSdW4gPSBsYXN0
UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ICsgMSA8IGxpbmVSdW5zLnNpemUoKSA/ICZsaW5l
UnVuc1tsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ICsgMV0gOiBudWxscHRyOworICAg
ICAgICBpZiAobmV4dFJ1biAmJiBuZXh0UnVuLT5saW5lSW5kZXgoKSA9PSBwcmV2aW91c1J1bi5s
aW5lSW5kZXgoKSkgeworICAgICAgICAgICAgLy8gPGRpdj50ZXh0PGltZyBzdHlsZT0icG9zaXRp
b246IGFic29sdXRlIj5jb250ZW50PC9kaXY+CisgICAgICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0
ID0gcHJldmlvdXNSdW4ubG9naWNhbFJpZ2h0KCk7CisgICAgICAgICAgICBpZiAocHJldmlvdXND
b250ZW50U2tpcHBpbmdGbG9hdHMtPmlzSW5saW5lQm94KCkpIHsKKyAgICAgICAgICAgICAgICAv
LyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8
L3NwYW4+PC9kaXY+CisgICAgICAgICAgICAgICAgLy8gb3IKKyAgICAgICAgICAgICAgICAvLyA8
ZGl2PnRleHQ8c3Bhbj5jb250ZW50PC9zcGFuPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0
ZSI+PC9kaXY+CisgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lQm94Qm94R2VvbWV0cnkgPSBn
ZW9tZXRyeUZvckJveCgqcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMpOworICAgICAgICAg
ICAgICAgIGxvZ2ljYWxMZWZ0ID0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMgPT0gJm91
dE9mRmxvd0JveC0+cGFyZW50KCkKKyAgICAgICAgICAgICAgICAgICAgPyBCb3hHZW9tZXRyeTo6
Ym9yZGVyQm94TGVmdChpbmxpbmVCb3hCb3hHZW9tZXRyeSkgKyBpbmxpbmVCb3hCb3hHZW9tZXRy
eS5jb250ZW50Qm94TGVmdCgpCisgICAgICAgICAgICAgICAgICAgIDogQm94R2VvbWV0cnk6OmJv
cmRlckJveFJlY3QoaW5saW5lQm94Qm94R2VvbWV0cnkpLnJpZ2h0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxvZ2lj
YWxMZWZ0LCBsaW5lc1twcmV2aW91c1J1bi5saW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0
KCkudG9wKCkgfSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAobmV4dFJ1bikgeworICAgICAgICAgICAgLy8gVGhlIG91dCBvZiBmbG93IGJveCBpcyBwbGFj
ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lICh3aGVyZSB0aGUgZmlyc3QgcnVu
IG9uIHRoZSBsaW5lIGlzKS4KKyAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxl
PSJwb3NpdGlvbjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+Y29u
dGVudDwvZGl2PgorICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExl
ZnQoeyBuZXh0UnVuLT5sb2dpY2FsTGVmdCgpLCBsaW5lc1tuZXh0UnVuLT5saW5lSW5kZXgoKV0u
bGluZUJveExvZ2ljYWxSZWN0KCkudG9wKCkgfSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorICAgICAgICBhdXRvJiBsYXN0TGluZUxvZ2ljYWxSZWN0ID0gbGluZXNbcHJldmlv
dXNSdW4ubGluZUluZGV4KCldLmxpbmVCb3hMb2dpY2FsUmVjdCgpOworICAgICAgICAvLyBUaGlz
IG91dC1vZi1mbG93IGJveCBpcyB0aGUgbGFzdCBib3guCisgICAgICAgIC8vIEZJWE1FOiBVc2Ug
aXNMaW5lQnJlYWsgaW5zdGVhZCB0byBjb3ZlciBwcmVzZXJ2ZWQgbmV3IGxpbmVzIHRvby4KKyAg
ICAgICAgaWYgKHByZXZpb3VzUnVuLmxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkpIHsKKyAg
ICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUi
PjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9kaXY+CisgICAgICAgICAgICBvdXRP
ZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxhc3RMaW5lTG9naWNhbFJlY3QubGVm
dCgpLCBsYXN0TGluZUxvZ2ljYWxSZWN0LmJvdHRvbSgpIH0pOworICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6IFdlIG1heSBuZWVkIHRvIGNoZWNrIGlm
IHRoaXMgYm94IGFjdHVhbGx5IGZpdHMgdGhlIGxhc3QgbGluZSBhbmQgbW92ZSBpdCBvdmVyIHRv
IHRoZSAibmV4dCIgbGlrZSB3ZSBvdyBhYm92ZS4KKyAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnku
c2V0TG9naWNhbFRvcExlZnQoeyBwcmV2aW91c1J1bi5sb2dpY2FsUmlnaHQoKSwgbGFzdExpbmVM
b2dpY2FsUmVjdC50b3AoKSB9KTsKKyAgICB9Cit9CisKIEludHJpbnNpY1dpZHRoQ29uc3RyYWlu
dHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJh
aW50cygpCiB7CiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwpA
QCAtMjg4LDcgKzM3Nyw3IEBAIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgSW5saW5lRm9ybWF0
dGluZ0NvbnRleHQ6OmNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25zdHJhCiAgICAgICAgIGxheW91
dEJveCA9IG5leHRJbmxpbmVMZXZlbEJveFRvTGF5b3V0KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAg
ICAgfQogCi0gICAgY29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIGNvbGxlY3RD
b250ZW50SWZOZWVkZWQoKTsKIAogICAgIGF1dG8gbWF4aW11bUxpbmVXaWR0aCA9IFsmXShhdXRv
IGF2YWlsYWJsZVdpZHRoKSB7CiAgICAgICAgIC8vIFN3aXRjaCB0byB0aGUgbWluL21heCBmb3Jt
YXR0aW5nIHJvb3Qgd2lkdGggdmFsdWVzIGJlZm9yZSBmb3JtYXR0aW5nIHRoZSBsaW5lcy4KQEAg
LTQxMiw3ICs1MDEsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSGVp
Z2h0QW5kTWFyZ2luKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdAogICAgIGJveEdlb21ldHJ5
LnNldFZlcnRpY2FsTWFyZ2luKHsgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRN
YXJnaW4uYmVmb3JlLCBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5h
ZnRlciB9KTsKIH0KIAotdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGlu
ZUNvbnRlbnRJZk5lZWRlZCgpCit2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0
Q29udGVudElmTmVlZGVkKCkKIHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5m
b3JtYXR0aW5nU3RhdGUoKTsKICAgICBpZiAoIWZvcm1hdHRpbmdTdGF0ZS5pbmxpbmVJdGVtcygp
LmlzRW1wdHkoKSkKQEAgLTQyMSwyNCArNTEwLDI4IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAgIC8vIDxzcGFuPnRleHQ8
c3Bhbj48L3NwYW4+PGltZz48L3NwYW4+IC0+IFtJbmxpbmVCb3hTdGFydF1bSW5saW5lTGV2ZWxC
b3hdW0lubGluZUJveFN0YXJ0XVtJbmxpbmVCb3hFbmRdW0lubGluZUxldmVsQm94XVtJbmxpbmVC
b3hFbmRdCiAgICAgQVNTRVJUKHJvb3QoKS5oYXNJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSk7CiAg
ICAgTGF5b3V0UXVldWUgbGF5b3V0UXVldWU7Ci0gICAgbGF5b3V0UXVldWUuYXBwZW5kKHJvb3Qo
KS5maXJzdEluRmxvd09yRmxvYXRpbmdDaGlsZCgpKTsKKyAgICBsYXlvdXRRdWV1ZS5hcHBlbmQo
cm9vdCgpLmZpcnN0Q2hpbGQoKSk7CiAgICAgd2hpbGUgKCFsYXlvdXRRdWV1ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9
ICpsYXlvdXRRdWV1ZS5sYXN0KCk7Ci0gICAgICAgICAgICBhdXRvIGlzQm94V2l0aElubGluZUNv
bnRlbnQgPSBsYXlvdXRCb3guaXNJbmxpbmVCb3goKSAmJiAhbGF5b3V0Qm94LmlzTGluZUJyZWFr
Qm94KCk7Ci0gICAgICAgICAgICBpZiAoIWlzQm94V2l0aElubGluZUNvbnRlbnQpCisgICAgICAg
ICAgICBhdXRvIGlzSW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBsYXlvdXRCb3guaXNJbmxp
bmVCb3goKSAmJiAhbGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCkgJiYgIWxheW91dEJveC5pc091
dE9mRmxvd1Bvc2l0aW9uZWQoKTsKKyAgICAgICAgICAgIGlmICghaXNJbmxpbmVCb3hXaXRoSW5s
aW5lQ29udGVudCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIHN0YXJ0IG9mIGFuIGlubGluZSBib3ggKGUuZy4gPHNwYW4+KS4KICAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRJbmxpbmVJdGVtKHsgbGF5b3V0Qm94LCBJbmxpbmVJdGVtOjpU
eXBlOjpJbmxpbmVCb3hTdGFydCB9KTsKICAgICAgICAgICAgIGF1dG8mIGlubGluZUJveFdpdGhJ
bmxpbmVDb250ZW50ID0gZG93bmNhc3Q8Q29udGFpbmVyQm94PihsYXlvdXRCb3gpOwotICAgICAg
ICAgICAgaWYgKCFpbmxpbmVCb3hXaXRoSW5saW5lQ29udGVudC5oYXNJbkZsb3dPckZsb2F0aW5n
Q2hpbGQoKSkKKyAgICAgICAgICAgIGlmICghaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQuaGFz
Q2hpbGQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGxheW91dFF1ZXVl
LmFwcGVuZChpbmxpbmVCb3hXaXRoSW5saW5lQ29udGVudC5maXJzdEluRmxvd09yRmxvYXRpbmdD
aGlsZCgpKTsKKyAgICAgICAgICAgIGxheW91dFF1ZXVlLmFwcGVuZChpbmxpbmVCb3hXaXRoSW5s
aW5lQ29udGVudC5maXJzdENoaWxkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgd2hpbGUgKCFs
YXlvdXRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9ICps
YXlvdXRRdWV1ZS50YWtlTGFzdCgpOwotICAgICAgICAgICAgaWYgKGlzPExpbmVCcmVha0JveD4o
bGF5b3V0Qm94KSkgeworICAgICAgICAgICAgaWYgKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0
aW9uZWQoKSkgeworICAgICAgICAgICAgICAgIC8vIExldCdzIG5vdCBjb25zdHJ1Y3QgSW5saW5l
SXRlbXMgZm9yIG91dC1vZi1mbG93IGNvbnRlbnQgYXMgdGhleSBkb24ndCBwYXJ0aWNpcGF0ZSBp
biB0aGUgaW5saW5lIGxheW91dC4KKyAgICAgICAgICAgICAgICAvLyBIb3dldmVyIHRvIGJlIGFi
bGUgdG8gc3RhdGljIHBvc2l0aW9uaW5nIHRoZW0sIHdlIG5lZWQgdG8gY29tcHV0ZSB0aGVpciBh
cHByb3hpbWF0ZSBwb3NpdGlvbnMuCisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZE91dE9mRmxvd0JveChsYXlvdXRCb3gpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpczxMaW5l
QnJlYWtCb3g+KGxheW91dEJveCkpIHsKICAgICAgICAgICAgICAgICBhdXRvJiBsaW5lQnJlYWtC
b3ggPSBkb3duY2FzdDxMaW5lQnJlYWtCb3g+KGxheW91dEJveCk7CiAgICAgICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIGxpbmVCcmVha0JveC5p
c09wdGlvbmFsKCkgPyBJbmxpbmVJdGVtOjpUeXBlOjpXb3JkQnJlYWtPcHBvcnR1bml0eSA6IElu
bGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWsgfSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KGxheW91dEJveC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQpAQCAtNDUyLDcgKzU0NSw3IEBAIHZv
aWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQo
KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogCi0gICAgICAgICAgICBpZiAoYXV0byogbmV4dFNpYmxpbmcgPSBsYXlvdXRCb3gubmV4dElu
Rmxvd09yRmxvYXRpbmdTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2li
bGluZyA9IGxheW91dEJveC5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAgICAgbGF5b3V0
UXVldWUuYXBwZW5kKG5leHRTaWJsaW5nKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
CmluZGV4IDM1YzllZjY0NWM5ODMyNDI4OWFjZjdlMTJlNTBiNDM0N2NhNzI2YzAuLjk1NWI0NTlk
ZmRiMzJkYzc1ZTEyMGRiYWNjYzMxYTk0MDEyNjBmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRm9ybWF0dGluZ0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJGb3JtYXR0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3Jt
YXR0aW5nR2VvbWV0cnkuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nUXVpcmtzLmgiCiAj
aW5jbHVkZSAiSW5saW5lTGluZUJ1aWxkZXIuaCIKQEAgLTYxLDYgKzYyLDcgQEAgcHJpdmF0ZToK
ICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmluc2ljV2lkdGhDb25z
dHJhaW50cygpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsaW5lTGF5b3V0KElubGluZUl0ZW1zJiwg
TGluZUJ1aWxkZXI6OklubGluZUl0ZW1SYW5nZSwgY29uc3QgQ29uc3RyYWludHNGb3JJbkZsb3dD
b250ZW50Jik7CisgICAgdm9pZCBjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250
ZW50KGNvbnN0IEZvcm1hdHRpbmdTdGF0ZTo6T3V0T2ZGbG93Qm94TGlzdCYpOwogCiAgICAgdm9p
ZCBjb21wdXRlSW50cmluc2ljV2lkdGhGb3JGb3JtYXR0aW5nUm9vdChjb25zdCBCb3gmKTsKICAg
ICBJbmxpbmVMYXlvdXRVbml0IGNvbXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50KElu
bGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0OwpAQCAtNjksNyArNzEsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25z
dCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGNvbXB1dGVXaWR0aEFuZE1hcmdp
bihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKIAotICAgIHZvaWQg
Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIHZvaWQgY29sbGVjdENvbnRlbnRJ
Zk5lZWRlZCgpOwogICAgIElubGluZVJlY3QgY29tcHV0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQo
Y29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFp
bnRzJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRh
dGlvblN0YXRlJik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436118</attachid>
            <date>2021-08-22 10:14:21 -0700</date>
            <delta_ts>2021-08-22 15:37:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229103-20210822101420.patch</filename>
            <type>text/plain</type>
            <size>19081</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMwNzQxNmY3ZWVjYTdk
MjEwMGQ3NjliN2M1NTJhNzkwZDZlNTQ5Zi4uYWVlNDEyMTcxMDMyYzU2OWIxYTk3OWQ5MTBiOTI1
NzMzYzkwNzIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTIyICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBw
b3J0IGZvciBvdXQtb2YtZmxvdyBib3ggc3RhdGljIHBvc2l0aW9uaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBh
cmF0aW9uIGZvciBlbmFibGluZyBwb3NpdGlvbmVkIGNvbnRlbnQgZm9yIElGQyBoYW5kbGluZy4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGNvbXB1dGUgdGhlIHN0YXRpYyBwb3NpdGlvbiBm
b3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQuCisgICAgICAgIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0aW9uIG9mIGFuIG91dC1v
Zi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24gd2FzIHNldCB0byBzdGF0
aWMuCisgICAgICAgIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisg
ICAgICAgIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0
aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0CisgICAgICAgIHRoZSBwcmV2aW91cyBzaWJs
aW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZCBwbGFjZSB0aGUgb3V0LW9mLWZsb3cg
Ym94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgorCisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5G
bG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aDoKKwogMjAyMS0wOC0yMSAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29t
PgogCiAgICAgICAgIG92ZXJ3cml0ZUNvZGVQb2ludCgpIGluIGNyZWF0ZUFuZEZpbGxHbHlwaFBh
Z2UoKSBpcyB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuY3BwCmluZGV4IDk3ZGMzYzQ0MjcwY2M0OGRhMjU3MmIyMmYxZTgwYzZhYWQ5YmU4NDcu
LjQ5NTJjYmZlZjAwODg0MjI0NTg0MzE2MmRjNWI4Mjc1NzhjYmFjYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEzNiwxOSArMTM2
LDIxIEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQo
SW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvCiAgICAgICAgIGxheW91dEJveCA9IG5leHRJ
bmxpbmVMZXZlbEJveFRvTGF5b3V0KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAgICAgfQogCi0gICAg
Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOworICAgIGNvbGxlY3RDb250ZW50SWZOZWVk
ZWQoKTsKIAogICAgIGF1dG8mIGlubGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5l
SXRlbXMoKTsKICAgICBsaW5lTGF5b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNp
emUoKSB9LCBjb25zdHJhaW50cyk7CisgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZG
bG93Q29udGVudChmb3JtYXR0aW5nU3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpKTsKICAgICBMT0df
V0lUSF9TVFJFQU0oRm9ybWF0dGluZ0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4g
aW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgp
IDw8ICIpIik7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXRG
b3JJbnRlcmdyYXRpb24oSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25z
dCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIGludmFs
aWRhdGVGb3JtYXR0aW5nU3RhdGUoaW52YWxpZGF0aW9uU3RhdGUpOwotICAgIGNvbGxlY3RJbmxp
bmVDb250ZW50SWZOZWVkZWQoKTsKKyAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAg
YXV0byYgaW5saW5lSXRlbXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAg
IGxpbmVMYXlvdXQoaW5saW5lSXRlbXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0
cmFpbnRzKTsKKyAgICBjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZv
cm1hdHRpbmdTdGF0ZSgpLm91dE9mRmxvd0JveGVzKCkpOwogfQogCiBMYXlvdXRVbml0IElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CkBAIC0yNTMsNiAr
MjU1LDEwMyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGlu
ZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUJ1aWxkZXI6OgogICAgIH0KIH0KIAordm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29u
dGVudChjb25zdCBGb3JtYXR0aW5nU3RhdGU6Ok91dE9mRmxvd0JveExpc3QmIG91dE9mRmxvd0Jv
eGVzKQoreworICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0YXRpYyBwb3NpdGlv
biBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNv
bnRleHQuCisgICAgLy8gQXMgcGVyIHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0
LW9mLWZsb3cgYm94IGlzIGNvbXB1dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3YXMgc2V0IHRvIHN0
YXRpYy4KKyAgICAvLyBIb3dldmVyIGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgb3V0LW9mLWZs
b3cgYm94IHNob3VsZCBiZSBpbnZvbHZlZCBpbiB0aGUgaW5saW5lIGxheW91dCBwcm9jZXNzLgor
ICAgIC8vIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0
aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0IHRoZSBwcmV2aW91cy9uZXh0IHNpYmxpbmcg
KG9yIHBhcmVudCkgYm94J3MgZ2VvbWV0cnkgYW5kCisgICAgLy8gcGxhY2UgdGhlIG91dC1vZi1m
bG93IGJveCBhdCB0aGUgbG9naWNhbCByaWdodCBwb3NpdGlvbi4KKyAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBsaW5lcyA9IGZv
cm1hdHRpbmdTdGF0ZS5saW5lcygpOworICAgIGF1dG8mIGxpbmVSdW5zID0gZm9ybWF0dGluZ1N0
YXRlLmxpbmVSdW5zKCk7CisKKyAgICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxv
d0JveGVzKSB7CisgICAgICAgIGF1dG8mIG91dE9mRmxvd0dlb21ldHJ5ID0gZm9ybWF0dGluZ1N0
YXRlLmJveEdlb21ldHJ5KCpvdXRPZkZsb3dCb3gpOworICAgICAgICAvLyBCb3RoIHByZXZpb3Vz
IGZsb2F0IGFuZCBvdXQtb2YtZmxvdyBib3hlcyBhcmUgc2tpcHBlZCBoZXJlLiBBIHNlcmllcyBv
ZiBhZGpvaW5pbmcgb3V0LW9mLWZsb3cgYm94ZXMgc2hvdWxkIGFsbCBiZSBwbGFjZWQKKyAgICAg
ICAgLy8gYXQgdGhlIHNhbWUgc3RhdGljIHBvc2l0aW9uICh0aGV5IGRvbid0IGFmZmVjdCBuZXh0
LXNpYmxpbmcgcG9zaXRpb25zKSBhbmQgd2hpbGUgZmxvYXRzIGRvIHBhcnRpY2lwYXRlIGluIHRo
ZSBpbmxpbmUgbGF5b3V0CisgICAgICAgIC8vIHRoZWlyIHBvc2l0aW9ucyBoYXZlIGFscmVhZHkg
YmVlbiB0YWtlbiBpbnRvIGFjY291bnQgZHVyaW5nIHRoZSBpbmxpbmUgbGF5b3V0LgorICAgICAg
ICBhdXRvIHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzID0gWyZdKCkgLT4gY29uc3QgTGF5
b3V0OjpCb3gqIHsKKyAgICAgICAgICAgIGF1dG8qIHByZXZpb3VzU2libGluZyA9IG91dE9mRmxv
d0JveC0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAgICBmb3IgKDsgcHJldmlvdXNTaWJs
aW5nICYmIHByZXZpb3VzU2libGluZy0+aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKTsgcHJldmlvdXNT
aWJsaW5nID0gcHJldmlvdXNTaWJsaW5nLT5wcmV2aW91c1NpYmxpbmcoKSkgeyB9CisgICAgICAg
ICAgICBpZiAocHJldmlvdXNTaWJsaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91
c1NpYmxpbmc7CisgICAgICAgICAgICAvLyBQYXJlbnQgaXMgZWl0aGVyIHRoZSByb290IGhlcmUg
b3IgYW5vdGhlciBpbmxpbmUgYm94IChlLmcuIDxzcGFuPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBh
YnNvbHV0ZSI+PC9zcGFuPikKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudCA9IG91dE9mRmxvd0Jv
eC0+cGFyZW50KCk7CisgICAgICAgICAgICByZXR1cm4gJnBhcmVudCA9PSAmcm9vdCgpID8gbnVs
bHB0ciA6ICZwYXJlbnQ7CisgICAgICAgIH0oKTsKKworICAgICAgICBpZiAoIXByZXZpb3VzQ29u
dGVudFNraXBwaW5nRmxvYXRzKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAo
bm9uLWZsb2F0KWNoaWxkLiBMZXQncyBwbGFjZSBpdCB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qg
cnVuLgorICAgICAgICAgICAgLy8gPGRpdj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUi
PnRleHQgY29udGVudDwvZGl2PgorICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW5zLnNpemUoKSk7
CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxpbmVS
dW5zWzBdLmxvZ2ljYWxMZWZ0KCksIGxpbmVzWzBdLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgp
IH0pOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJl
dmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7Cisg
ICAgICAgICAgICAvLyBTdWJzZXF1ZW50IG91dC1vZi1mbG93IHBvc2l0aW9uZWQgYm94ZXMgc2hh
cmUgdGhlIHNhbWUgc3RhdGljIHBvc2l0aW9uLgorICAgICAgICAgICAgLy8gPGRpdj50ZXh0IGNv
bnRlbnQ8aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9u
OiBhYnNvbHV0ZSI+PC9kaXY+CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dp
Y2FsVG9wTGVmdChCb3hHZW9tZXRyeTo6Ym9yZGVyQm94VG9wTGVmdChnZW9tZXRyeUZvckJveCgq
cHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMpKSk7CisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0
cy0+aXNJbkZsb3coKSk7CisgICAgICAgIGF1dG8gcGxhY2VPdXRPZkZsb3dCb3hBZnRlclByZXZp
b3VzSW5GbG93Qm94ID0gWyZdIHsKKyAgICAgICAgICAgIC8vIFRoZSBvdXQtb2YtZmxvdyBib3gg
c2hvdWxkIGJlIHBsYWNlZCBhZnRlciB0aGlzIGluZmxvdyBib3guCisgICAgICAgICAgICAvLyBT
a2lwIHRvIHRoZSBsYXN0IHJ1biBvZiB0aGlzIGxheW91dCBib3guIFRoZSBsYXN0IHJ1bidzIGdl
b21ldHJ5IGlzIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3V0LW9mLWZsb3cgYm94J3Mgc3RhdGljIHBv
c2l0aW9uLgorICAgICAgICAgICAgc2l6ZV90IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRC
b3ggPSAwOworICAgICAgICAgICAgZm9yICg7IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRC
b3ggPCBsaW5lUnVucy5zaXplKCkgJiYgJmxpbmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3hdLmxheW91dEJveCgpICE9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyAr
K2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3gpIHsgfQorICAgICAgICAgICAgaWYgKGxh
c3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPT0gbGluZVJ1bnMuc2l6ZSgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IEluIHZlcnkgcmFyZSBjYXNlcywgdGhlIHByZXZpb3VzIGJv
eCdzIGNvbnRlbnQgbWlnaHQgaGF2ZSBiZWVuIGNvbXBsZXRlbHkgY29sbGFwc2VkIGFuZCBsZWZ0
IHVzIHdpdGggbm8gcnVuLgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURf
WUVUKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZm9yICg7IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPCBsaW5lUnVucy5zaXpl
KCkgJiYgJmxpbmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJv
eCgpID09IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJl
dmlvdXNMYXlvdXRCb3gpIHsgfQorICAgICAgICAgICAgICAgIC0tbGFzdFJ1bkluZGV4T25QcmV2
aW91c0xheW91dEJveDsKKyAgICAgICAgICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91
cyBydW4gaXMgdGhlIGxhc3QgcnVuIG9uIHRoZSBjdXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4
dCBydW4ncyBsZWZ0IGluc3RlYWQuCisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c1J1biA9IGxp
bmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdOworICAgICAgICAgICAgYXV0
byogbmV4dFJ1biA9IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxIDwgbGluZVJ1
bnMuc2l6ZSgpID8gJmxpbmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAx
XSA6IG51bGxwdHI7CisKKyAgICAgICAgICAgIGlmIChuZXh0UnVuICYmIG5leHRSdW4tPmxpbmVJ
bmRleCgpID09IHByZXZpb3VzUnVuLmxpbmVJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgLy8g
UHJldmlvdXMgYW5kIG5leHQgcnVucyBhcmUgb24gdGhlIHNhbWUgbGluZS4gVGhlIG91dC1vZi1m
bG93IGJveCBpcyByaWdodCBhdCB0aGUgcHJldmlvdXMgcnVuJ3MgbG9naWNhbCByaWdodC4KKyAg
ICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUi
PmNvbnRlbnQ8L2Rpdj4KKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcHJldmlv
dXNSdW4ubG9naWNhbFJpZ2h0KCk7CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ29udGVu
dFNraXBwaW5nRmxvYXRzLT5pc0lubGluZUJveCgpICYmICFwcmV2aW91c0NvbnRlbnRTa2lwcGlu
Z0Zsb2F0cy0+aXNBbm9ueW1vdXMoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRl
eHQ8c3Bhbj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9k
aXY+CisgICAgICAgICAgICAgICAgICAgIC8vIG9yCisgICAgICAgICAgICAgICAgICAgIC8vIDxk
aXY+dGV4dDxzcGFuPmNvbnRlbnQ8L3NwYW4+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
Ij48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lQm94Qm94R2VvbWV0cnkg
PSBnZW9tZXRyeUZvckJveCgqcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMpOworICAgICAg
ICAgICAgICAgICAgICBsb2dpY2FsTGVmdCA9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRz
ID09ICZvdXRPZkZsb3dCb3gtPnBhcmVudCgpCisgICAgICAgICAgICAgICAgICAgICAgICA/IEJv
eEdlb21ldHJ5Ojpib3JkZXJCb3hMZWZ0KGlubGluZUJveEJveEdlb21ldHJ5KSArIGlubGluZUJv
eEJveEdlb21ldHJ5LmNvbnRlbnRCb3hMZWZ0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDog
Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoaW5saW5lQm94Qm94R2VvbWV0cnkpLnJpZ2h0KCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNl
dExvZ2ljYWxUb3BMZWZ0KHsgbG9naWNhbExlZnQsIGxpbmVzW3ByZXZpb3VzUnVuLmxpbmVJbmRl
eCgpXS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChuZXh0UnVuKSB7CisgICAgICAg
ICAgICAgICAgLy8gVGhlIG91dCBvZiBmbG93IGJveCBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgbmV4dCBsaW5lICh3aGVyZSB0aGUgZmlyc3QgcnVuIG9uIHRoZSBsaW5lIGlzKS4K
KyAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8YnI+PGltZyBzdHlsZT0icG9zaXRpb246IGFi
c29sdXRlIj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L2Rpdj4KKyAg
ICAgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IG5leHRS
dW4tPmxvZ2ljYWxMZWZ0KCksIGxpbmVzW25leHRSdW4tPmxpbmVJbmRleCgpXS5saW5lQm94TG9n
aWNhbFJlY3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGF1dG8mIGxhc3RMaW5lTG9naWNhbFJlY3QgPSBsaW5lc1twcmV2
aW91c1J1bi5saW5lSW5kZXgoKV0ubGluZUJveExvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICAv
LyBUaGlzIG91dC1vZi1mbG93IGJveCBpcyB0aGUgbGFzdCBib3guCisgICAgICAgICAgICAvLyBG
SVhNRTogVXNlIGlzTGluZUJyZWFrIGluc3RlYWQgdG8gY292ZXIgcHJlc2VydmVkIG5ldyBsaW5l
cyB0b28uCisgICAgICAgICAgICBpZiAocHJldmlvdXNSdW4ubGF5b3V0Qm94KCkuaXNMaW5lQnJl
YWtCb3goKSkgeworICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9kaXY+
CisgICAgICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBs
YXN0TGluZUxvZ2ljYWxSZWN0LmxlZnQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSB9
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAv
LyBGSVhNRTogV2UgbWF5IG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBib3ggYWN0dWFsbHkgZml0cyB0
aGUgbGFzdCBsaW5lIGFuZCBtb3ZlIGl0IG92ZXIgdG8gdGhlICJuZXh0IiBsaW5lLgorICAgICAg
ICAgICAgb3V0T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBwcmV2aW91c1J1bi5s
b2dpY2FsUmlnaHQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC50b3AoKSB9KTsKKyAgICAgICAgfTsK
KyAgICAgICAgcGxhY2VPdXRPZkZsb3dCb3hBZnRlclByZXZpb3VzSW5GbG93Qm94KCk7CisgICAg
fQorfQorCiBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0
Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMoKQogewogICAgIGF1dG8mIGxheW91
dFN0YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKQEAgLTI5MSw3ICszOTAsNyBAQCBJbnRyaW5z
aWNXaWR0aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJp
bnNpY1dpZHRoQ29uc3RyYQogICAgICAgICBsYXlvdXRCb3ggPSBuZXh0SW5saW5lTGV2ZWxCb3hU
b0xheW91dCgqbGF5b3V0Qm94LCByb290KCkpOwogICAgIH0KIAotICAgIGNvbGxlY3RJbmxpbmVD
b250ZW50SWZOZWVkZWQoKTsKKyAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAKICAgICBh
dXRvIG1heGltdW1MaW5lV2lkdGggPSBbJl0oYXV0byBhdmFpbGFibGVXaWR0aCkgewogICAgICAg
ICAvLyBTd2l0Y2ggdG8gdGhlIG1pbi9tYXggZm9ybWF0dGluZyByb290IHdpZHRoIHZhbHVlcyBi
ZWZvcmUgZm9ybWF0dGluZyB0aGUgbGluZXMuCkBAIC00MTUsNyArNTE0LDcgQEAgdm9pZCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxh
eW91dEJveCwgY29uc3QKICAgICBib3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IGNvbnRl
bnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSwgY29udGVudEhlaWdo
dEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIgfSk7CiB9CiAKLXZvaWQgSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQordm9pZCBJ
bmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdENvbnRlbnRJZk5lZWRlZCgpCiB7CiAgICAg
YXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgaWYg
KCFmb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKS5pc0VtcHR5KCkpCkBAIC00MjQsMjQgKzUy
MywyOCBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVu
dElmTmVlZGVkKCkKICAgICAvLyA8c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAt
PiBbSW5saW5lQm94U3RhcnRdW0lubGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5l
Qm94RW5kXVtJbmxpbmVMZXZlbEJveF1bSW5saW5lQm94RW5kXQogICAgIEFTU0VSVChyb290KCku
aGFzSW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOwogICAgIExheW91dFF1ZXVlIGxheW91dFF1ZXVl
OwotICAgIGxheW91dFF1ZXVlLmFwcGVuZChyb290KCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hp
bGQoKSk7CisgICAgbGF5b3V0UXVldWUuYXBwZW5kKHJvb3QoKS5maXJzdENoaWxkKCkpOwogICAg
IHdoaWxlICghbGF5b3V0UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7
CiAgICAgICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSAqbGF5b3V0UXVldWUubGFzdCgpOwotICAg
ICAgICAgICAgYXV0byBpc0JveFdpdGhJbmxpbmVDb250ZW50ID0gbGF5b3V0Qm94LmlzSW5saW5l
Qm94KCkgJiYgIWxheW91dEJveC5pc0lubGluZVRleHRCb3goKSAmJiAhbGF5b3V0Qm94LmlzTGlu
ZUJyZWFrQm94KCk7Ci0gICAgICAgICAgICBpZiAoIWlzQm94V2l0aElubGluZUNvbnRlbnQpCisg
ICAgICAgICAgICBhdXRvIGlzSW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBsYXlvdXRCb3gu
aXNJbmxpbmVCb3goKSAmJiAhbGF5b3V0Qm94LmlzSW5saW5lVGV4dEJveCgpICYmICFsYXlvdXRC
b3guaXNMaW5lQnJlYWtCb3goKSAmJiAhbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgp
OworICAgICAgICAgICAgaWYgKCFpc0lubGluZUJveFdpdGhJbmxpbmVDb250ZW50KQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4g
aW5saW5lIGJveCAoZS5nLiA8c3Bhbj4pLgogICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZElubGluZUl0ZW0oeyBsYXlvdXRCb3gsIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0
IH0pOwogICAgICAgICAgICAgYXV0byYgaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBkb3du
Y2FzdDxDb250YWluZXJCb3g+KGxheW91dEJveCk7Ci0gICAgICAgICAgICBpZiAoIWlubGluZUJv
eFdpdGhJbmxpbmVDb250ZW50Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQorICAgICAgICAg
ICAgaWYgKCFpbmxpbmVCb3hXaXRoSW5saW5lQ29udGVudC5oYXNDaGlsZCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKGlubGluZUJveFdp
dGhJbmxpbmVDb250ZW50LmZpcnN0SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOworICAgICAgICAg
ICAgbGF5b3V0UXVldWUuYXBwZW5kKGlubGluZUJveFdpdGhJbmxpbmVDb250ZW50LmZpcnN0Q2hp
bGQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoIWxheW91dFF1ZXVlLmlzRW1wdHko
KSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLnRha2VMYXN0
KCk7Ci0gICAgICAgICAgICBpZiAoaXM8TGluZUJyZWFrQm94PihsYXlvdXRCb3gpKSB7CisgICAg
ICAgICAgICBpZiAobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gTGV0J3Mgbm90IGNvbnN0cnVjdCBJbmxpbmVJdGVtcyBmb3Igb3V0LW9mLWZs
b3cgY29udGVudCBhcyB0aGV5IGRvbid0IHBhcnRpY2lwYXRlIGluIHRoZSBpbmxpbmUgbGF5b3V0
LgorICAgICAgICAgICAgICAgIC8vIEhvd2V2ZXIgdG8gYmUgYWJsZSB0byBzdGF0aWMgcG9zaXRp
b25pbmcgdGhlbSwgd2UgbmVlZCB0byBjb21wdXRlIHRoZWlyIGFwcHJveGltYXRlIHBvc2l0aW9u
cy4KKyAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkT3V0T2ZGbG93Qm94KGxheW91
dEJveCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzPExpbmVCcmVha0JveD4obGF5b3V0Qm94
KSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGxpbmVCcmVha0JveCA9IGRvd25jYXN0PExpbmVC
cmVha0JveD4obGF5b3V0Qm94KTsKICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
SW5saW5lSXRlbSh7IGxheW91dEJveCwgbGluZUJyZWFrQm94LmlzT3B0aW9uYWwoKSA/IElubGlu
ZUl0ZW06OlR5cGU6OldvcmRCcmVha09wcG9ydHVuaXR5IDogSW5saW5lSXRlbTo6VHlwZTo6SGFy
ZExpbmVCcmVhayB9KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRp
bmdQb3NpdGlvbmVkKCkpCkBAIC00NTUsNyArNTU4LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgICAgIGlm
IChhdXRvKiBuZXh0U2libGluZyA9IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxp
bmcoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5l
eHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQobmV4dFNp
YmxpbmcpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMzVjOWVmNjQ1Yzk4
MzI0Mjg5YWNmN2UxMmU1MGI0MzQ3Y2E3MjZjMC4uOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2Nj
MzFhOTQwMTI2MGZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5H
X0NPTlRFWFQpCiAKICNpbmNsdWRlICJGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkZv
cm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgog
I2luY2x1ZGUgIklubGluZUZvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5l
QnVpbGRlci5oIgpAQCAtNjEsNiArNjIsNyBAQCBwcml2YXRlOgogICAgIEludHJpbnNpY1dpZHRo
Q29uc3RyYWludHMgY29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxpbmVMYXlvdXQoSW5saW5lSXRlbXMmLCBMaW5lQnVpbGRlcjo6SW5saW5l
SXRlbVJhbmdlLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKTsKKyAgICB2b2lk
IGNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9ybWF0dGlu
Z1N0YXRlOjpPdXRPZkZsb3dCb3hMaXN0Jik7CiAKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNX
aWR0aEZvckZvcm1hdHRpbmdSb290KGNvbnN0IEJveCYpOwogICAgIElubGluZUxheW91dFVuaXQg
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNvbnN0cmFpbnQoSW5saW5lTGF5b3V0VW5pdCBhdmFp
bGFibGVXaWR0aCkgY29uc3Q7CkBAIC02OSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
b21wdXRlSGVpZ2h0QW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYpOwogICAgIHZvaWQgY29tcHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0
IEhvcml6b250YWxDb25zdHJhaW50cyYpOwogCi0gICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVu
dElmTmVlZGVkKCk7CisgICAgdm9pZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgSW5s
aW5lUmVjdCBjb21wdXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6
TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGlu
dmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGFhYjdjZTE4NzI2YWUxYmFmNGE5MTZjYTEyMGU2Njk0MWI0Y2M1ODkuLjg5ODJhN2UzZWJi
ZTBlOTFmOGE0NjcyNWE3YjljYjViMzVjMGNhNDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAy
MS0wOC0yMiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11b
SUZDXSBBZGQgc3VwcG9ydCBmb3Igb3V0LW9mLWZsb3cgYm94IHN0YXRpYyBwb3NpdGlvbmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MTAzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBmYXN0L2lu
bGluZS9vdXQtb2YtZmxvdy13aXRoLXN0YXRpYy1wb3NpdGlvbi1pbi1pZmMtZXhwZWN0ZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9pbmxpbmUvb3V0LW9mLWZsb3ctd2l0aC1zdGF0aWMt
cG9zaXRpb24taW4taWZjLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA4LTIxICBNeWxlcyBDLiBNYXhm
aWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50
KCkgaW4gY3JlYXRlQW5kRmlsbEdseXBoUGFnZSgpIGlzIHdyb25nCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2lubGluZS9vdXQtb2YtZmxvdy13aXRoLXN0YXRpYy1wb3NpdGlvbi1pbi1p
ZmMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL291dC1vZi1mbG93LXdp
dGgtc3RhdGljLXBvc2l0aW9uLWluLWlmYy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2Njk3
ZGM3YTI5ZmViM2Y2NmVjYWIwN2M0NjdjZjcxZDU0Y2Y4NGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2lubGluZS9vdXQtb2YtZmxvdy13aXRoLXN0YXRpYy1wb3NpdGlvbi1p
bi1pZmMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8c3R5bGU+Citib2R5IHsKKyAg
bWFyZ2luOiAwcHg7CisgIGZvbnQtZmFtaWx5OiBBaGVtOworfQorCitkaXYgeworICBsaW5lLWhl
aWdodDogNDBweDsgCit9CisKK2ltZyB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgd2lkdGg6
IDEwcHg7CisgIGhlaWdodDogMTBweDsKKyAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47Cit9Cis8
L3N0eWxlPgorPCEtLSBvdXQtb2YtZmxvdyBib3hlcyB3aXRoIHN0YXRpYyBwb3NpdGlvbmluZyBp
biBJRkMgLS0+Cis8ZGl2PnRleHQ8L2Rpdj4KKzxkaXY+dGV4dDwvZGl2PgorPGRpdj50ZXh0PC9k
aXY+Cis8ZGl2PnRleHQ8L2Rpdj4KKzxkaXY+PHNwYW4+PC9zcGFuPnRleHQ8L2Rpdj4KKzxkaXY+
PHNwYW4+PHNwYW4+PC9zcGFuPjwvc3Bhbj50ZXh0PC9kaXY+Cis8ZGl2PjxzcGFuPnRleHQ8L3Nw
YW4+dGV4dDwvZGl2PgorPGRpdj48c3Bhbj50ZXh0PC9zcGFuPnRleHQ8L2Rpdj4KKzxkaXY+PGJy
PjwvZGl2PgorPGRpdj48YnI+dGV4dDwvZGl2PgorPGRpdj48YnI+PGJyPjwvZGl2PgorPGRpdj50
ZXh0PGJyPjwvZGl2PgorPGRpdj50ZXh0PGJyPjwvZGl2PgorPGltZyBzdHlsZT0ibGVmdDogMHB4
OyB0b3A6IDBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogMHB4OyB0b3A6IDQwcHg7Ij4KKzxpbWcg
c3R5bGU9ImxlZnQ6IDY0cHg7IHRvcDogODBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogMHB4OyB0
b3A6IDEyMHB4OyI+PGltZyBzdHlsZT0ibGVmdDogNjRweDsgdG9wOiAxMjBweDsiPgorPGltZyBz
dHlsZT0ibGVmdDogMHB4OyB0b3A6IDE2MHB4OyI+PGltZyBzdHlsZT0ibGVmdDogNjRweDsgdG9w
OiAxNjBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogMHB4OyB0b3A6IDIwMHB4OyI+PGltZyBzdHls
ZT0ibGVmdDogNjRweDsgdG9wOiAyMDBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogNjRweDsgdG9w
OiAyNDBweDsiPjxpbWcgc3R5bGU9ImxlZnQ6IDEyOHB4OyB0b3A6IDI0MHB4OyI+Cis8aW1nIHN0
eWxlPSJsZWZ0OiA2NHB4OyB0b3A6IDI4MHB4OyI+PGltZyBzdHlsZT0ibGVmdDogMTI4cHg7IHRv
cDogMjgwcHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDBweDsgdG9wOiAzNjBweDsiPgorPGltZyBz
dHlsZT0ibGVmdDogNjRweDsgdG9wOiA0MDBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogMHB4OyB0
b3A6IDUyMHB4OyI+Cis8aW1nIHN0eWxlPSJsZWZ0OiAwcHg7IHRvcDogNTYwcHg7Ij4KKzxpbWcg
c3R5bGU9ImxlZnQ6IDBweDsgdG9wOiA2MDBweDsiPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9pbmxpbmUvb3V0LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2lubGluZS9vdXQtb2YtZmxvdy13aXRoLXN0YXRpYy1wb3NpdGlv
bi1pbi1pZmMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kM2ZmYjcwNWY1YzJlNDI3YTliNmQwZjRmNmQzZmYw
Zjk5ZWFlZTNjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvb3V0
LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLmh0bWwKQEAgLTAsMCArMSwzMSBA
QAorPHN0eWxlPgorYm9keSB7CisgIG1hcmdpbjogMHB4OworICBmb250LWZhbWlseTogQWhlbTsK
K30KKworZGl2IHsKKyAgbGluZS1oZWlnaHQ6IDQwcHg7IAorfQorCitpbWcgeworICBwb3NpdGlv
bjogYWJzb2x1dGU7CisgIHdpZHRoOiAxMHB4OworICBoZWlnaHQ6IDEwcHg7CisgIGJhY2tncm91
bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwhLS0gb3V0LW9mLWZsb3cgYm94ZXMgd2l0
aCBzdGF0aWMgcG9zaXRpb25pbmcgaW4gSUZDIC0tPgorPGRpdj48aW1nPnRleHQ8L2Rpdj4KKzxk
aXY+PGltZz48aW1nPnRleHQ8L2Rpdj4KKzxkaXY+dGV4dDxpbWc+PC9kaXY+Cis8ZGl2PjxpbWc+
dGV4dDxpbWc+PC9kaXY+Cis8ZGl2PjxzcGFuPjxpbWc+PC9zcGFuPnRleHQ8aW1nPjwvZGl2Pgor
PGRpdj48c3Bhbj48c3Bhbj48aW1nPjwvc3Bhbj48L3NwYW4+dGV4dDxpbWc+PC9kaXY+Cis8ZGl2
PjxzcGFuPnRleHQ8aW1nPjwvc3Bhbj50ZXh0PGltZz48L2Rpdj4KKzxkaXY+PHNwYW4+dGV4dDwv
c3Bhbj48aW1nPnRleHQ8aW1nPjwvZGl2PgorPGRpdj48YnI+PGltZz48L2Rpdj4KKzxkaXY+PGJy
PnRleHQ8aW1nPjwvZGl2PgorPGRpdj48YnI+PGJyPjxpbWc+PC9kaXY+Cis8ZGl2PnRleHQ8YnI+
PGltZz48L2Rpdj4KKzxkaXY+dGV4dDxicj48aW1nPjxpbWc+PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436130</attachid>
            <date>2021-08-22 15:37:03 -0700</date>
            <delta_ts>2021-08-22 17:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229103-20210822153702.patch</filename>
            <type>text/plain</type>
            <size>19856</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU4ZTdjODUzOGVkYzk4
NWY2N2E3ZjhlYTkwMTI1Y2M5NWE1YWE0OS4uNGZhMzA3NjdlOTI5MTllODcyOTA4OWM2YWMzZGFm
MDNhZWExMTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTIyICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBw
b3J0IGZvciBvdXQtb2YtZmxvdyBib3ggc3RhdGljIHBvc2l0aW9uaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkxMDMKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGluIHByZXBh
cmF0aW9uIGZvciBlbmFibGluZyBwb3NpdGlvbmVkIGNvbnRlbnQgZm9yIElGQyBoYW5kbGluZy4K
KworICAgICAgICBJbiB0aGlzIHBhdGNoIHdlIGNvbXB1dGUgdGhlIHN0YXRpYyBwb3NpdGlvbiBm
b3Igb3V0LW9mLWZsb3cgY29udGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQuCisgICAgICAgIEFzIHBlciBzcGVjLCB0aGUgc3RhdGljIHBvc2l0aW9uIG9mIGFuIG91dC1v
Zi1mbG93IGJveCBpcyBjb21wdXRlZCBhcyBpZiB0aGUgcG9zaXRpb24gd2FzIHNldCB0byBzdGF0
aWMuCisgICAgICAgIEhvd2V2ZXIgaXQgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSBvdXQtb2YtZmxv
dyBib3ggc2hvdWxkIGJlIGludm9sdmVkIGluIHRoZSBpbmxpbmUgbGF5b3V0IHByb2Nlc3MuCisg
ICAgICAgIEluc3RlYWQgd2UgZmlndXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0
aGUgaW5saW5lIGxheW91dCBieSBsb29raW5nIGF0CisgICAgICAgIHRoZSBwcmV2aW91cyBzaWJs
aW5nIChvciBwYXJlbnQpIGJveCdzIGdlb21ldHJ5IGFuZCBwbGFjZSB0aGUgb3V0LW9mLWZsb3cg
Ym94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgorCisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5G
bG93Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpsaW5lTGF5b3V0Rm9ySW50ZXJncmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVTdGF0aWNQb3NpdGlvbkZvck91
dE9mRmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RDb250ZW50
SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQu
aDoKKwogMjAyMS0wOC0yMiAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3IgdmVydGljYWwtYWxpZ246IHN1YgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDk3ZGMz
YzQ0MjcwY2M0OGRhMjU3MmIyMmYxZTgwYzZhYWQ5YmU4NDcuLjQ5NTJjYmZlZjAwODg0MjI0NTg0
MzE2MmRjNWI4Mjc1NzhjYmFjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTEzNiwxOSArMTM2LDIxIEBAIHZvaWQgSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGlu
dmFsaWRhdGlvCiAgICAgICAgIGxheW91dEJveCA9IG5leHRJbmxpbmVMZXZlbEJveFRvTGF5b3V0
KCpsYXlvdXRCb3gsIHJvb3QoKSk7CiAgICAgfQogCi0gICAgY29sbGVjdElubGluZUNvbnRlbnRJ
Zk5lZWRlZCgpOworICAgIGNvbGxlY3RDb250ZW50SWZOZWVkZWQoKTsKIAogICAgIGF1dG8mIGlu
bGluZUl0ZW1zID0gZm9ybWF0dGluZ1N0YXRlKCkuaW5saW5lSXRlbXMoKTsKICAgICBsaW5lTGF5
b3V0KGlubGluZUl0ZW1zLCB7IDAsIGlubGluZUl0ZW1zLnNpemUoKSB9LCBjb25zdHJhaW50cyk7
CisgICAgY29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChmb3JtYXR0aW5n
U3RhdGUoKS5vdXRPZkZsb3dCb3hlcygpKTsKICAgICBMT0dfV0lUSF9TVFJFQU0oRm9ybWF0dGlu
Z0NvbnRleHRMYXlvdXQsIHN0cmVhbSA8PCAiW0VuZF0gLT4gaW5saW5lIGZvcm1hdHRpbmcgY29u
dGV4dCAtPiBmb3JtYXR0aW5nIHJvb3QoIiA8PCAmcm9vdCgpIDw8ICIpIik7CiB9CiAKIHZvaWQg
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXRGb3JJbnRlcmdyYXRpb24oSW52YWxp
ZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvblN0YXRlLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxv
d0NvbnRlbnQmIGNvbnN0cmFpbnRzKQogewogICAgIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUo
aW52YWxpZGF0aW9uU3RhdGUpOwotICAgIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsK
KyAgICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgYXV0byYgaW5saW5lSXRlbXMgPSBm
b3JtYXR0aW5nU3RhdGUoKS5pbmxpbmVJdGVtcygpOwogICAgIGxpbmVMYXlvdXQoaW5saW5lSXRl
bXMsIHsgMCwgaW5saW5lSXRlbXMuc2l6ZSgpIH0sIGNvbnN0cmFpbnRzKTsKKyAgICBjb21wdXRl
U3RhdGljUG9zaXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGZvcm1hdHRpbmdTdGF0ZSgpLm91dE9m
Rmxvd0JveGVzKCkpOwogfQogCiBMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojp1
c2VkQ29udGVudEhlaWdodCgpIGNvbnN0CkBAIC0yNTMsNiArMjU1LDEwMyBAQCB2b2lkIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywg
TGluZUJ1aWxkZXI6OgogICAgIH0KIH0KIAordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3JtYXR0aW5n
U3RhdGU6Ok91dE9mRmxvd0JveExpc3QmIG91dE9mRmxvd0JveGVzKQoreworICAgIC8vIFRoaXMg
ZnVuY3Rpb24gY29tcHV0ZXMgdGhlIHN0YXRpYyBwb3NpdGlvbiBmb3Igb3V0LW9mLWZsb3cgY29u
dGVudCBpbnNpZGUgdGhlIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQuCisgICAgLy8gQXMgcGVy
IHNwZWMsIHRoZSBzdGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0LW9mLWZsb3cgYm94IGlzIGNvbXB1
dGVkIGFzIGlmIHRoZSBwb3NpdGlvbiB3YXMgc2V0IHRvIHN0YXRpYy4KKyAgICAvLyBIb3dldmVy
IGl0IGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgb3V0LW9mLWZsb3cgYm94IHNob3VsZCBiZSBpbnZv
bHZlZCBpbiB0aGUgaW5saW5lIGxheW91dCBwcm9jZXNzLgorICAgIC8vIEluc3RlYWQgd2UgZmln
dXJlIG91dCB0aGlzIHN0YXRpYyBwb3NpdGlvbiBhZnRlciB0aGUgaW5saW5lIGxheW91dCBieSBs
b29raW5nIGF0IHRoZSBwcmV2aW91cy9uZXh0IHNpYmxpbmcgKG9yIHBhcmVudCkgYm94J3MgZ2Vv
bWV0cnkgYW5kCisgICAgLy8gcGxhY2UgdGhlIG91dC1vZi1mbG93IGJveCBhdCB0aGUgbG9naWNh
bCByaWdodCBwb3NpdGlvbi4KKyAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3Jt
YXR0aW5nU3RhdGUoKTsKKyAgICBhdXRvJiBsaW5lcyA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lcygp
OworICAgIGF1dG8mIGxpbmVSdW5zID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCk7CisKKyAg
ICBmb3IgKGF1dG8mIG91dE9mRmxvd0JveCA6IG91dE9mRmxvd0JveGVzKSB7CisgICAgICAgIGF1
dG8mIG91dE9mRmxvd0dlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KCpvdXRP
ZkZsb3dCb3gpOworICAgICAgICAvLyBCb3RoIHByZXZpb3VzIGZsb2F0IGFuZCBvdXQtb2YtZmxv
dyBib3hlcyBhcmUgc2tpcHBlZCBoZXJlLiBBIHNlcmllcyBvZiBhZGpvaW5pbmcgb3V0LW9mLWZs
b3cgYm94ZXMgc2hvdWxkIGFsbCBiZSBwbGFjZWQKKyAgICAgICAgLy8gYXQgdGhlIHNhbWUgc3Rh
dGljIHBvc2l0aW9uICh0aGV5IGRvbid0IGFmZmVjdCBuZXh0LXNpYmxpbmcgcG9zaXRpb25zKSBh
bmQgd2hpbGUgZmxvYXRzIGRvIHBhcnRpY2lwYXRlIGluIHRoZSBpbmxpbmUgbGF5b3V0CisgICAg
ICAgIC8vIHRoZWlyIHBvc2l0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiB0YWtlbiBpbnRvIGFjY291
bnQgZHVyaW5nIHRoZSBpbmxpbmUgbGF5b3V0LgorICAgICAgICBhdXRvIHByZXZpb3VzQ29udGVu
dFNraXBwaW5nRmxvYXRzID0gWyZdKCkgLT4gY29uc3QgTGF5b3V0OjpCb3gqIHsKKyAgICAgICAg
ICAgIGF1dG8qIHByZXZpb3VzU2libGluZyA9IG91dE9mRmxvd0JveC0+cHJldmlvdXNTaWJsaW5n
KCk7CisgICAgICAgICAgICBmb3IgKDsgcHJldmlvdXNTaWJsaW5nICYmIHByZXZpb3VzU2libGlu
Zy0+aXNGbG9hdGluZ1Bvc2l0aW9uZWQoKTsgcHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNTaWJs
aW5nLT5wcmV2aW91c1NpYmxpbmcoKSkgeyB9CisgICAgICAgICAgICBpZiAocHJldmlvdXNTaWJs
aW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmc7CisgICAgICAgICAg
ICAvLyBQYXJlbnQgaXMgZWl0aGVyIHRoZSByb290IGhlcmUgb3IgYW5vdGhlciBpbmxpbmUgYm94
IChlLmcuIDxzcGFuPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9zcGFuPikKKyAg
ICAgICAgICAgIGF1dG8mIHBhcmVudCA9IG91dE9mRmxvd0JveC0+cGFyZW50KCk7CisgICAgICAg
ICAgICByZXR1cm4gJnBhcmVudCA9PSAmcm9vdCgpID8gbnVsbHB0ciA6ICZwYXJlbnQ7CisgICAg
ICAgIH0oKTsKKworICAgICAgICBpZiAoIXByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzKSB7
CisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBmaXJzdCAobm9uLWZsb2F0KWNoaWxkLiBMZXQn
cyBwbGFjZSBpdCB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3QgcnVuLgorICAgICAgICAgICAgLy8g
PGRpdj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPnRleHQgY29udGVudDwvZGl2Pgor
ICAgICAgICAgICAgQVNTRVJUKGxpbmVSdW5zLnNpemUoKSk7CisgICAgICAgICAgICBvdXRPZkZs
b3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IGxpbmVSdW5zWzBdLmxvZ2ljYWxMZWZ0KCks
IGxpbmVzWzBdLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgpIH0pOworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJldmlvdXNDb250ZW50U2tpcHBpbmdG
bG9hdHMtPmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICAvLyBTdWJzZXF1
ZW50IG91dC1vZi1mbG93IHBvc2l0aW9uZWQgYm94ZXMgc2hhcmUgdGhlIHNhbWUgc3RhdGljIHBv
c2l0aW9uLgorICAgICAgICAgICAgLy8gPGRpdj50ZXh0IGNvbnRlbnQ8aW1nIHN0eWxlPSJwb3Np
dGlvbjogYWJzb2x1dGUiPjxpbWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9kaXY+Cisg
ICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdChCb3hHZW9tZXRy
eTo6Ym9yZGVyQm94VG9wTGVmdChnZW9tZXRyeUZvckJveCgqcHJldmlvdXNDb250ZW50U2tpcHBp
bmdGbG9hdHMpKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IEFTU0VSVChwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cy0+aXNJbkZsb3coKSk7CisgICAg
ICAgIGF1dG8gcGxhY2VPdXRPZkZsb3dCb3hBZnRlclByZXZpb3VzSW5GbG93Qm94ID0gWyZdIHsK
KyAgICAgICAgICAgIC8vIFRoZSBvdXQtb2YtZmxvdyBib3ggc2hvdWxkIGJlIHBsYWNlZCBhZnRl
ciB0aGlzIGluZmxvdyBib3guCisgICAgICAgICAgICAvLyBTa2lwIHRvIHRoZSBsYXN0IHJ1biBv
ZiB0aGlzIGxheW91dCBib3guIFRoZSBsYXN0IHJ1bidzIGdlb21ldHJ5IGlzIHVzZWQgdG8gY29t
cHV0ZSB0aGUgb3V0LW9mLWZsb3cgYm94J3Mgc3RhdGljIHBvc2l0aW9uLgorICAgICAgICAgICAg
c2l6ZV90IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPSAwOworICAgICAgICAgICAg
Zm9yICg7IGxhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggPCBsaW5lUnVucy5zaXplKCkg
JiYgJmxpbmVSdW5zW2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJveCgp
ICE9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJldmlv
dXNMYXlvdXRCb3gpIHsgfQorICAgICAgICAgICAgaWYgKGxhc3RSdW5JbmRleE9uUHJldmlvdXNM
YXlvdXRCb3ggPT0gbGluZVJ1bnMuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IEluIHZlcnkgcmFyZSBjYXNlcywgdGhlIHByZXZpb3VzIGJveCdzIGNvbnRlbnQgbWlnaHQgaGF2
ZSBiZWVuIGNvbXBsZXRlbHkgY29sbGFwc2VkIGFuZCBsZWZ0IHVzIHdpdGggbm8gcnVuLgorICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICg7IGxhc3RSdW5JbmRl
eE9uUHJldmlvdXNMYXlvdXRCb3ggPCBsaW5lUnVucy5zaXplKCkgJiYgJmxpbmVSdW5zW2xhc3RS
dW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3hdLmxheW91dEJveCgpID09IHByZXZpb3VzQ29udGVu
dFNraXBwaW5nRmxvYXRzOyArK2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3gpIHsgfQor
ICAgICAgICAgICAgICAgIC0tbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveDsKKyAgICAg
ICAgICAgIC8vIExldCdzIGNoZWNrIGlmIHRoZSBwcmV2aW91cyBydW4gaXMgdGhlIGxhc3QgcnVu
IG9uIHRoZSBjdXJyZW50IGxpbmUgYW5kIHVzZSB0aGUgbmV4dCBydW4ncyBsZWZ0IGluc3RlYWQu
CisgICAgICAgICAgICBhdXRvJiBwcmV2aW91c1J1biA9IGxpbmVSdW5zW2xhc3RSdW5JbmRleE9u
UHJldmlvdXNMYXlvdXRCb3hdOworICAgICAgICAgICAgYXV0byogbmV4dFJ1biA9IGxhc3RSdW5J
bmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxIDwgbGluZVJ1bnMuc2l6ZSgpID8gJmxpbmVSdW5z
W2xhc3RSdW5JbmRleE9uUHJldmlvdXNMYXlvdXRCb3ggKyAxXSA6IG51bGxwdHI7CisKKyAgICAg
ICAgICAgIGlmIChuZXh0UnVuICYmIG5leHRSdW4tPmxpbmVJbmRleCgpID09IHByZXZpb3VzUnVu
LmxpbmVJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgLy8gUHJldmlvdXMgYW5kIG5leHQgcnVu
cyBhcmUgb24gdGhlIHNhbWUgbGluZS4gVGhlIG91dC1vZi1mbG93IGJveCBpcyByaWdodCBhdCB0
aGUgcHJldmlvdXMgcnVuJ3MgbG9naWNhbCByaWdodC4KKyAgICAgICAgICAgICAgICAvLyA8ZGl2
PnRleHQ8aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L2Rpdj4KKyAgICAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxMZWZ0ID0gcHJldmlvdXNSdW4ubG9naWNhbFJpZ2h0KCk7
CisgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzLT5pc0lu
bGluZUJveCgpICYmICFwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cy0+aXNBbm9ueW1vdXMo
KSkgeworICAgICAgICAgICAgICAgICAgICAvLyA8ZGl2PnRleHQ8c3Bhbj48aW1nIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L3NwYW4+PC9kaXY+CisgICAgICAgICAgICAgICAg
ICAgIC8vIG9yCisgICAgICAgICAgICAgICAgICAgIC8vIDxkaXY+dGV4dDxzcGFuPmNvbnRlbnQ8
L3NwYW4+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48L2Rpdj4KKyAgICAgICAgICAg
ICAgICAgICAgYXV0byYgaW5saW5lQm94Qm94R2VvbWV0cnkgPSBnZW9tZXRyeUZvckJveCgqcHJl
dmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHMpOworICAgICAgICAgICAgICAgICAgICBsb2dpY2Fs
TGVmdCA9IHByZXZpb3VzQ29udGVudFNraXBwaW5nRmxvYXRzID09ICZvdXRPZkZsb3dCb3gtPnBh
cmVudCgpCisgICAgICAgICAgICAgICAgICAgICAgICA/IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hM
ZWZ0KGlubGluZUJveEJveEdlb21ldHJ5KSArIGlubGluZUJveEJveEdlb21ldHJ5LmNvbnRlbnRC
b3hMZWZ0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogQm94R2VvbWV0cnk6OmJvcmRlckJv
eFJlY3QoaW5saW5lQm94Qm94R2VvbWV0cnkpLnJpZ2h0KCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG91dE9mRmxvd0dlb21ldHJ5LnNldExvZ2ljYWxUb3BMZWZ0KHsgbG9n
aWNhbExlZnQsIGxpbmVzW3ByZXZpb3VzUnVuLmxpbmVJbmRleCgpXS5saW5lQm94TG9naWNhbFJl
Y3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChuZXh0UnVuKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG91dCBv
ZiBmbG93IGJveCBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBsaW5lICh3
aGVyZSB0aGUgZmlyc3QgcnVuIG9uIHRoZSBsaW5lIGlzKS4KKyAgICAgICAgICAgICAgICAvLyA8
ZGl2PnRleHQ8YnI+PGltZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj48aW1nIHN0eWxlPSJw
b3NpdGlvbjogYWJzb2x1dGUiPmNvbnRlbnQ8L2Rpdj4KKyAgICAgICAgICAgICAgICBvdXRPZkZs
b3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVmdCh7IG5leHRSdW4tPmxvZ2ljYWxMZWZ0KCksIGxp
bmVzW25leHRSdW4tPmxpbmVJbmRleCgpXS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGF1
dG8mIGxhc3RMaW5lTG9naWNhbFJlY3QgPSBsaW5lc1twcmV2aW91c1J1bi5saW5lSW5kZXgoKV0u
bGluZUJveExvZ2ljYWxSZWN0KCk7CisgICAgICAgICAgICAvLyBUaGlzIG91dC1vZi1mbG93IGJv
eCBpcyB0aGUgbGFzdCBib3guCisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGlzTGluZUJyZWFr
IGluc3RlYWQgdG8gY292ZXIgcHJlc2VydmVkIG5ldyBsaW5lcyB0b28uCisgICAgICAgICAgICBp
ZiAocHJldmlvdXNSdW4ubGF5b3V0Qm94KCkuaXNMaW5lQnJlYWtCb3goKSkgeworICAgICAgICAg
ICAgICAgIC8vIDxkaXY+dGV4dDxicj48aW1nIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGUiPjxp
bWcgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZSI+PC9kaXY+CisgICAgICAgICAgICAgICAgb3V0
T2ZGbG93R2VvbWV0cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsYXN0TGluZUxvZ2ljYWxSZWN0Lmxl
ZnQoKSwgbGFzdExpbmVMb2dpY2FsUmVjdC5ib3R0b20oKSB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGSVhNRTogV2UgbWF5IG5lZWQg
dG8gY2hlY2sgaWYgdGhpcyBib3ggYWN0dWFsbHkgZml0cyB0aGUgbGFzdCBsaW5lIGFuZCBtb3Zl
IGl0IG92ZXIgdG8gdGhlICJuZXh0IiBsaW5lLgorICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0
cnkuc2V0TG9naWNhbFRvcExlZnQoeyBwcmV2aW91c1J1bi5sb2dpY2FsUmlnaHQoKSwgbGFzdExp
bmVMb2dpY2FsUmVjdC50b3AoKSB9KTsKKyAgICAgICAgfTsKKyAgICAgICAgcGxhY2VPdXRPZkZs
b3dCb3hBZnRlclByZXZpb3VzSW5GbG93Qm94KCk7CisgICAgfQorfQorCiBJbnRyaW5zaWNXaWR0
aENvbnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dp
ZHRoQ29uc3RyYWludHMoKQogewogICAgIGF1dG8mIGxheW91dFN0YXRlID0gdGhpcy0+bGF5b3V0
U3RhdGUoKTsKQEAgLTI5MSw3ICszOTAsNyBAQCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlZEludHJpbnNpY1dpZHRoQ29uc3RyYQogICAg
ICAgICBsYXlvdXRCb3ggPSBuZXh0SW5saW5lTGV2ZWxCb3hUb0xheW91dCgqbGF5b3V0Qm94LCBy
b290KCkpOwogICAgIH0KIAotICAgIGNvbGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKKyAg
ICBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAKICAgICBhdXRvIG1heGltdW1MaW5lV2lkdGgg
PSBbJl0oYXV0byBhdmFpbGFibGVXaWR0aCkgewogICAgICAgICAvLyBTd2l0Y2ggdG8gdGhlIG1p
bi9tYXggZm9ybWF0dGluZyByb290IHdpZHRoIHZhbHVlcyBiZWZvcmUgZm9ybWF0dGluZyB0aGUg
bGluZXMuCkBAIC00MTUsNyArNTE0LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZUhlaWdodEFuZE1hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCwgY29uc3QKICAgICBi
b3hHZW9tZXRyeS5zZXRWZXJ0aWNhbE1hcmdpbih7IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9u
Q29sbGFwc2VkTWFyZ2luLmJlZm9yZSwgY29udGVudEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBz
ZWRNYXJnaW4uYWZ0ZXIgfSk7CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQordm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6Y29sbGVjdENvbnRlbnRJZk5lZWRlZCgpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRl
ID0gdGhpcy0+Zm9ybWF0dGluZ1N0YXRlKCk7CiAgICAgaWYgKCFmb3JtYXR0aW5nU3RhdGUuaW5s
aW5lSXRlbXMoKS5pc0VtcHR5KCkpCkBAIC00MjQsMjQgKzUyMywyOCBAQCB2b2lkIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb2xsZWN0SW5saW5lQ29udGVudElmTmVlZGVkKCkKICAgICAvLyA8
c3Bhbj50ZXh0PHNwYW4+PC9zcGFuPjxpbWc+PC9zcGFuPiAtPiBbSW5saW5lQm94U3RhcnRdW0lu
bGluZUxldmVsQm94XVtJbmxpbmVCb3hTdGFydF1bSW5saW5lQm94RW5kXVtJbmxpbmVMZXZlbEJv
eF1bSW5saW5lQm94RW5kXQogICAgIEFTU0VSVChyb290KCkuaGFzSW5GbG93T3JGbG9hdGluZ0No
aWxkKCkpOwogICAgIExheW91dFF1ZXVlIGxheW91dFF1ZXVlOwotICAgIGxheW91dFF1ZXVlLmFw
cGVuZChyb290KCkuZmlyc3RJbkZsb3dPckZsb2F0aW5nQ2hpbGQoKSk7CisgICAgbGF5b3V0UXVl
dWUuYXBwZW5kKHJvb3QoKS5maXJzdENoaWxkKCkpOwogICAgIHdoaWxlICghbGF5b3V0UXVldWUu
aXNFbXB0eSgpKSB7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBhdXRvJiBs
YXlvdXRCb3ggPSAqbGF5b3V0UXVldWUubGFzdCgpOwotICAgICAgICAgICAgYXV0byBpc0JveFdp
dGhJbmxpbmVDb250ZW50ID0gbGF5b3V0Qm94LmlzSW5saW5lQm94KCkgJiYgIWxheW91dEJveC5p
c0lubGluZVRleHRCb3goKSAmJiAhbGF5b3V0Qm94LmlzTGluZUJyZWFrQm94KCk7Ci0gICAgICAg
ICAgICBpZiAoIWlzQm94V2l0aElubGluZUNvbnRlbnQpCisgICAgICAgICAgICBhdXRvIGlzSW5s
aW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBsYXlvdXRCb3guaXNJbmxpbmVCb3goKSAmJiAhbGF5
b3V0Qm94LmlzSW5saW5lVGV4dEJveCgpICYmICFsYXlvdXRCb3guaXNMaW5lQnJlYWtCb3goKSAm
JiAhbGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpOworICAgICAgICAgICAgaWYgKCFp
c0lubGluZUJveFdpdGhJbmxpbmVDb250ZW50KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc3RhcnQgb2YgYW4gaW5saW5lIGJveCAoZS5nLiA8c3Bh
bj4pLgogICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZElubGluZUl0ZW0oeyBsYXlvdXRC
b3gsIElubGluZUl0ZW06OlR5cGU6OklubGluZUJveFN0YXJ0IH0pOwogICAgICAgICAgICAgYXV0
byYgaW5saW5lQm94V2l0aElubGluZUNvbnRlbnQgPSBkb3duY2FzdDxDb250YWluZXJCb3g+KGxh
eW91dEJveCk7Ci0gICAgICAgICAgICBpZiAoIWlubGluZUJveFdpdGhJbmxpbmVDb250ZW50Lmhh
c0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQorICAgICAgICAgICAgaWYgKCFpbmxpbmVCb3hXaXRo
SW5saW5lQ29udGVudC5oYXNDaGlsZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgbGF5b3V0UXVldWUuYXBwZW5kKGlubGluZUJveFdpdGhJbmxpbmVDb250ZW50LmZpcnN0
SW5GbG93T3JGbG9hdGluZ0NoaWxkKCkpOworICAgICAgICAgICAgbGF5b3V0UXVldWUuYXBwZW5k
KGlubGluZUJveFdpdGhJbmxpbmVDb250ZW50LmZpcnN0Q2hpbGQoKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICB3aGlsZSAoIWxheW91dFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYXV0
byYgbGF5b3V0Qm94ID0gKmxheW91dFF1ZXVlLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBpZiAo
aXM8TGluZUJyZWFrQm94PihsYXlvdXRCb3gpKSB7CisgICAgICAgICAgICBpZiAobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gTGV0J3Mgbm90
IGNvbnN0cnVjdCBJbmxpbmVJdGVtcyBmb3Igb3V0LW9mLWZsb3cgY29udGVudCBhcyB0aGV5IGRv
bid0IHBhcnRpY2lwYXRlIGluIHRoZSBpbmxpbmUgbGF5b3V0LgorICAgICAgICAgICAgICAgIC8v
IEhvd2V2ZXIgdG8gYmUgYWJsZSB0byBzdGF0aWMgcG9zaXRpb25pbmcgdGhlbSwgd2UgbmVlZCB0
byBjb21wdXRlIHRoZWlyIGFwcHJveGltYXRlIHBvc2l0aW9ucy4KKyAgICAgICAgICAgICAgICBm
b3JtYXR0aW5nU3RhdGUuYWRkT3V0T2ZGbG93Qm94KGxheW91dEJveCk7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGlzPExpbmVCcmVha0JveD4obGF5b3V0Qm94KSkgewogICAgICAgICAgICAgICAg
IGF1dG8mIGxpbmVCcmVha0JveCA9IGRvd25jYXN0PExpbmVCcmVha0JveD4obGF5b3V0Qm94KTsK
ICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkSW5saW5lSXRlbSh7IGxheW91dEJv
eCwgbGluZUJyZWFrQm94LmlzT3B0aW9uYWwoKSA/IElubGluZUl0ZW06OlR5cGU6OldvcmRCcmVh
a09wcG9ydHVuaXR5IDogSW5saW5lSXRlbTo6VHlwZTo6SGFyZExpbmVCcmVhayB9KTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkpCkBAIC00
NTUsNyArNTU4LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGlu
ZUNvbnRlbnRJZk5lZWRlZCgpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAKLSAgICAgICAgICAgIGlmIChhdXRvKiBuZXh0U2libGluZyA9
IGxheW91dEJveC5uZXh0SW5GbG93T3JGbG9hdGluZ1NpYmxpbmcoKSkgeworICAgICAgICAgICAg
aWYgKGF1dG8qIG5leHRTaWJsaW5nID0gbGF5b3V0Qm94Lm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgICAgICAgICBsYXlvdXRRdWV1ZS5hcHBlbmQobmV4dFNpYmxpbmcpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMzVjOWVmNjQ1Yzk4MzI0Mjg5YWNmN2UxMmU1MGI0MzQ3
Y2E3MjZjMC4uOTU1YjQ1OWRmZGIzMmRjNzVlMTIwZGJhY2NjMzFhOTQwMTI2MGZjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKICNpbmNsdWRl
ICJGb3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkZvcm1hdHRpbmdTdGF0ZS5oIgogI2lu
Y2x1ZGUgIklubGluZUZvcm1hdHRpbmdHZW9tZXRyeS5oIgogI2luY2x1ZGUgIklubGluZUZvcm1h
dHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgpAQCAtNjEsNiAr
NjIsNyBAQCBwcml2YXRlOgogICAgIEludHJpbnNpY1dpZHRoQ29uc3RyYWludHMgY29tcHV0ZWRJ
bnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxpbmVMYXlv
dXQoSW5saW5lSXRlbXMmLCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlLCBjb25zdCBDb25z
dHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKTsKKyAgICB2b2lkIGNvbXB1dGVTdGF0aWNQb3NpdGlv
bkZvck91dE9mRmxvd0NvbnRlbnQoY29uc3QgRm9ybWF0dGluZ1N0YXRlOjpPdXRPZkZsb3dCb3hM
aXN0Jik7CiAKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNXaWR0aEZvckZvcm1hdHRpbmdSb290
KGNvbnN0IEJveCYpOwogICAgIElubGluZUxheW91dFVuaXQgY29tcHV0ZWRJbnRyaW5zaWNXaWR0
aEZvckNvbnN0cmFpbnQoSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkgY29uc3Q7CkBA
IC02OSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlSGVpZ2h0QW5kTWFyZ2lu
KGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOwogICAgIHZvaWQgY29t
cHV0ZVdpZHRoQW5kTWFyZ2luKGNvbnN0IEJveCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50
cyYpOwogCi0gICAgdm9pZCBjb2xsZWN0SW5saW5lQ29udGVudElmTmVlZGVkKCk7CisgICAgdm9p
ZCBjb2xsZWN0Q29udGVudElmTmVlZGVkKCk7CiAgICAgSW5saW5lUmVjdCBjb21wdXRlR2VvbWV0
cnlGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmLCBjb25zdCBI
b3Jpem9udGFsQ29uc3RyYWludHMmKTsKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3Rh
dGUoY29uc3QgSW52YWxpZGF0aW9uU3RhdGUmKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1MjczYzIyZDJjODEzODM2
OGExYTFjOTEzZmEwODZkMGI1OGU1MzguLjcxOWE0NTQ3NDZhMmVlMTUxZjYwM2RiYjI1ZDhjZWRj
MDBmNjAxMWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOC0yMiAgQWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBBZGQgc3VwcG9ydCBmb3Ig
b3V0LW9mLWZsb3cgYm94IHN0YXRpYyBwb3NpdGlvbmluZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgKiBmYXN0L2lubGluZS9vdXQtb2YtZmxvdy13aXRo
LXN0YXRpYy1wb3NpdGlvbi1pbi1pZmMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9pbmxpbmUvb3V0LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLmh0bWw6
IEFkZGVkLgorCiAyMDIxLTA4LTIyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciB2ZXJ0aWNhbC1hbGlnbjogc3ViCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCA3YzIzMzMzZGZjOTNkYzFjYzhiZjY3ZWZmOTk5MWJkZjgwYWJj
YWQ4Li4yZWYyZWU1M2NjOGQ2NzMyYTY5NDBjMDI2MjJmMGE2ZmM3ZjMyYjgyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTUwMzEsNiArNTAzMSw3IEBAIHdlYmtpdC5vcmcvYi8yMjUyNDcgWyBEZWJ1
ZyBdIGZhc3QvbXVsdGljb2wvc3Bhbi9mbG9hdC1iZWNvbWVzLXNwYW5uZXItY3Jhc2guaHRtCiAK
IHdlYmtpdC5vcmcvYi8yMjYwMDIgZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC90YWJsZS1z
aW1wbGUtcm93LWhlaWdodC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMjI2MzY0IGZhc3Qv
bGF5b3V0Zm9ybWF0dGluZ2NvbnRleHQvdGFibGUtd2l0aC1wZXJjZW50LWNvbHVtbnMtYW5kLXNw
YWNpbmcuaHRtbCBbIFNraXAgXQorZmFzdC9sYXlvdXRmb3JtYXR0aW5nY29udGV4dC9hYnNvbHV0
ZS1wb3NpdGlvbmVkLWJveC13aXRoLWlubGluZS1zaWJsaW5nLmh0bWwgWyBTa2lwIF0KIFsgRGVi
dWcgXSBmYXN0L2xheW91dGZvcm1hdHRpbmdjb250ZXh0L3RhYmxlLWZpeGVkLXdpZHRoLXdpdGgt
bWF4LWRpc3RyaWJ1dGlvbi5odG1sIFsgU2tpcCBdCiBbIERlYnVnIF0gZmFzdC9sYXlvdXRmb3Jt
YXR0aW5nY29udGV4dC90YWJsZS1zcGFjZS1kaXN0cmlidXRpb24tc2ltcGxlLW1pc21hdGNoaW5n
Lmh0bWwgWyBTa2lwIF0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUvb3V0
LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLWV4cGVjdGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2lubGluZS9vdXQtb2YtZmxvdy13aXRoLXN0YXRpYy1wb3NpdGlvbi1pbi1p
ZmMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NjY5N2RjN2EyOWZlYjNmNjZlY2FiMDdjNDY3
Y2Y3MWQ1NGNmODRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9pbmxpbmUv
b3V0LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSw0NCBAQAorPHN0eWxlPgorYm9keSB7CisgIG1hcmdpbjogMHB4OworICBmb250LWZh
bWlseTogQWhlbTsKK30KKworZGl2IHsKKyAgbGluZS1oZWlnaHQ6IDQwcHg7IAorfQorCitpbWcg
eworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIHdpZHRoOiAxMHB4OworICBoZWlnaHQ6IDEwcHg7
CisgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwhLS0gb3V0LW9mLWZs
b3cgYm94ZXMgd2l0aCBzdGF0aWMgcG9zaXRpb25pbmcgaW4gSUZDIC0tPgorPGRpdj50ZXh0PC9k
aXY+Cis8ZGl2PnRleHQ8L2Rpdj4KKzxkaXY+dGV4dDwvZGl2PgorPGRpdj50ZXh0PC9kaXY+Cis8
ZGl2PjxzcGFuPjwvc3Bhbj50ZXh0PC9kaXY+Cis8ZGl2PjxzcGFuPjxzcGFuPjwvc3Bhbj48L3Nw
YW4+dGV4dDwvZGl2PgorPGRpdj48c3Bhbj50ZXh0PC9zcGFuPnRleHQ8L2Rpdj4KKzxkaXY+PHNw
YW4+dGV4dDwvc3Bhbj50ZXh0PC9kaXY+Cis8ZGl2Pjxicj48L2Rpdj4KKzxkaXY+PGJyPnRleHQ8
L2Rpdj4KKzxkaXY+PGJyPjxicj48L2Rpdj4KKzxkaXY+dGV4dDxicj48L2Rpdj4KKzxkaXY+dGV4
dDxicj48L2Rpdj4KKzxpbWcgc3R5bGU9ImxlZnQ6IDBweDsgdG9wOiAwcHg7Ij4KKzxpbWcgc3R5
bGU9ImxlZnQ6IDBweDsgdG9wOiA0MHB4OyI+Cis8aW1nIHN0eWxlPSJsZWZ0OiA2NHB4OyB0b3A6
IDgwcHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDBweDsgdG9wOiAxMjBweDsiPjxpbWcgc3R5bGU9
ImxlZnQ6IDY0cHg7IHRvcDogMTIwcHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDBweDsgdG9wOiAx
NjBweDsiPjxpbWcgc3R5bGU9ImxlZnQ6IDY0cHg7IHRvcDogMTYwcHg7Ij4KKzxpbWcgc3R5bGU9
ImxlZnQ6IDBweDsgdG9wOiAyMDBweDsiPjxpbWcgc3R5bGU9ImxlZnQ6IDY0cHg7IHRvcDogMjAw
cHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDY0cHg7IHRvcDogMjQwcHg7Ij48aW1nIHN0eWxlPSJs
ZWZ0OiAxMjhweDsgdG9wOiAyNDBweDsiPgorPGltZyBzdHlsZT0ibGVmdDogNjRweDsgdG9wOiAy
ODBweDsiPjxpbWcgc3R5bGU9ImxlZnQ6IDEyOHB4OyB0b3A6IDI4MHB4OyI+Cis8aW1nIHN0eWxl
PSJsZWZ0OiAwcHg7IHRvcDogMzYwcHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDY0cHg7IHRvcDog
NDAwcHg7Ij4KKzxpbWcgc3R5bGU9ImxlZnQ6IDBweDsgdG9wOiA1MjBweDsiPgorPGltZyBzdHls
ZT0ibGVmdDogMHB4OyB0b3A6IDU2MHB4OyI+Cis8aW1nIHN0eWxlPSJsZWZ0OiAwcHg7IHRvcDog
NjAwcHg7Ij4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL291dC1vZi1mbG93
LXdpdGgtc3RhdGljLXBvc2l0aW9uLWluLWlmYy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9pbmxp
bmUvb3V0LW9mLWZsb3ctd2l0aC1zdGF0aWMtcG9zaXRpb24taW4taWZjLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDNmZmI3MDVmNWMyZTQyN2E5YjZkMGY0ZjZkM2ZmMGY5OWVhZWUzYwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaW5saW5lL291dC1vZi1mbG93LXdpdGgtc3RhdGljLXBv
c2l0aW9uLWluLWlmYy5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxzdHlsZT4KK2JvZHkgeworICBt
YXJnaW46IDBweDsKKyAgZm9udC1mYW1pbHk6IEFoZW07Cit9CisKK2RpdiB7CisgIGxpbmUtaGVp
Z2h0OiA0MHB4OyAKK30KKworaW1nIHsKKyAgcG9zaXRpb246IGFic29sdXRlOworICB3aWR0aDog
MTBweDsKKyAgaGVpZ2h0OiAxMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKK30KKzwv
c3R5bGU+Cis8IS0tIG91dC1vZi1mbG93IGJveGVzIHdpdGggc3RhdGljIHBvc2l0aW9uaW5nIGlu
IElGQyAtLT4KKzxkaXY+PGltZz50ZXh0PC9kaXY+Cis8ZGl2PjxpbWc+PGltZz50ZXh0PC9kaXY+
Cis8ZGl2PnRleHQ8aW1nPjwvZGl2PgorPGRpdj48aW1nPnRleHQ8aW1nPjwvZGl2PgorPGRpdj48
c3Bhbj48aW1nPjwvc3Bhbj50ZXh0PGltZz48L2Rpdj4KKzxkaXY+PHNwYW4+PHNwYW4+PGltZz48
L3NwYW4+PC9zcGFuPnRleHQ8aW1nPjwvZGl2PgorPGRpdj48c3Bhbj50ZXh0PGltZz48L3NwYW4+
dGV4dDxpbWc+PC9kaXY+Cis8ZGl2PjxzcGFuPnRleHQ8L3NwYW4+PGltZz50ZXh0PGltZz48L2Rp
dj4KKzxkaXY+PGJyPjxpbWc+PC9kaXY+Cis8ZGl2Pjxicj50ZXh0PGltZz48L2Rpdj4KKzxkaXY+
PGJyPjxicj48aW1nPjwvZGl2PgorPGRpdj50ZXh0PGJyPjxpbWc+PC9kaXY+Cis8ZGl2PnRleHQ8
YnI+PGltZz48aW1nPjwvZGl2Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>