<?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>234519</bug_id>
          
          <creation_ts>2021-12-20 11:50:05 -0800</creation_ts>
          <short_desc>[LFC][IFC] Decouple LineBox and InlineDisplay:Line construction</short_desc>
          <delta_ts>2021-12-20 16:35:17 -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>
          
          
          <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>1825666</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-12-20 11:50:05 -0800</bug_when>
    <thetext>While LineBox is all logical, InlineDisplay:Line is physical.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825667</commentid>
    <comment_count>1</comment_count>
      <attachid>447616</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-12-20 11:52:37 -0800</bug_when>
    <thetext>Created attachment 447616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825672</commentid>
    <comment_count>2</comment_count>
      <attachid>447616</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2021-12-20 11:58:43 -0800</bug_when>
    <thetext>Comment on attachment 447616
Patch

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

&gt; Source/WebCore/layout/formattingContexts/inline/display/InlineDisplayLineBuilder.h:39
&gt; +class InlineDisplayLineBuilder {

Builder is the official pattern of 2021.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825811</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-20 16:34:41 -0800</bug_when>
    <thetext>Committed r287287 (245439@main): &lt;https://commits.webkit.org/245439@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447616.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825812</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-20 16:35:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86745474&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447616</attachid>
            <date>2021-12-20 11:52:37 -0800</date>
            <delta_ts>2021-12-20 16:34:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234519-20211220115236.patch</filename>
            <type>text/plain</type>
            <size>27616</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTBlMWZkZTZmNDZlMTY4
YzVjMDE3NjBhNzU0NzAxNTYxNGU0ZjYzYS4uZjA3MTU2MWM4ZmIwNTIxM2IxNjUxMjM1MzNmNmUz
YzA0ODU2NDAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTEyLTIwICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIERlY291cGxl
IExpbmVCb3ggYW5kIElubGluZURpc3BsYXk6TGluZSBjb25zdHJ1Y3Rpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDUxOQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExheW91dDo6TGluZUJveCBoYXMg
bG9naWNhbCBnZW9tZXRyeSB3aGlsZSBJbmxpbmVEaXNwbGF5OjpMaW5lIGlzIGFsbCBwaHlzaWNh
bC4KKyAgICAgICAgVGhpcyBpcyBhbHNvIGluIHByZXBhcmF0aW9uIGZvciBzdXBwb3J0aW5nIFJU
TCBsaW5lcy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlR2VvbWV0cnlGb3JMaW5l
Q29udGVudCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGV2ZWxCb3guaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGlu
ZS9JbmxpbmVMaW5lQm94QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCb3hCdWlsZGVyOjpidWlsZCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI6OklubGluZURpc3BsYXlMaW5lQnVpbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmguCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Oklu
bGluZURpc3BsYXlMaW5lQnVpbGRlcjo6Zm9ybWF0dGluZ0NvbnRleHQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6OnJvb3QgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXI6Omxh
eW91dFN0YXRlIGNvbnN0KToKKwogMjAyMS0xMi0yMCAgQWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIGRpc3BsYXkgYnVpbGRlciBmaWxlcyB1
bmRlciAvZGlzcGxheSBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzQzZjU5OTM2YTQ1YTY0
MmM2MGFmMzVlMjlmNWZkMjhiYWZiYjliMS4uNDk1MzBmNjI0YjAxMGY3NmE0ODMyNGJmZGQ5OWMy
ZDI2ODhhNzc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE1NjgsNiArMTU2OCw3IEBAIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCdWlsZGVyLmNwcAogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveFZlcnRpY2FsQWxpZ25lci5jcHAK
IGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZVRleHRJdGVtLmNwcAogbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5Q29udGVu
dEJ1aWxkZXIuY3BwCitsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAKIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5s
aW5lL2ludmFsaWRhdGlvbi9JbmxpbmVJbnZhbGlkYXRpb24uY3BwCiBsYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS90ZXh0L1RleHRVdGlsLmNwcAogbGF5b3V0L2ludGVncmF0aW9uL0lu
bGluZUl0ZXJhdG9yQm94LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmYTY4Mjg5MjExZDc2Y2NmMWUyOGRlNWJjNzU1ZmVi
ZWZhNmRlOGMuLmZjNGU4ZGUwNTE1YTNlN2RlMDgzZmQ1NzY3ZDA4OWZhN2MyNzk0OTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTIyMDYsNiArMjIwNiw3IEBACiAJCTZGNDBEQTgyMjUxMzAzM0EwMEVDMDRCNyAvKiBJbmxpbmVS
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RjQw
REE4MTI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZGNDlDM0U3MjY0NzlCM0MwMDUxOTUzRCAv
KiBUYWJsZUZvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDZGNDlDM0U2MjY0NzlCM0IwMDUxOTUzRCAvKiBUYWJsZUZvcm1hdHRp
bmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk2RjU2QjQ0NzI2NDc5RTYyMDBBQUUyNTcgLyogRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY1NkI0NDYyNjQ3OUU2
MTAwQUFFMjU3IC8qIEZvcm1hdHRpbmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQk2RjYwRTVBQTI3NzEwRjM5MDA1QzE1QjkgLyogSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2RjYwRTVBOTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExheW91dEluaXRpYWxDb250YWluaW5n
QmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZG
NjM4M0Y0MjQyN0FGNDkwMERBQkE1MyAvKiBMYXlvdXRJbml0aWFsQ29udGFpbmluZ0Jsb2NrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkY2REYz
NkYyNjQ3MjJFQTAwOTNFODM0IC8qIEJsb2NrTWFyZ2luQ29sbGFwc2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGNkRGMzZFMjY0NzIyRUEwMDkzRTgz
NCAvKiBCbG9ja01hcmdpbkNvbGxhcHNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkY2RUU3NDMyNkQ0NEVFMzAwMzc0Q0RBIC8qIElubGluZUxp
bmVCb3hWZXJ0aWNhbEFsaWduZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDZGNkVFNzQxMjZENDRFRTIwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVy
dGljYWxBbGlnbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTEwODg0LDYgKzEwODg1LDggQEAKIAkJNkY0QTVCRDUyMkY5RjE2QjAwQTgwRjI1
IC8qIExheW91dFBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheW91dFBoYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY1NkI0NDYyNjQ3OUU2MTAwQUFFMjU3IC8q
IEZvcm1hdHRpbmdRdWlya3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9y
bWF0dGluZ1F1aXJrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2RjVCN0VBQTIz
MDBBNzlFMDA2N0Q5QzMgLyogVGFibGVHcmlkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxl
R3JpZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGNjBFNUE3Mjc3MTBGMkYw
MDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkY2MEU1QTkyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY2MzgzRjQyNDI3QUY0OTAw
REFCQTUzIC8qIExheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk2RjY2MzhENDI0OUUyNjhCMDAxOTI1RkMgLyogVGFibGVX
cmFwcGVyQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRhYmxl
V3JhcHBlckJsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGNjlBNzk5MjRENkZBQjgwMEU2Qjg1RCAvKiBJbmxpbmVMaW5lQm94LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IElubGluZUxpbmVCb3guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTkyNTQsNiArMTkyNTcsOCBAQAogCQkxMUExRTZGQjI2RkJCNkNFMDA0MzVEMzYg
LyogZGlzcGxheSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNkY2MEU1QTkyNzcxMEYzOTAwNUMxNUI5IC8qIElubGluZURpc3BsYXlMaW5lQnVpbGRlci5o
ICovLAorCQkJCTZGNjBFNUE3Mjc3MTBGMkYwMDVDMTVCOSAvKiBJbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXIuY3BwICovLAogCQkJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVEaXNw
bGF5Qm94LmggKi8sCiAJCQkJMTE1MTNEMDAyNkQ5ODFERDAwNEQzRkFBIC8qIElubGluZURpc3Bs
YXlDb250ZW50QnVpbGRlci5jcHAgKi8sCiAJCQkJMTE1MTNEMDIyNkQ5ODFFNzAwNEQzRkFBIC8q
IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5oICovLApAQCAtMjA3NTAsOCArMjA3NTUsOCBA
QAogCQkJCTUxMEUyRjJDMjc2QkUwQzMwMDgwOTMzMyAvKiBOb3RpZmljYXRpb25FdmVudC5jcHAg
Ki8sCiAJCQkJNTEwRTJGMjQyNzZCQjRFQzAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50Lmgg
Ki8sCiAJCQkJNTEwRTJGMjIyNzZCQTlFODAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbkV2ZW50Lmlk
bCAqLywKLQkJCQk1MUUzQUYwQTI3NkIwNUI3MDA5QjQyOUQgLyogTm90aWZpY2F0aW9uT3B0aW9u
cy5pZGwgKi8sCiAJCQkJNTEwRTJGMjYyNzZCQzE5RjAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbk9w
dGlvbnMuaCAqLywKKwkJCQk1MUUzQUYwQTI3NkIwNUI3MDA5QjQyOUQgLyogTm90aWZpY2F0aW9u
T3B0aW9ucy5pZGwgKi8sCiAJCQkJN0NDMkRERjgxRUM5NDE1QTAwMjdCNzc0IC8qIE5vdGlmaWNh
dGlvblBlcm1pc3Npb24uaCAqLywKIAkJCQk3Q0MyRERGQTFFQzk0MTVBMDAyN0I3NzQgLyogTm90
aWZpY2F0aW9uUGVybWlzc2lvbi5pZGwgKi8sCiAJCQkJMzFFQzFEQUMxNEZGMjZFQTAwQzk0NjYy
IC8qIE5vdGlmaWNhdGlvblBlcm1pc3Npb25DYWxsYmFjay5oICovLApAQCAtMzM1OTIsNyArMzM1
OTcsNiBAQAogCQkJCUNEOEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRDNDRTBGRTI0MDFBQUQ5MDA0QkEwMUQgLyogQ0RNTWVkaWFDYXBh
YmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTBGRjI0MDFBQURBMDA0QkEwMUQgLyog
Q0RNTWVzc2FnZVR5cGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMEUyRjMzMjc2QkY2ODUwMDgw
OTMzMyAvKiBKU05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Qz
Q0UxMDAyNDAxQUFEQTAwNEJBMDFEIC8qIENETVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNEMzE4NjIzMTk5RjFFMkEwMDMwQTBGNyAvKiBDRE1Qcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpD
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDNDRTEwMTI0MDFBQURBMDA0QkEwMUQgLyogQ0RNUHJv
eHkuaCBpbiBIZWFkZXJzICovLApAQCAtMzQ1MzcsNyArMzQ1NDEsNiBAQAogCQkJCUNEQTU5NTkz
MjE0NkRFQzMwMEE4NDE4NSAvKiBIRVZDVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
REE1OTU5ODIxNDZERjc4MDBBODQxODUgLyogSEVWQ1V0aWxpdGllc0NvY29hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlGNTVCM0RDMDEyNTFGMTJEMDAzRUYyNjkgLyogSGlkZGVuSW5wdXRUeXBlLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk1MTBFMkYyNzI3NkJDMTlGMDA4MDkzMzMgLyogTm90aWZpY2F0
aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQTkxRUIyNEQwMDRDODAwQkZEODlD
IC8qIEhJRERldmljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQTkxRUEyNEQwMDRDMzAwQkZE
ODlDIC8qIEhJREVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNUJFMTlDMUQ1NEY2QzEw
MEREN0M2OCAvKiBISURHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKQEAgLTM0NjEzLDcgKzM0NjE2
LDYgQEAKIAkJCQlBODEzNjlDQzA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTElucHV0RWxlbWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM1RDJENzgxRjVGMUZCRDAwMTQxREVEIC8qIEhUTUxJbnB1
dEVsZW1lbnRFbnRyaWVzQVBJLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODQ5QjEyMzcwQTRC
MDAwQzYxNjEgLyogSFRNTElucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTBFMkYy
NTI3NkJCNEVDMDA4MDkzMzMgLyogTm90aWZpY2F0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzMzA5REU2MDk5RTY0OTIwMDU2RTU4MSAvKiBIVE1MSW50ZXJjaGFuZ2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE4MTM2OUU0MDk3Mzc0RjYwMEQ3NDQ2MyAvKiBIVE1MS2V5Z2VuRWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxMzY5RTIwOTczNzRGNjAwRDc0NDYzIC8qIEhUTUxM
YWJlbEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMzUyNDAsNyArMzUyNDIsNiBAQAogCQkJ
CTFDMjRFRUE5MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlGREExNUVBQzEyQjAzRUUxMDAzQTU4M0EgLyogSlNHYWluTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE4RjUwMDIxOTRDQUMzQTAwODFCQUFFIC8qIEpTR2FtZXBhZC5oIGluIEhl
YWRlcnMgKi8sCi0JCQkJNTEwRTJGMzUyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4RjUwMDQxOTRDQUMzQTAwODFCQUFFIC8q
IEpTR2FtZXBhZEJ1dHRvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkU4MERBNjQwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUZFODBEQTY2MEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTM1NDEy
LDYgKzM1NDEzLDkgQEAKIAkJCQlCQ0Q5QzJDMzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQUQyMEIxOEQxOEU5RDIzNzAwNUE4MDgzIC8qIEpTTm9k
ZUxpc3RDdXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQ0E0MTAxNzlBRDcwMDNCNDdF
MSAvKiBKU05vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEwRTJGMzMyNzZCRjY4
NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9uRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTBFMkYyQjI3NkJDRkU4MDA4MDkzMzMgLyogSlNOb3RpZmljYXRpb25FdmVudC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTEwRTJGMzUyNzZCRjY4NTAwODA5MzMzIC8qIEpTTm90aWZpY2F0aW9u
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NDMkRFMDExRUM5NUE0NDAwMjdCNzc0IC8q
IEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFFQzFFMjkx
NEZGNjBFRTAwQzk0NjYyIC8qIEpTTm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKIAkJCQk3RTQ2RjZGQjE2MjdBMkNBMDAwNjIyMjMgLyogSlNPRVNFbGVtZW50
SW5kZXhVaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM2MTgwLDcgKzM2MTg0LDYgQEAKIAkJCQlF
NTk2REQyOTI1MTkwM0QyMDBDMjc1QTcgLyogTmF2aWdhdG9yQ29udGFjdHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY0MDM0RkFFMjc1RUFENzYwMDNBODFGOCAvKiBOYXZpZ2F0b3JDb29raWVDb25z
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzJEM0U1NzIxNjU3OEFFMDBDNUUwMjEgLyogTmF2
aWdhdG9yQ3JlZGVudGlhbHMuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxMEUyRjJCMjc2QkNGRTgw
MDgwOTMzMyAvKiBKU05vdGlmaWNhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzEx
NDYwNDE0RUYwMDlBMDA2NzRGRDkgLyogTmF2aWdhdG9yR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZCNTA3QTI0MjM0QkYzNDEwMEJFN0M2MiAvKiBOYXZpZ2F0b3JJc0xvZ2dlZElu
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RUE3MjVENjFBQ0FCRDU3MDBFQUQxN0IgLyogTmF2aWdh
dG9yTWVkaWFEZXZpY2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTM2MjE3LDYgKzM2MjIwLDggQEAK
IAkJCQkzMTI4Q0E2QjE0NzMzMTYzMDA3NEM3MkEgLyogTm90aWZpY2F0aW9uQ29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTExMjNFMkYyNzY5NDBDQTAwRjlENDFCIC8qIE5vdGlmaWNh
dGlvbkRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDQzJERTAzMUVDQTA0QTUwMDI3Qjc3NCAv
KiBOb3RpZmljYXRpb25EaXJlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMEUyRjI1Mjc2
QkI0RUMwMDgwOTMzMyAvKiBOb3RpZmljYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTEwRTJGMjcyNzZCQzE5RjAwODA5MzMzIC8qIE5vdGlmaWNhdGlvbk9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDQzJEREZCMUVDOTQxNUEwMDI3Qjc3NCAvKiBOb3RpZmljYXRpb25QZXJt
aXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZFNkRGQTE1MDA0QzJBMDAwNEVCQzQgLyog
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OEVC
MUY5NTEzMTNGRTA1MDBEMEUxRUEgLyogTm90SW1wbGVtZW50ZWQuaCBpbiBIZWFkZXJzICovLApA
QCAtMzc2NjEsNiArMzc2NjYsNyBAQAogCQkJCUJFRjI5RUVDMTcxNUREMDkwMEM0QjRDOSAvKiBW
aWRlb1RyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0QzMzZGNjQxN0ZBMEE0RDAw
REREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDMz
NkY2ODE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk2RjYwRTVBQTI3NzEwRjM5MDA1QzE1QjkgLyogSW5saW5lRGlzcGxheUxp
bmVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDFGOUIxNDI3MDIzNUY3MDA2MTdFQjYg
LyogVmlkZW9UcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEI1QTQz
MTgwRDE0OUEwMDhCOEU2NSAvKiBWaWRlb1RyYWNrUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDcwRTgxRDExQkYyNzY1NjAwMUZEQTQ4IC8qIFZpZGVvVHJh
Y2tQcml2YXRlTWVkaWFTdHJlYW0uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IDllMzA3MjIxZmZhODZlMzIz
ZTQxZGI5ZGMwNTRlOWFiNjU5YTM2YjYuLjUyZTIwZGIwMTgyMzk2NThiZTAzZWMzMzRmZTY2ZDRk
MDZhM2U0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbmxpbmVEYW1hZ2UuaCIKICNp
bmNsdWRlICJJbmxpbmVEaXNwbGF5Qm94LmgiCiAjaW5jbHVkZSAiSW5saW5lRGlzcGxheUNvbnRl
bnRCdWlsZGVyLmgiCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUxpbmVCdWlsZGVyLmgiCiAjaW5j
bHVkZSAiSW5saW5lRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiSW5saW5lSXRlbXNCdWls
ZGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lTGluZUJveC5oIgpAQCAtNTUxLDE1ICs1NTIsMTcgQEAg
SW5saW5lUmVjdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUdlb21ldHJ5Rm9yTGlu
ZUNvbnRlbnQoY29uc3QgTGluZUJ1aWwKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlz
LT5mb3JtYXR0aW5nU3RhdGUoKTsKICAgICBhdXRvIGN1cnJlbnRMaW5lSW5kZXggPSBmb3JtYXR0
aW5nU3RhdGUubGluZXMoKS5zaXplKCk7CiAKLSAgICBhdXRvIGxpbmVBbmRMaW5lQm94ID0gTGlu
ZUJveEJ1aWxkZXIoKnRoaXMpLmJ1aWxkKGxpbmVDb250ZW50LCBjdXJyZW50TGluZUluZGV4KTsK
LSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsUmVjdCA9IGxpbmVBbmRMaW5lQm94LmxpbmUubGluZUJv
eFJlY3QoKTsKKyAgICBhdXRvIGxpbmVCb3hBbmRIZWlnaHQgPSBMaW5lQm94QnVpbGRlcigqdGhp
cykuYnVpbGQobGluZUNvbnRlbnQsIGN1cnJlbnRMaW5lSW5kZXgpOworCisgICAgYXV0byBkaXNw
bGF5TGluZSA9IElubGluZURpc3BsYXlMaW5lQnVpbGRlcigqdGhpcykuYnVpbGQobGluZUNvbnRl
bnQsIGxpbmVCb3hBbmRIZWlnaHQubGluZUJveCwgbGluZUJveEFuZEhlaWdodC5saW5lQm94TG9n
aWNhbEhlaWdodCwgY3VycmVudExpbmVJbmRleCk7CisgICAgYXV0byBkaXNwbGF5TGluZUJveFJl
Y3QgPSBkaXNwbGF5TGluZS5saW5lQm94UmVjdCgpOwogCiAgICAgYXV0byBpbmxpbmVDb250ZW50
QnVpbGRlciA9IElubGluZURpc3BsYXlDb250ZW50QnVpbGRlciB7IHJvb3QoKSwgZm9ybWF0dGlu
Z1N0YXRlIH07Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFkZEJveGVzKGlubGluZUNvbnRlbnRCdWls
ZGVyLmJ1aWxkKGxpbmVDb250ZW50LCBsaW5lQW5kTGluZUJveC5saW5lQm94LCBsaW5lQm94TG9n
aWNhbFJlY3QsIGN1cnJlbnRMaW5lSW5kZXgpKTsKLSAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGlu
ZUJveChXVEZNb3ZlKGxpbmVBbmRMaW5lQm94LmxpbmVCb3gpKTsKLSAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkTGluZShsaW5lQW5kTGluZUJveC5saW5lKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRk
Qm94ZXMoaW5saW5lQ29udGVudEJ1aWxkZXIuYnVpbGQobGluZUNvbnRlbnQsIGxpbmVCb3hBbmRI
ZWlnaHQubGluZUJveCwgZGlzcGxheUxpbmVCb3hSZWN0LCBjdXJyZW50TGluZUluZGV4KSk7Cisg
ICAgZm9ybWF0dGluZ1N0YXRlLmFkZExpbmVCb3goV1RGTW92ZShsaW5lQm94QW5kSGVpZ2h0Lmxp
bmVCb3gpKTsKKyAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZShkaXNwbGF5TGluZSk7CiAKLSAg
ICByZXR1cm4gbGluZUJveExvZ2ljYWxSZWN0OworICAgIHJldHVybiBkaXNwbGF5TGluZUJveFJl
Y3Q7CiB9CiAKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmludmFsaWRhdGVGb3JtYXR0
aW5nU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxldmVsQm94LmgKaW5kZXggMDJmYzE1MzE4
ZDQxMjc1OGFiNTgzZmIwNzc0YmJhYTk4MWI4MTUyNS4uNTI5YTIxOGU1MmQ1MTA4MTJkOGVlOTdl
NWNmMWEzYjQ4NGMwNTEwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGV2ZWxCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMZXZlbEJveC5oCkBAIC0x
MDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIElubGluZUxldmVsQm94KGNvbnN0
IEJveCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwg
SW5saW5lTGF5b3V0U2l6ZSwgVHlwZSwgT3B0aW9uU2V0PFBvc2l0aW9uV2l0aGluTGF5b3V0Qm94
PiA9IHsgUG9zaXRpb25XaXRoaW5MYXlvdXRCb3g6OkZpcnN0LCBQb3NpdGlvbldpdGhpbkxheW91
dEJveDo6TGFzdCB9KTsKIAorICAgIGZyaWVuZCBjbGFzcyBJbmxpbmVEaXNwbGF5TGluZUJ1aWxk
ZXI7CiAgICAgZnJpZW5kIGNsYXNzIExpbmVCb3g7CiAgICAgZnJpZW5kIGNsYXNzIExpbmVCb3hC
dWlsZGVyOwogICAgIGZyaWVuZCBjbGFzcyBMaW5lQm94VmVydGljYWxBbGlnbmVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZUJveEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIuY3BwCmluZGV4IDAwMDgzOTE0MDcy
YmIyZTAzYzMxZWI5YzhkOTU4M2RkMTVhYTg5MGIuLjAwZTA2ZTllOGZhZTk0N2VhM2U4MTdmZDY0
YzQwMWE2MThjZWE2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVCb3hCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVp
bGRlci5jcHAKQEAgLTEwMyw1OSArMTAzLDEzIEBAIExpbmVCb3hCdWlsZGVyOjpMaW5lQm94QnVp
bGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgaW5saW5lRm9ybWF0dGluZ0NvCiB7
CiB9CiAKLUxpbmVCb3hCdWlsZGVyOjpMaW5lQW5kTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVp
bGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCwgc2l6ZV90IGxp
bmVJbmRleCkKK0xpbmVCb3hCdWlsZGVyOjpMaW5lQm94QW5kSGVpZ2h0IExpbmVCb3hCdWlsZGVy
OjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBzaXpl
X3QgbGluZUluZGV4KQogewogICAgIGF1dG8mIHJvb3RTdHlsZSA9IGxpbmVJbmRleCA/IHJvb3RC
b3goKS5maXJzdExpbmVTdHlsZSgpIDogcm9vdEJveCgpLnN0eWxlKCk7CiAgICAgYXV0byByb290
SW5saW5lQm94QWxpZ25tZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zm
c2V0KHJvb3RTdHlsZS50ZXh0QWxpZ24oKSwgbGluZUNvbnRlbnQsIHJvb3RTdHlsZS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCkpLnZhbHVlX29yKElubGluZUxheW91dFVuaXQgeyB9KTsKICAgICBh
dXRvIGxpbmVCb3ggPSBMaW5lQm94IHsgcm9vdEJveCgpLCByb290SW5saW5lQm94QWxpZ25tZW50
T2Zmc2V0LCBsaW5lQ29udGVudC5jb250ZW50TG9naWNhbFdpZHRoLCBsaW5lSW5kZXgsIGxpbmVD
b250ZW50Lm5vblNwYW5uaW5nSW5saW5lTGV2ZWxCb3hDb3VudCB9OwotCiAgICAgYXV0byBsaW5l
Qm94TG9naWNhbEhlaWdodCA9IGNvbnN0cnVjdEFuZEFsaWduSW5saW5lTGV2ZWxCb3hlcyhsaW5l
Qm94LCBsaW5lQ29udGVudC5ydW5zLCBsaW5lSW5kZXgpOwotCi0gICAgYXV0byBsaW5lID0gWyZd
IHsKLSAgICAgICAgYXV0byBwaHlzaWNhbExlZnQgPSBsaW5lQ29udGVudC5saW5lTG9naWNhbFRv
cExlZnQueCgpOwotICAgICAgICBpZiAoIXJvb3RTdHlsZS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkpIHsKLSAgICAgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC8j
dGV4dC1pbmRlbnQtcHJvcGVydHkKLSAgICAgICAgICAgIC8vIFNpbmNlIHRleHQtaW5kZW50IG9u
bHkgaW5pdGlhdGVzIG1hcmdpbiBzdGFydCwgd2UganVzdCBuZWVkIHRvIHB1bGwgdGhlIGxpbmVi
b3ggYmFjayB0byB0aGUgbGVmdC4KLSAgICAgICAgICAgIHBoeXNpY2FsTGVmdCAtPSBsaW5lQ29u
dGVudC5saW5lTWFyZ2luU3RhcnQ7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IFVzZSBw
aHlzaWNhbCBnZW9tZXRyeSBoZXJlLgotICAgICAgICBhdXRvIGxpbmVCb3hSZWN0ID0gSW5saW5l
UmVjdCB7IGxpbmVDb250ZW50LmxpbmVMb2dpY2FsVG9wTGVmdC55KCksIHBoeXNpY2FsTGVmdCwg
bGluZUNvbnRlbnQubGluZUxvZ2ljYWxXaWR0aCwgbGluZUJveExvZ2ljYWxIZWlnaHQgfTsKLSAg
ICAgICAgYXV0byBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0ID0gbGluZUJveFJlY3Q7Ci0gICAgICAg
IGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94LnJvb3RJbmxpbmVCb3goKTsKLSAgICAgICAg
YXV0byBlbmNsb3NpbmdUb3BBbmRCb3R0b20gPSBJbmxpbmVEaXNwbGF5OjpMaW5lOjpFbmNsb3Np
bmdUb3BBbmRCb3R0b20geyBsaW5lQm94UmVjdC50b3AoKSArIHJvb3RJbmxpbmVCb3gubG9naWNh
bFRvcCgpLCBsaW5lQm94UmVjdC50b3AoKSArIHJvb3RJbmxpbmVCb3gubG9naWNhbEJvdHRvbSgp
IH07Ci0KLSAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9v
dElubGluZUxldmVsQm94ZXMoKSkgewotICAgICAgICAgICAgaWYgKCFpbmxpbmVMZXZlbEJveC5p
c0F0b21pY0lubGluZUxldmVsQm94KCkgJiYgIWlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIGF1dG8mIGxheW91dEJv
eCA9IGlubGluZUxldmVsQm94LmxheW91dEJveCgpOwotICAgICAgICAgICAgYXV0byBib3JkZXJC
b3ggPSBJbmxpbmVSZWN0IHsgfTsKLQotICAgICAgICAgICAgaWYgKGlubGluZUxldmVsQm94Lmlz
QXRvbWljSW5saW5lTGV2ZWxCb3goKSkgewotICAgICAgICAgICAgICAgIGJvcmRlckJveCA9IGxp
bmVCb3gubG9naWNhbEJvcmRlckJveEZvckF0b21pY0lubGluZUxldmVsQm94KGxheW91dEJveCwg
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpKTsKLSAgICAgICAg
ICAgICAgICBib3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hSZWN0LnRvcExlZnQoKSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlG
b3JCb3gobGF5b3V0Qm94KTsKLSAgICAgICAgICAgICAgICBib3JkZXJCb3ggPSBsaW5lQm94Lmxv
Z2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3gobGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7Ci0gICAg
ICAgICAgICAgICAgYm9yZGVyQm94Lm1vdmVCeShsaW5lQm94UmVjdC50b3BMZWZ0KCkpOwotICAg
ICAgICAgICAgICAgIC8vIENvbGxlY3Qgc2Nyb2xsYWJsZSBvdmVyZmxvdyBmcm9tIGlubGluZSBi
b3hlcy4gQWxsIG90aGVyIGlubGluZSBsZXZlbCBib3hlcyAoZS5nIGF0b21pYyBpbmxpbmUgbGV2
ZWwgYm94ZXMpIHN0cmV0Y2ggdGhlIGxpbmUuCi0gICAgICAgICAgICAgICAgYXV0byBoYXNTY3Jv
bGxhYmxlQ29udGVudCA9IFsmXSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEluIHN0YW5kYXJk
cyBtb2RlLCBpbmxpbmUgYm94ZXMgYWx3YXlzIHN0YXJ0IHdpdGggYW4gaW1hZ2luYXJ5IHN0cnV0
LgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5pblN0YW5kYXJkc01v
ZGUoKSB8fCBpbmxpbmVMZXZlbEJveC5oYXNDb250ZW50KCkgfHwgYm94R2VvbWV0cnkuaG9yaXpv
bnRhbEJvcmRlcigpIHx8IChib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpICYmIGJveEdl
b21ldHJ5Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgICAgICBpZiAobGluZUJveC5oYXNDb250ZW50KCkgJiYgaGFzU2Nyb2xsYWJs
ZUNvbnRlbnQoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBFbXB0eSBsaW5lcyAoZS5nLiBj
b250aW51YXRpb24gcHJlL3Bvc3QgYmxvY2tzKSBkb24ndCBleHBlY3Qgc2Nyb2xsYmFyIG92ZXJm
bG93LgotICAgICAgICAgICAgICAgICAgICBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0LmV4cGFuZFRv
Q29udGFpbihib3JkZXJCb3gpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotCi0gICAgICAgICAgICBl
bmNsb3NpbmdUb3BBbmRCb3R0b20udG9wID0gc3RkOjptaW4oZW5jbG9zaW5nVG9wQW5kQm90dG9t
LnRvcCwgYm9yZGVyQm94LnRvcCgpKTsKLSAgICAgICAgICAgIGVuY2xvc2luZ1RvcEFuZEJvdHRv
bS5ib3R0b20gPSBzdGQ6Om1heChlbmNsb3NpbmdUb3BBbmRCb3R0b20uYm90dG9tLCBib3JkZXJC
b3guYm90dG9tKCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBJbmxpbmVEaXNwbGF5OjpM
aW5lIHsgbGluZUJveFJlY3QsIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QsIGVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSwgcm9vdElubGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94LmJhc2Vs
aW5lKCksIHJvb3RJbmxpbmVCb3hBbGlnbm1lbnRPZmZzZXQgKyByb290SW5saW5lQm94LmxvZ2lj
YWxMZWZ0KCksIHJvb3RJbmxpbmVCb3gubG9naWNhbFdpZHRoKCkgfTsKLSAgICB9OwotICAgIHJl
dHVybiB7IGxpbmUoKSwgbGluZUJveCB9OworICAgIHJldHVybiB7IGxpbmVCb3gsIGxpbmVCb3hM
b2dpY2FsSGVpZ2h0IH07CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFkanVzdFZlcnRpY2Fs
R2VvbWV0cnlGb3JJbmxpbmVCb3hXaXRoRmFsbGJhY2tGb250cyhJbmxpbmVMZXZlbEJveCYgaW5s
aW5lQm94LCBjb25zdCBUZXh0VXRpbDo6RmFsbGJhY2tGb250TGlzdCYgZmFsbGJhY2tGb250c0Zv
ckNvbnRlbnQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRlci5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUJveEJ1aWxkZXIu
aAppbmRleCBhYWViMGQ0YTc2MmNlMzRiY2JjYzNhNDEwZmM0YWRmYzMxMjY5YmRmLi5kZmExN2Vk
ZDRmMjUxYTU0NzNkMzhiMzBjMDZkNGFjZTRlMDc5MjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lQm94QnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L0lubGluZUxpbmVCb3hCdWlsZGVyLmgKQEAgLTI3LDkgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShM
QVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCi0jaW5jbHVkZSAiSW5saW5lRGlzcGxheUxpbmUu
aCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIklubGlu
ZUxpbmVCb3guaCIKICNpbmNsdWRlICJJbmxpbmVMaW5lQnVpbGRlci5oIgogI2luY2x1ZGUgIlRl
eHRVdGlsLmgiCiAKQEAgLTQ0LDExICs0MiwxMSBAQCBjbGFzcyBMaW5lQm94QnVpbGRlciB7CiBw
dWJsaWM6CiAgICAgTGluZUJveEJ1aWxkZXIoY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQm
KTsKIAotICAgIHN0cnVjdCBMaW5lQW5kTGluZUJveCB7Ci0gICAgICAgIElubGluZURpc3BsYXk6
OkxpbmUgbGluZTsKKyAgICBzdHJ1Y3QgTGluZUJveEFuZEhlaWdodCB7CiAgICAgICAgIExpbmVC
b3ggbGluZUJveDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbEhlaWdo
dDsKICAgICB9OwotICAgIExpbmVBbmRMaW5lQm94IGJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpM
aW5lQ29udGVudCYsIHNpemVfdCBsaW5lSW5kZXgpOworICAgIExpbmVCb3hBbmRIZWlnaHQgYnVp
bGQoY29uc3QgTGluZUJ1aWxkZXI6OkxpbmVDb250ZW50Jiwgc2l6ZV90IGxpbmVJbmRleCk7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRJbml0aWFsVmVydGljYWxHZW9tZXRyeUZvcklubGluZUJv
eChJbmxpbmVMZXZlbEJveCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1
aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvZGlzcGxheS9JbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZThi
NmVhNzQyMjY3MjhlN2M5YTNkNjc2MzQxMjc3ZmExYWFjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lu
bGluZURpc3BsYXlMaW5lQnVpbGRlci5jcHAKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIu
aCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK0lubGluZURpc3BsYXlMaW5lQnVpbGRlcjo6
SW5saW5lRGlzcGxheUxpbmVCdWlsZGVyKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBp
bmxpbmVGb3JtYXR0aW5nQ29udGV4dCkKKyAgICA6IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQo
aW5saW5lRm9ybWF0dGluZ0NvbnRleHQpCit7Cit9CisKK0lubGluZURpc3BsYXk6OkxpbmUgSW5s
aW5lRGlzcGxheUxpbmVCdWlsZGVyOjpidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRl
bnQmIGxpbmVDb250ZW50LCBjb25zdCBMaW5lQm94JiBsaW5lQm94LCBJbmxpbmVMYXlvdXRVbml0
IGxpbmVCb3hMb2dpY2FsSGVpZ2h0LCBzaXplX3QgbGluZUluZGV4KQoreworICAgIGF1dG8mIHJv
b3RTdHlsZSA9IGxpbmVJbmRleCA/IHJvb3QoKS5maXJzdExpbmVTdHlsZSgpIDogcm9vdCgpLnN0
eWxlKCk7CisgICAgYXV0byBwaHlzaWNhbExlZnQgPSBsaW5lQ29udGVudC5saW5lTG9naWNhbFRv
cExlZnQueCgpOworICAgIGlmICghcm9vdFN0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkg
eworICAgICAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQvI3RleHQtaW5k
ZW50LXByb3BlcnR5CisgICAgICAgIC8vIFNpbmNlIHRleHQtaW5kZW50IG9ubHkgaW5pdGlhdGVz
IG1hcmdpbiBzdGFydCwgd2UganVzdCBuZWVkIHRvIHB1bGwgdGhlIGxpbmVib3ggYmFjayB0byB0
aGUgbGVmdC4KKyAgICAgICAgcGh5c2ljYWxMZWZ0IC09IGxpbmVDb250ZW50LmxpbmVNYXJnaW5T
dGFydDsKKyAgICB9CisgICAgLy8gRklYTUU6IFVzZSBwaHlzaWNhbCBnZW9tZXRyeSBoZXJlLgor
ICAgIGF1dG8gbGluZUJveFJlY3QgPSBJbmxpbmVSZWN0IHsgbGluZUNvbnRlbnQubGluZUxvZ2lj
YWxUb3BMZWZ0LnkoKSwgcGh5c2ljYWxMZWZ0LCBsaW5lQ29udGVudC5saW5lTG9naWNhbFdpZHRo
LCBsaW5lQm94TG9naWNhbEhlaWdodCB9OworICAgIGF1dG8gc2Nyb2xsYWJsZU92ZXJmbG93UmVj
dCA9IGxpbmVCb3hSZWN0OworICAgIGF1dG8mIHJvb3RJbmxpbmVCb3ggPSBsaW5lQm94LnJvb3RJ
bmxpbmVCb3goKTsKKyAgICBhdXRvIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSA9IElubGluZURpc3Bs
YXk6OkxpbmU6OkVuY2xvc2luZ1RvcEFuZEJvdHRvbSB7IGxpbmVCb3hSZWN0LnRvcCgpICsgcm9v
dElubGluZUJveC5sb2dpY2FsVG9wKCksIGxpbmVCb3hSZWN0LnRvcCgpICsgcm9vdElubGluZUJv
eC5sb2dpY2FsQm90dG9tKCkgfTsKKworICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBs
aW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKKyAgICAgICAgaWYgKCFpbmxpbmVM
ZXZlbEJveC5pc0F0b21pY0lubGluZUxldmVsQm94KCkgJiYgIWlubGluZUxldmVsQm94LmlzSW5s
aW5lQm94KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBpbmxpbmVMZXZlbEJveC5sYXlvdXRCb3goKTsKKyAgICAgICAgYXV0byBib3JkZXJCb3gg
PSBJbmxpbmVSZWN0IHsgfTsKKworICAgICAgICBpZiAoaW5saW5lTGV2ZWxCb3guaXNBdG9taWNJ
bmxpbmVMZXZlbEJveCgpKSB7CisgICAgICAgICAgICBib3JkZXJCb3ggPSBsaW5lQm94LmxvZ2lj
YWxCb3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGZvcm1hdHRpbmdD
b250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KSk7CisgICAgICAgICAgICBib3JkZXJC
b3gubW92ZUJ5KGxpbmVCb3hSZWN0LnRvcExlZnQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaW5s
aW5lTGV2ZWxCb3guaXNJbmxpbmVCb3goKSkgeworICAgICAgICAgICAgYXV0byYgYm94R2VvbWV0
cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CisgICAg
ICAgICAgICBib3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxCb3JkZXJCb3hGb3JJbmxpbmVCb3go
bGF5b3V0Qm94LCBib3hHZW9tZXRyeSk7CisgICAgICAgICAgICBib3JkZXJCb3gubW92ZUJ5KGxp
bmVCb3hSZWN0LnRvcExlZnQoKSk7CisgICAgICAgICAgICAvLyBDb2xsZWN0IHNjcm9sbGFibGUg
b3ZlcmZsb3cgZnJvbSBpbmxpbmUgYm94ZXMuIEFsbCBvdGhlciBpbmxpbmUgbGV2ZWwgYm94ZXMg
KGUuZyBhdG9taWMgaW5saW5lIGxldmVsIGJveGVzKSBzdHJldGNoIHRoZSBsaW5lLgorICAgICAg
ICAgICAgYXV0byBoYXNTY3JvbGxhYmxlQ29udGVudCA9IFsmXSB7CisgICAgICAgICAgICAgICAg
Ly8gSW4gc3RhbmRhcmRzIG1vZGUsIGlubGluZSBib3hlcyBhbHdheXMgc3RhcnQgd2l0aCBhbiBp
bWFnaW5hcnkgc3RydXQuCisgICAgICAgICAgICAgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5T
dGFuZGFyZHNNb2RlKCkgfHwgaW5saW5lTGV2ZWxCb3guaGFzQ29udGVudCgpIHx8IGJveEdlb21l
dHJ5Lmhvcml6b250YWxCb3JkZXIoKSB8fCAoYm94R2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmco
KSAmJiBib3hHZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpLnZhbHVlKCkpOworICAgICAgICAg
ICAgfTsKKyAgICAgICAgICAgIGlmIChsaW5lQm94Lmhhc0NvbnRlbnQoKSAmJiBoYXNTY3JvbGxh
YmxlQ29udGVudCgpKSB7CisgICAgICAgICAgICAgICAgLy8gRW1wdHkgbGluZXMgKGUuZy4gY29u
dGludWF0aW9uIHByZS9wb3N0IGJsb2NrcykgZG9uJ3QgZXhwZWN0IHNjcm9sbGJhciBvdmVyZmxv
dy4KKyAgICAgICAgICAgICAgICBzY3JvbGxhYmxlT3ZlcmZsb3dSZWN0LmV4cGFuZFRvQ29udGFp
bihib3JkZXJCb3gpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworCisgICAgICAgIGVuY2xvc2luZ1RvcEFuZEJvdHRvbS50
b3AgPSBzdGQ6Om1pbihlbmNsb3NpbmdUb3BBbmRCb3R0b20udG9wLCBib3JkZXJCb3gudG9wKCkp
OworICAgICAgICBlbmNsb3NpbmdUb3BBbmRCb3R0b20uYm90dG9tID0gc3RkOjptYXgoZW5jbG9z
aW5nVG9wQW5kQm90dG9tLmJvdHRvbSwgYm9yZGVyQm94LmJvdHRvbSgpKTsKKyAgICB9CisgICAg
cmV0dXJuIElubGluZURpc3BsYXk6OkxpbmUgeyBsaW5lQm94UmVjdCwgc2Nyb2xsYWJsZU92ZXJm
bG93UmVjdCwgZW5jbG9zaW5nVG9wQW5kQm90dG9tLCByb290SW5saW5lQm94LmxvZ2ljYWxUb3Ao
KSArIHJvb3RJbmxpbmVCb3guYmFzZWxpbmUoKSwgbGluZUJveC5yb290SW5saW5lQm94QWxpZ25t
ZW50T2Zmc2V0KCkgKyByb290SW5saW5lQm94LmxvZ2ljYWxMZWZ0KCksIHJvb3RJbmxpbmVCb3gu
bG9naWNhbFdpZHRoKCkgfTsKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5l
RGlzcGxheUxpbmVCdWlsZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjczNWI5OTI5MGI1MWJiYjE2NmMxN2E1MTYyNmU1MDk0ZmUxYzgxZjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9k
aXNwbGF5L0lubGluZURpc3BsYXlMaW5lQnVpbGRlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05U
RVhUKQorCisjaW5jbHVkZSAiSW5saW5lRGlzcGxheUxpbmUuaCIKKyNpbmNsdWRlICJJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIklubGluZUxpbmVCdWlsZGVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitjbGFzcyBMaW5lQm94Owor
CitjbGFzcyBJbmxpbmVEaXNwbGF5TGluZUJ1aWxkZXIgeworcHVibGljOgorICAgIElubGluZURp
c3BsYXlMaW5lQnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOworCisgICAg
SW5saW5lRGlzcGxheTo6TGluZSBidWlsZChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQm
LCBjb25zdCBMaW5lQm94JiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lQm94TG9naWNhbEhlaWdodCwg
c2l6ZV90IGxpbmVJbmRleCk7CisKK3ByaXZhdGU6CisgICAgY29uc3QgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDsgfQorICAgIGNvbnN0IEJveCYgcm9vdCgpIGNvbnN0IHsgcmV0dXJuIGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpOyB9CisgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRl
KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0dGluZ0NvbnRleHQoKS5sYXlvdXRTdGF0ZSgpOyB9CisK
KyAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dDsKK307CisKK30KK30KKworI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>