<?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>230632</bug_id>
          
          <creation_ts>2021-09-22 12:12:44 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move LineGeometry and LineRun files under /inline/display</short_desc>
          <delta_ts>2021-09-22 18:49:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796162</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 12:12:44 -0700</bug_when>
    <thetext>This is in preparation for making these classes &quot;Display&quot; specific</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796163</commentid>
    <comment_count>1</comment_count>
      <attachid>438964</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 12:15:16 -0700</bug_when>
    <thetext>Created attachment 438964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796275</commentid>
    <comment_count>2</comment_count>
      <attachid>438992</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-09-22 16:54:55 -0700</bug_when>
    <thetext>Created attachment 438992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796318</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-22 18:48:53 -0700</bug_when>
    <thetext>Committed r282901 (242029@main): &lt;https://commits.webkit.org/242029@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438992.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796320</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 18:49:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83427376&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438964</attachid>
            <date>2021-09-22 12:15:16 -0700</date>
            <delta_ts>2021-09-22 16:54:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230632-20210922121515.patch</filename>
            <type>text/plain</type>
            <size>27756</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2M2MzFhNmRjOTEyODg2
NGEwOGRhOTUxOThjZWFmNTg0MWM0NDFmNC4uZGNkZDMxZWYyMDE5NjFiMmIxYmUxMDc5Y2Y4NDA5
NzYxNDExYmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTIyICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgTGlu
ZUdlb21ldHJ5IGFuZCBMaW5lUnVuIGZpbGVzIHVuZGVyIC9pbmxpbmUvZGlzcGxheQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVw
YXJhdGlvbiBmb3IgbW92aW5nIHRoZXNlIGNsYXNzZXMgb3V0IG9mIHRoZSAibGF5b3V0IG5hbWVz
cGFjZSIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVMaW5lR2VvbWV0cnkuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVH
ZW9tZXRyeS5oLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmxpbmVC
b3hMb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVHZW9t
ZXRyeTo6c2Nyb2xsYWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUdlb21ldHJ5OjplbmNsb3NpbmdUb3BBbmRCb3R0b20gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUdlb21ldHJ5Ojpjb250ZW50TG9naWNhbExlZnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmNvbnRlbnRMb2dpY2Fs
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6Om1v
dmVWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUdlb21ldHJ5OjpM
aW5lR2VvbWV0cnkpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjpUZXh0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSdW46OlRleHQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6VGV4dDo6b3JpZ2luYWxDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjpUZXh0OjpyZW5kZXJlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpSdW46OlRleHQ6Omhhc0h5cGhlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlJ1bjo6aXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc1NvZnRMaW5lQnJlYWsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OmlzTGluZUJyZWFrQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNB
dG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlz
Tm9uUm9vdElubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
aXNSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpp
c0dlbmVyaWNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6aXNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6aXNOb25Sb290SW5saW5lTGV2ZWxCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpSdW46OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
Omhhc0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppbmtPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFRvcCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbEJvdHRvbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbExlZnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlJ1bjo6YWRqdXN0SW5rT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmV4cGFuc2lvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjpzdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6bGluZUluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OlRleHQpOgorCiAyMDIx
LTA5LTIyICBHYWJyaWVsIE5hdmEgTWFyaW5vICA8Z25hdmFtYXJpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbmRlckJveCBpcyBhIFJlbmRlckVsZW1lbnQgd2hpY2ggY2FuIGhhdmUgaW1hZ2Ug
dXBkYXRlcyBmcm9tIHN0eWxlIGNoYW5nZXMuIFdlIHNob3VsZCBjYWxsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGE0MTMyZGZiNWI5NjZjNDg5MTU3ZGU5YTE1ZWY2NjJhNzBkNzQ1NDguLjBjZjBj
MzJmNWE1ZjM4MzIwY2UwZDZlNjRhZmJlYTlkOGM1NTBiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CkBAIC0xMTMsNiArMTEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleCIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Zsb2F0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0v
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2ludmFsaWRhdGlvbiIKICAgICAi
JHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dCIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2ludGVncmF0aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA4ZjQ1M2E0MjMxNDk4
MDM0ZjgwYTEwYjRkYzliNzRhMzQ5Y2VhNDYuLjMyYmQxMDY4Y2ZjNjBhNTZkMjY2NzEwZjRkZGQx
YjFjNDcxOWY2OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTE4Mjk1LDYgKzE4Mjk1LDcgQEAKIAkJMTE1Q0ZBOUEyMDhCQzE0
MDAwMUU2OTkxIC8qIGlubGluZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMTFBMUU2RkIyNkZCQjZDRTAwNDM1RDM2IC8qIGRpc3BsYXkgKi8sCiAJCQkJ
MTExRkExQzMyNkYwRjJFNjAwM0I4RjE2IC8qIGludmFsaWRhdGlvbiAqLywKIAkJCQk2RkU3RERE
RDIwRUM2RThCMDA4QjVCNEUgLyogdGV4dCAqLywKIAkJCQk2RkUxOTgxMzIxNzgzOTdCMDA0NDZG
MDggLyogSW5saW5lQ29udGVudEJyZWFrZXIuY3BwICovLApAQCAtMTgzMjIsOCArMTgzMjMsNiBA
QAogCQkJCTZGNkVFNzQxMjZENDRFRTIwMDM3NENEQSAvKiBJbmxpbmVMaW5lQm94VmVydGljYWxB
bGlnbmVyLmggKi8sCiAJCQkJNkYyNUIyMDAyMjBBODVBQjAwMDAwMTFCIC8qIElubGluZUxpbmVC
dWlsZGVyLmNwcCAqLywKIAkJCQk2RjI2RUI0NjIzNDAwNEE1MDA2OTA2RTIgLyogSW5saW5lTGlu
ZUJ1aWxkZXIuaCAqLywKLQkJCQk2RjkxNDIwRjI1MTUyMTM3MDA0RTRGRUEgLyogSW5saW5lTGlu
ZUdlb21ldHJ5LmggKi8sCi0JCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxp
bmVSdW4uaCAqLywKIAkJCQk2RjQwREE4MTI1MTMwMzNBMDBFQzA0QjcgLyogSW5saW5lUmVjdC5o
ICovLAogCQkJCTZGMzYwRTRFMjM5OTk0MjAwMDE1MTJBNyAvKiBJbmxpbmVTb2Z0TGluZUJyZWFr
SXRlbS5oICovLAogCQkJCTZGMUNDMURDMjI1RjhCNDEwMDcyMEFEMiAvKiBJbmxpbmVUZXh0SXRl
bS5jcHAgKi8sCkBAIC0xODMzMiw2ICsxODMzMSwxNSBAQAogCQkJcGF0aCA9IGlubGluZTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQz
NiAvKiBkaXNwbGF5ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQk2RjkxNDIwRjI1MTUyMTM3MDA0RTRGRUEgLyogSW5saW5lTGluZUdlb21ldHJ5LmggKi8s
CisJCQkJNkZDM0Y5NDUyNTE2NzU2NjAwQTQ5QkVBIC8qIElubGluZUxpbmVSdW4uaCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gZGlzcGxheTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTEyMjFFMDU4MUMwMkI0MDkwMDZBMUEwMCAvKiBBbmltYXRpb24gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdlb21ldHJ5LmggYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5l
R2VvbWV0cnkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNzNlNmNhNmFmZTMy
NjczMWU4MzhmMjJiMzMzNWFjMzcwYTgyOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lR2VvbWV0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShMQVlPVVRfRk9STUFU
VElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiSW5saW5lUmVjdC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotY2xhc3MgTGluZUdlb21ldHJ5IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgRW5jbG9zaW5nVG9w
QW5kQm90dG9tIHsKLSAgICAgICAgLy8gVGhpcyB2YWx1ZXMgZW5jbG9zZXMgdGhlIHJvb3QgaW5s
aW5lIGJveCBhbmQgYW55IG90aGVyIGlubGluZSBsZXZlbCBib3gncyBib3JkZXIgYm94LgotICAg
ICAgICBJbmxpbmVMYXlvdXRVbml0IHRvcCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBib3R0b20geyAwIH07Ci0gICAgfTsKLSAgICBMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVj
dCYgbGluZUJveExvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZs
b3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSwgSW5saW5lTGF5b3V0VW5pdCBhbGlnbWVudEJhc2Vs
aW5lLCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbFdpZHRoKTsKLQotICAgIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hM
b2dpY2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveExvZ2ljYWxSZWN0OyB9Ci0gICAg
Y29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxhYmxlT3ZlcmZsb3c7IH0KLQotICAgIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3Np
bmdUb3BBbmRCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX2VuY2xvc2luZ1RvcEFuZEJvdHRvbTsg
fQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxp
Z21lbnRCYXNlbGluZTsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExl
ZnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dpY2FsTGVmdDsgfQotICAgIElubGluZUxh
eW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExv
Z2ljYWxXaWR0aDsgfQotCi0gICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0
IG9mZnNldCkgeyBtX2xpbmVCb3hMb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgLy8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBz
Oi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUtYm94KS4KLSAgICBJbmxpbmVSZWN0
IG1fbGluZUJveExvZ2ljYWxSZWN0OwotICAgIElubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZs
b3c7Ci0gICAgLy8gRW5jbG9zaW5nIHRvcCBhbmQgYm90dG9tIGluY2x1ZGVzIGFsbCBpbmxpbmUg
bGV2ZWwgYm94ZXMgKGJvcmRlciBib3gpIHZlcnRpY2FsbHkuCi0gICAgLy8gV2hpbGUgdGhlIGxp
bmUgYm94IHVzdWFsbHkgZW5jbG9zZSB0aGVtIGFzIHdlbGwsIGl0cyB2ZXJ0aWNhbCBnZW9tZXRy
eSBpcyBiYXNlZCBvbgotICAgIC8vIHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgbGV2
ZWwgYm94ZXMgd2hpY2ggbWF5IGJlIGRpZmZlcmVudCB3aGVuIGxpbmUtaGVpZ2h0IGlzIHByZXNl
bnQuCi0gICAgRW5jbG9zaW5nVG9wQW5kQm90dG9tIG1fZW5jbG9zaW5nVG9wQW5kQm90dG9tOwot
ICAgIElubGluZUxheW91dFVuaXQgbV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9OwotICAgIElubGlu
ZUxheW91dFVuaXQgbV9jb250ZW50TG9naWNhbExlZnQgeyAwIH07Ci0gICAgSW5saW5lTGF5b3V0
VW5pdCBtX2NvbnRlbnRMb2dpY2FsV2lkdGggeyAwIH07Ci19OwotCi1pbmxpbmUgTGluZUdlb21l
dHJ5OjpMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBj
b25zdCBJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRv
bSBlbmNsb3NpbmdUb3BBbmRCb3R0b20sIElubGluZUxheW91dFVuaXQgYWxpZ21lbnRCYXNlbGlu
ZSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxXaWR0aCkKLSAgICA6IG1fbGluZUJveExvZ2ljYWxSZWN0KGxpbmVCb3hM
b2dpY2FsUmVjdCkKLSAgICAsIG1fc2Nyb2xsYWJsZU92ZXJmbG93KHNjcm9sbGFibGVPdmVyZmxv
dykKLSAgICAsIG1fZW5jbG9zaW5nVG9wQW5kQm90dG9tKGVuY2xvc2luZ1RvcEFuZEJvdHRvbSkK
LSAgICAsIG1fYWxpZ21lbnRCYXNlbGluZShhbGlnbWVudEJhc2VsaW5lKQotICAgICwgbV9jb250
ZW50TG9naWNhbExlZnQoY29udGVudExvZ2ljYWxMZWZ0KQotICAgICwgbV9jb250ZW50TG9naWNh
bFdpZHRoKGNvbnRlbnRMb2dpY2FsV2lkdGgpCi17Ci19Ci0KLX0KLX0KLQotI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVMaW5lUnVuLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1
OWFhMjAzNjQ2YzU5ZWQwNDIzODk3MmEwN2Q3OGJjOGIyNTM2ZGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShMQVlP
VVRfRk9STUFUVElOR19DT05URVhUKQotCi0jaW5jbHVkZSAiSW5saW5lUmVjdC5oIgotI2luY2x1
ZGUgIkxheW91dEJveC5oIgotI2luY2x1ZGUgIlRleHRGbGFncy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1uYW1lc3BhY2UgTGF5b3V0IHsKLQotc3RydWN0IFJ1biB7Ci0gICAgV1RGX01BS0Vf
U1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIHN0cnVjdCBUZXh0IHsKLSAgICAgICAgV1RGX01B
S0VfU1RSVUNUX0ZBU1RfQUxMT0NBVEVEOwotICAgIHB1YmxpYzoKLSAgICAgICAgVGV4dChzaXpl
X3QgcG9zaXRpb24sIHNpemVfdCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50
LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIgPSBTdHJpbmcoKSwgYm9vbCBoYXNIeXBo
ZW4gPSBmYWxzZSk7Ci0KLSAgICAgICAgc2l6ZV90IHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9z
dGFydDsgfQotICAgICAgICBzaXplX3QgZW5kKCkgY29uc3QgeyByZXR1cm4gc3RhcnQoKSArIGxl
bmd0aCgpOyB9Ci0gICAgICAgIHNpemVfdCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0
aDsgfQotICAgICAgICBTdHJpbmdWaWV3IG9yaWdpbmFsQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZ1ZpZXcobV9vcmlnaW5hbENvbnRlbnQpLnN1YnN0cmluZyhtX3N0YXJ0LCBtX2xlbmd0
aCk7IH0KLSAgICAgICAgU3RyaW5nVmlldyByZW5kZXJlZENvbnRlbnQoKSBjb25zdCB7IHJldHVy
biBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyLmlzTnVsbCgpID8gb3JpZ2luYWxDb250ZW50KCkg
OiBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOyB9Ci0KLSAgICAgICAgYm9vbCBoYXNIeXBoZW4o
KSBjb25zdCB7IHJldHVybiBtX2hhc0h5cGhlbjsgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
c2l6ZV90IG1fc3RhcnQgeyAwIH07Ci0gICAgICAgIHNpemVfdCBtX2xlbmd0aCB7IDAgfTsKLSAg
ICAgICAgYm9vbCBtX2hhc0h5cGhlbiB7IGZhbHNlIH07Ci0gICAgICAgIFN0cmluZyBtX29yaWdp
bmFsQ29udGVudDsKLSAgICAgICAgU3RyaW5nIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXI7Ci0g
ICAgfTsKLQotICAgIGVudW0gY2xhc3MgVHlwZSB7Ci0gICAgICAgIFRleHQsCi0gICAgICAgIFNv
ZnRMaW5lQnJlYWssCi0gICAgICAgIExpbmVCcmVha0JveCwKLSAgICAgICAgQXRvbWljSW5saW5l
TGV2ZWxCb3gsCi0gICAgICAgIE5vblJvb3RJbmxpbmVCb3gsCi0gICAgICAgIFJvb3RJbmxpbmVC
b3gsCi0gICAgICAgIEdlbmVyaWNJbmxpbmVMZXZlbEJveAotICAgIH07Ci0gICAgc3RydWN0IEV4
cGFuc2lvbjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29uc3QgQm94JiwgY29u
c3QgSW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24s
IHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFzQ29udGVudCA9IHRy
dWUpOwotCi0gICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6
VGV4dDsgfQotICAgIGJvb2wgaXNTb2Z0TGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OlNvZnRMaW5lQnJlYWs7IH0KLSAgICBib29sIGlzTGluZUJyZWFrQm94KCkgY29u
c3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OkxpbmVCcmVha0JveDsgfQotICAgIGJvb2wgaXNM
aW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBpc1NvZnRMaW5lQnJlYWsoKSB8fCBpc0xpbmVCcmVh
a0JveCgpOyB9Ci0gICAgYm9vbCBpc0F0b21pY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1
cm4gbV90eXBlID09IFR5cGU6OkF0b21pY0lubGluZUxldmVsQm94OyB9Ci0gICAgYm9vbCBpc0lu
bGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIGlzTm9uUm9vdElubGluZUJveCgpIHx8IGlzUm9vdElu
bGluZUJveCgpOyB9Ci0gICAgYm9vbCBpc05vblJvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVy
biBtX3R5cGUgPT0gVHlwZTo6Tm9uUm9vdElubGluZUJveDsgfQotICAgIGJvb2wgaXNSb290SW5s
aW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0K
LSAgICBib29sIGlzR2VuZXJpY0lubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBl
ID09IFR5cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNJbmxpbmVMZXZl
bEJveCgpIGNvbnN0IHsgcmV0dXJuIGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSB8fCBpc0xpbmVC
cmVha0JveCgpIHx8IGlzSW5saW5lQm94KCkgfHwgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKTsg
fQotICAgIGJvb2wgaXNOb25Sb290SW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0lu
bGluZUxldmVsQm94KCkgJiYgIWlzUm9vdElubGluZUJveCgpOyB9Ci0gICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9Ci0KLSAgICBib29sIGhhc0NvbnRlbnQoKSBjb25zdCB7
IHJldHVybiBtX2hhc0NvbnRlbnQ7IH0KLQotICAgIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxS
ZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsUmVjdDsgfQotICAgIGNvbnN0IElubGluZVJl
Y3QmIGlua092ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9pbmtPdmVyZmxvdzsgfQotCi0gICAg
SW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3Qo
KS50b3AoKTsgfQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIGxvZ2ljYWxSZWN0KCkuYm90dG9tKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5sZWZ0KCk7IH0KLSAgICBJ
bmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0
KCkucmlnaHQoKTsgfQotCi0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25z
dCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLndpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmhlaWdodCgpOyB9
Ci0KLSAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1f
bG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQotICAgIHZvaWQgYWRqdXN0SW5r
T3ZlcmZsb3coY29uc3QgSW5saW5lUmVjdCYgY2hpbGRCb3JkZXJCb3gpIHsgcmV0dXJuIG1faW5r
T3ZlcmZsb3cuZXhwYW5kVG9Db250YWluKGNoaWxkQm9yZGVyQm94KTsgfQotCi0gICAgc3RkOjpv
cHRpb25hbDxUZXh0PiYgdGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQotICAgIGNvbnN0IHN0ZDo6
b3B0aW9uYWw8VGV4dD4mIHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KLQotICAgIHN0
cnVjdCBFeHBhbnNpb24gewotICAgICAgICBFeHBhbnNpb25CZWhhdmlvciBiZWhhdmlvciB7IERl
ZmF1bHRFeHBhbnNpb24gfTsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBob3Jpem9udGFsRXhw
YW5zaW9uIHsgMCB9OwotICAgIH07Ci0gICAgRXhwYW5zaW9uIGV4cGFuc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwYW5zaW9uOyB9Ci0KLSAgICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0
IHsgcmV0dXJuICptX2xheW91dEJveDsgfQotICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCk7IH0KLQotICAgIHNpemVfdCBsaW5l
SW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVJbmRleDsgfQotCi1wcml2YXRlOgotICAgIGNv
bnN0IHNpemVfdCBtX2xpbmVJbmRleCB7IDAgfTsKLSAgICBjb25zdCBUeXBlIG1fdHlwZSB7IFR5
cGU6OkdlbmVyaWNJbmxpbmVMZXZlbEJveCB9OwotICAgIFdlYWtQdHI8Y29uc3QgTGF5b3V0OjpC
b3g+IG1fbGF5b3V0Qm94OwotICAgIElubGluZVJlY3QgbV9sb2dpY2FsUmVjdDsKLSAgICBJbmxp
bmVSZWN0IG1faW5rT3ZlcmZsb3c7Ci0gICAgYm9vbCBtX2hhc0NvbnRlbnQgeyB0cnVlIH07Ci0g
ICAgRXhwYW5zaW9uIG1fZXhwYW5zaW9uOwotICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0
OwotfTsKLQotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUgdHlwZSwgY29u
c3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgSW5saW5lUmVjdCYgbG9naWNhbFJlY3Qs
IGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6
Om9wdGlvbmFsPFRleHQ+IHRleHQsIGJvb2wgaGFzQ29udGVudCkKLSAgICA6IG1fbGluZUluZGV4
KGxpbmVJbmRleCkKLSAgICAsIG1fdHlwZSh0eXBlKQotICAgICwgbV9sYXlvdXRCb3gobWFrZVdl
YWtQdHIobGF5b3V0Qm94KSkKLSAgICAsIG1fbG9naWNhbFJlY3QobG9naWNhbFJlY3QpCi0gICAg
LCBtX2lua092ZXJmbG93KGlua092ZXJmbG93KQotICAgICwgbV9oYXNDb250ZW50KGhhc0NvbnRl
bnQpCi0gICAgLCBtX2V4cGFuc2lvbihleHBhbnNpb24pCi0gICAgLCBtX3RleHQodGV4dCkKLXsK
LX0KLQotaW5saW5lIFJ1bjo6VGV4dDo6VGV4dChzaXplX3Qgc3RhcnQsIHNpemVfdCBsZW5ndGgs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYWxDb250ZW50LCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9S
ZW5kZXIsIGJvb2wgaGFzSHlwaGVuKQotICAgIDogbV9zdGFydChzdGFydCkKLSAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKLSAgICAsIG1faGFzSHlwaGVuKGhhc0h5cGhlbikKLSAgICAsIG1fb3JpZ2lu
YWxDb250ZW50KG9yaWdpbmFsQ29udGVudCkKLSAgICAsIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5k
ZXIoYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIpCi17Ci19Ci0KLX0KLX0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvZGlz
cGxheS9JbmxpbmVMaW5lR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGluZUdlb21ldHJ5LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTZjNzNlNmNhNmFmZTMyNjczMWU4MzhmMjJiMzMzNWFjMzcwYTgyOAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lTGluZUdlb21ldHJ5LmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExBWU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisK
KyNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK25hbWVzcGFj
ZSBMYXlvdXQgeworCitjbGFzcyBMaW5lR2VvbWV0cnkgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIHN0cnVjdCBFbmNsb3NpbmdUb3BBbmRCb3R0b20geworICAg
ICAgICAvLyBUaGlzIHZhbHVlcyBlbmNsb3NlcyB0aGUgcm9vdCBpbmxpbmUgYm94IGFuZCBhbnkg
b3RoZXIgaW5saW5lIGxldmVsIGJveCdzIGJvcmRlciBib3guCisgICAgICAgIElubGluZUxheW91
dFVuaXQgdG9wIHsgMCB9OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJvdHRvbSB7IDAgfTsK
KyAgICB9OworICAgIExpbmVHZW9tZXRyeShjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9naWNh
bFJlY3QsIGNvbnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdywgRW5jbG9zaW5nVG9w
QW5kQm90dG9tLCBJbmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUsIElubGluZUxheW91
dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2Fs
V2lkdGgpOworCisgICAgY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9saW5lQm94TG9naWNhbFJlY3Q7IH0KKyAgICBjb25zdCBJbmxpbmVSZWN0
JiBzY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVPdmVyZmxv
dzsgfQorCisgICAgRW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1RvcEFuZEJvdHRvbSgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5jbG9zaW5nVG9wQW5kQm90dG9tOyB9CisKKyAgICBJbmxpbmVM
YXlvdXRVbml0IGJhc2VsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbWVudEJhc2VsaW5lOyB9
CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudExvZ2ljYWxMZWZ0OyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50
TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CisK
KyAgICB2b2lkIG1vdmVWZXJ0aWNhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbGlu
ZUJveExvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KKworcHJpdmF0ZToKKyAg
ICAvLyBUaGlzIGlzIGxpbmUgYm94IGdlb21ldHJ5IChzZWUgaHR0cHM6Ly93d3cudzMub3JnL1RS
L2Nzcy1pbmxpbmUtMy8jbGluZS1ib3gpLgorICAgIElubGluZVJlY3QgbV9saW5lQm94TG9naWNh
bFJlY3Q7CisgICAgSW5saW5lUmVjdCBtX3Njcm9sbGFibGVPdmVyZmxvdzsKKyAgICAvLyBFbmNs
b3NpbmcgdG9wIGFuZCBib3R0b20gaW5jbHVkZXMgYWxsIGlubGluZSBsZXZlbCBib3hlcyAoYm9y
ZGVyIGJveCkgdmVydGljYWxseS4KKyAgICAvLyBXaGlsZSB0aGUgbGluZSBib3ggdXN1YWxseSBl
bmNsb3NlIHRoZW0gYXMgd2VsbCwgaXRzIHZlcnRpY2FsIGdlb21ldHJ5IGlzIGJhc2VkIG9uCisg
ICAgLy8gdGhlIGxheW91dCBib3VuZHMgb2YgdGhlIGlubGluZSBsZXZlbCBib3hlcyB3aGljaCBt
YXkgYmUgZGlmZmVyZW50IHdoZW4gbGluZS1oZWlnaHQgaXMgcHJlc2VudC4KKyAgICBFbmNsb3Np
bmdUb3BBbmRCb3R0b20gbV9lbmNsb3NpbmdUb3BBbmRCb3R0b207CisgICAgSW5saW5lTGF5b3V0
VW5pdCBtX2FsaWdtZW50QmFzZWxpbmUgeyAwIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2Nv
bnRlbnRMb2dpY2FsTGVmdCB7IDAgfTsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG1fY29udGVudExv
Z2ljYWxXaWR0aCB7IDAgfTsKK307CisKK2lubGluZSBMaW5lR2VvbWV0cnk6OkxpbmVHZW9tZXRy
eShjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9naWNhbFJlY3QsIGNvbnN0IElubGluZVJlY3Qm
IHNjcm9sbGFibGVPdmVyZmxvdywgRW5jbG9zaW5nVG9wQW5kQm90dG9tIGVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSwgSW5saW5lTGF5b3V0VW5pdCBhbGlnbWVudEJhc2VsaW5lLCBJbmxpbmVMYXlvdXRV
bml0IGNvbnRlbnRMb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdp
ZHRoKQorICAgIDogbV9saW5lQm94TG9naWNhbFJlY3QobGluZUJveExvZ2ljYWxSZWN0KQorICAg
ICwgbV9zY3JvbGxhYmxlT3ZlcmZsb3coc2Nyb2xsYWJsZU92ZXJmbG93KQorICAgICwgbV9lbmNs
b3NpbmdUb3BBbmRCb3R0b20oZW5jbG9zaW5nVG9wQW5kQm90dG9tKQorICAgICwgbV9hbGlnbWVu
dEJhc2VsaW5lKGFsaWdtZW50QmFzZWxpbmUpCisgICAgLCBtX2NvbnRlbnRMb2dpY2FsTGVmdChj
b250ZW50TG9naWNhbExlZnQpCisgICAgLCBtX2NvbnRlbnRMb2dpY2FsV2lkdGgoY29udGVudExv
Z2ljYWxXaWR0aCkKK3sKK30KKworfQorfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGlu
ZVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUv
ZGlzcGxheS9JbmxpbmVMaW5lUnVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU5YWEyMDM2NDZjNTllZDA0MjM4
OTcyYTA3ZDc4YmM4YjI1MzZkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oCkBA
IC0wLDAgKzEsMTQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TEFZT1VUX0ZPUk1BVFRJTkdfQ09OVEVYVCkKKworI2luY2x1ZGUgIklubGluZVJlY3QuaCIKKyNp
bmNsdWRlICJMYXlvdXRCb3guaCIKKyNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworbmFtZXNwYWNlIExheW91dCB7CisKK3N0cnVjdCBSdW4geworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBzdHJ1Y3QgVGV4dCB7CisgICAgICAgIFdU
Rl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIFRleHQo
c2l6ZV90IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29u
dGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJvb2wgaGFz
SHlwaGVuID0gZmFsc2UpOworCisgICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RhcnQ7IH0KKyAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkg
KyBsZW5ndGgoKTsgfQorICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9s
ZW5ndGg7IH0KKyAgICAgICAgU3RyaW5nVmlldyBvcmlnaW5hbENvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBTdHJpbmdWaWV3KG1fb3JpZ2luYWxDb250ZW50KS5zdWJzdHJpbmcobV9zdGFydCwgbV9s
ZW5ndGgpOyB9CisgICAgICAgIFN0cmluZ1ZpZXcgcmVuZGVyZWRDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlci5pc051bGwoKSA/IG9yaWdpbmFsQ29udGVu
dCgpIDogbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsgfQorCisgICAgICAgIGJvb2wgaGFzSHlw
aGVuKCkgY29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIHNpemVfdCBtX3N0YXJ0IHsgMCB9OworICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07
CisgICAgICAgIGJvb2wgbV9oYXNIeXBoZW4geyBmYWxzZSB9OworICAgICAgICBTdHJpbmcgbV9v
cmlnaW5hbENvbnRlbnQ7CisgICAgICAgIFN0cmluZyBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVy
OworICAgIH07CisKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBUZXh0LAorICAgICAg
ICBTb2Z0TGluZUJyZWFrLAorICAgICAgICBMaW5lQnJlYWtCb3gsCisgICAgICAgIEF0b21pY0lu
bGluZUxldmVsQm94LAorICAgICAgICBOb25Sb290SW5saW5lQm94LAorICAgICAgICBSb290SW5s
aW5lQm94LAorICAgICAgICBHZW5lcmljSW5saW5lTGV2ZWxCb3gKKyAgICB9OworICAgIHN0cnVj
dCBFeHBhbnNpb247CisgICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IEJveCYs
IGNvbnN0IElubGluZVJlY3QmLCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5z
aW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0LCBib29sIGhhc0NvbnRlbnQg
PSB0cnVlKTsKKworICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5
cGU6OlRleHQ7IH0KKyAgICBib29sIGlzU29mdExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBUeXBlOjpTb2Z0TGluZUJyZWFrOyB9CisgICAgYm9vbCBpc0xpbmVCcmVha0JveCgp
IGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lQnJlYWtCb3g7IH0KKyAgICBib29s
IGlzTGluZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNTb2Z0TGluZUJyZWFrKCkgfHwgaXNMaW5l
QnJlYWtCb3goKTsgfQorICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQorICAgIGJvb2wg
aXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBpc05vblJvb3RJbmxpbmVCb3goKSB8fCBpc1Jv
b3RJbmxpbmVCb3goKTsgfQorICAgIGJvb2wgaXNOb25Sb290SW5saW5lQm94KCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlID09IFR5cGU6Ok5vblJvb3RJbmxpbmVCb3g7IH0KKyAgICBib29sIGlzUm9v
dElubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94
OyB9CisgICAgYm9vbCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIG1f
dHlwZSA9PSBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7IH0KKyAgICBib29sIGlzSW5saW5l
TGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgaXNM
aW5lQnJlYWtCb3goKSB8fCBpc0lubGluZUJveCgpIHx8IGlzR2VuZXJpY0lubGluZUxldmVsQm94
KCk7IH0KKyAgICBib29sIGlzTm9uUm9vdElubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4g
aXNJbmxpbmVMZXZlbEJveCgpICYmICFpc1Jvb3RJbmxpbmVCb3goKTsgfQorICAgIFR5cGUgdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorCisgICAgYm9vbCBoYXNDb250ZW50KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNDb250ZW50OyB9CisKKyAgICBjb25zdCBJbmxpbmVSZWN0JiBsb2dp
Y2FsUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KKyAgICBjb25zdCBJbmxp
bmVSZWN0JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KKwor
ICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxS
ZWN0KCkudG9wKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25z
dCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmJvdHRvbSgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5p
dCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9Cisg
ICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2Fs
UmVjdCgpLnJpZ2h0KCk7IH0KKworICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS53aWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0
VW5pdCBsb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5oZWlnaHQo
KTsgfQorCisgICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkg
eyBtX2xvZ2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KKyAgICB2b2lkIGFkanVz
dElua092ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIGNoaWxkQm9yZGVyQm94KSB7IHJldHVybiBt
X2lua092ZXJmbG93LmV4cGFuZFRvQ29udGFpbihjaGlsZEJvcmRlckJveCk7IH0KKworICAgIHN0
ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBjb25zdCBz
dGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CisKKyAg
ICBzdHJ1Y3QgRXhwYW5zaW9uIHsKKyAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZpb3Ig
eyBEZWZhdWx0RXhwYW5zaW9uIH07CisgICAgICAgIElubGluZUxheW91dFVuaXQgaG9yaXpvbnRh
bEV4cGFuc2lvbiB7IDAgfTsKKyAgICB9OworICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQorCisgICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBj
b25zdCB7IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUoKSBjb25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpOyB9CisKKyAgICBzaXplX3Qg
bGluZUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXg7IH0KKworcHJpdmF0ZToKKyAg
ICBjb25zdCBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07CisgICAgY29uc3QgVHlwZSBtX3R5cGUg
eyBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3ggfTsKKyAgICBXZWFrUHRyPGNvbnN0IExheW91
dDo6Qm94PiBtX2xheW91dEJveDsKKyAgICBJbmxpbmVSZWN0IG1fbG9naWNhbFJlY3Q7CisgICAg
SW5saW5lUmVjdCBtX2lua092ZXJmbG93OworICAgIGJvb2wgbV9oYXNDb250ZW50IHsgdHJ1ZSB9
OworICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1f
dGV4dDsKK307CisKK2lubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUs
IGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxS
ZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwg
c3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQpCisgICAgOiBtX2xpbmVJ
bmRleChsaW5lSW5kZXgpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fbGF5b3V0Qm94KG1h
a2VXZWFrUHRyKGxheW91dEJveCkpCisgICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQor
ICAgICwgbV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKKyAgICAsIG1faGFzQ29udGVudChoYXND
b250ZW50KQorICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQorICAgICwgbV90ZXh0KHRleHQp
Cit7Cit9CisKK2lubGluZSBSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVu
Z3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVu
dFRvUmVuZGVyLCBib29sIGhhc0h5cGhlbikKKyAgICA6IG1fc3RhcnQoc3RhcnQpCisgICAgLCBt
X2xlbmd0aChsZW5ndGgpCisgICAgLCBtX2hhc0h5cGhlbihoYXNIeXBoZW4pCisgICAgLCBtX29y
aWdpbmFsQ29udGVudChvcmlnaW5hbENvbnRlbnQpCisgICAgLCBtX2FkanVzdGVkQ29udGVudFRv
UmVuZGVyKGFkanVzdGVkQ29udGVudFRvUmVuZGVyKQoreworfQorCit9Cit9CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438992</attachid>
            <date>2021-09-22 16:54:55 -0700</date>
            <delta_ts>2021-09-22 18:48:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230632-20210922165454.patch</filename>
            <type>text/plain</type>
            <size>28324</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGEwYTc1ZmMzYzMyNTlm
