<?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>219310</bug_id>
          
          <creation_ts>2020-11-27 10:20:22 -0800</creation_ts>
          <short_desc>[LFC Display] Fix box locations for positioned elements</short_desc>
          <delta_ts>2020-11-27 18:33:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219322</see_also>
          <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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</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>1710332</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:20:22 -0800</bug_when>
    <thetext>[LFC Display] Fix box locations for positioned elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710333</commentid>
    <comment_count>1</comment_count>
      <attachid>414953</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 10:20:36 -0800</bug_when>
    <thetext>Created attachment 414953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710356</commentid>
    <comment_count>2</comment_count>
      <attachid>414960</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 11:28:29 -0800</bug_when>
    <thetext>Created attachment 414960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710383</commentid>
    <comment_count>3</comment_count>
      <attachid>414960</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-11-27 14:26:37 -0800</bug_when>
    <thetext>Comment on attachment 414960
Patch

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

&gt; Source/WebCore/layout/layouttree/LayoutBox.h:233
&gt; +    return isInitialContainingBlock() || isPositioned() || style().hasTransform();

I&apos;d change it to return isPositioned() || isContainingBlockForFixedPosition(); -which makes it quite clear that fixed positioning is a type of out-of-flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710389</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-27 18:32:26 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/270209/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1710390</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-27 18:33:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/71769575&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414953</attachid>
            <date>2020-11-27 10:20:36 -0800</date>
            <delta_ts>2020-11-27 11:28:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219310-20201127102035.patch</filename>
            <type>text/plain</type>
            <size>27072</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFjODM5YmUyNzZkZWJm
