<?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>225761</bug_id>
          
          <creation_ts>2021-05-13 04:53:09 -0700</creation_ts>
          <short_desc>[LFC] Move block formatting quirks to its own class</short_desc>
          <delta_ts>2021-05-15 10:51:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>225731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1759640</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 04:53:09 -0700</bug_when>
    <thetext>This is part of bug 225731 activity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759670</commentid>
    <comment_count>1</comment_count>
      <attachid>428509</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-13 06:01:11 -0700</bug_when>
    <thetext>Created attachment 428509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760412</commentid>
    <comment_count>2</comment_count>
      <attachid>428727</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-05-15 09:34:44 -0700</bug_when>
    <thetext>Created attachment 428727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760419</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-15 10:50:15 -0700</bug_when>
    <thetext>Committed r277542 (237770@main): &lt;https://commits.webkit.org/237770@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428727.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760420</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-15 10:51:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/78060612&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428509</attachid>
            <date>2021-05-13 06:01:11 -0700</date>
            <delta_ts>2021-05-15 09:34:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225761-20210513060110.patch</filename>
            <type>text/plain</type>
            <size>36185</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5ZDEyNDY2NTYyNDFh
MTM2ZGYzNzJjYjQxZjMyZGViNWY0MzYwNy4uZTQwZDU4YTFiNDE1ZjFkNDA1MTg4NjAwNjlkZjg5
MDAzM2IxYzBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA1LTEzICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBNb3ZlIGJsb2NrIGZv
cm1hdHRpbmcgcXVpcmtzIHRvIGl0cyBvd24gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsYXlvdXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmZv
cm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
UXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6Z2VvbWV0cnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OlF1aXJrcyk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpRdWlya3MpOgorCiAyMDIxLTA1LTA1ICBBbGlj
aWEgQm95YSBHYXJjw61hICA8YWJveWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTVNFXVtHU3Ry
ZWFtZXJdIFdlYktpdE1lZGlhU3JjIHJld29yayB2MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkZTk1NzBh
NTI2N2VmNTM5NTdlMzdkMTY2MGNlMmRhMzhjZWU3N2ZiLi5jYTQ5NDhkYzkyMjlkNjEwZGY0ODE5
YTdkNTk5OTZjN2FhMmI4NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTUyMSw3ICsxNTIxLDcgQEAg
bGF5b3V0L0xheW91dFVuaXRzLmNwcAogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcAotbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcAorbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdRdWlya3MuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9y
bWF0dGluZ1N0YXRlLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01h
cmdpbkNvbGxhcHNlLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21w
dXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjkxZWUxMTVmOTUyM2E2ZWI2YjNhZDU4
NDQwNGQxZGExYjdkNjVkNC4uNGVjNzk3NjNiNTkxMGI3ZTkxMjk1NDc2MWQ0ZmM3OTZjNmJiMjQ1
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjE0OSw2ICsyMTQ5LDcgQEAKIAkJNkY5OTVBMzYxQTcwODMzNzAwQTczNUY0IC8q
IEpTV2ViR0xTeW5jLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2Rjk5NUEyQzFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFN5bmMuaCAqLzsgfTsKIAkJ
NkY5OTVBMzgxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMkUxQTcw
ODMzNzAwQTczNUY0IC8qIEpTV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oICovOyB9OwogCQk2Rjk5
NUEzQTFBNzA4MzM3MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2Rjk5NUEzMDFBNzA4MzM3
MDBBNzM1RjQgLyogSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmggKi87IH07CisJCTZGOUQxQUZB
MjY0NzYxMzYwMEY1RDNBRCAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOUQxQUY5MjY0NzYxMzUwMEY1RDNB
RCAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk2RkE0NDU0RTg5OEYyRkMxNjhCQzM4QzEgLyogSlNCZWZv
cmVVbmxvYWRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlFMDRBMjdCRUQyRjgxRjk4RTkwMjJCIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCAq
LzsgfTsKIAkJNkZCMTFCNUMyMTc4M0ZEMDAwRTJBNTc0IC8qIFRleHRVdGlsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2RkIxMUI1OTIxNzgzRkNGMDBF
MkE1NzQgLyogVGV4dFV0aWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk2RkIyNDAwNTIzREZGMTI4MDA3OTY0NTggLyogSW5saW5lTGluZUJveC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkZCMjQwMDMy
M0RGRjEyNzAwNzk2NDU4IC8qIElubGluZUxpbmVCb3guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtOTk3Miw3ICs5OTczLDcgQEAKIAkJNkY3Q0Ez
QzgyMDhDMkIyRTAwMkYyOUFCIC8qIElubGluZUZvcm1hdHRpbmdDb250ZXh0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IElubGluZUZvcm1hdHRpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTZGN0NBM0M5MjA4QzJCMkUwMDJGMjlBQiAvKiBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOEY0NjAxMjFCMDNCQjQwMDQxQUMzQSAvKiBG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZGOEY0NjAz
MjFCMDNCQzYwMDQxQUMzQSAvKiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJsb2NrRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2RjhGNDYwMzIxQjAzQkM2MDA0MUFDM0EgLyogQmxvY2tG
b3JtYXR0aW5nUXVpcmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJsb2NrRm9ybWF0dGluZ1F1
aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOTE0MjBGMjUxNTIxMzcw
MDRFNEZFQSAvKiBJbmxpbmVMaW5lR2VvbWV0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5saW5lTGluZUdlb21ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTZGOTVERTRCMjM3Qjg4OUIwMEU1MTdFMSAvKiBJbnZhbGlkYXRpb25Db250ZXh0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludmFsaWRhdGlvbkNvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5NURFNEMyMzdCODg5QzAwRTUxN0UxIC8qIElu
dmFsaWRhdGlvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludmFs
aWRhdGlvblN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAwMSw2ICsx
MDAwMiw3IEBACiAJCTZGOTk1QTJFMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVHJhbnNmb3Jt
RmVlZGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZGOTk1QTJGMUE3
MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8q
IEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNkY5RDFBRjkyNjQ3NjEzNTAwRjVEM0FEIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZBRTE2QkEyNDA2REU3RTAwQTQ4NDE0
IC8qIFByZWNvbXB1dGVkQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcmVjb21wdXRlZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2RkIwRUQxMTI0MjdCNkM2MDAyNzM3RTYgLyogTGF5b3V0SW5pdGlhbENvbnRh
aW5pbmdCbG9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMYXlvdXRJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZCMTFCNTkyMTc4M0ZD
RjAwRTJBNTc0IC8qIFRleHRVdGlsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHRVdGlsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODIzNSwxMSArMTgy
MzcsMTIgQEAKIAkJCQkxMTVDRkE2RDIwOEFGQUI2MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5jcHAgKi8sCiAJCQkJMTE1Q0ZBNkMyMDhBRkFCNjAwMUU2OTkxIC8qIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQuaCAqLywKIAkJCQk2RjA4MzBERjIwQjQ2OTUxMDA4QTk0NUIgLyogQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCAqLywKLQkJCQk2RjhGNDYwMzIxQjAzQkM2
MDA0MUFDM0EgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgKi8sCisJCQkJNkY4
RjQ2MDMyMUIwM0JDNjAwNDFBQzNBIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAgKi8sCisJ
CQkJNkY5RDFBRjkyNjQ3NjEzNTAwRjVEM0FEIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oICov
LAogCQkJCTExNUNGQTc5MjA4QjhEOUQwMDFFNjk5MSAvKiBCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5j
cHAgKi8sCiAJCQkJMTE1Q0ZBNzgyMDhCOEQ5RDAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ1N0
YXRlLmggKi8sCi0JCQkJNkY2REYzNkUyNjQ3MjJFQTAwOTNFODM0IC8qIEJsb2NrTWFyZ2luQ29s
bGFwc2UuaCAqLywKIAkJCQkxMTVDRkE4OTIwOEI5MjFBMDAxRTY5OTEgLyogQmxvY2tNYXJnaW5D
b2xsYXBzZS5jcHAgKi8sCisJCQkJNkY2REYzNkUyNjQ3MjJFQTAwOTNFODM0IC8qIEJsb2NrTWFy
Z2luQ29sbGFwc2UuaCAqLywKIAkJCQk2RkFFMTZCQTI0MDZERTdFMDBBNDg0MTQgLyogUHJlY29t
cHV0ZWRCbG9ja01hcmdpbkNvbGxhcHNlLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYmxvY2s7
CkBAIC0zMTQyOSw3ICszMTQzMiw2IEBACiAJCQkJMzFBNzk1QzcxODg4QkNCMjAwMzgyRjkwIC8q
IEFOR0xFSW5zdGFuY2VkQXJyYXlzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBQjBFRkFD
OTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3MUVGQ0VEQzIw
MkIzOEE5MDBEN0M0MTEgLyogQW5pbWF0aW9uRWZmZWN0LmggaW4gSGVhZGVycyAqLywKLQkJCQk0
NDlEODY0RjI2NDBDOUM1MDAwMTIyREUgLyogSGlnaGxpZ2h0VmlzaWJpbGl0eS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzFFMkM0MjYyMUM5MzUyODAwMjRGOEM4IC8qIEFuaW1hdGlvbkVmZmVjdFBo
YXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTk4NDgwMTFBMUQ4MTdCMDBBMTMzMTggLyogQW5p
bWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxMUFEMTI2MjM2RDg2RTUwMDZGRjM3
QyAvKiBBbmltYXRpb25FdmVudEJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMzE2NjIsNyArMzE2
NjQsOSBAQAogCQkJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5k
bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9i
VVJMLmggaW4gSGVhZGVycyAqLywKIAkJCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5OTEgLyogQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkY5RDFBRkEyNjQ3NjEz
NjAwRjVEM0FEIC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTE1Q0ZBN0EyMDhCOEQ5RDAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk2RjZERjM2RjI2NDcyMkVBMDA5M0U4MzQgLyogQmxvY2tNYXJnaW5Db2xs
YXBzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJv
cmRlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTU4OTU1NkVEMThENEE0NDAwMDc2NEIwMyAv
KiBCb3JkZXJFZGdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzVFQjVEQjBFODFCN0VBMDBCMjU5
NjUgLyogQm9yZGVyVmFsdWUuaCBpbiBIZWFkZXJzICovLApAQCAtMzI2NDgsNiArMzI2NTIsNyBA
QAogCQkJCTQ0MzBEMDBCMjU3NUE4M0UwMDQ2RDQwMSAvKiBIaWdobGlnaHQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQ0ZBQkJEMThDMEFGNzgwMDZGODQ1MCAvKiBIaWdobGlnaHREYXRhLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0NDMwRDAwRDI1NzVBOEE1MDA0NkQ0MDEgLyogSGlnaGxpZ2h0UmVn
aXN0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ0OUQ4NjRGMjY0MEM5QzUwMDAxMjJERSAvKiBI
aWdobGlnaHRWaXNpYmlsaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzk0RDE1NDBDMjc1QzhC
MDA2QkM2MTcgLyogSGlzdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdEQ0UyMDIxMDgwN0M3
NTAwNTdEMzk0IC8qIEhpc3RvcnlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0
MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJzICovLApAQCAt
MzQ4ODYsNyArMzQ4OTEsNiBAQAogCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBTY3Jp
cHREaXNhbGxvd2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUQyMTNGQjIyNEQw
MDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKLQkJCQlFNEQ4NkU2RDI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29wZU9yZGluYWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzRTRFMkE4MUUzQjE3MTAwMDIzQkI4QSAvKiBTY3JpcHRF
bGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTExQzlEOUIw
RUIzNjgxMjAwRTQwOURCIC8qIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxMTIyM0JBMjYwMjQ0RkUwMEIwQTBCNiAvKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0
SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTIwMiw2ICszNTIwNiw3IEBACiAJCQkJ
RTQ5NDZFQUYxNTZFNjRERDAwRDMyOTdGIC8qIFN0eWxlUnVsZUltcG9ydC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY5NEYzN0UyMzY2MTYyNjAwM0FBNUM3IC8qIFN0eWxlUnVsZVR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU0NjFENjVGMUJCMEM4MEQwMENCNTY0NSAvKiBTdHlsZVNjb3BlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlFNEQ4NkU2RDI2NDAzOTRDMDBCNjI0MjUgLyogU3R5bGVTY29w
ZU9yZGluYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTRBNEY0OEFBMTZCMERGQzAwMEVEQkIyOSAv
KiBTdHlsZVNjb3BlUnVsZVNldHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0N0E1RTNFMTk1QjhD
OEEwMDQ4MzEwMCAvKiBTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTlENjM4MDEwMUFGMTczMjIwMDMxQTE1QyAvKiBTdHlsZVNlbGZBbGlnbm1lbnREYXRhLmggaW4g
SGVhZGVycyAqLywKQEAgLTM1NTU0LDcgKzM1NTU5LDYgQEAKIAkJCQk0QkFGRDBEOTIxOTIxRUEw
MDBDMEFCNjQgLyogVHlwZWRPTUNTU1VucGFyc2VkVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMzA5RTFBMDk5RTY0OTIwMDU2RTU4MSAvKiBUeXBpbmdDb21tYW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NzE1MkI2RTIxQ0Q5OTVEMDAwQzM3Q0EgLyogVTJmQ29tbWFuZENvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQk2RjZERjM2RjI2NDcyMkVBMDA5M0U4MzQgLyogQmxvY2tN
YXJnaW5Db2xsYXBzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTJCN0MyMUREOEJBMTAwMEMz
N0NBIC8qIFUyZlJlc3BvbnNlQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTAzMUI0
RTBBNDRFRkM3MDBGOTkyRTAgLyogVUlFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNGRTdD
QTcxREE5RjFBNzAwMzcyMzdDIC8qIFVJRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9ybWF0dGlu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvRm9y
bWF0dGluZ0NvbnRleHQuaAppbmRleCAyZGE1MmI2NTM5ZWU2YzMwZjZjODM3NjU4YzcyYTkzZmFj
YTJlOGM3Li40ZjViMWY3YjU1NDI0ZGNkNjI2ZDZmN2Q4M2M3NTZhNjk2OTA0NmY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9G
b3JtYXR0aW5nQ29udGV4dC5oCkBAIC0xMTAsNiArMTEwLDIxIEBAIHB1YmxpYzoKICAgICBMYXlv
dXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSBjb25zdDsKICAgICBjb25zdCBGb3JtYXR0aW5nU3RhdGUm
IGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ1N0YXRlOyB9CiAK
KyAgICBjbGFzcyBRdWlya3MgeworICAgIHB1YmxpYzoKKyAgICAgICAgUXVpcmtzKGNvbnN0IEZv
cm1hdHRpbmdDb250ZXh0Jik7CisKKyAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRWYWx1ZU9mTmVh
cmVzdENvbnRhaW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmKTsKKworICAgIHBy
b3RlY3RlZDoKKyAgICAgICAgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpOyB9CisgICAgICAgIExh
eW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5
b3V0U3RhdGUoKTsgfQorICAgICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGlu
Z0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0OyB9CisKKyAgICAg
ICAgY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmIG1fZm9ybWF0dGluZ0NvbnRleHQ7CisgICAgfTsK
KyAgICBGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIFF1
aXJrcygqdGhpcyk7IH0KKwogcHJvdGVjdGVkOgogICAgIHVzaW5nIExheW91dFF1ZXVlID0gVmVj
dG9yPGNvbnN0IEJveCo+OwogCkBAIC0xOTYsMjEgKzIxMSw2IEBAIHByb3RlY3RlZDoKICAgICB9
OwogICAgIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0
dXJuIEdlb21ldHJ5KCp0aGlzKTsgfQogCi0gICAgY2xhc3MgUXVpcmtzIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIFF1aXJrcyhjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYpOwotCi0gICAgICAgIExh
eW91dFVuaXQgaGVpZ2h0VmFsdWVPZk5lYXJlc3RDb250YWluaW5nQmxvY2tXaXRoRml4ZWRIZWln
aHQoY29uc3QgQm94Jik7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGNvbnN0IExheW91dFN0
YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5
b3V0U3RhdGUoKTsgfQotICAgICAgICBMYXlvdXRTdGF0ZSYgbGF5b3V0U3RhdGUoKSB7IHJldHVy
biBtX2Zvcm1hdHRpbmdDb250ZXh0LmxheW91dFN0YXRlKCk7IH0KLSAgICAgICAgY29uc3QgRm9y
bWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXR0aW5nQ29udGV4dDsgfQotCi0gICAgICAgIGNvbnN0IEZvcm1hdHRpbmdDb250ZXh0JiBtX2Zv
cm1hdHRpbmdDb250ZXh0OwotICAgIH07Ci0gICAgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyBx
dWlya3MoKSBjb25zdCB7IHJldHVybiBRdWlya3MoKnRoaXMpOyB9Ci0KIHByaXZhdGU6CiAgICAg
dm9pZCBjb2xsZWN0T3V0T2ZGbG93RGVzY2VuZGFudHNJZk5lZWRlZCgpOwogICAgIHZvaWQgY29t
cHV0ZU91dE9mRmxvd1ZlcnRpY2FsR2VvbWV0cnkoY29uc3QgQm94JiwgY29uc3QgQ29uc3RyYWlu
dHNGb3JPdXRPZkZsb3dDb250ZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmNwcAppbmRleCBkMzc0NTM5NjhmN2E4YmRmNTlmZGIyMmY2NDYxNjA2ZDc0
MjRkZDczLi41ZmQ4OTlkYTg4ZTZkNWRmYTRmODk1MWNiMjhiYmRmNTBlNTFhNjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2Nr
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQogCisjaW5jbHVk
ZSAiQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nU3Rh
dGUuaCIKICNpbmNsdWRlICJCbG9ja01hcmdpbkNvbGxhcHNlLmgiCiAjaW5jbHVkZSAiRmxvYXRp
bmdDb250ZXh0LmgiCkBAIC02MDUsNiArNjA2LDExIEBAIEJsb2NrTWFyZ2luQ29sbGFwc2UgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6bWFyZ2luQ29sbGFwc2UoKSBjb25zdAogICAgIHJldHVybiBC
bG9ja01hcmdpbkNvbGxhcHNlKCp0aGlzKTsKIH0KIAorQmxvY2tGb3JtYXR0aW5nUXVpcmtzIEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OnF1aXJrcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEJsb2Nr
Rm9ybWF0dGluZ1F1aXJrcygqdGhpcyk7Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2Nr
L0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBiZjg5MDMwZGU5ZGE1NWNlNDFjZTBmYjcx
MjE1NWM1ZDFjODNlMGQ2Li4yZDkwNDhjNThhYmNmNGI0OTI3ZTA2ZWIyYTkxMDNlZTY1OGRhNzU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Js
b2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Zm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaApAQCAtMzks
NiArMzksNyBAQCBjbGFzcyBMYXlvdXRVbml0OwogbmFtZXNwYWNlIExheW91dCB7CiAKIGNsYXNz
IEJveDsKK2NsYXNzIEJsb2NrRm9ybWF0dGluZ1F1aXJrczsKIGNsYXNzIEJsb2NrTWFyZ2luQ29s
bGFwc2U7CiBjbGFzcyBGbG9hdGluZ0NvbnRleHQ7CiAKQEAgLTU0LDIyICs1NSw4IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSBj
b25zdCB7IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0Nv
bnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQogCi0gICAgY2xhc3MgUXVpcmtzIDogcHVibGlj
IEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3MgewotICAgIHB1YmxpYzoKLSAgICAgICAgUXVpcmtz
KGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmKTsKLQotICAgICAgICBib29sIG5lZWRzU3Ry
ZXRjaGluZyhjb25zdCBCb3gmKSBjb25zdDsKLSAgICAgICAgTGF5b3V0VW5pdCBzdHJldGNoZWRJ
bkZsb3dIZWlnaHQoY29uc3QgQm94JiwgQ29udGVudEhlaWdodEFuZE1hcmdpbik7Ci0KLSAgICAg
ICAgYm9vbCBzaG91bGRJZ25vcmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBCb3gmKSBjb25z
dDsKLSAgICAgICAgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkJlZm9yZVdpdGhQYXJlbnRNYXJn
aW5CZWZvcmUoY29uc3QgQm94JikgY29uc3Q7Ci0gICAgICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VN
YXJnaW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmKSBjb25zdDsKLQotICAg
ICAgICBjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OmZvcm1hdHRpbmdDb250ZXh0KCkpOyB9Ci0gICAgICAgIEJsb2NrRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IGdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gZm9ybWF0
dGluZ0NvbnRleHQoKS5nZW9tZXRyeSgpOyB9Ci0KLSAgICB9OwotICAgIEJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6OlF1aXJrcyBxdWlya3MoKSBjb25zdCB7IHJldHVybiBRdWlya3MoKnRoaXMpOyB9
CisgICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHF1aXJrcygpIGNvbnN0OworICAgIEJsb2NrTWFy
Z2luQ29sbGFwc2UgbWFyZ2luQ29sbGFwc2UoKSBjb25zdDsKIAogICAgIC8vIFRoaXMgY2xhc3Mg
aW1wbGVtZW50cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0aW5n
IGluIGEgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IDogcHVi
bGljIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSB7CkBAIC0xMjAsNyArMTA3LDYgQEAgcHJv
dGVjdGVkOgogICAgIE9wdGlvbmFsPExheW91dFVuaXQ+IHVzZWRBdmFpbGFibGVXaWR0aEZvckZs
b2F0QXZvaWRlcihjb25zdCBGbG9hdGluZ0NvbnRleHQmLCBjb25zdCBCb3gmLCBjb25zdCBDb25z
dHJhaW50c1BhaXImKTsKICAgICB2b2lkIHVwZGF0ZU1hcmdpbkFmdGVyRm9yUHJldmlvdXNTaWJs
aW5nKGNvbnN0IEJveCYpOwogCi0gICAgQmxvY2tNYXJnaW5Db2xsYXBzZSBtYXJnaW5Db2xsYXBz
ZSgpIGNvbnN0OwogICAgIEJsb2NrRm9ybWF0dGluZ1N0YXRlJiBmb3JtYXR0aW5nU3RhdGUoKSB7
IHJldHVybiBkb3duY2FzdDxCbG9ja0Zvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6
OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTEzNywxMSAr
MTIzLDYgQEAgaW5saW5lIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpHZW9tZXRy
eShjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JgogewogfQogCi1pbmxpbmUgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzOjpRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4
dCYgYmxvY2tGb3JtYXR0aW5nQ29udGV4dCkKLSAgICA6IEZvcm1hdHRpbmdDb250ZXh0OjpRdWly
a3MoYmxvY2tGb3JtYXR0aW5nQ29udGV4dCkKLXsKLX0KLQogfQogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzFiMDg4NDIwM2RjODZhNjczNmFiYzhlYmRhZjJhNWVmMWQ1
ODZhZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dC5oIgotCi0jaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCi0KLSNpbmNs
dWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgotI2luY2x1ZGUgIkxheW91dEJveC5oIgotI2lu
Y2x1ZGUgIkxheW91dEJveEdlb21ldHJ5LmgiCi0jaW5jbHVkZSAiTGF5b3V0Q29udGFpbmVyQm94
LmgiCi0jaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5oIgotI2luY2x1ZGUg
IkxheW91dFN0YXRlLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLW5hbWVzcGFjZSBMYXlvdXQg
ewotCi1zdGF0aWMgYm9vbCBpc1F1aXJrQ29udGFpbmVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KQot
ewotICAgIHJldHVybiBsYXlvdXRCb3guaXNCb2R5Qm94KCkgfHwgbGF5b3V0Qm94LmlzRG9jdW1l
bnRCb3goKSB8fCBsYXlvdXRCb3guaXNUYWJsZUNlbGwoKTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0OjpRdWlya3M6Om5lZWRzU3RyZXRjaGluZyhjb25zdCBCb3gmIGxheW91dEJv
eCkgY29uc3QKLXsKLSAgICBBU1NFUlQobGF5b3V0Qm94LmlzSW5GbG93KCkpOwotICAgIC8vIElu
IHF1aXJrcyBtb2RlLCBpbi1mbG93IGJvZHkgYW5kIGh0bWwgc3RyZXRjaCB0byB0aGUgaW5pdGlh
bCBjb250YWluaW5nIGJsb2NrIChoZWlnaHQ6IGF1dG8gb25seSkuCi0gICAgaWYgKCFsYXlvdXRT
dGF0ZSgpLmluUXVpcmtzTW9kZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAo
IWxheW91dEJveC5pc0RvY3VtZW50Qm94KCkgJiYgIWxheW91dEJveC5pc0JvZHlCb3goKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGxheW91dEJveC5zdHlsZSgpLmxvZ2lj
YWxIZWlnaHQoKS5pc0F1dG8oKTsKLX0KLQotTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0OjpRdWlya3M6OnN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBCb3gmIGxheW91dEJveCwg
Q29udGVudEhlaWdodEFuZE1hcmdpbiBjb250ZW50SGVpZ2h0QW5kTWFyZ2luKQotewotICAgIEFT
U0VSVChuZWVkc1N0cmV0Y2hpbmcobGF5b3V0Qm94KSk7Ci0gICAgYXV0byYgZm9ybWF0dGluZ0Nv
bnRleHQgPSB0aGlzLT5mb3JtYXR0aW5nQ29udGV4dCgpOwotICAgIGF1dG8gbm9uQ29sbGFwc2Vk
VmVydGljYWxNYXJnaW4gPSBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdp
bi5iZWZvcmUgKyBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbi5hZnRl
cjsKLQotICAgIGlmIChsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpKSB7Ci0gICAgICAgIC8vIExl
dCdzIHN0cmV0Y2ggdGhlIGluZmxvdyBkb2N1bWVudCBib3goPGh0bWw+KSB0byB0aGUgaGVpZ2h0
IG9mIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgKHZpZXcpLgotICAgICAgICBhdXRvIGRv
Y3VtZW50Qm94Q29udGVudEhlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94
KGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCksIEVzY2FwZVJlYXNvbjo6RG9jdW1l
bnRCb3hTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspLmNvbnRlbnRCb3hIZWlnaHQoKTsKLSAgICAg
ICAgLy8gRG9jdW1lbnQgYm94J3Mgb3duIHZlcnRpY2FsIG1hcmdpbi9ib3JkZXIvcGFkZGluZyB2
YWx1ZXMgYWx3YXlzIHNocmluayB0aGUgY29udGVudCBoZWlnaHQuCi0gICAgICAgIGF1dG8mIGRv
Y3VtZW50Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwotICAgICAgICBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQgLT0gbm9uQ29sbGFwc2Vk
VmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBk
b2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7Ci0gICAgICAg
IHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQsICBk
b2N1bWVudEJveENvbnRlbnRIZWlnaHQpOwotICAgIH0KLQotICAgIC8vIEhlcmUgaXMgdGhlIHF1
aXJreSBwYXJ0IGZvciBib2R5IGJveCB3aGVuIGl0IHN0cmV0Y2hlcyBhbGwgdGhlIHdheSB0byB0
aGUgSUNCIGV2ZW4gd2hlbiB0aGUgZG9jdW1lbnQgYm94IGRvZXMgbm90IChlLmcuIG91dC1vZi1m
bG93IHBvc2l0aW9uZWQpLgotICAgIEFTU0VSVChsYXlvdXRCb3guaXNCb2R5Qm94KCkpOwotICAg
IGF1dG8mIGluaXRpYWxDb250YWluaW5nQmxvY2sgPSBsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5p
bmdCbG9jaygpOwotICAgIGF1dG8mIGluaXRpYWxDb250YWluaW5nQmxvY2tHZW9tZXRyeSA9IGZv
cm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGluaXRpYWxDb250YWluaW5nQmxvY2ssIEVz
Y2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyayk7Ci0gICAgLy8gU3RhcnQg
dGhlIGNvbnRlbnQgaGVpZ2h0IHdpdGggdGhlIElDQi4KLSAgICBhdXRvIGJvZHlCb3hDb250ZW50
SGVpZ2h0ID0gaW5pdGlhbENvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNvbnRlbnRCb3hIZWlnaHQo
KTsKLSAgICAvLyBCb2R5IGJveCdzIG93biBib3JkZXIgYW5kIHBhZGRpbmcgc2hyaW5rIHRoZSBj
b250ZW50IGhlaWdodC4KLSAgICBhdXRvJiBib2R5Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29u
dGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0
IC09IGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm9keUJveEdlb21ldHJ5LnZl
cnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7Ci0gICAgLy8gQm9keSBib3ggbmV2ZXIgY29sbGFw
c2VzIGl0cyB2ZXJ0aWNhbCBtYXJnaW5zIHdpdGggdGhlIGRvY3VtZW50IGJveCBidXQgaXQgbWln
aHQgY29sbGFwc2UgaXRzIG1hcmdpbiB3aXRoIGl0cyBkZXNjZW5kYW50cy4KLSAgICBhdXRvIG5v
bkNvbGxhcHNlZE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2VkTWFy
Z2luOwotICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gZm9ybWF0dGluZ0NvbnRleHQubWFyZ2lu
Q29sbGFwc2UoKS5jb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhsYXlvdXRCb3gsIG5vbkNvbGxhcHNl
ZE1hcmdpbikuY29sbGFwc2VkVmFsdWVzOwotICAgIGF1dG8gdXNlZFZlcnRpY2FsTWFyZ2luID0g
Y29sbGFwc2VkTWFyZ2luLmJlZm9yZS52YWx1ZU9yKG5vbkNvbGxhcHNlZE1hcmdpbi5iZWZvcmUp
OwotICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiArPSBjb2xsYXBzZWRNYXJnaW4uaXNDb2xsYXBzZWRU
aHJvdWdoID8gbm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDogY29sbGFwc2VkTWFyZ2luLmFmdGVy
LnZhbHVlT3Iobm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyKTsKLSAgICBib2R5Qm94Q29udGVudEhl
aWdodCAtPSB1c2VkVmVydGljYWxNYXJnaW47Ci0gICAgLy8gRG9jdW1lbnQgYm94J3MgcGFkZGlu
ZyBhbmQgYm9yZGVyIGFsc28gc2hyaW5rIHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0Lgot
ICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgpOwotICAgIGF1dG8mIGRv
Y3VtZW50Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChkb2N1
bWVudEJveCwgRXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKTsKLSAg
ICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsQm9y
ZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7
Ci0gICAgLy8gSG93ZXZlciB0aGUgbm9uLWluLWZsb3cgZG9jdW1lbnQgYm94J3MgdmVydGljYWwg
bWFyZ2lucyBhcmUgaWdub3JlZC4gVGhleSBkb24ndCBhZmZlY3QgdGhlIGJvZHkgYm94J3MgY29u
dGVudCBoZWlnaHQuCi0gICAgaWYgKGRvY3VtZW50Qm94LmlzSW5GbG93KCkpIHsKLSAgICAgICAg
YXV0byBnZW9tZXRyeSA9IHRoaXMtPmdlb21ldHJ5KCk7Ci0gICAgICAgIGF1dG8gcHJlY29tcHV0
ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4gPSBnZW9tZXRyeS5jb21wdXRlZFZlcnRpY2FsTWFy
Z2luKGRvY3VtZW50Qm94LCBnZW9tZXRyeS5jb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQoaW5p
dGlhbENvbnRhaW5pbmdCbG9jaywgRXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9y
dFF1aXJrKS5ob3Jpem9udGFsKTsKLSAgICAgICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gcHJl
Y29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxNYXJnaW4uYmVmb3JlLnZhbHVlT3IoMCkgKyBwcmVj
b21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5hZnRlci52YWx1ZU9yKDApOwotICAgIH0K
LSAgICByZXR1cm4gc3RkOjptYXgoY29udGVudEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0
LCAgYm9keUJveENvbnRlbnRIZWlnaHQpOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OlF1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVpcmtNYXJnaW4oY29uc3QgQm94JiBs
YXlvdXRCb3gpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2Rl
KCkgJiYgaXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3gpOwotfQotCi1lbnVtIGNsYXNzIFZlcnRp
Y2FsTWFyZ2luIHsgQmVmb3JlLCBBZnRlciB9Owotc3RhdGljIGlubGluZSBib29sIGhhc1F1aXJr
TWFyZ2luVG9Db2xsYXBzZShjb25zdCBCb3gmIGxheW91dEJveCwgVmVydGljYWxNYXJnaW4gdmVy
dGljYWxNYXJnaW4pCi17Ci0gICAgaWYgKCFsYXlvdXRCb3guaXNJbkZsb3coKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIGF1dG8mIHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7Ci0gICAg
cmV0dXJuICh2ZXJ0aWNhbE1hcmdpbiA9PSBWZXJ0aWNhbE1hcmdpbjo6QmVmb3JlICYmIHN0eWxl
Lmhhc01hcmdpbkJlZm9yZVF1aXJrKCkpIHx8ICh2ZXJ0aWNhbE1hcmdpbiA9PSBWZXJ0aWNhbE1h
cmdpbjo6QWZ0ZXIgJiYgc3R5bGUuaGFzTWFyZ2luQWZ0ZXJRdWlyaygpKTsKLX0KLQotYm9vbCBC
bG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZENvbGxhcHNlTWFyZ2luQmVmb3Jl
V2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBoYXNRdWlya01hcmdpblRv
Q29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QmVmb3JlKSAmJiBpc1F1aXJrQ29u
dGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Ci19Ci0KLWJvb2wgQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVu
dE1hcmdpbkFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAotewotICAgIHJldHVybiBs
YXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShs
YXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpBZnRlcikgJiYgaXNRdWlya0NvbnRhaW5lcihsYXlv
dXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOwotfQotCi19Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zv
cm1hdHRpbmdRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhYjM1MzI5
ZTUwM2I2YTA4YjQ5MzdkM2FhZGM2M2IzNTc2NjRlN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGlu
Z1F1aXJrcy5jcHAKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgiCisKKyNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0
YXRlLmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0
cnkuaCIKKyNpbmNsdWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKKyNpbmNsdWRlICJMYXlvdXRJ
bml0aWFsQ29udGFpbmluZ0Jsb2NrLmgiCisjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0YXRpYyBib29sIGlzUXVp
cmtDb250YWluZXIoY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgcmV0dXJuIGxheW91dEJv
eC5pc0JvZHlCb3goKSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8IGxheW91dEJveC5p
c1RhYmxlQ2VsbCgpOworfQorCitCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OkJsb2NrRm9ybWF0dGlu
Z1F1aXJrcyhjb25zdCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBibG9ja0Zvcm1hdHRpbmdDb250
ZXh0KQorICAgIDogRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyhibG9ja0Zvcm1hdHRpbmdDb250
ZXh0KQoreworfQorCitib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6bmVlZHNTdHJldGNoaW5n
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIEFTU0VSVChsYXlvdXRCb3guaXNJ
bkZsb3coKSk7CisgICAgLy8gSW4gcXVpcmtzIG1vZGUsIGluLWZsb3cgYm9keSBhbmQgaHRtbCBz
dHJldGNoIHRvIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgKGhlaWdodDogYXV0byBvbmx5
KS4KKyAgICBpZiAoIWxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmICghbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSAmJiAhbGF5b3V0
Qm94LmlzQm9keUJveCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gbGF5
b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOworfQorCitMYXlvdXRVbml0
IEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4p
Cit7CisgICAgQVNTRVJUKG5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKTsKKyAgICBhdXRvJiBm
b3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7CisgICAgYXV0byBu
b25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29s
bGFwc2VkTWFyZ2luLmJlZm9yZSArIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4ubm9uQ29sbGFwc2Vk
TWFyZ2luLmFmdGVyOworCisgICAgaWYgKGxheW91dEJveC5pc0RvY3VtZW50Qm94KCkpIHsKKyAg
ICAgICAgLy8gTGV0J3Mgc3RyZXRjaCB0aGUgaW5mbG93IGRvY3VtZW50IGJveCg8aHRtbD4pIHRv
IHRoZSBoZWlnaHQgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayAodmlldykuCisgICAg
ICAgIGF1dG8gZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2soKSwgRm9ybWF0dGlu
Z0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6RG9jdW1lbnRCb3hTdHJldGNoZXNUb1ZpZXdwb3J0UXVp
cmspLmNvbnRlbnRCb3hIZWlnaHQoKTsKKyAgICAgICAgLy8gRG9jdW1lbnQgYm94J3Mgb3duIHZl
cnRpY2FsIG1hcmdpbi9ib3JkZXIvcGFkZGluZyB2YWx1ZXMgYWx3YXlzIHNocmluayB0aGUgY29u
dGVudCBoZWlnaHQuCisgICAgICAgIGF1dG8mIGRvY3VtZW50Qm94R2VvbWV0cnkgPSBmb3JtYXR0
aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAgICAgICBkb2N1bWVudEJv
eENvbnRlbnRIZWlnaHQgLT0gbm9uQ29sbGFwc2VkVmVydGljYWxNYXJnaW4gKyBkb2N1bWVudEJv
eEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBkb2N1bWVudEJveEdlb21ldHJ5LnZlcnRpY2Fs
UGFkZGluZygpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVp
Z2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQsICBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQpOwor
ICAgIH0KKworICAgIC8vIEhlcmUgaXMgdGhlIHF1aXJreSBwYXJ0IGZvciBib2R5IGJveCB3aGVu
IGl0IHN0cmV0Y2hlcyBhbGwgdGhlIHdheSB0byB0aGUgSUNCIGV2ZW4gd2hlbiB0aGUgZG9jdW1l
bnQgYm94IGRvZXMgbm90IChlLmcuIG91dC1vZi1mbG93IHBvc2l0aW9uZWQpLgorICAgIEFTU0VS
VChsYXlvdXRCb3guaXNCb2R5Qm94KCkpOworICAgIGF1dG8mIGluaXRpYWxDb250YWluaW5nQmxv
Y2sgPSBsYXlvdXRCb3guaW5pdGlhbENvbnRhaW5pbmdCbG9jaygpOworICAgIGF1dG8mIGluaXRp
YWxDb250YWluaW5nQmxvY2tHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9y
Qm94KGluaXRpYWxDb250YWluaW5nQmxvY2ssIEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFz
b246OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspOworICAgIC8vIFN0YXJ0IHRoZSBjb250
ZW50IGhlaWdodCB3aXRoIHRoZSBJQ0IuCisgICAgYXV0byBib2R5Qm94Q29udGVudEhlaWdodCA9
IGluaXRpYWxDb250YWluaW5nQmxvY2tHZW9tZXRyeS5jb250ZW50Qm94SGVpZ2h0KCk7CisgICAg
Ly8gQm9keSBib3gncyBvd24gYm9yZGVyIGFuZCBwYWRkaW5nIHNocmluayB0aGUgY29udGVudCBo
ZWlnaHQuCisgICAgYXV0byYgYm9keUJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBib2R5
Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNhbFBh
ZGRpbmcoKS52YWx1ZU9yKDApOworICAgIC8vIEJvZHkgYm94IG5ldmVyIGNvbGxhcHNlcyBpdHMg
dmVydGljYWwgbWFyZ2lucyB3aXRoIHRoZSBkb2N1bWVudCBib3ggYnV0IGl0IG1pZ2h0IGNvbGxh
cHNlIGl0cyBtYXJnaW4gd2l0aCBpdHMgZGVzY2VuZGFudHMuCisgICAgYXV0byBub25Db2xsYXBz
ZWRNYXJnaW4gPSBjb250ZW50SGVpZ2h0QW5kTWFyZ2luLm5vbkNvbGxhcHNlZE1hcmdpbjsKKyAg
ICBhdXRvIGNvbGxhcHNlZE1hcmdpbiA9IGZvcm1hdHRpbmdDb250ZXh0Lm1hcmdpbkNvbGxhcHNl
KCkuY29sbGFwc2VkVmVydGljYWxWYWx1ZXMobGF5b3V0Qm94LCBub25Db2xsYXBzZWRNYXJnaW4p
LmNvbGxhcHNlZFZhbHVlczsKKyAgICBhdXRvIHVzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbGxhcHNl
ZE1hcmdpbi5iZWZvcmUudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlKTsKKyAgICB1
c2VkVmVydGljYWxNYXJnaW4gKz0gY29sbGFwc2VkTWFyZ2luLmlzQ29sbGFwc2VkVGhyb3VnaCA/
IG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlciA6IGNvbGxhcHNlZE1hcmdpbi5hZnRlci52YWx1ZU9y
KG5vbkNvbGxhcHNlZE1hcmdpbi5hZnRlcik7CisgICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0g
dXNlZFZlcnRpY2FsTWFyZ2luOworICAgIC8vIERvY3VtZW50IGJveCdzIHBhZGRpbmcgYW5kIGJv
cmRlciBhbHNvIHNocmluayB0aGUgYm9keSBib3gncyBjb250ZW50IGhlaWdodC4KKyAgICBhdXRv
JiBkb2N1bWVudEJveCA9IGxheW91dEJveC5wYXJlbnQoKTsKKyAgICBhdXRvJiBkb2N1bWVudEJv
eEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goZG9jdW1lbnRCb3gs
IEZvcm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0
UXVpcmspOworICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3VtZW50Qm94R2VvbWV0cnku
dmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCku
dmFsdWVPcigwKTsKKyAgICAvLyBIb3dldmVyIHRoZSBub24taW4tZmxvdyBkb2N1bWVudCBib3gn
cyB2ZXJ0aWNhbCBtYXJnaW5zIGFyZSBpZ25vcmVkLiBUaGV5IGRvbid0IGFmZmVjdCB0aGUgYm9k
eSBib3gncyBjb250ZW50IGhlaWdodC4KKyAgICBpZiAoZG9jdW1lbnRCb3guaXNJbkZsb3coKSkg
eworICAgICAgICBhdXRvIGdlb21ldHJ5ID0gdGhpcy0+Z2VvbWV0cnkoKTsKKyAgICAgICAgYXV0
byBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9IGdlb21ldHJ5LmNvbXB1dGVk
VmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGdlb21ldHJ5LmNvbnN0cmFpbnRzRm9ySW5GbG93
Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBl
UmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9ydFF1aXJrKS5ob3Jpem9udGFsKTsKKyAgICAg
ICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gcHJlY29tcHV0ZURvY3VtZW50Qm94VmVydGljYWxN
YXJnaW4uYmVmb3JlLnZhbHVlT3IoMCkgKyBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1h
cmdpbi5hZnRlci52YWx1ZU9yKDApOworICAgIH0KKyAgICByZXR1cm4gc3RkOjptYXgoY29udGVu
dEhlaWdodEFuZE1hcmdpbi5jb250ZW50SGVpZ2h0LCAgYm9keUJveENvbnRlbnRIZWlnaHQpOwor
fQorCitib29sIEJsb2NrRm9ybWF0dGluZ1F1aXJrczo6c2hvdWxkSWdub3JlQ29sbGFwc2VkUXVp
cmtNYXJnaW4oY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxheW91
dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYgaXNRdWlya0NvbnRhaW5lcihsYXlvdXRCb3gpOwor
fQorCitlbnVtIGNsYXNzIFZlcnRpY2FsTWFyZ2luIHsgQmVmb3JlLCBBZnRlciB9Oworc3RhdGlj
IGlubGluZSBib29sIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShjb25zdCBCb3gmIGxheW91dEJv
eCwgVmVydGljYWxNYXJnaW4gdmVydGljYWxNYXJnaW4pCit7CisgICAgaWYgKCFsYXlvdXRCb3gu
aXNJbkZsb3coKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8mIHN0eWxlID0gbGF5
b3V0Qm94LnN0eWxlKCk7CisgICAgcmV0dXJuICh2ZXJ0aWNhbE1hcmdpbiA9PSBWZXJ0aWNhbE1h
cmdpbjo6QmVmb3JlICYmIHN0eWxlLmhhc01hcmdpbkJlZm9yZVF1aXJrKCkpIHx8ICh2ZXJ0aWNh
bE1hcmdpbiA9PSBWZXJ0aWNhbE1hcmdpbjo6QWZ0ZXIgJiYgc3R5bGUuaGFzTWFyZ2luQWZ0ZXJR
dWlyaygpKTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENvbGxhcHNl
TWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmIGxheW91dEJveCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBoYXNR
dWlya01hcmdpblRvQ29sbGFwc2UobGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbjo6QmVmb3JlKSAm
JiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Cit9CisKK2Jv
b2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBh
cmVudE1hcmdpbkFmdGVyKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIHJldHVy
biBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9kZSgpICYmIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBz
ZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2luOjpBZnRlcikgJiYgaXNRdWlya0NvbnRhaW5lcihs
YXlvdXRCb3guY29udGFpbmluZ0Jsb2NrKCkpOworfQorCit9Cit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9j
a0Zvcm1hdHRpbmdRdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWJkNTE3Zjk4
MjQ0YWU4MmNjNTkwMDU0OGZlNmU0NzQxMmZlODUxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5n
UXVpcmtzLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlv
dXQgeworCitjbGFzcyBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ0Nv
bnRleHQ6OlF1aXJrcyB7CitwdWJsaWM6CisgICAgQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGNvbnN0
IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmKTsKKworICAgIGJvb2wgbmVlZHNTdHJldGNoaW5nKGNv
bnN0IEJveCYpIGNvbnN0OworICAgIExheW91dFVuaXQgc3RyZXRjaGVkSW5GbG93SGVpZ2h0KGNv
bnN0IEJveCYsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4pOworCisgICAgYm9vbCBzaG91bGRJZ25v
cmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBCb3gmKSBjb25zdDsKKyAgICBib29sIHNob3Vs
ZENvbGxhcHNlTWFyZ2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKSBj
b25zdDsKKyAgICBib29sIHNob3VsZENvbGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2lu
QWZ0ZXIoY29uc3QgQm94JikgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBjb25zdCBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ+KEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmZv
cm1hdHRpbmdDb250ZXh0KCkpOyB9CisgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnkgZ2VvbWV0cnkoKSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5
KCk7IH0KKworfTsKKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFy
Z2luQ29sbGFwc2UuY3BwCmluZGV4IGI5ODNjZTQ0YzZmYTEzMTc2MWE5OWE3MmUzZGY2MWM5NGRi
YjMyNjIuLjkyZDhjZDI4ZWRkOTdhODZkNmFlZjAzYzgyOTgzN2Q1YTM3MjNiMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tN
YXJnaW5Db2xsYXBzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcApAQCAtMjgsNiArMjgsNyBAQAog
CiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJCbG9j
a0Zvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIkZsb2F0aW5nU3RhdGUuaCIKICNpbmNsdWRlICJJbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQu
aCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3
cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAwZGVhMTU3
Y2M1MjE2Zjg4NGZkMjg5ODM0YTNjODY2OTUzNzQyN2E1Li5kNjU3NGU3MzVkNjg4MTFmODFjYWIw
ODVmODAyYzMzYjg4NmExOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBwZXJCbG9ja0Zvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5nQ29udGV4
dC5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRF
WFQpCiAKICNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQmxv
Y2tGb3JtYXR0aW5nUXVpcmtzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00NSw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhv
cml6b250YWxDb25zdHJhaW50c0lnbm9yaW5nRmxvYXRzKGNvbnN0IEhvcml6b250YWxDb25zdHJh
aW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKSB7IG1faG9yaXpvbnRhbENvbnN0cmFpbnRzSWdu
b3JpbmdGbG9hdHMgPSBob3Jpem9udGFsQ29uc3RyYWludHM7IH0KIAogcHJpdmF0ZToKLSAgICBj
bGFzcyBRdWlya3MgOiBwdWJsaWMgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzIHsKKyAg
ICBjbGFzcyBRdWlya3MgOiBwdWJsaWMgQmxvY2tGb3JtYXR0aW5nUXVpcmtzIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIFF1aXJrcyhjb25zdCBUYWJsZVdyYXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250
ZXh0Jik7CiAKQEAgLTY0LDcgKzY1LDcgQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBUYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OlF1aXJrcyhjb25zdCBUYWJsZVdy
YXBwZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCkKLSAgICA6IEJs
b2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCkKKyAgICA6IEJs
b2NrRm9ybWF0dGluZ1F1aXJrcyhmb3JtYXR0aW5nQ29udGV4dCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428727</attachid>
            <date>2021-05-15 09:34:44 -0700</date>
            <delta_ts>2021-05-15 10:50:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225761-20210515093444.patch</filename>
            <type>text/plain</type>
            <size>33415</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQzZDMxZDU4MzUzZTE4