YjdhMDM2NGU3NDQ2Njk4Zjc5YmZiMWRiZS4uMTQyMGE5ZTY3MzhjYzJmM2Q4OTYwNzZlMjNlNjU5
MjViZTlkZmIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDIxLTA5LTIyICBBbGFu
IEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbTEZDXVtJRkNdIE1vdmUgTGlu
ZUdlb21ldHJ5IGFuZCBMaW5lUnVuIGZpbGVzIHVuZGVyIC9pbmxpbmUvZGlzcGxheQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNjMyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVw
YXJhdGlvbiBmb3IgbW92aW5nIHRoZXNlIGNsYXNzZXMgb3V0IG9mIHRoZSAibGF5b3V0IG5hbWVz
cGFjZSIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvZGlzcGxheS9JbmxpbmVMaW5lR2VvbWV0cnkuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVH
ZW9tZXRyeS5oLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmxpbmVC
b3hMb2dpY2FsUmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVHZW9t
ZXRyeTo6c2Nyb2xsYWJsZU92ZXJmbG93IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUdlb21ldHJ5OjplbmNsb3NpbmdUb3BBbmRCb3R0b20gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmJhc2VsaW5lIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUdlb21ldHJ5Ojpjb250ZW50TG9naWNhbExlZnQgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6OmNvbnRlbnRMb2dpY2Fs
V2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lR2VvbWV0cnk6Om1v
dmVWZXJ0aWNhbGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUdlb21ldHJ5OjpM
aW5lR2VvbWV0cnkpOgorICAgICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5l
L2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjpUZXh0OjplbmQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpSdW46OlRleHQ6Omxlbmd0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6VGV4dDo6b3JpZ2luYWxDb250ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6UnVuOjpUZXh0OjpyZW5kZXJlZENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpSdW46OlRleHQ6Omhhc0h5cGhlbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OlJ1bjo6aXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjppc1NvZnRMaW5lQnJlYWsgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OmlzTGluZUJyZWFrQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVu
Ojppc0xpbmVCcmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6aXNB
dG9taWNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6aXNJbmxpbmVCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46Omlz
Tm9uUm9vdElubGluZUJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6
aXNSb290SW5saW5lQm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpp
c0dlbmVyaWNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6aXNJbmxpbmVMZXZlbEJveCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6aXNOb25Sb290SW5saW5lTGV2ZWxCb3ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpSdW46OnR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46
Omhhc0NvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjppbmtPdmVyZmxv
dyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFRvcCBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbEJvdHRvbSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbExlZnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmxvZ2ljYWxSaWdodCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bG9naWNhbFdpZHRoIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6UnVuOjpsb2dpY2FsSGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjptb3ZlVmVydGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OlJ1bjo6YWRqdXN0SW5rT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpS
dW46OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OnRleHQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OmV4cGFuc2lvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OlJ1bjo6bGF5b3V0Qm94IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6UnVuOjpzdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OlJ1bjo6bGluZUluZGV4IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6UnVuOjpS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OlRleHQpOgorCiAyMDIx
LTA5LTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFB1c2ggU2Nyb2xsQW5pbWF0b3JNYWMgY29kZSBpbnRvIHRoZSBiYXNlIGNsYXNzIGFuZCBjbGVh
biB1cCB0aGUgU2Nyb2xsQW5pbWF0b3IgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4
IGE0MTMyZGZiNWI5NjZjNDg5MTU3ZGU5YTE1ZWY2NjJhNzBkNzQ1NDguLjBjZjBjMzJmNWE1ZjM4
MzIwY2UwZDZlNjRhZmJlYTlkOGM1NTBiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMs
NiArMTEzLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCQ09SRV9ESVJ9L2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvZmxleCIKICAgICAiJHtX
RUJDT1JFX0RJUn0vbGF5b3V0L2Zsb2F0cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91dC9mb3Jt
YXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3BsYXkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L2xheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2ludmFsaWRhdGlvbiIKICAgICAiJHtXRUJDT1JF
X0RJUn0vbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvdGV4dCIKICAgICAiJHtXRUJD
T1JFX0RJUn0vbGF5b3V0L2ludGVncmF0aW9uIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjY2NDg0
NGNhMmIzZTM0OTA3MWVkZDFlMzRiMWQ3M2Y1ZDU1ODkyZC4uZmUyYmI1YjZlNDVmNTA5ZDc4NWNl
MjIxN2ExNzAxZGI0MDA0ZTlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03ODQsNyArNzg0LDcg
QEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGxheW91dC9MYXlv
dXRVbml0cy5oCiAgICAgbGF5b3V0L01hcmdpblR5cGVzLmgKIAotICAgIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaAorICAgIGxheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL2Rpc3BsYXkvSW5saW5lTGluZVJ1bi5oCiAgICAgbGF5b3V0L2Zvcm1h
dHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lUmVjdC5oCiAKICAgICBsYXlvdXQvaW50ZWdyYXRp
b24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwOGY0NTNhNDIzMTQ5ODAz
NGY4MGExMGI0ZGM5Yjc0YTM0OWNlYTQ2Li4zMmJkMTA2OGNmYzYwYTU2ZDI2NjcxMGY0ZGRkMWIx
YzQ3MTlmNjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODI5NSw2ICsxODI5NSw3IEBACiAJCTExNUNGQTlBMjA4QkMxNDAw
MDFFNjk5MSAvKiBpbmxpbmUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTExQTFFNkZCMjZGQkI2Q0UwMDQzNUQzNiAvKiBkaXNwbGF5ICovLAogCQkJCTEx
MUZBMUMzMjZGMEYyRTYwMDNCOEYxNiAvKiBpbnZhbGlkYXRpb24gKi8sCiAJCQkJNkZFN0REREQy
MEVDNkU4QjAwOEI1QjRFIC8qIHRleHQgKi8sCiAJCQkJNkZFMTk4MTMyMTc4Mzk3QjAwNDQ2RjA4
IC8qIElubGluZUNvbnRlbnRCcmVha2VyLmNwcCAqLywKQEAgLTE4MzIyLDggKzE4MzIzLDYgQEAK
IAkJCQk2RjZFRTc0MTI2RDQ0RUUyMDAzNzRDREEgLyogSW5saW5lTGluZUJveFZlcnRpY2FsQWxp
Z25lci5oICovLAogCQkJCTZGMjVCMjAwMjIwQTg1QUIwMDAwMDExQiAvKiBJbmxpbmVMaW5lQnVp
bGRlci5jcHAgKi8sCiAJCQkJNkYyNkVCNDYyMzQwMDRBNTAwNjkwNkUyIC8qIElubGluZUxpbmVC
dWlsZGVyLmggKi8sCi0JCQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8qIElubGluZUxpbmVH
ZW9tZXRyeS5oICovLAotCQkJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5l
UnVuLmggKi8sCiAJCQkJNkY0MERBODEyNTEzMDMzQTAwRUMwNEI3IC8qIElubGluZVJlY3QuaCAq
LywKIAkJCQk2RjM2MEU0RTIzOTk5NDIwMDAxNTEyQTcgLyogSW5saW5lU29mdExpbmVCcmVha0l0
ZW0uaCAqLywKIAkJCQk2RjFDQzFEQzIyNUY4QjQxMDA3MjBBRDIgLyogSW5saW5lVGV4dEl0ZW0u
Y3BwICovLApAQCAtMTgzMzIsNiArMTgzMzEsMTUgQEAKIAkJCXBhdGggPSBpbmxpbmU7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkxMUExRTZGQjI2RkJCNkNFMDA0MzVEMzYg
LyogZGlzcGxheSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJNkY5MTQyMEYyNTE1MjEzNzAwNEU0RkVBIC8qIElubGluZUxpbmVHZW9tZXRyeS5oICovLAor
CQkJCTZGQzNGOTQ1MjUxNjc1NjYwMEE0OUJFQSAvKiBJbmxpbmVMaW5lUnVuLmggKi8sCisJCQkp
OworCQkJcGF0aCA9IGRpc3BsYXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQkxMjIxRTA1ODFDMDJCNDA5MDA2QTFBMDAgLyogQW5pbWF0aW9uICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVHZW9tZXRyeS5oIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZUdl
b21ldHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YzczZTZjYTZhZmUzMjY3
MzFlODM4ZjIyYjMzMzVhYzM3MGE4MjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZUdlb21ldHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTEFZT1VUX0ZPUk1BVFRJ
TkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIklubGluZVJlY3QuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLWNsYXNzIExpbmVHZW9tZXRyeSB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IEVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSB7Ci0gICAgICAgIC8vIFRoaXMgdmFsdWVzIGVuY2xvc2VzIHRoZSByb290IGlubGlu
ZSBib3ggYW5kIGFueSBvdGhlciBpbmxpbmUgbGV2ZWwgYm94J3MgYm9yZGVyIGJveC4KLSAgICAg
ICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQg
Ym90dG9tIHsgMCB9OwotICAgIH07Ci0gICAgTGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3Qm
IGxpbmVCb3hMb2dpY2FsUmVjdCwgY29uc3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93
LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20sIElubGluZUxheW91dFVuaXQgYWxpZ21lbnRCYXNlbGlu
ZSwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxXaWR0aCk7Ci0KLSAgICBjb25zdCBJbmxpbmVSZWN0JiBsaW5lQm94TG9n
aWNhbFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3hMb2dpY2FsUmVjdDsgfQotICAgIGNv
bnN0IElubGluZVJlY3QmIHNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1fc2Ny
b2xsYWJsZU92ZXJmbG93OyB9Ci0KLSAgICBFbmNsb3NpbmdUb3BBbmRCb3R0b20gZW5jbG9zaW5n
VG9wQW5kQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9lbmNsb3NpbmdUb3BBbmRCb3R0b207IH0K
LQotICAgIElubGluZUxheW91dFVuaXQgYmFzZWxpbmUoKSBjb25zdCB7IHJldHVybiBtX2FsaWdt
ZW50QmFzZWxpbmU7IH0KLQotICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbExlZnQ7IH0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dp
Y2FsV2lkdGg7IH0KLQotICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBv
ZmZzZXQpIHsgbV9saW5lQm94TG9naWNhbFJlY3QubW92ZVZlcnRpY2FsbHkob2Zmc2V0KTsgfQot
Ci1wcml2YXRlOgotICAgIC8vIFRoaXMgaXMgbGluZSBib3ggZ2VvbWV0cnkgKHNlZSBodHRwczov
L3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWJveCkuCi0gICAgSW5saW5lUmVjdCBt
X2xpbmVCb3hMb2dpY2FsUmVjdDsKLSAgICBJbmxpbmVSZWN0IG1fc2Nyb2xsYWJsZU92ZXJmbG93
OwotICAgIC8vIEVuY2xvc2luZyB0b3AgYW5kIGJvdHRvbSBpbmNsdWRlcyBhbGwgaW5saW5lIGxl
dmVsIGJveGVzIChib3JkZXIgYm94KSB2ZXJ0aWNhbGx5LgotICAgIC8vIFdoaWxlIHRoZSBsaW5l
IGJveCB1c3VhbGx5IGVuY2xvc2UgdGhlbSBhcyB3ZWxsLCBpdHMgdmVydGljYWwgZ2VvbWV0cnkg
aXMgYmFzZWQgb24KLSAgICAvLyB0aGUgbGF5b3V0IGJvdW5kcyBvZiB0aGUgaW5saW5lIGxldmVs
IGJveGVzIHdoaWNoIG1heSBiZSBkaWZmZXJlbnQgd2hlbiBsaW5lLWhlaWdodCBpcyBwcmVzZW50
LgotICAgIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBtX2VuY2xvc2luZ1RvcEFuZEJvdHRvbTsKLSAg
ICBJbmxpbmVMYXlvdXRVbml0IG1fYWxpZ21lbnRCYXNlbGluZSB7IDAgfTsKLSAgICBJbmxpbmVM
YXlvdXRVbml0IG1fY29udGVudExvZ2ljYWxMZWZ0IHsgMCB9OwotICAgIElubGluZUxheW91dFVu
aXQgbV9jb250ZW50TG9naWNhbFdpZHRoIHsgMCB9OwotfTsKLQotaW5saW5lIExpbmVHZW9tZXRy
eTo6TGluZUdlb21ldHJ5KGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCwgY29u
c3QgSW5saW5lUmVjdCYgc2Nyb2xsYWJsZU92ZXJmbG93LCBFbmNsb3NpbmdUb3BBbmRCb3R0b20g
ZW5jbG9zaW5nVG9wQW5kQm90dG9tLCBJbmxpbmVMYXlvdXRVbml0IGFsaWdtZW50QmFzZWxpbmUs
IElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGNv
bnRlbnRMb2dpY2FsV2lkdGgpCi0gICAgOiBtX2xpbmVCb3hMb2dpY2FsUmVjdChsaW5lQm94TG9n
aWNhbFJlY3QpCi0gICAgLCBtX3Njcm9sbGFibGVPdmVyZmxvdyhzY3JvbGxhYmxlT3ZlcmZsb3cp
Ci0gICAgLCBtX2VuY2xvc2luZ1RvcEFuZEJvdHRvbShlbmNsb3NpbmdUb3BBbmRCb3R0b20pCi0g
ICAgLCBtX2FsaWdtZW50QmFzZWxpbmUoYWxpZ21lbnRCYXNlbGluZSkKLSAgICAsIG1fY29udGVu
dExvZ2ljYWxMZWZ0KGNvbnRlbnRMb2dpY2FsTGVmdCkKLSAgICAsIG1fY29udGVudExvZ2ljYWxX
aWR0aChjb250ZW50TG9naWNhbFdpZHRoKQotewotfQotCi19Ci19Ci0KLSNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5s
aW5lTGluZVJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lTGluZVJ1bi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTlh
YTIwMzY0NmM1OWVkMDQyMzg5NzJhMDdkNzhiYzhiMjUzNmRmLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDE0
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoTEFZT1VU
X0ZPUk1BVFRJTkdfQ09OVEVYVCkKLQotI2luY2x1ZGUgIklubGluZVJlY3QuaCIKLSNpbmNsdWRl
ICJMYXlvdXRCb3guaCIKLSNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotbmFtZXNwYWNlIExheW91dCB7Ci0KLXN0cnVjdCBSdW4gewotICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBzdHJ1Y3QgVGV4dCB7Ci0gICAgICAgIFdURl9NQUtF
X1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFRleHQoc2l6ZV90
IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwg
U3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyID0gU3RyaW5nKCksIGJvb2wgaGFzSHlwaGVu
ID0gZmFsc2UpOwotCi0gICAgICAgIHNpemVfdCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
cnQ7IH0KLSAgICAgICAgc2l6ZV90IGVuZCgpIGNvbnN0IHsgcmV0dXJuIHN0YXJ0KCkgKyBsZW5n
dGgoKTsgfQotICAgICAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7
IH0KLSAgICAgICAgU3RyaW5nVmlldyBvcmlnaW5hbENvbnRlbnQoKSBjb25zdCB7IHJldHVybiBT
dHJpbmdWaWV3KG1fb3JpZ2luYWxDb250ZW50KS5zdWJzdHJpbmcobV9zdGFydCwgbV9sZW5ndGgp
OyB9Ci0gICAgICAgIFN0cmluZ1ZpZXcgcmVuZGVyZWRDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlci5pc051bGwoKSA/IG9yaWdpbmFsQ29udGVudCgpIDog
bV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsgfQotCi0gICAgICAgIGJvb2wgaGFzSHlwaGVuKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNIeXBoZW47IH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHNp
emVfdCBtX3N0YXJ0IHsgMCB9OwotICAgICAgICBzaXplX3QgbV9sZW5ndGggeyAwIH07Ci0gICAg
ICAgIGJvb2wgbV9oYXNIeXBoZW4geyBmYWxzZSB9OwotICAgICAgICBTdHJpbmcgbV9vcmlnaW5h
bENvbnRlbnQ7Ci0gICAgICAgIFN0cmluZyBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVyOwotICAg
IH07Ci0KLSAgICBlbnVtIGNsYXNzIFR5cGUgewotICAgICAgICBUZXh0LAotICAgICAgICBTb2Z0
TGluZUJyZWFrLAotICAgICAgICBMaW5lQnJlYWtCb3gsCi0gICAgICAgIEF0b21pY0lubGluZUxl
dmVsQm94LAotICAgICAgICBOb25Sb290SW5saW5lQm94LAotICAgICAgICBSb290SW5saW5lQm94
LAotICAgICAgICBHZW5lcmljSW5saW5lTGV2ZWxCb3gKLSAgICB9OwotICAgIHN0cnVjdCBFeHBh
bnNpb247Ci0gICAgUnVuKHNpemVfdCBsaW5lSW5kZXgsIFR5cGUsIGNvbnN0IEJveCYsIGNvbnN0
IElubGluZVJlY3QmLCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uLCBz
dGQ6Om9wdGlvbmFsPFRleHQ+ID0gc3RkOjpudWxsb3B0LCBib29sIGhhc0NvbnRlbnQgPSB0cnVl
KTsKLQotICAgIGJvb2wgaXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6OlRl
eHQ7IH0KLSAgICBib29sIGlzU29mdExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpTb2Z0TGluZUJyZWFrOyB9Ci0gICAgYm9vbCBpc0xpbmVCcmVha0JveCgpIGNvbnN0
IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpMaW5lQnJlYWtCb3g7IH0KLSAgICBib29sIGlzTGlu
ZUJyZWFrKCkgY29uc3QgeyByZXR1cm4gaXNTb2Z0TGluZUJyZWFrKCkgfHwgaXNMaW5lQnJlYWtC
b3goKTsgfQotICAgIGJvb2wgaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZSA9PSBUeXBlOjpBdG9taWNJbmxpbmVMZXZlbEJveDsgfQotICAgIGJvb2wgaXNJbmxp
bmVCb3goKSBjb25zdCB7IHJldHVybiBpc05vblJvb3RJbmxpbmVCb3goKSB8fCBpc1Jvb3RJbmxp
bmVCb3goKTsgfQotICAgIGJvb2wgaXNOb25Sb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6Ok5vblJvb3RJbmxpbmVCb3g7IH0KLSAgICBib29sIGlzUm9vdElubGlu
ZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9Ci0g
ICAgYm9vbCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpHZW5lcmljSW5saW5lTGV2ZWxCb3g7IH0KLSAgICBib29sIGlzSW5saW5lTGV2ZWxC
b3goKSBjb25zdCB7IHJldHVybiBpc0F0b21pY0lubGluZUxldmVsQm94KCkgfHwgaXNMaW5lQnJl
YWtCb3goKSB8fCBpc0lubGluZUJveCgpIHx8IGlzR2VuZXJpY0lubGluZUxldmVsQm94KCk7IH0K
LSAgICBib29sIGlzTm9uUm9vdElubGluZUxldmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNJbmxp
bmVMZXZlbEJveCgpICYmICFpc1Jvb3RJbmxpbmVCb3goKTsgfQotICAgIFR5cGUgdHlwZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotCi0gICAgYm9vbCBoYXNDb250ZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNDb250ZW50OyB9Ci0KLSAgICBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVj
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbFJlY3Q7IH0KLSAgICBjb25zdCBJbmxpbmVSZWN0
JiBpbmtPdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuIG1faW5rT3ZlcmZsb3c7IH0KLQotICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFRvcCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCku
dG9wKCk7IH0KLSAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxCb3R0b20oKSBjb25zdCB7IHJl
dHVybiBsb2dpY2FsUmVjdCgpLmJvdHRvbSgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkubGVmdCgpOyB9Ci0gICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgp
LnJpZ2h0KCk7IH0KLQotICAgIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gbG9naWNhbFJlY3QoKS53aWR0aCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJlY3QoKS5oZWlnaHQoKTsgfQot
Ci0gICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xv
Z2ljYWxSZWN0Lm1vdmVWZXJ0aWNhbGx5KG9mZnNldCk7IH0KLSAgICB2b2lkIGFkanVzdElua092
ZXJmbG93KGNvbnN0IElubGluZVJlY3QmIGNoaWxkQm9yZGVyQm94KSB7IHJldHVybiBtX2lua092
ZXJmbG93LmV4cGFuZFRvQ29udGFpbihjaGlsZEJvcmRlckJveCk7IH0KLQotICAgIHN0ZDo6b3B0
aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJldHVybiBtX3RleHQ7IH0KLSAgICBjb25zdCBzdGQ6Om9w
dGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0KLSAgICBzdHJ1
Y3QgRXhwYW5zaW9uIHsKLSAgICAgICAgRXhwYW5zaW9uQmVoYXZpb3IgYmVoYXZpb3IgeyBEZWZh
dWx0RXhwYW5zaW9uIH07Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgaG9yaXpvbnRhbEV4cGFu
c2lvbiB7IDAgfTsKLSAgICB9OwotICAgIEV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJl
dHVybiBtX2V4cGFuc2lvbjsgfQotCi0gICAgY29uc3QgQm94JiBsYXlvdXRCb3goKSBjb25zdCB7
IHJldHVybiAqbV9sYXlvdXRCb3g7IH0KLSAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBj
b25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpOyB9Ci0KLSAgICBzaXplX3QgbGluZUlu
ZGV4KCkgY29uc3QgeyByZXR1cm4gbV9saW5lSW5kZXg7IH0KLQotcHJpdmF0ZToKLSAgICBjb25z
dCBzaXplX3QgbV9saW5lSW5kZXggeyAwIH07Ci0gICAgY29uc3QgVHlwZSBtX3R5cGUgeyBUeXBl
OjpHZW5lcmljSW5saW5lTGV2ZWxCb3ggfTsKLSAgICBXZWFrUHRyPGNvbnN0IExheW91dDo6Qm94
PiBtX2xheW91dEJveDsKLSAgICBJbmxpbmVSZWN0IG1fbG9naWNhbFJlY3Q7Ci0gICAgSW5saW5l
UmVjdCBtX2lua092ZXJmbG93OwotICAgIGJvb2wgbV9oYXNDb250ZW50IHsgdHJ1ZSB9OwotICAg
IEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4dDsK
LX07Ci0KLWlubGluZSBSdW46OlJ1bihzaXplX3QgbGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0
IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBj
b25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpv
cHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0NvbnRlbnQpCi0gICAgOiBtX2xpbmVJbmRleChs
aW5lSW5kZXgpCi0gICAgLCBtX3R5cGUodHlwZSkKLSAgICAsIG1fbGF5b3V0Qm94KG1ha2VXZWFr
UHRyKGxheW91dEJveCkpCi0gICAgLCBtX2xvZ2ljYWxSZWN0KGxvZ2ljYWxSZWN0KQotICAgICwg
bV9pbmtPdmVyZmxvdyhpbmtPdmVyZmxvdykKLSAgICAsIG1faGFzQ29udGVudChoYXNDb250ZW50
KQotICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICwgbV90ZXh0KHRleHQpCi17Ci19
Ci0KLWlubGluZSBSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVu
ZGVyLCBib29sIGhhc0h5cGhlbikKLSAgICA6IG1fc3RhcnQoc3RhcnQpCi0gICAgLCBtX2xlbmd0
aChsZW5ndGgpCi0gICAgLCBtX2hhc0h5cGhlbihoYXNIeXBoZW4pCi0gICAgLCBtX29yaWdpbmFs
Q29udGVudChvcmlnaW5hbENvbnRlbnQpCi0gICAgLCBtX2FkanVzdGVkQ29udGVudFRvUmVuZGVy
KGFkanVzdGVkQ29udGVudFRvUmVuZGVyKQotewotfQotCi19Ci19Ci0jZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rpc3Bs
YXkvSW5saW5lTGluZUdlb21ldHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGlu
Z0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVHZW9tZXRyeS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmE2YzczZTZjYTZhZmUzMjY3MzFlODM4ZjIyYjMzMzVhYzM3MGE4MjgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNw
bGF5L0lubGluZUxpbmVHZW9tZXRyeS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShMQVlPVVRfRk9STUFUVElOR19DT05URVhUKQorCisj
aW5jbHVkZSAiSW5saW5lUmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CituYW1lc3BhY2Ug
TGF5b3V0IHsKKworY2xhc3MgTGluZUdlb21ldHJ5IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgRW5jbG9zaW5nVG9wQW5kQm90dG9tIHsKKyAgICAg
ICAgLy8gVGhpcyB2YWx1ZXMgZW5jbG9zZXMgdGhlIHJvb3QgaW5saW5lIGJveCBhbmQgYW55IG90
aGVyIGlubGluZSBsZXZlbCBib3gncyBib3JkZXIgYm94LgorICAgICAgICBJbmxpbmVMYXlvdXRV
bml0IHRvcCB7IDAgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBib3R0b20geyAwIH07Cisg
ICAgfTsKKyAgICBMaW5lR2VvbWV0cnkoY29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxS
ZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBzY3JvbGxhYmxlT3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFu
ZEJvdHRvbSwgSW5saW5lTGF5b3V0VW5pdCBhbGlnbWVudEJhc2VsaW5lLCBJbmxpbmVMYXlvdXRV
bml0IGNvbnRlbnRMb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdp
ZHRoKTsKKworICAgIGNvbnN0IElubGluZVJlY3QmIGxpbmVCb3hMb2dpY2FsUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveExvZ2ljYWxSZWN0OyB9CisgICAgY29uc3QgSW5saW5lUmVjdCYg
c2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlT3ZlcmZsb3c7
IH0KKworICAgIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRCb3R0b20oKSBj
b25zdCB7IHJldHVybiBtX2VuY2xvc2luZ1RvcEFuZEJvdHRvbTsgfQorCisgICAgSW5saW5lTGF5
b3V0VW5pdCBiYXNlbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ21lbnRCYXNlbGluZTsgfQor
CisgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRMb2dpY2FsTGVmdDsgfQorICAgIElubGluZUxheW91dFVuaXQgY29udGVudExv
Z2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxXaWR0aDsgfQorCisg
ICAgdm9pZCBtb3ZlVmVydGljYWxseShJbmxpbmVMYXlvdXRVbml0IG9mZnNldCkgeyBtX2xpbmVC
b3hMb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9CisKK3ByaXZhdGU6CisgICAg
Ly8gVGhpcyBpcyBsaW5lIGJveCBnZW9tZXRyeSAoc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtaW5saW5lLTMvI2xpbmUtYm94KS4KKyAgICBJbmxpbmVSZWN0IG1fbGluZUJveExvZ2ljYWxS
ZWN0OworICAgIElubGluZVJlY3QgbV9zY3JvbGxhYmxlT3ZlcmZsb3c7CisgICAgLy8gRW5jbG9z
aW5nIHRvcCBhbmQgYm90dG9tIGluY2x1ZGVzIGFsbCBpbmxpbmUgbGV2ZWwgYm94ZXMgKGJvcmRl
ciBib3gpIHZlcnRpY2FsbHkuCisgICAgLy8gV2hpbGUgdGhlIGxpbmUgYm94IHVzdWFsbHkgZW5j
bG9zZSB0aGVtIGFzIHdlbGwsIGl0cyB2ZXJ0aWNhbCBnZW9tZXRyeSBpcyBiYXNlZCBvbgorICAg
IC8vIHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMgd2hpY2ggbWF5
IGJlIGRpZmZlcmVudCB3aGVuIGxpbmUtaGVpZ2h0IGlzIHByZXNlbnQuCisgICAgRW5jbG9zaW5n
VG9wQW5kQm90dG9tIG1fZW5jbG9zaW5nVG9wQW5kQm90dG9tOworICAgIElubGluZUxheW91dFVu
aXQgbV9hbGlnbWVudEJhc2VsaW5lIHsgMCB9OworICAgIElubGluZUxheW91dFVuaXQgbV9jb250
ZW50TG9naWNhbExlZnQgeyAwIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2NvbnRlbnRMb2dp
Y2FsV2lkdGggeyAwIH07Cit9OworCitpbmxpbmUgTGluZUdlb21ldHJ5OjpMaW5lR2VvbWV0cnko
Y29uc3QgSW5saW5lUmVjdCYgbGluZUJveExvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBz
Y3JvbGxhYmxlT3ZlcmZsb3csIEVuY2xvc2luZ1RvcEFuZEJvdHRvbSBlbmNsb3NpbmdUb3BBbmRC
b3R0b20sIElubGluZUxheW91dFVuaXQgYWxpZ21lbnRCYXNlbGluZSwgSW5saW5lTGF5b3V0VW5p
dCBjb250ZW50TG9naWNhbExlZnQsIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxXaWR0
aCkKKyAgICA6IG1fbGluZUJveExvZ2ljYWxSZWN0KGxpbmVCb3hMb2dpY2FsUmVjdCkKKyAgICAs
IG1fc2Nyb2xsYWJsZU92ZXJmbG93KHNjcm9sbGFibGVPdmVyZmxvdykKKyAgICAsIG1fZW5jbG9z
aW5nVG9wQW5kQm90dG9tKGVuY2xvc2luZ1RvcEFuZEJvdHRvbSkKKyAgICAsIG1fYWxpZ21lbnRC
YXNlbGluZShhbGlnbWVudEJhc2VsaW5lKQorICAgICwgbV9jb250ZW50TG9naWNhbExlZnQoY29u
dGVudExvZ2ljYWxMZWZ0KQorICAgICwgbV9jb250ZW50TG9naWNhbFdpZHRoKGNvbnRlbnRMb2dp
Y2FsV2lkdGgpCit7Cit9CisKK30KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVS
dW4uaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL2Rp
c3BsYXkvSW5saW5lTGluZVJ1bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1OWFhMjAzNjQ2YzU5ZWQwNDIzODk3
MmEwN2Q3OGJjOGIyNTM2ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9kaXNwbGF5L0lubGluZUxpbmVSdW4uaApAQCAt
MCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKExB
WU9VVF9GT1JNQVRUSU5HX0NPTlRFWFQpCisKKyNpbmNsdWRlICJJbmxpbmVSZWN0LmgiCisjaW5j
bHVkZSAiTGF5b3V0Qm94LmgiCisjaW5jbHVkZSAiVGV4dEZsYWdzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK25hbWVzcGFjZSBMYXlvdXQgeworCitzdHJ1Y3QgUnVuIHsKKyAgICBXVEZfTUFL
RV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgc3RydWN0IFRleHQgeworICAgICAgICBXVEZf
TUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBUZXh0KHNp
emVfdCBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRl
bnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciA9IFN0cmluZygpLCBib29sIGhhc0h5
cGhlbiA9IGZhbHNlKTsKKworICAgICAgICBzaXplX3Qgc3RhcnQoKSBjb25zdCB7IHJldHVybiBt
X3N0YXJ0OyB9CisgICAgICAgIHNpemVfdCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsg
bGVuZ3RoKCk7IH0KKyAgICAgICAgc2l6ZV90IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVu
Z3RoOyB9CisgICAgICAgIFN0cmluZ1ZpZXcgb3JpZ2luYWxDb250ZW50KCkgY29uc3QgeyByZXR1
cm4gU3RyaW5nVmlldyhtX29yaWdpbmFsQ29udGVudCkuc3Vic3RyaW5nKG1fc3RhcnQsIG1fbGVu
Z3RoKTsgfQorICAgICAgICBTdHJpbmdWaWV3IHJlbmRlcmVkQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIuaXNOdWxsKCkgPyBvcmlnaW5hbENvbnRlbnQo
KSA6IG1fYWRqdXN0ZWRDb250ZW50VG9SZW5kZXI7IH0KKworICAgICAgICBib29sIGhhc0h5cGhl
bigpIGNvbnN0IHsgcmV0dXJuIG1faGFzSHlwaGVuOyB9CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBzaXplX3QgbV9zdGFydCB7IDAgfTsKKyAgICAgICAgc2l6ZV90IG1fbGVuZ3RoIHsgMCB9Owor
ICAgICAgICBib29sIG1faGFzSHlwaGVuIHsgZmFsc2UgfTsKKyAgICAgICAgU3RyaW5nIG1fb3Jp
Z2luYWxDb250ZW50OworICAgICAgICBTdHJpbmcgbV9hZGp1c3RlZENvbnRlbnRUb1JlbmRlcjsK
KyAgICB9OworCisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgVGV4dCwKKyAgICAgICAg
U29mdExpbmVCcmVhaywKKyAgICAgICAgTGluZUJyZWFrQm94LAorICAgICAgICBBdG9taWNJbmxp
bmVMZXZlbEJveCwKKyAgICAgICAgTm9uUm9vdElubGluZUJveCwKKyAgICAgICAgUm9vdElubGlu
ZUJveCwKKyAgICAgICAgR2VuZXJpY0lubGluZUxldmVsQm94CisgICAgfTsKKyAgICBzdHJ1Y3Qg
RXhwYW5zaW9uOworICAgIFJ1bihzaXplX3QgbGluZUluZGV4LCBUeXBlLCBjb25zdCBCb3gmLCBj
b25zdCBJbmxpbmVSZWN0JiwgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lv
biwgc3RkOjpvcHRpb25hbDxUZXh0PiA9IHN0ZDo6bnVsbG9wdCwgYm9vbCBoYXNDb250ZW50ID0g
dHJ1ZSk7CisKKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBl
OjpUZXh0OyB9CisgICAgYm9vbCBpc1NvZnRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6U29mdExpbmVCcmVhazsgfQorICAgIGJvb2wgaXNMaW5lQnJlYWtCb3goKSBj
b25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGluZUJyZWFrQm94OyB9CisgICAgYm9vbCBp
c0xpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGlzU29mdExpbmVCcmVhaygpIHx8IGlzTGluZUJy
ZWFrQm94KCk7IH0KKyAgICBib29sIGlzQXRvbWljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3g7IH0KKyAgICBib29sIGlz
SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gaXNOb25Sb290SW5saW5lQm94KCkgfHwgaXNSb290
SW5saW5lQm94KCk7IH0KKyAgICBib29sIGlzTm9uUm9vdElubGluZUJveCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSA9PSBUeXBlOjpOb25Sb290SW5saW5lQm94OyB9CisgICAgYm9vbCBpc1Jvb3RJ
bmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6Um9vdElubGluZUJveDsg
fQorICAgIGJvb2wgaXNHZW5lcmljSW5saW5lTGV2ZWxCb3goKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94OyB9CisgICAgYm9vbCBpc0lubGluZUxl
dmVsQm94KCkgY29uc3QgeyByZXR1cm4gaXNBdG9taWNJbmxpbmVMZXZlbEJveCgpIHx8IGlzTGlu
ZUJyZWFrQm94KCkgfHwgaXNJbmxpbmVCb3goKSB8fCBpc0dlbmVyaWNJbmxpbmVMZXZlbEJveCgp
OyB9CisgICAgYm9vbCBpc05vblJvb3RJbmxpbmVMZXZlbEJveCgpIGNvbnN0IHsgcmV0dXJuIGlz
SW5saW5lTGV2ZWxCb3goKSAmJiAhaXNSb290SW5saW5lQm94KCk7IH0KKyAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKworICAgIGJvb2wgaGFzQ29udGVudCgpIGNvbnN0
IHsgcmV0dXJuIG1faGFzQ29udGVudDsgfQorCisgICAgY29uc3QgSW5saW5lUmVjdCYgbG9naWNh
bFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2xvZ2ljYWxSZWN0OyB9CisgICAgY29uc3QgSW5saW5l
UmVjdCYgaW5rT3ZlcmZsb3coKSBjb25zdCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CisKKyAg
ICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxUb3AoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVj
dCgpLnRvcCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsQm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gbG9naWNhbFJlY3QoKS5ib3R0b20oKTsgfQorICAgIElubGluZUxheW91dFVuaXQg
bG9naWNhbExlZnQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsUmVjdCgpLmxlZnQoKTsgfQorICAg
IElubGluZUxheW91dFVuaXQgbG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbG9naWNhbFJl
Y3QoKS5yaWdodCgpOyB9CisKKyAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNv
bnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkud2lkdGgoKTsgfQorICAgIElubGluZUxheW91dFVu
aXQgbG9naWNhbEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGxvZ2ljYWxSZWN0KCkuaGVpZ2h0KCk7
IH0KKworICAgIHZvaWQgbW92ZVZlcnRpY2FsbHkoSW5saW5lTGF5b3V0VW5pdCBvZmZzZXQpIHsg
bV9sb2dpY2FsUmVjdC5tb3ZlVmVydGljYWxseShvZmZzZXQpOyB9CisgICAgdm9pZCBhZGp1c3RJ
bmtPdmVyZmxvdyhjb25zdCBJbmxpbmVSZWN0JiBjaGlsZEJvcmRlckJveCkgeyByZXR1cm4gbV9p
bmtPdmVyZmxvdy5leHBhbmRUb0NvbnRhaW4oY2hpbGRCb3JkZXJCb3gpOyB9CisKKyAgICBzdGQ6
Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgeyByZXR1cm4gbV90ZXh0OyB9CisgICAgY29uc3Qgc3Rk
OjpvcHRpb25hbDxUZXh0PiYgdGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQorCisgICAg
c3RydWN0IEV4cGFuc2lvbiB7CisgICAgICAgIEV4cGFuc2lvbkJlaGF2aW9yIGJlaGF2aW9yIHsg
RGVmYXVsdEV4cGFuc2lvbiB9OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGhvcml6b250YWxF
eHBhbnNpb24geyAwIH07CisgICAgfTsKKyAgICBFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9leHBhbnNpb247IH0KKworICAgIGNvbnN0IEJveCYgbGF5b3V0Qm94KCkgY29u
c3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxl
KCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94KCkuc3R5bGUoKTsgfQorCisgICAgc2l6ZV90IGxp
bmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUluZGV4OyB9CisKK3ByaXZhdGU6CisgICAg
Y29uc3Qgc2l6ZV90IG1fbGluZUluZGV4IHsgMCB9OworICAgIGNvbnN0IFR5cGUgbV90eXBlIHsg
VHlwZTo6R2VuZXJpY0lubGluZUxldmVsQm94IH07CisgICAgV2Vha1B0cjxjb25zdCBMYXlvdXQ6
OkJveD4gbV9sYXlvdXRCb3g7CisgICAgSW5saW5lUmVjdCBtX2xvZ2ljYWxSZWN0OworICAgIElu
bGluZVJlY3QgbV9pbmtPdmVyZmxvdzsKKyAgICBib29sIG1faGFzQ29udGVudCB7IHRydWUgfTsK
KyAgICBFeHBhbnNpb24gbV9leHBhbnNpb247CisgICAgc3RkOjpvcHRpb25hbDxUZXh0PiBtX3Rl
eHQ7Cit9OworCitpbmxpbmUgUnVuOjpSdW4oc2l6ZV90IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBj
b25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm94LCBjb25zdCBJbmxpbmVSZWN0JiBsb2dpY2FsUmVj
dCwgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiBleHBhbnNpb24sIHN0
ZDo6b3B0aW9uYWw8VGV4dD4gdGV4dCwgYm9vbCBoYXNDb250ZW50KQorICAgIDogbV9saW5lSW5k
ZXgobGluZUluZGV4KQorICAgICwgbV90eXBlKHR5cGUpCisgICAgLCBtX2xheW91dEJveChtYWtl
V2Vha1B0cihsYXlvdXRCb3gpKQorICAgICwgbV9sb2dpY2FsUmVjdChsb2dpY2FsUmVjdCkKKyAg
ICAsIG1faW5rT3ZlcmZsb3coaW5rT3ZlcmZsb3cpCisgICAgLCBtX2hhc0NvbnRlbnQoaGFzQ29u
dGVudCkKKyAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKKyAgICAsIG1fdGV4dCh0ZXh0KQor
eworfQorCitpbmxpbmUgUnVuOjpUZXh0OjpUZXh0KHNpemVfdCBzdGFydCwgc2l6ZV90IGxlbmd0
aCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbENvbnRlbnQsIFN0cmluZyBhZGp1c3RlZENvbnRlbnRU
b1JlbmRlciwgYm9vbCBoYXNIeXBoZW4pCisgICAgOiBtX3N0YXJ0KHN0YXJ0KQorICAgICwgbV9s
ZW5ndGgobGVuZ3RoKQorICAgICwgbV9oYXNIeXBoZW4oaGFzSHlwaGVuKQorICAgICwgbV9vcmln
aW5hbENvbnRlbnQob3JpZ2luYWxDb250ZW50KQorICAgICwgbV9hZGp1c3RlZENvbnRlbnRUb1Jl
bmRlcihhZGp1c3RlZENvbnRlbnRUb1JlbmRlcikKK3sKK30KKworfQorfQorI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>