YjRiYjYwZDMyMDg5NWIxNTU3MGMwMDJhNS4uODFkYTczN2VjYjMwNTFlYTFmNTc3MjdlMzM4YTZk
ZjBkNTE4Y2RiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTExLTI1ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gRml4IGJveCBsb2NhdGlvbnMgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjb2RlIGFzc3VtZWQgdGhh
dCBsYXlvdXQgYm94ZXMgd2VyZSBhbHdheXMgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGVpciBw
YXJlbnRzLAorICAgICAgICBidXQgYm9yZGVyIGJveCBnZW9tZXRyeSBpcyBhY3R1YWxseSByZWxh
dGl2ZSB0byBjb250YWluaW5nIGJsb2NrLiBUbyBrZWVwIHRyYWNrCisgICAgICAgIG9mIHRoaXMg
d2hlbiBidWlsZGluZyB0aGUgZGlzcGxheSB0cmVlLCBhZGQgUG9zaXRpb25pbmdDb250ZXh0IHdo
aWNoIHRyYWNrcworICAgICAgICBjb250YWluaW5nIGJsb2NrcyBmb3IgdGhyZWUgdHlwZXMgb2Yg
cG9zaXRpb25pbmcgKGZpeGVkLCBhYnNvbHV0ZSBhbmQgaW4tZmxvdyksCisgICAgICAgIGFuZCBy
b290LXJlbGF0aXZlIG9mZnNldHMgZm9yIGVhY2guCisKKyAgICAgICAgVGhlIGNvZGUgdGhlbiBw
YXNzZXMgdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5pbmcgYmxvY2sgYm94ICsgb2Zmc2V0IGludG8g
dGhlIERpc3BsYXk6OkJveEZhY3RvcnkKKyAgICAgICAgY29kZSwgd2hpY2ggdXNlcyB0aGUgb2Zm
c2V0IHRvIGNvbXB1dGUgYWJzb2x1dGUgYm94IHJlY3RzLgorCisgICAgICAgICogZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRp
b25pbmdDb250ZXh0OjpQb3NpdGlvbmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6UG9zaXRpb25pbmdDb250ZXh0OjptX2Fic29sdXRlUG9zaXRpb25Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRpb25pbmdDb250ZXh0OjptX2luRmxvd0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpQb3NpdGlvbmluZ0NvbnRleHQ6
OmNvbnRleHRGb3JEZXNjZW5kYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpQb3NpdGlvbmluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9ja0NvbnRleHRGb3JMYXlvdXRCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRpb25pbmdDb250ZXh0Ojpp
bkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OlRyZWVCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpU
cmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJlZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZSBjb25z
dCk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yUm9vdEJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yQm9keUJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRp
c3BsYXlCb3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eEZhY3Rvcnk6OnNldHVwQm94R2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94RmFjdG9yeTo6Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveCBjb25z
dCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaDoKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNDb250
YWluaW5nQmxvY2tGb3JJbkZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OmlzQ29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZsb3dQb3NpdGlv
biBjb25zdCk6CisKIDIwMjAtMTEtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQyBEaXNwbGF5XSBBIENvbnRhaW5lckJveCBjYW4gZXN0YWJs
aXNoIGFuIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQgYW5kIGhhdmUgYm94IGNoaWxkcmVuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHAKaW5kZXggNmY0
NTVmNTIyNzNiZmU4YjlkMmQ1YjM4NzViMDE3NDNlOTljY2NjYy4uMzRmNDY3ZTYwYjZiYTg2MzRk
NjM2YjlkNDBkYTcxNzdiODMwOGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlz
cGxheVRyZWVCdWlsZGVyLmNwcApAQCAtNDYsNiArNDYsNTcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAorY2xhc3MgUG9zaXRpb25pbmdDb250ZXh0IHsKK3B1
YmxpYzoKKyAgICBQb3NpdGlvbmluZ0NvbnRleHQoY29uc3QgRGlzcGxheTo6Q29udGFpbmVyQm94
JiByb290RGlzcGxheUJveCkKKyAgICAgICAgOiBtX2ZpeGVkUG9zaXRpb25Db250YWluZXIoeyBy
b290RGlzcGxheUJveCB9KQorICAgICAgICAsIG1fYWJzb2x1dGVQb3NpdGlvbkNvbnRhaW5lcih7
IHJvb3REaXNwbGF5Qm94IH0pCisgICAgICAgICwgbV9pbkZsb3dDb250YWluZXIgKHsgcm9vdERp
c3BsYXlCb3ggfSkKKyAgICB7CisgICAgfQorCisgICAgUG9zaXRpb25pbmdDb250ZXh0IGNvbnRl
eHRGb3JEZXNjZW5kYW50cyhjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5IGdlb21ldHJ5LCBjb25zdCBEaXNwbGF5OjpDb250YWluZXJCb3gmIGRp
c3BsYXlCb3gpIGNvbnN0CisgICAgeworICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjb250
YWluaW5nQmxvY2tDb250ZXh0Rm9yTGF5b3V0Qm94KGxheW91dEJveCkub2Zmc2V0RnJvbVJvb3Q7
CisKKyAgICAgICAgYXV0byBib3JkZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94
R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoZ2VvbWV0cnkpIH07CisgICAgICAgIGN1cnJlbnRPZmZz
ZXQgKz0gdG9MYXlvdXRTaXplKGJvcmRlckJveFJlY3QubG9jYXRpb24oKSk7CisKKyAgICAgICAg
YXV0byBjdXJyZW50Qm94ZXMgPSBDb250YWluaW5nQmxvY2tDb250ZXh0IHsgZGlzcGxheUJveCwg
Y3VycmVudE9mZnNldCB9OworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgbGF5b3V0Qm94
LmlzQ29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbigpID8gY3VycmVudEJveGVzIDogbV9m
aXhlZFBvc2l0aW9uQ29udGFpbmVyLAorICAgICAgICAgICAgbGF5b3V0Qm94LmlzQ29udGFpbmlu
Z0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRpb24oKSA/IGN1cnJlbnRCb3hlcyA6IG1fYWJzb2x1dGVQ
b3NpdGlvbkNvbnRhaW5lciwKKyAgICAgICAgICAgIGxheW91dEJveC5pc0NvbnRhaW5pbmdCbG9j
a0ZvckluRmxvdygpID8gY3VycmVudEJveGVzIDogbV9pbkZsb3dDb250YWluZXIKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5n
QmxvY2tDb250ZXh0Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNv
bnN0CisgICAgeworICAgICAgICBpZiAobGF5b3V0Qm94LmlzRml4ZWRQb3NpdGlvbmVkKCkpCisg
ICAgICAgICAgICByZXR1cm4gbV9maXhlZFBvc2l0aW9uQ29udGFpbmVyOworCisgICAgICAgIGlm
IChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4g
bV9hYnNvbHV0ZVBvc2l0aW9uQ29udGFpbmVyOworCisgICAgICAgIHJldHVybiBtX2luRmxvd0Nv
bnRhaW5lcjsKKyAgICB9CisgICAgCisgICAgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYg
aW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5GbG93Q29u
dGFpbmVyOyB9CisKK3ByaXZhdGU6CisgICAgUG9zaXRpb25pbmdDb250ZXh0KGNvbnN0IENvbnRh
aW5pbmdCbG9ja0NvbnRleHQmIGZpeGVkQ29udGFpbmVyLCBjb25zdCBDb250YWluaW5nQmxvY2tD
b250ZXh0JiBhYnNvbHV0ZUNvbnRhaW5lciwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYg
aW5GbG93Q29udGFpbmVyKQorICAgICAgICA6IG1fZml4ZWRQb3NpdGlvbkNvbnRhaW5lcihmaXhl
ZENvbnRhaW5lcikKKyAgICAgICAgLCBtX2Fic29sdXRlUG9zaXRpb25Db250YWluZXIoYWJzb2x1
dGVDb250YWluZXIpCisgICAgICAgICwgbV9pbkZsb3dDb250YWluZXIoaW5GbG93Q29udGFpbmVy
KQorICAgIHsKKyAgICB9CisKKyAgICBDb250YWluaW5nQmxvY2tDb250ZXh0IG1fZml4ZWRQb3Np
dGlvbkNvbnRhaW5lcjsKKyAgICBDb250YWluaW5nQmxvY2tDb250ZXh0IG1fYWJzb2x1dGVQb3Np
dGlvbkNvbnRhaW5lcjsKKyAgICBDb250YWluaW5nQmxvY2tDb250ZXh0IG1faW5GbG93Q29udGFp
bmVyOworfTsKKworCiBUcmVlQnVpbGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGlu
Z0ZhY3RvcikKICAgICA6IG1fYm94RmFjdG9yeShwaXhlbFNuYXBwaW5nRmFjdG9yKQogewpAQCAt
NzAsMTEgKzEyMSw5IEBAIHN0ZDo6dW5pcXVlX3B0cjxUcmVlPiBUcmVlQnVpbGRlcjo6YnVpbGQo
Y29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUpCiAgICAgaWYgKCFyb290TGF5
b3V0Qm94LmZpcnN0Q2hpbGQoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJlZT4oV1RG
TW92ZShyb290RGlzcGxheUNvbnRhaW5lckJveCkpOwogCi0gICAgYXV0byBib3JkZXJCb3hSZWN0
ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoZ2VvbWV0
cnkpIH07Ci0gICAgYXV0byBvZmZzZXQgPSB0b0xheW91dFNpemUoYm9yZGVyQm94UmVjdC5sb2Nh
dGlvbigpKTsKICAgICBhdXRvIGluc2VydGlvblBvc2l0aW9uID0gSW5zZXJ0aW9uUG9zaXRpb24g
eyAqcm9vdERpc3BsYXlDb250YWluZXJCb3ggfTsKIAotICAgIHJlY3Vyc2l2ZUJ1aWxkRGlzcGxh
eVRyZWUobGF5b3V0U3RhdGUsIG9mZnNldCwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBp
bnNlcnRpb25Qb3NpdGlvbik7CisgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRT
dGF0ZSwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCB7ICpyb290RGlzcGxheUNvbnRhaW5l
ckJveCB9LCBpbnNlcnRpb25Qb3NpdGlvbik7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CiAgICAgTE9HX1dJVEhfU1RSRUFNKEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwg
IkRpc3BsYXkgdHJlZTpcbiIgPDwgZGlzcGxheVRyZWVBc1RleHQoKnJvb3REaXNwbGF5Q29udGFp
bmVyQm94KSk7CkBAIC05NSwzOCArMTQ0LDM5IEBAIHZvaWQgVHJlZUJ1aWxkZXI6Omluc2VydChz
dGQ6OnVuaXF1ZV9wdHI8Qm94PiYmIGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGluc2VydGlvCiAg
ICAgfQogfQogCi12b2lkIFRyZWVCdWlsZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0
IExheW91dDo6TGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBMYXlvdXRTaXplIG9mZnNldEZyb21S
b290LCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIElu
c2VydGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKK3ZvaWQgVHJlZUJ1aWxk
ZXI6OmJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9v
dCwgY29uc3QgUG9zaXRpb25pbmdDb250ZXh0JiBwb3NpdGlvbmluZ0NvbnRleHQsIEluc2VydGlv
blBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvJiBpbmxpbmVG
b3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdT
dGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CiAKICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpKSB7CiAgICAgICAgIGlmIChydW4udGV4dCgpKSB7
CiAgICAgICAgICAgICBhdXRvJiBsaW5lR2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUu
bGluZXMoKS5hdChydW4ubGluZUluZGV4KCkpOwotICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0g
bV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JUZXh0UnVuKHJ1biwgbGluZUdlb21ldHJ5LCBvZmZz
ZXRGcm9tUm9vdCk7CisgICAgICAgICAgICBhdXRvIHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlz
cGxheUJveEZvclRleHRSdW4ocnVuLCBsaW5lR2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dC5p
bkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0KCkpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1v
dmUodGV4dEJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94PihydW4ubGF5
b3V0Qm94KCkpKSB7Ci0gICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91
dFN0YXRlLCBvZmZzZXRGcm9tUm9vdCwgcnVuLmxheW91dEJveCgpLCBpbnNlcnRpb25Qb3NpdGlv
bik7CisgICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBy
dW4ubGF5b3V0Qm94KCksIHBvc2l0aW9uaW5nQ29udGV4dCwgaW5zZXJ0aW9uUG9zaXRpb24pOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGdlb21ldHJ5
ID0gbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3gocnVuLmxheW91dEJveCgpKTsKLSAgICAgICAg
YXV0byBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocnVu
LmxheW91dEJveCgpLCBnZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICBhdXRvIGRp
c3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvckxheW91dEJveChydW4ubGF5b3V0
Qm94KCksIGdlb21ldHJ5LCBwb3NpdGlvbmluZ0NvbnRleHQuaW5GbG93Q29udGFpbmluZ0Jsb2Nr
Q29udGV4dCgpKTsKICAgICAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGluc2VydGlv
blBvc2l0aW9uKTsKICAgICB9CiB9CiAKLXZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxk
RGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIExheW91
dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIEluc2Vy
dGlvblBvc2l0aW9uJiBpbnNlcnRpb25Qb3NpdGlvbikgY29uc3QKK3ZvaWQgVHJlZUJ1aWxkZXI6
OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5
b3V0U3RhdGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IFBvc2l0aW9uaW5n
Q29udGV4dCYgcG9zaXRpb25pbmdDb250ZXh0LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW9u
UG9zaXRpb24pIGNvbnN0CiB7CiAgICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21l
dHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJv
eDsKLSAgICAKKworICAgIGF1dG8mIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQgPSBwb3NpdGlvbmlu
Z0NvbnRleHQuY29udGFpbmluZ0Jsb2NrQ29udGV4dEZvckxheW91dEJveChsYXlvdXRCb3gpOwog
ICAgIGlmIChsYXlvdXRCb3guaXNCb2R5Qm94KCkpCi0gICAgICAgIGRpc3BsYXlCb3ggPSBtX2Jv
eEZhY3RvcnkuZGlzcGxheUJveEZvckJvZHlCb3gobGF5b3V0Qm94LCBnZW9tZXRyeSwgbV9yb290
QmFja2dyb3VuZFByb3BnYXRpb24sIG9mZnNldEZyb21Sb290KTsKKyAgICAgICAgZGlzcGxheUJv
eCA9IG1fYm94RmFjdG9yeS5kaXNwbGF5Qm94Rm9yQm9keUJveChsYXlvdXRCb3gsIGdlb21ldHJ5
LCBjb250YWluaW5nQmxvY2tDb250ZXh0LCBtX3Jvb3RCYWNrZ3JvdW5kUHJvcGdhdGlvbik7CiAg
ICAgZWxzZQotICAgICAgICBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JM
YXlvdXRCb3gobGF5b3V0Qm94LCBnZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICBk
aXNwbGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94
LCBnZW9tZXRyeSwgY29udGFpbmluZ0Jsb2NrQ29udGV4dCk7CiAgICAgCiAgICAgaW5zZXJ0KFdU
Rk1vdmUoZGlzcGxheUJveCksIGluc2VydGlvblBvc2l0aW9uKTsKIApAQCAtMTM3LDE2ICsxODcs
MTYgQEAgdm9pZCBUcmVlQnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBM
YXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGEKICAgICBpZiAoIWxheW91dENvbnRhaW5lckJv
eC5oYXNDaGlsZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGJvcmRlckJveFJlY3Qg
PSBMYXlvdXRSZWN0IHsgTGF5b3V0OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChnZW9tZXRy
eSkgfTsKLSAgICBvZmZzZXRGcm9tUm9vdCArPSB0b0xheW91dFNpemUoYm9yZGVyQm94UmVjdC5s
b2NhdGlvbigpKTsKKyAgICBDb250YWluZXJCb3gmIGN1cnJlbnRCb3ggPSBkb3duY2FzdDxDb250
YWluZXJCb3g+KCppbnNlcnRpb25Qb3NpdGlvbi5jdXJyZW50Q2hpbGQpOworICAgIGF1dG8gaW5z
ZXJ0aW9uUG9zaXRpb25Gb3JDaGlsZHJlbiA9IEluc2VydGlvblBvc2l0aW9uIHsgY3VycmVudEJv
eCB9OwogCi0gICAgYXV0byBwb3NpdGlvbkZvckNoaWxkcmVuID0gSW5zZXJ0aW9uUG9zaXRpb24g
eyBkb3duY2FzdDxDb250YWluZXJCb3g+KCppbnNlcnRpb25Qb3NpdGlvbi5jdXJyZW50Q2hpbGQp
IH07CisgICAgYXV0byBwb3NpdGlvbmluZ0NvbnRleHRGb3JEZXNjZW5kYW50cyA9IHBvc2l0aW9u
aW5nQ29udGV4dC5jb250ZXh0Rm9yRGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBnZW9t
ZXRyeSwgY3VycmVudEJveCk7CiAKICAgICBlbnVtIGNsYXNzIERlc2NlbmRhbnRCb3hJbmNsdXNp
b24geyBBbGxCb3hlcywgT3V0T2ZGbG93T25seSB9OwogICAgIGF1dG8gYm94SW5jbHVzaW9uID0g
RGVzY2VuZGFudEJveEluY2x1c2lvbjo6QWxsQm94ZXM7CiAKICAgICBpZiAobGF5b3V0Q29udGFp
bmVyQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBi
dWlsZElubGluZURpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBvZmZzZXRGcm9tUm9vdCwgZG93bmNh
c3Q8TGF5b3V0OjpDb250YWluZXJCb3g+KGxheW91dENvbnRhaW5lckJveCksIHBvc2l0aW9uRm9y
Q2hpbGRyZW4pOworICAgICAgICBidWlsZElubGluZURpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBk
b3duY2FzdDxMYXlvdXQ6OkNvbnRhaW5lckJveD4obGF5b3V0Q29udGFpbmVyQm94KSwgcG9zaXRp
b25pbmdDb250ZXh0Rm9yRGVzY2VuZGFudHMsIGluc2VydGlvblBvc2l0aW9uRm9yQ2hpbGRyZW4p
OwogICAgICAgICBib3hJbmNsdXNpb24gPSBEZXNjZW5kYW50Qm94SW5jbHVzaW9uOjpPdXRPZkZs
b3dPbmx5OwogICAgIH0KIApAQCAtMTYwLDcgKzIxMCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OnJl
Y3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0
U3RhCiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDogTGF5b3V0OjpjaGlsZHJlbk9mVHlwZTxMYXlv
dXQ6OkJveD4obGF5b3V0Q29udGFpbmVyQm94KSkgewogICAgICAgICBpZiAoaW5jbHVkZUJveChi
b3hJbmNsdXNpb24sIGNoaWxkKSAmJiBsYXlvdXRTdGF0ZS5oYXNCb3hHZW9tZXRyeShjaGlsZCkp
Ci0gICAgICAgICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBvZmZz
ZXRGcm9tUm9vdCwgY2hpbGQsIHBvc2l0aW9uRm9yQ2hpbGRyZW4pOworICAgICAgICAgICAgcmVj
dXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgY2hpbGQsIHBvc2l0aW9uaW5nQ29u
dGV4dEZvckRlc2NlbmRhbnRzLCBpbnNlcnRpb25Qb3NpdGlvbkZvckNoaWxkcmVuKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWls
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCmluZGV4
IDMwMjdlNzU4N2MxMzc2NzlhYTc4OTRiZjQxNGE5OTk2ZTU2NTllZmQuLmMzMmY1M2E4YTdlZTNi
MmEwNTk5NjgxMWRhM2U0YTk0MDRhNDk3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rp
c3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuaApAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgRGlzcGxheSB7
CiAKIGNsYXNzIEJveDsKIGNsYXNzIENvbnRhaW5lckJveDsKK2NsYXNzIFBvc2l0aW9uaW5nQ29u
dGV4dDsKIGNsYXNzIFRyZWU7CiAKIGNsYXNzIFRyZWVCdWlsZGVyIHsKQEAgLTU5LDE0ICs2MCwx
NCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEluc2VydGlvblBvc2l0aW9uIHsK
LSAgICAgICAgRGlzcGxheTo6Q29udGFpbmVyQm94JiBjb250YWluZXI7Ci0gICAgICAgIERpc3Bs
YXk6OkJveCogY3VycmVudENoaWxkIHsgbnVsbHB0ciB9OworICAgICAgICBDb250YWluZXJCb3gm
IGNvbnRhaW5lcjsKKyAgICAgICAgQm94KiBjdXJyZW50Q2hpbGQgeyBudWxscHRyIH07CiAgICAg
fTsKIAotICAgIHZvaWQgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6Okxh
eW91dFN0YXRlJiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0OjpCb3gm
LCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OworICAgIHZvaWQgcmVjdXJzaXZlQnVpbGREaXNw
bGF5VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiwgY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBQb3NpdGlvbmluZ0NvbnRleHQmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OworCisg
ICAgdm9pZCBidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUm
LCBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCYsIGNvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYs
IEluc2VydGlvblBvc2l0aW9uJikgY29uc3Q7CiAKLSAgICB2b2lkIGJ1aWxkSW5saW5lRGlzcGxh
eVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYsIExheW91dFNpemUgb2Zmc2V0RnJvbVJv
b3QsIGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiwgSW5zZXJ0aW9uUG9zaXRpb24mKSBjb25z
dDsKLSAgICAKICAgICB2b2lkIGluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmLCBJbnNlcnRp
b25Qb3NpdGlvbiYpIGNvbnN0OwogCiAgICAgQm94RmFjdG9yeSBtX2JveEZhY3Rvcnk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKaW5kZXgg
OTI3MWYwY2FmMmE0NDE1NmU1NTNmMmQ4OGY4YWY3ZGU2NTAxOWFkZS4uM2ZkOWExNmE4NGQwODFi
MzJmZjgzMjg3OGY1ZTZmNjUwZDQyYWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJM
RShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCiAjaW5jbHVkZSAiRGlzcGxheUJveERlY29y
YXRpb25EYXRhLmgiCisjaW5jbHVkZSAiRGlzcGxheUJveERlY29yYXRpb25QYWludGVyLmgiCiAj
aW5jbHVkZSAiRGlzcGxheUNvbnRhaW5lckJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlGaWxsTGF5
ZXJJbWFnZUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiRGlzcGxheUltYWdlQm94LmgiCkBAIC04MSwx
MSArODIsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZv
clJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gKICAgICBhdXRvIHN0eWxlID0gU3R5
bGUgeyByb290TGF5b3V0Qm94LnN0eWxlKCksIHN0eWxlRm9yQmFja2dyb3VuZCB9OwogCiAgICAg
YXV0byByb290Qm94ID0gbWFrZVVuaXF1ZTxDb250YWluZXJCb3g+KHNuYXBSZWN0VG9EZXZpY2VQ
aXhlbHMoYm9yZGVyQm94UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHls
ZSkpOwotICAgIHNldHVwQm94TW9kZWxCb3goKnJvb3RCb3gsIHJvb3RMYXlvdXRCb3gsIHN0eWxl
Rm9yQmFja2dyb3VuZCwgZ2VvbWV0cnksIHsgfSk7CisgICAgLy8gV2UgcGFzcyByb290Qm94IGFz
IGl0cyBvd24gY29udGFpbmluZ0Jsb2NrQm94IGhlcmUgdG8gYWxsb3cgaXQgdG8gYmUgYSByZWZl
cmVuY2UgZXZlcnl3aGVyZSBlbHNlLgorICAgIHNldHVwQm94TW9kZWxCb3goKnJvb3RCb3gsIHJv
b3RMYXlvdXRCb3gsIGdlb21ldHJ5LCB7ICpyb290Qm94LCB7IDAsIDAgfSB9LCBzdHlsZUZvckJh
Y2tncm91bmQpOwogICAgIHJldHVybiByb290Qm94OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Qm94
PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yQm9keUJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5
b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgUm9vdEJhY2tncm91
bmRQcm9wYWdhdGlvbiByb290QmFja2dyb3VuZFByb3BhZ2F0aW9uLCBMYXlvdXRTaXplIG9mZnNl
dEZyb21Sb290KSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxh
eUJveEZvckJvZHlCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0
OjpCb3hHZW9tZXRyeSYgZ2VvbWV0cnksIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGNv
bnRhaW5pbmdCbG9ja0NvbnRleHQsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gcm9vdEJhY2tn
cm91bmRQcm9wYWdhdGlvbikgY29uc3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVG
b3JCYWNrZ3JvdW5kID0gJmxheW91dEJveC5zdHlsZSgpOwogICAgIApAQCAtOTMsMjAgKzk1LDIw
IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JCb2R5Qm94
KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCCiAgICAgICAgIHN0eWxlRm9yQmFja2dyb3VuZCA9
IG51bGxwdHI7CiAgICAgCiAgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgbGF5b3V0Qm94LnN0eWxl
KCksIHN0eWxlRm9yQmFja2dyb3VuZCB9OwotICAgIHJldHVybiBkaXNwbGF5Qm94Rm9yTGF5b3V0
Qm94KGxheW91dEJveCwgc3R5bGVGb3JCYWNrZ3JvdW5kLCBnZW9tZXRyeSwgb2Zmc2V0RnJvbVJv
b3QsIFdURk1vdmUoc3R5bGUpKTsKKyAgICByZXR1cm4gZGlzcGxheUJveEZvckxheW91dEJveChs
YXlvdXRCb3gsIGdlb21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250ZXh0LCBzdHlsZUZvckJhY2tn
cm91bmQsIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFj
dG9yeTo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94
LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tUm9vdCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlC
b3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0
OjpCb3hHZW9tZXRyeSYgZ2VvbWV0cnksIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGNv
bnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CiB7CiAgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsg
bGF5b3V0Qm94LnN0eWxlKCkgfTsKLSAgICByZXR1cm4gZGlzcGxheUJveEZvckxheW91dEJveChs
YXlvdXRCb3gsICZsYXlvdXRCb3guc3R5bGUoKSwgZ2VvbWV0cnksIG9mZnNldEZyb21Sb290LCBX
VEZNb3ZlKHN0eWxlKSk7CisgICAgcmV0dXJuIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0
Qm94LCBnZW9tZXRyeSwgY29udGFpbmluZ0Jsb2NrQ29udGV4dCwgJmxheW91dEJveC5zdHlsZSgp
LCBXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6
OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQmFja2dyb3VuZCwgY29uc3QgTGF5b3V0OjpCb3hHZW9t
ZXRyeSYgZ2VvbWV0cnksIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIFN0eWxlJiYgc3R5bGUp
IGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91dDo6Qm94R2Vv
bWV0cnkmIGdlb21ldHJ5LCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5n
QmxvY2tDb250ZXh0LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBTdHls
ZSYmIHN0eWxlKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcCBsb2dpY2FsIHRv
IHBoeXNpY2FsIHJlY3RzLgogICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91dFJlY3QgeyBM
YXlvdXQ6OkJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGdlb21ldHJ5KSB9OwotICAgIGJvcmRl
ckJveFJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKGNv
bnRhaW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogICAgIGF1dG8gcGl4ZWxTbmFw
cGVkQm9yZGVyQm94UmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwg
bV9waXhlbFNuYXBwaW5nRmFjdG9yKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgaXNBbm9ueW1v
dXMoKQpAQCAtMTE4LDIxICsxMjAsMjEgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9y
eTo6ZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3UKICAgICAg
ICAgICAgIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlKCk7CiAKICAgICAgICAgYXV0byBpbWFn
ZUJveCA9IG1ha2VVbmlxdWU8SW1hZ2VCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QsIFdU
Rk1vdmUoc3R5bGUpLCBXVEZNb3ZlKGltYWdlKSk7Ci0gICAgICAgIHNldHVwQm94TW9kZWxCb3go
KmltYWdlQm94LCBsYXlvdXRCb3gsIHN0eWxlRm9yQmFja2dyb3VuZCwgZ2VvbWV0cnksIG9mZnNl
dEZyb21Sb290KTsKKyAgICAgICAgc2V0dXBCb3hNb2RlbEJveCgqaW1hZ2VCb3gsIGxheW91dEJv
eCwgZ2VvbWV0cnksIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQsIHN0eWxlRm9yQmFja2dyb3VuZCk7
CiAgICAgICAgIHJldHVybiBpbWFnZUJveDsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzPExheW91
dDo6Q29udGFpbmVyQm94PihsYXlvdXRCb3gpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZGVj
aXNpb24gdG8gbWFrZSBhIENvbnRhaW5lckJveCBzaG91bGQgYmUgbWFkZSBiYXNlZCBvbiB3aGV0
aGVyIHRoaXMgRGlzcGxheTo6Qm94IHdpbGwgaGF2ZSBjaGlsZHJlbi4KICAgICAgICAgYXV0byBj
b250YWluZXJCb3ggPSBtYWtlVW5pcXVlPENvbnRhaW5lckJveD4ocGl4ZWxTbmFwcGVkQm9yZGVy
Qm94UmVjdCwgV1RGTW92ZShzdHlsZSkpOwotICAgICAgICBzZXR1cEJveE1vZGVsQm94KCpjb250
YWluZXJCb3gsIGxheW91dEJveCwgc3R5bGVGb3JCYWNrZ3JvdW5kLCBnZW9tZXRyeSwgb2Zmc2V0
RnJvbVJvb3QpOworICAgICAgICBzZXR1cEJveE1vZGVsQm94KCpjb250YWluZXJCb3gsIGxheW91
dEJveCwgZ2VvbWV0cnksIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQsIHN0eWxlRm9yQmFja2dyb3Vu
ZCk7CiAgICAgICAgIHJldHVybiBjb250YWluZXJCb3g7CiAgICAgfQogCiAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4
ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRy
PEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgTGF5b3V0OjpMaW5l
UnVuJiBydW4sIGNvbnN0IExheW91dDo6SW5saW5lTGluZUdlb21ldHJ5JiBsaW5lR2VvbWV0cnks
IExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBC
b3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OkxpbmVSdW4mIHJ1
biwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lR2VvbWV0cnkmIGxpbmVHZW9tZXRyeSwgY29uc3Qg
Q29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Jsb2NrQ29udGV4dCkgY29uc3QKIHsK
ICAgICBBU1NFUlQocnVuLnRleHQoKSk7CiAgICAgYXV0byBsaW5lUmVjdCA9IGxpbmVHZW9tZXRy
eS5saW5lQm94TG9naWNhbFJlY3QoKTsKQEAgLTE0MCwxNiArMTQyLDE2IEBAIHN0ZDo6dW5pcXVl
X3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JUZXh0UnVuKGNvbnN0IExheW91dDo6
TGluZVJ1biYgcnVuCiAKICAgICBhdXRvIHJ1blJlY3QgPSBMYXlvdXRSZWN0IHsgcnVuLmxvZ2lj
YWxMZWZ0KCksIHJ1bi5sb2dpY2FsVG9wKCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgcnVuLmxvZ2lj
YWxIZWlnaHQoKSB9OwogICAgIHJ1blJlY3QubW92ZUJ5KGxpbmVMYXlvdXRSZWN0LmxvY2F0aW9u
KCkpOwotICAgIHJ1blJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CisgICAgcnVuUmVjdC5tb3Zl
KGNvbnRhaW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgYXV0byBzdHls
ZSA9IFN0eWxlIHsgcnVuLmxheW91dEJveCgpLnN0eWxlKCkgfTsKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxUZXh0Qm94PihzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJ1blJlY3QsIG1fcGl4ZWxTbmFw
cGluZ0ZhY3RvciksIFdURk1vdmUoc3R5bGUpLCBydW4pOwogfQogCi12b2lkIEJveEZhY3Rvcnk6
OnNldHVwQm94R2VvbWV0cnkoQm94TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZz
ZXRGcm9tUm9vdCkgY29uc3QKK3ZvaWQgQm94RmFjdG9yeTo6c2V0dXBCb3hHZW9tZXRyeShCb3hN
b2RlbEJveCYgYm94LCBjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0
cnkmIGxheW91dEdlb21ldHJ5LCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWlu
aW5nQmxvY2tDb250ZXh0KSBjb25zdAogewogICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91
dFJlY3QgeyBMYXlvdXQ6OkJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGxheW91dEdlb21ldHJ5
KSB9OwotICAgIGJvcmRlckJveFJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CisgICAgYm9yZGVy
Qm94UmVjdC5tb3ZlKGNvbnRhaW5pbmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogCiAg
ICAgYXV0byBwYWRkaW5nQm94UmVjdCA9IExheW91dFJlY3QgeyBsYXlvdXRHZW9tZXRyeS5wYWRk
aW5nQm94KCkgfTsKICAgICBwYWRkaW5nQm94UmVjdC5tb3ZlQnkoYm9yZGVyQm94UmVjdC5sb2Nh
dGlvbigpKTsKQEAgLTE2OSw3ICsxNzEsNyBAQCB2b2lkIEJveEZhY3Rvcnk6OnNldHVwQm94R2Vv
bWV0cnkoQm94TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYQogICAg
IH0KIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJveERlY29yYXRpb25EYXRhPiBCb3hGYWN0b3J5Ojpj
b25zdHJ1Y3RCb3hEZWNvcmF0aW9uRGF0YShjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdl
b21ldHJ5JiBsYXlvdXRHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QK
K3N0ZDo6dW5pcXVlX3B0cjxCb3hEZWNvcmF0aW9uRGF0YT4gQm94RmFjdG9yeTo6Y29uc3RydWN0
Qm94RGVjb3JhdGlvbkRhdGEoY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYgbGF5b3V0R2VvbWV0cnksIGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZUZvckJhY2tncm91bmQsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0CiB7CiAgICAg
YXV0byBib3hEZWNvcmF0aW9uRGF0YSA9IG1ha2VVbmlxdWU8Qm94RGVjb3JhdGlvbkRhdGE+KCk7
CiAKQEAgLTE5NywxNSArMTk5LDE1IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3hEZWNvcmF0aW9uRGF0
YT4gQm94RmFjdG9yeTo6Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEoY29uc3QKICAgICByZXR1
cm4gYm94RGVjb3JhdGlvbkRhdGE7CiB9CiAKLXZvaWQgQm94RmFjdG9yeTo6c2V0dXBCb3hNb2Rl
bEJveChCb3hNb2RlbEJveCYgYm94LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25z
dCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdlb21l
dHJ5JiBsYXlvdXRHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3Zv
aWQgQm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveChCb3hNb2RlbEJveCYgYm94LCBjb25zdCBM
YXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRH
ZW9tZXRyeSwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Jsb2NrQ29u
dGV4dCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQmFja2dyb3VuZCkgY29uc3QKIHsKLSAg
ICBzZXR1cEJveEdlb21ldHJ5KGJveCwgbGF5b3V0Qm94LCBsYXlvdXRHZW9tZXRyeSwgb2Zmc2V0
RnJvbVJvb3QpOworICAgIHNldHVwQm94R2VvbWV0cnkoYm94LCBsYXlvdXRCb3gsIGxheW91dEdl
b21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250ZXh0KTsKIAogICAgIGF1dG8mIHJlbmRlclN0eWxl
ID0gbGF5b3V0Qm94LnN0eWxlKCk7CiAgICAgaWYgKCEoc3R5bGVGb3JCYWNrZ3JvdW5kICYmIHN0
eWxlRm9yQmFja2dyb3VuZC0+aGFzQmFja2dyb3VuZCgpKSAmJiAhcmVuZGVyU3R5bGUuaGFzQm9y
ZGVyKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gYm94RGVjb3JhdGlvbkRhdGEgPSBj
b25zdHJ1Y3RCb3hEZWNvcmF0aW9uRGF0YShsYXlvdXRCb3gsIHN0eWxlRm9yQmFja2dyb3VuZCwg
bGF5b3V0R2VvbWV0cnksIG9mZnNldEZyb21Sb290KTsKKyAgICBhdXRvIGJveERlY29yYXRpb25E
YXRhID0gY29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEobGF5b3V0Qm94LCBsYXlvdXRHZW9tZXRy
eSwgc3R5bGVGb3JCYWNrZ3JvdW5kLCBjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21S
b290KTsKICAgICBib3guc2V0Qm94RGVjb3JhdGlvbkRhdGEoV1RGTW92ZShib3hEZWNvcmF0aW9u
RGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNw
bGF5Qm94RmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZh
Y3RvcnkuaAppbmRleCBiZGQ5ZTU2Njk0OTQzOWVlYjQ0OGJlMWY1ZTVmNmEyNzIwMDJiODgwLi41
NWY1YTZkNTMxZTFhNjAxZGRiYWI2MzZjNTZhYzI1MTRjYzhlYzdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKQEAgLTM5LDcgKzM5LDYgQEAg
Y2xhc3MgQm94OwogY2xhc3MgQm94R2VvbWV0cnk7CiBjbGFzcyBDb250YWluZXJCb3g7CiBjbGFz
cyBJbmxpbmVMaW5lR2VvbWV0cnk7Ci1jbGFzcyBSZXBsYWNlZEJveDsKIHN0cnVjdCBMaW5lUnVu
OwogfQogCkBAIC00OCw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBEaXNwbGF5IHsKIGNsYXNzIEJveDsK
IGNsYXNzIEJveERlY29yYXRpb25EYXRhOwogY2xhc3MgQm94TW9kZWxCb3g7CitjbGFzcyBDb250
YWluZXJCb3g7CiBjbGFzcyBTdHlsZTsKIAogZW51bSBjbGFzcyBSb290QmFja2dyb3VuZFByb3Bh
Z2F0aW9uIDogdWludDhfdCB7CkBAIC01NSw2ICs1NSwxMSBAQCBlbnVtIGNsYXNzIFJvb3RCYWNr
Z3JvdW5kUHJvcGFnYXRpb24gOiB1aW50OF90IHsKICAgICBCb2R5VG9Sb290LAogfTsKIAorc3Ry
dWN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQgeworICAgIGNvbnN0IERpc3BsYXk6OkNvbnRhaW5l
ckJveCYgYm94OworICAgIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3Q7Cit9OworCiBjbGFzcyBC
b3hGYWN0b3J5IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBCb3hGYWN0b3J5KGZsb2F0IHBpeGVs
U25hcHBpbmdGYWN0b3IpOwpAQCAtNjIsMTggKzY3LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Um9vdEJhY2tncm91bmRQcm9wYWdhdGlvbiBkZXRlcm1pbmVSb290QmFja2dyb3VuZFByb3BhZ2F0
aW9uKGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Q29u
dGFpbmVyQm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIFJvb3RCYWNrZ3JvdW5kUHJv
cGFnYXRpb24pIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JC
b2R5Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIFJv
b3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24sIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZz
ZXRGcm9tUm9vdCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZv
ckJvZHlCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5Jiwg
Y29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24p
IGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3go
Y29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29u
dGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJveD4g
ZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgTGF5b3V0OjpMaW5lUnVuJiwgY29uc3QgTGF5b3V0
OjpJbmxpbmVMaW5lR2VvbWV0cnkmLCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290KSBjb25zdDsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlv
dXQ6OkxpbmVSdW4mLCBjb25zdCBMYXlvdXQ6OklubGluZUxpbmVHZW9tZXRyeSYsIGNvbnN0IENv
bnRhaW5pbmdCbG9ja0NvbnRleHQmKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1
ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29u
c3QgUmVuZGVyU3R5bGUqIHN0eWxlRm9yQmFja2dyb3VuZCwgY29uc3QgTGF5b3V0OjpCb3hHZW9t
ZXRyeSYsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIFN0eWxlJiYpIGNvbnN0OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpC
b3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29u
dGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZUZvckJhY2tncm91bmQsIFN0eWxlJiYpIGNv
bnN0OwogCi0gICAgdm9pZCBzZXR1cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiwgY29uc3QgTGF5
b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRG
cm9tUm9vdCkgY29uc3Q7Ci0gICAgdm9pZCBzZXR1cEJveE1vZGVsQm94KEJveE1vZGVsQm94Jiwg
Y29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5k
LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkg
Y29uc3Q7CisgICAgdm9pZCBzZXR1cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiwgY29uc3QgTGF5
b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Js
b2NrQ29udGV4dCYpIGNvbnN0OworICAgIHZvaWQgc2V0dXBCb3hNb2RlbEJveChCb3hNb2RlbEJv
eCYsIGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIGNvbnN0
IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNr
Z3JvdW5kKSBjb25zdDsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3hEZWNvcmF0aW9uRGF0YT4g
Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEoY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBSZW5k
ZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5Jiwg
TGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJv
eERlY29yYXRpb25EYXRhPiBjb25zdHJ1Y3RCb3hEZWNvcmF0aW9uRGF0YShjb25zdCBMYXlvdXQ6
OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGVGb3JCYWNrZ3JvdW5kLCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290KSBjb25zdDsKIAogICAg
IHN0YXRpYyBjb25zdCBMYXlvdXQ6OkNvbnRhaW5lckJveCogZG9jdW1lbnRFbGVtZW50Qm94RnJv
bVJvb3RCb3goY29uc3QgTGF5b3V0OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gpOwogICAg
IHN0YXRpYyBjb25zdCBMYXlvdXQ6OkJveCogYm9keUJveEZyb21Sb290Qm94KGNvbnN0IExheW91
dDo6Q29udGFpbmVyQm94JiByb290TGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwCmluZGV4IDZmMmYyMDM4MzRjZjhlNDE3NGZmMjgx
YTliNDQ1YmFkZDEyMThjMGQuLjU1NTc2NWUyYjc1NGVkYzZjZDYwZDU1MDNkYzRhNDlkYzZlY2U2
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNw
cApAQCAtMjA4LDcgKzIwOCw3IEBAIGNvbnN0IENvbnRhaW5lckJveCYgQm94Ojpjb250YWluaW5n
QmxvY2soKSBjb25zdAogICAgIGlmICghaXNQb3NpdGlvbmVkKCkgfHwgaXNJbkZsb3dQb3NpdGlv
bmVkKCkpIHsKICAgICAgICAgYXV0byogYW5jZXN0b3IgPSAmcGFyZW50KCk7CiAgICAgICAgIGZv
ciAoOyAhaXM8SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0b3IgPSAm
YW5jZXN0b3ItPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQmxvY2tD
b250YWluZXIoKSB8fCBhbmNlc3Rvci0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQor
ICAgICAgICAgICAgaWYgKGFuY2VzdG9yLT5pc0NvbnRhaW5pbmdCbG9ja0ZvckluRmxvdygpKQog
ICAgICAgICAgICAgICAgIHJldHVybiAqYW5jZXN0b3I7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuICphbmNlc3RvcjsKQEAgLTIxNyw3ICsyMTcsNyBAQCBjb25zdCBDb250YWluZXJCb3gmIEJv
eDo6Y29udGFpbmluZ0Jsb2NrKCkgY29uc3QKICAgICBpZiAoaXNGaXhlZFBvc2l0aW9uZWQoKSkg
ewogICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZwYXJlbnQoKTsKICAgICAgICAgZm9yICg7ICFp
czxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3IpOyBhbmNlc3RvciA9ICZhbmNlc3Rv
ci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+c3R5bGUoKS5oYXNUcmFu
c2Zvcm0oKSkKKyAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aXNDb250YWluaW5nQmxvY2tGb3JG
aXhlZFBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuICphbmNlc3RvcjsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGNvbnN0
IENvbnRhaW5lckJveCYgQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAogICAgIGlmIChpc091
dE9mRmxvd1Bvc2l0aW9uZWQoKSkgewogICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZwYXJlbnQo
KTsKICAgICAgICAgZm9yICg7ICFpczxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3Ip
OyBhbmNlc3RvciA9ICZhbmNlc3Rvci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNl
c3Rvci0+aXNQb3NpdGlvbmVkKCkgfHwgYW5jZXN0b3ItPnN0eWxlKCkuaGFzVHJhbnNmb3JtKCkp
CisgICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93
UG9zaXRpb24oKSkKICAgICAgICAgICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiAqYW5jZXN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5oCmluZGV4IGI1NTYxYWE5OTk5YzQ2MTMzYjIwNzE4YjRlOGQ0ZWM1
MWY0ZjliMWYuLjU1OGEwZjc4YzgzMjRiMzZmYmIzNGZlYTNjZDc0OTRlOGJkNjYwOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC05Nyw2ICs5
NywxMCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4
dFJvb3QoKSBjb25zdDsKICAgICBjb25zdCBJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFs
Q29udGFpbmluZ0Jsb2NrKCkgY29uc3Q7CiAKKyAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9y
SW5GbG93KCkgY29uc3Q7CisgICAgYm9vbCBpc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRp
b24oKSBjb25zdDsKKyAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRp
b24oKSBjb25zdDsKKwogICAgIGJvb2wgaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoY29uc3QgQ29u
dGFpbmVyQm94JikgY29uc3Q7CiAKICAgICBib29sIGlzQW5vbnltb3VzKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Fub255bW91czsgfQpAQCAtMjE0LDYgKzIxOCwyMSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc0Fub255bW91cyA6IDE7CiB9OwogCitpbmxpbmUgYm9vbCBCb3g6OmlzQ29udGFpbmlu
Z0Jsb2NrRm9ySW5GbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNCbG9ja0NvbnRhaW5lcigp
IHx8IGVzdGFibGlzaGVzRm9ybWF0dGluZ0NvbnRleHQoKTsKK30KKworaW5saW5lIGJvb2wgQm94
Ojppc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVy
biBpc0luaXRpYWxDb250YWluaW5nQmxvY2soKSB8fCBzdHlsZSgpLmhhc1RyYW5zZm9ybSgpOwor
fQorCitpbmxpbmUgYm9vbCBCb3g6OmlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRp
b24oKSBjb25zdAoreworICAgIHJldHVybiBpc0luaXRpYWxDb250YWluaW5nQmxvY2soKSB8fCBp
c1Bvc2l0aW9uZWQoKSB8fCBzdHlsZSgpLmhhc1RyYW5zZm9ybSgpOworfQorCiB9CiB9CiAK
</data>
<flag name="commit-queue"
          id="431988"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414960</attachid>
            <date>2020-11-27 11:28:29 -0800</date>
            <delta_ts>2020-11-27 14:26:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219310-20201127112829.patch</filename>
            <type>text/plain</type>
            <size>27051</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTNmNWNiNGY1YTEzZjBh