YTFlNmNmOWVhNWM5ZDZkOTQxM2U5ZGQ4My4uYjM4MDg0YmVjYTY0NmIwMDZiMDkwODc5ZDdhNmM3
ZTUxZTg4MTJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIxLTA1LTE1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXSBNb3ZlIGJsb2NrIGZv
cm1hdHRpbmcgcXVpcmtzIHRvIGl0cyBvd24gY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTc2MQorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
dHRpIEtvaXZpc3RvLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bGF5b3V0U3RhdGUgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpsYXlvdXRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OmZv
cm1hdHRpbmdDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0
dGluZ0NvbnRleHQ6OnF1aXJrcyBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzIGNvbnN0KToKKyAgICAg
ICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6
UXVpcmtzOjpmb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6Z2VvbWV0cnkgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpxdWlya3MgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OlF1aXJrcyk6IERlbGV0ZWQuCisgICAg
ICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250
ZXh0UXVpcmtzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2UuY3BwOgorICAgICAgICAqIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVyL1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0
dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6VGFibGVXcmFwcGVyQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpRdWlya3MpOgorCiAyMDIxLTA1LTE1ICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSBNb3ZlIEJsb2NrTWFy
Z2luQ29sbGFwc2UgdG8gaXRzIG93biBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAxNjI2N2VmMzU2
MTQyMzk5OWNlZDIyMGZhNGU1ZDhiYjI1Njc5MjZkLi5iN2RkZDU1OThkZjdkN2E2NjYyNDM1YThi
ZTdiMDRmYjQ1ZjMyNGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTUyMCw3ICsxNTIwLDcgQEAgbGF5
b3V0L0xheW91dFVuaXRzLmNwcAogbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHAKIGxheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKIGxheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cAotbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0
UXVpcmtzLmNwcAorbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRp
bmdRdWlya3MuY3BwCiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0
dGluZ1N0YXRlLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdp
bkNvbGxhcHNlLmNwcAogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9QcmVjb21wdXRl
ZEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTI5NTQ2NzlkNjA2ZjQ3NGVlOWNjZjQ2Y2Qy
MGMwNGRjODEyZTdhZi4uMzE5N2RiZjExYmYwYzNkZGZmNDA1MDY1OWEzNWFhZjU1NzU3ZTEyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTMzMyw2ICsxMzMzLDcgQEAKIAkJNDZFRkFGMTIxRTVGQjlGMTAwRTdGMzRCIC8qIExv
d1Bvd2VyTW9kZU5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkVGQUYxMDFFNUZCOUUxMDBFN0YzNEIgLyogTG93UG93ZXJNb2RlTm90aWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NkYwMkExQTIzNzM3RjgzMDAxMDZBNjQgLyogRXZlbnRMb29wLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjBBQkNBMTIzNjc5QUIzMDBCNDUwODUgLyog
RXZlbnRMb29wLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDZGQ0I2MTgxQTcwODIwRTAwQzVBMjFFIC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzN0IzNzUx
NUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ3Rjk0N0RCMjY1MDJGMkYwMDg3
OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zv
cm1hdHRpbmdRdWlya3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OTI5MUU0
QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi87IH07CiAJCTQ5M0U1
RTA5MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5M0U1RTA4MTJENjQyMDUwMDAy
MDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0OTQ1QkZENDEzQ0Y4MDkwMDBDQzNCMzggLyogVHJh
bnNmb3JtU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ5NDVCRkQyMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oICovOyB9OwpA
QCAtODM4MSw2ICs4MzgyLDcgQEAKIAkJNDZFRkFGMEYxRTVGQjlFMTAwRTdGMzRCIC8qIExvd1Bv
d2VyTW9kZU5vdGlmaWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZFRkFGMTAxRTVGQjlFMTAwRTdGMzRCIC8qIExvd1Bvd2VyTW9kZU5vdGlmaWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExvd1Bvd2VyTW9kZU5vdGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RjkxQkM5MUZDREQwRkUwMDE1OTlDMyAvKiBKU1dv
cmtlck5hdmlnYXRvckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dvcmtlck5hdmlnYXRvckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ3Rjk0N0RBMjY1MDJGMkYwMDg3OTY4QyAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5nUXVpcmtz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MjkxRTRBMTM0MTcyQzgwMEU3NTNE
RSAvKiBJbWFnZVJlbmRlcmluZ01vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW1hZ2VSZW5kZXJpbmdNb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5
M0U1RTA4MTJENjQyMDUwMDAyMDA4MSAvKiBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5NDVCRkQxMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFu
c2Zvcm1TdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFu
c2Zvcm1TdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05OTczLDcgKzk5
NzUsNyBAQAogCQk2RjdDQTNDODIwOEMyQjJFMDAyRjI5QUIgLyogSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY3Q0EzQzkyMDhDMkIyRTAwMkYyOUFCIC8qIElubGlu
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElubGluZUZvcm1hdHRp
bmdDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY4RjQ2MDEyMUIw
M0JCNDAwNDFBQzNBIC8qIEZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJNkY4RjQ2MDMyMUIwM0JDNjAwNDFBQzNBIC8qIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1
aXJrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGOEY0NjAzMjFCMDNCQzYw
MDQxQUMzQSAvKiBCbG9ja0Zvcm1hdHRpbmdRdWlya3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmxpbmVMaW5lR2VvbWV0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5NURFNEIyMzdCODg5QjAwRTUxN0UxIC8qIEludmFsaWRh
dGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW52YWxpZGF0
aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2Rjk1REU0QzIzN0I4
ODlDMDBFNTE3RTEgLyogSW52YWxpZGF0aW9uU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW52YWxpZGF0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE4MjMwLDcgKzE4MjMyLDggQEAKIAkJCQkxMTVDRkE2RDIwOEFGQUI2MDAxRTY5OTEg
LyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgKi8sCiAJCQkJMTE1Q0ZBNkMyMDhBRkFCNjAw
MUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCAqLywKIAkJCQk2RjA4MzBERjIwQjQ2
OTUxMDA4QTk0NUIgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcCAqLywKLQkJ
CQk2RjhGNDYwMzIxQjAzQkM2MDA0MUFDM0EgLyogQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJr
cy5jcHAgKi8sCisJCQkJNkY4RjQ2MDMyMUIwM0JDNjAwNDFBQzNBIC8qIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrcy5jcHAgKi8sCisJCQkJNDdGOTQ3REEyNjUwMkYyRjAwODc5NjhDIC8qIEJsb2NrRm9y
bWF0dGluZ1F1aXJrcy5oICovLAogCQkJCTExNUNGQTc5MjA4QjhEOUQwMDFFNjk5MSAvKiBCbG9j
a0Zvcm1hdHRpbmdTdGF0ZS5jcHAgKi8sCiAJCQkJMTE1Q0ZBNzgyMDhCOEQ5RDAwMUU2OTkxIC8q
IEJsb2NrRm9ybWF0dGluZ1N0YXRlLmggKi8sCiAJCQkJMTE1Q0ZBODkyMDhCOTIxQTAwMUU2OTkx
IC8qIEJsb2NrTWFyZ2luQ29sbGFwc2UuY3BwICovLApAQCAtMzE2NjcsNiArMzE2NzAsNyBAQAog
CQkJCTJFQjRCQ0QzMTIxRjAzRTMwMEVDNDg4NSAvKiBCbG9iUmVzb3VyY2VIYW5kbGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk3NkQ2QzdGMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxMTVDRkE2RTIwOEFGQUI3MDAxRTY5OTEgLyogQmxvY2tGb3JtYXR0
aW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDdGOTQ3REIyNjUwMkYyRjAwODc5NjhD
IC8qIEJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTE1Q0ZBN0Ey
MDhCOEQ5RDAwMUU2OTkxIC8qIEJsb2NrRm9ybWF0dGluZ1N0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk2RjZERjM2RjI2NDcyMkVBMDA5M0U4MzQgLyogQmxvY2tNYXJnaW5Db2xsYXBzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI1RTEwRTgxQkU4NzAwQjI1OTY1IC8qIEJvcmRlckRhdGEu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDJkYTUyYjY1Mzll
ZTZjMzBmNmM4Mzc2NThjNzJhOTNmYWNhMmU4YzcuLjRmNWIxZjdiNTU0MjRkY2Q2MjZkNmY3ZDgz
Yzc1NmE2OTY5MDQ2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTExMCw2ICsxMTAs
MjEgQEAgcHVibGljOgogICAgIExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSgpIGNvbnN0OwogICAg
IGNvbnN0IEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nU3RhdGU7IH0KIAorICAgIGNsYXNzIFF1aXJrcyB7CisgICAgcHVibGljOgor
ICAgICAgICBRdWlya3MoY29uc3QgRm9ybWF0dGluZ0NvbnRleHQmKTsKKworICAgICAgICBMYXlv
dXRVbml0IGhlaWdodFZhbHVlT2ZOZWFyZXN0Q29udGFpbmluZ0Jsb2NrV2l0aEZpeGVkSGVpZ2h0
KGNvbnN0IEJveCYpOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBjb25zdCBMYXlvdXRTdGF0
ZSYgbGF5b3V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0LmxheW91
dFN0YXRlKCk7IH0KKyAgICAgICAgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpOyB9CisgICAgICAgIGNvbnN0IEZvcm1h
dHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0
dGluZ0NvbnRleHQ7IH0KKworICAgICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgbV9mb3Jt
YXR0aW5nQ29udGV4dDsKKyAgICB9OworICAgIEZvcm1hdHRpbmdDb250ZXh0OjpRdWlya3MgcXVp
cmtzKCkgY29uc3QgeyByZXR1cm4gUXVpcmtzKCp0aGlzKTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAg
dXNpbmcgTGF5b3V0UXVldWUgPSBWZWN0b3I8Y29uc3QgQm94Kj47CiAKQEAgLTE5NiwyMSArMjEx
LDYgQEAgcHJvdGVjdGVkOgogICAgIH07CiAgICAgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
IGdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gR2VvbWV0cnkoKnRoaXMpOyB9CiAKLSAgICBjbGFz
cyBRdWlya3MgewotICAgIHB1YmxpYzoKLSAgICAgICAgUXVpcmtzKGNvbnN0IEZvcm1hdHRpbmdD
b250ZXh0Jik7Ci0KLSAgICAgICAgTGF5b3V0VW5pdCBoZWlnaHRWYWx1ZU9mTmVhcmVzdENvbnRh
aW5pbmdCbG9ja1dpdGhGaXhlZEhlaWdodChjb25zdCBCb3gmKTsKLQotICAgIHByb3RlY3RlZDoK
LSAgICAgICAgY29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9mb3JtYXR0aW5nQ29udGV4dC5sYXlvdXRTdGF0ZSgpOyB9Ci0gICAgICAgIExheW91dFN0YXRl
JiBsYXlvdXRTdGF0ZSgpIHsgcmV0dXJuIG1fZm9ybWF0dGluZ0NvbnRleHQubGF5b3V0U3RhdGUo
KTsgfQotICAgICAgICBjb25zdCBGb3JtYXR0aW5nQ29udGV4dCYgZm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdHRpbmdDb250ZXh0OyB9Ci0KLSAgICAgICAgY29uc3Qg
Rm9ybWF0dGluZ0NvbnRleHQmIG1fZm9ybWF0dGluZ0NvbnRleHQ7Ci0gICAgfTsKLSAgICBGb3Jt
YXR0aW5nQ29udGV4dDo6UXVpcmtzIHF1aXJrcygpIGNvbnN0IHsgcmV0dXJuIFF1aXJrcygqdGhp
cyk7IH0KLQogcHJpdmF0ZToKICAgICB2b2lkIGNvbGxlY3RPdXRPZkZsb3dEZXNjZW5kYW50c0lm
TmVlZGVkKCk7CiAgICAgdm9pZCBjb21wdXRlT3V0T2ZGbG93VmVydGljYWxHZW9tZXRyeShjb25z
dCBCb3gmLCBjb25zdCBDb25zdHJhaW50c0Zvck91dE9mRmxvd0NvbnRlbnQmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tG
b3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCmluZGV4IGQzNzQ1Mzk2OGY3
YThiZGY1OWZkYjIyZjY0NjE2MDZkNzQyNGRkNzMuLjVmZDg5OWRhODhlNmQ1ZGZhNGY4OTUxY2Iy
OGJiZGY1MGU1MWE2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRU
SU5HX0NPTlRFWFQpCiAKKyNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNs
dWRlICJCbG9ja0Zvcm1hdHRpbmdTdGF0ZS5oIgogI2luY2x1ZGUgIkJsb2NrTWFyZ2luQ29sbGFw
c2UuaCIKICNpbmNsdWRlICJGbG9hdGluZ0NvbnRleHQuaCIKQEAgLTYwNSw2ICs2MDYsMTEgQEAg
QmxvY2tNYXJnaW5Db2xsYXBzZSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjptYXJnaW5Db2xsYXBz
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEJsb2NrTWFyZ2luQ29sbGFwc2UoKnRoaXMpOwogfQogCitC
bG9ja0Zvcm1hdHRpbmdRdWlya3MgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6cXVpcmtzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gQmxvY2tGb3JtYXR0aW5nUXVpcmtzKCp0aGlzKTsKK30KKwogfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
b3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IGJm
ODkwMzBkZTlkYTU1Y2U0MWNlMGZiNzEyMTU1YzVkMWM4M2UwZDYuLjJkOTA0OGM1OGFiY2Y0YjQ5
MjdlMDZlYjJhOTEwM2VlNjU4ZGE3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svQmxvY2tGb3Jt
YXR0aW5nQ29udGV4dC5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIExheW91dFVuaXQ7CiBuYW1l
c3BhY2UgTGF5b3V0IHsKIAogY2xhc3MgQm94OworY2xhc3MgQmxvY2tGb3JtYXR0aW5nUXVpcmtz
OwogY2xhc3MgQmxvY2tNYXJnaW5Db2xsYXBzZTsKIGNsYXNzIEZsb2F0aW5nQ29udGV4dDsKIApA
QCAtNTQsMjIgKzU1LDggQEAgcHVibGljOgogCiAgICAgY29uc3QgQmxvY2tGb3JtYXR0aW5nU3Rh
dGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9ybWF0
dGluZ1N0YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CiAKLSAg
ICBjbGFzcyBRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyB7Ci0gICAg
cHVibGljOgotICAgICAgICBRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOwot
Ci0gICAgICAgIGJvb2wgbmVlZHNTdHJldGNoaW5nKGNvbnN0IEJveCYpIGNvbnN0OwotICAgICAg
ICBMYXlvdXRVbml0IHN0cmV0Y2hlZEluRmxvd0hlaWdodChjb25zdCBCb3gmLCBDb250ZW50SGVp
Z2h0QW5kTWFyZ2luKTsKLQotICAgICAgICBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJr
TWFyZ2luKGNvbnN0IEJveCYpIGNvbnN0OwotICAgICAgICBib29sIHNob3VsZENvbGxhcHNlTWFy
Z2luQmVmb3JlV2l0aFBhcmVudE1hcmdpbkJlZm9yZShjb25zdCBCb3gmKSBjb25zdDsKLSAgICAg
ICAgYm9vbCBzaG91bGRDb2xsYXBzZU1hcmdpbkFmdGVyV2l0aFBhcmVudE1hcmdpbkFmdGVyKGNv
bnN0IEJveCYpIGNvbnN0OwotCi0gICAgICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQm
IGZvcm1hdHRpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0
aW5nQ29udGV4dD4oRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQo
KSk7IH0KLSAgICAgICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnkgZ2VvbWV0cnko
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5KCk7IH0KLQotICAg
IH07Ci0gICAgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzIHF1aXJrcygpIGNvbnN0IHsg
cmV0dXJuIFF1aXJrcygqdGhpcyk7IH0KKyAgICBCbG9ja0Zvcm1hdHRpbmdRdWlya3MgcXVpcmtz
KCkgY29uc3Q7CisgICAgQmxvY2tNYXJnaW5Db2xsYXBzZSBtYXJnaW5Db2xsYXBzZSgpIGNvbnN0
OwogCiAgICAgLy8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHBvc2l0aW9uaW5nIGFuZCBzaXppbmcg
Zm9yIGJveGVzIHBhcnRpY2lwYXRpbmcgaW4gYSBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQuCiAg
ICAgY2xhc3MgR2VvbWV0cnkgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5IHsK
QEAgLTEyMCw3ICsxMDcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgT3B0aW9uYWw8TGF5b3V0VW5pdD4g
dXNlZEF2YWlsYWJsZVdpZHRoRm9yRmxvYXRBdm9pZGVyKGNvbnN0IEZsb2F0aW5nQ29udGV4dCYs
IGNvbnN0IEJveCYsIGNvbnN0IENvbnN0cmFpbnRzUGFpciYpOwogICAgIHZvaWQgdXBkYXRlTWFy
Z2luQWZ0ZXJGb3JQcmV2aW91c1NpYmxpbmcoY29uc3QgQm94Jik7CiAKLSAgICBCbG9ja01hcmdp
bkNvbGxhcHNlIG1hcmdpbkNvbGxhcHNlKCkgY29uc3Q7CiAgICAgQmxvY2tGb3JtYXR0aW5nU3Rh
dGUmIGZvcm1hdHRpbmdTdGF0ZSgpIHsgcmV0dXJuIGRvd25jYXN0PEJsb2NrRm9ybWF0dGluZ1N0
YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CiAKICNpZiBBU1NF
UlRfRU5BQkxFRApAQCAtMTM3LDExICsxMjMsNiBAQCBpbmxpbmUgQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dDo6R2VvbWV0cnk6Okdlb21ldHJ5KGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmCiB7
CiB9CiAKLWlubGluZSBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OlF1aXJrcyhjb25z
dCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0JiBibG9ja0Zvcm1hdHRpbmdDb250ZXh0KQotICAgIDog
Rm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyhibG9ja0Zvcm1hdHRpbmdDb250ZXh0KQotewotfQot
CiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29u
dGV4dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ0NvbnRl
eHRRdWlya3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWIwODg0MjAzZGM4
NmE2NzM2YWJjOGViZGFmMmE1ZWYxZDU4NmFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgiCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1B
VFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1N0YXRlLmgiCi0jaW5j
bHVkZSAiTGF5b3V0Qm94LmgiCi0jaW5jbHVkZSAiTGF5b3V0Qm94R2VvbWV0cnkuaCIKLSNpbmNs
dWRlICJMYXlvdXRDb250YWluZXJCb3guaCIKLSNpbmNsdWRlICJMYXlvdXRJbml0aWFsQ29udGFp
bmluZ0Jsb2NrLmgiCi0jaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLXN0YXRpYyBib29sIGlzUXVpcmtDb250YWluZXIo
Y29uc3QgQm94JiBsYXlvdXRCb3gpCi17Ci0gICAgcmV0dXJuIGxheW91dEJveC5pc0JvZHlCb3go
KSB8fCBsYXlvdXRCb3guaXNEb2N1bWVudEJveCgpIHx8IGxheW91dEJveC5pc1RhYmxlQ2VsbCgp
OwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6bmVlZHNTdHJldGNo
aW5nKGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAotewotICAgIEFTU0VSVChsYXlvdXRCb3gu
aXNJbkZsb3coKSk7Ci0gICAgLy8gSW4gcXVpcmtzIG1vZGUsIGluLWZsb3cgYm9keSBhbmQgaHRt
bCBzdHJldGNoIHRvIHRoZSBpbml0aWFsIGNvbnRhaW5pbmcgYmxvY2sgKGhlaWdodDogYXV0byBv
bmx5KS4KLSAgICBpZiAoIWxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIGlmICghbGF5b3V0Qm94LmlzRG9jdW1lbnRCb3goKSAmJiAhbGF5
b3V0Qm94LmlzQm9keUJveCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4g
bGF5b3V0Qm94LnN0eWxlKCkubG9naWNhbEhlaWdodCgpLmlzQXV0bygpOwotfQotCi1MYXlvdXRV
bml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c3RyZXRjaGVkSW5GbG93SGVpZ2h0
KGNvbnN0IEJveCYgbGF5b3V0Qm94LCBDb250ZW50SGVpZ2h0QW5kTWFyZ2luIGNvbnRlbnRIZWln
aHRBbmRNYXJnaW4pCi17Ci0gICAgQVNTRVJUKG5lZWRzU3RyZXRjaGluZyhsYXlvdXRCb3gpKTsK
LSAgICBhdXRvJiBmb3JtYXR0aW5nQ29udGV4dCA9IHRoaXMtPmZvcm1hdHRpbmdDb250ZXh0KCk7
Ci0gICAgYXV0byBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRN
YXJnaW4ubm9uQ29sbGFwc2VkTWFyZ2luLmJlZm9yZSArIGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyOwotCi0gICAgaWYgKGxheW91dEJveC5pc0RvY3VtZW50
Qm94KCkpIHsKLSAgICAgICAgLy8gTGV0J3Mgc3RyZXRjaCB0aGUgaW5mbG93IGRvY3VtZW50IGJv
eCg8aHRtbD4pIHRvIHRoZSBoZWlnaHQgb2YgdGhlIGluaXRpYWwgY29udGFpbmluZyBibG9jayAo
dmlldykuCi0gICAgICAgIGF1dG8gZG9jdW1lbnRCb3hDb250ZW50SGVpZ2h0ID0gZm9ybWF0dGlu
Z0NvbnRleHQuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94LmluaXRpYWxDb250YWluaW5nQmxvY2so
KSwgRXNjYXBlUmVhc29uOjpEb2N1bWVudEJveFN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuY29u
dGVudEJveEhlaWdodCgpOwotICAgICAgICAvLyBEb2N1bWVudCBib3gncyBvd24gdmVydGljYWwg
bWFyZ2luL2JvcmRlci9wYWRkaW5nIHZhbHVlcyBhbHdheXMgc2hyaW5rIHRoZSBjb250ZW50IGhl
aWdodC4KLSAgICAgICAgYXV0byYgZG9jdW1lbnRCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0gICAgICAgIGRvY3VtZW50Qm94Q29udGVu
dEhlaWdodCAtPSBub25Db2xsYXBzZWRWZXJ0aWNhbE1hcmdpbiArIGRvY3VtZW50Qm94R2VvbWV0
cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5n
KCkudmFsdWVPcigwKTsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNvbnRlbnRIZWlnaHRBbmRN
YXJnaW4uY29udGVudEhlaWdodCwgIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCk7Ci0gICAgfQot
Ci0gICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5IHBhcnQgZm9yIGJvZHkgYm94IHdoZW4gaXQgc3Ry
ZXRjaGVzIGFsbCB0aGUgd2F5IHRvIHRoZSBJQ0IgZXZlbiB3aGVuIHRoZSBkb2N1bWVudCBib3gg
ZG9lcyBub3QgKGUuZy4gb3V0LW9mLWZsb3cgcG9zaXRpb25lZCkuCi0gICAgQVNTRVJUKGxheW91
dEJveC5pc0JvZHlCb3goKSk7Ci0gICAgYXV0byYgaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9IGxh
eW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Jsb2NrKCk7Ci0gICAgYXV0byYgaW5pdGlhbENvbnRh
aW5pbmdCbG9ja0dlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goaW5p
dGlhbENvbnRhaW5pbmdCbG9jaywgRXNjYXBlUmVhc29uOjpCb2R5U3RyZXRjaGVzVG9WaWV3cG9y
dFF1aXJrKTsKLSAgICAvLyBTdGFydCB0aGUgY29udGVudCBoZWlnaHQgd2l0aCB0aGUgSUNCLgot
ICAgIGF1dG8gYm9keUJveENvbnRlbnRIZWlnaHQgPSBpbml0aWFsQ29udGFpbmluZ0Jsb2NrR2Vv
bWV0cnkuY29udGVudEJveEhlaWdodCgpOwotICAgIC8vIEJvZHkgYm94J3Mgb3duIGJvcmRlciBh
bmQgcGFkZGluZyBzaHJpbmsgdGhlIGNvbnRlbnQgaGVpZ2h0LgotICAgIGF1dG8mIGJvZHlCb3hH
ZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7Ci0g
ICAgYm9keUJveENvbnRlbnRIZWlnaHQgLT0gYm9keUJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVy
KCkgKyBib2R5Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKLSAgICAv
LyBCb2R5IGJveCBuZXZlciBjb2xsYXBzZXMgaXRzIHZlcnRpY2FsIG1hcmdpbnMgd2l0aCB0aGUg
ZG9jdW1lbnQgYm94IGJ1dCBpdCBtaWdodCBjb2xsYXBzZSBpdHMgbWFyZ2luIHdpdGggaXRzIGRl
c2NlbmRhbnRzLgotICAgIGF1dG8gbm9uQ29sbGFwc2VkTWFyZ2luID0gY29udGVudEhlaWdodEFu
ZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW47Ci0gICAgYXV0byBjb2xsYXBzZWRNYXJnaW4gPSBm
b3JtYXR0aW5nQ29udGV4dC5tYXJnaW5Db2xsYXBzZSgpLmNvbGxhcHNlZFZlcnRpY2FsVmFsdWVz
KGxheW91dEJveCwgbm9uQ29sbGFwc2VkTWFyZ2luKS5jb2xsYXBzZWRWYWx1ZXM7Ci0gICAgYXV0
byB1c2VkVmVydGljYWxNYXJnaW4gPSBjb2xsYXBzZWRNYXJnaW4uYmVmb3JlLnZhbHVlT3Iobm9u
Q29sbGFwc2VkTWFyZ2luLmJlZm9yZSk7Ci0gICAgdXNlZFZlcnRpY2FsTWFyZ2luICs9IGNvbGxh
cHNlZE1hcmdpbi5pc0NvbGxhcHNlZFRocm91Z2ggPyBub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIg
OiBjb2xsYXBzZWRNYXJnaW4uYWZ0ZXIudmFsdWVPcihub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXIp
OwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IHVzZWRWZXJ0aWNhbE1hcmdpbjsKLSAgICAv
LyBEb2N1bWVudCBib3gncyBwYWRkaW5nIGFuZCBib3JkZXIgYWxzbyBzaHJpbmsgdGhlIGJvZHkg
Ym94J3MgY29udGVudCBoZWlnaHQuCi0gICAgYXV0byYgZG9jdW1lbnRCb3ggPSBsYXlvdXRCb3gu
cGFyZW50KCk7Ci0gICAgYXV0byYgZG9jdW1lbnRCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250
ZXh0Lmdlb21ldHJ5Rm9yQm94KGRvY3VtZW50Qm94LCBFc2NhcGVSZWFzb246OkJvZHlTdHJldGNo
ZXNUb1ZpZXdwb3J0UXVpcmspOwotICAgIGJvZHlCb3hDb250ZW50SGVpZ2h0IC09IGRvY3VtZW50
Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGlj
YWxQYWRkaW5nKCkudmFsdWVPcigwKTsKLSAgICAvLyBIb3dldmVyIHRoZSBub24taW4tZmxvdyBk
b2N1bWVudCBib3gncyB2ZXJ0aWNhbCBtYXJnaW5zIGFyZSBpZ25vcmVkLiBUaGV5IGRvbid0IGFm
ZmVjdCB0aGUgYm9keSBib3gncyBjb250ZW50IGhlaWdodC4KLSAgICBpZiAoZG9jdW1lbnRCb3gu
aXNJbkZsb3coKSkgewotICAgICAgICBhdXRvIGdlb21ldHJ5ID0gdGhpcy0+Z2VvbWV0cnkoKTsK
LSAgICAgICAgYXV0byBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbiA9IGdlb21l
dHJ5LmNvbXB1dGVkVmVydGljYWxNYXJnaW4oZG9jdW1lbnRCb3gsIGdlb21ldHJ5LmNvbnN0cmFp
bnRzRm9ySW5GbG93Q29udGVudChpbml0aWFsQ29udGFpbmluZ0Jsb2NrLCBFc2NhcGVSZWFzb246
OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0UXVpcmspLmhvcml6b250YWwpOwotICAgICAgICBib2R5
Qm94Q29udGVudEhlaWdodCAtPSBwcmVjb21wdXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5i
ZWZvcmUudmFsdWVPcigwKSArIHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmFm
dGVyLnZhbHVlT3IoMCk7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0
QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQsICBib2R5Qm94Q29udGVudEhlaWdodCk7Ci19Ci0KLWJv
b2wgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpzaG91bGRJZ25vcmVDb2xsYXBzZWRR
dWlya01hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29uc3QKLXsKLSAgICByZXR1cm4gbGF5
b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveCk7
Ci19Ci0KLWVudW0gY2xhc3MgVmVydGljYWxNYXJnaW4geyBCZWZvcmUsIEFmdGVyIH07Ci1zdGF0
aWMgaW5saW5lIGJvb2wgaGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1hcmdpbikKLXsKLSAgICBpZiAoIWxheW91dEJv
eC5pc0luRmxvdygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYXV0byYgc3R5bGUgPSBs
YXlvdXRCb3guc3R5bGUoKTsKLSAgICByZXR1cm4gKHZlcnRpY2FsTWFyZ2luID09IFZlcnRpY2Fs
TWFyZ2luOjpCZWZvcmUgJiYgc3R5bGUuaGFzTWFyZ2luQmVmb3JlUXVpcmsoKSkgfHwgKHZlcnRp
Y2FsTWFyZ2luID09IFZlcnRpY2FsTWFyZ2luOjpBZnRlciAmJiBzdHlsZS5oYXNNYXJnaW5BZnRl
clF1aXJrKCkpOwotfQotCi1ib29sIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6c2hv
dWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVmb3JlKGNvbnN0IEJveCYg
bGF5b3V0Qm94KSBjb25zdAotewotICAgIHJldHVybiBsYXlvdXRTdGF0ZSgpLmluUXVpcmtzTW9k
ZSgpICYmIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gsIFZlcnRpY2FsTWFyZ2lu
OjpCZWZvcmUpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNvbnRhaW5pbmdCbG9jaygp
KTsKLX0KLQotYm9vbCBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0OjpRdWlya3M6OnNob3VsZENvbGxh
cHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRCb3gp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYgaGFz
UXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkFmdGVyKSAm
JiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Ci19Ci0KLX0K
LX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmFiMzUzMjllNTAzYjZhMDhiNDkzN2QzYWFkYzYzYjM1NzY2NGU3Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4
dHMvYmxvY2svQmxvY2tGb3JtYXR0aW5nUXVpcmtzLmNwcApAQCAtMCwwICsxLDEzNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdR
dWlya3MuaCIKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisjaW5j
bHVkZSAiQmxvY2tGb3JtYXR0aW5nU3RhdGUuaCIKKyNpbmNsdWRlICJMYXlvdXRCb3guaCIKKyNp
bmNsdWRlICJMYXlvdXRCb3hHZW9tZXRyeS5oIgorI2luY2x1ZGUgIkxheW91dENvbnRhaW5lckJv
eC5oIgorI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCIKKyNpbmNsdWRl
ICJMYXlvdXRTdGF0ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2UgTGF5b3V0
IHsKKworc3RhdGljIGJvb2wgaXNRdWlya0NvbnRhaW5lcihjb25zdCBCb3gmIGxheW91dEJveCkK
K3sKKyAgICByZXR1cm4gbGF5b3V0Qm94LmlzQm9keUJveCgpIHx8IGxheW91dEJveC5pc0RvY3Vt
ZW50Qm94KCkgfHwgbGF5b3V0Qm94LmlzVGFibGVDZWxsKCk7Cit9CisKK0Jsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6QmxvY2tGb3JtYXR0aW5nUXVpcmtzKGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQmIGJsb2NrRm9ybWF0dGluZ0NvbnRleHQpCisgICAgOiBGb3JtYXR0aW5nQ29udGV4dDo6UXVp
cmtzKGJsb2NrRm9ybWF0dGluZ0NvbnRleHQpCit7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5n
UXVpcmtzOjpuZWVkc1N0cmV0Y2hpbmcoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGxheW91dEJveC5pc0luRmxvdygpKTsKKyAgICAvLyBJbiBxdWlya3MgbW9kZSwg
aW4tZmxvdyBib2R5IGFuZCBodG1sIHN0cmV0Y2ggdG8gdGhlIGluaXRpYWwgY29udGFpbmluZyBi
bG9jayAoaGVpZ2h0OiBhdXRvIG9ubHkpLgorICAgIGlmICghbGF5b3V0U3RhdGUoKS5pblF1aXJr
c01vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFsYXlvdXRCb3guaXNE
b2N1bWVudEJveCgpICYmICFsYXlvdXRCb3guaXNCb2R5Qm94KCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHJldHVybiBsYXlvdXRCb3guc3R5bGUoKS5sb2dpY2FsSGVpZ2h0KCkuaXNB
dXRvKCk7Cit9CisKK0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpzdHJldGNoZWRJ
bkZsb3dIZWlnaHQoY29uc3QgQm94JiBsYXlvdXRCb3gsIENvbnRlbnRIZWlnaHRBbmRNYXJnaW4g
Y29udGVudEhlaWdodEFuZE1hcmdpbikKK3sKKyAgICBBU1NFUlQobmVlZHNTdHJldGNoaW5nKGxh
eW91dEJveCkpOworICAgIGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGlu
Z0NvbnRleHQoKTsKKyAgICBhdXRvIG5vbkNvbGxhcHNlZFZlcnRpY2FsTWFyZ2luID0gY29udGVu
dEhlaWdodEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYmVmb3JlICsgY29udGVudEhlaWdo
dEFuZE1hcmdpbi5ub25Db2xsYXBzZWRNYXJnaW4uYWZ0ZXI7CisKKyAgICBpZiAobGF5b3V0Qm94
LmlzRG9jdW1lbnRCb3goKSkgeworICAgICAgICAvLyBMZXQncyBzdHJldGNoIHRoZSBpbmZsb3cg
ZG9jdW1lbnQgYm94KDxodG1sPikgdG8gdGhlIGhlaWdodCBvZiB0aGUgaW5pdGlhbCBjb250YWlu
aW5nIGJsb2NrICh2aWV3KS4KKyAgICAgICAgYXV0byBkb2N1bWVudEJveENvbnRlbnRIZWlnaHQg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3guaW5pdGlhbENvbnRh
aW5pbmdCbG9jaygpLCBGb3JtYXR0aW5nQ29udGV4dDo6RXNjYXBlUmVhc29uOjpEb2N1bWVudEJv
eFN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyaykuY29udGVudEJveEhlaWdodCgpOworICAgICAgICAv
LyBEb2N1bWVudCBib3gncyBvd24gdmVydGljYWwgbWFyZ2luL2JvcmRlci9wYWRkaW5nIHZhbHVl
cyBhbHdheXMgc2hyaW5rIHRoZSBjb250ZW50IGhlaWdodC4KKyAgICAgICAgYXV0byYgZG9jdW1l
bnRCb3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGxheW91dEJv
eCk7CisgICAgICAgIGRvY3VtZW50Qm94Q29udGVudEhlaWdodCAtPSBub25Db2xsYXBzZWRWZXJ0
aWNhbE1hcmdpbiArIGRvY3VtZW50Qm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGRvY3Vt
ZW50Qm94R2VvbWV0cnkudmVydGljYWxQYWRkaW5nKCkudmFsdWVPcigwKTsKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bWF4KGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4uY29udGVudEhlaWdodCwgIGRvY3Vt
ZW50Qm94Q29udGVudEhlaWdodCk7CisgICAgfQorCisgICAgLy8gSGVyZSBpcyB0aGUgcXVpcmt5
IHBhcnQgZm9yIGJvZHkgYm94IHdoZW4gaXQgc3RyZXRjaGVzIGFsbCB0aGUgd2F5IHRvIHRoZSBJ
Q0IgZXZlbiB3aGVuIHRoZSBkb2N1bWVudCBib3ggZG9lcyBub3QgKGUuZy4gb3V0LW9mLWZsb3cg
cG9zaXRpb25lZCkuCisgICAgQVNTRVJUKGxheW91dEJveC5pc0JvZHlCb3goKSk7CisgICAgYXV0
byYgaW5pdGlhbENvbnRhaW5pbmdCbG9jayA9IGxheW91dEJveC5pbml0aWFsQ29udGFpbmluZ0Js
b2NrKCk7CisgICAgYXV0byYgaW5pdGlhbENvbnRhaW5pbmdCbG9ja0dlb21ldHJ5ID0gZm9ybWF0
dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goaW5pdGlhbENvbnRhaW5pbmdCbG9jaywgRm9ybWF0
dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyayk7
CisgICAgLy8gU3RhcnQgdGhlIGNvbnRlbnQgaGVpZ2h0IHdpdGggdGhlIElDQi4KKyAgICBhdXRv
IGJvZHlCb3hDb250ZW50SGVpZ2h0ID0gaW5pdGlhbENvbnRhaW5pbmdCbG9ja0dlb21ldHJ5LmNv
bnRlbnRCb3hIZWlnaHQoKTsKKyAgICAvLyBCb2R5IGJveCdzIG93biBib3JkZXIgYW5kIHBhZGRp
bmcgc2hyaW5rIHRoZSBjb250ZW50IGhlaWdodC4KKyAgICBhdXRvJiBib2R5Qm94R2VvbWV0cnkg
PSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAgIGJvZHlC
b3hDb250ZW50SGVpZ2h0IC09IGJvZHlCb3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgYm9k
eUJveEdlb21ldHJ5LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7CisgICAgLy8gQm9keSBi
b3ggbmV2ZXIgY29sbGFwc2VzIGl0cyB2ZXJ0aWNhbCBtYXJnaW5zIHdpdGggdGhlIGRvY3VtZW50
IGJveCBidXQgaXQgbWlnaHQgY29sbGFwc2UgaXRzIG1hcmdpbiB3aXRoIGl0cyBkZXNjZW5kYW50
cy4KKyAgICBhdXRvIG5vbkNvbGxhcHNlZE1hcmdpbiA9IGNvbnRlbnRIZWlnaHRBbmRNYXJnaW4u
bm9uQ29sbGFwc2VkTWFyZ2luOworICAgIGF1dG8gY29sbGFwc2VkTWFyZ2luID0gZm9ybWF0dGlu
Z0NvbnRleHQubWFyZ2luQ29sbGFwc2UoKS5jb2xsYXBzZWRWZXJ0aWNhbFZhbHVlcyhsYXlvdXRC
b3gsIG5vbkNvbGxhcHNlZE1hcmdpbikuY29sbGFwc2VkVmFsdWVzOworICAgIGF1dG8gdXNlZFZl
cnRpY2FsTWFyZ2luID0gY29sbGFwc2VkTWFyZ2luLmJlZm9yZS52YWx1ZU9yKG5vbkNvbGxhcHNl
ZE1hcmdpbi5iZWZvcmUpOworICAgIHVzZWRWZXJ0aWNhbE1hcmdpbiArPSBjb2xsYXBzZWRNYXJn
aW4uaXNDb2xsYXBzZWRUaHJvdWdoID8gbm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyIDogY29sbGFw
c2VkTWFyZ2luLmFmdGVyLnZhbHVlT3Iobm9uQ29sbGFwc2VkTWFyZ2luLmFmdGVyKTsKKyAgICBi
b2R5Qm94Q29udGVudEhlaWdodCAtPSB1c2VkVmVydGljYWxNYXJnaW47CisgICAgLy8gRG9jdW1l
bnQgYm94J3MgcGFkZGluZyBhbmQgYm9yZGVyIGFsc28gc2hyaW5rIHRoZSBib2R5IGJveCdzIGNv
bnRlbnQgaGVpZ2h0LgorICAgIGF1dG8mIGRvY3VtZW50Qm94ID0gbGF5b3V0Qm94LnBhcmVudCgp
OworICAgIGF1dG8mIGRvY3VtZW50Qm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9t
ZXRyeUZvckJveChkb2N1bWVudEJveCwgRm9ybWF0dGluZ0NvbnRleHQ6OkVzY2FwZVJlYXNvbjo6
Qm9keVN0cmV0Y2hlc1RvVmlld3BvcnRRdWlyayk7CisgICAgYm9keUJveENvbnRlbnRIZWlnaHQg
LT0gZG9jdW1lbnRCb3hHZW9tZXRyeS52ZXJ0aWNhbEJvcmRlcigpICsgZG9jdW1lbnRCb3hHZW9t
ZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDApOworICAgIC8vIEhvd2V2ZXIgdGhlIG5v
bi1pbi1mbG93IGRvY3VtZW50IGJveCdzIHZlcnRpY2FsIG1hcmdpbnMgYXJlIGlnbm9yZWQuIFRo
ZXkgZG9uJ3QgYWZmZWN0IHRoZSBib2R5IGJveCdzIGNvbnRlbnQgaGVpZ2h0LgorICAgIGlmIChk
b2N1bWVudEJveC5pc0luRmxvdygpKSB7CisgICAgICAgIGF1dG8gZ2VvbWV0cnkgPSB0aGlzLT5n
ZW9tZXRyeSgpOworICAgICAgICBhdXRvIHByZWNvbXB1dGVEb2N1bWVudEJveFZlcnRpY2FsTWFy
Z2luID0gZ2VvbWV0cnkuY29tcHV0ZWRWZXJ0aWNhbE1hcmdpbihkb2N1bWVudEJveCwgZ2VvbWV0
cnkuY29uc3RyYWludHNGb3JJbkZsb3dDb250ZW50KGluaXRpYWxDb250YWluaW5nQmxvY2ssIEZv
cm1hdHRpbmdDb250ZXh0OjpFc2NhcGVSZWFzb246OkJvZHlTdHJldGNoZXNUb1ZpZXdwb3J0UXVp
cmspLmhvcml6b250YWwpOworICAgICAgICBib2R5Qm94Q29udGVudEhlaWdodCAtPSBwcmVjb21w
dXRlRG9jdW1lbnRCb3hWZXJ0aWNhbE1hcmdpbi5iZWZvcmUudmFsdWVPcigwKSArIHByZWNvbXB1
dGVEb2N1bWVudEJveFZlcnRpY2FsTWFyZ2luLmFmdGVyLnZhbHVlT3IoMCk7CisgICAgfQorICAg
IHJldHVybiBzdGQ6Om1heChjb250ZW50SGVpZ2h0QW5kTWFyZ2luLmNvbnRlbnRIZWlnaHQsICBi
b2R5Qm94Q29udGVudEhlaWdodCk7Cit9CisKK2Jvb2wgQmxvY2tGb3JtYXR0aW5nUXVpcmtzOjpz
aG91bGRJZ25vcmVDb2xsYXBzZWRRdWlya01hcmdpbihjb25zdCBCb3gmIGxheW91dEJveCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbGF5b3V0U3RhdGUoKS5pblF1aXJrc01vZGUoKSAmJiBpc1F1aXJr
Q29udGFpbmVyKGxheW91dEJveCk7Cit9CisKK2VudW0gY2xhc3MgVmVydGljYWxNYXJnaW4geyBC
ZWZvcmUsIEFmdGVyIH07CitzdGF0aWMgaW5saW5lIGJvb2wgaGFzUXVpcmtNYXJnaW5Ub0NvbGxh
cHNlKGNvbnN0IEJveCYgbGF5b3V0Qm94LCBWZXJ0aWNhbE1hcmdpbiB2ZXJ0aWNhbE1hcmdpbikK
K3sKKyAgICBpZiAoIWxheW91dEJveC5pc0luRmxvdygpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgYXV0byYgc3R5bGUgPSBsYXlvdXRCb3guc3R5bGUoKTsKKyAgICByZXR1cm4gKHZlcnRp
Y2FsTWFyZ2luID09IFZlcnRpY2FsTWFyZ2luOjpCZWZvcmUgJiYgc3R5bGUuaGFzTWFyZ2luQmVm
b3JlUXVpcmsoKSkgfHwgKHZlcnRpY2FsTWFyZ2luID09IFZlcnRpY2FsTWFyZ2luOjpBZnRlciAm
JiBzdHlsZS5oYXNNYXJnaW5BZnRlclF1aXJrKCkpOworfQorCitib29sIEJsb2NrRm9ybWF0dGlu
Z1F1aXJrczo6c2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFyZ2luQmVmb3Jl
KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAoreworICAgIHJldHVybiBsYXlvdXRTdGF0ZSgp
LmluUXVpcmtzTW9kZSgpICYmIGhhc1F1aXJrTWFyZ2luVG9Db2xsYXBzZShsYXlvdXRCb3gsIFZl
cnRpY2FsTWFyZ2luOjpCZWZvcmUpICYmIGlzUXVpcmtDb250YWluZXIobGF5b3V0Qm94LmNvbnRh
aW5pbmdCbG9jaygpKTsKK30KKworYm9vbCBCbG9ja0Zvcm1hdHRpbmdRdWlya3M6OnNob3VsZENv
bGxhcHNlTWFyZ2luQWZ0ZXJXaXRoUGFyZW50TWFyZ2luQWZ0ZXIoY29uc3QgQm94JiBsYXlvdXRC
b3gpIGNvbnN0Cit7CisgICAgcmV0dXJuIGxheW91dFN0YXRlKCkuaW5RdWlya3NNb2RlKCkgJiYg
aGFzUXVpcmtNYXJnaW5Ub0NvbGxhcHNlKGxheW91dEJveCwgVmVydGljYWxNYXJnaW46OkFmdGVy
KSAmJiBpc1F1aXJrQ29udGFpbmVyKGxheW91dEJveC5jb250YWluaW5nQmxvY2soKSk7Cit9CisK
K30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0
dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3Mu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YmQ1MTdmOTgyNDRhZTgyY2M1OTAwNTQ4ZmU2ZTQ3NDEyZmU4NTE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9ibG9jay9CbG9ja0Zvcm1hdHRpbmdRdWlya3MuaApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVY
VCkKKworI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK2NsYXNzIEJsb2NrRm9ybWF0dGluZ1F1aXJr
cyA6IHB1YmxpYyBGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzIHsKK3B1YmxpYzoKKyAgICBCbG9j
a0Zvcm1hdHRpbmdRdWlya3MoY29uc3QgQmxvY2tGb3JtYXR0aW5nQ29udGV4dCYpOworCisgICAg
Ym9vbCBuZWVkc1N0cmV0Y2hpbmcoY29uc3QgQm94JikgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBz
dHJldGNoZWRJbkZsb3dIZWlnaHQoY29uc3QgQm94JiwgQ29udGVudEhlaWdodEFuZE1hcmdpbik7
CisKKyAgICBib29sIHNob3VsZElnbm9yZUNvbGxhcHNlZFF1aXJrTWFyZ2luKGNvbnN0IEJveCYp
IGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VNYXJnaW5CZWZvcmVXaXRoUGFyZW50TWFy
Z2luQmVmb3JlKGNvbnN0IEJveCYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29sbGFwc2VNYXJn
aW5BZnRlcldpdGhQYXJlbnRNYXJnaW5BZnRlcihjb25zdCBCb3gmKSBjb25zdDsKKworcHJvdGVj
dGVkOgorICAgIGNvbnN0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRpbmdDb250ZXh0
KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8QmxvY2tGb3JtYXR0aW5nQ29udGV4dD4oRm9ybWF0
dGluZ0NvbnRleHQ6OlF1aXJrczo6Zm9ybWF0dGluZ0NvbnRleHQoKSk7IH0KKyAgICBCbG9ja0Zv
cm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeSBnZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIGZvcm1h
dHRpbmdDb250ZXh0KCkuZ2VvbWV0cnkoKTsgfQorCit9OworCit9Cit9CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay9C
bG9ja01hcmdpbkNvbGxhcHNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvYmxvY2svQmxvY2tNYXJnaW5Db2xsYXBzZS5jcHAKaW5kZXggYjk4M2NlNDRjNmZh
MTMxNzYxYTk5YTcyZTNkZjYxYzk0ZGJiMzI2Mi4uOTJkOGNkMjhlZGQ5N2E4NmQ2YWVmMDNjODI5
ODM3ZDVhMzcyM2IyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay9CbG9ja01hcmdpbkNvbGxhcHNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL0Jsb2NrTWFyZ2luQ29sbGFwc2Uu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJTkdfQ09O
VEVYVCkKIAorI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ1F1aXJrcy5oIgogI2luY2x1ZGUgIkJs
b2NrRm9ybWF0dGluZ1N0YXRlLmgiCiAjaW5jbHVkZSAiRmxvYXRpbmdTdGF0ZS5oIgogI2luY2x1
ZGUgIklubGluZUZvcm1hdHRpbmdTdGF0ZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVy
QmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9ibG9jay90YWJsZXdyYXBwZXIvVGFibGVXcmFwcGVyQmxvY2tGb3JtYXR0aW5n
Q29udGV4dC5oCmluZGV4IDBkZWExNTdjYzUyMTZmODg0ZmQyODk4MzRhM2M4NjY5NTM3NDI3YTUu
LmQ2NTc0ZTczNWQ2ODgxMWY4MWNhYjA4NWY4MDJjMzNiODg2YTE5YjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvYmxvY2svdGFibGV3cmFwcGVy
L1RhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2Jsb2NrL3RhYmxld3JhcHBlci9UYWJsZVdyYXBw
ZXJCbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKIAogI2luY2x1ZGUgIkJsb2NrRm9ybWF0dGluZ0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJCbG9ja0Zvcm1hdHRpbmdRdWlya3MuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ1LDcgKzQ2LDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SG9yaXpvbnRhbENvbnN0cmFpbnRzSWdub3JpbmdGbG9hdHMo
Y29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMpIHsgbV9o
b3Jpem9udGFsQ29uc3RyYWludHNJZ25vcmluZ0Zsb2F0cyA9IGhvcml6b250YWxDb25zdHJhaW50
czsgfQogCiBwcml2YXRlOgotICAgIGNsYXNzIFF1aXJrcyA6IHB1YmxpYyBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpRdWlya3MgeworICAgIGNsYXNzIFF1aXJrcyA6IHB1YmxpYyBCbG9ja0Zvcm1h
dHRpbmdRdWlya3MgewogICAgIHB1YmxpYzoKICAgICAgICAgUXVpcmtzKGNvbnN0IFRhYmxlV3Jh
cHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQmKTsKIApAQCAtNjQsNyArNjUsNyBAQCBwcml2YXRl
OgogfTsKIAogaW5saW5lIFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJr
czo6UXVpcmtzKGNvbnN0IFRhYmxlV3JhcHBlckJsb2NrRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1h
dHRpbmdDb250ZXh0KQotICAgIDogQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzKGZvcm1h
dHRpbmdDb250ZXh0KQorICAgIDogQmxvY2tGb3JtYXR0aW5nUXVpcmtzKGZvcm1hdHRpbmdDb250
ZXh0KQogewogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>