ZmI4MjdkMzJjNTdiY2QwZTU3ZmZhMDk2Zi4uOWQ1YWVkNGFjMTBkNDZlZjAwZWZjMGEzMjMyZmMy
MjcwMTYxZGJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTExLTI3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtMRkMgRGlzcGxh
eV0gRml4IGJveCBsb2NhdGlvbnMgZm9yIHBvc2l0aW9uZWQgZWxlbWVudHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTMxMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjb2RlIGFzc3VtZWQgdGhh
dCBsYXlvdXQgYm94ZXMgd2VyZSBhbHdheXMgcG9zaXRpb25lZCByZWxhdGl2ZSB0byB0aGVpciBw
YXJlbnRzLAorICAgICAgICBidXQgYm9yZGVyIGJveCBnZW9tZXRyeSBpcyBhY3R1YWxseSByZWxh
dGl2ZSB0byBjb250YWluaW5nIGJsb2NrLiBUbyBrZWVwIHRyYWNrCisgICAgICAgIG9mIHRoaXMg
d2hlbiBidWlsZGluZyB0aGUgZGlzcGxheSB0cmVlLCBhZGQgUG9zaXRpb25pbmdDb250ZXh0IHdo
aWNoIHRyYWNrcworICAgICAgICBjb250YWluaW5nIGJsb2NrcyBmb3IgdGhyZWUgdHlwZXMgb2Yg
cG9zaXRpb25pbmcgKGZpeGVkLCBhYnNvbHV0ZSBhbmQgaW4tZmxvdyksCisgICAgICAgIGFuZCBy
b290LXJlbGF0aXZlIG9mZnNldHMgZm9yIGVhY2guCisKKyAgICAgICAgVGhlIGNvZGUgdGhlbiBw
YXNzZXMgdGhlIGFwcHJvcHJpYXRlIGNvbnRhaW5pbmcgYmxvY2sgYm94ICsgb2Zmc2V0IGludG8g
dGhlIERpc3BsYXk6OkJveEZhY3RvcnkKKyAgICAgICAgY29kZSwgd2hpY2ggdXNlcyB0aGUgb2Zm
c2V0IHRvIGNvbXB1dGUgYWJzb2x1dGUgYm94IHJlY3RzLgorCisgICAgICAgICogZGlzcGxheS9E
aXNwbGF5VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRp
b25pbmdDb250ZXh0OjpQb3NpdGlvbmluZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6UG9zaXRpb25pbmdDb250ZXh0OjptX2Fic29sdXRlUG9zaXRpb25Db250YWluZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRpb25pbmdDb250ZXh0OjptX2luRmxvd0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpQb3NpdGlvbmluZ0NvbnRleHQ6
OmNvbnRleHRGb3JEZXNjZW5kYW50cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpQb3NpdGlvbmluZ0NvbnRleHQ6OmNvbnRhaW5pbmdCbG9ja0NvbnRleHRGb3JMYXlvdXRCb3gg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheTo6UG9zaXRpb25pbmdDb250ZXh0Ojpp
bkZsb3dDb250YWluaW5nQmxvY2tDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXk6OlRyZWVCdWlsZGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpU
cmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJlZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZSBjb25z
dCk6CisgICAgICAgICogZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNw
bGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yUm9vdEJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yQm9keUJveCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yTGF5
b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJveEZhY3Rvcnk6OmRp
c3BsYXlCb3hGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OkJv
eEZhY3Rvcnk6OnNldHVwQm94R2VvbWV0cnkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6Qm94RmFjdG9yeTo6Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveCBjb25z
dCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaDoKKyAgICAgICAg
KiBsYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpCb3g6OmNvbnRhaW5pbmdCbG9jayBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2xheW91
dHRyZWUvTGF5b3V0Qm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNDb250
YWluaW5nQmxvY2tGb3JJbkZsb3cgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpC
b3g6OmlzQ29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkJveDo6aXNDb250YWluaW5nQmxvY2tGb3JPdXRPZkZsb3dQb3NpdGlv
biBjb25zdCk6CisKIDIwMjAtMTEtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQyBEaXNwbGF5XSBDbGVhbiB1cCBDU1Mgc3RhY2tpbmcgY29u
dGV4dCBwYWludGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rp
c3BsYXlUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5jcHAKaW5kZXggNmY0NTVmNTIyNzNiZmU4YjlkMmQ1YjM4NzViMDE3NDNlOTljY2Nj
Yy4uZmU3M2M3Yjc3MWJiYzg2MjcxODY1NzM2ZWRkNzlkMDMyYzAwYWVlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcApAQCAtNDYsNiArNDYsNTcg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5IHsKIAorY2xhc3MgUG9z
aXRpb25pbmdDb250ZXh0IHsKK3B1YmxpYzoKKyAgICBQb3NpdGlvbmluZ0NvbnRleHQoY29uc3Qg
RGlzcGxheTo6Q29udGFpbmVyQm94JiByb290RGlzcGxheUJveCkKKyAgICAgICAgOiBtX2ZpeGVk
UG9zaXRpb25Db250YWluZXIoeyByb290RGlzcGxheUJveCwgeyB9IH0pCisgICAgICAgICwgbV9h
YnNvbHV0ZVBvc2l0aW9uQ29udGFpbmVyKHsgcm9vdERpc3BsYXlCb3gsIHsgfSB9KQorICAgICAg
ICAsIG1faW5GbG93Q29udGFpbmVyICh7IHJvb3REaXNwbGF5Qm94LCB7IH0gfSkKKyAgICB7Cisg
ICAgfQorCisgICAgUG9zaXRpb25pbmdDb250ZXh0IGNvbnRleHRGb3JEZXNjZW5kYW50cyhjb25z
dCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5IGdlb21l
dHJ5LCBjb25zdCBEaXNwbGF5OjpDb250YWluZXJCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CisgICAg
eworICAgICAgICBhdXRvIGN1cnJlbnRPZmZzZXQgPSBjb250YWluaW5nQmxvY2tDb250ZXh0Rm9y
TGF5b3V0Qm94KGxheW91dEJveCkub2Zmc2V0RnJvbVJvb3Q7CisKKyAgICAgICAgYXV0byBib3Jk
ZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJl
Y3QoZ2VvbWV0cnkpIH07CisgICAgICAgIGN1cnJlbnRPZmZzZXQgKz0gdG9MYXlvdXRTaXplKGJv
cmRlckJveFJlY3QubG9jYXRpb24oKSk7CisKKyAgICAgICAgYXV0byBjdXJyZW50Qm94ZXMgPSBD
b250YWluaW5nQmxvY2tDb250ZXh0IHsgZGlzcGxheUJveCwgY3VycmVudE9mZnNldCB9OworICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgbGF5b3V0Qm94LmlzQ29udGFpbmluZ0Jsb2NrRm9y
Rml4ZWRQb3NpdGlvbigpID8gY3VycmVudEJveGVzIDogbV9maXhlZFBvc2l0aW9uQ29udGFpbmVy
LAorICAgICAgICAgICAgbGF5b3V0Qm94LmlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9z
aXRpb24oKSA/IGN1cnJlbnRCb3hlcyA6IG1fYWJzb2x1dGVQb3NpdGlvbkNvbnRhaW5lciwKKyAg
ICAgICAgICAgIGxheW91dEJveC5pc0NvbnRhaW5pbmdCbG9ja0ZvckluRmxvdygpID8gY3VycmVu
dEJveGVzIDogbV9pbkZsb3dDb250YWluZXIKKyAgICAgICAgfTsKKyAgICB9CisKKyAgICBjb25z
dCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0Rm9yTGF5b3V0
Qm94KGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gpIGNvbnN0CisgICAgeworICAgICAgICBp
ZiAobGF5b3V0Qm94LmlzRml4ZWRQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbV9m
aXhlZFBvc2l0aW9uQ29udGFpbmVyOworCisgICAgICAgIGlmIChsYXlvdXRCb3guaXNPdXRPZkZs
b3dQb3NpdGlvbmVkKCkpCisgICAgICAgICAgICByZXR1cm4gbV9hYnNvbHV0ZVBvc2l0aW9uQ29u
dGFpbmVyOworCisgICAgICAgIHJldHVybiBtX2luRmxvd0NvbnRhaW5lcjsKKyAgICB9CisgICAg
CisgICAgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgaW5GbG93Q29udGFpbmluZ0Jsb2Nr
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5GbG93Q29udGFpbmVyOyB9CisKK3ByaXZhdGU6
CisgICAgUG9zaXRpb25pbmdDb250ZXh0KGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGZp
eGVkQ29udGFpbmVyLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBhYnNvbHV0ZUNvbnRh
aW5lciwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYgaW5GbG93Q29udGFpbmVyKQorICAg
ICAgICA6IG1fZml4ZWRQb3NpdGlvbkNvbnRhaW5lcihmaXhlZENvbnRhaW5lcikKKyAgICAgICAg
LCBtX2Fic29sdXRlUG9zaXRpb25Db250YWluZXIoYWJzb2x1dGVDb250YWluZXIpCisgICAgICAg
ICwgbV9pbkZsb3dDb250YWluZXIoaW5GbG93Q29udGFpbmVyKQorICAgIHsKKyAgICB9CisKKyAg
ICBDb250YWluaW5nQmxvY2tDb250ZXh0IG1fZml4ZWRQb3NpdGlvbkNvbnRhaW5lcjsKKyAgICBD
b250YWluaW5nQmxvY2tDb250ZXh0IG1fYWJzb2x1dGVQb3NpdGlvbkNvbnRhaW5lcjsKKyAgICBD
b250YWluaW5nQmxvY2tDb250ZXh0IG1faW5GbG93Q29udGFpbmVyOworfTsKKworCiBUcmVlQnVp
bGRlcjo6VHJlZUJ1aWxkZXIoZmxvYXQgcGl4ZWxTbmFwcGluZ0ZhY3RvcikKICAgICA6IG1fYm94
RmFjdG9yeShwaXhlbFNuYXBwaW5nRmFjdG9yKQogewpAQCAtNzAsMTEgKzEyMSw5IEBAIHN0ZDo6
dW5pcXVlX3B0cjxUcmVlPiBUcmVlQnVpbGRlcjo6YnVpbGQoY29uc3QgTGF5b3V0OjpMYXlvdXRT
dGF0ZSYgbGF5b3V0U3RhdGUpCiAgICAgaWYgKCFyb290TGF5b3V0Qm94LmZpcnN0Q2hpbGQoKSkK
ICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VHJlZT4oV1RGTW92ZShyb290RGlzcGxheUNvbnRh
aW5lckJveCkpOwogCi0gICAgYXV0byBib3JkZXJCb3hSZWN0ID0gTGF5b3V0UmVjdCB7IExheW91
dDo6Qm94R2VvbWV0cnk6OmJvcmRlckJveFJlY3QoZ2VvbWV0cnkpIH07Ci0gICAgYXV0byBvZmZz
ZXQgPSB0b0xheW91dFNpemUoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKICAgICBhdXRvIGlu
c2VydGlvblBvc2l0aW9uID0gSW5zZXJ0aW9uUG9zaXRpb24geyAqcm9vdERpc3BsYXlDb250YWlu
ZXJCb3ggfTsKIAotICAgIHJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUobGF5b3V0U3RhdGUsIG9m
ZnNldCwgKnJvb3RMYXlvdXRCb3guZmlyc3RDaGlsZCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7Cisg
ICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShsYXlvdXRTdGF0ZSwgKnJvb3RMYXlvdXRCb3gu
Zmlyc3RDaGlsZCgpLCB7ICpyb290RGlzcGxheUNvbnRhaW5lckJveCB9LCBpbnNlcnRpb25Qb3Np
dGlvbik7CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCiAgICAgTE9HX1dJVEhfU1RSRUFN
KEZvcm1hdHRpbmdDb250ZXh0TGF5b3V0LCBzdHJlYW0gPDwgIkRpc3BsYXkgdHJlZTpcbiIgPDwg
ZGlzcGxheVRyZWVBc1RleHQoKnJvb3REaXNwbGF5Q29udGFpbmVyQm94KSk7CkBAIC05NSwzOCAr
MTQ0LDM5IEBAIHZvaWQgVHJlZUJ1aWxkZXI6Omluc2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYm
IGJveCwgSW5zZXJ0aW9uUG9zaXRpb24mIGluc2VydGlvCiAgICAgfQogfQogCi12b2lkIFRyZWVC
dWlsZGVyOjpidWlsZElubGluZURpc3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUm
IGxheW91dFN0YXRlLCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290LCBjb25zdCBMYXlvdXQ6OkNv
bnRhaW5lckJveCYgaW5saW5lRm9ybWF0dGluZ1Jvb3QsIEluc2VydGlvblBvc2l0aW9uJiBpbnNl
cnRpb25Qb3NpdGlvbikgY29uc3QKK3ZvaWQgVHJlZUJ1aWxkZXI6OmJ1aWxkSW5saW5lRGlzcGxh
eVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91
dDo6Q29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9vdCwgY29uc3QgUG9zaXRpb25pbmdD
b250ZXh0JiBwb3NpdGlvbmluZ0NvbnRleHQsIEluc2VydGlvblBvc2l0aW9uJiBpbnNlcnRpb25Q
b3NpdGlvbikgY29uc3QKIHsKICAgICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlv
dXRTdGF0ZS5lc3RhYmxpc2hlZElubGluZUZvcm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5n
Um9vdCk7CiAKICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5l
UnVucygpKSB7CiAgICAgICAgIGlmIChydW4udGV4dCgpKSB7CiAgICAgICAgICAgICBhdXRvJiBs
aW5lR2VvbWV0cnkgPSBpbmxpbmVGb3JtYXR0aW5nU3RhdGUubGluZXMoKS5hdChydW4ubGluZUlu
ZGV4KCkpOwotICAgICAgICAgICAgYXV0byB0ZXh0Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlC
b3hGb3JUZXh0UnVuKHJ1biwgbGluZUdlb21ldHJ5LCBvZmZzZXRGcm9tUm9vdCk7CisgICAgICAg
ICAgICBhdXRvIHRleHRCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZvclRleHRSdW4ocnVu
LCBsaW5lR2VvbWV0cnksIHBvc2l0aW9uaW5nQ29udGV4dC5pbkZsb3dDb250YWluaW5nQmxvY2tD
b250ZXh0KCkpOwogICAgICAgICAgICAgaW5zZXJ0KFdURk1vdmUodGV4dEJveCksIGluc2VydGlv
blBvc2l0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94PihydW4ubGF5b3V0Qm94KCkpKSB7Ci0gICAgICAg
ICAgICByZWN1cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBvZmZzZXRGcm9tUm9v
dCwgcnVuLmxheW91dEJveCgpLCBpbnNlcnRpb25Qb3NpdGlvbik7CisgICAgICAgICAgICByZWN1
cnNpdmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBydW4ubGF5b3V0Qm94KCksIHBvc2l0
aW9uaW5nQ29udGV4dCwgaW5zZXJ0aW9uUG9zaXRpb24pOwogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIH0KIAogICAgICAgICBhdXRvIGdlb21ldHJ5ID0gbGF5b3V0U3RhdGUuZ2VvbWV0
cnlGb3JCb3gocnVuLmxheW91dEJveCgpKTsKLSAgICAgICAgYXV0byBkaXNwbGF5Qm94ID0gbV9i
b3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJveCgpLCBnZW9tZXRy
eSwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICBhdXRvIGRpc3BsYXlCb3ggPSBtX2JveEZhY3Rv
cnkuZGlzcGxheUJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94KCksIGdlb21ldHJ5LCBwb3Np
dGlvbmluZ0NvbnRleHQuaW5GbG93Q29udGFpbmluZ0Jsb2NrQ29udGV4dCgpKTsKICAgICAgICAg
aW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGluc2VydGlvblBvc2l0aW9uKTsKICAgICB9CiB9
CiAKLXZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRyZWUoY29uc3QgTGF5
b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3Qs
IGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIEluc2VydGlvblBvc2l0aW9uJiBpbnNlcnRp
b25Qb3NpdGlvbikgY29uc3QKK3ZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxh
eVRyZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUsIGNvbnN0IExheW91
dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYgcG9zaXRpb25pbmdD
b250ZXh0LCBJbnNlcnRpb25Qb3NpdGlvbiYgaW5zZXJ0aW9uUG9zaXRpb24pIGNvbnN0CiB7CiAg
ICAgYXV0byBnZW9tZXRyeSA9IGxheW91dFN0YXRlLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveDsKLSAgICAKKworICAgIGF1dG8m
IGNvbnRhaW5pbmdCbG9ja0NvbnRleHQgPSBwb3NpdGlvbmluZ0NvbnRleHQuY29udGFpbmluZ0Js
b2NrQ29udGV4dEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGlmIChsYXlvdXRCb3guaXNC
b2R5Qm94KCkpCi0gICAgICAgIGRpc3BsYXlCb3ggPSBtX2JveEZhY3RvcnkuZGlzcGxheUJveEZv
ckJvZHlCb3gobGF5b3V0Qm94LCBnZW9tZXRyeSwgbV9yb290QmFja2dyb3VuZFByb3BnYXRpb24s
IG9mZnNldEZyb21Sb290KTsKKyAgICAgICAgZGlzcGxheUJveCA9IG1fYm94RmFjdG9yeS5kaXNw
bGF5Qm94Rm9yQm9keUJveChsYXlvdXRCb3gsIGdlb21ldHJ5LCBjb250YWluaW5nQmxvY2tDb250
ZXh0LCBtX3Jvb3RCYWNrZ3JvdW5kUHJvcGdhdGlvbik7CiAgICAgZWxzZQotICAgICAgICBkaXNw
bGF5Qm94ID0gbV9ib3hGYWN0b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LCBn
ZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICBkaXNwbGF5Qm94ID0gbV9ib3hGYWN0
b3J5LmRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LCBnZW9tZXRyeSwgY29udGFpbmlu
Z0Jsb2NrQ29udGV4dCk7CiAgICAgCiAgICAgaW5zZXJ0KFdURk1vdmUoZGlzcGxheUJveCksIGlu
c2VydGlvblBvc2l0aW9uKTsKIApAQCAtMTM3LDE2ICsxODcsMTYgQEAgdm9pZCBUcmVlQnVpbGRl
cjo6cmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBs
YXlvdXRTdGEKICAgICBpZiAoIWxheW91dENvbnRhaW5lckJveC5oYXNDaGlsZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIGJvcmRlckJveFJlY3QgPSBMYXlvdXRSZWN0IHsgTGF5b3V0
OjpCb3hHZW9tZXRyeTo6Ym9yZGVyQm94UmVjdChnZW9tZXRyeSkgfTsKLSAgICBvZmZzZXRGcm9t
Um9vdCArPSB0b0xheW91dFNpemUoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKKyAgICBDb250
YWluZXJCb3gmIGN1cnJlbnRCb3ggPSBkb3duY2FzdDxDb250YWluZXJCb3g+KCppbnNlcnRpb25Q
b3NpdGlvbi5jdXJyZW50Q2hpbGQpOworICAgIGF1dG8gaW5zZXJ0aW9uUG9zaXRpb25Gb3JDaGls
ZHJlbiA9IEluc2VydGlvblBvc2l0aW9uIHsgY3VycmVudEJveCB9OwogCi0gICAgYXV0byBwb3Np
dGlvbkZvckNoaWxkcmVuID0gSW5zZXJ0aW9uUG9zaXRpb24geyBkb3duY2FzdDxDb250YWluZXJC
b3g+KCppbnNlcnRpb25Qb3NpdGlvbi5jdXJyZW50Q2hpbGQpIH07CisgICAgYXV0byBwb3NpdGlv
bmluZ0NvbnRleHRGb3JEZXNjZW5kYW50cyA9IHBvc2l0aW9uaW5nQ29udGV4dC5jb250ZXh0Rm9y
RGVzY2VuZGFudHMobGF5b3V0Q29udGFpbmVyQm94LCBnZW9tZXRyeSwgY3VycmVudEJveCk7CiAK
ICAgICBlbnVtIGNsYXNzIERlc2NlbmRhbnRCb3hJbmNsdXNpb24geyBBbGxCb3hlcywgT3V0T2ZG
bG93T25seSB9OwogICAgIGF1dG8gYm94SW5jbHVzaW9uID0gRGVzY2VuZGFudEJveEluY2x1c2lv
bjo6QWxsQm94ZXM7CiAKICAgICBpZiAobGF5b3V0Q29udGFpbmVyQm94LmVzdGFibGlzaGVzSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBidWlsZElubGluZURpc3BsYXlUcmVl
KGxheW91dFN0YXRlLCBvZmZzZXRGcm9tUm9vdCwgZG93bmNhc3Q8TGF5b3V0OjpDb250YWluZXJC
b3g+KGxheW91dENvbnRhaW5lckJveCksIHBvc2l0aW9uRm9yQ2hpbGRyZW4pOworICAgICAgICBi
dWlsZElubGluZURpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBkb3duY2FzdDxMYXlvdXQ6OkNvbnRh
aW5lckJveD4obGF5b3V0Q29udGFpbmVyQm94KSwgcG9zaXRpb25pbmdDb250ZXh0Rm9yRGVzY2Vu
ZGFudHMsIGluc2VydGlvblBvc2l0aW9uRm9yQ2hpbGRyZW4pOwogICAgICAgICBib3hJbmNsdXNp
b24gPSBEZXNjZW5kYW50Qm94SW5jbHVzaW9uOjpPdXRPZkZsb3dPbmx5OwogICAgIH0KIApAQCAt
MTYwLDcgKzIxMCw3IEBAIHZvaWQgVHJlZUJ1aWxkZXI6OnJlY3Vyc2l2ZUJ1aWxkRGlzcGxheVRy
ZWUoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhCiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogTGF5b3V0OjpjaGlsZHJlbk9mVHlwZTxMYXlvdXQ6OkJveD4obGF5b3V0Q29udGFp
bmVyQm94KSkgewogICAgICAgICBpZiAoaW5jbHVkZUJveChib3hJbmNsdXNpb24sIGNoaWxkKSAm
JiBsYXlvdXRTdGF0ZS5oYXNCb3hHZW9tZXRyeShjaGlsZCkpCi0gICAgICAgICAgICByZWN1cnNp
dmVCdWlsZERpc3BsYXlUcmVlKGxheW91dFN0YXRlLCBvZmZzZXRGcm9tUm9vdCwgY2hpbGQsIHBv
c2l0aW9uRm9yQ2hpbGRyZW4pOworICAgICAgICAgICAgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJl
ZShsYXlvdXRTdGF0ZSwgY2hpbGQsIHBvc2l0aW9uaW5nQ29udGV4dEZvckRlc2NlbmRhbnRzLCBp
bnNlcnRpb25Qb3NpdGlvbkZvckNoaWxkcmVuKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5oCmluZGV4IDMwMjdlNzU4N2MxMzc2NzlhYTc4
OTRiZjQxNGE5OTk2ZTU2NTllZmQuLmMzMmY1M2E4YTdlZTNiMmEwNTk5NjgxMWRhM2U0YTk0MDRh
NDk3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWls
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxkZXIuaApA
QCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgRGlzcGxheSB7CiAKIGNsYXNzIEJveDsKIGNsYXNz
IENvbnRhaW5lckJveDsKK2NsYXNzIFBvc2l0aW9uaW5nQ29udGV4dDsKIGNsYXNzIFRyZWU7CiAK
IGNsYXNzIFRyZWVCdWlsZGVyIHsKQEAgLTU5LDE0ICs2MCwxNCBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IEluc2VydGlvblBvc2l0aW9uIHsKLSAgICAgICAgRGlzcGxheTo6Q29u
dGFpbmVyQm94JiBjb250YWluZXI7Ci0gICAgICAgIERpc3BsYXk6OkJveCogY3VycmVudENoaWxk
IHsgbnVsbHB0ciB9OworICAgICAgICBDb250YWluZXJCb3gmIGNvbnRhaW5lcjsKKyAgICAgICAg
Qm94KiBjdXJyZW50Q2hpbGQgeyBudWxscHRyIH07CiAgICAgfTsKIAotICAgIHZvaWQgcmVjdXJz
aXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiwgTGF5b3V0U2l6
ZSBvZmZzZXRGcm9tUm9vdCwgY29uc3QgTGF5b3V0OjpCb3gmLCBJbnNlcnRpb25Qb3NpdGlvbiYp
IGNvbnN0OworICAgIHZvaWQgcmVjdXJzaXZlQnVpbGREaXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6
OkxheW91dFN0YXRlJiwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBQb3NpdGlvbmluZ0NvbnRl
eHQmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0OworCisgICAgdm9pZCBidWlsZElubGluZURp
c3BsYXlUcmVlKGNvbnN0IExheW91dDo6TGF5b3V0U3RhdGUmLCBjb25zdCBMYXlvdXQ6OkNvbnRh
aW5lckJveCYsIGNvbnN0IFBvc2l0aW9uaW5nQ29udGV4dCYsIEluc2VydGlvblBvc2l0aW9uJikg
Y29uc3Q7CiAKLSAgICB2b2lkIGJ1aWxkSW5saW5lRGlzcGxheVRyZWUoY29uc3QgTGF5b3V0OjpM
YXlvdXRTdGF0ZSYsIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dDo6Q29u
dGFpbmVyQm94JiwgSW5zZXJ0aW9uUG9zaXRpb24mKSBjb25zdDsKLSAgICAKICAgICB2b2lkIGlu
c2VydChzdGQ6OnVuaXF1ZV9wdHI8Qm94PiYmLCBJbnNlcnRpb25Qb3NpdGlvbiYpIGNvbnN0Owog
CiAgICAgQm94RmFjdG9yeSBtX2JveEZhY3Rvcnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKaW5kZXggOTI3MWYwY2FmMmE0NDE1NmU1NTNm
MmQ4OGY4YWY3ZGU2NTAxOWFkZS4uM2ZkOWExNmE4NGQwODFiMzJmZjgzMjg3OGY1ZTZmNjUwZDQy
YWNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0
b3J5LmNwcApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19D
T05URVhUKQogCiAjaW5jbHVkZSAiRGlzcGxheUJveERlY29yYXRpb25EYXRhLmgiCisjaW5jbHVk
ZSAiRGlzcGxheUJveERlY29yYXRpb25QYWludGVyLmgiCiAjaW5jbHVkZSAiRGlzcGxheUNvbnRh
aW5lckJveC5oIgogI2luY2x1ZGUgIkRpc3BsYXlGaWxsTGF5ZXJJbWFnZUdlb21ldHJ5LmgiCiAj
aW5jbHVkZSAiRGlzcGxheUltYWdlQm94LmgiCkBAIC04MSwxMSArODIsMTIgQEAgc3RkOjp1bmlx
dWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclJvb3RCb3goY29uc3QgTGF5b3V0
OjpDb250YWluZXJCb3gKICAgICBhdXRvIHN0eWxlID0gU3R5bGUgeyByb290TGF5b3V0Qm94LnN0
eWxlKCksIHN0eWxlRm9yQmFja2dyb3VuZCB9OwogCiAgICAgYXV0byByb290Qm94ID0gbWFrZVVu
aXF1ZTxDb250YWluZXJCb3g+KHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwg
bV9waXhlbFNuYXBwaW5nRmFjdG9yKSwgV1RGTW92ZShzdHlsZSkpOwotICAgIHNldHVwQm94TW9k
ZWxCb3goKnJvb3RCb3gsIHJvb3RMYXlvdXRCb3gsIHN0eWxlRm9yQmFja2dyb3VuZCwgZ2VvbWV0
cnksIHsgfSk7CisgICAgLy8gV2UgcGFzcyByb290Qm94IGFzIGl0cyBvd24gY29udGFpbmluZ0Js
b2NrQm94IGhlcmUgdG8gYWxsb3cgaXQgdG8gYmUgYSByZWZlcmVuY2UgZXZlcnl3aGVyZSBlbHNl
LgorICAgIHNldHVwQm94TW9kZWxCb3goKnJvb3RCb3gsIHJvb3RMYXlvdXRCb3gsIGdlb21ldHJ5
LCB7ICpyb290Qm94LCB7IDAsIDAgfSB9LCBzdHlsZUZvckJhY2tncm91bmQpOwogICAgIHJldHVy
biByb290Qm94OwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5
Qm94Rm9yQm9keUJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6
OkJveEdlb21ldHJ5JiBnZW9tZXRyeSwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbiByb290QmFj
a2dyb3VuZFByb3BhZ2F0aW9uLCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290KSBjb25zdAorc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvckJvZHlCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgZ2VvbWV0
cnksIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQs
IFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gcm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29u
c3QKIHsKICAgICBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kID0gJmxheW91
dEJveC5zdHlsZSgpOwogICAgIApAQCAtOTMsMjAgKzk1LDIwIEBAIHN0ZDo6dW5pcXVlX3B0cjxC
b3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JCb2R5Qm94KGNvbnN0IExheW91dDo6Qm94JiBs
YXlvdXRCCiAgICAgICAgIHN0eWxlRm9yQmFja2dyb3VuZCA9IG51bGxwdHI7CiAgICAgCiAgICAg
YXV0byBzdHlsZSA9IFN0eWxlIHsgbGF5b3V0Qm94LnN0eWxlKCksIHN0eWxlRm9yQmFja2dyb3Vu
ZCB9OwotICAgIHJldHVybiBkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCwgc3R5bGVG
b3JCYWNrZ3JvdW5kLCBnZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QsIFdURk1vdmUoc3R5bGUpKTsK
KyAgICByZXR1cm4gZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gsIGdlb21ldHJ5LCBj
b250YWluaW5nQmxvY2tDb250ZXh0LCBzdHlsZUZvckJhY2tncm91bmQsIFdURk1vdmUoc3R5bGUp
KTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvckxh
eW91dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBMYXlvdXQ6OkJveEdl
b21ldHJ5JiBnZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3N0ZDo6
dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3Qg
TGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgZ2VvbWV0
cnksIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQp
IGNvbnN0CiB7CiAgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgbGF5b3V0Qm94LnN0eWxlKCkgfTsK
LSAgICByZXR1cm4gZGlzcGxheUJveEZvckxheW91dEJveChsYXlvdXRCb3gsICZsYXlvdXRCb3gu
c3R5bGUoKSwgZ2VvbWV0cnksIG9mZnNldEZyb21Sb290LCBXVEZNb3ZlKHN0eWxlKSk7CisgICAg
cmV0dXJuIGRpc3BsYXlCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LCBnZW9tZXRyeSwgY29udGFp
bmluZ0Jsb2NrQ29udGV4dCwgJmxheW91dEJveC5zdHlsZSgpLCBXVEZNb3ZlKHN0eWxlKSk7CiB9
CiAKLXN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRpc3BsYXlCb3hGb3JMYXlvdXRC
b3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
Rm9yQmFja2dyb3VuZCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgZ2VvbWV0cnksIExheW91
dFNpemUgb2Zmc2V0RnJvbVJvb3QsIFN0eWxlJiYgc3R5bGUpIGNvbnN0CitzdGQ6OnVuaXF1ZV9w
dHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGdlb21ldHJ5LCBjb25z
dCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0LCBjb25zdCBS
ZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBTdHlsZSYmIHN0eWxlKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIG1hcCBsb2dpY2FsIHRvIHBoeXNpY2FsIHJlY3RzLgogICAg
IGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXQ6OkJveEdlb21ldHJ5Ojpi
b3JkZXJCb3hSZWN0KGdlb21ldHJ5KSB9OwotICAgIGJvcmRlckJveFJlY3QubW92ZShvZmZzZXRG
cm9tUm9vdCk7CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKGNvbnRhaW5pbmdCbG9ja0NvbnRleHQu
b2Zmc2V0RnJvbVJvb3QpOwogICAgIGF1dG8gcGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCA9IHNu
YXBSZWN0VG9EZXZpY2VQaXhlbHMoYm9yZGVyQm94UmVjdCwgbV9waXhlbFNuYXBwaW5nRmFjdG9y
KTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgaXNBbm9ueW1vdXMoKQpAQCAtMTE4LDIxICsxMjAs
MjEgQEAgc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvckxheW91
dEJveChjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3UKICAgICAgICAgICAgIGltYWdlID0gY2FjaGVk
SW1hZ2UtPmltYWdlKCk7CiAKICAgICAgICAgYXV0byBpbWFnZUJveCA9IG1ha2VVbmlxdWU8SW1h
Z2VCb3g+KHBpeGVsU25hcHBlZEJvcmRlckJveFJlY3QsIFdURk1vdmUoc3R5bGUpLCBXVEZNb3Zl
KGltYWdlKSk7Ci0gICAgICAgIHNldHVwQm94TW9kZWxCb3goKmltYWdlQm94LCBsYXlvdXRCb3gs
IHN0eWxlRm9yQmFja2dyb3VuZCwgZ2VvbWV0cnksIG9mZnNldEZyb21Sb290KTsKKyAgICAgICAg
c2V0dXBCb3hNb2RlbEJveCgqaW1hZ2VCb3gsIGxheW91dEJveCwgZ2VvbWV0cnksIGNvbnRhaW5p
bmdCbG9ja0NvbnRleHQsIHN0eWxlRm9yQmFja2dyb3VuZCk7CiAgICAgICAgIHJldHVybiBpbWFn
ZUJveDsKICAgICB9CiAgICAgCiAgICAgaWYgKGlzPExheW91dDo6Q29udGFpbmVyQm94PihsYXlv
dXRCb3gpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgZGVjaXNpb24gdG8gbWFrZSBhIENvbnRh
aW5lckJveCBzaG91bGQgYmUgbWFkZSBiYXNlZCBvbiB3aGV0aGVyIHRoaXMgRGlzcGxheTo6Qm94
IHdpbGwgaGF2ZSBjaGlsZHJlbi4KICAgICAgICAgYXV0byBjb250YWluZXJCb3ggPSBtYWtlVW5p
cXVlPENvbnRhaW5lckJveD4ocGl4ZWxTbmFwcGVkQm9yZGVyQm94UmVjdCwgV1RGTW92ZShzdHls
ZSkpOwotICAgICAgICBzZXR1cEJveE1vZGVsQm94KCpjb250YWluZXJCb3gsIGxheW91dEJveCwg
c3R5bGVGb3JCYWNrZ3JvdW5kLCBnZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOworICAgICAgICBz
ZXR1cEJveE1vZGVsQm94KCpjb250YWluZXJCb3gsIGxheW91dEJveCwgZ2VvbWV0cnksIGNvbnRh
aW5pbmdCbG9ja0NvbnRleHQsIHN0eWxlRm9yQmFja2dyb3VuZCk7CiAgICAgICAgIHJldHVybiBj
b250YWluZXJCb3g7CiAgICAgfQogCiAgICAgcmV0dXJuIG1ha2VVbmlxdWU8Qm94PihzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKGJvcmRlckJveFJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdU
Rk1vdmUoc3R5bGUpKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJveD4gQm94RmFjdG9yeTo6ZGlz
cGxheUJveEZvclRleHRSdW4oY29uc3QgTGF5b3V0OjpMaW5lUnVuJiBydW4sIGNvbnN0IExheW91
dDo6SW5saW5lTGluZUdlb21ldHJ5JiBsaW5lR2VvbWV0cnksIExheW91dFNpemUgb2Zmc2V0RnJv
bVJvb3QpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94
Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OkxpbmVSdW4mIHJ1biwgY29uc3QgTGF5b3V0OjpJbmxp
bmVMaW5lR2VvbWV0cnkmIGxpbmVHZW9tZXRyeSwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4
dCYgY29udGFpbmluZ0Jsb2NrQ29udGV4dCkgY29uc3QKIHsKICAgICBBU1NFUlQocnVuLnRleHQo
KSk7CiAgICAgYXV0byBsaW5lUmVjdCA9IGxpbmVHZW9tZXRyeS5saW5lQm94TG9naWNhbFJlY3Qo
KTsKQEAgLTE0MCwxNiArMTQyLDE2IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6
OmRpc3BsYXlCb3hGb3JUZXh0UnVuKGNvbnN0IExheW91dDo6TGluZVJ1biYgcnVuCiAKICAgICBh
dXRvIHJ1blJlY3QgPSBMYXlvdXRSZWN0IHsgcnVuLmxvZ2ljYWxMZWZ0KCksIHJ1bi5sb2dpY2Fs
VG9wKCksIHJ1bi5sb2dpY2FsV2lkdGgoKSwgcnVuLmxvZ2ljYWxIZWlnaHQoKSB9OwogICAgIHJ1
blJlY3QubW92ZUJ5KGxpbmVMYXlvdXRSZWN0LmxvY2F0aW9uKCkpOwotICAgIHJ1blJlY3QubW92
ZShvZmZzZXRGcm9tUm9vdCk7CisgICAgcnVuUmVjdC5tb3ZlKGNvbnRhaW5pbmdCbG9ja0NvbnRl
eHQub2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgYXV0byBzdHlsZSA9IFN0eWxlIHsgcnVuLmxheW91
dEJveCgpLnN0eWxlKCkgfTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxUZXh0Qm94PihzbmFwUmVj
dFRvRGV2aWNlUGl4ZWxzKHJ1blJlY3QsIG1fcGl4ZWxTbmFwcGluZ0ZhY3RvciksIFdURk1vdmUo
c3R5bGUpLCBydW4pOwogfQogCi12b2lkIEJveEZhY3Rvcnk6OnNldHVwQm94R2VvbWV0cnkoQm94
TW9kZWxCb3gmIGJveCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21l
dHJ5JiBsYXlvdXRHZW9tZXRyeSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3Zv
aWQgQm94RmFjdG9yeTo6c2V0dXBCb3hHZW9tZXRyeShCb3hNb2RlbEJveCYgYm94LCBjb25zdCBM
YXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmIGxheW91dEdlb21ldHJ5LCBj
b25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBjb25z
dAogewogICAgIGF1dG8gYm9yZGVyQm94UmVjdCA9IExheW91dFJlY3QgeyBMYXlvdXQ6OkJveEdl
b21ldHJ5Ojpib3JkZXJCb3hSZWN0KGxheW91dEdlb21ldHJ5KSB9OwotICAgIGJvcmRlckJveFJl
Y3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CisgICAgYm9yZGVyQm94UmVjdC5tb3ZlKGNvbnRhaW5p
bmdCbG9ja0NvbnRleHQub2Zmc2V0RnJvbVJvb3QpOwogCiAgICAgYXV0byBwYWRkaW5nQm94UmVj
dCA9IExheW91dFJlY3QgeyBsYXlvdXRHZW9tZXRyeS5wYWRkaW5nQm94KCkgfTsKICAgICBwYWRk
aW5nQm94UmVjdC5tb3ZlQnkoYm9yZGVyQm94UmVjdC5sb2NhdGlvbigpKTsKQEAgLTE2OSw3ICsx
NzEsNyBAQCB2b2lkIEJveEZhY3Rvcnk6OnNldHVwQm94R2VvbWV0cnkoQm94TW9kZWxCb3gmIGJv
eCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYQogICAgIH0KIH0KIAotc3RkOjp1bmlxdWVf
cHRyPEJveERlY29yYXRpb25EYXRhPiBCb3hGYWN0b3J5Ojpjb25zdHJ1Y3RCb3hEZWNvcmF0aW9u
RGF0YShjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5
bGVGb3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRHZW9tZXRy
eSwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxCb3hE
ZWNvcmF0aW9uRGF0YT4gQm94RmFjdG9yeTo6Y29uc3RydWN0Qm94RGVjb3JhdGlvbkRhdGEoY29u
c3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYgbGF5
b3V0R2VvbWV0cnksIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZUZvckJhY2tncm91bmQsIExheW91
dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0CiB7CiAgICAgYXV0byBib3hEZWNvcmF0aW9uRGF0
YSA9IG1ha2VVbmlxdWU8Qm94RGVjb3JhdGlvbkRhdGE+KCk7CiAKQEAgLTE5NywxNSArMTk5LDE1
IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3hEZWNvcmF0aW9uRGF0YT4gQm94RmFjdG9yeTo6Y29uc3Ry
dWN0Qm94RGVjb3JhdGlvbkRhdGEoY29uc3QKICAgICByZXR1cm4gYm94RGVjb3JhdGlvbkRhdGE7
CiB9CiAKLXZvaWQgQm94RmFjdG9yeTo6c2V0dXBCb3hNb2RlbEJveChCb3hNb2RlbEJveCYgYm94
LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVG
b3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRHZW9tZXRyeSwg
TGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3QKK3ZvaWQgQm94RmFjdG9yeTo6c2V0dXBC
b3hNb2RlbEJveChCb3hNb2RlbEJveCYgYm94LCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94
LCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiBsYXlvdXRHZW9tZXRyeSwgY29uc3QgQ29udGFp
bmluZ0Jsb2NrQ29udGV4dCYgY29udGFpbmluZ0Jsb2NrQ29udGV4dCwgY29uc3QgUmVuZGVyU3R5
bGUqIHN0eWxlRm9yQmFja2dyb3VuZCkgY29uc3QKIHsKLSAgICBzZXR1cEJveEdlb21ldHJ5KGJv
eCwgbGF5b3V0Qm94LCBsYXlvdXRHZW9tZXRyeSwgb2Zmc2V0RnJvbVJvb3QpOworICAgIHNldHVw
Qm94R2VvbWV0cnkoYm94LCBsYXlvdXRCb3gsIGxheW91dEdlb21ldHJ5LCBjb250YWluaW5nQmxv
Y2tDb250ZXh0KTsKIAogICAgIGF1dG8mIHJlbmRlclN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7
CiAgICAgaWYgKCEoc3R5bGVGb3JCYWNrZ3JvdW5kICYmIHN0eWxlRm9yQmFja2dyb3VuZC0+aGFz
QmFja2dyb3VuZCgpKSAmJiAhcmVuZGVyU3R5bGUuaGFzQm9yZGVyKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGF1dG8gYm94RGVjb3JhdGlvbkRhdGEgPSBjb25zdHJ1Y3RCb3hEZWNvcmF0aW9u
RGF0YShsYXlvdXRCb3gsIHN0eWxlRm9yQmFja2dyb3VuZCwgbGF5b3V0R2VvbWV0cnksIG9mZnNl
dEZyb21Sb290KTsKKyAgICBhdXRvIGJveERlY29yYXRpb25EYXRhID0gY29uc3RydWN0Qm94RGVj
b3JhdGlvbkRhdGEobGF5b3V0Qm94LCBsYXlvdXRHZW9tZXRyeSwgc3R5bGVGb3JCYWNrZ3JvdW5k
LCBjb250YWluaW5nQmxvY2tDb250ZXh0Lm9mZnNldEZyb21Sb290KTsKICAgICBib3guc2V0Qm94
RGVjb3JhdGlvbkRhdGEoV1RGTW92ZShib3hEZWNvcmF0aW9uRGF0YSkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaAppbmRleCBiZGQ5ZTU2
Njk0OTQzOWVlYjQ0OGJlMWY1ZTVmNmEyNzIwMDJiODgwLi41NWY1YTZkNTMxZTFhNjAxZGRiYWI2
MzZjNTZhYzI1MTRjYzhlYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5Qm94RmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rp
c3BsYXlCb3hGYWN0b3J5LmgKQEAgLTM5LDcgKzM5LDYgQEAgY2xhc3MgQm94OwogY2xhc3MgQm94
R2VvbWV0cnk7CiBjbGFzcyBDb250YWluZXJCb3g7CiBjbGFzcyBJbmxpbmVMaW5lR2VvbWV0cnk7
Ci1jbGFzcyBSZXBsYWNlZEJveDsKIHN0cnVjdCBMaW5lUnVuOwogfQogCkBAIC00OCw2ICs0Nyw3
IEBAIG5hbWVzcGFjZSBEaXNwbGF5IHsKIGNsYXNzIEJveDsKIGNsYXNzIEJveERlY29yYXRpb25E
YXRhOwogY2xhc3MgQm94TW9kZWxCb3g7CitjbGFzcyBDb250YWluZXJCb3g7CiBjbGFzcyBTdHls
ZTsKIAogZW51bSBjbGFzcyBSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uIDogdWludDhfdCB7CkBA
IC01NSw2ICs1NSwxMSBAQCBlbnVtIGNsYXNzIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24gOiB1
aW50OF90IHsKICAgICBCb2R5VG9Sb290LAogfTsKIAorc3RydWN0IENvbnRhaW5pbmdCbG9ja0Nv
bnRleHQgeworICAgIGNvbnN0IERpc3BsYXk6OkNvbnRhaW5lckJveCYgYm94OworICAgIExheW91
dFNpemUgb2Zmc2V0RnJvbVJvb3Q7Cit9OworCiBjbGFzcyBCb3hGYWN0b3J5IHsKIHB1YmxpYzoK
ICAgICBleHBsaWNpdCBCb3hGYWN0b3J5KGZsb2F0IHBpeGVsU25hcHBpbmdGYWN0b3IpOwpAQCAt
NjIsMTggKzY3LDE4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUm9vdEJhY2tncm91bmRQcm9wYWdh
dGlvbiBkZXRlcm1pbmVSb290QmFja2dyb3VuZFByb3BhZ2F0aW9uKGNvbnN0IExheW91dDo6Q29u
dGFpbmVyQm94JiByb290TGF5b3V0Qm94KTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRp
c3BsYXlCb3hGb3JSb290Qm94KGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiwgY29uc3QgTGF5
b3V0OjpCb3hHZW9tZXRyeSYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0OwotICAg
IHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JCb2R5Qm94KGNvbnN0IExheW91dDo6
Qm94JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRp
b24sIExheW91dFNpemUgb2Zmc2V0RnJvbVJvb3QpIGNvbnN0OwotICAgIHN0ZDo6dW5pcXVlX3B0
cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBM
YXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3Q7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckJvZHlCb3goY29uc3QgTGF5b3V0
OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2Nr
Q29udGV4dCYsIFJvb3RCYWNrZ3JvdW5kUHJvcGFnYXRpb24pIGNvbnN0OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYp
IGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvclRleHRSdW4o
Y29uc3QgTGF5b3V0OjpMaW5lUnVuJiwgY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lR2VvbWV0cnkm
LCBMYXlvdXRTaXplIG9mZnNldEZyb21Sb290KSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
Qm94PiBkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OkxpbmVSdW4mLCBjb25zdCBM
YXlvdXQ6OklubGluZUxpbmVHZW9tZXRyeSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQm
KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94
Rm9yTGF5b3V0Qm94KGNvbnN0IExheW91dDo6Qm94JiwgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
Rm9yQmFja2dyb3VuZCwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIExheW91dFNpemUgb2Zm
c2V0RnJvbVJvb3QsIFN0eWxlJiYpIGNvbnN0OworICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJv
eEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZUZvckJhY2tncm91bmQsIFN0eWxlJiYpIGNvbnN0OwogCi0gICAgdm9pZCBzZXR1
cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3Q7Ci0gICAg
dm9pZCBzZXR1cEJveE1vZGVsQm94KEJveE1vZGVsQm94JiwgY29uc3QgTGF5b3V0OjpCb3gmLCBj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdl
b21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9tUm9vdCkgY29uc3Q7CisgICAgdm9pZCBzZXR1
cEJveEdlb21ldHJ5KEJveE1vZGVsQm94JiwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlv
dXQ6OkJveEdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0Owor
ICAgIHZvaWQgc2V0dXBCb3hNb2RlbEJveChCb3hNb2RlbEJveCYsIGNvbnN0IExheW91dDo6Qm94
JiwgY29uc3QgTGF5b3V0OjpCb3hHZW9tZXRyeSYsIGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRl
eHQmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kKSBjb25zdDsKIAotICAg
IHN0ZDo6dW5pcXVlX3B0cjxCb3hEZWNvcmF0aW9uRGF0YT4gY29uc3RydWN0Qm94RGVjb3JhdGlv
bkRhdGEoY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNr
Z3JvdW5kLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgTGF5b3V0U2l6ZSBvZmZzZXRGcm9t
Um9vdCkgY29uc3Q7CisgICAgc3RkOjp1bmlxdWVfcHRyPEJveERlY29yYXRpb25EYXRhPiBjb25z
dHJ1Y3RCb3hEZWNvcmF0aW9uRGF0YShjb25zdCBMYXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6
Qm94R2VvbWV0cnkmLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGVGb3JCYWNrZ3JvdW5kLCBMYXlv
dXRTaXplIG9mZnNldEZyb21Sb290KSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBMYXlvdXQ6
OkNvbnRhaW5lckJveCogZG9jdW1lbnRFbGVtZW50Qm94RnJvbVJvb3RCb3goY29uc3QgTGF5b3V0
OjpDb250YWluZXJCb3gmIHJvb3RMYXlvdXRCb3gpOwogICAgIHN0YXRpYyBjb25zdCBMYXlvdXQ6
OkJveCogYm9keUJveEZyb21Sb290Qm94KGNvbnN0IExheW91dDo6Q29udGFpbmVyQm94JiByb290
TGF5b3V0Qm94KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVl
L0xheW91dEJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guY3BwCmluZGV4IDZmMmYyMDM4MzRjZjhlNDE3NGZmMjgxYTliNDQ1YmFkZDEyMThjMGQuLjU1
NTc2NWUyYjc1NGVkYzZjZDYwZDU1MDNkYzRhNDlkYzZlY2U2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0Qm94LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBA
IGNvbnN0IENvbnRhaW5lckJveCYgQm94Ojpjb250YWluaW5nQmxvY2soKSBjb25zdAogICAgIGlm
ICghaXNQb3NpdGlvbmVkKCkgfHwgaXNJbkZsb3dQb3NpdGlvbmVkKCkpIHsKICAgICAgICAgYXV0
byogYW5jZXN0b3IgPSAmcGFyZW50KCk7CiAgICAgICAgIGZvciAoOyAhaXM8SW5pdGlhbENvbnRh
aW5pbmdCbG9jaz4oKmFuY2VzdG9yKTsgYW5jZXN0b3IgPSAmYW5jZXN0b3ItPnBhcmVudCgpKSB7
Ci0gICAgICAgICAgICBpZiAoYW5jZXN0b3ItPmlzQmxvY2tDb250YWluZXIoKSB8fCBhbmNlc3Rv
ci0+ZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgaWYgKGFuY2Vz
dG9yLT5pc0NvbnRhaW5pbmdCbG9ja0ZvckluRmxvdygpKQogICAgICAgICAgICAgICAgIHJldHVy
biAqYW5jZXN0b3I7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICphbmNlc3RvcjsKQEAgLTIx
Nyw3ICsyMTcsNyBAQCBjb25zdCBDb250YWluZXJCb3gmIEJveDo6Y29udGFpbmluZ0Jsb2NrKCkg
Y29uc3QKICAgICBpZiAoaXNGaXhlZFBvc2l0aW9uZWQoKSkgewogICAgICAgICBhdXRvKiBhbmNl
c3RvciA9ICZwYXJlbnQoKTsKICAgICAgICAgZm9yICg7ICFpczxJbml0aWFsQ29udGFpbmluZ0Js
b2NrPigqYW5jZXN0b3IpOyBhbmNlc3RvciA9ICZhbmNlc3Rvci0+cGFyZW50KCkpIHsKLSAgICAg
ICAgICAgIGlmIChhbmNlc3Rvci0+c3R5bGUoKS5oYXNUcmFuc2Zvcm0oKSkKKyAgICAgICAgICAg
IGlmIChhbmNlc3Rvci0+aXNDb250YWluaW5nQmxvY2tGb3JGaXhlZFBvc2l0aW9uKCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICphbmNlc3RvcjsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
KmFuY2VzdG9yOwpAQCAtMjI2LDcgKzIyNiw3IEBAIGNvbnN0IENvbnRhaW5lckJveCYgQm94Ojpj
b250YWluaW5nQmxvY2soKSBjb25zdAogICAgIGlmIChpc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkg
ewogICAgICAgICBhdXRvKiBhbmNlc3RvciA9ICZwYXJlbnQoKTsKICAgICAgICAgZm9yICg7ICFp
czxJbml0aWFsQ29udGFpbmluZ0Jsb2NrPigqYW5jZXN0b3IpOyBhbmNlc3RvciA9ICZhbmNlc3Rv
ci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChhbmNlc3Rvci0+aXNQb3NpdGlvbmVkKCkg
fHwgYW5jZXN0b3ItPnN0eWxlKCkuaGFzVHJhbnNmb3JtKCkpCisgICAgICAgICAgICBpZiAoYW5j
ZXN0b3ItPmlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRpb24oKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gKmFuY2VzdG9yOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqYW5j
ZXN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlv
dXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCmlu
ZGV4IGI1NTYxYWE5OTk5YzQ2MTMzYjIwNzE4YjRlOGQ0ZWM1MWY0ZjliMWYuLjU1OGEwZjc4Yzgz
MjRiMzZmYmIzNGZlYTNjZDc0OTRlOGJkNjYwOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC05Nyw2ICs5NywxMCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QoKSBjb25zdDsKICAgICBj
b25zdCBJbml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29u
c3Q7CiAKKyAgICBib29sIGlzQ29udGFpbmluZ0Jsb2NrRm9ySW5GbG93KCkgY29uc3Q7CisgICAg
Ym9vbCBpc0NvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oKSBjb25zdDsKKyAgICBib29s
IGlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRpb24oKSBjb25zdDsKKwogICAgIGJv
b2wgaXNJbkZvcm1hdHRpbmdDb250ZXh0T2YoY29uc3QgQ29udGFpbmVyQm94JikgY29uc3Q7CiAK
ICAgICBib29sIGlzQW5vbnltb3VzKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fub255bW91czsgfQpA
QCAtMjE0LDYgKzIxOCwyMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Fub255bW91cyA6IDE7
CiB9OwogCitpbmxpbmUgYm9vbCBCb3g6OmlzQ29udGFpbmluZ0Jsb2NrRm9ySW5GbG93KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gaXNCbG9ja0NvbnRhaW5lcigpIHx8IGVzdGFibGlzaGVzRm9ybWF0
dGluZ0NvbnRleHQoKTsKK30KKworaW5saW5lIGJvb2wgQm94Ojppc0NvbnRhaW5pbmdCbG9ja0Zv
ckZpeGVkUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBpc0luaXRpYWxDb250YWluaW5n
QmxvY2soKSB8fCBzdHlsZSgpLmhhc1RyYW5zZm9ybSgpOworfQorCitpbmxpbmUgYm9vbCBCb3g6
OmlzQ29udGFpbmluZ0Jsb2NrRm9yT3V0T2ZGbG93UG9zaXRpb24oKSBjb25zdAoreworICAgIHJl
dHVybiBpc0luaXRpYWxDb250YWluaW5nQmxvY2soKSB8fCBpc1Bvc2l0aW9uZWQoKSB8fCBzdHls
ZSgpLmhhc1RyYW5zZm9ybSgpOworfQorCiB9CiB9CiAK
</data>
<flag name="review"
          id="431987"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="432002"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>